diff options
| author | Ilya Etingof <etingof@gmail.com> | 2020-04-02 21:22:36 +0200 |
|---|---|---|
| committer | Ilya Etingof <etingof@gmail.com> | 2020-04-09 16:13:08 +0200 |
| commit | a98cf2223230447a50f27f29fb77b5d235bb30fc (patch) | |
| tree | 281a69be5c1cd4c5aebca39f741e2bf372989049 /ironicclient/osc/v1/baremetal_node.py | |
| parent | fc31b5e1bda8a72a5f18b31282f9d92efac7527c (diff) | |
| download | python-ironicclient-a98cf2223230447a50f27f29fb77b5d235bb30fc.tar.gz | |
Add `network_data` ironic node attribute support
Adds support for adding static network configuration to ironic node
object by adding ``network-data`` attribute to "node" osc
command.
Depends-On: https://review.opendev.org/#/c/687910/
Change-Id: I771911cbc2cfaef2cbac841fc76971e042c010c1
Story: 2006691
Task: 37072
Diffstat (limited to 'ironicclient/osc/v1/baremetal_node.py')
| -rwxr-xr-x | ironicclient/osc/v1/baremetal_node.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/ironicclient/osc/v1/baremetal_node.py b/ironicclient/osc/v1/baremetal_node.py index 9b25c8e..e457784 100755 --- a/ironicclient/osc/v1/baremetal_node.py +++ b/ironicclient/osc/v1/baremetal_node.py @@ -39,6 +39,14 @@ CONFIG_DRIVE_ARG_HELP = _( "more details).") +NETWORK_DATA_ARG_HELP = _( + "JSON string or a file or '-' for stdin to read static network " + "configuration for the baremetal node associated with this ironic node. " + "Format of this file should comply with Nova network data metadata " + "(network_data.json). Depending on ironic boot interface capabilities " + "being used, network configuration may or may not been served to the " + "node for offline network configuration.") + SUPPORTED_INTERFACES = ['bios', 'boot', 'console', 'deploy', 'inspect', 'management', 'network', 'power', 'raid', 'rescue', 'storage', 'vendor'] @@ -403,6 +411,11 @@ class CreateBaremetalNode(command.ShowOne): 'only applicable when the specified --driver is a ' 'hardware type.')) parser.add_argument( + '--network-data', + metavar="<network data>", + dest='network_data', + help=NETWORK_DATA_ARG_HELP) + parser.add_argument( '--network-interface', metavar='<network_interface>', help=_('Network interface used for switching node to ' @@ -477,6 +490,9 @@ class CreateBaremetalNode(command.ShowOne): if k in field_list and not (v is None)) fields = utils.args_array_to_dict(fields, 'driver_info') fields = utils.args_array_to_dict(fields, 'extra') + if parsed_args.network_data: + fields['network_data'] = utils.handle_json_arg( + parsed_args.network_data, 'static network configuration') fields = utils.args_array_to_dict(fields, 'properties') node = baremetal_client.node.create(**fields)._info @@ -1123,6 +1139,12 @@ class SetBaremetalNode(command.Command): reset_help=_('Reset the network interface to its hardware type ' 'default'), ) + parser.add_argument( + '--network-data', + metavar="<network data>", + dest='network_data', + help=NETWORK_DATA_ARG_HELP + ) self._add_interface_args( parser, 'power', set_help=_('Set the power interface for the node'), @@ -1300,6 +1322,12 @@ class SetBaremetalNode(command.Command): properties.extend(utils.args_array_to_patch( 'add', ['instance_info/' + x for x in parsed_args.instance_info])) + if parsed_args.network_data: + network_data = utils.handle_json_arg( + parsed_args.network_data, 'static network configuration') + network_data = ["network_data=%s" % json.dumps(network_data)] + properties.extend(utils.args_array_to_patch('add', network_data)) + if properties: baremetal_client.node.update( parsed_args.node, properties, @@ -1475,6 +1503,11 @@ class UnsetBaremetalNode(command.Command): help=_('Unset inspect interface on this baremetal node'), ) parser.add_argument( + '--network-data', + action='store_true', + help=_("Unset network data on this baremetal port.") + ) + parser.add_argument( "--management-interface", dest='management_interface', action='store_true', @@ -1607,6 +1640,9 @@ class UnsetBaremetalNode(command.Command): properties.extend(utils.args_array_to_patch('remove', ['instance_info/' + x for x in parsed_args.instance_info])) + if parsed_args.network_data: + properties.extend(utils.args_array_to_patch( + 'remove', ["network_data"])) if properties: baremetal_client.node.update(parsed_args.node, properties) elif not parsed_args.target_raid_config: |
