def __init__(self, account=1, creator=1, type=1, data=None): tqconn = HostedTaskQueue() jdata = json.loads(data) tags = [] tags.append("creator=" + str(creator)) tags.append("deviceId=" + jdata['Device']['Udid']) tags.append("owner=" + jdata['User']['Email']) tags.append("type=" + str(type)) tags.append("status=1") tags.append("restServiceFlag=1") payload_base64 = base64.b64encode(data) result = tqconn.do_add(tqname='enrollment', namespace='mobile', account=account, payload=payload_base64, tags=tags) if result.code == 200 or result.code == 201: logger.info( 'Notification REST Service - Add enrollment decision task success!' ) else: raise ServerInternalException( 'Add enrollment decision task failed!')
def move_task_to_errorqueue(self, error_msg): hostedTQ = HostedTaskQueue() if type(self.m_tags)!=list: logger.error('task tags is not a list:[%s]' % self.m_tags) raise Exception('tags type error in move_task_to_errorqueue') if TASK_STATUS_DICT['normal'] in self.m_tags: self.m_tags.remove(TASK_STATUS_DICT['normal']) if TASK_STATUS_DICT['retry'] in self.m_tags: self.m_tags.remove(TASK_STATUS_DICT['retry']) self.m_tags.append(TASK_STATUS_DICT['error']) tag_error = 'error_msg_base64=%s' % base64.encodestring(error_msg).replace('\n', '') self.m_tags.append(tag_error) try: hostedTQ.do_add(tqname=self.m_error_qname, namespace='mobile', account=int(self.m_account), version=1, payload=self.m_payload_base64, tags=self.m_tags, priority = self.m_priority) except MDMiHttpError, e: logger.debug('add error task failed:%s, will try to create error queue' % repr(e)) error_qname_list = [ {'name' : 'enrollmentError', 'settings' : {"description" : "Enrollment Decision Error task queue", "max_leases" : "30", "max_age" : "0"}} ] tqo = TaskQueueUtils(error_qname_list) tqo.init_task_queue() del tqo hostedTQ.do_add(tqname=self.m_error_qname, namespace='mobile', account=int(self.m_account), version=1, payload=self.m_payload_base64, tags=self.m_tags, priority = self.m_priority)
def main(): #estimate localhost is master result = os.path.exists('/etc/sysconfig/mes.primary') if result: logger.info('Start adding periodic usergroup sync tasks.') hosted_account = HostedAccount(ACCOUNT_BLACK_SPIDER) #acct_nums = hosted_account.get_airwatch_account_ids() acct_nums = hosted_account.get_airwatch_hosted_account_ids() success = 0 failure = 0 if acct_nums: for n in acct_nums: try: task_num = HostedTaskQueue().do_get_task_total(tqname=TASK_QUEUE_USERGROUP_PERIODIC, account=int(n)) if int(task_num): logger.info('Another machine has added periodic sync tasks. Abort adding.') break logger.info('To add periodic usergroup sync task for account %s.', n) HostedTaskQueue().do_add(tqname=TASK_QUEUE_USERGROUP_PERIODIC, account=int(n)) success += 1 logger.info('Added periodic usergroup sync task for account %s.', n) except Exception as e: failure += 1 logger.error('Add periodic usergroup sync task for account %s failed. %s', n, e) logger.error(e) logger.info('END adding periodic usergroup sync tasks. %d success, %d failure.', success, failure) else: logger.info('localhost is not master')
def send(self, account=1, mailfrom='*****@*****.**', rcptto=None, substitutions=None, template=None, tags=None): ''' TODO: Send email Params: account: Account ID. mailfrom: sender name. rcptto: Receiver name. substitutions: Email data. template: Template href. tags: User defined data in list. Return: =0 : Operation success. < 0 : Failed. ''' if not rcptto or not substitutions or not template: raise Exception('Invalid input!') request = HostedTaskQueue() retval = 0 data = {'mailfrom' : mailfrom, 'rcptto' : rcptto, 'substitutions' : substitutions, 'template_href' : template } payload = json.dumps(data) payload = base64.encodestring(payload) result = request.do_add(tqname='email', namespace='email', account=account, version=1, payload=payload, tags=tags) if (retval >= 0) and ((result.code - 200) < 10): retval = 0 else: retval = -1 return retval pass
def move_task_to_retryqueue(self): hostedTQ = HostedTaskQueue() if type(self.m_tags)!=list: logger.error('task tags is not a list:[%s]' % self.m_tags) raise Exception('tags type error in move_task_to_retryqueue') if not TASK_STATUS_DICT['retry'] in self.m_tags: if TASK_STATUS_DICT['normal'] in self.m_tags: self.m_tags.remove(TASK_STATUS_DICT['normal']) self.m_tags.append(TASK_STATUS_DICT['retry']) hostedTQ.do_add(tqname=self.m_retry_qname, namespace='mobile', account=int(self.m_account), version=1, payload=self.m_payload_base64, tags=self.m_tags, priority = self.m_priority) logger.debug('enrollment.py - add task to retry queue success')
def init_task_queue(self, qName): try: tq = HostedTaskQueue() data = {"description" : "deployment task queue", "max_leases" : "30", "max_age" : "0"} logger.info("initialize task queue start") result = tq.do_establish_taskqueue(tqname=qName, description=data) if not result: logger.error("taskqueue '%s' establish failed!" % qName) else: logger.info("taskqueue '%s' initialize end!" % (qName)) except Exception, e: logger.error("initialize taskqueue '%s' error %s" % (qName, e)) raise Exception("initialize taskqueue '%s' error" % qName)
def send(self, account=1, mailfrom='*****@*****.**', rcptto=None, substitutions=None, template=None, tags=None): ''' TODO: Send email Params: account: Account ID. mailfrom: sender name. rcptto: Receiver name. substitutions: Email data. template: Template href. tags: User defined data in list. Return: =0 : Operation success. < 0 : Failed. ''' if not rcptto or not substitutions or not template: raise Exception('Invalid input!') request = HostedTaskQueue() retval = 0 data = { 'mailfrom': mailfrom, 'rcptto': rcptto, 'substitutions': substitutions, 'template_href': template } payload = json.dumps(data) payload = base64.encodestring(payload) result = request.do_add(tqname='email', namespace='email', account=account, version=1, payload=payload, tags=tags) if (retval >= 0) and ((result.code - 200) < 10): retval = 0 else: retval = -1 return retval pass
def init_task_queue(self): if len(self.m_qname_list) > 0: tqobj = HostedTaskQueue() for tq in self.m_qname_list: try: if tq.has_key('name') and tq.has_key('settings'): result = tqobj.do_establish_taskqueue(tqname=tq['name'], description=tq['settings']) if result: logger.debug('Task Queue %s initialize ok!' % tq['name']) else: logger.error('Task Queue %s initialize failed!' % tq['name']) else: logger.error('Unknow task queue setting! Value is %s' % repr(tq)) except Exception, e: logger.error(e) raise Exception("Initialize task queue error!") del tqobj
def move_task_to_retryqueue(self): hostedTQ = HostedTaskQueue() if type(self.m_tags) != list: logger.error('task tags is not a list:[%s]' % self.m_tags) raise Exception('tags type error in move_task_to_retryqueue') if not TASK_STATUS_DICT['retry'] in self.m_tags: if TASK_STATUS_DICT['normal'] in self.m_tags: self.m_tags.remove(TASK_STATUS_DICT['normal']) self.m_tags.append(TASK_STATUS_DICT['retry']) hostedTQ.do_add(tqname=self.m_retry_qname, namespace='mobile', account=int(self.m_account), version=1, payload=self.m_payload_base64, tags=self.m_tags, priority=self.m_priority) logger.debug('enrollment.py - add task to retry queue success')
def create_task_queue(self, qName): ''' Create task queue in DB ''' try: tq = HostedTaskQueue() data = {"description" : "iOS device redeployment task queue", "max_leases" : "30", "max_age" : "0"} logger.info("initialize task queue start") if not tq.do_get_taskqueue(tqname = qName): result = tq.do_establish_taskqueue(tqname=qName, description=data) if not result: logger.error("taskqueue '%s' establish failed!" % qName) else: logger.info("taskqueue '%s' initialize success!" % qName) else: logger.debug('task queue %s already exists' % qName) except Exception, e: logger.error("initialize taskqueue '%s' error: %s" % (qName, e)) raise Exception("initialize taskqueue '%s' error" % qName)
def _send_mail(self, rcptto, account): logger.info("send mail start") hostedq = HostedTaskQueue() data = {} data["mailfrom"] = "*****@*****.**" data["rcptto"] = rcptto portal_url = self._get_cluster_portal_url() data["substitutions"] = { "_displayfromname_": "Cloud Web Security Portal", "_portalurl_": portal_url } data["template"] = self._get_template() payload = json.dumps(data) payload_base64 = base64.encodestring(payload) hostedq.do_add(tqname='email', namespace='email', account=account, version=1, payload=payload_base64) logger.info("send mail end") pass
def __init__(self, account=1, creator=1, type=1, data=None): tqconn = HostedTaskQueue() jdata = json.loads(data) tags = [] tags.append("creator=" + str(creator)) tags.append("deviceId=" + jdata['Device']['Udid']) tags.append("owner=" + jdata['User']['Email']) tags.append("type=" + str(type)) tags.append("status=1") tags.append("restServiceFlag=1") payload_base64 = base64.b64encode(data) result = tqconn.do_add(tqname='enrollment', namespace='mobile', account=account, payload=payload_base64, tags=tags) if result.code == 200 or result.code == 201: logger.info('Notification REST Service - Add enrollment decision task success!') else: raise ServerInternalException('Add enrollment decision task failed!')
def init_task_queue(self): if len(self.m_qname_list) > 0: tqobj = HostedTaskQueue() for tq in self.m_qname_list: try: if tq.has_key('name') and tq.has_key('settings'): result = tqobj.do_establish_taskqueue( tqname=tq['name'], description=tq['settings']) if result: logger.debug('Task Queue %s initialize ok!' % tq['name']) else: logger.error('Task Queue %s initialize failed!' % tq['name']) else: logger.error('Unknow task queue setting! Value is %s' % repr(tq)) except Exception, e: logger.error(e) raise Exception("Initialize task queue error!") del tqobj
def __init__(self, account=1, creator=1, type=1, data=None): tqconn = HostedTaskQueue() tags = [] tags.append("reties=0") tags.append("type=" + str(type)) tags.append("creator=" + str(creator)) tags.append("restServiceFlag=1") payload = {} payload.update({'requestPayload': data}) tmpdict = self.analyse_payload(data) payload.update(tmpdict) payload = json.dumps(payload) payload_base64 = base64.b64encode(payload) result = tqconn.do_add(tqname='usergroup', namespace='mobile', account=account, payload=payload_base64, tags=tags) if result.code == 200 or result.code == 201: logger.info('Notification REST Service - Add user sync task success!') else: raise ServerInternalException('Add user sync task failed!')
def create_task_queue(self, qName): ''' Create task queue in DB ''' try: tq = HostedTaskQueue() data = { "description": "iOS device redeployment task queue", "max_leases": "30", "max_age": "0" } logger.info("initialize task queue start") if not tq.do_get_taskqueue(tqname=qName): result = tq.do_establish_taskqueue(tqname=qName, description=data) if not result: logger.error("taskqueue '%s' establish failed!" % qName) else: logger.info("taskqueue '%s' initialize success!" % qName) else: logger.debug('task queue %s already exists' % qName) except Exception, e: logger.error("initialize taskqueue '%s' error: %s" % (qName, e)) raise Exception("initialize taskqueue '%s' error" % qName)
def move_task_to_errorqueue(self, error_msg): hostedTQ = HostedTaskQueue() if type(self.m_tags) != list: logger.error('task tags is not a list:[%s]' % self.m_tags) raise Exception('tags type error in move_task_to_errorqueue') if TASK_STATUS_DICT['normal'] in self.m_tags: self.m_tags.remove(TASK_STATUS_DICT['normal']) if TASK_STATUS_DICT['retry'] in self.m_tags: self.m_tags.remove(TASK_STATUS_DICT['retry']) self.m_tags.append(TASK_STATUS_DICT['error']) tag_error = 'error_msg_base64=%s' % base64.encodestring( error_msg).replace('\n', '') self.m_tags.append(tag_error) try: hostedTQ.do_add(tqname=self.m_error_qname, namespace='mobile', account=int(self.m_account), version=1, payload=self.m_payload_base64, tags=self.m_tags, priority=self.m_priority) except MDMiHttpError, e: logger.debug( 'add error task failed:%s, will try to create error queue' % repr(e)) error_qname_list = [{ 'name': 'enrollmentError', 'settings': { "description": "Enrollment Decision Error task queue", "max_leases": "30", "max_age": "0" } }] tqo = TaskQueueUtils(error_qname_list) tqo.init_task_queue() del tqo hostedTQ.do_add(tqname=self.m_error_qname, namespace='mobile', account=int(self.m_account), version=1, payload=self.m_payload_base64, tags=self.m_tags, priority=self.m_priority)
def establish_taskqueue(tqname, data): result = HostedTaskQueue().do_establish_taskqueue(tqname=tqname, description=data) if not result: logger.error('Task Queue %s established failed!' % tqname) else: logger.info('Task Queue %s established success!' % tqname)