示例#1
0
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')
示例#2
0
文件: gce_job.py 项目: illfelder/mash
    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)
示例#3
0
文件: gce_job.py 项目: illfelder/mash
    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))