Example #1
0
    def get_job_avg():
        """
        Calculate average time execute discovery job
        :return:
        """
        job_map = {
            "noc.services.discovery.jobs.periodic.job.PeriodicDiscoveryJob":
            "periodic",
            "noc.services.discovery.jobs.box.job.BoxDiscoveryJob": "box",
        }
        r = {}
        match = {"ldur": {"$gte": 0.05}}  # If Ping fail and skipping discovery

        for pool in Pool.objects.filter():
            coll = Scheduler("discovery", pool=pool.name).get_collection()
            r[pool] = {
                job_map[c["_id"]]: c["avg_dur"]
                for c in coll.aggregate([{
                    "$match": match
                }, {
                    "$group": {
                        "_id": "$jcls",
                        "avg_dur": {
                            "$avg": "$ldur"
                        }
                    }
                }]) if c["_id"]
            }
        return r
Example #2
0
 def __iter__(self):
     mos_ids = list(self.mos_filter.values_list("id", flat=True))
     self.pipeline = [{
         "$match": {
             Job.ATTR_KEY: {
                 "$in": mos_ids
             }
         }
     }] + self.pipeline
     scheduler = Scheduler(self.scheduler, pool=self.pool).get_collection()
     yield from scheduler.aggregate(self.pipeline)