Example #1
0
 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)
Example #2
0
    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)