def check_calendar_tasks(self, conn): now = list(time.gmtime()) tasks = [] db_type = get_dbtype() if db_type == constants.MYSQL: tasks = conn.query(TaskCalendar).options(eagerload('task')).filter((TaskCalendar.dow == 0) | TaskCalendar.dow.op('&')(1 << now[6]) > 0).filter((TaskCalendar.month == 0) | TaskCalendar.month.op('&')(1 << now[1]) > 0).filter((TaskCalendar.day == 0) | TaskCalendar.day.op('&')(1 << now[2]) > 0).filter((TaskCalendar.hour == 0) | TaskCalendar.hour.op('&')(1 << now[3]) > 0).filter((TaskCalendar.minute == 0) | TaskCalendar.minute.op('&')(1 << now[4]) > 0) if db_type == constants.ORACLE: tasks = conn.query(TaskCalendar).options(eagerload('task')).filter((TaskCalendar.dow == 0) | (func.BITAND(TaskCalendar.dow, 1 << now[6]) > 0)).filter((TaskCalendar.month == 0) | (func.BITAND(TaskCalendar.month, 1 << now[1]) > 0)).filter((TaskCalendar.day == 0) | (func.BITAND(TaskCalendar.day, 1 << now[2]) > 0)).filter((TaskCalendar.hour == 0) | (func.BITAND(TaskCalendar.hour, 1 << now[3]) > 0)).filter((TaskCalendar.minute == 0) | (func.BITAND(TaskCalendar.minute, 1 << now[4]) > 0)) for cal in tasks: task = cal.task if self.check_prior_execution(conn, task): self.submit_async(task) else: logger.warning('The prior execution of task %s has not completed. Delaying the current execution...' % task.name)
def make_vmsearch_query(self, class_name, DEC, property): condition="" dec_val="" lists=DEC[2:] i=0 for x in lists: if i > 0 : dec_val+=" " dec_val+=x i+=1 joins=[] filters=[] if property == constants.MEMUTIL_VALUE: condition = self.get_custom_condition('class_name.mem_util', DEC[1] , dec_val) filters.append(eval(condition)) elif property == constants.CPUUTIL_VALUE: condition = self.get_custom_condition('class_name.cpu_util', DEC[1] , dec_val) filters.append(eval(condition)) elif property == constants.STRGUTIL_VALUE: condition = self.get_custom_condition('class_name.gb_poolused', DEC[1] , dec_val) filters.append(eval(condition)) elif property ==constants.SP_VALUE: condition = self.get_custom_condition('Entity.name', DEC[1] , dec_val) filters.append(class_name.entity_id.in_( DBSession.query(EntityRelation.dest_id).filter(EntityRelation.src_id.in_( DBSession.query(EntityRelation.dest_id).filter(EntityRelation.src_id.in_( DBSession.query(Entity.entity_id).filter(eval(condition)) )) )) )) elif property ==constants.TEMPLATE_VALUE: condition = self.get_custom_condition('Image.name', DEC[1] , dec_val) filters.append(class_name.entity_id.in_( DBSession.query(VM.id).filter(VM.image_id.in_(\ DBSession.query(Image.id).filter(eval(condition)) )) )) elif property ==constants.OS_VALUE: joins.append((VM,VM.id==class_name.entity_id)) db_type=get_dbtype() if db_type==constants.ORACLE: condition = self.get_custom_condition('func.concat(func.concat(VM.os_name," "),VM.os_version)', DEC[1] , dec_val) else: condition = self.get_custom_condition('func.concat(VM.os_name," ",VM.os_version)', DEC[1] , dec_val) filters.append(eval(condition)) elif property ==constants.SRVR_NAME_VALUE: condition = self.get_custom_condition('Entity.name', DEC[1] , dec_val) filters.append(class_name.entity_id.in_( DBSession.query(EntityRelation.dest_id).filter(EntityRelation.src_id.in_( DBSession.query(Entity.entity_id).filter(eval(condition)) )) )) elif property ==constants.VM_STATUS_VALUE: joins.append((VM,VM.id==class_name.entity_id)) joins.append((AvailState,AvailState.entity_id==class_name.entity_id)) if DEC[2] == "down": filters.append(AvailState.avail_state == VM.SHUTDOWN) else: filters.append(AvailState.avail_state != VM.SHUTDOWN) elif property ==constants.VM_NAME_VALUE: joins.append((VM,VM.id==class_name.entity_id)) condition = self.get_custom_condition('VM.name', DEC[1] , dec_val) filters.append(eval(condition)) return dict(filters=filters,joins=joins)