def test_delete_gce_image(mock_wait_on_op): driver = Mock() delete_op = Mock() response = Mock() operation = {'error': {'errors': [{'message': 'No image found!'}]}} driver.images.return_value = delete_op delete_op.delete.return_value = response response.execute.return_value = {'name': 'operation123'} mock_wait_on_op.return_value = operation with raises(MashException): delete_gce_image(driver, 'project', 'image_123')
def cleanup_image(self): credentials = self.credentials[self.account] project = credentials.get('project_id') object_name = self.status_msg['object_name'] compute_driver = get_gce_compute_driver(credentials) storage_driver = get_gce_storage_driver(credentials) self.log_callback.info('Cleaning up image: {0} in region: {1}.'.format( self.cloud_image_name, self.region)) try: delete_gce_image(compute_driver, project, self.cloud_image_name) delete_image_tarball(storage_driver, object_name, self.bucket) except Exception as error: msg = 'Failed to cleanup image: {0}'.format(error) self.log_callback.warning(msg) self.add_error_msg(msg)
def run_job(self): self.status = SUCCESS self.log_callback.info('Creating image.') self.cloud_image_name = self.status_msg['cloud_image_name'] object_name = self.status_msg['object_name'] timestamp = re.findall(r'\d{8}', self.cloud_image_name)[0] self.cloud_image_description = format_string_with_date( self.base_cloud_image_description, timestamp=timestamp) self.request_credentials([self.account]) credentials = self.credentials[self.account] project = credentials.get('project_id') compute_driver = get_gce_compute_driver(credentials, version='alpha') uri = ''.join([ 'https://www.googleapis.com/storage/v1/b/', self.bucket, '/o/', object_name ]) if get_gce_image(compute_driver, project, self.cloud_image_name): self.log_callback.info( 'Replacing existing image with the same name.') delete_gce_image(compute_driver, project, self.cloud_image_name) rollout = create_gce_rollout(compute_driver, project) create_gce_image(compute_driver, project, self.cloud_image_name, self.cloud_image_description, uri, family=self.family, guest_os_features=self.guest_os_features, rollout=rollout) self.log_callback.info('Created image has ID: {0}'.format( self.cloud_image_name))