def test_GetTemplateDiskInfo(self): ''' @summary: 获取模板的磁盘详情 @note: 操作成功,验证返回状态码和返回信息 ''' self.flag = True tempdisk_api = TemplateDisksAPIs() LogPrint().info("Test: Get disk info of template %s." % self.dm.temp_name) r = tempdisk_api.getTemplateDiskInfo(self.dm.temp_name, self.dm.disk_name) if r['status_code'] == self.dm.expected_status_code: dictCompare = DictCompare() sd_id = StorageDomainAPIs().getStorageDomainIdByName( ModuleData.data1_nfs_name) expected_result = xmltodict.parse(self.dm.disk_info % sd_id) actual_result = r['result'] if dictCompare.isSubsetDict(expected_result, actual_result): LogPrint().info("PASS: Get disk info of template %s SUCCESS." % self.dm.temp_name) else: LogPrint().error("FAIL: The disk_info is WRONG") self.flag = False else: LogPrint().error("FAIL: The status_code is WRONG") self.flag = False self.assertTrue(self.flag)
def test_GetTemplateDiskList(self): ''' @summary: 获取模板的磁盘列表 @note: 操作成功,验证返回状态码和返回信息 ''' self.flag = True tempdisk_api = TemplateDisksAPIs() LogPrint().info("Test: Get disk list of template %s."%self.dm.temp_name) r = tempdisk_api.getTemplateDiskList(self.dm.temp_name) if r['status_code'] == self.dm.expected_status_code: LogPrint().info("PASS: Get disk list of template %s SUCCESS."%self.dm.temp_name) else: LogPrint().error("FAIL: The status_code is WRONG") self.flag = False self.assertTrue(self.flag)
def test_CopyTemplateDisk_async(self): ''' @summary: 拷贝模板磁盘,异步 @note: 操作成功,验证返回状态码,检查磁盘的存储域变化 ''' LogPrint().info("Test: Copy disk of template %s async." % self.dm.temp_name) self.flag = True tempdisk_api = TemplateDisksAPIs() r = tempdisk_api.copyTemplateDisk(self.dm.temp_name, self.dm.disk_name, self.dm.copy_data) print r def is_tempdisk_ok(): return tempdisk_api.getTemplateDiskStatus( self.dm.temp_name, self.dm.disk_name) == 'ok' def check_tempdisk_sd(temp_name, disk_name, sd_id): ''' @summary: 检查模板磁盘所在的存储域是否包含源和目的存储域 @param temp_name: 模板名称 @param disk_name: 磁盘名称 @param sd_id:存储域id @return: True or False ''' sd_list = tempdisk_api.getTemplateDiskSdList(temp_name, disk_name) flag = False for index in range(len(sd_list)): if sd_list[index]['@id'] == sd_id: flag = True return flag if r['status_code'] == self.dm.expected_status_code: if wait_until(is_tempdisk_ok, 300, 10): if check_tempdisk_sd(self.dm.temp_name, self.dm.disk_name, self.dm.des_sd_id): LogPrint().info("PASS: Copy Template Disk sync SUCCESS") else: LogPrint().error("FAIL: The des sd is not %s." % self.dm.des_sd_name) self.flag = False else: LogPrint().error("FAIL: CopyTemplateDisk overtime") self.flag = False else: LogPrint().error("FAIL: The status_code is WRONG") self.flag = False self.assertTrue(self.flag)
def test_GetTemplateDiskList(self): ''' @summary: 获取模板的磁盘列表 @note: 操作成功,验证返回状态码和返回信息 ''' self.flag = True tempdisk_api = TemplateDisksAPIs() LogPrint().info("Test: Get disk list of template %s." % self.dm.temp_name) r = tempdisk_api.getTemplateDiskList(self.dm.temp_name) if r['status_code'] == self.dm.expected_status_code: LogPrint().info("PASS: Get disk list of template %s SUCCESS." % self.dm.temp_name) else: LogPrint().error("FAIL: The status_code is WRONG") self.flag = False self.assertTrue(self.flag)
def test_CopyTemplateDisk_nosd(self): ''' @summary: 拷贝模板磁盘,未指定存储域 @note: 操作失败,验证返回状态码和返回信息 ''' self.flag = True tempdisk_api = TemplateDisksAPIs() LogPrint().info("Test: Copy disk of template %s without SD."%self.dm.temp_name) r = tempdisk_api.copyTemplateDisk(self.dm.temp_name, self.dm.disk_name, self.dm.copy_data) if r['status_code'] == self.dm.expected_status_code: dictCompare = DictCompare() if dictCompare.isSubsetDict(xmltodict.parse(self.dm.expected_info), r['result']): LogPrint().info("PASS: Returned status code ans messages are CORRECT.") else: LogPrint().error("FAIL: The error_log is WRONG.") self.flag = False else: LogPrint().error("FAIL: The status_code is WRONG.") self.flag = False self.assertTrue(self.flag)
def test_CopyTemplateDisk_async(self): ''' @summary: 拷贝模板磁盘,异步 @note: 操作成功,验证返回状态码,检查磁盘的存储域变化 ''' LogPrint().info("Test: Copy disk of template %s async."%self.dm.temp_name) self.flag = True tempdisk_api = TemplateDisksAPIs() r = tempdisk_api.copyTemplateDisk(self.dm.temp_name, self.dm.disk_name, self.dm.copy_data) print r def is_tempdisk_ok(): return tempdisk_api.getTemplateDiskStatus(self.dm.temp_name, self.dm.disk_name)=='ok' def check_tempdisk_sd(temp_name,disk_name,sd_id): ''' @summary: 检查模板磁盘所在的存储域是否包含源和目的存储域 @param temp_name: 模板名称 @param disk_name: 磁盘名称 @param sd_id:存储域id @return: True or False ''' sd_list = tempdisk_api.getTemplateDiskSdList(temp_name, disk_name) flag = False for index in range(len(sd_list)): if sd_list[index]['@id'] == sd_id: flag = True return flag if r['status_code'] == self.dm.expected_status_code: if wait_until(is_tempdisk_ok, 300, 10): if check_tempdisk_sd(self.dm.temp_name, self.dm.disk_name, self.dm.des_sd_id): LogPrint().info("PASS: Copy Template Disk sync SUCCESS") else: LogPrint().error("FAIL: The des sd is not %s."%self.dm.des_sd_name) self.flag= False else: LogPrint().error("FAIL: CopyTemplateDisk overtime") self.flag= False else: LogPrint().error("FAIL: The status_code is WRONG") self.flag= False self.assertTrue(self.flag)
def test_GetTemplateDiskInfo(self): ''' @summary: 获取模板的磁盘详情 @note: 操作成功,验证返回状态码和返回信息 ''' self.flag = True tempdisk_api = TemplateDisksAPIs() LogPrint().info("Test: Get disk info of template %s."%self.dm.temp_name) r = tempdisk_api.getTemplateDiskInfo(self.dm.temp_name,self.dm.disk_name) if r['status_code'] == self.dm.expected_status_code: dictCompare = DictCompare() sd_id = StorageDomainAPIs().getStorageDomainIdByName(ModuleData.data1_nfs_name) expected_result = xmltodict.parse(self.dm.disk_info %sd_id) actual_result = r['result'] if dictCompare.isSubsetDict(expected_result,actual_result): LogPrint().info("PASS: Get disk info of template %s SUCCESS."%self.dm.temp_name) else: LogPrint().error("FAIL: The disk_info is WRONG") self.flag = False else: LogPrint().error("FAIL: The status_code is WRONG") self.flag = False self.assertTrue(self.flag)
def test_CopyTemplateDisk_nosd(self): ''' @summary: 拷贝模板磁盘,未指定存储域 @note: 操作失败,验证返回状态码和返回信息 ''' self.flag = True tempdisk_api = TemplateDisksAPIs() LogPrint().info("Test: Copy disk of template %s without SD." % self.dm.temp_name) r = tempdisk_api.copyTemplateDisk(self.dm.temp_name, self.dm.disk_name, self.dm.copy_data) if r['status_code'] == self.dm.expected_status_code: dictCompare = DictCompare() if dictCompare.isSubsetDict(xmltodict.parse(self.dm.expected_info), r['result']): LogPrint().info( "PASS: Returned status code ans messages are CORRECT.") else: LogPrint().error("FAIL: The error_log is WRONG.") self.flag = False else: LogPrint().error("FAIL: The status_code is WRONG.") self.flag = False self.assertTrue(self.flag)
def setUp(self): self.dm = super(self.__class__, self).setUp() #创建一个虚拟机 LogPrint().info("Pre-Test-1: Create vm %s for TC."% self.dm.vm_name) self.assertTrue(smart_create_vm(self.dm.vm_name, self.dm.vm_info)) #创建一块磁盘 ''' @note: 创建磁盘时,磁盘的sharable属性必须为false,因为共享磁盘不作为模板的一部份 ''' LogPrint().info("Pre-Test-2: Create a disk for TC.") r= smart_create_disk(self.dm.disk_info, self.dm.disk_name) self.assertTrue(r[0]) self.disk_id = r[1] #将该磁盘附加到虚拟机上 LogPrint().info("Pre-Test-3: Attach disk %s to vm %s for TC."% (self.dm.disk_name ,self.dm.vm_name)) self.vmdiskapi = VmDiskAPIs() r=self.vmdiskapi.attachDiskToVm(self.dm.vm_name, self.disk_id) if r['status_code'] == 200: LogPrint().info("Attach Disk to vm success.") else: LogPrint().error("Attach Disk to vm fail.Status-code is wrong.") self.assertTrue(False) #该虚拟机创建模板 LogPrint().info("Pre-Test-4: Create template for vm %s for TC."% self.dm.vm_name) self.tempapi = TemplatesAPIs() self.vm_id = VirtualMachineAPIs().getVmIdByName(self.dm.vm_name) r = self.tempapi.createTemplate(self.dm.temp_info, self.vm_id) def is_temp_ok(): return self.tempapi.getTemplateInfo(temp_name=self.dm.temp_name)['result']['template']['status']['state']=='ok' if r['status_code'] == 202: if wait_until(is_temp_ok, 600, 10): LogPrint().info("Create Template ok.") else: LogPrint().error("Create Template overtime") self.assertTrue(False) else: LogPrint().error("Create Template failed.Status-code is wrong.") self.assertTrue(False) #获得模板关联的磁盘id r = TemplateDisksAPIs().getTemplateDiskInfo(self.dm.temp_name, self.dm.disk_name) if r['status_code'] == 200: self.disk_id_temp = r['result']['disk']['@id'] else: self.assertTrue(False)