Add new subcommand to set node boot source
Change-Id: I1b1606ce609d8d9c6bafb832767c8cffac18c564
This commit is contained in:
parent
30a0934f61
commit
eec72604a8
|
@ -345,13 +345,13 @@ class DetachEndpoint(command.Command):
|
|||
rsd_client.node.detach(parsed_args.node, parsed_args.resource)
|
||||
|
||||
|
||||
class ResetEndpoint(command.Command):
|
||||
class ResetNode(command.Command):
|
||||
"""Reset the power of the node."""
|
||||
|
||||
_description = "Reset the power of the node"
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(ResetEndpoint, self).get_parser(prog_name)
|
||||
parser = super(ResetNode, self).get_parser(prog_name)
|
||||
parser.add_argument(
|
||||
'node',
|
||||
metavar='<node>',
|
||||
|
@ -366,3 +366,36 @@ class ResetEndpoint(command.Command):
|
|||
self.log.debug("take_action(%s)", parsed_args)
|
||||
rsd_client = self.app.client_manager.rsd
|
||||
rsd_client.node.reset(parsed_args.node, parsed_args.action)
|
||||
|
||||
|
||||
class SetBootSource(command.Command):
|
||||
"""Set the boot source of the node."""
|
||||
|
||||
_description = "Set the boot source of the node"
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(SetBootSource, self).get_parser(prog_name)
|
||||
parser.add_argument(
|
||||
'node',
|
||||
metavar='<node>',
|
||||
help='ID of the node.')
|
||||
parser.add_argument(
|
||||
'--target',
|
||||
metavar='<boot source>',
|
||||
help='Boot source of this node, e.g. "pxe", "hdd".')
|
||||
parser.add_argument(
|
||||
'--enabled',
|
||||
metavar='<frequency>',
|
||||
help='The enabled frequency of this setting, '
|
||||
'e.g. "once", "continuous", "disabled".')
|
||||
parser.add_argument(
|
||||
'--mode',
|
||||
metavar='<boot mode>',
|
||||
help='Boot mode, e.g. "legacy", "uefi".')
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
self.log.debug("take_action(%s)", parsed_args)
|
||||
rsd_client = self.app.client_manager.rsd
|
||||
rsd_client.node.set_boot_source(parsed_args.node, parsed_args.target,
|
||||
parsed_args.enabled, parsed_args.mode)
|
||||
|
|
|
@ -124,3 +124,26 @@ class NodeTest(testtools.TestCase):
|
|||
self.mgr.reset(node_id, 'fake_reset_value')
|
||||
self.mgr.client.get_node.assert_called_once_with('/redfish/v1/Nodes/1')
|
||||
mock_node.reset_node.assert_called_once_with('fake_reset_value')
|
||||
|
||||
def test_set_boot_source(self):
|
||||
node_id = '1'
|
||||
mock_node = mock.Mock()
|
||||
self.client.get_node.return_value = mock_node
|
||||
self.mgr.set_boot_source(node_id, 'pxe')
|
||||
self.mgr.client.get_node.assert_called_once_with('/redfish/v1/Nodes/1')
|
||||
mock_node.set_node_boot_source.assert_called_once_with(
|
||||
'pxe', 'once', None)
|
||||
|
||||
self.client.reset_mock()
|
||||
mock_node.reset_mock()
|
||||
self.mgr.set_boot_source(node_id, 'pxe', 'continuous')
|
||||
self.mgr.client.get_node.assert_called_once_with('/redfish/v1/Nodes/1')
|
||||
mock_node.set_node_boot_source.assert_called_once_with(
|
||||
'pxe', 'continuous', None)
|
||||
|
||||
self.client.reset_mock()
|
||||
mock_node.reset_mock()
|
||||
self.mgr.set_boot_source(node_id, 'pxe', mode='uefi')
|
||||
self.mgr.client.get_node.assert_called_once_with('/redfish/v1/Nodes/1')
|
||||
mock_node.set_node_boot_source.assert_called_once_with(
|
||||
'pxe', 'once', 'uefi')
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
|
||||
import os
|
||||
|
||||
from rsd_lib.resources.v2_1.node import constants as node_cons
|
||||
|
||||
from rsdclient.common import base
|
||||
from rsdclient.common import utils
|
||||
|
||||
|
@ -84,3 +86,10 @@ class NodeManager(base.Manager):
|
|||
def reset(self, node_id, action):
|
||||
node = self.client.get_node(self._get_node_uri(node_id))
|
||||
node.reset_node(action)
|
||||
|
||||
def set_boot_source(self, node_id, target, enabled=None, mode=None):
|
||||
if not enabled:
|
||||
enabled = node_cons.BOOT_SOURCE_ENABLED_ONCE
|
||||
|
||||
node = self.client.get_node(self._get_node_uri(node_id))
|
||||
node.set_node_boot_source(target, enabled, mode)
|
||||
|
|
|
@ -34,7 +34,8 @@ openstack.rsd.v1 =
|
|||
rsd_node_list = rsdclient.osc.v1.node:ListNode
|
||||
rsd_node_attach = rsdclient.osc.v1.node:AttachEndpoint
|
||||
rsd_node_detach = rsdclient.osc.v1.node:DetachEndpoint
|
||||
rsd_node_reset = rsdclient.osc.v1.node:ResetEndpoint
|
||||
rsd_node_reset = rsdclient.osc.v1.node:ResetNode
|
||||
rsd_node_bootsource = rsdclient.osc.v1.node:SetBootSource
|
||||
|
||||
rsd_storage_list = rsdclient.osc.v1.storage_service:ListStorageServices
|
||||
rsd_storage_show = rsdclient.osc.v1.storage_service:ShowStorageServices
|
||||
|
|
Loading…
Reference in New Issue