def __init__(self, client, framework, destinationIpAddress, domainSuffix): self.client = client self.framework = framework self.destinationIpAddress = destinationIpAddress self.domainSuffix = domainSuffix baseDn = active_directory_utils.getBaseDnFromJobsParameters(self.framework) self.__adDaoService = active_directory_utils.LdapDaoService(client, baseDn) self.resolver = IpResolver(self.destinationIpAddress, self.framework) self.adSystemOsh = None self.forestOsh = None self.siteDnToOshMap = {} self.msmqServersList = []
class MsMqDiscoverer: def __init__(self, client, framework, destinationIpAddress, domainSuffix): self.client = client self.framework = framework self.destinationIpAddress = destinationIpAddress self.domainSuffix = domainSuffix baseDn = active_directory_utils.getBaseDnFromJobsParameters(self.framework) self.__adDaoService = active_directory_utils.LdapDaoService(client, baseDn) self.resolver = IpResolver(self.destinationIpAddress, self.framework) self.adSystemOsh = None self.forestOsh = None self.siteDnToOshMap = {} self.msmqServersList = [] def discover(self): self.discoverSitesAndForest() self.discoverServers() self.resolver.close() def discoverSitesAndForest(self): FIRST = 0 self.adSystemOsh = active_directory_utils.createAdSystemOsh() forestDiscoverer = active_directory_utils.AdForestDiscoverer(self.__adDaoService, self.adSystemOsh) vector = forestDiscoverer.discover() self.forestOsh = vector.get(FIRST) siteDiscoverer = active_directory_utils.AdSiteDiscoverer(self.__adDaoService, self.forestOsh) siteDiscoverer.discover() siteDtoToOshMap = siteDiscoverer.getResult().getMap() for [key, siteOsh ]in siteDtoToOshMap.items(): siteDn = key.id.value self.siteDnToOshMap[siteDn] = siteOsh def discoverServers(self): serverFilter = '(objectClass=server)' serverProperties = [PROPERTY_NAME, PROPERTY_DN] msmqFilter = '(objectClass=mSMQSettings)' msmqProperties = [PROPERTY_NAME] for siteDn in self.siteDnToOshMap.keys(): serverQuery = self.client.createQuery(siteDn, serverFilter, serverProperties).scope(Query.Scope.SUBTREE) serverResultSet = self.client.executeQuery(serverQuery) while serverResultSet.next(): serverName = serverResultSet.getString(PROPERTY_NAME) serverDn = serverResultSet.getString(PROPERTY_DN) if serverDn: msmqQuery = self.client.createQuery(serverDn, msmqFilter, msmqProperties).scope(Query.Scope.SUBTREE) msmqResultSet = self.client.executeQuery(msmqQuery) if msmqResultSet.next(): serverIp = self.__resolveServerIp(serverName) if serverIp: self.msmqServersList.append(MsMqServer(serverIp, siteDn)) def __resolveServerIp(self, serverName): serverIp = None if serverName: serverIp = self.resolver.resolveHostIp(serverName) if not serverIp and self.domainSuffix: serverIp = self.resolver.resolveHostIp(serverName + self.domainSuffix) return serverIp def addResultsToVector(self, resultsVector): if self.msmqServersList: resultsVector.add(self.forestOsh) for msmqServer in self.msmqServersList: msmqServer.build() msmqServer.addResultsToVector(resultsVector) siteDn = msmqServer.getSiteDn() msmqManagerOsh = msmqServer.getMsMqManagerOsh() siteOsh = self.siteDnToOshMap.get(siteDn) resultsVector.add(modeling.createLinkOSH('member', siteOsh, msmqManagerOsh)) resultsVector.add(siteOsh)