From 817f379515b2156feb648c0e68736a05542ef806 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 7 Apr 2020 20:46:23 +0500 Subject: [PATCH] Add allowDiskUse to reportdatasources. --- lib/app/reportdatasources/report_objectdetaillinks.py | 3 ++- .../reportdatasources/report_objectifacesstatusstat.py | 5 ++++- lib/app/reportdatasources/report_objectlinkcount.py | 3 ++- services/web/apps/fm/reportavailability/views.py | 9 +++++++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/app/reportdatasources/report_objectdetaillinks.py b/lib/app/reportdatasources/report_objectdetaillinks.py index d42e0f2921..1400492b3e 100644 --- a/lib/app/reportdatasources/report_objectdetaillinks.py +++ b/lib/app/reportdatasources/report_objectdetaillinks.py @@ -55,7 +55,8 @@ class ReportObjectDetailLinks(BaseReportColumn): {"$match": match}, {"$group": group}, {"$sort": {"_id": 1}}, - ] + ], + {"allowDiskUse": True}, ) ) for val in value: diff --git a/lib/app/reportdatasources/report_objectifacesstatusstat.py b/lib/app/reportdatasources/report_objectifacesstatusstat.py index 435d8bbef1..ade30464ef 100644 --- a/lib/app/reportdatasources/report_objectifacesstatusstat.py +++ b/lib/app/reportdatasources/report_objectifacesstatusstat.py @@ -61,7 +61,10 @@ class ReportObjectIfacesStatusStat(BaseReportColumn): value = ( get_db()["noc.interfaces"] .with_options(read_preference=ReadPreference.SECONDARY_PREFERRED) - .aggregate([{"$match": match}, {"$group": {"_id": group, "count": {"$sum": 1}}}]) + .aggregate( + [{"$match": match}, {"$group": {"_id": group, "count": {"$sum": 1}}}], + {"allowDiskUse": True}, + ) ) r = defaultdict(lambda: [""] * len(self.ATTRS)) # @todo Fix Down diff --git a/lib/app/reportdatasources/report_objectlinkcount.py b/lib/app/reportdatasources/report_objectlinkcount.py index 44252ad3fd..a5575f7ec4 100644 --- a/lib/app/reportdatasources/report_objectlinkcount.py +++ b/lib/app/reportdatasources/report_objectlinkcount.py @@ -43,7 +43,8 @@ class ReportObjectLinkCount(BaseReportColumn): # {"$match": {"int.managed_object": {"$in": self.sync_ids}}}, {"$group": {"_id": "$int.managed_object", "count": {"$sum": 1}}}, {"$sort": {"_id": 1}}, - ] + ], + {"allowDiskUse": True}, ) ) for v in value: diff --git a/services/web/apps/fm/reportavailability/views.py b/services/web/apps/fm/reportavailability/views.py index cbc835937b..d54dabbfe3 100644 --- a/services/web/apps/fm/reportavailability/views.py +++ b/services/web/apps/fm/reportavailability/views.py @@ -19,6 +19,7 @@ from mongoengine.queryset.visitor import Q from noc.fm.models.outage import Outage from noc.fm.models.reboot import Reboot from noc.sa.models.managedobject import ManagedObject +from noc.sa.models.administrativedomain import AdministrativeDomain from noc.core.mongo.connection import get_db from noc.inv.models.interfaceprofile import InterfaceProfile from noc.sa.models.profile import Profile @@ -41,6 +42,11 @@ class ReportForm(forms.Form): from_date = forms.CharField(widget=AdminDateWidget, label=_("From Date"), required=True) to_date = forms.CharField(widget=AdminDateWidget, label=_("To Date"), required=False) + adm_domain = forms.ModelChoiceField( + label=_("Administrative Domain"), + required=False, + queryset=AdministrativeDomain.objects.order_by("name"), + ) skip_avail = forms.BooleanField(label=_("Skip full available"), required=False) skip_zero_avail = forms.BooleanField(label=_("Skip zero available"), required=False) filter_zero_access = forms.BooleanField(label=_("Skip zero access port"), required=False) @@ -112,6 +118,7 @@ class ReportAvailabilityApplication(SimpleReport): interval=1, from_date=None, to_date=None, + adm_domain=None, skip_avail=False, skip_zero_avail=False, filter_zero_access=False, @@ -142,6 +149,8 @@ class ReportAvailabilityApplication(SimpleReport): if not request.user.is_superuser: mos = mos.filter(administrative_domain__in=UserAccess.get_domains(request.user)) + if adm_domain: + mos = mos.filter(administrative_domain__in=adm_domain.get_nested()) if skip_avail: mos = mos.filter(id__in=list(a)) mos_id = list(mos.order_by("id").values_list("id", flat=True)) -- GitLab