summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLadislav Smola <lsmola@redhat.com>2013-07-29 13:04:24 +0200
committerTomas Sedovic <tomas@sedovic.cz>2013-08-01 16:18:58 +0200
commitcafec006cce7566d7745d69287248e88453b20ce (patch)
tree147371822772140b8a0992a0a935a8c88850a556
parentb28ae98f317cfd6c8016a5f263e46a94dafbfbe7 (diff)
downloadtuskar-ui-cafec006cce7566d7745d69287248e88453b20ce.tar.gz
Node association node.rack
- adding working unoptimal node.rack association Change-Id: Ifa7266476d407220a3b1507a9896e8d19c59bcf0
-rw-r--r--openstack_dashboard/api/tuskar.py24
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