diff options
author | Jenkins <jenkins@review.openstack.org> | 2013-11-04 07:36:09 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2013-11-04 07:36:09 +0000 |
commit | 657bb1f6bc4d3c03a2df3a7b15beea76652298c7 (patch) | |
tree | 1faf2dd2de42f45b476952da2c54f94fd3523624 | |
parent | 1af5a9809864b67c43f1d5a688f82e2bdb2e067e (diff) | |
parent | 10f428eb765b894f4c2403f8b5def8f4b3a5df5d (diff) | |
download | tuskar-ui-657bb1f6bc4d3c03a2df3a7b15beea76652298c7.tar.gz |
Merge "Rename "node" variables and methods to tuskar_node or baremetal_node"
19 files changed, 364 insertions, 351 deletions
diff --git a/tuskar_ui/api.py b/tuskar_ui/api.py index 2f1aef91..5d981a4f 100644 --- a/tuskar_ui/api.py +++ b/tuskar_ui/api.py @@ -172,47 +172,49 @@ class BaremetalNode(StringIdAPIResourceWrapper): terminal_port = kwargs['terminal_port'] if terminal_port == '': terminal_port = None - node = baremetalclient(request).create(kwargs['service_host'], - kwargs['cpus'], - kwargs['memory_mb'], - kwargs['local_gb'], - kwargs['prov_mac_address'], - kwargs['pm_address'] or None, - kwargs['pm_user'] or None, - kwargs['pm_password'], - terminal_port) - return cls(node) + baremetal_node = baremetalclient(request).create( + kwargs['service_host'], + kwargs['cpus'], + kwargs['memory_mb'], + kwargs['local_gb'], + kwargs['prov_mac_address'], + kwargs['pm_address'] or None, + kwargs['pm_user'] or None, + kwargs['pm_password'], + terminal_port) + return cls(baremetal_node) @classmethod - def get(cls, request, node_id): - node = cls(baremetalclient(request).get(node_id)) - node.request = request + def get(cls, request, baremetal_node_id): + baremetal_node = cls(baremetalclient(request).get(baremetal_node_id)) + baremetal_node.request = request try: # Nova instance info will be added to baremetal node attributes nova_instance = nova.server_get(request, - node.instance_uuid) + baremetal_node.instance_uuid) except Exception: nova_instance = None LOG.debug("Couldn't obtain nova.server_get instance for " - "baremetal node %s" % node_id) + "baremetal node %s" % baremetal_node_id) if nova_instance: # If baremetal is provisioned, there is a nova instance. addresses = nova_instance._apiresource.addresses.get('ctlplane') if addresses: - node.ip_address_other = (", " - .join([addr['addr'] for addr in addresses])) - node.status = (nova_instance._apiresource. - _info['OS-EXT-STS:vm_state']) - node.power_management = "" - if node.pm_user: - node.power_management = node.pm_user + "/********" + baremetal_node.ip_address_other = ", ".join( + [addr['addr'] for addr in addresses]) + baremetal_node.status = nova_instance._apiresource._info[ + 'OS-EXT-STS:vm_state'] + baremetal_node.power_management = "" + if baremetal_node.pm_user: + baremetal_node.power_management = ( + baremetal_node.pm_user + "/********") else: # If baremetal is unprovisioned, there is no nova instance. - node.status = 'unprovisioned' + baremetal_node.status = 'unprovisioned' # Returning baremetal node containing nova instance info - return node + return baremetal_node @classmethod def list(cls, request): @@ -222,10 +224,12 @@ class BaremetalNode(StringIdAPIResourceWrapper): @classmethod def list_unracked(cls, request): try: - racked_node_ids = [node.nova_baremetal_node_id - for node in Node.list(request)] - return [bn for bn in BaremetalNode.list(request) - if bn.id not in racked_node_ids] + racked_baremetal_node_ids = [ + tuskar_node.nova_baremetal_node_id + for tuskar_node in TuskarNode.list(request)] + return [baremetal_node + for baremetal_node in BaremetalNode.list(request) + if baremetal_node.id not in racked_baremetal_node_ids] except requests.ConnectionError: return [] @@ -261,18 +265,16 @@ class BaremetalNode(StringIdAPIResourceWrapper): return [] -class Node(StringIdAPIResourceWrapper): - """ - Wrapper for the Node object returned by the - dummy model. - """ +class TuskarNode(StringIdAPIResourceWrapper): + """Wrapper for the TuskarNode object returned by the dummy model.""" + _attrs = ['id', 'nova_baremetal_node_id'] @classmethod - def get(cls, request, node_id): - node = cls(tuskarclient(request).nodes.get(node_id)) - node.request = request - return node + def get(cls, request, tuskar_node_id): + tuskar_node = cls(tuskarclient(request).nodes.get(tuskar_node_id)) + tuskar_node.request = request + return tuskar_node @classmethod def list(cls, request): @@ -370,28 +372,32 @@ class Rack(StringIdAPIResourceWrapper): """Wrapper for the Rack object returned by the dummy model. """ + _attrs = ['id', 'name', 'location', 'subnet', 'nodes', 'state', 'capacities'] @classmethod def create(cls, request, **kwargs): - nodes = kwargs.get('nodes', []) + baremetal_node_ids = kwargs.get('baremetal_nodes', []) ## FIXME: set nodes here rack = tuskarclient(request).racks.create( name=kwargs['name'], location=kwargs['location'], subnet=kwargs['subnet'], - nodes=nodes, + nodes=baremetal_node_ids, resource_class={'id': kwargs['resource_class_id']}, slots=0) return cls(rack) @classmethod def update(cls, request, rack_id, rack_kwargs): - ## FIXME: set nodes here rack_args = copy.copy(rack_kwargs) # remove rack_id from kwargs (othervise it is duplicated) rack_args.pop('rack_id', None) + ## FIXME: set nodes here + baremetal_node_ids = rack_args.pop('baremetal_nodes', None) + if baremetal_node_ids: + rack_args['nodes'] = baremetal_node_ids # correct data mapping for resource_class if 'resource_class_id' in rack_args: rack_args['resource_class'] = { @@ -421,20 +427,19 @@ class Rack(StringIdAPIResourceWrapper): tuskarclient(request).racks.delete(rack_id) @property - def node_ids(self): - """List of unicode ids of nodes added to rack.""" - return [unicode(node['id']) for node in self.nodes] + def tuskar_node_ids(self): + """List of unicode ids of tuskar nodes added to rack.""" + return [unicode(tuskar_node['id']) for tuskar_node in self.nodes] @cached_property - def list_nodes(self): - return [Node.get(self.request, node['id']) for node in self.nodes] + def list_tuskar_nodes(self): + return [TuskarNode.get(self.request, tuskar_node['id']) + for tuskar_node in self.nodes] - @property + @cached_property def list_baremetal_nodes(self): - if not hasattr(self, '_baremetal_nodes'): - self._baremetal_nodes = [node.nova_baremetal_node - for node in self.list_nodes] - return self._baremetal_nodes + return [tuskar_node.nova_baremetal_node + for tuskar_node in self.list_tuskar_nodes] @property def nodes_count(self): @@ -479,7 +484,8 @@ class Rack(StringIdAPIResourceWrapper): def aggregated_alerts(self): # FIXME: for now return only list of nodes (particular alerts are not # used) - return [node for node in self.list_nodes if node.alerts] + return [tuskar_node for tuskar_node in self.list_tuskar_nodes + if tuskar_node.alerts] @cached_property def list_flavors(self): @@ -616,13 +622,13 @@ class ResourceClass(StringIdAPIResourceWrapper): str(rack.resource_class_id) == self.id] @cached_property - def nodes(self): - return [n for n in Node.list(self.request) - if n.rack_id in self.racks_ids] + def tuskar_nodes(self): + return [tuskar_node for tuskar_node in TuskarNode.list(self.request) + if tuskar_node.rack_id in self.racks_ids] @property def nodes_count(self): - return len(self.nodes) + return len(self.tuskar_nodes) @property def flavors_ids(self): diff --git a/tuskar_ui/infrastructure/resource_management/nodes/tables.py b/tuskar_ui/infrastructure/resource_management/nodes/tables.py index 992ea23e..5951bf4c 100644 --- a/tuskar_ui/infrastructure/resource_management/nodes/tables.py +++ b/tuskar_ui/infrastructure/resource_management/nodes/tables.py @@ -29,12 +29,14 @@ class DeleteNodes(tables.DeleteAction): def delete(self, request, obj_id): try: - node = tuskar.Node.get(request, obj_id) - rack = node.rack - nodes = [{'id': node_id} - for node_id in rack.node_ids - if node_id != obj_id] - tuskar.Rack.update(request, rack.id, {'nodes': nodes}) + tuskar_node = tuskar.TuskarNode.get(request, obj_id) + rack = tuskar_node.rack + tuskar_node_ids = [{'id': tuskar_node_id} + for tuskar_node_id in rack.tuskar_node_ids + if tuskar_node_id != obj_id] + tuskar.Rack.update(request, rack.id, { + 'baremetal_nodes': tuskar_node_ids, + }) except Exception: exceptions.handle(request, _("Error deleting node.")) return False @@ -44,6 +46,7 @@ class NodesFilterAction(tables.FilterAction): def filter(self, table, nodes, filter_string): """ Naive case-insensitive search. """ q = filter_string.lower() + # This is used both for Tuskar and Baremetal nodes. return [node for node in nodes if q in node.name.lower()] diff --git a/tuskar_ui/infrastructure/resource_management/nodes/tabs.py b/tuskar_ui/infrastructure/resource_management/nodes/tabs.py index 55de7290..8b48a772 100644 --- a/tuskar_ui/infrastructure/resource_management/nodes/tabs.py +++ b/tuskar_ui/infrastructure/resource_management/nodes/tabs.py @@ -27,16 +27,16 @@ class OverviewTab(tabs.Tab): preload = False def get_context_data(self, request): - node = self.tab_group.kwargs['node'] + tuskar_node = self.tab_group.kwargs['tuskar_node'] try: - running_instances = len(node.running_virtual_machines) + running_instances = len(tuskar_node.running_virtual_machines) except requests.exceptions.ConnectionError: running_instances = _("Unknown") messages.warning( request, _("Can't retrieve the running instances from the overcloud.")) return { - 'node': node, + 'tuskar_node': tuskar_node, 'running_instances': running_instances, } diff --git a/tuskar_ui/infrastructure/resource_management/nodes/tests.py b/tuskar_ui/infrastructure/resource_management/nodes/tests.py index b34a1b22..f0d09851 100644 --- a/tuskar_ui/infrastructure/resource_management/nodes/tests.py +++ b/tuskar_ui/infrastructure/resource_management/nodes/tests.py @@ -27,10 +27,10 @@ class NodeViewTests(test.BaseAdminViewTests): @test.create_stubs({tuskar.BaremetalNode: ('list_unracked',), }) def test_unracked(self): - unracked_nodes = self.baremetal_unracked_nodes.list() + unracked_baremetal_nodes = self.baremetal_unracked_nodes.list() tuskar.BaremetalNode.list_unracked( - mox.IsA(http.HttpRequest)).AndReturn(unracked_nodes) + mox.IsA(http.HttpRequest)).AndReturn(unracked_baremetal_nodes) self.mox.ReplayAll() res = self.client.get(self.unracked_page) @@ -39,55 +39,52 @@ class NodeViewTests(test.BaseAdminViewTests): 'infrastructure/resource_management/nodes/unracked.html') unracked_nodes_table = res.context['unracked_nodes_table'].data - self.assertItemsEqual(unracked_nodes_table, unracked_nodes) + self.assertItemsEqual(unracked_nodes_table, unracked_baremetal_nodes) - @test.create_stubs({tuskar.Node: ('get', 'running_virtual_machines', - 'list_flavors'), - tuskar.Rack: ('get',), - tuskar.BaremetalNode: ('get',)}) + @test.create_stubs({ + tuskar.TuskarNode: ('get', 'running_virtual_machines', 'list_flavors'), + tuskar.Rack: ('get',), + tuskar.BaremetalNode: ('get',), + }) def test_detail_node(self): - node = self.tuskar_nodes.first() - node.request = self.request + tuskar_node = self.tuskar_nodes.first() + tuskar_node.request = self.request rack = self.tuskar_racks.first() - bm_node = self.baremetal_nodes.first() + baremetal_node = self.baremetal_nodes.first() - tuskar.Node.get(mox.IsA(http.HttpRequest), - node.id).AndReturn(node) + tuskar.TuskarNode.get(mox.IsA(http.HttpRequest), + tuskar_node.id).AndReturn(tuskar_node) tuskar.Rack.get(mox.IsA(http.HttpRequest), rack.id).AndReturn(rack) tuskar.BaremetalNode.get(mox.IsA(http.HttpRequest), - bm_node.id).AndReturn(bm_node) + baremetal_node.id).AndReturn(baremetal_node) self.mox.ReplayAll() - tuskar.Node.running_virtual_machines = [] - tuskar.Node.list_flavors = [] + tuskar.TuskarNode.running_virtual_machines = [] + tuskar.TuskarNode.list_flavors = [] - url = urlresolvers.reverse('horizon:infrastructure:' - 'resource_management:nodes:' - 'detail', - args=[node.id]) + url = urlresolvers.reverse( + 'horizon:infrastructure:resource_management:nodes:detail', + args=[tuskar_node.id]) res = self.client.get(url) - self.assertTemplateUsed(res, - 'infrastructure/resource_management/' - 'nodes/detail.html') + self.assertTemplateUsed( + res, 'infrastructure/resource_management/nodes/detail.html') - @test.create_stubs({tuskar.Node: ('get',)}) + @test.create_stubs({tuskar.TuskarNode: ('get',)}) def test_detail_node_exception(self): - node = self.tuskar_nodes.first() + tuskar_node = self.tuskar_nodes.first() - tuskar.Node.get( - mox.IsA(http.HttpRequest), - node.id).AndRaise(self.exceptions.tuskar) + tuskar.TuskarNode.get(mox.IsA(http.HttpRequest), + tuskar_node.id).AndRaise(self.exceptions.tuskar) self.mox.ReplayAll() - url = urlresolvers.reverse('horizon:infrastructure:' - 'resource_management:nodes:' - 'detail', - args=[node.id]) + url = urlresolvers.reverse( + 'horizon:infrastructure:resource_management:nodes:detail', + args=[tuskar_node.id]) res = self.client.get(url) self.assertRedirectsNoFollow( res, - urlresolvers.reverse('horizon:infrastructure:resource_management:' - 'index')) + urlresolvers.reverse( + 'horizon:infrastructure:resource_management:index')) diff --git a/tuskar_ui/infrastructure/resource_management/nodes/views.py b/tuskar_ui/infrastructure/resource_management/nodes/views.py index 68a7f1a3..896abfda 100644 --- a/tuskar_ui/infrastructure/resource_management/nodes/views.py +++ b/tuskar_ui/infrastructure/resource_management/nodes/views.py @@ -30,12 +30,12 @@ class UnrackedView(horizon_tables.DataTableView): def get_data(self): try: - nodes = tuskar.BaremetalNode.list_unracked(self.request) + baremetal_nodes = tuskar.BaremetalNode.list_unracked(self.request) except Exception: - nodes = [] + baremetal_nodes = [] exceptions.handle(self.request, - _('Unable to retrieve nodes.')) - return nodes + _('Unable to retrieve baremetal nodes.')) + return baremetal_nodes class DetailView(horizon_tabs.TabView): @@ -44,26 +44,25 @@ class DetailView(horizon_tabs.TabView): def get_context_data(self, **kwargs): context = super(DetailView, self).get_context_data(**kwargs) - context["node"] = self.get_data() + context["tuskar_node"] = self.get_data() return context def get_data(self): - if not hasattr(self, "_node"): + if not hasattr(self, "_tuskar_node"): + tuskar_node_id = self.kwargs['node_id'] try: - node_id = self.kwargs['node_id'] - node = tuskar.Node.get(self.request, node_id) + tuskar_node = tuskar.TuskarNode.get(self.request, + tuskar_node_id) except Exception: redirect = urlresolvers.reverse( 'horizon:infrastructure:resource_management:index') exceptions.handle(self.request, _('Unable to retrieve details for ' - 'node "%s".') - % node_id, + 'node "%s".') % tuskar_node_id, redirect=redirect) - self._node = node - return self._node + self._tuskar_node = tuskar_node + return self._tuskar_node def get_tabs(self, request, *args, **kwargs): - node = self.get_data() - return self.tab_group_class(request, node=node, - **kwargs) + tuskar_node = self.get_data() + return self.tab_group_class(request, tuskar_node=tuskar_node, **kwargs) diff --git a/tuskar_ui/infrastructure/resource_management/racks/tabs.py b/tuskar_ui/infrastructure/resource_management/racks/tabs.py index ccf2aab1..a0569e22 100644 --- a/tuskar_ui/infrastructure/resource_management/racks/tabs.py +++ b/tuskar_ui/infrastructure/resource_management/racks/tabs.py @@ -39,12 +39,12 @@ class NodesTab(tabs.TableTab): def get_nodes_table_data(self): try: rack = self.tab_group.kwargs['rack'] - nodes = rack.list_nodes + tuskar_nodes = rack.list_tuskar_nodes except Exception: - nodes = [] + tuskar_nodes = [] exceptions.handle(self.tab_group.request, _('Unable to retrieve node list.')) - return nodes + return tuskar_nodes class RackDetailTabs(tabs.TabGroup): diff --git a/tuskar_ui/infrastructure/resource_management/racks/tests.py b/tuskar_ui/infrastructure/resource_management/racks/tests.py index 899c49db..c66b8d7b 100644 --- a/tuskar_ui/infrastructure/resource_management/racks/tests.py +++ b/tuskar_ui/infrastructure/resource_management/racks/tests.py @@ -53,7 +53,7 @@ class RackViewTests(test.BaseAdminViewTests): tuskar.ResourceClass: ('list',), tuskar.BaremetalNode: ('create',)}) def test_create_rack_post(self): - node = self.baremetal_nodes.first() + baremetal_node = self.baremetal_nodes.first() tuskar.Rack.list( mox.IsA(http.HttpRequest)).AndReturn( @@ -68,14 +68,14 @@ class RackViewTests(test.BaseAdminViewTests): pm_address=u'', pm_user=u'', pm_password=u'', - terminal_port=None).AndReturn(node) + terminal_port=None).AndReturn(baremetal_node) tuskar.Rack.create( mox.IsA(http.HttpRequest), name='New Rack', resource_class_id=u'1', location='Tokyo', subnet='1.2.3.4/24', - nodes=[{'id': '11'}]).AndReturn(None) + baremetal_nodes=[{'id': '11'}]).AndReturn(None) tuskar.ResourceClass.list( mox.IsA(http.HttpRequest)).AndReturn( self.tuskar_resource_classes.list()) @@ -101,14 +101,14 @@ class RackViewTests(test.BaseAdminViewTests): resp = self.client.post(url, data) self.assertRedirectsNoFollow(resp, self.index_page_racks_tab) - @test.create_stubs({tuskar.Rack: ('get', 'list_nodes'), + @test.create_stubs({tuskar.Rack: ('get', 'list_tuskar_nodes'), tuskar.ResourceClass: ('list',)}) def test_edit_rack_get(self): rack = self.tuskar_racks.first() tuskar.Rack.get( mox.IsA(http.HttpRequest), rack.id).AndReturn(rack) - tuskar.Rack.list_nodes = [] + tuskar.Rack.list_tuskar_nodes = [] tuskar.Rack.get(mox.IsA(http.HttpRequest), rack.id).AndReturn(rack) tuskar.ResourceClass.list( mox.IsA(http.HttpRequest)).AndReturn( @@ -122,8 +122,10 @@ class RackViewTests(test.BaseAdminViewTests): self.assertEqual(res.status_code, 200) self.assertTemplateUsed(res, 'infrastructure/_workflow_base.html') - @test.create_stubs({tuskar.Rack: ('get', 'list', 'update', 'list_nodes'), - tuskar.ResourceClass: ('list',)}) + @test.create_stubs({ + tuskar.Rack: ('get', 'list', 'update', 'list_tuskar_nodes'), + tuskar.ResourceClass: ('list',), + }) def test_edit_rack_post(self): rack = self.tuskar_racks.first() @@ -133,7 +135,7 @@ class RackViewTests(test.BaseAdminViewTests): 'rack_id': u'1', 'location': 'New Location', 'subnet': '127.10.10.0/24', - 'nodes': [], + 'baremetal_nodes': [], } data = { @@ -149,7 +151,7 @@ class RackViewTests(test.BaseAdminViewTests): tuskar.Rack.get( mox.IsA(http.HttpRequest), rack.id).AndReturn(rack) - tuskar.Rack.list_nodes = [] + tuskar.Rack.list_tuskar_nodes = [] tuskar.Rack.get( mox.IsA(http.HttpRequest), rack.id).AndReturn(rack) tuskar.Rack.list( @@ -287,8 +289,10 @@ class RackViewTests(test.BaseAdminViewTests): self.assertMessageCount(success=1) self.assertMessageCount(error=0) - @test.create_stubs({tuskar.Rack: ('get', 'list_nodes', 'list_flavors'), - tuskar.ResourceClass: ('get',)}) + @test.create_stubs({ + tuskar.Rack: ('get', 'list_tuskar_nodes', 'list_flavors'), + tuskar.ResourceClass: ('get',), + }) def test_detail_rack(self): rack = self.tuskar_racks.first() rack.request = self.request @@ -300,7 +304,7 @@ class RackViewTests(test.BaseAdminViewTests): resource_class.id).AndReturn(resource_class) self.mox.ReplayAll() - tuskar.Rack.list_nodes = [] + tuskar.Rack.list_tuskar_nodes = [] tuskar.Rack.list_flavors = [] url = urlresolvers.reverse('horizon:infrastructure:' @@ -368,10 +372,10 @@ class RackViewTests(test.BaseAdminViewTests): self.assertEquals(res.content, state_json) @test.create_stubs({ - tuskar.Rack: ('get', 'list_nodes', 'list_flavors', 'update', - 'node_ids'), + tuskar.Rack: ('get', 'list_tuskar_nodes', 'list_flavors', 'update', + 'tuskar_node_ids'), tuskar.ResourceClass: ('get',), - tuskar.Node: ('get',), + tuskar.TuskarNode: ('get',), tuskar.BaremetalNode: ('get',), }) def test_node_delete(self): @@ -381,19 +385,21 @@ class RackViewTests(test.BaseAdminViewTests): baremetal_node = baremetal_nodes[0] tuskar_node = self.tuskar_nodes.first() - tuskar.Rack.list_nodes = baremetal_nodes - tuskar.Rack.node_ids = [node.id for node in baremetal_nodes] + # FIXME: evidently something is wrong here + tuskar.Rack.list_tuskar_nodes = baremetal_nodes + tuskar.Rack.tuskar_node_ids = [bm_node.id + for bm_node in baremetal_nodes] tuskar.Rack.list_flavors = [] tuskar.Rack.get(mox.IsA(http.HttpRequest), rack.id).AndReturn(rack) - tuskar.Node.get(mox.IsA(http.HttpRequest), - baremetal_node.id).AndReturn(tuskar_node) + tuskar.TuskarNode.get(mox.IsA(http.HttpRequest), + baremetal_node.id).AndReturn(tuskar_node) tuskar.Rack.get(None, rack.id).AndReturn(rack) # called by node.rack - tuskar.Rack.update(mox.IsA(http.HttpRequest), rack.id, - {'nodes': [{'id': node_id} - for node_id in tuskar.Rack.node_ids - if node_id != baremetal_node.id]} - ).AndReturn(rack) + tuskar.Rack.update(mox.IsA(http.HttpRequest), rack.id, { + 'baremetal_nodes': [{'id': node_id} + for node_id in tuskar.Rack.tuskar_node_ids + if node_id != baremetal_node.id], + }).AndReturn(rack) self.mox.ReplayAll() url = urlresolvers.reverse( diff --git a/tuskar_ui/infrastructure/resource_management/racks/views.py b/tuskar_ui/infrastructure/resource_management/racks/views.py index 1a557349..d28dbb82 100644 --- a/tuskar_ui/infrastructure/resource_management/racks/views.py +++ b/tuskar_ui/infrastructure/resource_management/racks/views.py @@ -65,7 +65,7 @@ class EditView(tuskar_workflows.WorkflowView): def get_initial(self): obj = tuskar.Rack.get(self.request, self.kwargs['rack_id']) - # mac_str = "\n".join([x.mac_address for x in obj.list_nodes]) + # mac_str = "\n".join(x.mac_address for x in obj.list_tuskar_nodes) return {'name': obj.name, 'resource_class_id': obj.resource_class_id, 'location': obj.location, 'subnet': obj.subnet, 'state': obj.state, 'rack_id': self.kwargs['rack_id']} @@ -182,13 +182,12 @@ def top_communicating(request, rack_id=None): "Low level of communication"] rack = tuskar.Rack.get(request, rack_id) - for node in rack.nodes: + for tuskar_node_id in rack.tuskar_node_ids: status = random.randint(0, 3) percentage = random.randint(0, 100) tooltip = ("<p>Node: <strong>{0}</strong></p><p>{1}</p>").format( - node['id'], - statuses[status]) + tuskar_node_id, statuses[status]) data.append({'tooltip': tooltip, 'status': statuses[status], @@ -219,21 +218,20 @@ def node_health(request, rack_id=None): rack = tuskar.Rack.get(request, rack_id) - for node in rack.nodes: + for tuskar_node_id in rack.tuskar_node_ids: rand_index = random.randint(0, 2) percentage = (2 - rand_index) * 50 color = colors[rand_index] tooltip = ("<p>Node: <strong>{0}</strong></p><p>{1}</p>").format( - node['id'], - statuses[rand_index]) + tuskar_node_id, statuses[rand_index]) data.append({'tooltip': tooltip, 'color': color, 'status': statuses[rand_index], 'percentage': percentage, - 'id': node['id'], - 'name': node['id'], + 'id': tuskar_node_id, + 'name': tuskar_node_id, 'url': "FIXME url"}) data.sort(key=lambda x: x['percentage']) diff --git a/tuskar_ui/infrastructure/resource_management/racks/workflows.py b/tuskar_ui/infrastructure/resource_management/racks/workflows.py index 19c51f90..2d511eee 100644 --- a/tuskar_ui/infrastructure/resource_management/racks/workflows.py +++ b/tuskar_ui/infrastructure/resource_management/racks/workflows.py @@ -103,11 +103,10 @@ class NodeCreateAction(workflows.Action): if table: formset = table.get_formset() if formset.is_valid(): - cleaned_data['nodes'] = [form.cleaned_data - for form in formset - if form.cleaned_data - and not - form.cleaned_data.get('DELETE')] + cleaned_data['nodes'] = [ + form.cleaned_data for form in formset + if form.cleaned_data + and not form.cleaned_data.get('DELETE')] else: raise forms.ValidationError(_("Errors in the nodes list.")) return cleaned_data @@ -166,59 +165,60 @@ class CreateRack(workflows.Workflow): def get_failure_url(self): return self.get_index_url() - def create_or_update_node(self, node_data): - """Creates (if id=='') or updates (otherwise) a node.""" - if node_data['id'] not in ('', None): - node_id = unicode(node_data['id']) + def create_or_update_baremetal_node(self, baremetal_node_data): + """Creates (if id=='') or updates (otherwise) a baremetal node.""" + if baremetal_node_data['id'] not in ('', None): + baremetal_node_id = unicode(baremetal_node_data['id']) # TODO(rdopieralski) there is currently no way to update # a baremetal node # # tuskar.BaremetalNode.update( # self.request, # node_id=node_id, - # service_host=node_data['service_host'], - # cpus=node_data['cpus'], - # memory_mb=node_data['memory_mb'], - # local_gb=node_data['local_gb'], - # prov_mac_address=node_data['mac_address'], - # pm_address=node_data['pm_address'], - # pm_user=node_data['pm_user'], - # pm_password=node_data['pm_password'], - # terminal_port=node_data['terminal_port']) - return node_id + # service_host=baremetal_node_data['service_host'], + # cpus=baremetal_node_data['cpus'], + # memory_mb=baremetal_node_data['memory_mb'], + # local_gb=baremetal_node_data['local_gb'], + # prov_mac_address=baremetal_node_data['mac_address'], + # pm_address=baremetal_node_data['pm_address'], + # pm_user=baremetal_node_data['pm_user'], + # pm_password=baremetal_node_data['pm_password'], + # terminal_port=baremetal_node_data['terminal_port']) + return baremetal_node_id else: - node = tuskar.BaremetalNode.create( + baremetal_node = tuskar.BaremetalNode.create( self.request, - service_host=node_data['service_host'], - cpus=node_data['cpus'], - memory_mb=node_data['memory_mb'], - local_gb=node_data['local_gb'], - prov_mac_address=node_data['mac_address'], - pm_address=node_data['pm_address'], - pm_user=node_data['pm_user'], - pm_password=node_data['pm_password'], - terminal_port=node_data['terminal_port']) - return node.id + service_host=baremetal_node_data['service_host'], + cpus=baremetal_node_data['cpus'], + memory_mb=baremetal_node_data['memory_mb'], + local_gb=baremetal_node_data['local_gb'], + prov_mac_address=baremetal_node_data['mac_address'], + pm_address=baremetal_node_data['pm_address'], + pm_user=baremetal_node_data['pm_user'], + pm_password=baremetal_node_data['pm_password'], + terminal_port=baremetal_node_data['terminal_port']) + return baremetal_node.id def handle(self, request, data): # First, create and/or update nodes - node_ids = [] - for node_data in data['nodes']: + baremetal_node_ids = [] + for baremetal_node_data in data['nodes']: try: - node_id = self.create_or_update_node(node_data) + baremetal_node_id = self.create_or_update_baremetal_node( + baremetal_node_data) except Exception: exceptions.handle(self.request, _("Unable to update node.")) return False else: # Rack.create takes a list of dicts with BaremetalNode ids - node_ids.append({'id': node_id}) + baremetal_node_ids.append({'id': baremetal_node_id}) try: # Then, register the Rack, including the nodes tuskar.Rack.create( request, name=data['name'], resource_class_id=data['resource_class_id'], location=data['location'], subnet=data['subnet'], - nodes=node_ids) + baremetal_nodes=baremetal_node_ids) return True except requests.ConnectionError: @@ -240,11 +240,13 @@ class EditRack(CreateRack): failure_message = _("Unable to update rack.") def handle(self, request, data): - node_ids = [{'id': self.create_or_update_node(node_data)} - for node_data in data['nodes']] + baremetal_nodes_data = data.pop('nodes') + baremetal_node_ids = [ + {'id': self.create_or_update_baremetal_node(baremetal_node_data)} + for baremetal_node_data in baremetal_nodes_data] try: rack_id = self.context['rack_id'] - data['nodes'] = node_ids + data['baremetal_nodes'] = baremetal_node_ids tuskar.Rack.update(request, rack_id, data) return True except Exception: diff --git a/tuskar_ui/infrastructure/resource_management/resource_classes/tests.py b/tuskar_ui/infrastructure/resource_management/resource_classes/tests.py index aa441588..94fac9ee 100644 --- a/tuskar_ui/infrastructure/resource_management/resource_classes/tests.py +++ b/tuskar_ui/infrastructure/resource_management/resource_classes/tests.py @@ -331,7 +331,8 @@ class ResourceClassViewTests(test.BaseAdminViewTests): 'horizon:infrastructure:resource_management:index')) @test.create_stubs({ - tuskar.ResourceClass: ('get', 'list_flavors', 'list_racks', 'nodes') + tuskar.ResourceClass: ('get', 'list_flavors', 'list_racks', + 'tuskar_nodes') }) def test_detail_get(self): resource_class = self.tuskar_resource_classes.first() @@ -345,7 +346,7 @@ class ResourceClassViewTests(test.BaseAdminViewTests): tuskar.ResourceClass.list_flavors = flavors tuskar.ResourceClass.list_racks = racks - tuskar.ResourceClass.nodes = [] + tuskar.ResourceClass.tuskar_nodes = [] url = urlresolvers.reverse( 'horizon:infrastructure:resource_management:resource_classes:' diff --git a/tuskar_ui/infrastructure/resource_management/tabs.py b/tuskar_ui/infrastructure/resource_management/tabs.py index 106096b5..7273fea1 100644 --- a/tuskar_ui/infrastructure/resource_management/tabs.py +++ b/tuskar_ui/infrastructure/resource_management/tabs.py @@ -85,11 +85,12 @@ class RacksTab(ProvisioningInfoMixin, tabs.TableTab): def get_context_data(self, request): context = super(RacksTab, self).get_context_data(request) try: - context["nodes"] = tuskar.BaremetalNode.list_unracked(self.request) + context["baremetal_nodes"] = tuskar.BaremetalNode.list_unracked( + self.request) except Exception: - context["nodes"] = [] + context["baremetal_nodes"] = [] exceptions.handle(request, - _('Unable to retrieve nodes.')) + _("Unable to retrieve baremetal nodes.")) return context diff --git a/tuskar_ui/infrastructure/resource_management/templates/resource_management/nodes/_detail_overview.html b/tuskar_ui/infrastructure/resource_management/templates/resource_management/nodes/_detail_overview.html index 97809e39..64539420 100644 --- a/tuskar_ui/infrastructure/resource_management/templates/resource_management/nodes/_detail_overview.html +++ b/tuskar_ui/infrastructure/resource_management/templates/resource_management/nodes/_detail_overview.html @@ -8,15 +8,15 @@ <hr class="header_rule"> <dl> <dt>{% trans "MAC Address" %}</dt> - <dd>{{ node.mac_address|default:_("None") }}</dd> + <dd>{{ tuskar_node.mac_address|default:_("None") }}</dd> <dt>{% trans "IPs" %}</dt> - <dd>{{ node.ip_address_other|default:_("None") }}</dd> + <dd>{{ tuskar_node.ip_address_other|default:_("None") }}</dd> <dt>{% trans "Management IP" %}</dt> - <dd>{{ node.pm_address|default:_("None") }}</dd> + <dd>{{ tuskar_node.pm_address|default:_("None") }}</dd> <dt>{% trans "Power Management" %}</dt> - <dd>{{ node.rack.power_management|default:_("-") }}</dd> + <dd>{{ tuskar_node.rack.power_management|default:_("-") }}</dd> <dt>{% trans "Status" %}</dt> - <dd>{{ node.status|default:_("None") }}</dd> + <dd>{{ tuskar_node.status|default:_("None") }}</dd> </dl> </div> <div class="span4"> @@ -24,17 +24,17 @@ <hr class="header_rule"> <dl> <dt>{% trans "Rack" %}</dt> - {% if node.rack %} - <dd><a href="{% url 'horizon:infrastructure:resource_management:racks:detail' node.rack_id %}">{{ node.rack.name|default:_("None") }}</a></dd> + {% if tuskar_node.rack %} + <dd><a href="{% url 'horizon:infrastructure:resource_management:racks:detail' tuskar_node.rack_id %}">{{ tuskar_node.rack.name|default:_("None") }}</a></dd> {% else %} <dd>{% trans "None" %}</dd> {% endif %} <!--<dt>{% trans "Region" %}</dt> - <dd>{{ node.region|default:_("None") }}</dd>--> + <dd>{{ tuskar_node.region|default:_("None") }}</dd>--> <dt>{% trans "Node Type" %}</dt> - <dd>{{ node.type|default:_("none") }}</dd> + <dd>{{ tuskar_node.type|default:_("none") }}</dd> <dt>{% trans "Provisioned Image" %}</dt> - <dd>{{ node.image|default:_("None") }}</dd> + <dd>{{ tuskar_node.image|default:_("None") }}</dd> <dt>{% trans "Running Instances" %}</dt> <dd>{{ running_instances }}</dd> </dl> @@ -45,18 +45,18 @@ <table class="capacities"> <tr> <td class="capacity_label">{% trans "CPU" %}:</td> - {% if node.is_provisioned %} + {% if tuskar_node.is_provisioned %} <td> <div id="cpu_capacity_usage" class="capacity_bar" data-chart-type="capacity_bar_chart" - data-capacity-limit="{{ node.cpu.value }}" - data-capacity-used="{{ node.cpu.usage }}" + data-capacity-limit="{{ tuskar_node.cpu.value }}" + data-capacity-used="{{ tuskar_node.cpu.usage }}" data-average-capacity-used="{{ 2 }}"> </div> </td> <td> - <a href="#" data-chart-type="modal_line_chart" data-url="/infrastructure/resource_management/racks/usage_data" data-series="cpu">{{ node.cpu.usage }}/{{ node.cpu.value }} {{ node.cpu.unit }}</a> + <a href="#" data-chart-type="modal_line_chart" data-url="/infrastructure/resource_management/racks/usage_data" data-series="cpu">{{ tuskar_node.cpu.usage }}/{{ tuskar_node.cpu.value }} {{ tuskar_node.cpu.unit }}</a> </td> {% else %} <td> @@ -70,18 +70,18 @@ </tr> <tr> <td class="capacity_label">{% trans "RAM" %}:</td> - {% if node.is_provisioned %} + {% if tuskar_node.is_provisioned %} <td> <div id="ram_capacity_usage" class="capacity_bar" data-chart-type="capacity_bar_chart" - data-capacity-limit="{{ node.ram.value }}" - data-capacity-used="{{ node.ram.usage }}" + data-capacity-limit="{{ tuskar_node.ram.value }}" + data-capacity-used="{{ tuskar_node.ram.usage }}" data-average-capacity-used="{{ 12 }}"> </div> </td> <td> - <a href="#" data-chart-type="modal_line_chart" data-url="/infrastructure/resource_management/racks/usage_data" data-series="ram">{{ node.ram.usage }}/{{ node.ram.value }} {{ node.ram.unit }}</a> + <a href="#" data-chart-type="modal_line_chart" data-url="/infrastructure/resource_management/racks/usage_data" data-series="ram">{{ tuskar_node.ram.usage }}/{{ tuskar_node.ram.value }} {{ tuskar_node.ram.unit }}</a> </td> {% else %} <td> @@ -95,18 +95,18 @@ </tr> <tr> <td class="capacity_label">{% trans "Storage" %}:</td> - {% if node.is_provisioned %} + {% if tuskar_node.is_provisioned %} <td> <div id="storage_capacity_usage" class="capacity_bar" data-chart-type="capacity_bar_chart" - data-capacity-limit="{{ node.storage.value }}" - data-capacity-used="{{ node.storage.usage }}" + data-capacity-limit="{{ tuskar_node.storage.value }}" + data-capacity-used="{{ tuskar_node.storage.usage }}" data-average-capacity-used="{{ 6 }}"> </div> </td> <td> - <a href="#" data-chart-type="modal_line_chart" data-url="/infrastructure/resource_management/racks/usage_data" data-series="storage">{{ node.storage.usage }}/{{ node.storage.value }} {{ node.storage.unit }}</a> + <a href="#" data-chart-type="modal_line_chart" data-url="/infrastructure/resource_management/racks/usage_data" data-series="storage">{{ tuskar_node.storage.usage }}/{{ tuskar_node.storage.value }} {{ tuskar_node.storage.unit }}</a> </td> {% else %} <td> @@ -120,18 +120,18 @@ </tr> <tr> <td class="capacity_label">{% trans "Network" %}:</td> - {% if node.is_provisioned %} + {% if tuskar_node.is_provisioned %} <td> <div id="network_capacity_usage" class="capacity_bar" data-chart-type="capacity_bar_chart" - data-capacity-limit="{{ node.network.value }}" - data-capacity-used="{{ node.network.usage }}" + data-capacity-limit="{{ tuskar_node.network.value }}" + data-capacity-used="{{ tuskar_node.network.usage }}" data-average-capacity-used="{{ 40 }}"> </div> </td> <td> - <a href="#" data-chart-type="modal_line_chart" data-url="/infrastructure/resource_management/racks/usage_data" data-series="network">{{ node.network.usage }}/{{ node.network.value }} {{ node.network.unit }}</a> + <a href="#" data-chart-type="modal_line_chart" data-url="/infrastructure/resource_management/racks/usage_data" data-series="network">{{ tuskar_node.network.usage }}/{{ tuskar_node.network.value }} {{ tuskar_node.network.unit }}</a> </td> {% else %} <td> @@ -151,34 +151,34 @@ <div class="span6"> <h4>{% trans "Summary of Instances and Usage" %}</h4> <hr class="header_rule"> - {% if node.is_provisioned %} + {% if tuskar_node.is_provisioned %} <div> - <strong>{{ node.running_instances }}</strong> instances - <strong>{{ node.remaining_capacity }}%</strong> capacity remaining + <strong>{{ tuskar_node.running_instances }}</strong> instances + <strong>{{ tuskar_node.remaining_capacity }}%</strong> capacity remaining </div> <div class="flavor_usage_bar" - data-popup-free='{{ node|remaining_capacity_by_flavors }}' + data-popup-free='{{ tuskar_node|remaining_capacity_by_flavors }}' data-single-bar-orientation="horizontal" data-single-bar-height="50" data-single-bar-width="100%" - data-single-bar-used="{{ node|all_used_instances }}" + data-single-bar-used="{{ tuskar_node|all_used_instances }}" data-single-bar-auto-scale-selector=".flavors_scale_selector" data-single-bar-color-scale-range='["#000060", "#99FFFF"]'> </div> <table class="flavor_usages"> <tr> - {% for flavor in node.list_flavors %} + {% for flavor in tuskar_node.list_flavors %} <td class="flavor_usage_label"> - <a href="{% url 'horizon:infrastructure:resource_management:resource_classes:flavors:detail' node.rack.resource_class.id flavor.id %}">{{ flavor.name }}</a> + <a href="{% url 'horizon:infrastructure:resource_management:resource_classes:flavors:detail' tuskar_node.rack.resource_class.id flavor.id %}">{{ flavor.name }}</a> </td> {% endfor %} </tr> <tr> - {% for flavor in node.list_flavors %} + {% for flavor in tuskar_node.list_flavors %} <td> <div class="flavor_usage_bar flavors_scale_selector" - data-popup-average='<p>Average capacity consumed by instances of {{flavor.name}} flavor in {{node.name}} class.</p> + data-popup-average='<p>Average capacity consumed by instances of {{flavor.name}} flavor in {{tuskar_node.name}} class.</p> <p>{{ flavor.used_instances }}%, <strong>{{ flavor.used_instances }} instances</strong></p>' data-single-bar-orientation="vertical" data-single-bar-height="100%" @@ -192,12 +192,12 @@ {% endfor %} </tr> <tr> - {% for flavor in node.list_flavors %} + {% for flavor in tuskar_node.list_flavors %} <td class="modal_chart flavor_usage_text"><a href="{{ "#" }}">{{ flavor.used_instances }}%</a></td> {% endfor %} </tr> <tr> - {% for flavor in node.list_flavors %} + {% for flavor in tuskar_node.list_flavors %} <td class="flavor_usage_text">{{ flavor.used_instances }} inst.</td> {% endfor %} </tr> @@ -211,9 +211,9 @@ <div class="span6"> <h4>{% trans "Active alerts" %}</h4> <hr class="header_rule"> - {% if node.is_provisioned %} + {% if tuskar_node.is_provisioned %} <ul> - {% for alert in node.alerts %} + {% for alert in tuskar_node.alerts %} <li><i class="icon-warning-sign"></i>{{ alert.message }}</li> {% endfor %} </ul> @@ -227,14 +227,14 @@ <div class="span6"> <h4>{% trans "Top Communicating Nodes" %}</h4> <hr class="header_rule"> - {% if node.is_provisioned %} + {% if tuskar_node.is_provisioned %} <div class="communication_charts_wrapper"> <div class="communication_chart_wrapper"> <h5>The most contacting</h5> <div id="most_contacting_racks" class="communication_chart" data-chart-type="circles_chart" - data-url="{% url 'horizon:infrastructure:resource_management:racks:top_communicating' node.rack_id %}?cond=from" + data-url="{% url 'horizon:infrastructure:resource_management:racks:top_communicating' tuskar_node.rack_id %}?cond=from" data-time="now" data-size="22"> </div> @@ -245,7 +245,7 @@ <div id="most_contacted_racks" class="communication_chart" data-chart-type="circles_chart" - data-url="{% url 'horizon:infrastructure:resource_management:racks:top_communicating' node.rack.id %}?cond=to" + data-url="{% url 'horizon:infrastructure:resource_management:racks:top_communicating' tuskar_node.rack.id %}?cond=to" data-time="now" data-size="22"> </div> diff --git a/tuskar_ui/infrastructure/resource_management/templates/resource_management/nodes/detail.html b/tuskar_ui/infrastructure/resource_management/templates/resource_management/nodes/detail.html index e5b7586a..57c9bf0f 100644 --- a/tuskar_ui/infrastructure/resource_management/templates/resource_management/nodes/detail.html +++ b/tuskar_ui/infrastructure/resource_management/templates/resource_management/nodes/detail.html @@ -13,8 +13,8 @@ <span class="separator"></span> <a href="{% url 'horizon:infrastructure:resource_management:index' %}?tab=resource_management_tabs__racks_tab" >Racks</a> <span class="separator"></span> - {% if node.rack %} - <a href="{% url 'horizon:infrastructure:resource_management:racks:detail' node.rack_id %}">{{ node.rack.name }}</a> + {% if tuskar_node.rack %} + <a href="{% url 'horizon:infrastructure:resource_management:racks:detail' tuskar_node.rack_id %}">{{ tuskar_node.rack.name }}</a> {% else %} <a href="{% url 'horizon:infrastructure:resource_management:nodes:unracked' %}" >Unracked Nodes</a> {% endif %} @@ -22,4 +22,4 @@ </div> {% endblock breadcrumbs %} -{% block name %}{{ node.name }}{% endblock %} +{% block name %}{{ tuskar_node.name }}{% endblock %} diff --git a/tuskar_ui/infrastructure/resource_management/templates/resource_management/racks/_detail_overview.html b/tuskar_ui/infrastructure/resource_management/templates/resource_management/racks/_detail_overview.html index 6b5dc303..cb6f84f2 100644 --- a/tuskar_ui/infrastructure/resource_management/templates/resource_management/racks/_detail_overview.html +++ b/tuskar_ui/infrastructure/resource_management/templates/resource_management/racks/_detail_overview.html @@ -167,10 +167,10 @@ {% for alert in rack.alerts %} <li><i class="icon-warning-sign"></i>{{ alert.message }}</li> {% endfor %} - {% for node in rack.aggregated_alerts %} + {% for tuskar_node in rack.aggregated_alerts %} <li> <i class="icon-warning-sign"></i> - Node <a href="{% url 'horizon:infrastructure:resource_management:nodes:detail' node.id %}">{{ node.name }}</a> has some problems + Node <a href="{% url 'horizon:infrastructure:resource_management:nodes:detail' tuskar_node.id %}">{{ tuskar_node.name }}</a> has some problems </li> {% endfor %} </ul> diff --git a/tuskar_ui/infrastructure/resource_management/templates/resource_management/racks/_index_table.html b/tuskar_ui/infrastructure/resource_management/templates/resource_management/racks/_index_table.html index 8624920a..66f5116c 100644 --- a/tuskar_ui/infrastructure/resource_management/templates/resource_management/racks/_index_table.html +++ b/tuskar_ui/infrastructure/resource_management/templates/resource_management/racks/_index_table.html @@ -1,4 +1,4 @@ {% load i18n %} {% include "infrastructure/resource_management/_provision_info.html" with provisioning_state=provisioning_state %} {{ racks_table.render }} -<a href="{% url 'horizon:infrastructure:resource_management:nodes:unracked' %}">{% trans "View Unracked Nodes"%} ({{nodes|length}})</a> +<a href="{% url 'horizon:infrastructure:resource_management:nodes:unracked' %}">{% trans "View Unracked Nodes"%} ({{baremetal_nodes|length}})</a> diff --git a/tuskar_ui/infrastructure/resource_management/templates/resource_management/resource_classes/_detail_overview.html b/tuskar_ui/infrastructure/resource_management/templates/resource_management/resource_classes/_detail_overview.html index 02b9cb99..6eec6751 100644 --- a/tuskar_ui/infrastructure/resource_management/templates/resource_management/resource_classes/_detail_overview.html +++ b/tuskar_ui/infrastructure/resource_management/templates/resource_management/resource_classes/_detail_overview.html @@ -10,7 +10,7 @@ <dt>{% trans "Racks" %}</dt> <dd><a href="?tab=resource_class_details__racks" >{{ resource_class.list_racks|length }} {% trans "racks" %}</a></dd> <dt>{% trans "Nodes" %}</dt> - <dd>{{ resource_class.nodes|length }} {% trans "nodes" %}</dd> + <dd>{{ resource_class.tuskar_nodes|length }} {% trans "nodes" %}</dd> </dl> </div> diff --git a/tuskar_ui/infrastructure/resource_management/tests.py b/tuskar_ui/infrastructure/resource_management/tests.py index 5e12a4c5..ef876124 100644 --- a/tuskar_ui/infrastructure/resource_management/tests.py +++ b/tuskar_ui/infrastructure/resource_management/tests.py @@ -29,34 +29,28 @@ class ResourceManagementTests(test.BaseAdminViewTests): super(ResourceManagementTests, self).setUp() @test.create_stubs({ - tuskar.ResourceClass: ( - 'get', - 'list', - 'list_racks', - 'nodes'), - tuskar.Node: ( - 'list',), - tuskar.Rack: ( - 'list',)}) + tuskar.ResourceClass: ('get', 'list', 'list_racks', 'tuskar_nodes'), + tuskar.TuskarNode: ('list',), + tuskar.Rack: ('list',), + }) def test_index(self): # ResourceClass stubs resource_classes = self.tuskar_resource_classes.list() resource_class = self.tuskar_resource_classes.first() - nodes = [] + tuskar_nodes = [] racks = [] - tuskar.ResourceClass.nodes = nodes + tuskar.ResourceClass.tuskar_nodes = tuskar_nodes tuskar.ResourceClass.list_racks = racks tuskar.Rack.list(mox.IsA(http.HttpRequest)).AndReturn(racks) tuskar.ResourceClass.list( - mox.IsA(http.HttpRequest)).\ - AndReturn(resource_classes) + mox.IsA(http.HttpRequest)).AndReturn(resource_classes) tuskar.ResourceClass.get( - mox.IsA(http.HttpRequest), resource_class.id).\ - AndReturn(resource_class) + mox.IsA(http.HttpRequest), + resource_class.id).AndReturn(resource_class) # ResourceClass stubs end # Rack stubs @@ -64,7 +58,8 @@ class ResourceManagementTests(test.BaseAdminViewTests): tuskar.Rack.list(mox.IsA(http.HttpRequest)).AndReturn(racks) tuskar.Rack.list(mox.IsA(http.HttpRequest)).AndReturn(racks) - tuskar.Node.list(mox.IsA(http.HttpRequest)).AndReturn(nodes) + tuskar.TuskarNode.list( + mox.IsA(http.HttpRequest)).AndReturn(tuskar_nodes) # Rack stubs end self.mox.ReplayAll() diff --git a/tuskar_ui/test/api_tests/tuskar_tests.py b/tuskar_ui/test/api_tests/tuskar_tests.py index 668b3376..3ed00325 100644 --- a/tuskar_ui/test/api_tests/tuskar_tests.py +++ b/tuskar_ui/test/api_tests/tuskar_tests.py @@ -23,7 +23,7 @@ from tuskar_ui.test import helpers as test class TuskarApiTests(test.APITestCase): def test_baremetal_node_create(self): - node = self.baremetalclient_nodes.first() + baremetal_node = self.baremetalclient_nodes.first() self.mox.StubOutWithMock(baremetal.BareMetalNodeManager, 'create') baremetal.BareMetalNodeManager.create( @@ -35,7 +35,7 @@ class TuskarApiTests(test.APITestCase): '0.0.0.0', 'user', 'password', - 0).AndReturn(node) + 0).AndReturn(baremetal_node) self.mox.ReplayAll() ret_val = api.BaremetalNode.create( @@ -57,12 +57,13 @@ class TuskarApiTests(test.APITestCase): provided (empty), their values are set to None, as this is required by the baremetal VM. """ - node = self.baremetalclient_nodes.first() + baremetal_node = self.baremetalclient_nodes.first() self.mox.StubOutWithMock(baremetal.BareMetalNodeManager, 'create') baremetal.BareMetalNodeManager.create( 'node', 1, 1024, 10, - 'AA:BB:CC:DD:EE:FF', None, None, '', None).AndReturn(node) + 'AA:BB:CC:DD:EE:FF', + None, None, '', None).AndReturn(baremetal_node) self.mox.ReplayAll() ret_val = api.BaremetalNode.create( @@ -72,31 +73,32 @@ class TuskarApiTests(test.APITestCase): self.assertIsInstance(ret_val, api.BaremetalNode) def test_baremetal_node_get(self): - node = self.baremetalclient_nodes.first() + baremetal_node = self.baremetalclient_nodes.first() server = self.servers.first() self.mox.StubOutWithMock(baremetal.BareMetalNodeManager, 'get') - baremetal.BareMetalNodeManager.get(node.id).AndReturn(node) + baremetal.BareMetalNodeManager.get( + baremetal_node.id).AndReturn(baremetal_node) novaclient = self.stub_novaclient() novaclient.servers = self.mox.CreateMockAnything() - novaclient.servers.get(node.instance_uuid).AndReturn(server) + novaclient.servers.get(baremetal_node.instance_uuid).AndReturn(server) self.mox.ReplayAll() - ret_val = api.BaremetalNode.get(self.request, node.id) + ret_val = api.BaremetalNode.get(self.request, baremetal_node.id) self.assertIsInstance(ret_val, api.BaremetalNode) def test_baremetal_node_list(self): - nodes = self.baremetalclient_nodes_all.list() + baremetal_nodes = self.baremetalclient_nodes_all.list() self.mox.StubOutWithMock(baremetal.BareMetalNodeManager, 'list') - baremetal.BareMetalNodeManager.list().AndReturn(nodes) + baremetal.BareMetalNodeManager.list().AndReturn(baremetal_nodes) self.mox.ReplayAll() ret_val = api.BaremetalNode.list(self.request) - for node in ret_val: - self.assertIsInstance(node, api.BaremetalNode) + for baremetal_node in ret_val: + self.assertIsInstance(baremetal_node, api.BaremetalNode) def test_baremetal_node_list_unracked(self): tuskarclient_nodes = self.tuskarclient_nodes.list() @@ -112,45 +114,45 @@ class TuskarApiTests(test.APITestCase): self.mox.ReplayAll() ret_val = api.BaremetalNode.list_unracked(self.request) - for node in ret_val: - self.assertIsInstance(node, api.BaremetalNode) + for baremetal_node in ret_val: + self.assertIsInstance(baremetal_node, api.BaremetalNode) self.assertEquals(1, len(ret_val)) def test_baremetal_node_running_instances(self): - node = self.baremetal_nodes.first() + baremetal_node = self.baremetal_nodes.first() - self.assertEquals(4, node.running_instances) + self.assertEquals(4, baremetal_node.running_instances) def test_baremetal_node_remaining_capacity(self): - node = self.baremetal_nodes.first() + baremetal_node = self.baremetal_nodes.first() - self.assertEquals(96, node.remaining_capacity) + self.assertEquals(96, baremetal_node.remaining_capacity) def test_node_get(self): - node = self.tuskarclient_nodes.first() + tuskar_node = self.tuskarclient_nodes.first() tuskarclient = self.stub_tuskarclient() tuskarclient.nodes = self.mox.CreateMockAnything() - tuskarclient.nodes.get(node.id).AndReturn(node) + tuskarclient.nodes.get(tuskar_node.id).AndReturn(tuskar_node) self.mox.ReplayAll() - ret_val = api.Node.get(self.request, node.id) - self.assertIsInstance(ret_val, api.Node) + ret_val = api.TuskarNode.get(self.request, tuskar_node.id) + self.assertIsInstance(ret_val, api.TuskarNode) def test_node_list(self): - nodes = self.tuskarclient_nodes.list() + tuskar_nodes = self.tuskarclient_nodes.list() tuskarclient = self.stub_tuskarclient() tuskarclient.nodes = self.mox.CreateMockAnything() - tuskarclient.nodes.list().AndReturn(nodes) + tuskarclient.nodes.list().AndReturn(tuskar_nodes) self.mox.ReplayAll() - ret_val = api.Node.list(self.request) - for node in ret_val: - self.assertIsInstance(node, api.Node) + ret_val = api.TuskarNode.list(self.request) + for tuskar_node in ret_val: + self.assertIsInstance(tuskar_node, api.TuskarNode) def test_node_rack(self): - node = self.tuskar_nodes.first() + tuskar_node = self.tuskar_nodes.first() rack = self.tuskarclient_racks.first() tuskarclient = self.stub_tuskarclient() @@ -158,17 +160,17 @@ class TuskarApiTests(test.APITestCase): tuskarclient.racks.get(rack.id).AndReturn(rack) self.mox.ReplayAll() - node.request = self.request - self.assertIsInstance(node.rack, api.Rack) - self.assertEquals('1', node.rack_id) + tuskar_node.request = self.request + self.assertIsInstance(tuskar_node.rack, api.Rack) + self.assertEquals('1', tuskar_node.rack_id) def test_node_nova_baremetal_node(self): - node = self.tuskar_nodes.first() + tuskar_node = self.tuskar_nodes.first() bm_node = self.baremetalclient_nodes.first() self.mox.StubOutWithMock(baremetal.BareMetalNodeManager, 'get') baremetal.BareMetalNodeManager.get( - node.nova_baremetal_node_id).AndReturn(bm_node) + tuskar_node.nova_baremetal_node_id).AndReturn(bm_node) novaclient = self.stub_novaclient() novaclient.servers = self.mox.CreateMockAnything() @@ -177,13 +179,13 @@ class TuskarApiTests(test.APITestCase): 'limit': 21}).AndReturn([]) self.mox.ReplayAll() - node.request = self.request - n = node.nova_baremetal_node - self.assertIsInstance(n, api.BaremetalNode) - self.assertEquals('11', n.id) + tuskar_node.request = self.request + baremetal_node = tuskar_node.nova_baremetal_node + self.assertIsInstance(baremetal_node, api.BaremetalNode) + self.assertEquals('11', baremetal_node.id) def test_node_flavors(self): - node = self.tuskar_nodes.first() + tuskar_node = self.tuskar_nodes.first() rack = self.tuskarclient_racks.first() rc = self.tuskarclient_resource_classes.first() flavors = self.tuskarclient_flavors.list() @@ -197,20 +199,20 @@ class TuskarApiTests(test.APITestCase): tuskarclient.flavors.list(rc.id).AndReturn(flavors) self.mox.ReplayAll() - node.request = self.request - ret_val = node.list_flavors + tuskar_node.request = self.request + ret_val = tuskar_node.list_flavors for flavor in ret_val: self.assertIsInstance(flavor, api.Flavor) self.assertEquals(2, len(ret_val)) def test_node_is_provisioned(self): - node = self.tuskar_nodes.first() - node.request = self.request + tuskar_node = self.tuskar_nodes.first() + tuskar_node.request = self.request bm_node = self.baremetalclient_nodes.first() self.mox.StubOutWithMock(baremetal.BareMetalNodeManager, 'get') baremetal.BareMetalNodeManager.get( - node.nova_baremetal_node_id).AndReturn(bm_node) + tuskar_node.nova_baremetal_node_id).AndReturn(bm_node) novaclient = self.stub_novaclient() novaclient.servers = self.mox.CreateMockAnything() @@ -219,12 +221,12 @@ class TuskarApiTests(test.APITestCase): 'limit': 21}).AndReturn([]) self.mox.ReplayAll() - self.assertFalse(node.is_provisioned) + self.assertFalse(tuskar_node.is_provisioned) def test_node_alerts(self): - node = self.tuskar_nodes.first() + tuskar_node = self.tuskar_nodes.first() - self.assertEquals([], node.alerts) + self.assertEquals([], tuskar_node.alerts) def test_resource_class_list(self): rcs = self.tuskarclient_resource_classes.list() @@ -349,16 +351,16 @@ class TuskarApiTests(test.APITestCase): def test_resource_class_nodes(self): rc = self.tuskar_resource_classes.first() - nodes = self.tuskarclient_nodes.list() + tuskar_nodes = self.tuskarclient_nodes.list() tuskarclient = self.stub_tuskarclient() tuskarclient.nodes = self.mox.CreateMockAnything() - tuskarclient.nodes.list().AndReturn(nodes) + tuskarclient.nodes.list().AndReturn(tuskar_nodes) self.mox.ReplayAll() rc.request = self.request - for node in rc.nodes: - self.assertIsInstance(node, api.Node) + for tuskar_node in rc.tuskar_nodes: + self.assertIsInstance(tuskar_node, api.TuskarNode) self.assertEquals(4, rc.nodes_count) def test_resource_class_flavors(self): @@ -440,7 +442,7 @@ class TuskarApiTests(test.APITestCase): def test_resource_class_aggregated_alerts(self): rc = self.tuskar_resource_classes.list()[0] rc.request = self.request - nodes = self.tuskarclient_nodes.list() + tuskar_nodes = self.tuskarclient_nodes.list() tuskarclient = self.stub_tuskarclient() tuskarclient.racks = self.mox.CreateMockAnything() @@ -449,8 +451,8 @@ class TuskarApiTests(test.APITestCase): tuskarclient.racks.get('2').AndReturn(racks[1]) tuskarclient.nodes = self.mox.CreateMockAnything() - for n in nodes: - tuskarclient.nodes.get(n.id).AndReturn(n) + for tuskar_node in tuskar_nodes: + tuskarclient.nodes.get(tuskar_node.id).AndReturn(tuskar_node) self.mox.ReplayAll() @@ -527,18 +529,18 @@ class TuskarApiTests(test.APITestCase): def test_rack_nodes(self): rack = self.tuskar_racks.first() - nodes = self.tuskarclient_nodes.list() + tuskar_nodes = self.tuskarclient_nodes.list() tuskarclient = self.stub_tuskarclient() tuskarclient.nodes = self.mox.CreateMockAnything() - for n in nodes: - tuskarclient.nodes.get(n.id).AndReturn(n) + for tuskar_node in tuskar_nodes: + tuskarclient.nodes.get(tuskar_node.id).AndReturn(tuskar_node) self.mox.ReplayAll() rack.request = self.request - for node in rack.list_nodes: - self.assertIsInstance(node, api.Node) - self.assertEquals(4, len(rack.node_ids)) + for tuskar_node in rack.list_tuskar_nodes: + self.assertIsInstance(tuskar_node, api.TuskarNode) + self.assertEquals(4, len(rack.tuskar_node_ids)) self.assertEquals(4, rack.nodes_count) def test_rack_resource_class(self): @@ -646,16 +648,16 @@ class TuskarApiTests(test.APITestCase): def test_rack_aggregated_alerts(self): rack = self.tuskar_racks.first() rack.request = self.request - nodes = self.tuskarclient_nodes.list() + tuskar_nodes = self.tuskarclient_nodes.list() tuskarclient = self.stub_tuskarclient() tuskarclient.nodes = self.mox.CreateMockAnything() - for n in nodes: - tuskarclient.nodes.get(n.id).AndReturn(n) + for tuskar_node in tuskar_nodes: + tuskarclient.nodes.get(tuskar_node.id).AndReturn(tuskar_node) self.mox.ReplayAll() - for node in rack.aggregated_alerts: - self.assertIsInstance(node, api.Node) + for tuskar_node in rack.aggregated_alerts: + self.assertIsInstance(tuskar_node, api.TuskarNode) self.assertEquals(0, len(rack.aggregated_alerts)) def test_flavor_create(self): diff --git a/tuskar_ui/test/test_data/tuskar_data.py b/tuskar_ui/test/test_data/tuskar_data.py index f52c6c02..b1f9f190 100644 --- a/tuskar_ui/test/test_data/tuskar_data.py +++ b/tuskar_ui/test/test_data/tuskar_data.py @@ -16,7 +16,7 @@ from openstack_dashboard.test.test_data import utils as test_data_utils from novaclient.v1_1.contrib import baremetal from tuskarclient.v1 import flavors -from tuskarclient.v1 import nodes +from tuskarclient.v1 import nodes as tuskar_nodes from tuskarclient.v1 import racks from tuskarclient.v1 import resource_classes @@ -131,23 +131,23 @@ def data(TEST): TEST.tuskarclient_nodes = test_data_utils.TestDataContainer() TEST.tuskar_nodes = test_data_utils.TestDataContainer() - tuskar_node_1 = nodes.Node( - nodes.NodeManager(None), + tuskar_node_1 = tuskar_nodes.Node( + tuskar_nodes.NodeManager(None), {'id': '1', 'nova_baremetal_node_id': '11', 'rack': {"id": "1"}}) - tuskar_node_2 = nodes.Node( - nodes.NodeManager(None), + tuskar_node_2 = tuskar_nodes.Node( + tuskar_nodes.NodeManager(None), {'id': '2', 'nova_baremetal_node_id': '12', 'rack': {"id": "1"}}) - tuskar_node_3 = nodes.Node( - nodes.NodeManager(None), + tuskar_node_3 = tuskar_nodes.Node( + tuskar_nodes.NodeManager(None), {'id': '3', 'nova_baremetal_node_id': '13', 'rack': {"id": "1"}}) - tuskar_node_4 = nodes.Node( - nodes.NodeManager(None), + tuskar_node_4 = tuskar_nodes.Node( + tuskar_nodes.NodeManager(None), {'id': '4', 'nova_baremetal_node_id': '14', 'rack': {"id": "1"}}) @@ -156,10 +156,10 @@ def data(TEST): tuskar_node_2, tuskar_node_3, tuskar_node_4) - TEST.tuskar_nodes.add(api.Node(tuskar_node_1), - api.Node(tuskar_node_2), - api.Node(tuskar_node_3), - api.Node(tuskar_node_4)) + TEST.tuskar_nodes.add(api.TuskarNode(tuskar_node_1), + api.TuskarNode(tuskar_node_2), + api.TuskarNode(tuskar_node_3), + api.TuskarNode(tuskar_node_4)) TEST.baremetalclient_nodes = test_data_utils.TestDataContainer() TEST.baremetal_nodes = test_data_utils.TestDataContainer() @@ -168,47 +168,50 @@ def data(TEST): TEST.baremetalclient_nodes_all = test_data_utils.TestDataContainer() TEST.baremetal_nodes_all = test_data_utils.TestDataContainer() - node_1 = baremetal.BareMetalNode( + baremetal_node_1 = baremetal.BareMetalNode( baremetal.BareMetalNodeManager(None), {'instance_uuid': 'uuid_11', 'id': '11', 'name': 'node1', 'prov_mac_address': '00:B0:D0:86:AB:F7'}) - node_2 = baremetal.BareMetalNode( + baremetal_node_2 = baremetal.BareMetalNode( baremetal.BareMetalNodeManager(None), {'instance_uuid': 'uuid_12', 'id': '12', 'name': 'node2', 'prov_mac_address': '00:B0:D0:86:AB:F8'}) - node_3 = baremetal.BareMetalNode( + baremetal_node_3 = baremetal.BareMetalNode( baremetal.BareMetalNodeManager(None), {'instance_uuid': 'uuid_13', 'id': '13', 'name': 'node3', 'prov_mac_address': '00:B0:D0:86:AB:F9'}) - node_4 = baremetal.BareMetalNode( + baremetal_node_4 = baremetal.BareMetalNode( baremetal.BareMetalNodeManager(None), {'instance_uuid': 'uuid_14', 'id': '14', 'name': 'node4', 'prov_mac_address': '00:B0:D0:86:AB:F0'}) - node_5 = baremetal.BareMetalNode( + baremetal_node_5 = baremetal.BareMetalNode( baremetal.BareMetalNodeManager(None), {'instance_uuid': 'uuid_15', 'id': '15', 'name': 'node5', 'prov_mac_address': '00:B0:D0:86:AB:F1'}) - TEST.baremetalclient_nodes.add(node_1, node_2, node_3, node_4) - TEST.baremetal_nodes.add(api.BaremetalNode(node_1), - api.BaremetalNode(node_2), - api.BaremetalNode(node_3), - api.BaremetalNode(node_4)) - TEST.baremetalclient_unracked_nodes.add(node_5) - TEST.baremetal_unracked_nodes.add(api.Node(node_5)) - TEST.baremetalclient_nodes_all.add(node_1, node_2, node_3, node_4, node_5) - TEST.baremetal_nodes_all.add(api.BaremetalNode(node_1), - api.BaremetalNode(node_2), - api.BaremetalNode(node_3), - api.BaremetalNode(node_4), - api.BaremetalNode(node_5)) + TEST.baremetalclient_nodes.add(baremetal_node_1, baremetal_node_2, + baremetal_node_3, baremetal_node_4) + TEST.baremetal_nodes.add(api.BaremetalNode(baremetal_node_1), + api.BaremetalNode(baremetal_node_2), + api.BaremetalNode(baremetal_node_3), + api.BaremetalNode(baremetal_node_4)) + TEST.baremetalclient_unracked_nodes.add(baremetal_node_5) + TEST.baremetal_unracked_nodes.add(api.TuskarNode(baremetal_node_5)) + TEST.baremetalclient_nodes_all.add(baremetal_node_1, baremetal_node_2, + baremetal_node_3, baremetal_node_4, + baremetal_node_5) + TEST.baremetal_nodes_all.add(api.BaremetalNode(baremetal_node_1), + api.BaremetalNode(baremetal_node_2), + api.BaremetalNode(baremetal_node_3), + api.BaremetalNode(baremetal_node_4), + api.BaremetalNode(baremetal_node_5)) |