def deployDAnsx(osc, da): Log.log_info("deployDA -- daname(type=%s): %s" % (type(da.daname), Log.pformat(da.daname))) if not isinstance(da.daname, str): Log.log_abort("deployDA -- daname: %s" % (da.daname)) pass da_dict = datastructUtils.get_obj_dict(da) Log.log_info("daTests.deployDA -- DA:\n%s" % (Log.pformat(da_dict))) osc.deployAppliance(daid, cluster, datastore, portgrgroup, ippool)
def datest_update_n1(osc=None, da=None, daid=None): test_name = "Openstack DA Test Cases 'Update DA' -- Update Openstack DA -- Positive Tests with Supported SDN Controllers" test_funcname = "datest_tab1_update_n1" test_tags = [ 'openstack', 'da', 'update_da', 'sdn_controller', 'sdn', 'positive' ] test_desc = "Verify Virtualization Connectors Can Be Updated With Any Valid SDN Controller Type (Currently 'NONE' and 'NSC')" test_is_positive = True test_step = 0 test_err_count = 0 #fail_on_error = True fail_on_error = False ##da.controllerType = "NSC" da.controllerType = "NONE" err_info = None Log.testBegin(test_name, test_funcname, test_desc, test_is_positive) daname = 'da-sdn-test' ##valid_sdn_controller_types = ['NONE', 'NSC'] valid_sdn_controller_types = ['NONE'] Log.log_info( "%s:Step %d\n -- Openstack VC Supported SDN Controller Types List[len=%d] - %s" % (test_funcname, test_step, len(valid_sdn_controller_types), valid_sdn_controller_types)) ##### da = copy.deepcopy(da) da_dict = datastructUtils.get_obj_dict(da) Log.log_info( "%s:Step %d\n -- Create (valid) base VC for 'update' testing:\n%s" % (test_funcname, test_step, Log.pformat(da_dict))) daid_to_update = updateDA(osc, da, daid) if not daid: Log.log_abort( "%s:Step %d\n -- Failed to create base VC for 'update' testing:\n%s" % (test_funcname, test_step, Log.pformat(da_dict))) pass da.update_daid = daid Log.log_info( "%s:Step %d\n -- Openstack VC w/Valid SDN Controller Type Test Finished" % (test_funcname, test_step)) if test_err_count: Log.log_error("Exit Test %s -- Found %d Errors\n -- Err Info:\n%s" % (test_funcname, test_err_count, err_info)) else: Log.log_info("Exit Test %s -- All Tests Passed" % (test_funcname)) pass Log.testEnd(test_name, test_funcname, test_desc, test_step, test_err_count)
def deployDAostk(osc, daid): global Log Log.log_info("deployDA -- daname(type=%s): %s" % (type(da.daname), Log.pformat(da.daname))) if not isinstance(da.daname, str): Log.log_abort("deployDA -- daname: %s" % (da.daname)) pass da_dict = datastructUtils.get_obj_dict(da) Log.log_info("daTests.deployDA -- DA:\n%s" % (Log.pformat(da_dict))) #osc.deployOStackAppliance(daid, projectId, project, region, managementNetwork, mgmtId, inspectionNetwork, inspectId, ippool, count) osc.deployOStackAppliance(daid, projectId='admin', project='admin', region='RegionOne', managementNetwork='mgmt-net', mgmtId=1, inspectionNetwork='inspec-net', inspectId=1, ippool='null', count=1)
def updateDA(osc, da, daid, sync=True): global Log if not isinstance(da.daname, str): Log.log_abort("updateDA -- daname: %s" % (da.daname)) pass da_dict = datastructUtils.get_obj_dict(da) if (not daid) and hasattr(da, 'daid'): daid = getattr(da, 'daid') pass da.daid = daid #print('daid:%s' % daid) if not daid: Log.log_abort("daTests.updateDA No 'daid' Given\n\n -- da:\n%s" % (Log.pformat(da_dict))) pass if isinstance(daid, list): daid = daid[0] Log.log_info("daTests.updateDA -- da:\n%s" % (Log.pformat(da_dict))) if sync == True: osc.syncDistributedAppliancebyID(daid) else: osc.updateDA(da, daid)
def probe(self): outx.log_debug("Enter ovf.probe()\n\n -- Self:\n%s" % (outx.pformat(get_obj_dict(self)))) ##self.ovftool = getMatchingFile(self.ovftool, "ovftool.exe") outx.log_debug("ovf.probe --\n\n -- Self:\n%s" % (outx.pformat(self.__dict__))) # start program vm_inv_url = "vi://%s:%s@%s/%s/host/%s" % ( self.vcuser, self.vcpass, self.vcip, self.datacenter.replace(' ', '%20'), ##self.cluster.replace(' ','%20'), self.host.replace(' ', '%20'), ) outx.log_debug("ovf.probe -- self.vcuser: \"%s\"" % (self.vcuser)) outx.log_debug("ovf.probe -- vm_inv_url: \"%s\"" % (vm_inv_url)) self.vm_inv_url = vm_inv_url self.vm_probe_url = (self.vm_inv_url + "/Resources/" + self.name) ## Power-Off VM Options: "--powerOffSource", "--powerOffTarget" ## ovftool_arglist = [ "--noSSLVerify", "--hideEula", "--acceptAllEulas", ## "--powerOffSource", self.vm_probe_url, ] ##outx.log_debug("ovfTool started at: %s" % currentTime()) ovftool_exec_argv = [self.ovftool] + ovftool_arglist outx.log_debug( "ovf.probe -- Ovf Tool:\"%s\"\n-- Ovftool Arglist:\n%s" % (self.ovftool, outx.pformat(ovftool_arglist))) outx.log_info( "ovf.probe -- ovfTool 'probe' starting ...\n -- Ovftool Args:\n%s" % (outx.pformat(ovftool_exec_argv))) ## sleep(5) p = Popen(ovftool_exec_argv, stdout=PIPE, stderr=PIPE) ##returncode = p.wait() ##p.wait() (stdout_data, stderr_data) = p.communicate() #stdout_str = str(stdout_data) stdout_str = stdout_data.decode('ascii') #stderr_str = str(stderr_data) stderr_str = stderr_data.decode('ascii') rtncode = p.returncode outx.log_info( "ovf.probe -- ovfTool 'probe' completed\n -- Return Code: \"%s\"\n\n -- STDOUT: \"%s\"\n\n -- STDERR: \"%s\"" % (rtncode, stdout_str, stderr_str)) errmsg1 = "The attempted operation cannot be performed in the current state (Powered on)".lower( ) errmsg2 = "Locator does not refer to an object".lower() stdout_lower = stdout_str.lower() stderr_lower = stderr_str.lower() if rtncode == 0: outx.log_info( "ovf.probe -- ovfTool 'probe' Returning 'True' -- VM was found on ESX/VCenter (1)" ) return (True) ## -- VM was found on ESX/VCenter elif (errmsg1 in stdout_lower) or (errmsg1 in stderr_lower): outx.log_info( "ovf.probe -- ovfTool 'probe' Returning 'True' -- VM was found on ESX/VCenter (2)" ) return (True) ## -- VM was found on ESX/VCenter elif (errmsg2 in stdout_lower) or (errmsg2 in stderr_lower): outx.log_info( "ovf.probe -- ovfTool 'probe' Returning 'False' -- VM was NOT found on ESX/VCenter (3)" ) return (False) ## -- VM was NOT found on ESX/VCenter else: outx.log_abort( "ovf.probe -- Unexpected Output from OvfTool 'probe' for Error-Code: \"%s\" -- \n\n -- STDOUT: \"%s\"\n\n -- STDERR: \"%s\"" % (rtncode, stdout_str, stderr_str)) pass
def deploy(self, synchronic=True, overwriteExistingVm=False, powerOnVm=True): if overwriteExistingVm is None: if hasattr(self, 'overwriteExistingVm') and (self.overwriteExistingVm is not None): overwriteExistingVm = self.overwriteExistingVm else: overwriteExisting = False overwriteExistingVm = False pass pass overwriteOpt = "" poweroffOpt = "" if overwriteExistingVm: overwriteOpt = "--overwrite" poweroffOpt = "--powerOffTarget" pass outx.log_info("Enter ovf.deploy()\n\n -- Self:\n%s" % (outx.pformat(get_obj_dict(self)))) ##self.ovftool = getMatchingFile(self.ovftool, "ovftool.exe") self.sourceovf = getMatchingFile(self.sourceovf, ".ovf") outx.log_info("ovf.deploy -- sourceOVF: \"%s\"" % (self.sourceovf)) if self.vmIsOscType: outx.log_info("ovf.deploy --\n\n -- Self:\n%s" % (outx.pformat(self.__dict__))) # start program ####################################################################################### ## ## p = Popen([self.ovftool , "--powerOn" , "--noSSLVerify", "--acceptAllEulas", ## "-ds=%s" % self.datastore, "-n=%s" % self.name, "--network=%s" % self.network, "--prop:sbm_ip_0=%s" % self.vmIp, ## "--prop:sbm_netmask_0=%s" % self.netmask, "--prop:sbm_dns1_0=%s" % self.dnslist, "--prop:sbm_ntp_0=%s" % self.ntplist, ## "--prop:sbm_gateway_0=%s" % self.gateway, "--diskMode=thin", "--prop:sbm_isSSHEnabled=%s" % self.enablessh, self.sourceovf, ## "vi://%s:%s@%s/%s/host/%s" %(self.vcuser, self.vcpass, self.vcip, self.datacenter.replace(' ','%20'), self.cluster.replace(' ','%20'))]) ## ####################################################################################### vm_inv_url = "vi://%s:%s@%s/%s/host/%s" % ( self.vcuser, self.vcpass, self.vcip, self.datacenter.replace(' ', '%20'), ##self.cluster.replace(' ','%20'), self.host.replace(' ', '%20'), ) outx.log_info("ovf.deploy -- self.vcuser: \"%s\"" % (self.vcuser)) outx.log_info("ovf.deploy -- vm_inv_url: \"%s\"" % (vm_inv_url)) self.vm_inv_url = vm_inv_url ovftool_arglist = [ "--powerOn", "--noSSLVerify", "--hideEula", "--acceptAllEulas", poweroffOpt, overwriteOpt, "-ds=%s" % (self.datastore), "-n=%s" % (self.name), "--network=%s" % (self.network), "--prop:sbm_ip_0=%s" % (self.ip), "--prop:sbm_netmask_0=%s" % (self.netmask), "--prop:sbm_dns1_0=%s" % (self.dnslist), "--prop:sbm_ntp_0=%s" % (self.ntplist), "--prop:sbm_gateway_0=%s" % (self.gateway), "--diskMode=thin", "--prop:sbm_isSSHEnabled=%s" % (self.enablessh), self.sourceovf, vm_inv_url, ] ovftool_arglist = [x for x in ovftool_arglist if x] ##outx.log_info("ovfTool started at: %s" % currentTime()) ovftool_exec_argv = [self.ovftool] + ovftool_arglist outx.log_info( "ovf.deploy -- Ovf Tool:\"%s\"\n-- Ovftool Arglist:\n%s" % (self.ovftool, outx.pformat(ovftool_arglist))) outx.log_info( "ovf.deploy -- ovfTool 'deploy' starting ...\n -- Ovftool Args:\n%s" % (outx.pformat(ovftool_exec_argv))) ##p = Popen( ovftool_exec_argv ) else: ####################################################################################### ## ## p = Popen([self.ovftool , "--powerOn" , "--noSSLVerify", "--acceptAllEulas", ## "-ds=%s" % self.datastore, "-n=%s" % self.name, "--network=%s" % self.network, ## "--diskMode=thin", self.sourceovf, ## "vi://%s:%s@%s/%s/host/%s" %(self.vcuser, self.vcpass, self.vcip, self.datacenter.replace(' ','%20'), self.cluster.replace(' ','%20'))]) ## outx.log_info("ovfTool started at: %s" % currentTime()) ## ####################################################################################### vm_inv_url = "vi://%s:%s@%s/%s/host/%s" % ( self.vcuser, self.vcpass, self.vcip, self.datacenter.replace(' ', '%20'), ##self.cluster.replace(' ','%20'), self.host.replace(' ', '%20'), ) outx.log_info("ovf.deploy -- self.vcuser: \"%s\"" % (self.vcuser)) outx.log_info("ovf.deploy -- vm_inv_url: \"%s\"" % (vm_inv_url)) self.vm_inv_url = vm_inv_url ovftool_arglist = [ "--powerOn", "--noSSLVerify", "--hideEula", "--acceptAllEulas", "-ds=%s" % (self.datastore), "-n=%s" % (self.name), "--network=%s" % (self.network), "--diskMode=thin", self.sourceovf, vm_inv_url, ] outx.log_info("ovf.deploy -- Ovftool Arglist:\n%s" % (outx.pformat(ovftool_arglist))) ##outx.log_info("ovfTool started at: %s" % currentTime()) ovftool_exec_argv = [self.ovftool] + ovftool_arglist outx.log_info( "ovf.deploy -- Ovf Tool:\"%s\"\n-- Ovftool Arglist:\n%s" % (self.ovftool, outx.pformat(ovftool_arglist))) outx.log_info( "ovf.deploy -- ovfTool 'deploy' starting ...\n -- Ovftool Args:\n%s" % (outx.pformat(ovftool_exec_argv))) ##p = Popen( ovftool_exec_argv, stdout=PIPE, stderr=PIPE ) pass p = Popen(ovftool_exec_argv, stdout=PIPE, stderr=PIPE) if synchronic: ##returncode = p.wait() ##p.wait() (stdout_data, stderr_data) = p.communicate() #stdout_str = str(stdout_data) stdout_str = stdout_data.decode('ascii') #stderr_str = str(stderr_data) stderr_str = stderr_data.decode('ascii') outx.log_info( "ovf.deploy -- ovfTool 'deploy' completed\n -- Return Code: \"%s\"\n\n -- STDOUT: \"%s\"\n\n -- STDERR: \"%s\"" % (p.returncode, stdout_str, stderr_str)) ## sleep(10) else: outx.log_info( "ovf.deploy -- Exiting before waiting to ovfTool to finish deployment" ) outx.log_info( "ovf.deploy -- ovfTool 'probe' completed -- Return Code: \"%s\"" % (p.returncode)) return (p)
def __init__(self, GlobalData=None, sourceOVF=None, vmName=None, vmType=None, vmIp=None, ovftool=None, ovfElementXml=None, ovfDatastruct=None, ovfElement=None, overwriteExistingVm=False, vmNameSuffix=None, powerOnVm=True): if vmType is not None: vmType = vmType.lower() pass _funcargs = { 'sourceOVF': sourceOVF, 'vmName': vmName, 'vmType': vmType, 'vmIp': vmIp, 'ovftool': ovftool, 'ovfElementXml': ovfElementXml, 'ovfDatastruct': ovfDatastruct, 'ovfElement': ovfElement, 'overwriteExistingVm': overwriteExistingVm, 'vmNameSuffix': vmNameSuffix, 'powerOnVm': powerOnVm } ##_funcargs['GlobalData'] = GlobalData outx.log_info("Enter Ovf Class Constructor -- _funcargs(1):\n%s" % (outx.pformat(_funcargs))) ## sleep(30) ovftool = (ovftool or (GlobalData and GlobalData['ovfToolExe'])) if ovftool: self.ovftool = ovftool else: outx.log_abort( "Ovf Class Constructor -- No value for 'ovftool' found") pass outx.log_info("overwriteExistingVm(1): \"%s\"" % (overwriteExistingVm)) if ovfDatastruct: pass elif ovfElement: ovfDatastruct = etToDatastruct(ovfElement) _funcargs['tree'] = ovfElement _funcargs['ovfElement'] = ovfElement elif tree: ovfDatastruct = etToDatastruct(tree) _funcargs['tree'] = tree _funcargs['ovfElement'] = tree elif ovfElementXml: tree = xml.etree.ElementTree.fromstring(ovfElementXml) ovfDatastruct = etToDatastruct(tree) _funcargs['tree'] = tree _funcargs['ovfElement'] = tree _funcargs['ovfElementXml'] = ovfElementXml else: outx.log_abort( "Ovf Class Constructor -- Expected one of 'ovfDatastruct', 'ovfElement', 'tree', or 'ovfElementXml' options for initialization parameters\n\n -- Func. Args.:\n%s" % (outx.pformat(_funcargs))) pass outx.log_info("overwriteExistingVm(2): \"%s\"" % (overwriteExistingVm)) _funcargs['ovfDatastruct'] = ovfDatastruct if vmName is not None: #self.vmname = vmName self.name = vmName pass if vmType is not None: #self.vmtype = vmType self.type = vmType pass if vmIp is not None: #self.vmip = vmIp self.ip = vmIp pass if sourceOVF is not None: #self.sourceOVF = sourceOVF self.sourceovf = sourceOVF pass if ovftool is not None: self.ovftool = ovftool pass if vmNameSuffix is not None: #self.vmNameSuffix = vmNameSuffix self.namesuffix = vmNameSuffix pass if overwriteExistingVm is not None: #self.overwriteExistingVm = overwriteExistingVm self.overwriteexistingVm = overwriteExistingVm pass if powerOnVm is not None: #self.powerOnVm = powerOnVm self.poweronvm = powerOnVm pass outx.log_debug( "OVF Class Init -- Self:\n%s\n\n -- Ovf Datastruct:\n%s" % (outx.objformat(self), outx.pformat(ovfDatastruct))) for k, v in ovfDatastruct.items(): ##if not hasattr(self, k): if not (hasattr(self, k) and getattr(self, k) is not None): setattr(self, k, v) pass pass outx.log_debug("OVF Class Init --\n\n -- OVF Instance -- Self:\n%s" % (outx.objformat(self))) outx.log_debug("Ovf Class Constructor -- _funcargs(2):\n%s" % (outx.pformat(_funcargs))) self.ovftool = (ovftool or GlobalData['ovfToolExe']) outx.log_debug("Ovf Class Constructor -- OvfToolExe: \"%s\"" % (self.ovftool)) ## { 'ovf': { 'datacenter': 'Physical Datacenter', ## 'datastore': 'datastore1 (9)', ## 'gateway': '10.71.118.252', ## 'host': '10.71.117.243', ## 'netmask': '255.255.255.128', ## 'network': 'dvPortGroup-118', ## 'nscpluginfilename': 'NscSdnControllerPlugin.zip', ## 'nsmpluginfilename': 'NsmMgrPlugin.zip', outx.log_debug("OVF Class Init --\n\n -- OVF Instance -- Self:\n%s" % (outx.objformat(self))) if vmNameSuffix is not None: #self.vmName = self.vmName + '-' + vmNameSuffix self.name = self.name + '-' + vmNameSuffix pass outx.log_debug("OVF Class Init --\n\n -- OVF Instance -- Self:\n%s" % (outx.objformat(self))) ##self.vmName = (vmName or dictLookup(ovfDatastruct, ['vmName', 'name'], ignoreCase=True) if (hasattr(self, 'name') and getattr(self, 'name') is not None): outx.log_info("Name: \"%s\"" % (self.name)) pass elif (hasattr(self, 'vmname') and getattr(self, 'vmname') is not None): self.name = self.vmname outx.log_info("Name: \"%s\"" % (self.name)) else: self.name = dictLookup(ovfDatastruct, ['vmName', 'name', 'targetName'], ignoreCase=True) pass if not getattr(self, 'name', None): outx.log_abort( "OVF Class Init -- No 'name', 'vmname', or 'targetname' given") pass outx.log_debug("OVF Class Init --\n\n -- OVF Instance -- Self:\n%s" % (outx.objformat(self))) self.vmname = self.name self.targetName = self.name outx.log_info("Name: \"%s\"" % (self.name)) if (hasattr(self, 'type') and getattr(self, 'type') is not None): pass elif (hasattr(self, 'vmtype') and getattr(self, 'vmtype') is not None): self.type = self.vmtype else: self.type = dictLookup(ovfDatastruct, ['vmType', 'type'], ignoreCase=True) if self.type: self.type = self.type.lower() pass pass outx.log_debug("OVF Class Init --\n\n -- OVF Instance -- Self:\n%s" % (outx.objformat(self))) if (hasattr(self, 'ip') and getattr(self, 'ip') is not None): pass elif (hasattr(self, 'vmip') and getattr(self, 'vmip') is not None): self.ip = self.ip else: self.ip = dictLookup(ovfDatastruct, ['vmIp', 'ip'], ignoreCase=True) pass outx.log_debug("OVF Class Init --\n\n -- OVF Instance -- Self:\n%s" % (outx.objformat(self))) if not getattr(self, 'name', None): outx.log_abort("OVF Class Init -- No 'ip', or 'vmip' given") pass self.vmIsOscType = (getattr(self, 'type', None) == 'osc') outx.log_debug("OVF Class Init --\n\n -- OVF Instance -- Self:\n%s" % (outx.objformat(self))) if hasattr(self, 'oscVctrUser'): self.vcuser = self.oscVctrUser if hasattr(self, 'oscVctrPass'): self.vcpass = self.oscVctrPass if hasattr(self, 'oscVctrIp'): self.vcip = self.oscVctrIp pass ##vcuser = self.vcUser vcuser = self.vcuser vcuser = vcuser.replace('@', " ") vcuser = vcuser.replace('.', " ") vcuser = vcuser.replace(':', " ") vcuserx = vcuser.split(" ") vcuser = vcuserx[0] self.vcuser = vcuser defaultVcUser = None if (GlobalData and ('defaultVcUser' in GlobalData)): defaultVcUser = GlobalData['defaultVcUser'] defaultVcPass = None if (GlobalData and ('defaultVcPass' in GlobalData)): defaultVcPass = GlobalData['defaultVcPass'] pass self.vcuser = (self.vcuser or defaultVcUser) self.vcpass = (self.vcpass or defaultVcPass) outx.log_debug("OVF Class Init --\n\n -- OVF Instance -- Self:\n%s" % (outx.objformat(self))) ##if not self.name: if not self.name: outx.log_abort( "Ovf Class Constructor -- No 'name' Given:\n\n -- Func Args:\n%s\n\n -- Self:\n%s" % (outx.pformat(_funcargs), outx.pformat(get_obj_dict(self)))) pass outx.log_info("Ovf Class Constructor -- VM Name: \"%s\"" % (self.name)) _funcargs['self_dict'] = get_obj_dict(self) outx.log_debug("OVF Class Init --\n\n -- OVF Instance -- Self:\n%s" % (outx.objformat(self))) outx.log_debug("Ovf Class Constructor -- Args:\n%s" % (outx.pformat(_funcargs))) outx.log_debug("Ovf Class Constructor -- Self:\n%s" % (outx.objformat(self))) ##if not getattr(self, 'sourceOVF', None): if not getattr(self, 'sourceovf', None): outx.log_abort("Ovf Class Constructor -- No 'sourceOVF' spefified") elif not os.path.exists(self.sourceovf): outx.log_abort( "Ovf Class Constructor -- sourceOVF: \"%s\" not found" % (self.sourceovf)) pass if not os.path.exists(self.ovftool): outx.log_error( "Ovf Class Constructor -- Ovf Tool: \"%s\" not found" % (self.ovftool)) pass outx.log_debug( "Exit OVF Class Init --\n\n -- OVF Instance -- Self:\n%s" % (outx.objformat(self)))