def initializeGlobalCatalog(catalog): catalog.addIndex('id', makeCaseSensitiveFieldIndex('id')) catalog.addIndex('uid', makeCaseSensitiveFieldIndex('uid')) catalog.addIndex('meta_type', makeCaseSensitiveFieldIndex('meta_type')) catalog.addIndex('name', makeCaseInsensitiveFieldIndex('name')) catalog.addIndex('ipAddress', makeCaseSensitiveFieldIndex('ipAddress')) catalog.addIndex('objectImplements', makeCaseSensitiveKeywordIndex('objectImplements')) catalog.addIndex('allowedRolesAndUsers', makeCaseSensitiveKeywordIndex('allowedRolesAndUsers')) catalog.addIndex('monitored', makeCaseSensitiveFieldIndex('monitored')) catalog.addIndex('path', makeMultiPathIndex('path')) catalog.addIndex('collectors', makeCaseSensitiveKeywordIndex('collectors')) catalog.addIndex('productKeys', makeCaseSensitiveKeywordIndex('productKeys')) catalog.addIndex('searchKeywords', makeCaseInsensitiveKeywordIndex('searchKeywords')) catalog.addIndex('macAddresses', makeCaseInsensitiveKeywordIndex('macAddresses')) catalog.addColumn('id') catalog.addColumn('uuid') catalog.addColumn('name') catalog.addColumn('meta_type') catalog.addColumn('monitored') catalog.addColumn('collectors') catalog.addColumn('zProperties') catalog.addColumn('searchIcon') catalog.addColumn('searchExcerpt')
def setUp(cls): zope.component.testing.setUp(cls) zope.component.provideAdapter(DefaultTraversable, (None,)) import Products.ZenTestCase zcml.load_config('testing-noevent.zcml', Products.ZenTestCase) import Products.ZenTestCase zcml.load_config('testing-noevent.zcml', Products.ZenTestCase) import ZenPacks.zenoss.OpenStackInfrastructure zcml.load_config('configure.zcml', ZenPacks.zenoss.OpenStackInfrastructure) # Silly trickery here. # We create a single TestCase, and share the environment that it creates # across all our ModelTestCases (which we have inheriting from unittest.TestCase # instead) class DummyTestCase(zenpacklib.TestCase): disableLogging = False maxDiff = None zenpack_module_name = 'ZenPacks.zenoss.OpenStackInfrastructure' def test_donothing(self): pass cls.tc = DummyTestCase("test_donothing") cls.tc.setUp() cls.tc.afterSetUp() cls.tc.dmd.REQUEST = None # Workaround for IMP-389: # When Impact 5.2.1-5.2.3 (at least) are installed, setProdState # is patched to re-index the object in the global catalog specifically # on the productionState column, but at least on older verions of RM, # the sandboxed version of global_catalog does not index that column, # which causes setProdState to fail. Add the index for now, to # work around this. if (hasattr(cls.tc.dmd.global_catalog, 'indexes') and 'productionState' not in cls.tc.dmd.global_catalog.indexes()): from Products.ZenUtils.Search import makeCaseSensitiveFieldIndex cls.tc.dmd.global_catalog.addIndex('productionState', makeCaseSensitiveFieldIndex('productionState')) cls.tc.dmd.global_catalog.addColumn('productionState') dc = cls.tc.dmd.Devices.createOrganizer('/Devices/OpenStack/Infrastructure') dc.setZenProperty('zPythonClass', 'ZenPacks.zenoss.OpenStackInfrastructure.Endpoint') dc.setZenProperty('zOpenStackHostDeviceClass', '/Server/SSH/Linux/NovaHost') dc.setZenProperty('zOpenStackRegionName', 'RegionOne') dc.setZenProperty('zOpenStackAuthUrl', 'http://1.2.3.4:5000/v2.0') dc.setZenProperty('zOpenStackNovaApiHosts', []) dc.setZenProperty('zOpenStackExtraHosts', []) dc.setZenProperty('zOpenStackHostMapToId', []) dc.setZenProperty('zOpenStackHostMapSame', []) dc.setZenProperty('zOpenStackHostLocalDomain', '') dc.setZenProperty('zOpenStackExtraApiEndpoints', []) # Create catalog try: from Products.ZenTestCase.BaseTestCase import init_model_catalog_for_tests init_model_catalog_for_tests() except ImportError: pass
def updateNetworkCatalog(self, zcat): idxs = [] # field indexes for indexName in fieldIndexes: try: zcat._catalog.addIndex( indexName, makeCaseInsensitiveFieldIndex(indexName)) idxs.append(indexName) except CatalogError: pass try: zcat._catalog.addIndex( 'ipAddressAsInt', makeCaseSensitiveFieldIndex('ipAddressAsInt')) idxs.append(indexName) except CatalogError: pass # permissions try: zcat._catalog.addIndex( 'allowedRolesAndUsers', makeCaseSensitiveKeywordIndex('allowedRolesAndUsers')) idxs.append('allowedRolesAndUsers') except CatalogError: pass # path index try: zcat._catalog.addIndex('path', makeMultiPathIndex('path')) idxs.append('path') except CatalogError: pass # json in the meta data try: zcat.addColumn('details') except CatalogError: pass i = 0 tstart = time.time() starttotal = time.time() for brain in zcat(): obj = brain.getObject() # we don't want to reindex the links on migrate so explicitly index # from the catalog obj.index_object(idxs=idxs) i += 1 if i % 200 == 0: log.info("rate=%.2f/sec count=%d", 200 / (time.time() - tstart), i) tstart = time.time() log.info("Finished total time=%.2f rate=%.2f count=%d", time.time() - starttotal, i / (time.time() - starttotal), i)
def initializeGlobalCatalog(catalog): catalog.addIndex('id', makeCaseSensitiveFieldIndex('id')) catalog.addIndex('uid', makeCaseSensitiveFieldIndex('uid')) catalog.addIndex('meta_type', makeCaseSensitiveFieldIndex('meta_type')) catalog.addIndex('name', makeCaseInsensitiveFieldIndex('name')) catalog.addIndex('ipAddress', makeCaseSensitiveFieldIndex('ipAddress')) catalog.addIndex('objectImplements', makeCaseSensitiveKeywordIndex('objectImplements')) catalog.addIndex('allowedRolesAndUsers', makeCaseSensitiveKeywordIndex('allowedRolesAndUsers')) catalog.addIndex('productionState', makeCaseSensitiveFieldIndex('productionState')) catalog.addIndex('monitored', makeCaseSensitiveFieldIndex('monitored')) catalog.addIndex('path', makeMultiPathIndex('path')) catalog.addIndex('collectors', makeCaseSensitiveKeywordIndex('collectors')) catalog.addIndex('productKeys', makeCaseSensitiveKeywordIndex('productKeys')) catalog.addIndex('searchKeywords', makeCaseInsensitiveKeywordIndex('searchKeywords')) catalog.addIndex('macAddresses', makeCaseInsensitiveKeywordIndex('macAddresses')) catalog.addColumn('id') catalog.addColumn('uuid') catalog.addColumn('name') catalog.addColumn('meta_type') catalog.addColumn('monitored') catalog.addColumn('productionState') catalog.addColumn('collectors') catalog.addColumn('zProperties') catalog.addColumn('searchIcon') catalog.addColumn('searchExcerpt')
def createCatalog(self): """make the catalog for device searching""" from Products.ZCatalog.ZCatalog import manage_addZCatalog # XXX convert to ManagableIndex manage_addZCatalog(self, self.default_catalog, self.default_catalog) zcat = self._getOb(self.default_catalog) cat = zcat._catalog cat.addIndex('id', makeCaseInsensitiveFieldIndex('id')) zcat._catalog.addIndex('ipAddressAsInt', makeCaseSensitiveFieldIndex('ipAddressAsInt')) zcat._catalog.addIndex('path', makeMultiPathIndex('path'))
def createCatalog(self): """make the catalog for device searching""" from Products.ZCatalog.ZCatalog import manage_addZCatalog # XXX convert to ManagableIndex manage_addZCatalog(self, self.default_catalog, self.default_catalog) zcat = self._getOb(self.default_catalog) cat = zcat._catalog cat.addIndex('id', makeCaseInsensitiveFieldIndex('id')) zcat._catalog.addIndex('ipAddressAsInt', makeCaseSensitiveFieldIndex('ipAddressAsInt')) zcat._catalog.addIndex('path', makeMultiPathIndex('path'))
def updateNetworkCatalog(self, zcat): idxs = [] # field indexes for indexName in fieldIndexes: try: zcat._catalog.addIndex(indexName, makeCaseInsensitiveFieldIndex(indexName)) idxs.append(indexName) except CatalogError: pass try: zcat._catalog.addIndex('ipAddressAsInt', makeCaseSensitiveFieldIndex('ipAddressAsInt')) idxs.append(indexName) except CatalogError: pass # permissions try: zcat._catalog.addIndex('allowedRolesAndUsers', makeCaseSensitiveKeywordIndex('allowedRolesAndUsers')) idxs.append('allowedRolesAndUsers') except CatalogError: pass # path index try: zcat._catalog.addIndex('path', makeMultiPathIndex('path')) idxs.append('path') except CatalogError: pass # json in the meta data try: zcat.addColumn('details') except CatalogError: pass i = 0 tstart=time.time() starttotal = time.time() for brain in zcat(): obj = brain.getObject() # we don't want to reindex the links on migrate so explicitly index # from the catalog obj.index_object(idxs=idxs) i+=1 if i % 200 == 0: log.info("rate=%.2f/sec count=%d", 200/(time.time()-tstart), i) tstart=time.time() log.info("Finished total time=%.2f rate=%.2f count=%d", time.time()-starttotal, i/(time.time()-starttotal),i)
def CreateZenPackPersistenceCatalog(dmd): ''' Create the zenPackPersistence catalog if it does not exist. Return the catalog ''' from Products.ZCatalog.ZCatalog import manage_addZCatalog from Products.ZenUtils.Search import makeCaseSensitiveFieldIndex zcat = getattr(dmd, ZENPACK_PERSISTENCE_CATALOG, None) if zcat is None: manage_addZCatalog(dmd, ZENPACK_PERSISTENCE_CATALOG, ZENPACK_PERSISTENCE_CATALOG) zcat = dmd._getOb(ZENPACK_PERSISTENCE_CATALOG) cat = zcat._catalog cat.addIndex('getZenPackName',makeCaseSensitiveFieldIndex('getZenPackName')) cat.addColumn('id') cat.addColumn('getPrimaryId') return zcat
def CreateZenPackPersistenceCatalog(dmd): ''' Create the zenPackPersistence catalog if it does not exist. Return the catalog ''' from Products.ZCatalog.ZCatalog import manage_addZCatalog from Products.ZenUtils.Search import makeCaseSensitiveFieldIndex zcat = getattr(dmd, ZENPACK_PERSISTENCE_CATALOG, None) if zcat is None: manage_addZCatalog(dmd, ZENPACK_PERSISTENCE_CATALOG, ZENPACK_PERSISTENCE_CATALOG) zcat = dmd._getOb(ZENPACK_PERSISTENCE_CATALOG) cat = zcat._catalog cat.addIndex('getZenPackName', makeCaseSensitiveFieldIndex('getZenPackName')) cat.addColumn('id') cat.addColumn('getPrimaryId') return zcat
def CreateRRDTemplatesCatalog(dmd, rebuild=False): """ Create the searchRRDTemplates catalog if it does not already exist. Return the catalog. """ from Products.ZCatalog.ZCatalog import manage_addZCatalog from Products.ZenUtils.Search import makeCaseSensitiveFieldIndex, \ makePathIndex zcat = getattr(dmd, RRDTEMPLATE_CATALOG, None) if zcat and rebuild: dmd._delObject(RRDTEMPLATE_CATALOG) zcat = None if zcat is None: manage_addZCatalog(dmd, RRDTEMPLATE_CATALOG, RRDTEMPLATE_CATALOG) zcat = dmd._getOb(RRDTEMPLATE_CATALOG) cat = zcat._catalog cat.addIndex('id', makeCaseSensitiveFieldIndex('id')) cat.addIndex('getPhysicalPath', makePathIndex('getPhysicalPath')) return zcat
def CreateRRDTemplatesCatalog(dmd, rebuild=False): """ Create the searchRRDTemplates catalog if it does not already exist. Return the catalog. """ from Products.ZCatalog.ZCatalog import manage_addZCatalog from Products.ZenUtils.Search import makeCaseSensitiveFieldIndex, \ makePathIndex zcat = getattr(dmd, RRDTEMPLATE_CATALOG, None) if zcat and rebuild: dmd._delObject(RRDTEMPLATE_CATALOG) zcat = None if zcat is None: manage_addZCatalog(dmd, RRDTEMPLATE_CATALOG, RRDTEMPLATE_CATALOG) zcat = dmd._getOb(RRDTEMPLATE_CATALOG) cat = zcat._catalog cat.addIndex('id', makeCaseSensitiveFieldIndex('id')) cat.addIndex('getPhysicalPath', makePathIndex('getPhysicalPath')) return zcat
def createCatalog(self): """make the catalog for device searching""" from Products.ZCatalog.ZCatalog import manage_addZCatalog # XXX convert to ManagableIndex manage_addZCatalog(self, self.default_catalog, self.default_catalog) zcat = self._getOb(self.default_catalog) cat = zcat._catalog cat.addIndex('id', makeCaseInsensitiveFieldIndex('id')) zcat.addColumn('getPrimaryId') # add new columns fieldIndexes = ['getInterfaceName', 'getDeviceName', 'getInterfaceDescription', 'getInterfaceMacAddress'] for indexName in fieldIndexes: zcat._catalog.addIndex(indexName, makeCaseInsensitiveFieldIndex(indexName)) zcat._catalog.addIndex('allowedRolesAndUsers', makeCaseSensitiveKeywordIndex('allowedRolesAndUsers')) zcat._catalog.addIndex('ipAddressAsInt', makeCaseSensitiveFieldIndex('ipAddressAsInt')) zcat._catalog.addIndex('path', makeMultiPathIndex('path')) zcat.addColumn('details')
def setUp(cls): zope.component.testing.setUp(cls) zope.component.provideAdapter(DefaultTraversable, (None, )) import Products.ZenTestCase zcml.load_config('testing-noevent.zcml', Products.ZenTestCase) import Products.ZenTestCase zcml.load_config('testing-noevent.zcml', Products.ZenTestCase) import ZenPacks.zenoss.OpenStackInfrastructure zcml.load_config('configure.zcml', ZenPacks.zenoss.OpenStackInfrastructure) # Silly trickery here. # We create a single TestCase, and share the environment that it creates # across all our ModelTestCases (which we have inheriting from unittest.TestCase # instead) class DummyTestCase(zenpacklib.TestCase): disableLogging = False maxDiff = None zenpack_module_name = 'ZenPacks.zenoss.OpenStackInfrastructure' def test_donothing(self): pass cls.tc = DummyTestCase("test_donothing") cls.tc.setUp() cls.tc.afterSetUp() cls.tc.dmd.REQUEST = None # Workaround for IMP-389: # When Impact 5.2.1-5.2.3 (at least) are installed, setProdState # is patched to re-index the object in the global catalog specifically # on the productionState column, but at least on older verions of RM, # the sandboxed version of global_catalog does not index that column, # which causes setProdState to fail. Add the index for now, to # work around this. if (hasattr(cls.tc.dmd.global_catalog, 'indexes') and 'productionState' not in cls.tc.dmd.global_catalog.indexes()): from Products.ZenUtils.Search import makeCaseSensitiveFieldIndex cls.tc.dmd.global_catalog.addIndex( 'productionState', makeCaseSensitiveFieldIndex('productionState')) cls.tc.dmd.global_catalog.addColumn('productionState') dc = cls.tc.dmd.Devices.createOrganizer( '/Devices/OpenStack/Infrastructure') dc.setZenProperty('zPythonClass', 'ZenPacks.zenoss.OpenStackInfrastructure.Endpoint') dc.setZenProperty('zOpenStackHostDeviceClass', '/Server/SSH/Linux/NovaHost') dc.setZenProperty('zOpenStackRegionName', 'RegionOne') dc.setZenProperty('zOpenStackAuthUrl', 'http://1.2.3.4:5000/v2.0') dc.setZenProperty('zOpenStackNovaApiHosts', []) dc.setZenProperty('zOpenStackExtraHosts', []) dc.setZenProperty('zOpenStackHostMapToId', []) dc.setZenProperty('zOpenStackHostMapSame', []) dc.setZenProperty('zOpenStackHostLocalDomain', '') dc.setZenProperty('zOpenStackExtraApiEndpoints', []) # Create catalog try: from Products.ZenTestCase.BaseTestCase import init_model_catalog_for_tests init_model_catalog_for_tests() except ImportError: pass
def afterSetUp(self): super(TestModel, self).afterSetUp() # Workaround for IMP-389: # When Impact 5.2.1-5.2.3 (at least) are installed, setProdState # is patched to re-index the object in the global catalog specifically # on the productionState column, but at least on older verions of RM, # the sandboxed version of global_catalog does not index that column, # which causes setProdState to fail. Add the index for now, to # work around this. if (hasattr(self.dmd.global_catalog, 'indexes') and 'productionState' not in self.dmd.global_catalog.indexes()): from Products.ZenUtils.Search import makeCaseSensitiveFieldIndex self.dmd.global_catalog.addIndex('productionState', makeCaseSensitiveFieldIndex('productionState')) self.dmd.global_catalog.addColumn('productionState') # Patch to remove DNS dependencies def getHostByName(name): return MOCK_DNS.get(name) def resolve_names(names): result = {} for name in names: result[name] = MOCK_DNS.get(name) return defer.maybeDeferred(lambda: result) self._real_resolve_names = hostmap.resolve_names hostmap.resolve_names = resolve_names self._real_getHostByName = Device.getHostByName Device.getHostByName = getHostByName dc = self.dmd.Devices.createOrganizer('/Devices/OpenStack/Infrastructure') dc.setZenProperty('zPythonClass', 'ZenPacks.zenoss.OpenStackInfrastructure.Endpoint') dc.setZenProperty('zOpenStackHostDeviceClass', '/Server/SSH/Linux/NovaHost') dc.setZenProperty('zOpenStackRegionName', 'RegionOne') dc.setZenProperty('zOpenStackAuthUrl', 'http://1.2.3.4:5000/v2.0') dc.setZenProperty('zOpenStackNovaApiHosts', []) dc.setZenProperty('zOpenStackExtraHosts', []) dc.setZenProperty('zOpenStackHostMapToId', []) dc.setZenProperty('zOpenStackHostMapSame', []) dc.setZenProperty('zOpenStackHostLocalDomain', '') dc.setZenProperty('zOpenStackExtraApiEndpoints', []) self.d = dc.createInstance('zenoss.OpenStackInfrastructure.testDevice') self.d.setPerformanceMonitor('localhost') self.d.index_object() notify(IndexingEvent(self.d)) self.applyDataMap = ApplyDataMap()._applyDataMap # Required to prevent erroring out when trying to define viewlets in # ../browser/configure.zcml. import zope.viewlet zcml.load_config('meta.zcml', zope.viewlet) import ZenPacks.zenoss.OpenStackInfrastructure zcml.load_config('configure.zcml', ZenPacks.zenoss.OpenStackInfrastructure) self._loadBadHosts() self._loadZenossData()
def afterSetUp(self): super(TestModel, self).afterSetUp() # Workaround for IMP-389: # When Impact 5.2.1-5.2.3 (at least) are installed, setProdState # is patched to re-index the object in the global catalog specifically # on the productionState column, but at least on older verions of RM, # the sandboxed version of global_catalog does not index that column, # which causes setProdState to fail. Add the index for now, to # work around this. if (hasattr(self.dmd.global_catalog, 'indexes') and 'productionState' not in self.dmd.global_catalog.indexes()): from Products.ZenUtils.Search import makeCaseSensitiveFieldIndex self.dmd.global_catalog.addIndex( 'productionState', makeCaseSensitiveFieldIndex('productionState')) self.dmd.global_catalog.addColumn('productionState') # Patch to remove DNS dependencies def getHostByName(name): return MOCK_DNS.get(name) def resolve_names(names): result = {} for name in names: result[name] = MOCK_DNS.get(name) return defer.maybeDeferred(lambda: result) self._real_resolve_names = hostmap.resolve_names hostmap.resolve_names = resolve_names self._real_getHostByName = Device.getHostByName Device.getHostByName = getHostByName dc = self.dmd.Devices.createOrganizer( '/Devices/OpenStack/Infrastructure') dc.setZenProperty('zPythonClass', 'ZenPacks.zenoss.OpenStackInfrastructure.Endpoint') dc.setZenProperty('zOpenStackHostDeviceClass', '/Server/SSH/Linux/NovaHost') dc.setZenProperty('zOpenStackRegionName', 'RegionOne') dc.setZenProperty('zOpenStackAuthUrl', 'http://1.2.3.4:5000/v2.0') dc.setZenProperty('zOpenStackNovaApiHosts', []) dc.setZenProperty('zOpenStackExtraHosts', []) dc.setZenProperty('zOpenStackHostMapToId', []) dc.setZenProperty('zOpenStackHostMapSame', []) dc.setZenProperty('zOpenStackHostLocalDomain', '') dc.setZenProperty('zOpenStackExtraApiEndpoints', []) self.d = dc.createInstance('zenoss.OpenStackInfrastructure.testDevice') self.d.setPerformanceMonitor('localhost') self.d.index_object() notify(IndexingEvent(self.d)) self.applyDataMap = ApplyDataMap()._applyDataMap # Required to prevent erroring out when trying to define viewlets in # ../browser/configure.zcml. import zope.viewlet zcml.load_config('meta.zcml', zope.viewlet) import ZenPacks.zenoss.OpenStackInfrastructure zcml.load_config('configure.zcml', ZenPacks.zenoss.OpenStackInfrastructure) self._loadBadHosts() self._loadZenossData()