-
Notifications
You must be signed in to change notification settings - Fork 172
Refine_the_usage_of_installnic_and_primarynic_attributes
Table of Contents
- Overview
- Original Design
- The Current Code Logic to use 'installnic' and 'primarynic'
- New Design:
- Discussion
- Reference
##Overview We have a lot confusion of how to use 'instalnic' and 'primarynic'. It' also not clear in our code logic. This mini-design is used to clarify how to use them from xCAT dev perspective and end customer perspective.
##Original Design The definition of how to use 'installnic' and 'primarynic' in the Schema.pm:
- installnic: The nic will be used for OS deployment.
- primarynic: The nic will be used for xCAT management.
The original design of how to use 'installnic' and 'primarynic':
-
'installnic' is used to send dhcp request, download bootloader (xnab,yaboot,grub2) and download kernel+initrd. For diskfull install, it also is used to download the packages of OS.
-
'primarynic' is used to select network interface after the OS deployment.
##The Current Code Logic to use 'installnic' and 'primarynic' Base on the original design that 'installnic' should be used to generate the kernel parameters like 'ifname', 'netdev', 'BOOTIF' .... The 'primarynic' should be used to select network interface as management network after OS deployment.
But in current code logic, both of the installnic and primarynic are used to generate the 'ifname', 'netdev', 'ip' and 'BOOTIF' kernel parameters. (installnic and primarynic support the same value format, but installnic has high priority)
-
For diskfull install: 'primarynic' is used to get the hostname and set to the target node. 'installnic' is NOT used.
-
For diskless netboot: The kernel parameters generated from 'installnic' and 'primarynic' will be used in order ifname->netdev->BOOTIF to get the active interface for the target node.
Base on the above comparison that xCAT does not have a clear definition of how to use 'installnic' and 'primarynic'. And in our code, there are three implementations (sles.pm, anaconda.p, debian.pm) for how to use 'installnic' and 'primarynic' to generate kernel parameters.
Our goal in this item will be to clarify the usage of installnic and primarynic from interface point of view and clean up the code logic of how to use installnic and primarynic.
##New Design: Since the usage of 'installnic' and 'primarynic' is very confusing and complicated and in all of the cases that we can thought that 'intallnic' and 'primarynic' have same value, we decide to deprecate 'primarynic'.
We won't remove all the code which is using 'primarynic', but for the code which generate boot kernel parameters, the primarynic is skipped only except that 'installnic' is black, but 'primarynic' is set.
###Interface
'installnic' is recommended for using to set the interface which will be used to perform the OS deployment and remaining works.
'primarynic' is deprecated even it still works in certain cases.
'installnic' supports 4 types of values:
Does not set anything. Kept it black. This is a recommended setting that the 'mac' attribute of the node will be used to select installation interface.
- keyword
It sames with that the 'mac' attribute of the node will be used to select installation interface.
- A mac address
A valid mac address. This address will replace the one in the 'mac' attribute to be used to select installation interface.
- Interface name.
A name of network interface like 'eth0'. This is NOT recommended since the interface name can NOT guarantee to be mapped to certain physical interface.
###Implementation As I mentioned above that xCAT has three modules (anaconda.pm, sles.pm, debian.pm) to use 'installnic' and 'primarynic' to generate kernel parameters, the code logic are not consistent between the modules.
In this design we will centralize the code which calculate kernel parameters with 'installnic' in a subroutine xCAT::NetworkUtils->gen_net_boot_params. This subroutine will return a hash which contains all possible network boot kernel parameters that generated base on 'installnic' setting. Then in each module, it can choose any parameter from this hash and add them into kernel parameter string.
##Discussion
Ideas from email discussion.
1 Do not change the original behaviors of using 'installnic' and 'primarynic', this will be easy for old customer. For most of the customer that we recommend them to keep them as black (after this change). If they do want to set nic name, use any one should work. If they set both of 'installnic' and 'primarynic', but with different values, we will display a warning message like ''Are you sure that you want installnic and primarynic to be different values?'.
2 For x86, if not set 'installnic' and 'primarynic', try to use the firmware selected nic.
##Reference Refer to Er Tao's investigation for how our current code to use 'installnic' and 'primarynic': https://w3-connections.ibm.com/wikis/home?lang=en#!/wiki/xCAT/page/The%20summary%20of%20installnic%20and%20primarynic%20using%20in%20xCAT
- Mar 08, 2023: xCAT 2.16.5 released.
- Jun 20, 2022: xCAT 2.16.4 released.
- Nov 17, 2021: xCAT 2.16.3 released.
- May 25, 2021: xCAT 2.16.2 released.
- Nov 06, 2020: xCAT 2.16.1 released.
- Jun 17, 2020: xCAT 2.16 released.
- Mar 06, 2020: xCAT 2.15.1 released.
- Nov 11, 2019: xCAT 2.15 released.
- Mar 29, 2019: xCAT 2.14.6 released.
- Dec 07, 2018: xCAT 2.14.5 released.
- Oct 19, 2018: xCAT 2.14.4 released.
- Aug 24, 2018: xCAT 2.14.3 released.
- Jul 13, 2018: xCAT 2.14.2 released.
- Jun 01, 2018: xCAT 2.14.1 released.
- Apr 20, 2018: xCAT 2.14 released.
- Mar 14, 2018: xCAT 2.13.11 released.
- Jan 26, 2018: xCAT 2.13.10 released.
- Dec 18, 2017: xCAT 2.13.9 released.
- Nov 03, 2017: xCAT 2.13.8 released.
- Sep 22, 2017: xCAT 2.13.7 released.
- Aug 10, 2017: xCAT 2.13.6 released.
- Jun 30, 2017: xCAT 2.13.5 released.
- May 19, 2017: xCAT 2.13.4 released.
- Apr 14, 2017: xCAT 2.13.3 released.
- Feb 24, 2017: xCAT 2.13.2 released.
- Jan 13, 2017: xCAT 2.13.1 released.
- Dec 09, 2016: xCAT 2.13 released.
- Dec 06, 2016: xCAT 2.9.4 (AIX only) released.
- Nov 11, 2016: xCAT 2.12.4 released.
- Sep 30, 2016: xCAT 2.12.3 released.
- Aug 19, 2016: xCAT 2.12.2 released.
- Jul 08, 2016: xCAT 2.12.1 released.
- May 20, 2016: xCAT 2.12 released.
- Apr 22, 2016: xCAT 2.11.1 released.
- Mar 11, 2016: xCAT 2.9.3 (AIX only) released.
- Dec 11, 2015: xCAT 2.11 released.
- Nov 11, 2015: xCAT 2.9.2 (AIX only) released.
- Jul 30, 2015: xCAT 2.10 released.
- Jul 30, 2015: xCAT migrates from sourceforge to github
- Jun 26, 2015: xCAT 2.7.9 released.
- Mar 20, 2015: xCAT 2.9.1 released.
- Dec 12, 2014: xCAT 2.9 released.
- Sep 5, 2014: xCAT 2.8.5 released.
- May 23, 2014: xCAT 2.8.4 released.
- Jan 24, 2014: xCAT 2.7.8 released.
- Nov 15, 2013: xCAT 2.8.3 released.
- Jun 26, 2013: xCAT 2.8.2 released.
- May 17, 2013: xCAT 2.7.7 released.
- May 10, 2013: xCAT 2.8.1 released.
- Feb 28, 2013: xCAT 2.8 released.
- Nov 30, 2012: xCAT 2.7.6 released.
- Oct 29, 2012: xCAT 2.7.5 released.
- Aug 27, 2012: xCAT 2.7.4 released.
- Jun 22, 2012: xCAT 2.7.3 released.
- May 25, 2012: xCAT 2.7.2 released.
- Apr 20, 2012: xCAT 2.7.1 released.
- Mar 19, 2012: xCAT 2.7 released.
- Mar 15, 2012: xCAT 2.6.11 released.
- Jan 23, 2012: xCAT 2.6.10 released.
- Nov 15, 2011: xCAT 2.6.9 released.
- Sep 30, 2011: xCAT 2.6.8 released.
- Aug 26, 2011: xCAT 2.6.6 released.
- May 20, 2011: xCAT 2.6 released.
- Feb 14, 2011: Watson plays on Jeopardy and is managed by xCAT!
- xCAT OS And Hw Support Matrix
- Oct 22, 2010: xCAT 2.5 released.
- Apr 30, 2010: xCAT 2.4 is released.
- Oct 31, 2009: xCAT 2.3 released. xCAT's 10 year anniversary!
- Apr 16, 2009: xCAT 2.2 released.
- Oct 31, 2008: xCAT 2.1 released.
- Sep 12, 2008: Support for xCAT 2 can now be purchased!
- June 9, 2008: xCAT breaths life into (at the time) the fastest supercomputer on the planet
- May 30, 2008: xCAT 2.0 for Linux officially released!
- Oct 31, 2007: IBM open sources xCAT 2.0 to allow collaboration among all of the xCAT users.
- Oct 31, 1999: xCAT 1.0 is born!
xCAT started out as a project in IBM developed by Egan Ford. It was quickly adopted by customers and IBM manufacturing sites to rapidly deploy clusters.