Add delete composed node command
Add new command 'rsd node delete' to allow user to delete composed node(s) by specifying node ID. Change-Id: If0f8bf80ab5a48b2fb85d2082d85973006a28a9b
This commit is contained in:
parent
d043f3be0c
commit
fd3fb28906
@ -39,3 +39,24 @@ class ComposeNode(command.Command):
|
||||
rsd_client.node.compose(args)
|
||||
print("Request to compose node %s was accepted"
|
||||
% parsed_args.name)
|
||||
|
||||
|
||||
class DeleteNode(command.Command):
|
||||
_description = "Delete a Node"
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(DeleteNode, self).get_parser(prog_name)
|
||||
parser.add_argument(
|
||||
'node',
|
||||
nargs='+',
|
||||
metavar='<node>',
|
||||
help='ID of the node(s) to delete.')
|
||||
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
self.log.debug("take_action(%s)", parsed_args)
|
||||
rsd_client = self.app.client_manager.rsd
|
||||
for node in parsed_args.node:
|
||||
rsd_client.node.delete(node)
|
||||
print("Node {0} has been deleted.".format(node))
|
||||
|
@ -24,12 +24,21 @@ class ClusterManagerTest(testtools.TestCase):
|
||||
def setUp(self):
|
||||
super(ClusterManagerTest, self).setUp()
|
||||
self.client = mock.Mock()
|
||||
self.client._nodes_path = '/redfish/v1/Nodes'
|
||||
self.mgr = node.NodeManager(self.client)
|
||||
|
||||
def test_compose(self):
|
||||
def test_compose_node(self):
|
||||
mock_node_collection = mock.Mock()
|
||||
self.client.get_node_collection.return_value = mock_node_collection
|
||||
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'})
|
||||
|
||||
def test_delete_node(self):
|
||||
node_id = '1'
|
||||
mock_node = mock.Mock()
|
||||
self.client.get_node.return_value = mock_node
|
||||
self.mgr.delete(node_id)
|
||||
self.mgr.client.get_node.assert_called_once_with('/redfish/v1/Nodes/1')
|
||||
mock_node.delete_node.assert_called_once()
|
||||
|
@ -13,6 +13,8 @@
|
||||
# under the License.
|
||||
#
|
||||
|
||||
import os
|
||||
|
||||
from rsdclient.common import base
|
||||
|
||||
|
||||
@ -20,7 +22,17 @@ class NodeManager(base.Manager):
|
||||
# resource_class = Node
|
||||
_resource_name = 'nodes'
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(NodeManager, self).__init__(*args, **kwargs)
|
||||
self.nodes_path = self.client._nodes_path
|
||||
|
||||
def _get_node_uri(self, node_id):
|
||||
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)
|
||||
|
||||
def delete(self, node_id):
|
||||
self.client.get_node(self._get_node_uri(node_id)).delete_node()
|
||||
|
Loading…
x
Reference in New Issue
Block a user