def discover(self, firstSuccessful=1): if not self.contextsMap: raise ValueError("No connection configurations were found") for contextsByCredentialsMap in self.contextsMap.values(): for contextList in contextsByCredentialsMap.values(): for context in contextList: try: client = self._connectByContext(context) try: self._fillInSuccessContext(client, context) logger.debug("Connected to VMware server, type %s, version %s, client type %s" % (context.apiType, context.apiVersion, context.clientType)) self.connectionHandler.onConnection(context) if firstSuccessful: return finally: if client: client.close() except AxisFault, axisFault: faultType = _vmware_vim_base.getFaultType(axisFault) if faultType == AxisFaultType.INVALID_LOGIN: msg = errormessages.makeErrorMessage(_vmware_vim_base.VimProtocol.DISPLAY, None, errormessages.ERROR_INVALID_USERNAME_PASSWORD) logger.debug(msg) context.errors.append(msg) else: msg = None if faultType == AxisFaultType.NO_PERMISSION: priviledgeId = axisFault.getPrivilegeId() msg = "User does not have required '%s' permission" % priviledgeId logger.debug(msg) else: msg = axisFault.getFaultString() dump = axisFault.dumpToString() logger.debug(dump) errormessages.resolveAndAddToCollections(msg, _vmware_vim_base.VimProtocol.DISPLAY, context.warnings, context.errors) self.connectionHandler.onFailure(context) except JavaException, ex: msg = ex.getMessage() logger.debug(msg) errormessages.resolveAndAddToCollections(msg, _vmware_vim_base.VimProtocol.DISPLAY, context.warnings, context.errors) self.connectionHandler.onFailure(context) except: msg = logger.prepareJythonStackTrace('')
def onConnection(self, context): if self.discoveryFunction is None: raise ValueError("discoveryFunction is not set") self.connected = 1 try: vector = self.discoveryFunction(context, self.framework) if vector is not None: logger.debug(" -- Sending vector of %s objects" % vector.size()) if self._logVector: logger.debug(vector.toXmlString()) self.framework.sendObjects(vector) self.framework.flushObjects() except AxisFault, axisFault: faultType = _vmware_vim_base.getFaultType(axisFault) if faultType == AxisFaultType.INVALID_LOGIN: msg = errormessages.makeErrorMessage(_vmware_vim_base.VimProtocol.DISPLAY, None, errormessages.ERROR_INVALID_USERNAME_PASSWORD) logger.debug(msg) self.framework.reportError(msg) else: msg = None if faultType == AxisFaultType.NO_PERMISSION: priviledgeId = axisFault.getPrivilegeId() msg = "User does not have required '%s' permission" % priviledgeId else: msg = axisFault.dumpToString() logger.debug(msg) errormessages.resolveAndReport(msg, _vmware_vim_base.VimProtocol.DISPLAY, self.framework)
def DiscoveryMain(Framework): OSHVResult = ObjectStateHolderVector() urlString = Framework.getDestinationAttribute(PARAM_SERVER_URL) credentialsId = Framework.getDestinationAttribute(PARAM_CREDENTIALS_ID) #ipAddress = Framework.getDestinationAttribute(PARAM_IP_ADDRESS) client = None try: try: clientFactory = vmware_vim.ClientFactory(Framework, urlString, credentialsId) client = clientFactory.createClient() if client is not None: agent = client.getAgent() apiVersion = vmware_vim.getApiVersion(agent) logger.debug("Target API version: %s" % apiVersion) apiType = vmware_vim.getApiType(agent) logger.debug("Target API type: %s" % apiType) logger.debug("Client type: %s" % agent.getClientType()) crossClientHelper = vmware_vim.getCrossClientHelper(agent) module = vmware_vim.getVmwareModuleByApiVersion(apiVersion) config = vmware_vim.GlobalConfig(Framework) licensingDiscoverer = module.getLicensingDiscoverer( agent, crossClientHelper, Framework) licensingReporter = module.getLicensingReporter( crossClientHelper, Framework) topologyDiscoverer = module.getTopologyDiscoverer( agent, apiType, crossClientHelper, Framework, config) topologyDiscoverer.setLicensingDiscoverer(licensingDiscoverer) topologyReporter = module.getTopologyReporter( apiType, crossClientHelper, Framework, config) topologyReporter.setLicensingReporter(licensingReporter) topologyListener = _vmware_vim_base.EsxReportingTopologyListener( Framework) topologyListener.setTopologyReporter(topologyReporter) topologyDiscoverer.setTopologyListener(topologyListener) topologyDiscoverer.discover() else: raise ValueError, "Failed to connect to VMware ESX Server" except AxisFault, axisFault: faultType = _vmware_vim_base.getFaultType(axisFault) if faultType == 'InvalidLogin': msg = errormessages.makeErrorMessage( _vmware_vim_base.VimProtocol.DISPLAY, None, errormessages.ERROR_INVALID_USERNAME_PASSWORD) logger.debug(msg) Framework.reportError(msg) elif faultType == 'NoPermission': priviledgeId = axisFault.getPrivilegeId() msg = "User does not have required '%s' permission" % priviledgeId logger.debug(msg) errormessages.resolveAndReport( msg, _vmware_vim_base.VimProtocol.DISPLAY, Framework) else: msg = axisFault.dumpToString() logger.debug(msg) errormessages.resolveAndReport( msg, _vmware_vim_base.VimProtocol.DISPLAY, Framework) except Exception, ex: msg = ex.getMessage() logger.debug(msg) errormessages.resolveAndReport( msg, _vmware_vim_base.VimProtocol.DISPLAY, Framework)
def DiscoveryMain(Framework): urlString = Framework.getDestinationAttribute(PARAM_SERVER_URL) credentialsId = Framework.getDestinationAttribute(PARAM_CREDENTIALS_ID) connectionRetryNumber = Framework.getParameter(PARAM_CONNECTION_RETRY_NUMBER) continuousMonitoring = Framework.getParameter(PARAM_EVENT_BASED_DISCOVERY_ENABLED) historyHours = Framework.getParameter(PARAM_HYSTORY_HOURS) isJobMonitoringSupported = _vmware_vim_base.isJobStateMonitoringSupported(Framework) if not isJobMonitoringSupported: Framework.reportWarning('You are running job on UCMDB 8.03 or earlier, it cannot be gracefully stopped, only by restarting the probe.') try: client = None try: clientFactory = vmware_vim.ClientFactory(Framework, urlString, credentialsId) client = clientFactory.createClient() if client: agent = client.getAgent() apiVersion = vmware_vim.getApiVersion(agent) logger.debug("Target API version: %s" % apiVersion) logger.debug("Client type: %s" % agent.getClientType()) crossClientHelper = vmware_vim.getCrossClientHelper(agent) module = vmware_vim.getVmwareModuleByApiVersion(apiVersion) monitor = module.getEventMonitor(agent, crossClientHelper, Framework) monitor.setContinuousMonitoring(continuousMonitoring) monitor.setHistoryHours(historyHours) monitor.setRetryNumber(connectionRetryNumber) #monitor.setPageSize(5) #monitor.setFilterRecreationIntervalMinutes(5) vmMigratedEventListener = module.getVmMigratedEventListener(agent, crossClientHelper) vmMigratedEventReporter = module.getVmMigratedEventReporter(crossClientHelper, Framework) vmMigratedEventListener._addReporter(vmMigratedEventReporter) monitor.addListener(vmMigratedEventListener) vmPoweredOnEventListener = module.getVmPoweredOnEventListener(agent, crossClientHelper) vmPoweredOnEventReporter = module.getVmPoweredOnEventReporter(crossClientHelper, Framework) vmPoweredOnEventListener._addReporter(vmPoweredOnEventReporter) monitor.addListener(vmPoweredOnEventListener) if isJobMonitoringSupported: jobMonitoringTask = _vmware_vim_base.JobStateCheckTask(monitor, Framework) jobMonitoringThread = Thread(jobMonitoringTask) jobMonitoringThread.start() monitor.start() finally: client and client.close() except AxisFault, axisFault: faultType = _vmware_vim_base.getFaultType(axisFault) if faultType == 'InvalidLogin': msg = errormessages.makeErrorMessage(_vmware_vim_base.VimProtocol.DISPLAY, None, errormessages.ERROR_INVALID_USERNAME_PASSWORD) logger.debug(msg) Framework.reportError(msg) elif faultType == 'NoPermission': priviledgeId = axisFault.getPrivilegeId() msg = "User does not have required '%s' permission" % priviledgeId logger.debug(msg) errormessages.resolveAndReport(msg, _vmware_vim_base.VimProtocol.DISPLAY, Framework) else: msg = axisFault.dumpToString() logger.debug(msg) errormessages.resolveAndReport(msg, _vmware_vim_base.VimProtocol.DISPLAY, Framework)
def DiscoveryMain(Framework): urlString = Framework.getDestinationAttribute(PARAM_SERVER_URL) credentialsId = Framework.getDestinationAttribute(PARAM_CREDENTIALS_ID) connectionRetryNumber = Framework.getParameter( PARAM_CONNECTION_RETRY_NUMBER) continuousMonitoring = Framework.getParameter( PARAM_EVENT_BASED_DISCOVERY_ENABLED) historyHours = Framework.getParameter(PARAM_HYSTORY_HOURS) isJobMonitoringSupported = _vmware_vim_base.isJobStateMonitoringSupported( Framework) if not isJobMonitoringSupported: Framework.reportWarning( 'You are running job on UCMDB 8.03 or earlier, it cannot be gracefully stopped, only by restarting the probe.' ) try: client = None try: clientFactory = vmware_vim.ClientFactory(Framework, urlString, credentialsId) client = clientFactory.createClient() if client: agent = client.getAgent() apiVersion = vmware_vim.getApiVersion(agent) logger.debug("Target API version: %s" % apiVersion) logger.debug("Client type: %s" % agent.getClientType()) crossClientHelper = vmware_vim.getCrossClientHelper(agent) module = vmware_vim.getVmwareModuleByApiVersion(apiVersion) monitor = module.getEventMonitor(agent, crossClientHelper, Framework) monitor.setContinuousMonitoring(continuousMonitoring) monitor.setHistoryHours(historyHours) monitor.setRetryNumber(connectionRetryNumber) #monitor.setPageSize(5) #monitor.setFilterRecreationIntervalMinutes(5) vmMigratedEventListener = module.getVmMigratedEventListener( agent, crossClientHelper) vmMigratedEventReporter = module.getVmMigratedEventReporter( crossClientHelper, Framework) vmMigratedEventListener._addReporter(vmMigratedEventReporter) monitor.addListener(vmMigratedEventListener) vmPoweredOnEventListener = module.getVmPoweredOnEventListener( agent, crossClientHelper) vmPoweredOnEventReporter = module.getVmPoweredOnEventReporter( crossClientHelper, Framework) vmPoweredOnEventListener._addReporter(vmPoweredOnEventReporter) monitor.addListener(vmPoweredOnEventListener) if isJobMonitoringSupported: jobMonitoringTask = _vmware_vim_base.JobStateCheckTask( monitor, Framework) jobMonitoringThread = Thread(jobMonitoringTask) jobMonitoringThread.start() monitor.start() finally: client and client.close() except AxisFault, axisFault: faultType = _vmware_vim_base.getFaultType(axisFault) if faultType == 'InvalidLogin': msg = errormessages.makeErrorMessage( _vmware_vim_base.VimProtocol.DISPLAY, None, errormessages.ERROR_INVALID_USERNAME_PASSWORD) logger.debug(msg) Framework.reportError(msg) elif faultType == 'NoPermission': priviledgeId = axisFault.getPrivilegeId() msg = "User does not have required '%s' permission" % priviledgeId logger.debug(msg) errormessages.resolveAndReport( msg, _vmware_vim_base.VimProtocol.DISPLAY, Framework) else: msg = axisFault.dumpToString() logger.debug(msg) errormessages.resolveAndReport( msg, _vmware_vim_base.VimProtocol.DISPLAY, Framework)
def DiscoveryMain(Framework): OSHVResult = ObjectStateHolderVector() urlString = Framework.getDestinationAttribute(PARAM_SERVER_URL) credentialsId = Framework.getDestinationAttribute(PARAM_CREDENTIALS_ID) #ipAddress = Framework.getDestinationAttribute(PARAM_IP_ADDRESS) client = None try: try: clientFactory = vmware_vim.ClientFactory(Framework, urlString, credentialsId) client = clientFactory.createClient() if client is not None: agent = client.getAgent() apiVersion = vmware_vim.getApiVersion(agent) logger.debug("Target API version: %s" % apiVersion) apiType = vmware_vim.getApiType(agent) logger.debug("Target API type: %s" % apiType) logger.debug("Client type: %s" % agent.getClientType()) crossClientHelper = vmware_vim.getCrossClientHelper(agent) module = vmware_vim.getVmwareModuleByApiVersion(apiVersion) config = vmware_vim.GlobalConfig(Framework) licensingDiscoverer = module.getLicensingDiscoverer(agent, crossClientHelper, Framework) licensingReporter = module.getLicensingReporter(crossClientHelper, Framework) topologyDiscoverer = module.getTopologyDiscoverer(agent, apiType, crossClientHelper, Framework, config) topologyDiscoverer.setLicensingDiscoverer(licensingDiscoverer) topologyReporter = module.getTopologyReporter(apiType, crossClientHelper, Framework, config) topologyReporter.setLicensingReporter(licensingReporter) topologyListener = _vmware_vim_base.EsxReportingTopologyListener(Framework) topologyListener.setTopologyReporter(topologyReporter) topologyDiscoverer.setTopologyListener(topologyListener) topologyDiscoverer.discover() else: raise ValueError, "Failed to connect to VMware ESX Server" except AxisFault, axisFault: faultType = _vmware_vim_base.getFaultType(axisFault) if faultType == 'InvalidLogin': msg = errormessages.makeErrorMessage(_vmware_vim_base.VimProtocol.DISPLAY, None, errormessages.ERROR_INVALID_USERNAME_PASSWORD) logger.debug(msg) Framework.reportError(msg) elif faultType == 'NoPermission': priviledgeId = axisFault.getPrivilegeId() msg = "User does not have required '%s' permission" % priviledgeId logger.debug(msg) errormessages.resolveAndReport(msg, _vmware_vim_base.VimProtocol.DISPLAY, Framework) else: msg = axisFault.dumpToString() logger.debug(msg) errormessages.resolveAndReport(msg, _vmware_vim_base.VimProtocol.DISPLAY, Framework) except Exception, ex: msg = ex.getMessage() logger.debug(msg) errormessages.resolveAndReport(msg, _vmware_vim_base.VimProtocol.DISPLAY, Framework)