def DiscoveryMain(Framework): OSHVResult = ObjectStateHolderVector() exchangeServerId = Framework.getDestinationAttribute('id') exchangeServerOsh = ms_exchange_utils.restoreExchangeServerOSH(exchangeServerId) try: shellClient = Framework.createClient() client = PowerShellClient(shellClient, Framework) try: ExchangeServer = client.executeScenario("Exchange_Server_2007_Discovery.ps1") exchangeSystemName = extractOrganizationNameFromDn(ExchangeServer.ExchangeLegacyDN) exchangeSystemOsh = ObjectStateHolder('exchangesystem') exchangeSystemOsh.setAttribute('data_name', exchangeSystemName) modeling.setAppSystemVendor(exchangeSystemOsh) OSHVResult.add(exchangeSystemOsh) OSHVResult.add(modeling.createLinkOSH('member', exchangeSystemOsh, exchangeServerOsh)) adminGroupName = extractAdminGrouptFromDn(ExchangeServer.ExchangeLegacyDN) if adminGroupName and exchangeSystemOsh: adminGroupOsh = ObjectStateHolder('exchange_administrative_group') adminGroupOsh.setAttribute('data_name' , adminGroupName) adminGroupOsh.setContainer(exchangeSystemOsh) OSHVResult.add(adminGroupOsh) OSHVResult.add(modeling.createLinkOSH('member', adminGroupOsh, exchangeServerOsh)) createServerRoles(exchangeServerOsh, ExchangeServer.ServerRole, OSHVResult) dagList = [] clusteredMailBox = None try: dagList = ExchangeServer.dagList if not dagList: raise ValueError('Failed getting DAG information') except: logger.debugException('') else: OSHVResult.addAll(TopologyBuilder(None, None, None, None).buildDagRelatedTopology(exchangeServerOsh, dagList)) try: clusteredMailBox = ExchangeServer.clusteredMailBox if not clusteredMailBox: raise ValueError('Failed getting Clustered Mailbox') except: logger.debugException('') else: setattr(clusteredMailBox, "exchOrgName", exchangeSystemName) OSHVResult.addAll(TopologyBuilder(None, None, None, None).buildClusteredMailBoxRelatedTopology(exchangeServerOsh, clusteredMailBox)) OSHVResult.add(exchangeServerOsh) finally: client.close() except Exception, ex: logger.debugException('') strException = str(ex.getMessage()) errormessages.resolveAndReport(strException, PROTOCOL_NAME, Framework)
def DiscoveryMain(Framework): OSHVResult = ObjectStateHolderVector() exchangeServerId = Framework.getDestinationAttribute('id') fqdn = Framework.getDestinationAttribute('fqdn') hostName = getHostName(Framework) exchangeServerOsh = ms_exchange_utils.restoreExchangeServerOSH( exchangeServerId) props = Properties() props.put(AgentConstants.PROP_WMI_NAMESPACE, WMI_NAMESPACE) try: wmiClient = Framework.createClient(props) wmiAgent = WmiAgent(wmiClient, Framework) try: exchangeDiscoverer = ExchangeDiscoverer(wmiAgent, exchangeServerOsh, Framework, OSHVResult, hostName) try: exchangeDiscoverer.doExchangeSystem(fqdn) exchangeDiscoverer.doFolderTrees() except: errorMsg = 'Failed to discover folder trees and public folders' logger.warnException(errorMsg) errobj = errorobject.createError( errorcodes.FAILED_DISCOVERING_RESOURCE, ['folder trees and public folders'], errorMsg) logger.reportWarningObject(errobj) if not exchangeDiscoverer.objectsDiscovered: errobj = errorobject.createError( errorcodes.MS_EXCHANGE_OBJECTS_NOT_FOUND, None, 'Microsoft Exchange objects not found in discovery') logger.reportErrorObject(errobj) finally: wmiClient.close() except: exInfo = logger.prepareJythonStackTrace('') errormessages.resolveAndReport(exInfo, WMI_PROTOCOL, Framework) return OSHVResult
def DiscoveryMain(Framework): OSHVResult = ObjectStateHolderVector() exchangeServerId = Framework.getDestinationAttribute('id') exchangeServerOsh = ms_exchange_utils.restoreExchangeServerOSH( exchangeServerId) try: shellClient = Framework.createClient() client = PowerShellClient(shellClient, Framework) try: ExchangeServer = client.executeScenario( "Exchange_Server_2007_Discovery.ps1") exchangeSystemName = extractOrganizationNameFromDn( ExchangeServer.ExchangeLegacyDN) exchangeSystemOsh = ObjectStateHolder('exchangesystem') exchangeSystemOsh.setAttribute('data_name', exchangeSystemName) modeling.setAppSystemVendor(exchangeSystemOsh) OSHVResult.add(exchangeSystemOsh) OSHVResult.add( modeling.createLinkOSH('member', exchangeSystemOsh, exchangeServerOsh)) adminGroupName = extractAdminGrouptFromDn( ExchangeServer.ExchangeLegacyDN) if adminGroupName and exchangeSystemOsh: adminGroupOsh = ObjectStateHolder( 'exchange_administrative_group') adminGroupOsh.setAttribute('data_name', adminGroupName) adminGroupOsh.setContainer(exchangeSystemOsh) OSHVResult.add(adminGroupOsh) OSHVResult.add( modeling.createLinkOSH('member', adminGroupOsh, exchangeServerOsh)) createServerRoles(exchangeServerOsh, ExchangeServer.ServerRole, OSHVResult) dagList = [] clusteredMailBox = None try: dagList = ExchangeServer.dagList if not dagList: raise ValueError('Failed getting DAG information') except: logger.debugException('') else: OSHVResult.addAll( TopologyBuilder(None, None, None, None).buildDagRelatedTopology( exchangeServerOsh, dagList)) try: clusteredMailBox = ExchangeServer.clusteredMailBox if not clusteredMailBox: raise ValueError('Failed getting Clustered Mailbox') except: logger.debugException('') else: setattr(clusteredMailBox, "exchOrgName", exchangeSystemName) OSHVResult.addAll( TopologyBuilder(None, None, None, None).buildClusteredMailBoxRelatedTopology( exchangeServerOsh, clusteredMailBox)) OSHVResult.add(exchangeServerOsh) finally: client.close() except Exception, ex: logger.debugException('') strException = str(ex.getMessage()) errormessages.resolveAndReport(strException, PROTOCOL_NAME, Framework)