Ejemplo n.º 1
0
	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 = []
Ejemplo n.º 2
0
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)