Пример #1
0
	def __init__(self):
		self.Logs = Logs(self)
		self.Configs = Configs(self)
		self.DataUnits = DataUnits(self)
		self.HttpClient = HttpClient(self)
		self.HttpServer = HttpServer(self)
		self.Manipulator = Manipulator(self)
Пример #2
0
def default():
    configs = Configs()

    channel = request.args.get('channel_id')
    print 'Channel: ' + str(channel)

    # if has slack channels on configs, validates slack channel id
    flag = True
    if len(configs.get_slack_channels()) > 0:
        flag = False
        for slack_channel in configs.get_slack_channels():
            if slack_channel == channel:
                flag = True
                break

    if not flag:
        print 'Not a valid slack channel!'
        if configs.get_print_to_slack():
            return jsonify(print_error_to_slack())
        else:
            return jsonify(print_error()), 401

    url = get_random_image(configs)

    if len(url) == 0:
        if configs.get_print_to_slack():
            return jsonify(print_error_to_slack())
        else:
            return jsonify(print_error()), 404

    if configs.get_print_to_slack():
        slack_resp = {
            'response_type': 'in_channel',
            'text': '<' + url + '>',
            'unfurl_links': 'true',
        }
        return jsonify(slack_resp)
    else:
        return jsonify({'url': url})
Пример #3
0
    def init_configs(self, args, logger, cat_patterns):
        # 以前の設定が保存されている場合はリストアする.
        # 存在しない場合は新規に作成する.
        Cfg = Configs(logger)
        Cfg.makeConfig(cat_patterns)

        # BAttM/UKF のパラメータを更新する.
        bam_cfg = BAttMConfigs()
        bam_cfg.r = args.bam_r
        bam_cfg.rambda = args.bam_rambda
        bam_cfg.q = args.bam_q

        ukf_cfg = UKFConfigs()
        ukf_cfg.alpha = args.ukf_alpha
        ukf_cfg.beta = args.ukf_beta
        ukf_cfg.kappa = args.ukf_kappa

        Cfg.updateParams(args.level, args.bam_s, bam_cfg, ukf_cfg)

        return Cfg
Пример #4
0
    url = get_random_image(configs)

    if len(url) == 0:
        if configs.get_print_to_slack():
            return jsonify(print_error_to_slack())
        else:
            return jsonify(print_error()), 404

    if configs.get_print_to_slack():
        slack_resp = {
            'response_type': 'in_channel',
            'text': '<' + url + '>',
            'unfurl_links': 'true',
        }
        return jsonify(slack_resp)
    else:
        return jsonify({'url': url})


@app.route('/status')
def status():
    return jsonify({'success': True}), 200, {'ContentType': 'application/json'}


if __name__ == "__main__":
    CONFIGS = Configs()

    PORT = int(os.environ.get('PORT', CONFIGS.get_server_port()))
    app.run(host='0.0.0.0', port=PORT)
Пример #5
0
class Ticket(BaseClass):
    FIELDS_KEY = 'fields'
    PROJECT_KEY = 'project'
    SUMMARY_KEY = 'summary'
    DESCRIPTION_KEY = 'description'
    ISSUETYPE_KEY = 'issuetype'
    LABELS_KEY = 'labels'
    CONFIGS = Configs.get()

    def __init__(self, data, is_lambda):
        self.data = data
        if 'subject' in data:
            self.summary = self.get_summary(data)
        self.ticket_data = {self.FIELDS_KEY: {}}
        self.jira_auth = self.get_jira_auth()
        self.ticket_url = None
        super(Ticket, self).__init__(is_lambda)
        if 'key' in data:
            self._load_ticket_from_key(data['key'])
        else:
            self.set_ticket_data()

    def _load_ticket_from_key(self, key):
        try:

            find_ticket_url = '{0}/rest/api/2/issue/{1}'.format(
                self.CONFIGS['jira_url'], key)
            headers = {'Content-Type': 'application/json'}
            request = requests.get(find_ticket_url,
                                   headers=headers,
                                   auth=self.jira_auth)
            if request.status_code == 200:
                self.load_ticket(request.json())
        except Exception as e:
            super(Ticket,
                  self).print_error('Error occurred while creating ticket', e)

    def load_ticket(self, ticket_data):

        self.key = ticket_data['key']
        self.ticket_type = ticket_data['fields']['issuetype']
        self.fixVersions = ticket_data['fields']['fixVersions']
        self.created = ticket_data['fields']['created']
        self.priority = ticket_data['fields']['priority']
        self.labels = ticket_data['fields']['labels']
        self.assignee = ticket_data['fields']['assignee']
        self.updated = ticket_data['fields']['updated']
        self.status = ticket_data['fields']['status']
        self.description = ticket_data['fields']['description']
        self.creator = ticket_data['fields']['creator']
        self.project = ticket_data['fields']['project']
        self.subject = ticket_data['fields']['summary']

    def set_ticket_data(self):
        self.update_ticket(self.get_project_field())
        self.update_ticket(self.get_summary_field())
        self.update_ticket(self.get_description_field())
        self.update_ticket(self.get_issuetype_field())
        self.update_ticket(self.get_labels_field())
        self.set_custom_fields()

    def create(self):
        try:
            headers = {'Content-Type': 'application/json'}
            create_ticket_url = '{0}/rest/api/2/issue/'.format(
                self.CONFIGS['jira_url'])
            request = requests.post(create_ticket_url,
                                    headers=headers,
                                    auth=self.jira_auth,
                                    data=json.dumps(self.ticket_data))
            # Printing below will help determine why ticket creation failed. e.g. "custom_fields" your ticket requires
            self._load_ticket_from_key(request.json()['key'])
        except Exception as e:
            super(Ticket,
                  self).print_error('Error occurred while creating ticket', e)

    def update(self):
        pass
        #todo

    def move_to_sprint(self, sprint_id):
        try:
            headers = {'Content-Type': 'application/json'}
            create_ticket_url = '{0}/rest/api/2/issue/{1}'.format(
                self.CONFIGS['jira_url'], self.key)

            body = {"update": {"customfield_10010": [{"set": sprint_id}]}}
            request = requests.put(create_ticket_url,
                                   headers=headers,
                                   auth=self.jira_auth,
                                   data=json.dumps(body))
            # Printing below will help determine why ticket creation failed. e.g. "custom_fields" your ticket requires
            self.load_ticket(request.json())
        except Exception as e:
            super(Ticket,
                  self).print_error('Error occurred while creating ticket', e)

    def change_status(self, status):
        try:

            headers = {'Content-Type': 'application/json'}

            status_change_ticket_url = '{0}/rest/api/2/issue/{1}/transitions'.format(
                self.CONFIGS['jira_url'], self.key)
            status = status.lower()
            status_hash = {"todo": "11", "in_progress": "21", "done": "31"}
            if status not in status_hash:
                return False
            body = {"transition": {"id": status_hash[status]}}
            request = requests.post(status_change_ticket_url,
                                    headers=headers,
                                    auth=self.jira_auth,
                                    data=json.dumps(body))
            print request
            # Printing below will help determine why ticket creation failed. e.g. "custom_fields" your ticket requires
            self.load_ticket(request.json())
        except Exception as e:
            super(Ticket,
                  self).print_error('Error occurred while creating ticket', e)

    def set_custom_fields(self):
        try:
            custom_fields = self.CONFIGS['custom_fields']
            if custom_fields:
                for custom_field, value in custom_fields.iteritems():
                    self.update_ticket({custom_field: value})
        except Exception as e:
            super(Ticket, self).print_error(
                'Could not set custom fields. Please refer to documentation',
                e)

    def get_issuetype_field(self):
        issue_type = self.data.get(self.ISSUETYPE_KEY,
                                   self.CONFIGS['issuetype'])
        if issue_type.lower() == "bug":
            issue_type = "Bug"
        elif issue_type.lower() == "story":
            issue_type = "Story"

        return {self.ISSUETYPE_KEY: {'name': issue_type}}

    def get_project_field(self):
        return {self.PROJECT_KEY: {'key': self.CONFIGS['jira_project']}}

    def get_labels_field(self):
        return {self.LABELS_KEY: self.data.get(self.LABELS_KEY, None)}

    def get_summary_field(self):
        return {self.SUMMARY_KEY: self.summary}

    def get_description_field(self):
        return {self.DESCRIPTION_KEY: "Ticket created by Alexa"}

    def update_ticket(self, data):
        if data is not None:
            self.ticket_data[self.FIELDS_KEY].update(data)

    def get_summary(self, data):
        return data['subject']

    @classmethod
    def get_jira_auth(_self):
        return HTTPBasicAuth(_self.CONFIGS['jira_username'],
                             _self.CONFIGS['jira_password'])

    def to_hash(self):
        return {
            'key': self.key,
            'type': self.ticket_type['name'],
            'project': self.project['key'],
            'description': self.description,
            'subject': self.summary,
            'priority': self.priority['name']
        }
Пример #6
0
    return result_population

def phase_elitism(actual_population, base_population):
    min = inf
    max = -inf
    best_subject = None
    worst_subject = None
    index_to_change = 0

    for subject in base_population:
        if subject.fitness_value <= min:
            best_subject = subject
            min = subject.fitness_value
    
    for i in range(len(actual_population)):
        subject = actual_population[i]
        if subject.fitness_value >= max:
            worst_subject = subject
            max = subject.fitness_value
            index_to_change = i
    
    actual_population[index_to_change] = best_subject
    #print_phase_result(5, "Elitismo", actual_population)
    return actual_population


####################
global configs
configs = Configs()

main()
Пример #7
0
class Ticket(BaseClass):

    FIELDS_KEY = 'fields'
    PROJECT_KEY = 'project'
    SUMMARY_KEY = 'summary'
    DESCRIPTION_KEY = 'description'
    ISSUETYPE_KEY = 'issuetype'
    LABELS_KEY = 'labels'
    CONFIGS = Configs.get()

    def __init__(self, data, is_lambda):
        self.incident_number = self.get_incident_number(data)
        self.summary = self.get_summary(data)
        self.ticket_data = {self.FIELDS_KEY: {}}
        self.jira_auth = self.get_jira_auth()
        self.ticket_url = None
        self.pager_duty_link = self.get_pager_duty_link(data)
        super(Ticket, self).__init__(is_lambda)
        self.set_ticket_data()

    def set_ticket_data(self):
        self.update_ticket(self.get_project_field())
        self.update_ticket(self.get_summary_field())
        self.update_ticket(self.get_description_field())
        self.update_ticket(self.get_issuetype_field())
        self.update_ticket(self.get_labels_field())
        self.set_custom_fields()

    def create(self):
        try:
            headers = {'Content-Type': 'application/json'}
            create_ticket_url = '{0}/rest/api/2/issue/'.format(
                self.CONFIGS['jira_url'])
            request = requests.post(create_ticket_url,
                                    headers=headers,
                                    auth=self.jira_auth,
                                    data=json.dumps(self.ticket_data))
            # Printing below will help determine why ticket creation failed. e.g. "custom_fields" your ticket requires
            print request.text
            self.ticket_url = request.json()['key']
        except Exception as e:
            super(Ticket,
                  self).print_error('Error occurred while creating ticket', e)

    @classmethod
    def exists(_self, data):
        try:
            incident_number = _self.get_incident_number(data)
            jira_url = _self.CONFIGS['jira_url']
            project = _self.CONFIGS['jira_project']
            search_ticket_url = "{0}/rest/api/2/search?jql=project={1}+and+text~'pagerduty+{2}'".format(
                jira_url, project, incident_number)
            request = requests.get(search_ticket_url,
                                   auth=_self.get_jira_auth())
            total_tickets = request.json()['total']
            if total_tickets > 0:
                print 'A ticket for incident #{0} already exists in JIRA'.format(
                    incident_number)
                return True
            return False
        except Exception as e:
            print 'Failed to determine if ticket exists in JIRA. {0}'.format(e)
            return True

    def set_custom_fields(self):
        try:
            custom_fields = self.CONFIGS['custom_fields']
            if custom_fields:
                for custom_field, value in custom_fields.iteritems():
                    self.update_ticket({custom_field: value})
        except Exception as e:
            super(Ticket, self).print_error(
                'Could not set custom fields. Please refer to documentation',
                e)

    def get_issuetype_field(self):
        return {self.ISSUETYPE_KEY: {'name': self.CONFIGS['issuetype']}}

    def get_project_field(self):
        return {self.PROJECT_KEY: {'key': self.CONFIGS['jira_project']}}

    def get_labels_field(self):
        return {self.LABELS_KEY: self.CONFIGS['labels']}

    def get_summary_field(self):
        return {
            self.SUMMARY_KEY:
            "[PagerDuty] {0}: {1}".format(self.incident_number, self.summary)
        }

    def get_description_field(self):
        return {
            self.DESCRIPTION_KEY:
            "*CURRENTLY*\nPagerDuty has triggered an alert\n{0}\n\n*PROBLEM*\n{1}\n\n*SOLUTION*\n* Investigate the alert.\n* Resolve the PagerDuty ticket\n* Create future tickets as necessary"
            .format(self.pager_duty_link, self.summary)
        }

    def update_ticket(self, data):
        self.ticket_data[self.FIELDS_KEY].update(data)

    @classmethod
    def get_incident_number(_self, data):
        return data['incident']['incident_number']

    def get_summary(self, data):
        return data['incident']['trigger_summary_data']['subject']

    def get_pager_duty_link(self, data):
        return data['incident']['html_url']

    @classmethod
    def get_jira_auth(_self):
        return HTTPBasicAuth(_self.CONFIGS['jira_username'],
                             _self.CONFIGS['jira_password'])
Пример #8
0
from Engine import Trainer
from Configs import Configs as Cfg

if __name__ == '__main__':
    cfg = Cfg.load_configs()

    t = Trainer.COMTrainer(cfg)
    t.train()
Пример #9
0
ap.add_argument("-r", "--raspberry", type=int, default=0,help="# runnning on Raspberry Pi? Y=1 N=0")
ap.add_argument("-s", "--send", type=int, default=0,help="#Send commands to ESP? Y=1 N=0")
args = vars(ap.parse_args())

flag_display = args["display"]
flag_raspberry = args["raspberry"]
flag_send = args["send"]

# Raspberry pi mode initialization
if flag_raspberry > 0:
    from pivideostream import PiVideoStream
    from picamera.array import PiRGBArray
    from picamera import PiCamera

# Configure file JSON path
configs = Configs(os.path.dirname(os.path.realpath(__file__))+'/Configs.json')

# Socket initialization
if flag_send > 0:
    import socket
    HOST = configs.get("host")
    PORT = configs.get("port")
    tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    dest = (HOST, PORT)
    tcp.settimeout(0.0)
    print "Sending commands to "+str(dest)
    try:
        tcp.connect(dest)
    except socket.error as msg:
        if msg[0] != 115:
            print "Socket Error "+str(msg[0])
Пример #10
0
 def get_config_obj(self, buildscript, build_root_top, project_ini,
                    output_top):
     return Configs(buildscript, build_root_top, project_ini, output_top)