From 4a2a067e32c0ad70f5fb37fbc468f7205507e88e Mon Sep 17 00:00:00 2001 From: Ron Stone Date: Thu, 14 Oct 2021 09:12:05 -0400 Subject: [PATCH] pci device/NIC replacement without host reinstall Initial draft 3x procedures under this task. Updates based on patchset 1 comments. Fix typos. Per GW, rework for all deployment types (SX, DX etc) Patchset 6 review updates. Patchset 7 review updates. Story: 2009112 Task: 43572 Signed-off-by: Ron Stone Change-Id: I08c2795b72cd852e662e631fac4723f81907a817 Signed-off-by: Ron Stone --- doc/source/_vendor/vendor_strings.txt | 6 +- ...erent-vendor-or-device-id-b1ab1440e15f.rst | 147 ++++++++ ...same-vendor-and-device-id-cccabcdc5d43.rst | 54 +++ .../node_management/kubernetes/index.rst | 27 ++ ...same-vendor-and-device-id-32942b7b05e5.rst | 47 +++ ...erent-vendor-or-device-id-b406c1c190a9.rst | 342 ++++++++++++++++++ 6 files changed, 621 insertions(+), 2 deletions(-) create mode 100644 doc/source/node_management/kubernetes/hardware_acceleration_devices/fec-replacement-with-different-vendor-or-device-id-b1ab1440e15f.rst create mode 100644 doc/source/node_management/kubernetes/hardware_acceleration_devices/n3000-and-acc100-replacement-with-the-same-vendor-and-device-id-cccabcdc5d43.rst create mode 100644 doc/source/node_management/kubernetes/node_interfaces/nic-replacement-with-the-same-vendor-and-device-id-32942b7b05e5.rst create mode 100644 doc/source/node_management/kubernetes/node_interfaces/replace-a-nic-with-a-different-vendor-or-device-id-b406c1c190a9.rst diff --git a/doc/source/_vendor/vendor_strings.txt b/doc/source/_vendor/vendor_strings.txt index 529900b94..577da9c49 100755 --- a/doc/source/_vendor/vendor_strings.txt +++ b/doc/source/_vendor/vendor_strings.txt @@ -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 diff --git a/doc/source/node_management/kubernetes/hardware_acceleration_devices/fec-replacement-with-different-vendor-or-device-id-b1ab1440e15f.rst b/doc/source/node_management/kubernetes/hardware_acceleration_devices/fec-replacement-with-different-vendor-or-device-id-b1ab1440e15f.rst new file mode 100644 index 000000000..e3f4cc6db --- /dev/null +++ b/doc/source/node_management/kubernetes/hardware_acceleration_devices/fec-replacement-with-different-vendor-or-device-id-b1ab1440e15f.rst @@ -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 port-name + (keystone_admin)]# system host-device-list + +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 + +#. Lock the host. + + .. code-block:: + + ~(keystone_admin)]$ system host-lock + +#. Identify the current N3000 or ACC100 module. + + .. code-block:: + + ~(keystone_admin)]$ system host-device-list + + +------------------+--------------+----------+-----------+-----------+---------------------------+-------------------------+-------------------------------------+-----------+---------+ + | 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 + + +-----------------------+---------------------------------------------------------------------------------------------------------+ + | 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 --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 --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 + +#. Reconfigure the device 0d8f (N3000) or 0d5c (ACC100). + + The new device’s number of |VFs| is limited by the parameter + ``sriov_totalvfs``. + + .. code-block:: + + ~(keystone_admin)]$ system host-device-modify --driver --vf-driver -N --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 + +#. 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 diff --git a/doc/source/node_management/kubernetes/hardware_acceleration_devices/n3000-and-acc100-replacement-with-the-same-vendor-and-device-id-cccabcdc5d43.rst b/doc/source/node_management/kubernetes/hardware_acceleration_devices/n3000-and-acc100-replacement-with-the-same-vendor-and-device-id-cccabcdc5d43.rst new file mode 100644 index 000000000..c2cdb7e1b --- /dev/null +++ b/doc/source/node_management/kubernetes/hardware_acceleration_devices/n3000-and-acc100-replacement-with-the-same-vendor-and-device-id-cccabcdc5d43.rst @@ -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 port-name + (keystone_admin)]# system host-device-list + +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 + +#. 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 diff --git a/doc/source/node_management/kubernetes/index.rst b/doc/source/node_management/kubernetes/index.rst index 5b5614cd1..af05497c7 100644 --- a/doc/source/node_management/kubernetes/index.rst +++ b/doc/source/node_management/kubernetes/index.rst @@ -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 ----------------------------------------- diff --git a/doc/source/node_management/kubernetes/node_interfaces/nic-replacement-with-the-same-vendor-and-device-id-32942b7b05e5.rst b/doc/source/node_management/kubernetes/node_interfaces/nic-replacement-with-the-same-vendor-and-device-id-32942b7b05e5.rst new file mode 100644 index 000000000..ec373e251 --- /dev/null +++ b/doc/source/node_management/kubernetes/node_interfaces/nic-replacement-with-the-same-vendor-and-device-id-32942b7b05e5.rst @@ -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 + + #. 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 + +.. 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. + diff --git a/doc/source/node_management/kubernetes/node_interfaces/replace-a-nic-with-a-different-vendor-or-device-id-b406c1c190a9.rst b/doc/source/node_management/kubernetes/node_interfaces/replace-a-nic-with-a-different-vendor-or-device-id-b406c1c190a9.rst new file mode 100644 index 000000000..e4ffe1b8e --- /dev/null +++ b/doc/source/node_management/kubernetes/node_interfaces/replace-a-nic-with-a-different-vendor-or-device-id-b406c1c190a9.rst @@ -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 + +#. Lock the host. + + .. code-block:: none + + ~(keystone_admin)]$ system host-lock + +#. Identify the port(s) to be replaced. + + .. code-block:: none + + ~(keystone_admin)]$ system host-port-list + + +--------------+----------+----------+--------------+--------+-----------+-------------+-------------------------------------------------------+ + | 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 + +#. Identify the interfaces that are using the port. + + .. code-block:: none + + ~(keystone_admin)]$ system host-if-list + + +--------------+----------+-----------------+----------+---------+---------------+---------------+-------------------------+------------+ + | 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 + ~(keystone_admin)]$ system host-if-show + +#. Record the list of addresses and routes on the controller. + + .. code-block:: none + + ~(keystone_admin)]$ system host-addr-list + + +--------------+----------+------------------------+--------+ + | 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 + + +--------------+--------+-----------+--------+------------+--------+ + | 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 | 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 + + * 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 | 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 + + Remove the sub-interface. + + .. code-block:: none + + ~(keystone_admin)]$ system host-if-delete + +#. 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 + ~(keystone_admin)]$ system interface-network-remove + + #. 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 + ~(keystone_admin)]$ system interface-datanetwork-remove + + #. Modify the interface. + + .. code-block:: none + + ~(keystone_admin)]$ system host-if-modify -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 + +#. 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 + ~(keystone_admin)]$ system host-if-list –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 + ~(keystone_admin)]$ system host-if-modify -c pci-sriov -n + + #. 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 -c -n + +#. 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 <>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 + +#. 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 + + +#. 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 <>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 + +#. Check addresses and routes on the affected interfaces. + + .. code-block:: none + + ~(keystone_admin)]$ system host-addr-list + ~(keystone_admin)]$ system host-route-list + +#. Recreate static addresses and routes using the affected interfaces or + sub-interfaces. + + .. code-block:: none + + ~(keystone_admin)]$ system host-addr-add
+ ~(keystone_admin)]$ system host-route-add + +#. Unlock the controller. + + .. code-block:: none + + ~(keystone_admin)]$ system host-unlock + +#. 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 + +