From 6010d15f618e4038b5439cad626e9257d6652cc8 Mon Sep 17 00:00:00 2001 From: Lucas Alvares Gomes Date: Wed, 2 Apr 2014 11:05:31 +0100 Subject: [PATCH] Show maintenance field in GET /nodes Before the maintenance field was only shown if client issued a GET on a specific node (node-show), but this is an important attribute to have listed in a GET /nodes (node-list), it's a good info to know which nodes from that list are in maintenance mode or not, and the Nova Ironic Driver also need this information to determine which nodes are available to be exposed to Nova or not. Change-Id: Icc31a312130a1c2d5853da64bd9091a93221363c --- ironic/api/controllers/v1/node.py | 2 +- ironic/tests/api/v1/test_nodes.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ironic/api/controllers/v1/node.py b/ironic/api/controllers/v1/node.py index 32f1323097..2d8b08e520 100644 --- a/ironic/api/controllers/v1/node.py +++ b/ironic/api/controllers/v1/node.py @@ -336,7 +336,7 @@ class Node(base.APIBase): @classmethod def _convert_with_links(cls, node, url, expand=True): if not expand: - except_list = ['instance_uuid', 'power_state', + except_list = ['instance_uuid', 'maintenance', 'power_state', 'provision_state', 'uuid'] node.unset_fields_except(except_list) else: diff --git a/ironic/tests/api/v1/test_nodes.py b/ironic/tests/api/v1/test_nodes.py index eb51123750..ab7ba52983 100644 --- a/ironic/tests/api/v1/test_nodes.py +++ b/ironic/tests/api/v1/test_nodes.py @@ -82,6 +82,11 @@ class TestListNodes(base.FunctionalTest): ndict = dbutils.get_test_node() node = self.dbapi.create_node(ndict) data = self.get_json('/nodes') + self.assertIn('instance_uuid', data['nodes'][0]) + self.assertIn('maintenance', data['nodes'][0]) + self.assertIn('power_state', data['nodes'][0]) + self.assertIn('provision_state', data['nodes'][0]) + self.assertIn('uuid', data['nodes'][0]) self.assertEqual(node['uuid'], data['nodes'][0]["uuid"]) self.assertNotIn('driver', data['nodes'][0]) self.assertNotIn('driver_info', data['nodes'][0]) @@ -89,7 +94,6 @@ class TestListNodes(base.FunctionalTest): self.assertNotIn('properties', data['nodes'][0]) self.assertNotIn('chassis_uuid', data['nodes'][0]) self.assertNotIn('reservation', data['nodes'][0]) - self.assertNotIn('maintenance', data['nodes'][0]) self.assertNotIn('console_enabled', data['nodes'][0]) self.assertNotIn('target_power_state', data['nodes'][0]) self.assertNotIn('target_provision_state', data['nodes'][0])