Exemple #1
0
 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)
Exemple #3
0
    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)
Exemple #4
0
 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)
Exemple #8
0
 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)
Exemple #9
0
 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)