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 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 create_catalog(self, device): manage_addZCatalog(device, self.catalog_name, self.catalog_name) catalog = device._getOb(self.catalog_name) catalog.addIndex('path', makeMultiPathIndex('path')) for field in self.fields: field = str(field) # Add two indexes, one for natural sorting sort_field = field + '__sort' catalog.addIndex(field, makeCaseInsensitiveFieldIndex(field)) catalog.addIndex(sort_field, makeCaseInsensitiveFieldIndex(sort_field)) return catalog
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 cutover(self, dmd): cat = getToolByName(dmd.Devices, 'deviceSearch') try: cat._catalog.addIndex('path', makeMultiPathIndex('path')) except CatalogError: # Index already exists pass try: cat.addColumn('path') except CatalogError: # Column exists pass
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 get_catalog(self, obj, meta_type): """ @param obj: A device component for which a type-specific catalog should get got @type obj: DeviceComponent @param meta_type: The meta_type the catalog is being created for @type meta_type: str @return: The component type catalog @rtype: ZCatalog """ device = obj.device() try: catalog = device._getOb(self.catalog_name) except AttributeError: catalog = self.create_catalog(device) self.index_all_of_type(obj, meta_type) if 'path' not in catalog._catalog.indexes: catalog.addIndex('path', makeMultiPathIndex('path')) self.index_all_of_type(obj, meta_type) return catalog
def createCatalog(self): """ Make the catalog for device searching """ from Products.ZCatalog.ZCatalog import manage_addZCatalog # Make catalog for Devices manage_addZCatalog(self, self.default_catalog, self.default_catalog) zcat = self._getOb(self.default_catalog) cat = zcat._catalog for idxname in ['id', 'getDeviceIp','getDeviceClassPath','getProdState','titleOrId']: cat.addIndex(idxname, makeCaseInsensitiveFieldIndex(idxname)) cat.addIndex('getPhysicalPath', makePathIndex('getPhysicalPath')) cat.addIndex('path', makeMultiPathIndex('path')) zcat.addColumn('getPrimaryId') zcat.addColumn('id') zcat.addColumn('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.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 cutover(self, dmd): idx = dmd.Devices.deviceSearch._catalog.indexes['path'] idx_parents = getattr(idx, '_index_parents', None) if idx_parents is None: dmd.Devices.deviceSearch.delIndex('path') dmd.Devices.deviceSearch._catalog.addIndex('path', makeMultiPathIndex('path')) # grab each device and manually reindex it log.info( 'Reindexing devices. This may take a while ...' ) for device in dmd.Devices.getSubDevices_recursive(): dmd.Devices.deviceSearch.catalog_object(device, idxs=('path',)) idx = dmd.searchRRDTemplates._catalog.indexes['getPhysicalPath'] if not idx.__class__.__name__=='ExtendedPathIndex': templates = dmd.searchRRDTemplates() dmd.searchRRDTemplates.delIndex('getPhysicalPath') dmd.searchRRDTemplates._catalog.addIndex('getPhysicalPath', makePathIndex('getPhysicalPath')) for template in templates: dmd.searchRRDTemplates.catalog_object(template.getObject(), idxs=('getPhysicalPath',))