示例#1
0
      def _queryTrObjsByCatView(wlNames=None, areaIds=None, areaNames=None,
                                branchNames=None, testerIds=None, bldTypes=None):
         def _argsWrapper(args):
            if not args:
               return [None]
            else:
               return args

         if not wlNames:
            wlIds = [None]
         else:
            from workload import Workload
            wlIds = Workload.getWorkloadIds(wlNames)

         if areaNames:
            areaIds = Area.getAreaIds(areaNames)
         elif areaIds:
            childrenIds = Area.getChildrenAreaIds(areaIds)
            if childrenIds:
               areaIds.extend(childrenIds)
         else:
            areaIds = [None]

         # The order for filterKey and filterLoop should be matched
         filterKey = ['workload', 'area__id__in', 'deliverables__build__branch__in',
                      'tester__id__in', 'deliverables__build__bldtype__in']
         filterLoop = itertools.product(wlIds, areaIds, _argsWrapper(branchNames),
                                        _argsWrapper(testerIds),
                                        _argsWrapper(bldTypes))
         filterLoop = list(filterLoop)

         trObjs = []
         for item in filterLoop:
            filterMap = {}
            for i in range(len(item)):
               if item[i] is None:
                  continue
   
               filterMap[filterKey[i]] = item[i]
   
            logger.info("Retrieving testrun data via RestAPI with filterInfo: %s",
                        filterMap)
            tmpTrObjs = queryCatInfo('testrun', filterMap, limitDay=limitDay,
                                     limit=limitNumber, orderBy="-endtime")
            if tmpTrObjs:
               logger.info("Totally get %d testruns" % len(tmpTrObjs))
               trObjs.extend(tmpTrObjs)

         return trObjs