From 6e9aeaaa003f9b41fada0eea295d7bab3835d2d5 Mon Sep 17 00:00:00 2001 From: Lin Yang Date: Thu, 17 Aug 2017 17:45:47 -0700 Subject: [PATCH] Return new composed node ID It should return new composed node ID to user, since this is the only chance for user to get it. Change-Id: I519111febf5e326f6fa9919472e49e9e04c96f02 --- rsdclient/osc/v1/node.py | 5 ++--- rsdclient/tests/v1/test_node.py | 4 +++- rsdclient/v1/node.py | 5 ++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/rsdclient/osc/v1/node.py b/rsdclient/osc/v1/node.py index ad53bea..846b016 100644 --- a/rsdclient/osc/v1/node.py +++ b/rsdclient/osc/v1/node.py @@ -36,9 +36,8 @@ class ComposeNode(command.Command): args = { 'Name': parsed_args.name } - rsd_client.node.compose(args) - print("Request to compose node %s was accepted" - % parsed_args.name) + node_id = rsd_client.node.compose(args) + print("Node {0} has been composed.".format(node_id)) class DeleteNode(command.Command): diff --git a/rsdclient/tests/v1/test_node.py b/rsdclient/tests/v1/test_node.py index c598b12..5c89adc 100644 --- a/rsdclient/tests/v1/test_node.py +++ b/rsdclient/tests/v1/test_node.py @@ -29,11 +29,13 @@ class ClusterManagerTest(testtools.TestCase): def test_compose_node(self): mock_node_collection = mock.Mock() + mock_node_collection.compose_node.return_value = '/redfish/v1/Nodes/1' self.client.get_node_collection.return_value = mock_node_collection - self.mgr.compose({'Name': 'fake_name'}) + result = self.mgr.compose({'Name': 'fake_name'}) self.mgr.client.get_node_collection.assert_called_once() mock_node_collection.compose_node.assert_called_once_with( {'Name': 'fake_name'}) + self.assertEqual(result, '1') def test_delete_node(self): node_id = '1' diff --git a/rsdclient/v1/node.py b/rsdclient/v1/node.py index e27b4d9..84b558d 100644 --- a/rsdclient/v1/node.py +++ b/rsdclient/v1/node.py @@ -30,9 +30,8 @@ class NodeManager(base.Manager): return os.path.join(self.nodes_path, node_id) def compose(self, properites): - # TODO(lin.yang): should return id of new composed node, like - # 'redfish/v1/Nodes/1' - return self.client.get_node_collection().compose_node(properites) + node_uri = self.client.get_node_collection().compose_node(properites) + return node_uri[len(self.nodes_path) + 1:] def delete(self, node_id): self.client.get_node(self._get_node_uri(node_id)).delete_node()