def test_sync_ami_image_with_dependent_images(self): ari_create_params = { "container_format": CONF.image.container_formats[1], "disk_format": CONF.image.disk_formats[1], "visibility": 'private', } ari_image = self.create_and_upload_image(**ari_create_params) aki_create_params = { "container_format": CONF.image.container_formats[2], "disk_format": CONF.image.disk_formats[2], "visibility": 'private', } aki_image = self.create_and_upload_image(**aki_create_params) ami_create_params = { "container_format": CONF.image.container_formats[0], "disk_format": CONF.image.disk_formats[0], "visibility": 'private', "ramdisk_id": ari_image['id'], "kernel_id": aki_image['id'] } ami_image = self.create_and_upload_image(**ami_create_params) job_details = self._sync_ami_image(DEFAULT_FORCE, ami_image['id']) # Clean_up the database entries utils.wait_until_true( lambda: self._check_job_status(), exception=RuntimeError("Timed out waiting for job %s " % job_details['job_id'])) # Check for resources in target_regions. self._check_and_delete_dependent_images_target_region( job_details['admin'], job_details['target'], ami_image, DEFAULT_FORCE, **ami_create_params) self.delete_db_entries(job_details['job_id'])
def test_keypair_sync_with_force_false(self): job_details_1 = self._keypair_sync_job_create(DEFAULT_FORCE) job_id_1 = job_details_1['job_id'] utils.wait_until_true(lambda: self._check_job_status(), exception=RuntimeError( "Timed out waiting for job %s " % job_id_1)) self.delete_db_entries(job_id_1) job_details_2 = self._keypair_sync_job_create(DEFAULT_FORCE, job_details_1['keys']) job_id_2 = job_details_2['job_id'] utils.wait_until_true(lambda: self._check_job_status(), exception=RuntimeError( "Timed out waiting for job %s " % job_id_2)) job_list_resp = self.get_sync_job_detail(job_id_2) # This job fail because resoruce is already created. # We can use force to recreate that resource. self.assertEqual( job_list_resp.get('job_set')[0].get('sync_status'), consts.JOB_FAILURE) self.assertEqual( job_list_resp.get('job_set')[1].get('sync_status'), consts.JOB_FAILURE) # Clean_up the database entries self.delete_db_entries(job_id_2) self._cleanup_resources(job_details_2['keys'], job_details_2['target'], self.client.user_id)
def test_get_image_sync_job_details(self): create_params = { "container_format": CONF.image.container_formats[3], "disk_format": CONF.image.disk_formats[6], "visibility": 'private', } job_details = self._image_sync_job_create(DEFAULT_FORCE, **create_params) utils.wait_until_true( lambda: self._check_job_status(), exception=RuntimeError("Timed out waiting for job %s " % job_details['job_id'])) job_list_resp = self.get_sync_job_detail(job_details['job_id']) for image_id in job_details['images']: for j in range(len(job_list_resp.get('job_set'))): if image_id in job_list_resp.get('job_set')[j].values(): self.assertEqual( job_list_resp.get('job_set')[j].get('resource'), image_id) self.assertEqual( job_list_resp.get('job_set')[0].get('resource_type'), consts.IMAGE_RESOURCE_TYPE) self._check_images_delete_target_region(job_details['admin'], job_details['target'], job_details['images'], DEFAULT_FORCE, **create_params) # Clean_up the database entries and resources. self.delete_db_entries(job_details['job_id'])
def test_kb_quota_class_delete_method(self): new_quota = {"instances": 15, "cores": 15} self.update_quota_for_class(self.class_name, new_quota) self.delete_quota_for_class(self.class_name) utils.wait_until_true( lambda: self._delete_quota_values(self.class_name), exception=RuntimeError("Timed out ")) quota_after_delete = self.get_quota_for_class(self.class_name) self.assertNotEqual(quota_after_delete['cores'], 15) self.assertNotEqual(quota_after_delete['instances'], 15)
def test_kb_quota_class_put_method(self): new_quota = {"instances": 15, "cores": 10} actual_value = self.update_quota_for_class(self.class_name, new_quota) expected_value = QUOTA_CLASS_FORMAT expected_value['cores'] = 10 expected_value['instances'] = 15 expected_value['class_name'] = self.class_name self.assertEqual(expected_value, actual_value) self.delete_quota_for_class(self.class_name) utils.wait_until_true( lambda: self._delete_quota_values(self.class_name), exception=RuntimeError("Timed out "))
def test_get_active_jobs(self): job_details = self._keypair_sync_job_create(FORCE) active_job = self.get_sync_job_list(consts.JOB_ACTIVE) status = active_job.get('job_set')[0].get('sync_status') self.assertEqual(status, consts.JOB_PROGRESS) utils.wait_until_true( lambda: self._check_job_status(), exception=RuntimeError("Timed out waiting for job %s " % job_details['job_id'])) # Clean_up the database entries self.delete_db_entries(job_details['job_id']) self._cleanup_resources(job_details['keys'], job_details['target'], self.client.user_id)
def test_get_kingbird_sync_list(self): job_details = self._keypair_sync_job_create(FORCE) utils.wait_until_true( lambda: self._check_job_status(), exception=RuntimeError("Timed out waiting for job %s " % job_details['job_id'])) job_list_resp = self.get_sync_job_list() self.assertEqual(job_list_resp['job_set'][0]['id'], job_details['job_id']) # Clean_up the database entries and resources self.delete_db_entries(job_details['job_id']) self._cleanup_resources(job_details['keys'], job_details['target'], self.client.user_id)
def test_delete_already_deleted_job(self): job_details = self._keypair_sync_job_create(FORCE) # Clean_up the database entries utils.wait_until_true( lambda: self._check_job_status(), exception=RuntimeError("Timed out waiting for job %s " % job_details['job_id'])) self.delete_db_entries(job_details['job_id']) self.assertRaisesRegexp(kingbirdclient.exceptions.APIException, "404 *", self.delete_db_entries, job_details['job_id']) self._cleanup_resources(job_details['keys'], job_details['target'], self.client.user_id)
def test_kingbird_keypair_sync(self): # Keypairs created should be available in the response list # Create 2 keypairs: job_details = self._keypair_sync_job_create(FORCE) utils.wait_until_true( lambda: self._check_job_status(), exception=RuntimeError("Timed out waiting for job %s " % job_details['job_id'])) # Check for resources in target_regions self._check_keypairs_in_target_region(job_details['target'], job_details['keys']) # Clean_up the database entries and resources self.delete_db_entries(job_details['job_id']) self._cleanup_resources(job_details['keys'], job_details['target'], self.client.user_id)
def test_keypair_sync_with_force_true(self): job_details_1 = self._keypair_sync_job_create(FORCE) job_id_1 = job_details_1['job_id'] utils.wait_until_true(lambda: self._check_job_status(), exception=RuntimeError( "Timed out waiting for job %s " % job_id_1)) self.delete_db_entries(job_id_1) job_details_2 = self._keypair_sync_job_create(FORCE) job_id_2 = job_details_2['job_id'] utils.wait_until_true(lambda: self._check_job_status(), exception=RuntimeError( "Timed out waiting for job %s " % job_id_2)) # Clean_up the database entries self.delete_db_entries(job_id_2) self._cleanup_resources(job_details_2['keys'], job_details_2['target'], self.client.user_id)
def test_qcow2_force_image_sync_with_extra_specs(self): create_params = { "container_format": CONF.image.container_formats[3], "disk_format": CONF.image.disk_formats[6], "visibility": 'private', "architecture": 'arm', "hypervisor_type": 'qemu' } job_details = self._image_sync_job_create(FORCE, **create_params) utils.wait_until_true( lambda: self._check_job_status(), exception=RuntimeError("Timed out waiting for job %s " % job_details['job_id'])) # Check for resources in target_regions. self._check_images_delete_target_region(job_details['admin'], job_details['target'], job_details['images'], FORCE, **create_params) # Clean_up the database entries and resources self.delete_db_entries(job_details['job_id'])
def test_get_sync_job_details(self): job_details = self._keypair_sync_job_create(FORCE) utils.wait_until_true( lambda: self._check_job_status(), exception=RuntimeError("Timed out waiting for job %s " % job_details['job_id'])) job_list_resp = self.get_sync_job_detail(job_details['job_id']) key_list = job_details['keys'] for i in range(len(key_list)): for j in range(len(job_list_resp.get('job_set'))): if key_list[i] in job_list_resp.get('job_set')[j].values(): self.assertEqual( job_list_resp.get('job_set')[j].get('resource'), key_list[i]) self.assertEqual( job_list_resp.get('job_set')[0].get('resource_type'), consts.KEYPAIR_RESOURCE_TYPE) # Clean_up the database entries self.delete_db_entries(job_details['job_id']) self._cleanup_resources(job_details['keys'], job_details['target'], self.client.user_id)
def test_delete_already_deleted_job(self): create_params = { "container_format": CONF.image.container_formats[3], "disk_format": CONF.image.disk_formats[6], "visibility": 'private', } job_details = self._image_sync_job_create(DEFAULT_FORCE, **create_params) utils.wait_until_true( lambda: self._check_job_status(), exception=RuntimeError("Timed out waiting for job %s " % job_details['job_id'])) # Clean_up the database entries self.delete_db_entries(job_details['job_id']) self.assertRaisesRegexp(kingbirdclient.exceptions.APIException, "404 *", self.delete_db_entries, job_details['job_id']) # Check for resources in target_regions. self._check_images_delete_target_region(job_details['admin'], job_details['target'], job_details['images'], DEFAULT_FORCE, **create_params)
def test_get_active_jobs_image_sync(self): create_params = { "container_format": CONF.image.container_formats[3], "disk_format": CONF.image.disk_formats[6], "visibility": 'private', } job_details = self._image_sync_job_create(DEFAULT_FORCE, **create_params) active_job = self.get_sync_job_list(consts.JOB_ACTIVE) status = active_job.get('job_set')[0].get('sync_status') self.assertEqual(status, consts.JOB_PROGRESS) utils.wait_until_true( lambda: self._check_job_status(), exception=RuntimeError("Timed out waiting for job %s " % job_details['job_id'])) # Check for resources in target_regions. self._check_images_delete_target_region(job_details['admin'], job_details['target'], job_details['images'], DEFAULT_FORCE, **create_params) # Clean_up the database entries self.delete_db_entries(job_details['job_id'])
def test_get_kingbird_image_sync_list(self): create_params = { "container_format": CONF.image.container_formats[3], "disk_format": CONF.image.disk_formats[6], "visibility": 'private', } job_details = self._image_sync_job_create(DEFAULT_FORCE, **create_params) utils.wait_until_true( lambda: self._check_job_status(), exception=RuntimeError("Timed out waiting for job %s " % job_details['job_id'])) # Check for resources in target_regions. job_list_resp = self.get_sync_job_list() self.assertEqual(job_list_resp['job_set'][0]['id'], job_details['job_id']) self._check_images_delete_target_region(job_details['admin'], job_details['target'], job_details['images'], DEFAULT_FORCE, **create_params) # Clean_up the database entries and resources. self.delete_db_entries(job_details['job_id'])
def test_qcow2_force_image_sync(self): """Here we test these functionalities. Register image, upload the image file, get image and check if image is created in target regions. """ create_params = { "container_format": CONF.image.container_formats[3], "disk_format": CONF.image.disk_formats[6], "visibility": 'private' } job_details = self._image_sync_job_create(FORCE, **create_params) utils.wait_until_true( lambda: self._check_job_status(), exception=RuntimeError("Timed out waiting for job %s " % job_details['job_id'])) # Check for resources in target_regions. self._check_images_delete_target_region(job_details['admin'], job_details['target'], job_details['images'], FORCE, **create_params) # Clean_up the database entries and resources self.delete_db_entries(job_details['job_id'])