コード例 #1
0
 def getEventSummariesGenerator(self, filter=None, exclude=None, sort=None, archive=False, timeout=None):
     if isinstance(exclude, dict):
         exclude = from_dict(EventFilter, exclude)
     if isinstance(filter, dict):
         filter = from_dict(EventFilter, filter)
     if sort is not None:
         sort = tuple(self._getEventSort(s) for s in safeTuple(sort))
     searchid = self.client.createSavedSearch(event_filter=filter, exclusion_filter=exclude, sort=sort,
                                              archive=archive, timeout=timeout)
     log.debug("created saved search %s", searchid)
     eventSearchFn = partial(self.client.savedSearch, searchid, archive=archive)
     offset = 0
     limit = 1000
     try:
         while offset is not None:
             result = self._getEventSummaries(eventSearchFn, offset, limit)
             for evt in result['events']:
                 yield evt
             offset = result['next_offset']
     finally:
         try:
             log.debug("closing saved search %s", searchid)
             self.client.deleteSavedSearch(searchid, archive=archive)
         except Exception as e:
             log.debug("error closing saved search %s (%s) - %s", searchid, type(e), e)
コード例 #2
0
ファイル: zepfacade.py プロジェクト: zenoss-ce/zenoss-prodbin
    def getEventSummaries(self,
                          offset,
                          limit=1000,
                          sort=None,
                          filter=None,
                          exclusion_filter=None,
                          client_fn=None,
                          use_permissions=False):
        if client_fn is None:
            client_fn = self.client.getEventSummaries
        if filter is not None and isinstance(filter, dict):
            filter = from_dict(EventFilter, filter)
        if exclusion_filter is not None and isinstance(exclusion_filter, dict):
            exclusion_filter = from_dict(EventFilter, exclusion_filter)
        if sort is not None:
            sort = tuple(self._getEventSort(s) for s in safeTuple(sort))

        result = None

        if use_permissions:
            user = getSecurityManager().getUser()
            userSettings = self._dmd.ZenUsers._getOb(user.getId())
            hasGlobalRoles = not userSettings.hasNoGlobalRoles()
            if not hasGlobalRoles:
                adminRoles = userSettings.getAllAdminRoles()
                if adminRoles:
                    # get ids for the objects they have permission to access
                    # and add to filter
                    ids = [
                        IGlobalIdentifier(x.managedObject()).getGUID()
                        for x in adminRoles
                    ]
                    if filter is None:
                        filter = EventFilter()
                    tf = filter.tag_filter.add()
                    tf.tag_uuids.extend(ids)
                else:
                    # no permission to see events, return 0
                    result = {
                        'total': 0,
                        'events': [],
                    }

        if not result:
            result = self._getEventSummaries(source=partial(
                client_fn,
                filter=filter,
                exclusion_filter=exclusion_filter,
                sort=sort),
                                             offset=offset,
                                             limit=limit)
        return result
コード例 #3
0
    def getEventSummaries(self, offset, limit=1000, sort=None, filter=None, exclusion_filter=None, client_fn=None,
                          use_permissions=False):
        if client_fn is None:
            client_fn = self.client.getEventSummaries
        if filter is not None and isinstance(filter,dict):
            filter = from_dict(EventFilter, filter)
        if exclusion_filter is not None and isinstance(exclusion_filter, dict):
            exclusion_filter['operator'] = 1 # Set operator to OR
            exclusion_filter = from_dict(EventFilter, exclusion_filter)
        if sort is not None:
            sort = tuple(self._getEventSort(s) for s in safeTuple(sort))

        result = None

        if use_permissions:
            user = getSecurityManager().getUser()
            userSettings = self._dmd.ZenUsers._getOb(user.getId())
            hasGlobalRoles = not userSettings.hasNoGlobalRoles()
            if not hasGlobalRoles:
                # get guids for the objects user has permission to access
                # and add to filter
                guids = userSettings.getAllAdminGuids(returnChildrenForRootObj=True)
                if guids:
                    if filter is None:
                        filter = EventFilter()
                    tf = filter.tag_filter.add()
                    tf.tag_uuids.extend(guids)
                else:
                    # no permission to see events, return 0
                    result =  {
                        'total' : 0,
                        'events' : [],
                    }

        if not result:
            result = self._getEventSummaries(source=partial(client_fn,
                                                   filter=filter,
                                                   exclusion_filter=exclusion_filter,
                                                   sort=sort
                                                   ),
                                           offset=offset, limit=limit
                                           )
        return result
コード例 #4
0
    def getEventSummaries(self, offset, limit=1000, sort=None, filter=None, exclusion_filter=None, client_fn=None,
                          use_permissions=False):
        if client_fn is None:
            client_fn = self.client.getEventSummaries
        if filter is not None and isinstance(filter,dict):
            filter = from_dict(EventFilter, filter)
        if exclusion_filter is not None and isinstance(exclusion_filter, dict):
            exclusion_filter = from_dict(EventFilter, exclusion_filter)
        if sort is not None:
            sort = tuple(self._getEventSort(s) for s in safeTuple(sort))

        result = None

        if use_permissions:
            user = getSecurityManager().getUser()
            userSettings = self._dmd.ZenUsers._getOb(user.getId())
            hasGlobalRoles = not userSettings.hasNoGlobalRoles()
            if not hasGlobalRoles:
                adminRoles = userSettings.getAllAdminRoles()
                if adminRoles:
                    # get ids for the objects they have permission to access
                    # and add to filter
                    ids = [IGlobalIdentifier(x.managedObject()).getGUID() for x in adminRoles]
                    if filter is None:
                        filter = EventFilter()
                    tf = filter.tag_filter.add()
                    tf.tag_uuids.extend(ids)
                else:
                    # no permission to see events, return 0
                    result =  {
                        'total' : 0,
                        'events' : [],
                    }

        if not result:
            result = self._getEventSummaries(source=partial(client_fn,
                                                   filter=filter,
                                                   exclusion_filter=exclusion_filter,
                                                   sort=sort
                                                   ),
                                           offset=offset, limit=limit
                                           )
        return result