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))
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)
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))
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
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
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))
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))
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())
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)