コード例 #1
0
ファイル: vmware_vim.py プロジェクト: deezeesms/dd-git
    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('')
コード例 #2
0
ファイル: vmware_vim.py プロジェクト: deezeesms/dd-git
    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)
コード例 #3
0
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)
コード例 #4
0
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)
コード例 #5
0
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)
コード例 #6
0
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)