Add "security" parameter in node compose for RSD 2.3

Change-Id: Id27018f59c308e094804efcb97393668f719d387
This commit is contained in:
Lin Yang 2018-09-07 09:32:21 -07:00
parent 50913a252b
commit b525bda2a3
3 changed files with 30 additions and 4 deletions

View File

@ -25,7 +25,8 @@ ARGUMENTS_NAME_MAPPING = {
'memory': 'memory_req',
'remote_drives': 'remote_drive_req',
'local_drives': 'local_drive_req',
'ethernet': 'ethernet_interface_req'
'ethernet': 'ethernet_interface_req',
'security': 'security_req'
}
@ -224,6 +225,29 @@ class ComposeNode(command.Command):
'EthernetInterfaces/LAN1"\n'
' }\n'
'}]'))
parser.add_argument(
'--security',
dest='security',
type=json.loads,
metavar='<security requirements>',
help=('The security requirements of composed node. It may contain '
'one or more optional attributes:\n'
' - TpmPresent: determine if Composed Node should be '
'equipped with TPM module\n\n'
' - TpmInterfaceType: overrides TpmPresent parameter (if '
'specified TPM module expected). System must be equipped '
'with only defined TPM interface type.\n\n'
' - TxtEnabled: determine if Composed Node should have '
'Trusted Execution Technology (TXT) mode enabled.\n\n'
' - ClearTPMOnDelete: used to specify if TPM module should'
' be cleared on composed node DELETE request.\n\n'
'For example:\n'
'{\n'
' "TpmPresent": True,\n'
' "TpmInterfaceType": "TPM2_0",\n'
' "TxtEnabled": True,\n'
' "ClearTPMOnDelete": True\n'
'}'))
return parser
def take_action(self, parsed_args):

View File

@ -42,7 +42,8 @@ class NodeTest(testtools.TestCase):
mock_node_collection.compose_node.assert_called_once_with(
name='fake_name', description='fake_description',
processor_req=None, memory_req=None, remote_drive_req=None,
local_drive_req=None, ethernet_interface_req=None)
local_drive_req=None, ethernet_interface_req=None,
security_req=None)
self.mgr.client.get_node.assert_called_once_with(result)
mock_node.assemble_node.assert_called_once()
self.assertEqual('/redfish/v1/Nodes/1', result)

View File

@ -29,12 +29,13 @@ class NodeManager(base.Manager):
def compose(self, name=None, description=None, processor_req=None,
memory_req=None, remote_drive_req=None, local_drive_req=None,
ethernet_interface_req=None):
ethernet_interface_req=None, security_req=None):
node_uri = self.client.get_node_collection().compose_node(
name=name, description=description, processor_req=processor_req,
memory_req=memory_req, remote_drive_req=remote_drive_req,
local_drive_req=local_drive_req,
ethernet_interface_req=ethernet_interface_req)
ethernet_interface_req=ethernet_interface_req,
security_req=security_req)
# Assume most of user will assemble node after composition, so assemble
# node automatically here