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
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")
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 """