def __init__(self, host, port, user, passwd, retries=10):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.ssh = paramiko.SSHClient()
        self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        self.logger = logging.getLogger('sshClient')
        ch = logging.StreamHandler()
        ch.setLevel(logging.DEBUG)
        self.logger.addHandler(ch)

        retry_count = retries
        while True:
            try:
                self.ssh.connect(str(host), int(port), user, passwd)
                self.logger.debug(
                    "connecting to server %s with user %s passwd %s" %
                    (str(host), user, passwd))
            except paramiko.SSHException, sshex:
                if retry_count == 0:
                    raise cloudstackException.InvalidParameterException(
                        repr(sshex))
                retry_count = retry_count - 1
                time.sleep(5)
            except paramiko.AuthenticationException, authEx:
                raise cloudstackException.InvalidParameterException(
                    "Invalid credentials to login to %s on port %s" %
                    (str(host), port))
Пример #2
0
 def executeSqlFromFile(self, fileName=None):
     if fileName is None:
         raise cloudstackException.InvalidParameterException("file can't not none")
     
     if not os.path.exists(fileName):
         raise cloudstackException.InvalidParameterException("%s not exists"%fileName)
     
     sqls = open(fileName, "r").read()
     return self.execute(sqls)
Пример #3
0
    def __init__(self,
                 host,
                 port,
                 user,
                 passwd,
                 retries=10,
                 log_lvl=logging.INFO,
                 keyPairFileLocation=None):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.keyPairFile = keyPairFileLocation
        self.ssh = paramiko.SSHClient()
        self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        self.logger = logging.getLogger('sshClient')
        ch = logging.StreamHandler()
        ch.setLevel(log_lvl)
        self.logger.addHandler(ch)

        retry_count = retries
        while True:
            try:
                if keyPairFileLocation == None:
                    self.ssh.connect(str(host), int(port), user, passwd)
                    self.logger.debug("SSH connect: %s@%s with passwd %s" %
                                      (user, str(host), passwd))
                else:
                    self.ssh.connect(hostname=str(host),
                                     port=int(port),
                                     username=str(user),
                                     key_filename=str(keyPairFileLocation),
                                     look_for_keys=False)
                    self.logger.debug(
                        "connecting to server %s with user %s key %s" %
                        (str(host), user, keyPairFileLocation))
                    self.logger.debug("SSH connect: %s@%s with passwd %s" %
                                      (user, str(host), passwd))
            except paramiko.SSHException, sshex:
                if retry_count == 0:
                    raise cloudstackException.InvalidParameterException(
                        repr(sshex))
                retry_count = retry_count - 1
                time.sleep(5)
            except paramiko.AuthenticationException, authEx:
                raise cloudstackException.InvalidParameterException(
                    "Invalid credentials to login to %s on port %s" %
                    (str(host), port))
Пример #4
0
    def loadCfg(self):
        try:
            self.config = configGenerator.get_setup_config(self.configFile)
        except:
            raise cloudstackException.InvalidParameterException(
                "Failed to load config %s" % self.configFile)

        mgt = self.config.mgtSvr[0]

        loggers = self.config.logger
        testClientLogFile = None
        self.testCaseLogFile = None
        self.testResultLogFile = None
        if loggers is not None and len(loggers) > 0:
            for log in loggers:
                if log.name == "TestClient":
                    testClientLogFile = log.file
                elif log.name == "TestCase":
                    self.testCaseLogFile = log.file
                elif log.name == "TestResult":
                    self.testResultLogFile = log.file

        testClientLogger = None
        if testClientLogFile is not None:
            testClientLogger = logging.getLogger("testclient.testengine.run")
            fh = logging.FileHandler(testClientLogFile)
            fh.setFormatter(
                logging.Formatter("%(asctime)s - %(levelname)s - %(name)s\
 - %(message)s"))
            testClientLogger.addHandler(fh)
            testClientLogger.setLevel(logging.INFO)
        self.testClientLogger = testClientLogger

        self.testClient = \
            cloudstackTestClient.\
            cloudstackTestClient(mgt.mgtSvrIp, mgt.port, mgt.user, mgt.passwd,
                                 mgt.apiKey, mgt.securityKey,
                                 logging=self.testClientLogger)
        if mgt.apiKey is None:
            apiKey, securityKey = self.registerApiKey()
            self.testClient = cloudstackTestClient.cloudstackTestClient(
                mgt.mgtSvrIp,
                8080,
                mgt.user,
                mgt.passwd,
                apiKey,
                securityKey,
                logging=self.testClientLogger)
        """config database"""
        dbSvr = self.config.dbSvr
        if dbSvr is not None:
            self.testClient.dbConfigure(dbSvr.dbSvr, dbSvr.port, dbSvr.user,
                                        dbSvr.passwd, dbSvr.db)

        self.apiClient = self.testClient.getApiClient()
        """set hypervisor"""
        if mgt.hypervisor:
            self.apiClient.hypervisor = mgt.hypervisor
        else:
            self.apiClient.hypervisor = "XenServer"  # Defaults to Xenserver
Пример #5
0
    def loadCfg(self):
        try:
            self.config = configGenerator.getSetupConfig(self.configFile)
        except:
            raise cloudstackException.InvalidParameterException(
                "Failed to load config %s" % self.configFile)
        ''' Retrieving Management Server Connection Details '''
        mgtDetails = self.config.mgtSvr[0]
        ''' Retrieving Database Connection Details'''
        dbSvrDetails = self.config.dbSvr
        loggers = self.config.logger
        testClientLogFile = None
        self.testCaseLogFile = None
        self.testResultLogFile = None
        if loggers is not None and len(loggers) > 0:
            for log in loggers:
                if log.name == "TestClient":
                    testClientLogFile = log.file
                elif log.name == "TestCase":
                    self.testCaseLogFile = log.file
                elif log.name == "TestResult":
                    self.testResultLogFile = log.file

        testClientLogger = None
        if testClientLogFile is not None:
            testClientLogger = logging.getLogger("testclient.testengine.run")
            fh = logging.FileHandler(testClientLogFile)
            fh.setFormatter(
                logging.Formatter(
                    "%(asctime)s - %(levelname)s - %(name)s\ - %(message)s"))
            testClientLogger.addHandler(fh)
            testClientLogger.setLevel(logging.INFO)
        self.testClientLogger = testClientLogger

        self.testClient = \
            cloudstackTestClient.\
            cloudstackTestClient(mgtDetails,
                                 dbSvrDetails,
                                 logging=self.testClientLogger)

        if mgtDetails.apiKey is None:
            mgtDetails.apiKey, mgtDetails.securityKey = self.registerApiKey()
            mgtDetails.port = 8080
            self.testClient = \
                cloudstackTestClient.cloudstackTestClient(
                    mgtDetails,
                    dbSvrDetails,
                    logging=
                    self.testClientLogger)

        self.apiClient = self.testClient.getApiClient()
        """set hypervisor"""
        if mgtDetails.hypervisor:
            self.apiClient.hypervisor = mgtDetails.hypervisor
        else:
            self.apiClient.hypervisor = "XenServer"  # Defaults to Xenserver
Пример #6
0
    def __init__(self, host, port, user, passwd, retries = 10):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.ssh = paramiko.SSHClient()
        self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

        retry_count = retries
        while True:
            try:
                self.ssh.connect(str(host),int(port), user, passwd)
            except paramiko.SSHException, sshex:
                if retry_count == 0:
                    raise cloudstackException.InvalidParameterException(repr(sshex))
                retry_count = retry_count - 1
                time.sleep(5)
            except paramiko.AuthenticationException, authEx:
                raise cloudstackException.InvalidParameterException("Invalid credentials to login to %s on port %s"%(str(host), port))
Пример #7
0
 def __init__(self, host, port, user, passwd):
     self.host = host
     self.port = port
     self.user = user
     self.passwd = passwd
     self.ssh = paramiko.SSHClient()
     self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
     try:
         self.ssh.connect(str(host), int(port), user, passwd)
     except paramiko.SSHException, sshex:
         raise cloudstackException.InvalidParameterException(repr(sshex))
Пример #8
0
    def __init__(self,
                 host="localhost",
                 port=3306,
                 user='******',
                 passwd='cloud',
                 db='cloud'):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.database = db

        try:
            self.db = pymysql.Connect(host=host,
                                      port=port,
                                      user=user,
                                      passwd=passwd,
                                      db=db)
        except:
            traceback.print_exc()
            raise cloudstackException.InvalidParameterException(sys.exc_info())
Пример #9
0
    def configureProviders(self, phynetwrk, providers):
        """
        We will enable the virtualrouter elements for all zones. Other providers 
        like NetScalers, SRX, etc are explicitly added/configured
        """

        for provider in providers:
            pnetprov = listNetworkServiceProviders.listNetworkServiceProvidersCmd(
            )
            pnetprov.physicalnetworkid = phynetwrk.id
            pnetprov.state = "Disabled"
            pnetprov.name = provider.name
            pnetprovres = self.apiClient.listNetworkServiceProviders(pnetprov)

            if pnetprovres and len(pnetprovres) > 0:
                if provider.name == 'VirtualRouter'\
                   or provider.name == 'VpcVirtualRouter':
                    vrprov = listVirtualRouterElements.listVirtualRouterElementsCmd(
                    )
                    vrprov.nspid = pnetprovres[0].id
                    vrprovresponse = self.apiClient.listVirtualRouterElements(
                        vrprov)
                    vrprovid = vrprovresponse[0].id

                    vrconfig = \
                    configureVirtualRouterElement.configureVirtualRouterElementCmd()
                    vrconfig.enabled = "true"
                    vrconfig.id = vrprovid
                    self.apiClient.configureVirtualRouterElement(vrconfig)
                    self.enableProvider(pnetprovres[0].id)
                elif provider.name == 'SecurityGroupProvider':
                    self.enableProvider(pnetprovres[0].id)
            elif provider.name in ['Netscaler', 'JuniperSRX', 'F5BigIp']:
                netprov = addNetworkServiceProvider.addNetworkServiceProviderCmd(
                )
                netprov.name = provider.name
                netprov.physicalnetworkid = phynetwrk.id
                result = self.apiClient.addNetworkServiceProvider(netprov)
                for device in provider.devices:
                    if provider.name == 'Netscaler':
                        dev = addNetscalerLoadBalancer.addNetscalerLoadBalancerCmd(
                        )
                        dev.username = device.username
                        dev.password = device.password
                        dev.networkdevicetype = device.networkdevicetype
                        dev.url = configGenerator.getDeviceUrl(device)
                        dev.physicalnetworkid = phynetwrk.id
                        self.apiClient.addNetscalerLoadBalancer(dev)
                    elif provider.name == 'JuniperSRX':
                        dev = addSrxFirewall.addSrxFirewallCmd()
                        dev.username = device.username
                        dev.password = device.password
                        dev.networkdevicetype = device.networkdevicetype
                        dev.url = configGenerator.getDeviceUrl(device)
                        dev.physicalnetworkid = phynetwrk.id
                        self.apiClient.addSrxFirewall(dev)
                    elif provider.name == 'F5BigIp':
                        dev = addF5LoadBalancer.addF5LoadBalancerCmd()
                        dev.username = device.username
                        dev.password = device.password
                        dev.networkdevicetype = device.networkdevicetype
                        dev.url = configGenerator.getDeviceUrl(device)
                        dev.physicalnetworkid = phynetwrk.id
                        self.apiClient.addF5LoadBalancer(dev)
                    else:
                        raise cloudstackException.InvalidParameterException(
                            "Device %s doesn't match any know provider type" %
                            device)
                self.enableProvider(result.id)