Example #1
0
 def get_n_subs_n_serv():
     r = defaultdict(dict)
     service_pipeline = [
         {
             "$unwind": "$service"
         },
         {
             "$group": {
                 "_id": "$managed_object",
                 "service_sum": {
                     "$sum": "$service.summary"
                 }
             }
         },
     ]
     for doc in ServiceSummary._get_collection().aggregate(
             service_pipeline):
         r[doc["_id"]]["n_services"] = doc["service_sum"]
     subscriber_pipeline = [
         {
             "$unwind": "$subscriber"
         },
         {
             "$group": {
                 "_id": "$managed_object",
                 "subscriber_sum": {
                     "$sum": "$subscriber.summary"
                 },
             }
         },
     ]
     for doc in ServiceSummary._get_collection().aggregate(
             subscriber_pipeline):
         r[doc["_id"]]["n_subscribers"] = doc["subscriber_sum"]
     return r
Example #2
0
    def get_objects_summary_met(mos_ids, info_all=False):
        kk = {}
        pipeline = []
        name = "service"
        if not info_all:
            pipeline += [{"$match": {"managed_object": {"$in": mos_ids}}}]

        group = {
            "_id": {
                "mo": "$managed_object"
            },
            "count": {
                "$push": "$%s.profile" % name
            }
        }
        pipeline += [{"$unwind": "$%s" % name}, {"$group": group}]
        for ss in (ServiceSummary._get_collection().with_options(
                read_preference=ReadPreference.SECONDARY_PREFERRED).aggregate(
                    pipeline)):
            kk[ss["_id"]["mo"]] = ss["count"]
        return kk