def take_action(self, parsed_args): column_headers = ('id', 'name', 'image_name', 'created_by', 'machines', 'start_date') api = AtmosphereAPI(self.app_args.auth_token, base_url=self.app_args.base_url, timeout=self.app_args.api_server_timeout, verify=self.app_args.verify_cert) data = api.get_image_versions(parsed_args.id) image_versions = [] if data.ok: for version in data.message['results']: start_date = ts_to_isodate(version['start_date']) image_versions.append( (version['id'], version['name'], version['image']['name'], version['user']['username'], '\n'.join([ '{} ({})'.format(value['provider']['name'], value['uuid']) for value in version['machines'] ]), start_date if start_date else version['start_date'])) return (column_headers, tuple(image_versions))
def take_action(self, parsed_args): column_headers = ('id', 'uuid', 'name', 'description', 'created_by', 'versions', 'tags', 'url', 'is_public', 'start_date', 'end_date') api = AtmosphereAPI(self.app_args.auth_token, base_url=self.app_args.base_url, timeout=self.app_args.api_server_timeout, verify=self.app_args.verify_cert) data = api.get_image(parsed_args.id) image = () if data.ok: message = data.message versions = '' if parsed_args.show_all_versions: versions = '\n'.join([ '{} ({})'.format(value['name'], value['id']) for value in message['versions'] ]) else: version_data = api.get_image_versions(parsed_args.id) if version_data.ok: versions = '\n'.join([ '{} ({})'.format(value['name'], value['id']) for value in version_data.message['results'] ]) start_date = ts_to_isodate(message['start_date']) end_date = '' if message['end_date']: end_date = ts_to_isodate(message['end_date']) image = (message['id'], message['uuid'], message['name'], message['description'], message['created_by']['username'], versions, ', '.join([value['name'] for value in message['tags']]), message['url'], message['is_public'], start_date, end_date) return (column_headers, image)
def take_action(self, parsed_args): api = AtmosphereAPI(self.app_args.auth_token, base_url=self.app_args.base_url, timeout=self.app_args.api_server_timeout, verify=self.app_args.verify_cert) payload = { "name": parsed_args.name, "identity": parsed_args.identity, "size_alias": parsed_args.size_alias, "project": parsed_args.project, "allocation_source_id": parsed_args.allocation_source_id, "deploy": parsed_args.deploy, "scripts": [], "extra": {} } if parsed_args.image: # get the provider from the identity payload['source_alias'] = None id_data = api.get_identity(parsed_args.identity) if id_data.ok: provider_id = id_data.message['provider']['id'] self.log.debug( 'Found provider id {} for identity uuid {}'.format( provider_id, parsed_args.identity)) # get the provider machine from the latest image version v_data = api.get_image_versions(parsed_args.image) if v_data.ok: # get latest image version latest_version = v_data.message['results'][-1] machines = latest_version['machines'] machine_id = next((m['uuid'] for m in machines if m['provider']['id'] == provider_id), None) self.log.debug( 'Found machine id {} for latest image version {} and provider id {}' .format(machine_id, latest_version['name'], provider_id)) payload['source_alias'] = machine_id else: self.app.stdout.write( 'Error, instance not created. Could not lookup latest image version from image uuid supplied: {}' .format(parsed_args.image)) else: self.app.stdout.write( 'Error, instance not created. Could not lookup provider from identity uuid supplied: {}' .format(parsed_args.identity)) else: payload['source_alias'] = parsed_args.source_alias self.log.debug('INPUT: {}'.format(json.dumps(payload))) instance = () column_headers = ('id', 'uuid', 'name', 'username', 'allocation_source', 'image_id', 'image_version', 'launched', 'image_size', 'provider') if payload['source_alias']: data = api.create_instance(json.dumps(payload)) if data.ok: message = data.message launched = ts_to_isodate(message['start_date']) instance = (message['id'], message['uuid'], message['name'], message['user']['username'], message['allocation_source']['name'], message['image']['id'], message['version']['name'], launched, message['size']['name'], message['provider']['name']) else: self.app.stdout.write( 'Error, instance not created! Make sure to supply name, identity, project, size, source (or image), and allocation_source.' ) return (column_headers, instance)
def test_getting_image_versions_when_response_is_ok(self): api = AtmosphereAPI('token', base_url=self.mock_users_base_url) response = api.get_image_versions('ca948f10-c47e-5d06-a2b0-1674cfc002ee') assert response.ok assert response.message['count'] == 5 and response.message['results'][0]['id'] == '201bc19a-d635-4c10-88be-6c3d310d6afd'
def test_getting_image_versions_when_response_is_not_ok(self): api = AtmosphereAPI('token', base_url=self.mock_users_bad_base_url) response = api.get_image_versions('ca948f10-c47e-5d06-a2b0-1674cfc002ee') assert not response.ok