diff options
author | Ladislav Smola <lsmola@redhat.com> | 2013-07-29 13:04:24 +0200 |
---|---|---|
committer | Tomas Sedovic <tomas@sedovic.cz> | 2013-08-01 16:18:58 +0200 |
commit | cafec006cce7566d7745d69287248e88453b20ce (patch) | |
tree | 147371822772140b8a0992a0a935a8c88850a556 | |
parent | b28ae98f317cfd6c8016a5f263e46a94dafbfbe7 (diff) | |
download | tuskar-ui-cafec006cce7566d7745d69287248e88453b20ce.tar.gz |
Node association node.rack
- adding working unoptimal node.rack association
Change-Id: Ifa7266476d407220a3b1507a9896e8d19c59bcf0
-rw-r--r-- | openstack_dashboard/api/tuskar.py | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/openstack_dashboard/api/tuskar.py b/openstack_dashboard/api/tuskar.py index 6c0fabda..8483be83 100644 --- a/openstack_dashboard/api/tuskar.py +++ b/openstack_dashboard/api/tuskar.py @@ -51,6 +51,10 @@ class StringIdAPIResourceWrapper(base.APIResourceWrapper): # (luckily django autoconverts strings to integers when passing string to # django model id) + def __init__(self, apiresource, request=None): + self.request = request + self._apiresource = apiresource + # FIXME # this is redefined from base.APIResourceWrapper, # remove this when tuskarclient returns object instead of dict @@ -153,6 +157,9 @@ class Node(StringIdAPIResourceWrapper): @classmethod def get(cls, request, node_id): + node = cls(cls.manager().get(node_id)) + node.request = request + # FIXME ugly, fix after demo, make abstraction of instance details # this is realy not optimal, but i dont hve time do fix it now instances, more = nova.server_list( @@ -166,8 +173,6 @@ class Node(StringIdAPIResourceWrapper): _apiresource._info['OS-EXT-SRV-ATTR:hypervisor_hostname']) instance_details[id] = instance - node = cls(cls.manager().get(node_id)) - detail = instance_details.get(node_id) if detail: addresses = detail._apiresource.addresses.get('ctlplane') @@ -235,12 +240,19 @@ class Node(StringIdAPIResourceWrapper): @property def rack(self): - # FIXME association should always contain something try: if not hasattr(self, '_rack'): - self._rack = self._apiresource.rack + # FIXME the node.rack association should be stored somewhere + self._rack = None + for rack in Rack.list(self.request): + for node_obj in rack.list_nodes: + if node_obj.id == self.id: + self._rack = rack + return self._rack except: + msg = "Could not obtain Nodes's rack" + LOG.debug(exceptions.error_color(msg)) return None @property @@ -392,11 +404,11 @@ class Rack(StringIdAPIResourceWrapper): @classmethod def list(cls, request, only_free_racks=False): if only_free_racks: - return [Rack(r) for r in + return [Rack(r, request) for r in tuskarclient(request).racks.list() if ( r.resource_class is None)] else: - return [Rack(r) for r in + return [Rack(r, request) for r in tuskarclient(request).racks.list()] @classmethod |