Example #1
0
class OrderTaker(Staff):
    """
    Job Scheduler Worker

    """

    def __init__(self, queue_name, queue_region, aws_access_key_id, aws_secret_access_key):
        Staff.__init__(self, aws_access_key_id, aws_secret_access_key)
        self.queue = SQSUtils(queue_name, queue_region, aws_access_key_id, aws_secret_access_key)

    def get_order(self):
        self.logger.info("Get order from SQS")
        (message, order) = self.queue.get_message()
        if message:
            self.queue.delete_message(message)
            return order
        return None

    def _check_order(self, message):
        if message:
            body = json.loads(message)
            order = Order(body)
            return order
        return None

    def take_order(self):
        order = self.get_order()
        order_obj = self._check_order(order)
        return order_obj
Example #2
0
class OrderServer(Staff):
    
    def __init__(self, queue_name, queue_region, aws_access_key_id, aws_secret_access_key):
        Staff.__init__(self, aws_access_key_id, aws_secret_access_key)     
        self.queue = SQSUtils(queue_name, queue_region, aws_access_key_id, aws_secret_access_key)
    
    def get_order(self):
        self.logger.info("Get order from SQS")
        (message, order) = self.queue.get_message()
        if message:
            self.queue.delete_message(message)
            return order
        return None

    def get_dish(self): 
        self.logger.info("Get order from SQS")
        (message, order) = self.queue.get_message()
        if message:
            self.queue.delete_message(message)
            return order
        return None

    def _check_order(self, message):
        if message:
            body = json.loads(message)
            order = Order(body)
            return order
        return None

    def deliver_dish(self):
        order = self.get_order()
        order_obj = self._check_order(order)
        if order_obj:
            #FIXME: jira table format :-)
            #self.sent_to_jira(order_obj.get_ticket_id(), "*** Omelet provisioning result: \n" + json.dumps(order_obj.get_result()))
            #self.sent_to_jira(order_obj.get_ticket_id(), jira_formatter.to_table(order_obj.get_result()))
            self.sent_to_jira(order_obj.get_ticket_id(), jira_formatter.to_panel(order_obj.get_result()))

    def sent_to_jira(self, ticketId, result):
        """
        send the result to JIRA

        """
        options = {
            'server': jira_server
        }
        jira = JIRA(options, basic_auth=(jira_username, jira_password))

        # Get all projects viewable by anonymous users.
        projects = jira.projects()

        # Sort available project keys, then return the second, third, and fourth keys.
        keys = sorted([project.key for project in projects])[2:5]

        # Get an issue.
        issue = jira.issue(ticketId)

        # Add a comment to the issue.
        jira.add_comment(issue, result)

        # Move the ticket to Provision Completed.
        #print issue.fields.status
        try:    
            jira.transition_issue(issue, transitionId=provision_completed_transition_id, comment='Provision finished')
        except:
            print "Transition Error"
            self.logger.error("Transition Error")
Example #3
0
class OrderTaker(Staff):
    """
    Job Scheduler Worker

    """

    def __init__(self, queue_name, queue_region, aws_access_key_id, aws_secret_access_key):
        Staff.__init__(self, aws_access_key_id, aws_secret_access_key)     
        #Staff.deliver_queue_init(self, queue_name, queue_region, aws_access_key_id, aws_secret_access_key)     
        self.queue = SQSUtils(queue_name, queue_region, aws_access_key_id, aws_secret_access_key)
        self.priority = self._priority_init()

    def get_order(self):
        self.logger.info("Get order from SQS")
        (message, order) = self.queue.get_message()
        if message:
            self.queue.delete_message(message)
            return order
        return None

    def _priority_init(self):
        priority_dict = dict()
        parser = ConfigParser()
        parser.optionxform = str            # preserve case from config
        parser.read('sched_config.ini')  
        section_name = "Task_priority"
        options = parser.options(section_name)
        for option in options:
            try:
                priority_dict[option] = parser.get(section_name, option)
                #priority_dict[parser.get(section_name, option)] = option
            except:
                self.logger.error("Exception when do priority init - %s" % option)
                print "Exception on %s" % option
        return priority_dict

    def _check_order(self, message):
        if message:
            body = json.loads(message)
            order = Order(body)
            return order
        return None
    
    def _get_priority(self, task_type):
        if task_type in self.priority.keys():
            priority = self.priority[task_type]
            return int(priority)
        else:
            self.logger.error("Unspecified priority of task type: %s. Please check the priority in config file" % task_type)
            raise

    def deliver_order(self):
        order = self.get_order()
        order_obj = self._check_order(order)     
        if order_obj:
            #ticket_id = order_set['ticketId']
            #
            # sorted priority for correcting sequence number
            #
            tasks = order_obj.get_tasks()
            for idx, task in enumerate(tasks):
                task['priority'] = self._get_priority(task['taskType'])
                task['taskId'] = str(idx)
                task['ticketId'] = order_obj.get_ticket_id()
            tasks = sorted(tasks, key=operator.itemgetter('priority'))
            print tasks
            return tasks
        return None

    """