def _route_flavors(dummy_tenant_id): """ Route: /v1.1/<dummy_tenant_id>/flavors Method: GET, POST """ utils.show_request(bottle.request) # nova flavor-create if bottle.request.method == 'POST': body = json.load(bottle.request.body) return {'flavor': FLAVORS.create(body['flavor'])} # nova flavor-list (no details) return {'flavors': FLAVORS.list(detail=False)}
def boot(self, server): """ Boot a new server """ LOG.info('boot(server=%s)', server) name = server['name'] image_id = server['imageRef'] flavor_id = server['flavorRef'] key_name = server.get('key_name', None) # Sanity checks, will throw exceptions if they fail IMAGES.exists(image_id) FLAVORS.exists(flavor_id) if key_name is not None: KEYPAIRS.exists(key_name) # Create a new server in the database server = DB.servers.create(name=name, image_id=image_id, flavor_id=flavor_id, key_name=key_name, status='BUILDING') server_id = server['id'] # Generate some more server properties and update the database mac_address = _generate_mac() server = DB.servers.update(id=server_id, mac_address=mac_address) # Extend the server details server = self._extend(server) # Create the server directory basepath = os.path.join(CONF.instances_dir, server_id) os.makedirs(basepath) # Create the server disk images _create_disks(server) # Finally boot the server VIRT.boot_server(server) # Update the status of the server server = DB.servers.update(id=server_id, status='NETWORKING') # Start a task to wait for the server to get its DHCP IP address task.start(server_id, 2, 60/2, [True], self._wait_for_ip, server) return utils.sanitize(server, SERVERS_DETAIL)
def _route_flavors_id(dummy_tenant_id, flavor_id): """ Route: /v1.1/<dummy_tenant_id>/flavors/<flavor_id> Method: GET, DELETE """ utils.show_request(bottle.request) # nova flavor-delete <flavor_id> if bottle.request.method == 'DELETE': FLAVORS.delete(flavor_id) return # nova flavor-list if flavor_id == 'detail': return {'flavors': FLAVORS.list()} # nova flavor-show <flavor_id> return {'flavor': FLAVORS.show(flavor_id)}
def _extend(self, server): """ Extend server details """ if 'image_id' in server: server['image'] = IMAGES.show(server['image_id']) del server['image_id'] if 'flavor_id' in server: server['flavor'] = FLAVORS.show(server['flavor_id']) del server['flavor_id'] if 'ip' in server: server['addresses'] = {'private': [{'addr': server['ip'], 'version': 4}]} del server['ip'] return server