Merge "pci device/NIC replacement without host reinstall"

This commit is contained in:
Zuul 2021-10-29 16:29:26 +00:00 committed by Gerrit Code Review
commit 7b14b24b7d
6 changed files with 621 additions and 2 deletions

View File

@ -12,8 +12,10 @@
.. |prod-os| replace:: StarlingX OpenStack
.. |prod-dc| replace:: Distributed Cloud
.. |prod-p| replace:: StarlingX Platform
.. |os-prod-hor-long| replace:: OpenStack Horizon Web Interface
.. |os-prod-hor| replace:: OpenStack Horizon
.. |prod-hor| replace:: Horizon
.. |prod-hor-long| replace:: |prod-hor| Web Interface
.. |os-prod-hor-long| replace:: OpenStack |prod-hor-long|
.. |os-prod-hor| replace:: OpenStack |prod-hor|
.. |prod-img| replace:: http://mirror.starlingx.cengn.ca/mirror/starlingx/
.. |prod-abbr| replace:: StX

View File

@ -0,0 +1,147 @@
.. _fec-replacement-with-different-vendor-or-device-id-b1ab1440e15f:
===============================================================
N3000 and ACC100 replacement with different vendor or device-id
===============================================================
.. rubric:: |context|
The following procedure allows the replacement of a N3000 or ACC100 device on a
host, without requiring a host or system (in case of |AIO-SX|) re-install and
re-configuration, in the case of the replaced device having different vendor or
device id info.
The normal approach to doing such a change would be to do a ``system
host-delete``, a ``system host-add`` (re-install) and a re-configure of the
host. In the case of an |AIO-SX| deployment, with only one host, this
would result in a full system re-install and full system re-configuration.
In this procedure, to allow the system to update the |PCI| device database, you
must remove the current device configuration before replacing the |PCI| card
and adding in configuration for the new device.
.. note::
The N3000 card comes with both NIC and |FEC| functionality and requires the
procedure to be done for both types.
.. rubric:: |prereq|
Obtain the vendor and device-id of currently installed card with:
.. code-block::
(keystone_admin)]# system host-port-show <hostname> port-name
(keystone_admin)]# system host-device-list <hostname>
For information on replacing an N3000 or ACC100 with the same model, see
:ref:`n3000-and-acc100-replacement-with-the-same-vendor-and-device-id-cccabcdc5d43`
.. rubric:: |proc|
#. If the host in question is the single host of an |AIO-SX| subcloud
deployment, set the subcloud as unmanaged.
.. code-block::
~(keystone_admin)]$ dcmanager subcloud unmanage <subcloud-name>
#. Lock the host.
.. code-block::
~(keystone_admin)]$ system host-lock <hostname>
#. Identify the current N3000 or ACC100 module.
.. code-block::
~(keystone_admin)]$ system host-device-list <hostname>
+------------------+--------------+----------+-----------+-----------+---------------------------+-------------------------+-------------------------------------+-----------+---------+
| name | address | class id | vendor id | device id | class name | vendor name | device name | numa_node | enabled |
+------------------+--------------+----------+-----------+-----------+---------------------------+-------------------------+-------------------------------------+-----------+---------+
| pci_0000_02_00_0 | 0000:02:00.0 | 030000 | 1a03 | 2000 | VGA compatible controller | ASPEED Technology, Inc. | ASPEED Graphics Family | 0 | True |
| pci_0000_3d_00_0 | 0000:3d:00.0 | 0b4000 | 8086 | 37c8 | Co-processor | Intel Corporation | C62x Chipset QuickAssist Technology | 0 | True |
| pci_0000_3f_00_0 | 0000:3f:00.0 | 0b4000 | 8086 | 37c8 | Co-processor | Intel Corporation | C62x Chipset QuickAssist Technology | 0 | True |
| pci_0000_b2_00_0 | 0000:b2:00.0 | 120000 | 8086 | 0b30 | Processing accelerators | Intel Corporation | Device 0b30 | 1 | True |
| pci_0000_b4_00_0 | 0000:b4:00.0 | 120000 | 8086 | 0d8f | Processing accelerators | Intel Corporation | Device 0d8f | 1 | True |
| pci_0000_da_00_0 | 0000:da:00.0 | 0b4000 | 8086 | 37c8 | Co-processor | Intel Corporation | C62x Chipset QuickAssist Technology | 1 | True |
+------------------+--------------+----------+-----------+-----------+---------------------------+-------------------------+-------------------------------------+-----------+---------+
N3000 has vendor ID 8086 and device IDs 0b30 and 0d8f ACC100 has vendor ID
8086 and device ID 0d5c.
#. Record the current device configuration.
.. code-block::
~(keystone_admin)]$ system host-device-show <hostname> <device-name>
+-----------------------+---------------------------------------------------------------------------------------------------------+
| Property | Value |
+-----------------------+---------------------------------------------------------------------------------------------------------+
| name | pci_0000_b4_00_0 |
| address | 0000:b4:00.0 |
| class id | 120000 |
| vendor id | 8086 |
| device id | 0d8f |
...
| sriov_totalvfs | 8 |
| sriov_numvfs | 8 |
| sriov_vfs_pci_address | 0000:b4:00.1,0000:b4:00.2,0000:b4:00.3,0000:b4:00.4,0000:b4:00.5,0000:b4:00.6,0000:b4:00.7,0000:b4:01.0 |
| sriov_vf_pdevice_id | 0d90 |
...
| driver | igb_uio |
| sriov_vf_driver | vfio-pci |
+-----------------------+---------------------------------------------------------------------------------------------------------+
#. Remove the |VF| configuration (if any) for device 0d8f (N3000) or 0d5c
(ACC100).
.. code-block::
~(keystone_admin)]$ system host-device-modify <hostname> <device-name-or-address> --vf-driver none -N 0
#. Remove the driver configuration (if any) for device 0d8f (N3000) or 0d5c
(ACC100).
.. code-block::
~(keystone_admin)]$ system host-device-modify <hostname> <device-name-or-address> --driver none --enable false
#. Power down the host manually and replace the N3000 or ACC100 |PCI| card.
#. Power up the host.
#. Check the new device.
.. code-block::
~(keystone_admin)]$ system host-device-list <hostname>
#. Reconfigure the device 0d8f (N3000) or 0d5c (ACC100).
The new devices number of |VFs| is limited by the parameter
``sriov_totalvfs``.
.. code-block::
~(keystone_admin)]$ system host-device-modify <hostname> <name-or-address> --driver <vf-driver> --vf-driver <vf driver> -N <number-of-vfs> --enable true
#. If the replaced |PCI| card is an N3000 and its |FPGA| was not
pre-loaded with an updated image, follow the steps described
:ref:`index-intel-n3000-support`.
#. Unlock the host.
.. code-block::
~(keystone_admin)]$ system host-unlock <hostname>
#. If the host in question is the single host of an |AIO-SX| subcloud deployment,
set the subcloud as managed.
.. code-block::
~(keystone_admin)]$ dcmanager subcloud manage <subcloud-name>

View File

@ -0,0 +1,54 @@
.. _n3000-and-acc100-replacement-with-the-same-vendor-and-device-id-cccabcdc5d43:
===============================================================
N3000 and ACC100 replacement with the same vendor and device-id
===============================================================
The following procedure allows the replacement of a N3000 or ACC100 device on a
host, without requiring a host or system (in case of |AIO-SX|) re-install and
re-configuration, in the case of the replaced device having the same vendor and
device id info.
The normal approach to doing such a change would be to do a ``system
host-delete``, a ``system host-add`` (re-install) and a re-configure of the
host. In the case of an |AIO-SX| deployment, with only one host, this would
result in a full system re-install and full system re-configuration.
.. note::
The N3000 card comes with both NIC and |FEC| functionality and requires the
procedure to be done for both types.
.. rubric:: |prereq|
The vendor and device-id of currently installed |PCI| card can be
obtained with:
.. code-block:: none
(keystone_admin)]# system host-port-show <hostname> port-name
(keystone_admin)]# system host-device-list <hostname>
For information on replacing an N3000 or ACC100 with a different model, see
:ref:`fec-replacement-with-different-vendor-or-device-id-b1ab1440e15f`.
.. rubric:: |proc|
#. Lock the host.
.. code-block:: none
~(keystone_admin)]$ system host-lock <hostname>
#. Power down the host manually and make the N3000 or ACC100 card replacement.
#. Power up the host.
#. After rebooting, if the replaced |PCI| card is an N3000 and its |FPGA| was
not pre-loaded with an updated image, follow the steps described in
:ref:`index_hardware-acceleration-devices`.
#. Unlock the host to make it available for use.
.. code-block:: none
system host-unlock <hostname>

View File

@ -202,6 +202,16 @@ Interface IP address provisioning
node_interfaces/interface-ip-address-provisioning-using-the-cli
***************
NIC replacement
***************
.. toctree::
:maxdepth: 1
node_interfaces/replace-a-nic-with-a-different-vendor-or-device-id-b406c1c190a9
node_interfaces/nic-replacement-with-the-same-vendor-and-device-id-32942b7b05e5
----
LLDP
----
@ -278,10 +288,14 @@ Node inventory tasks
node_inventory_tasks/starting-starlingx
node_inventory_tasks/shutting-down-starlingx
.. _index_hardware-acceleration-devices:
-----------------------------
Hardware acceleration devices
-----------------------------
.. _index-intel-n3000-support:
************************
Intel N3000 FPGA support
************************
@ -296,6 +310,7 @@ Intel N3000 FPGA support
hardware_acceleration_devices/uploading-a-device-image
hardware_acceleration_devices/common-device-management-tasks
Common device management tasks
******************************
@ -313,16 +328,27 @@ Common device management tasks
***********************************************
vRAN Accelerator ACC100 Adapter \(Mount Bryce\)
***********************************************
.. toctree::
:maxdepth: 1
hardware_acceleration_devices/enabling-mount-bryce-hw-accelerator-for-hosted-vram-containerized-workloads
hardware_acceleration_devices/set-up-pods-to-use-sriov
****************************
N3000 and ACC100 replacement
****************************
.. toctree::
:maxdepth: 1
hardware_acceleration_devices/fec-replacement-with-different-vendor-or-device-id-b1ab1440e15f
hardware_acceleration_devices/n3000-and-acc100-replacement-with-the-same-vendor-and-device-id-cccabcdc5d43
*******************
NVIDIA GPU Operator
*******************
.. toctree::
:maxdepth: 1
@ -342,6 +368,7 @@ Host hardware management
host_hardware_management/changing-hardware-components-for-a-worker-host
host_hardware_management/configuration-changes-requiring-re-installation
-----------------------------------------
Run the node feature discovery helm chart
-----------------------------------------

View File

@ -0,0 +1,47 @@
.. _nic-replacement-with-the-same-vendor-and-device-id-32942b7b05e5:
==================================================
NIC replacement with the same vendor and device-id
==================================================
The following procedure allows the replacement of a NIC on a host, without
requiring a host or system (in case of |AIO-SX|) re-install and re-configuration,
in the case of the replaced NIC having the same vendor or device id info.
The normal approach to doing such a change would be to do a ``system
host-delete``, a ``system host-add`` (re-install) and a re-configure of the
host. In the case of an |AIO-SX| deployment, with only one host, this would
result in a full system re-install and full system re-configuration.
Since this procedure reuses same vendor and device id information and
capabilities, the interface's new |MAC| will be updated internally and no
reconfiguration is required. Assuming that the replacement will occur on
the same |PCI| slot of the previous card, the procedure can be executed for all
types of NIC classes (``pci-sriov``, ``data``, ``pci-passthrough``,
``platform``).
.. rubric:: |proc|
#. Lock the host.
.. code-block:: none
~(keystone_admin)]$ system host-lock <hostname>
#. Wait for the host to be reported as locked.
#. Power down the host manually and make the NIC card replacement.
#. Power up the host.
#. Unock the host.
.. code-block:: none
~(keystone_admin)]$ system host-unlock <hostname>
.. rubric:: |result|
The host is rebooted, and its Availability State is reported as In-Test. After
a few minutes, it is reported as Unlocked, Enabled, and Available.

View File

@ -0,0 +1,342 @@
.. _replace-a-nic-with-a-different-vendor-or-device-id-b406c1c190a9:
==================================================
Replace a NIC with a different vendor or device-id
==================================================
.. rubric:: |context|
The following procedure allows the replacement of a NIC on a host, without
requiring a host or system (in case of |AIO-SX|) re-install and
re-configuration, in the case of the replaced NIC having the different vendor
or device id info.
The normal approach to making such a change would be to do a ``system
host-delete``, a ``system host-add`` (re-install) and a re-configure of the
host. In the case of an |AIO-SX| deployment, with only one host, this would
result in a full system re-install and full system re-configuration.
This procedure can be used either for a replacement on the same |PCI| slot or
to a different one. You will first record the current configuration and then
reapply it after replacing the NIC card.
* To replace a NIC with a different vendor or device-id, you must first remove
the current configuration (if it exists) associated with the physical
interface.
* If a backup was available prior to this operation, it is necessary to
regenerate the backup after changing the NIC card as the |PCI| addresses will
no longer match the saved database files.
* If the replacement affects the |OAM| interface, plan to have an alternative
access path or keep the serial console access available.
* If the affected interface configuration was not removed prior to the NIC
replacement, an alarm will be raised asking for the host locking, removal of
dependent configuration, and host unlocking for the port database correction
to take effect. After doing so, you must lock the host again to reconfigure
the interface with the desired or previous configuration.
* If the affected interfaces are unconfigured (class is none and “used by i/f”
is empty) the procedure described in
:ref:`nic-replacement-with-the-same-vendor-and-device-id-32942b7b05e5` can be
followed.
.. rubric:: |proc|
.. note::
UUID values in the output shown below have been truncated for display
purposes. When using a UUID value as input to a command, use the entire 36
character string.
#. If the host in question is the single host of an |AIO-SX| subcloud deployment,
set the subcloud as managed
.. code-block:: none
~(keystone_admin)]$ dcmanager subcloud unmanage <subcloud-name>
#. Lock the host.
.. code-block:: none
~(keystone_admin)]$ system host-lock <hostname>
#. Identify the port(s) to be replaced.
.. code-block:: none
~(keystone_admin)]$ system host-port-list <hostname>
+--------------+----------+----------+--------------+--------+-----------+-------------+-------------------------------------------------------+
| uuid | name | type | pci address | device | processor | accelerated | device type |
+--------------+----------+----------+--------------+--------+-----------+-------------+-------------------------------------------------------+
| f8c45520-... | eno1 | ethernet | 0000:03:00.0 | 0 | 0 | True | Ethernet Controller 10-Gigabit X540-AT2 [1528] |
| c0532da6-... | eno2 | ethernet | 0000:03:00.1 | 0 | 0 | True | Ethernet Controller 10-Gigabit X540-AT2 [1528] |
| a12a5046-... | ens787f0 | ethernet | 0000:81:00.0 | 0 | 1 | True | Ethernet Controller X710 for 10GbE SFP+ [1572] |
| 54877560-... | ens787f1 | ethernet | 0000:81:00.1 | 0 | 1 | True | Ethernet Controller X710 for 10GbE SFP+ [1572] |
| cc702aad-... | ens787f2 | ethernet | 0000:81:00.2 | 0 | 1 | True | Ethernet Controller X710 for 10GbE SFP+ [1572] |
| b27d53ba-... | ens787f3 | ethernet | 0000:81:00.3 | 0 | 1 | True | Ethernet Controller X710 for 10GbE SFP+ [1572] |
| 68e94c5c-... | ens802f0 | ethernet | 0000:83:00.0 | 0 | 1 | True | 82599ES 10-Gigabit SFI/SFP+ Network Connection [10fb] |
| 38d28361-... | ens802f1 | ethernet | 0000:83:00.1 | 0 | 1 | True | 82599ES 10-Gigabit SFI/SFP+ Network Connection [10fb] |
| c82dc9d0-... | ens803f0 | ethernet | 0000:86:00.0 | 0 | 1 | True | 82599ES 10-Gigabit SFI/SFP+ Network Connection [10fb] |
| c6188d09-... | ens803f1 | ethernet | 0000:86:00.1 | 0 | 1 | True | 82599ES 10-Gigabit SFI/SFP+ Network Connection [10fb] |
+--------------+----------+----------+--------------+--------+-----------+-------------+-------------------------------------------------------+
#. Record the current port configuration.
.. code-block:: none
~(keystone_admin)]$ system host-port-show <hostname> <affected-port-name>
#. Identify the interfaces that are using the port.
.. code-block:: none
~(keystone_admin)]$ system host-if-list <hostname>
+--------------+----------+-----------------+----------+---------+---------------+---------------+-------------------------+------------+
| uuid | name | class | type | vlan id | ports | uses i/f | used by i/f | attributes |
+--------------+----------+-----------------+----------+---------+---------------+---------------+-------------------------+------------+
| 0eb262fa-... | pthru0 | pci-passthrough | ethernet | None | [u'ens787f1'] | [] | [] | MTU=1500 |
| 1f7fb5bb-... | oam0 | platform | ethernet | None | [u'eno1'] | [] | [] | MTU=1500 |
| 2d08c554-... | sriov0 | pci-sriov | ethernet | None | [u'ens787f2'] | [] | [u'sriov1'] | MTU=1500 |
| 39abaab8-... | pxeboot0 | platform | ethernet | None | [u'ens802f1'] | [] | [u'cluster0', u'mgmt0'] | MTU=1500 |
| accadbd9-... | sriov1 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1500 |
| b0129323-... | mgmt0 | platform | vlan | 39 | [] | [u'pxeboot0'] | [] | MTU=1500 |
| b27d72e2-... | cluster0 | platform | vlan | 44 | [] | [u'pxeboot0'] | [] | MTU=1500 |
+--------------+----------+-----------------+----------+---------+---------------+---------------+-------------------------+------------+
#. Select the interface associated with the port to be replaced.
#. Check the column :guilabel:`used by i/f` to get the list of dependent
interfaces (sub-interfaces) on the port.
#. Record the current configuration for the affected interfaces and
sub-interfaces.
.. code-block:: none
~(keystone_admin)]$ system host-if-show <hostname> <ifname-for-port>
~(keystone_admin)]$ system host-if-show <hostname> <ifname-for-subinterface>
#. Record the list of addresses and routes on the controller.
.. code-block:: none
~(keystone_admin)]$ system host-addr-list <hostname>
+--------------+----------+------------------------+--------+
| uuid | ifname | address | prefix |
+--------------+----------+------------------------+--------+
| 02367673-... | cluster0 | aefd::2 | 64 |
| b5589563-... | mgmt0 | fd01:8a::3 | 64 |
| f5d42be7-... | oam0 | 2620:10a:a001:a103::41 | 64 |
| 553b8c78-... | pxeboot0 | 192.168.202.2 | 24 |
+--------------+----------+------------------------+--------+
~(keystone_admin)]$ system host-route-list <hostname>
+--------------+--------+-----------+--------+------------+--------+
| uuid | ifname | network | prefix | gateway | metric |
+--------------+--------+-----------+--------+------------+--------+
| 548dfd96-... | mgmt0 | fd01:81:: | 64 | fd01:8a::1 | 1 |
+--------------+--------+-----------+--------+------------+--------+
#. Remove any affected sub-interfaces.
* If the sub-interface is of the class ``platform``, then remove the
affected sub-interfaces from the associated interface-network.
.. code-block:: none
~(keystone_admin)]$ system interface-network-list <hostname>
+--------------+--------------+----------+--------------+
| hostname | uuid | ifname | network_name |
+--------------+--------------+----------+--------------+
| controller-0 | 6456a935-... | oam0 | oam |
| controller-0 | 805d7f2c-... | cluster0 | cluster-host |
| controller-0 | a86890d0-... | pxeboot0 | pxeboot |
| controller-0 | b54bfac0-... | mgmt0 | mgmt |
+--------------+--------------+----------+--------------+
~(keystone_admin)]$ system interface-network-remove <uuid>
* If the interface is of the class ``data``, ``pci-sriov`` or
``pci-passthrough``, then remove the interface-datanetwork(s) associated
with the affected sub-interface(s).
.. code-block:: none
~(keystone_admin)]$ system interface-datanetwork-list <hostname>
+--------------+--------------+--------+------------------+
| hostname | uuid | ifname | datanetwork_name |
+--------------+--------------+--------+------------------+
| controller-0 | 4fc6d3d4-... | sriov0 | group0-data0 |
| controller-0 | 6712d006-... | pthru0 | group0-data0 |
| controller-0 | b2d8f970-... | sriov1 | group0-data1 |
+--------------+--------------+--------+------------------+
~(keystone_admin)]$ system interface-datanetwork-remove <uuid>
Remove the sub-interface.
.. code-block:: none
~(keystone_admin)]$ system host-if-delete <hostname> <uuid-or-name>
#. If the interface is configured, re-configure the interface class to
``none``.
#. If the interface is of the class ``platform``, then remove the
interface-network(s) associated with the affected sub-interface(s).
.. code-block:: none
~(keystone_admin)]$ system interface-network-list <hostname>
~(keystone_admin)]$ system interface-network-remove <uuid>
#. If the interface is of the class ``data``, ``pci-sriov`` or
``pci-passthrough``, then remove the interface-datanetwork(s) associated
with the affected sub-interface(s).
.. code-block:: none
~(keystone_admin)]$ system interface-datanetwork-list <hostname>
~(keystone_admin)]$ system interface-datanetwork-remove <uuid>
#. Modify the interface.
.. code-block:: none
~(keystone_admin)]$ system host-if-modify <hostname> <ifname> -c none
#. Confirm that the interface does not have sub-interfaces referenced in
the :guilabel:`used by i/f` column.
.. code-block:: none
~(keystone_admin)]$ system host-if-list <hostname>
#. Power down the host manually and make the NIC card replacement.
#. Power up the host.
#. After rebooting, check the new port's inventoried data:
.. code-block::
~(keystone_admin)]$ system host-port-list <hostname>
~(keystone_admin)]$ system host-if-list <hostname> a
The old interface will no longer be available, replaced by a new one with
the same name assigned to the new port.
#. Reconfigure the base interface associated with the port.
.. note::
It is recommended that you reuse the previous interface names.
If the old interface was of class ``pci-sriov``, do the following:
#. Check the port capabilities, particularly that it has the required value
for ``sriov_totalvfs``. If not, plan the interface and sub-interface
reconfiguration accordingly.
.. code-block::
~(keystone_admin)]$ system host-port-show <hostname> <port-name>
~(keystone_admin)]$ system host-if-modify <hostname> <ifname> -c pci-sriov -n <previous-configured-name> <previous-interface-parameters>
#. If the old interface was of class ``data``, ``platform``, or
``pci-passthrough``, modify the new interface back to the previous
configuration.
.. code-block::
~(keystone_admin)]$ system host-if-modify <hostname> <ifname> -c <class> -n <previous-configured-name> <previous-interface-parameters>
#. Reconnect the interface to any previously connected network.
#. For a platform class interface, select the respective network that
supports the desired new interface.
.. code-block::
~(keystone_admin)]$ system network-list
~(keystone_admin)]$ system interface-network-assign <hostname> <ifname-or-uuid> <>network-name-or-uuid>
#. For ``data``, ``pci-sriov``, and ``pci-passthrough`` class interfaces,
select the respective datanetwork that supports the desired new
interface.
.. code-block::
~(keystone_admin)]$ system datanetwork-list
~(keystone_admin)]$ system interface-datanetwork-assign <hostname> <ifname-or-uuid> <datanetwork-name-or-uuid>
#. Add the necessary sub-interfaces.
#. Recreate all necessary sub-interfaces that existed prior to the NIC
replacement.
It is recommended to use the previous sub-interface names.
.. code-block::
~(keystone_admin)]$ system host-if-add <hostname> <previous-sub-interface-name> <iftype [ae,vlan,vf,ethernet]> <interface-name> <previous-parameters>
#. Reconnect the sub-interface with desired network (if it was previously
connected).
#. For a platform class interface, select the respective network that supports the desired new sub-interface.
.. code-block:: none
~(keystone_admin)]$ system network-list
~(keystone_admin)]$ system interface-network-assign <hostname> <sub-interface-name-or-uuid> <>network-name-or-uuid>
#. For ``data``, ``pci-sriov``, and ``pci-passthrough`` class interfaces,
select the respective datanetwork that supports the desired new
sub-interface.
.. code-block:: none
~(keystone_admin)]$ system datanetwork-list
~(keystone_admin)]$ system interface-datanetwork-assign <hostname> <sub-interface or uuid> <network-name-or-uuid>
#. Check addresses and routes on the affected interfaces.
.. code-block:: none
~(keystone_admin)]$ system host-addr-list <hostname>
~(keystone_admin)]$ system host-route-list <hostname>
#. Recreate static addresses and routes using the affected interfaces or
sub-interfaces.
.. code-block:: none
~(keystone_admin)]$ system host-addr-add <hostname> <interface-name> <address> <prefix-length>
~(keystone_admin)]$ system host-route-add <hostname> <interface-name> <network-address> <prefix-length> <gateway-address> <metric>
#. Unlock the controller.
.. code-block:: none
~(keystone_admin)]$ system host-unlock <hostname>
#. If the host in question is the single host of an |AIO-SX| subcloud deployment,
set the subcloud as managed
.. code-block:: none
~(keystone_admin)]$ dcmanager subcloud manage <subcloud-name>