def process(self, context):
        applicationComponent = context.application.getApplicationComponent()
        applicationOsh = context.application.getOsh()
        instance_name = self.resolveInstanceName(applicationComponent, context.application)
        if (instance_name is None) or (len(instance_name.strip()) == 0):
            applicationOsh.setObjectClass('application')
            logger.debug('Failed to identify instance name, creating software element instead of sqlserver strong type')
            return
        host_name = self.resolveHostName(applicationComponent, instance_name)
        logger.debug('host name is: %s' % host_name)
        if (host_name is None) or (len(host_name.strip()) == 0):
            applicationOsh.setObjectClass('application')
            logger.debug('Failed to identify host_name, creating software element instead of sqlserver strong type')
            return

        if instance_name == MSSQLServerInstancesPlugin.DEFAULT_SQL_INSTRANCE:
            logger.debug('Found default ms sql server instance, using host name')
            modeling.setAdditionalKeyAttribute(applicationOsh, 'database_dbsid', host_name.upper())
            self.handleMsClusteredInstance(context, applicationOsh)
        else:
            logger.debug('Found named instance ', instance_name)
            modeling.setAdditionalKeyAttribute(applicationOsh, 'database_dbsid', host_name.upper() + '\\' + instance_name)
            self.handleMsClusteredInstance(context, applicationOsh)
        applicationOsh.setStringAttribute('database_dbtype', 'sqlserver')
        buildNumber = None
        if self.__client.getClientType() == ClientsConsts.WMI_PROTOCOL_NAME:
            buildNumber = self.getBuildNumberFromRegByWmi(instance_name)
        else:
            buildNumber = self.getBuildNumberFromReg(instance_name)
        buildNumber = buildNumber and buildNumber.strip()
        if buildNumber:
            applicationOsh.setAttribute('build_number', buildNumber)
Пример #2
0
def createListenerOSH(hostOSH, listenedIPs, listenerName, listenerVersion):
    if listenerName:
        listenerOSH = modeling.createApplicationOSH('oracle_listener', 'TNS Listener', hostOSH, 'Database', 'oracle_corp')
        if listenedIPs:
            listenerOSH.setAttribute('listened_ips',listenedIPs)
        modeling.setAdditionalKeyAttribute(listenerOSH, 'listener_name', listenerName)
        if listenerVersion:
            listenerOSH.setAttribute('application_version', listenerVersion)
        return listenerOSH
    else:
        logger.error('Failed to create Listener OSH. Listener name is not specified.')
Пример #3
0
 def addOshToVector(self, resultVector):
     nlbNodeOSH = ObjectStateHolder('nlb_clustersoftware')
     nlbNodeOSH.setAttribute('vendor', 'microsoft_corp')
     nlbNodeOSH.setIntegerAttribute('host_priority', self.priority)
     nlbNodeOSH.setStringAttribute('cluster_mode_on_start', self.modeOnStart)
     nlbNodeOSH.setStringAttribute('data_name', 'NLB Cluster SW')
     clusterIp = self.nlbClusterOsh.getAttribute('cluster_ip_address').getValue()
     modeling.setAdditionalKeyAttribute(nlbNodeOSH, 'cluster_ip_address', clusterIp)
     resultVector.add(self.hostOSH)
     nlbNodeOSH.setContainer(self.hostOSH)
     if self.dedicatedIpOSH:
         resultVector.add(self.dedicatedIpOSH)
         resultVector.add(modeling.createLinkOSH('contained', self.hostOSH, self.dedicatedIpOSH))    
     resultVector.add(nlbNodeOSH)
     resultVector.add(modeling.createLinkOSH('member', self.nlbClusterOsh, nlbNodeOSH))
Пример #4
0
    def _reportIisTopology(self, result, discoverSharePointUrls = 0, reportIntermediateWebService = 1):
        """
        Adds IIS topology into vector.
        Reports: nt, iis, iisapppool, iiswebsite, ipserver, url
        ObjectStateHolderVector, bool->None
        """
        ipToIis = {}
        for ws in self._webServices:
            if ipToIis.has_key(ws.ip):
                iisHostOsh, iisOsh, iisWebService = ipToIis[ws.ip]
            else:
                iisHostOsh = modeling.createHostOSH(ws.ip, 'nt')
                #review>> why to build in report
                iisOsh = modeling.createWebServerOSH('Microsoft-IIS', 0, None, iisHostOsh, 0)
                if reportIntermediateWebService:
                    iisWebService = ObjectStateHolder('iiswebservice')
                    modeling.setAdditionalKeyAttribute(iisWebService, 'data_name', 'IIsWebService')
                    iisWebService.setContainer(iisOsh)
                    result.add(iisWebService)
                else:
                    iisWebService = iisOsh
                result.add(iisHostOsh)
                result.add(iisOsh)
                link = modeling.createLinkOSH('member', self._farm.osh, iisOsh)
                result.add(link)
                ipToIis[ws.ip] = (iisHostOsh, iisOsh, iisWebService)

            appPoolOshList = []
            for appPool in ws.applicationPoolNames:
                iisapppoolOsh = ObjectStateHolder('iisapppool')
                iisapppoolOsh.setAttribute('data_name', appPool)
                iisapppoolOsh.setContainer(iisOsh)
                result.add(iisapppoolOsh)
                appPoolOshList.append(iisapppoolOsh)
            for webApp in ws.webApplications:
                iiswebsiteOSH = ObjectStateHolder('iiswebsite')
                iiswebsiteOSH.setAttribute('data_name', webApp.name)
                iiswebsiteOSH.setContainer(iisWebService)
                result.add(iiswebsiteOSH)
                for iisapppoolOsh in appPoolOshList:
                    link = modeling.createLinkOSH('use', iiswebsiteOSH, iisapppoolOsh)
                    result.add(link)
                if (discoverSharePointUrls):
                    for site in webApp.siteNames:
                        urlOsh = modeling.createUrlOsh(iisHostOsh, site)
                        result.add(urlOsh)
                        link = modeling.createLinkOSH('contained', iiswebsiteOSH, urlOsh)
                        result.add(link)
Пример #5
0
    def process(self, context):
        applicationComponent = context.application.getApplicationComponent()
        applicationOsh = context.application.getOsh()
        instance_name = self.resolveInstanceName(applicationComponent,
                                                 context.application)
        if (instance_name is None) or (len(instance_name.strip()) == 0):
            applicationOsh.setObjectClass('application')
            logger.debug(
                'Failed to identify instance name, creating software element instead of sqlserver strong type'
            )
            return
        host_name = self.resolveHostName(applicationComponent, instance_name)
        logger.debug('host name is: %s' % host_name)
        if (host_name is None) or (len(host_name.strip()) == 0):
            applicationOsh.setObjectClass('application')
            logger.debug(
                'Failed to identify host_name, creating software element instead of sqlserver strong type'
            )
            return

        if instance_name == MSSQLServerInstancesPlugin.DEFAULT_SQL_INSTRANCE:
            logger.debug(
                'Found default ms sql server instance, using host name')
            modeling.setAdditionalKeyAttribute(applicationOsh,
                                               'database_dbsid',
                                               host_name.upper())
            self.handleMsClusteredInstance(context, applicationOsh)
        else:
            logger.debug('Found named instance ', instance_name)
            modeling.setAdditionalKeyAttribute(
                applicationOsh, 'database_dbsid',
                host_name.upper() + '\\' + instance_name)
            self.handleMsClusteredInstance(context, applicationOsh)
        applicationOsh.setStringAttribute('database_dbtype', 'sqlserver')
        buildNumber = None
        if self.__client.getClientType() == ClientsConsts.WMI_PROTOCOL_NAME:
            buildNumber = self.getBuildNumberFromRegByWmi(instance_name)
        else:
            buildNumber = self.getBuildNumberFromReg(instance_name)
        buildNumber = buildNumber and buildNumber.strip()
        if buildNumber:
            applicationOsh.setAttribute('build_number', buildNumber)
Пример #6
0
 def addOshToVector(self, resultVector):
     nlbNodeOSH = ObjectStateHolder('nlb_clustersoftware')
     nlbNodeOSH.setAttribute('vendor', 'microsoft_corp')
     nlbNodeOSH.setIntegerAttribute('host_priority', self.priority)
     nlbNodeOSH.setStringAttribute('cluster_mode_on_start',
                                   self.modeOnStart)
     nlbNodeOSH.setStringAttribute('data_name', 'NLB Cluster SW')
     clusterIp = self.nlbClusterOsh.getAttribute(
         'cluster_ip_address').getValue()
     modeling.setAdditionalKeyAttribute(nlbNodeOSH, 'cluster_ip_address',
                                        clusterIp)
     resultVector.add(self.hostOSH)
     nlbNodeOSH.setContainer(self.hostOSH)
     if self.dedicatedIpOSH:
         resultVector.add(self.dedicatedIpOSH)
         resultVector.add(
             modeling.createLinkOSH('contained', self.hostOSH,
                                    self.dedicatedIpOSH))
     resultVector.add(nlbNodeOSH)
     resultVector.add(
         modeling.createLinkOSH('member', self.nlbClusterOsh, nlbNodeOSH))