aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/autobuilder/buildsteps/SendErrorReport.py
blob: c4e377c4b8b6bd22756e3756425184d8767b4651 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
'''
Created on Jan 6, 2013

__author__ = "Elizabeth 'pidge' Flanagan"
__copyright__ = "Copyright 2012-2013, Intel Corp."
__credits__ = ["Elizabeth Flanagan"]
__license__ = "GPL"
__version__ = "2.0"
__maintainer__ = "Elizabeth Flanagan"
__email__ = "pidge@toganlabs.com"
'''

import os

from buildbot.steps.shell import ShellCommand

from lib.ABTools import get_error_report_worker_dir

class SendErrorReport(ShellCommand):
    haltOnFailure = False
    flunkOnFailure = True
    name = "SendErrorReport"
    def __init__(self, factory, argdict=None, **kwargs):
        self.factory = factory
        for k, v in argdict.iteritems():
            setattr(self, k, v)
        # Timeout needs to be passed to LoggingBuildStep as a kwarg
        self.timeout = 100000
        kwargs['timeout']=self.timeout
        ShellCommand.__init__(self, **kwargs)

    def start(self):
        self.buildername=self.getProperty("buildername")
        self.buildnumber=self.getProperty("buildnumber")
        self.errordir = get_error_report_worker_dir(self.buildername)
        self.layerversion_core = int(self.getProperty("layerversion_core", "0"))
        self.command=""

        if self.layerversion_core < 4:
            self.command = "echo 'Skipping Step.'"
        else:
            if str(os.environ.get('ERROR_REPORT_COLLECT')) == "True":
                self.command += "rm -rf  ~/.oe-send-error;"
                self.command += "echo ${ERROR_REPORT_SUBMITTER_ID};"
                self.command += " if [ -z ${ERROR_REPORT_SUBMITTER_ID}+x ]; then  host=`hostname`; echo \"yocto-autobuilder-autogenerated-$host\" > ~/.oe-send-error; else echo \"$ERROR_REPORT_SUBMITTER_ID\" > ~/.oe-send-error; fi ; "
                self.command += ". ./oe-init-build-env; if [ -d " + self.errordir + " ]; then for x in `ls " + self.errordir + " | grep error_report_`;"

                if self.layerversion_core == 4:
                    if os.environ.get('ERROR_REPORT_SERVER') is not None:
                        self.er_server = str(os.environ.get('ERROR_REPORT_SERVER'))
                    else:
                        self.er_server = ""
                    self.command += "do send-error-report " + self.errordir +"/$x"+ self.er_server + "; done; fi"
                elif self.layerversion_core >= 5:
                    master = self.build.builder.botmaster.parent
                    self.er_link = " -l " + master.status.getURLForBuild(self.buildername, self.buildnumber)
                    if os.environ.get('ERROR_REPORT_SERVER') is not None:
                        self.er_server = " -s " + str(os.environ.get('ERROR_REPORT_SERVER'))
                    else:
                        self.er_server = ""
                    if os.environ.get('ERROR_REPORT_EMAIL') is not None:
                        self.er_email = " -e " + str(os.environ.get('ERROR_REPORT_EMAIL'))
                    else:
                        self.er_email = ""
                    if os.environ.get('ERROR_REPORT_NAME') is not None:
                        self.er_name = " -n " + str(os.environ.get('ERROR_REPORT_NAME'))
                    else:
                        self.er_name = ""
                    self.command += "do send-error-report -y "
                    self.command += self.er_server + self.er_email
                    self.command += self.er_name +  self.er_link
                    self.command +=  " " + self.errordir +"/$x; done; fi"
                else:
                    self.command = "echo 'Layer doesn't support error reporting - Step is noop'"
            else:
                self.command = "echo 'environment var ERROR_REPORT_COLLECT not set - Step is noop'"
            self.description = ["Sending error reports"]
        ShellCommand.start(self)