From 2bad014c460166df82b014a21147caa5f032a20c Mon Sep 17 00:00:00 2001 From: Nirmal Ranganathan Date: Wed, 13 Jun 2012 11:46:29 -0500 Subject: [PATCH] Au revoir /instances/detail. --- reddwarf/instance/service.py | 18 +++---------- reddwarf/instance/views.py | 52 +++++++++++++++--------------------- 2 files changed, 24 insertions(+), 46 deletions(-) diff --git a/reddwarf/instance/service.py b/reddwarf/instance/service.py index ed7456013f..79e6e85c04 100644 --- a/reddwarf/instance/service.py +++ b/reddwarf/instance/service.py @@ -174,25 +174,14 @@ class InstanceController(BaseController): instance.resize_flavor(new_flavor_id) return wsgi.Result(None, 202) - def detail(self, req, tenant_id): - """Return all instances.""" - LOG.info(_("req : '%s'\n\n") % req) - LOG.info(_("Detailing database instance for tenant '%s'") % tenant_id) - #TODO(cp16net) return a detailed list instead of index - return self.index(req, tenant_id, detailed=True) - - def index(self, req, tenant_id, detailed=False): + def index(self, req, tenant_id): """Return all instances.""" LOG.info(_("req : '%s'\n\n") % req) LOG.info(_("Indexing a database instance for tenant '%s'") % tenant_id) context = req.environ[wsgi.CONTEXT_KEY] servers, marker = models.Instances.load(context) - # TODO(cp16net): need to set the return code correctly - if detailed: - view = views.InstancesDetailView(servers, req=req, - add_volumes=self.add_volumes) - else: - view = views.InstancesView(servers, req=req) + view = views.InstancesView(servers, req=req, + add_volumes=self.add_volumes) paged = pagination.SimplePaginatedDataView(req.url, 'instances', view, marker) return wsgi.Result(paged.data(), 200) @@ -346,7 +335,6 @@ class API(wsgi.Router): instance_resource = InstanceController().create_resource() path = "/{tenant_id}/instances" mapper.resource("instance", path, controller=instance_resource, - collection={'detail': 'GET'}, member={'action': 'POST'}) # TODO(ed-): remove this when all mention of flavorservice diff --git a/reddwarf/instance/views.py b/reddwarf/instance/views.py index b038c150ea..6a26156341 100644 --- a/reddwarf/instance/views.py +++ b/reddwarf/instance/views.py @@ -51,8 +51,11 @@ class InstanceView(object): "id": self.instance.id, "name": self.instance.name, "status": self.instance.status, - "links": self._build_links() + "links": self._build_links(), + "flavor": self._build_flavor_info(), } + if self.add_volumes: + instance_dict['volume'] = {'size': self.instance.volume_size} dns_support = config.Config.get("reddwarf_dns_support", 'False') if utils.bool_from_string(dns_support): instance_dict['hostname'] = self.instance.hostname @@ -62,6 +65,16 @@ class InstanceView(object): def _build_links(self): return create_links("instances", self.req, self.instance.id) + def _build_flavor_info(self): + return { + "id": self.instance.flavor_id, + "links": self._build_flavor_links() + } + + def _build_flavor_links(self): + return create_links("flavors", self.req, + self.instance.flavor_id) + class InstanceDetailView(InstanceView): """Works with a full-blown instance.""" @@ -74,38 +87,28 @@ class InstanceDetailView(InstanceView): self.add_addresses = add_addresses self.add_volumes = add_volumes - def _build_flavor_info(self): - return { - "id": self.instance.flavor_id, - "links": self._build_flavor_links() - } def data(self): result = super(InstanceDetailView, self).data() result['instance']['created'] = self.instance.created - result['instance']['flavor'] = self._build_flavor_info() result['instance']['updated'] = self.instance.updated - if self.add_volumes: - result['instance']['volume'] = { - 'size':self.instance.volume_size - } + if self.add_addresses: ip = get_ip_address(self.instance.addresses) if ip is not None and len(ip) > 0: result['instance']['ip'] = ip return result - def _build_flavor_links(self): - return create_links("flavors", self.req, - self.instance.flavor_id) - class InstancesView(object): """Shows a list of SimpleInstance objects.""" - def __init__(self, instances, req=None): + def __init__(self, instances, req=None, add_addresses=False, + add_volumes=True): self.instances = instances self.req = req + self.add_addresses = add_addresses + self.add_volumes = add_volumes def data(self): data = [] @@ -115,19 +118,6 @@ class InstancesView(object): return {'instances': data} def data_for_instance(self, instance): - view = InstanceView(instance, req=self.req) + view = InstanceView(instance, req=self.req, + add_volumes=self.add_volumes) return view.data()['instance'] - - -class InstancesDetailView(InstancesView): - - def __init__(self, instances, req=None, add_addresses=False, - add_volumes=True): - super(InstancesDetailView, self).__init__(instances, req) - self.add_addresses = add_addresses - self.add_volumes = add_volumes - - def data_for_instance(self, instance): - return InstanceDetailView(instance, req=self.req, - add_addresses=self.add_addresses, - add_volumes=self.add_volumes).data()['instance']