From eea661e405dd3ce09d0d7fe9339b3017bf95a880 Mon Sep 17 00:00:00 2001 From: Bin Xu Date: Thu, 14 Dec 2017 19:03:34 +0800 Subject: [PATCH] merge from master to 2.13 branch for 2.13.9 release. (1) (#4525) * fix issueNode range not specified, see man page for syntax. return with no output when site.master is not set #4299 * Fix issue 4246, record rflash process in log file * dodiscovery: better disksize - ordered by major,minor and no `\n` (#4219) * better disksize: ordered by major,minor and no `\n` * nodediscover:`disksize` sent correctly: no need to `split`,`join` * general sort with explicit key columns, fix search pattern * dodiscovery: Fix bugs * dodiscovery: Fix ShellCheck SC2007,SC2004 * dodiscovery: simpler kcmdline parsing, disksize as IEC binary prefix * Add test case - switch_to_dns_forward_mode * Modify timeout of login by curl command for OpenBMC * Add makegocons command This patch enable goconserver service and manage the node sessions with a new `makegocons` command. Implement: #4215 * Refine the Cumulus Linux Section of the Doc (#4249) * No content in the switches subdirectory in docs, remove * Change the Network topic to Networking * Refine and reformat the Cumulus Linux documentation * Modify the script to build xCAT-genesis-base package (#4292) * Verify hash ID * change log messages * Timeout the ntpd process if ntpd service is not running on ntpserver (#4321) * enhance nodediscovery process: don't write "NOIP" if the node can not be resloved to an IP (#3995) * enhance nodediscovery process, if only 1 mac and have \*NOIP\* append, don't write mac table and don't generate dhcp lease entry * Enhance PR 3995: enhance nodediscovery process: don't write "NOIP" if the node can not be resloved to an IP * modified depending on comments * natural_sort_cmp: recursion to iterative implementation (#4314) * natural_sort_cmp: recursion to iterative implementation * natural_sort_cmp: correct prototype with parameters, as per `man perlfunc` * Task 3339, rspconfig ip/netmask/gateway/vlan support * * Minor enhance on xcatperftest to put all logs into one file * Fix a bug in simulatorctl.sh, and it cause the script cannot be found * modified depending on comments * QA list for makehosts (#4284) * QA list for makehosts * Fix some bus in makegocons * Revise test case - switch_to_dns_forward_mode * Enhancements after the review * Use IO::Socket to check BMC console port * Revise test case - switch_to_dns_forward_mode * modified depending on comments * Add messages to inform the user of the general action started via xCAT for flashing firmware * Fix bug, anything in the functional array is the one that's really active, priority will not be 0 if there is pending firmware * Fix 4338, remove all of in child process * fix issue #4354 :The XCATTEST_CN in xcattest can not detect HCP as config file (#4355) * Fix #4330, close the socket * Add image name to /opt/xcat/xcatinfo on compute node (#4359) * Integrate congo console from goconserver with rcons Enhance the original implement of rcons to support goconserver. `rcons` will help the user choose from one of the console backend service based on the console server status of management node. Implement #4216 * Fix 4363 - discovery broken (#4364) * do not set exit_code to 1 when the clock is not synced before the timeout (#4362) * Fix check for MTM values with spaces * modified depending on comments * rspconfig admin_password for OpenBMC * Fix merging in xdcpmerge.sh (#4328) * Fixes in xdcpmerge.sh Two fixes: 1. The grep pattern when finding duplicate usernames is missing ":" at the end. So, for example user "test" would also match "test2, etc.". Adding the ":" delimiter fixes the issue. 2. Another issue happens when the file to be merged is a superset of the files on the nodes. For example, if a new user is added and entire passwd file (that is otherwise identical) is sent to be merged. In this case, the $filebackup.nodups file, i.e. the original file with duplicates removed, becomes empty and the condition "if [ -s "$filebackup.nodups" ]" does not execute. Then the merged file ends up being original file with the merge file fully appended, clearly not what was intended. This is solved by changing the condition to check for file existence "-a" rather then for size. Additionally, I also turn the logic around so that the duplicates are removed from the merge file and then added to the original file. I think this makes logic a bit cleaner and also ensures that existing entries are not reordered or changed in any way. * Streamlining previous commit Adjustment to previous commit, streamlining and simplifying logic. Once $mergefile.nodups is created, just concatenate it the original file. * Update to xdcpmerge No need to copy $filebackup to $curfile, they are the same. * Modify for debug conveniently * add new cases and delete outdated test cases * Modify genesis build script for centos x86_64 * Add space between at and the time * Add a print out of the firmware levels for the various UT cases * Add unit test cases for rspconfig * rspconfig fix for set hostname * Enhance the testing case for rspconfig setting hostname * modified depending on comments * modified depending on comments * Add %pretrans script in . Handle directory to symlink change properly. See comment #3 of https://bugs.launchpad.net/rpm/+bug/633636 * Make xCAT-genesis-base confliects with early version of xCAT-genesis-scripts * rspconfig dump to allow admins capture logs * Adding comment * Improve the error message when BMC does not return a dump ID * Improve some messages and add timestamp for downloaded dump file * Improve the message to help Admin figure out where the file is missing * Leave a log file there when xCAT upgrade in case to debug issue while upgrading (#4389) * Listen on 0.0.0.0 instead of the hostname This patch modify the configuration of `makegocons` and `rcons` for goconserver. `cat /etc/goconserver/server.conf` ``` global: host: 0.0.0.0 ssl_key_file: /etc/xcat/cert/server-key.pem ssl_cert_file: /etc/xcat/cert/server-cert.pem ssl_ca_cert_file: /etc/xcat/cert/ca.pem logfile: /var/log/goconserver/server.log api: port: 12429 console: port: 12430 ``` * Support hostname=* for openbmc * Relay action and snmp configuration support for Coral PDU * ddns.pm: specify the "directory" option for DNS slaves too (cf. bug #4392) * Fix issue 4361, modify some sendmsg to message * 1. add "makeconserver -d" to "rmdef -C", 2. add "makeconserver -C|--cleanup" to remove entries for removed nodes * When there is a problem with the login, do not hide the message on debug mode. BMCReady does not make sense if the admin does not know how to find that state * Change function from login_logout_request to login_request, not doing any logout here * Check that RC is 200 to prevent unknown issues, handle the response generically * OpenBMC rspconfig dump timeout fixes * Fix issue 4408, modify error for rspconfig dump * Clear all BMC Dump logs when BMC firmware flash * modified depending on comments * More modifications for pr 4386, to deal with the conflicts * To handle one case which have 2 implementations, which one is for specific platform, on is for all platforms * return when current status is RSPCONFIG_DUMP_DOWNLOAD_REQUEST * fix issue 4417, delete 'clear next_status' * fix issue 4353: rspconfig needs to support multiple IPs on the BMC and ignore ZeroConfigIPs * Wait 15 seconds after OpenBMC interface with vlan tag to be activated * Fix issue #4397: rspconfig <> hostname=xxx show error message when there is multiple network in bmc * Some sentence modify for makeconservercf -C|--cleanup * OpenBMC rspconfig dump better dump file name formatting * Removed the --check and --ipsource option with PR 4258, update the man page * Improve the message on the HTTP response * modified depending on comments * Only handle 404 and 504 in the login request code, defer the rest to deal_with_response() * rflash stream support * 1. configure ip/netmask/gateway only on the NIC whose IP match node BMC attribute, 2. add some information for LinkLocal address * Fix confignetwork bond nic_type detection with multiple bonds * Modified configonie --ntp command (#4436) * Add man page for makegocons This is the guide about how to make goconserver as a replacement for conserver to help slove the issues reported for conserver, like: #4043, #3543. For openbmc, the solution of goconserver is much light-weighted than the conserver which could help save the system resource. In addition, sshpass is not needed for openbmc with goconserver. Implement: #4337 * Add another key for node_info in order not to after the content of $node_info{$node}{bmc} * enhance rflash stream * makedhcp does not work well when all service nodes not running dhcp but disjointdhcps=1 (#4426) (#4440) - if all service nodes not running dhcp, to treat it as disjointdhcps=0 - nodeset will send request to MN by default even if disjointdhcps=1 - Move out of the dhcp service checking from opts pre-check, and do it just before real makedhcp handling. * rspconfig configure bmc vlan will hung because of PR 4383 * OpenBMC rspconfig dump enhancements * Changes due to review comments * Print debug message before login attempt * Add warning when xCAT throttles SSL connections * Display first [openbmc_debug] when entering openbmc.pm * modified error msg * Make sure credential files have a trailing newline (#4442) * modified depending on comments * Fix the typo in the man page of makegocons * Update the print out based on the review comment, should not use since the regular expression is removed * Modify the nodeset disjoint test case accordingly for #4426 * Use short hostname in rcons for goconserver As the certificate of xcat is signed with short hostname, this commit force to use the short hostname in the environment variable for `congo console`. * Fix issue 3497, make sense for reventlog msg * Give summary after flash active when no debugmode * Fix the issue that the IP configuration will fail if bmc attribute is a hostname * enhance genimage for sles12sp2 (#4450) * Add dhcp-client-identifier to lease block (#4429) Machines that use Infiniband for PXE booting need to have the dhcp-client-identifier set in the lease block. Without it, they will not get the lease from the server. * Support multiple bonds on bring-up * modified depending on comments * fix the check for rc to 1 on error cases * modify response for bmcdiscover when error * Ignore syslog error in monitorctrl when setNodeStatusAttributes (#4459) * fix issue https://github.com/xcat2/xcat-core/issues/4411 (#4462) * fix issue Compute nodes fail to get provisioned #4411: covert imgsrv and xcatmaster to their ip addresses in case the hostname cannot be resolved inside initrd for diskless * More strict check to tell if it is a chroot env to avoid modify DB (#4463) when genimage for SN image (#4365) * issues for install license file on accton switches (#4460) * Add test cases for rflash regular usage against openbmc * modify depending on xuwei's comment * add 2 more cases for option d * enhance rflash upload message * Do not display message for clearing dumps when only PNOR * Display hostname even if multiple IP addresses * modified depending on comments * polished message * Modify the default consoleondemand based on the global setting This commit fix the bug that consoleondemand works incorrectly. * modify depending on comments * modified depending on comments * enhance rflash error messages * Modify documenation for servicenode attributes * build rst file from Schema.pm by db2man * change status back to starts * modified depending on comments * rm openbmcevents * Usage and man page update for rspconfig dump * let rflash error message flexible * Add support for the "file -> (noderange) file" syntax in synclist with ServiceNodes (#4445) * Add support for "file - (noderange) file" in synclist when using hierarchical mode. Fixes #4425 This patch ensures that: 1. the synclist is correctly parsed when running on a Service Node 2. all files are synchronized to SNs in hierarchical mode * Better test condition for #4425, addresses issue in https://github.com/xcat2/xcat-core/pull/4445#issuecomment-349472901 * Fix issue 4477, if has node- will not create node- for the same node * fix issue updatenode -f loses directories when copying files to SN #4456 (#4494) * comment from ErTao * Crude attempt at including external configuration files in named.conf * Fixes after the review * Fix issue 4490, record any error when rflash active process * add -d usage and manpage * updatenode -F not work in hierachy env as the user name is FQDN of MN (#4484) * updatenode -F not work in hierachy env (#4455) - add trace when -V is enabled - get the DSH_FROM_USERID from updatenode client * - when 'updatenode -F' need to push SN first, using root as non-root does not have permission write to 'SNsyncfiledir' - move the set DSH_FROM_USERID code out of the loop, and also cover remote client case. * fix issue for command rspconfig hostname=* * enhance rflash * Adjust the server used for kernel/initrd and imgurl for petitboot (#4416) - URL for kernel/initrd, get the value from below value tftpserver -> xcatmaster -> myipfn - URL for image, get the value from below value nfsserver -> tftpserver -> xcatmaster -> myipfn * NODE attribute didn't populate in /opt/xcat/xcatinfo after reboot (#4428) * NODE attribute didn't populate in /opt/xcat/xcatinfo after reboot * Get NODE from mypostscripts * Improve the output message for reventlog, use a global variable to set PolicyFile Path * If debug_msg is not provided, use an empty string * Check for LinkLocal as well as 169.254 IP address * Fix issue 4507, add parameter check for rspconfig admin_passwd * record more information when rflash upload error * Fix the error when using array ref in updatenode with old version perl, it is introduced by PR#4484 (#4518) * Do not restart conserver if goconserver was started If goconserver was enabled, do not start conserver when restart xcatd on service node. * remove the /etc/localtime before copy timezone file * Use CONGO_CLIENT_TYPE to tell goconserver the source of client (#4501) goconserver could send back message based on the client type this commit set CONGO_CLIENT_TYPE to xcat to make the message from goconserver more friendly. * add rflash -d doc * only ignore 169.254.x.x for OpenBMC * Fix issue 4513, print out better error msg for reventlog -s * Modify or add openbmc test cases or bundle * add test cases for updatenode -f/F in hierarchy environment, covers issues #4456,#4455 and PR #4425 (#4500) --- README.rst | 7 +- Version | 2 +- docs/source/QA/index.rst | 7 + docs/source/QA/makehosts_qa.rst | 132 ++ docs/source/advanced/index.rst | 1 - docs/source/advanced/networks/index.rst | 4 +- .../onie_switches/os_cumulus/install.rst | 8 +- .../onie_switches/os_cumulus/manage.rst | 22 +- .../onie_switches/os_cumulus/upgrade.rst | 109 +- docs/source/advanced/security/index.rst | 3 +- docs/source/advanced/security/ssl_config.rst | 56 + .../advanced/switches/ethernet_switches.rst | 2 - docs/source/advanced/switches/index.rst | 7 - .../references/man1/bmcdiscover.1.rst | 32 - .../admin-guides/references/man1/rflash.1.rst | 63 +- .../admin-guides/references/man1/rmdef.1.rst | 2 +- .../references/man1/rspconfig.1.rst | 67 + .../references/man5/linuximage.5.rst | 2 +- .../references/man5/servicenode.5.rst | 24 +- .../admin-guides/references/man7/group.7.rst | 22 +- .../admin-guides/references/man7/node.7.rst | 22 +- .../references/man7/osimage.7.rst | 2 +- .../references/man8/makeconservercf.8.rst | 10 + .../references/man8/makegocons.8.rst | 151 ++ docs/source/index.rst | 1 + .../coral/cluster_mgmt/firmware/index.rst | 8 + .../coral/cluster_mgmt/firmware/ipmi.rst | 40 + .../coral/cluster_mgmt/firmware/openbmc.rst | 79 + .../references/coral/cluster_mgmt/index.rst | 7 + docs/source/references/coral/index.rst | 1 + .../references/coral/known_issues/index.rst | 1 + .../coral/known_issues/openbmc/2_13_8.rst | 7 + .../coral/known_issues/openbmc/SW402273.rst | 17 + .../coral/known_issues/openbmc/SW404161.rst | 26 + .../coral/known_issues/openbmc/SW406771.rst | 84 + .../coral/known_issues/openbmc/SW407037.rst | 38 + .../coral/known_issues/openbmc/index.rst | 47 + perl-xCAT/xCAT/DBobjUtils.pm | 39 +- perl-xCAT/xCAT/DSHCLI.pm | 47 +- perl-xCAT/xCAT/RSYNC.pm | 6 +- perl-xCAT/xCAT/Schema.pm | 94 +- perl-xCAT/xCAT/Scope.pm | 4 + perl-xCAT/xCAT/ServiceNodeUtils.pm | 13 +- perl-xCAT/xCAT/Usage.pm | 4 +- perl-xCAT/xCAT/Utils.pm | 32 +- perl-xCAT/xCAT/data/switchinfo.pm | 6 +- xCAT-client/bin/rcons | 69 + xCAT-client/debian/xcat-client.links | 1 + xCAT-client/pods/man1/bmcdiscover.1.pod | 20 - xCAT-client/pods/man1/rflash.1.pod | 46 +- xCAT-client/pods/man1/rmdef.1.pod | 2 +- xCAT-client/pods/man1/rspconfig.1.pod | 46 + xCAT-client/pods/man8/makeconservercf.8.pod | 8 + xCAT-client/pods/man8/makegocons.8.pod | 98 + xCAT-client/xCAT-client.spec | 1 + xCAT-genesis-builder/buildrpm | 41 +- xCAT-genesis-builder/xCAT-genesis-base.spec | 74 + xCAT-genesis-scripts/bin/bmcsetup | 6 +- xCAT-genesis-scripts/bin/dodiscovery | 31 +- xCAT-probe/subcmds/osdeploy | 9 +- xCAT-server/lib/perl/xCAT/Goconserver.pm | 108 + xCAT-server/lib/perl/xCAT/Postage.pm | 41 +- xCAT-server/lib/perl/xCAT/xcatd.pm | 2 +- .../lib/xcat/monitoring/monitorctrl.pm | 4 +- xCAT-server/lib/xcat/plugins/AAsn.pm | 10 +- xCAT-server/lib/xcat/plugins/DBobjectdefs.pm | 6 + xCAT-server/lib/xcat/plugins/anaconda.pm | 77 +- xCAT-server/lib/xcat/plugins/blade.pm | 4 + xCAT-server/lib/xcat/plugins/bmcdiscover.pm | 75 +- xCAT-server/lib/xcat/plugins/conserver.pm | 83 +- xCAT-server/lib/xcat/plugins/credentials.pm | 1 + xCAT-server/lib/xcat/plugins/ddns.pm | 15 +- xCAT-server/lib/xcat/plugins/debian.pm | 35 +- xCAT-server/lib/xcat/plugins/dhcp.pm | 109 +- xCAT-server/lib/xcat/plugins/goconserver.pm | 422 ++++ xCAT-server/lib/xcat/plugins/hpblade.pm | 4 + xCAT-server/lib/xcat/plugins/ipmi.pm | 9 +- xCAT-server/lib/xcat/plugins/mknb.pm | 2 +- xCAT-server/lib/xcat/plugins/nodediscover.pm | 20 +- xCAT-server/lib/xcat/plugins/openbmc.pm | 1831 ++++++++++++++--- xCAT-server/lib/xcat/plugins/packimage.pm | 1 + xCAT-server/lib/xcat/plugins/pdu.pm | 483 ++++- xCAT-server/lib/xcat/plugins/petitboot.pm | 6 +- xCAT-server/lib/xcat/plugins/seqdiscovery.pm | 7 +- xCAT-server/lib/xcat/plugins/sles.pm | 44 +- xCAT-server/lib/xcat/plugins/switch.pm | 4 + .../lib/xcat/plugins/switchdiscover.pm | 11 +- xCAT-server/lib/xcat/plugins/typemtms.pm | 4 + xCAT-server/lib/xcat/plugins/updatenode.pm | 24 +- xCAT-server/lib/xcat/plugins/xdsh.pm | 4 + xCAT-server/lib/xcat/plugins/zzzdiscovery.pm | 10 +- xCAT-server/sbin/xcatd | 21 +- xCAT-server/share/xcat/cons/openbmc | 27 +- xCAT-server/share/xcat/netboot/rh/genimage | 35 +- xCAT-server/share/xcat/netboot/sles/genimage | 2 +- xCAT-server/share/xcat/scripts/configonie | 61 +- xCAT-server/share/xcat/scripts/xHRM | 219 +- xCAT-server/share/xcat/scripts/xdcpmerge.sh | 20 +- .../bundle/hdctrl_openpower_openbmc.bundle | 42 +- .../autotest/bundle/rhels6.7_ppc64.bundle | 3 - .../autotest/bundle/rhels6.8_ppc64.bundle | 3 - .../autotest/bundle/rhels6.9_ppc64.bundle | 3 - .../autotest/bundle/rhels7.2_ppc64.bundle | 3 - .../autotest/bundle/rhels7.2_ppc64le.bundle | 3 - .../autotest/bundle/rhels7.3_ppc64.bundle | 3 - .../autotest/bundle/rhels7.3_ppc64le.bundle | 3 - .../bundle/rhels7.4-pegas_ppc64le.bundle | 3 - .../autotest/bundle/rhels7.4_ppc64.bundle | 3 - .../autotest/bundle/rhels7.4_ppc64le.bundle | 3 - .../testcase/UT_openbmc/rflash_cases0 | 72 + .../autotest/testcase/UT_openbmc/rinv_cases0 | 36 + .../testcase/UT_openbmc/rspconfig_cases0 | 71 + .../autotest/testcase/bmcdiscover/cases0 | 20 +- .../installation/switch_to_dns_forward_mode | 64 + xCAT-test/autotest/testcase/nodeset/cases0 | 5 +- .../autotest/testcase/performance/Dockerfile | 8 + xCAT-test/autotest/testcase/performance/case0 | 190 +- .../autotest/testcase/performance/hwcmd.lst | 5 + .../autotest/testcase/performance/nodecmd.lst | 4 + .../testcase/performance/simulatorctl.sh | 168 ++ xCAT-test/autotest/testcase/reventlog/cases0 | 21 + .../autotest/testcase/rflash/rflash_openbmc.0 | 485 +++++ xCAT-test/autotest/testcase/rpower/cases0 | 14 +- xCAT-test/autotest/testcase/rspconfig/cases0 | 24 +- .../cfg_wrong_cn_in_sn_pool_tftp_sync_mode | 155 ++ ...t_set_xcatmaster_in_sn_pool_tftp_sync_mode | 165 ++ ...et_disjointdhcps_in_sn_pool_tftp_sync_mode | 118 ++ .../set_xcatmaster_in_sn_pool_tftp_sync_mode | 165 ++ .../snpool/setup_sn_pool_tftp_sync_mode | 118 ++ .../updatenode/filesyncing_hierarchy_case | 77 + xCAT-test/bin/xcatperftest | 76 +- xCAT-test/xcattest | 179 +- xCAT/debian/postinst | 4 +- xCAT/postscripts/configinterface | 5 +- xCAT/postscripts/confignetwork | 16 +- xCAT/postscripts/nicutils.sh | 24 +- xCAT/postscripts/otherpkgs | 33 + xCAT/postscripts/setroute | 54 +- xCAT/postscripts/setupntp | 19 +- xCAT/postscripts/xcatdsklspost | 21 +- xCAT/postscripts/xcatinstallpost | 9 + xCAT/xCAT.spec | 4 +- xCATsn/xCATsn.spec | 24 +- 143 files changed, 7039 insertions(+), 1137 deletions(-) create mode 100644 docs/source/QA/index.rst create mode 100644 docs/source/QA/makehosts_qa.rst create mode 100644 docs/source/advanced/security/ssl_config.rst delete mode 100644 docs/source/advanced/switches/ethernet_switches.rst delete mode 100644 docs/source/advanced/switches/index.rst create mode 100644 docs/source/guides/admin-guides/references/man8/makegocons.8.rst create mode 100644 docs/source/references/coral/cluster_mgmt/firmware/index.rst create mode 100644 docs/source/references/coral/cluster_mgmt/firmware/ipmi.rst create mode 100644 docs/source/references/coral/cluster_mgmt/firmware/openbmc.rst create mode 100644 docs/source/references/coral/cluster_mgmt/index.rst create mode 100644 docs/source/references/coral/known_issues/openbmc/2_13_8.rst create mode 100644 docs/source/references/coral/known_issues/openbmc/SW402273.rst create mode 100644 docs/source/references/coral/known_issues/openbmc/SW404161.rst create mode 100644 docs/source/references/coral/known_issues/openbmc/SW406771.rst create mode 100644 docs/source/references/coral/known_issues/openbmc/SW407037.rst create mode 100644 docs/source/references/coral/known_issues/openbmc/index.rst create mode 100644 xCAT-client/pods/man8/makegocons.8.pod mode change 100755 => 100644 xCAT-genesis-builder/xCAT-genesis-base.spec create mode 100644 xCAT-server/lib/perl/xCAT/Goconserver.pm create mode 100644 xCAT-server/lib/xcat/plugins/goconserver.pm create mode 100644 xCAT-test/autotest/testcase/UT_openbmc/rflash_cases0 create mode 100644 xCAT-test/autotest/testcase/UT_openbmc/rinv_cases0 create mode 100644 xCAT-test/autotest/testcase/UT_openbmc/rspconfig_cases0 create mode 100644 xCAT-test/autotest/testcase/installation/switch_to_dns_forward_mode create mode 100644 xCAT-test/autotest/testcase/performance/Dockerfile create mode 100644 xCAT-test/autotest/testcase/performance/hwcmd.lst create mode 100644 xCAT-test/autotest/testcase/performance/nodecmd.lst create mode 100644 xCAT-test/autotest/testcase/performance/simulatorctl.sh create mode 100644 xCAT-test/autotest/testcase/rflash/rflash_openbmc.0 create mode 100644 xCAT-test/autotest/testcase/snpool/cfg_wrong_cn_in_sn_pool_tftp_sync_mode create mode 100644 xCAT-test/autotest/testcase/snpool/not_set_xcatmaster_in_sn_pool_tftp_sync_mode create mode 100644 xCAT-test/autotest/testcase/snpool/set_disjointdhcps_in_sn_pool_tftp_sync_mode create mode 100644 xCAT-test/autotest/testcase/snpool/set_xcatmaster_in_sn_pool_tftp_sync_mode create mode 100644 xCAT-test/autotest/testcase/snpool/setup_sn_pool_tftp_sync_mode create mode 100644 xCAT-test/autotest/testcase/updatenode/filesyncing_hierarchy_case diff --git a/README.rst b/README.rst index a8377c82e..6d1848fbf 100644 --- a/README.rst +++ b/README.rst @@ -8,7 +8,7 @@ Documentation xCAT documentation is available at: http://xcat-docs.readthedocs.io/en/latest/ -|docs_latest| |docs_2137| |docs_2136| |docs_2135| |docs_2134| |docs_2133| |docs_2132| |docs_2131| |docs_2130| |docs_212| +|docs_latest| |docs_2138| |docs_2137| |docs_2136| |docs_2135| |docs_2134| |docs_2133| |docs_2132| |docs_2131| |docs_2130| |docs_212| Open Source License ------------------- @@ -22,6 +22,11 @@ Developers Developers and prospective contributors are encouraged to read the `Developers Guide `_ In particular the `GitHub `_ related subsection. +.. |docs_2138| image:: https://readthedocs.org/projects/xcat-docs/badge/?version=2.13.8 + :alt: 2.13.8 documentation status + :scale: 100% + :target: http://xcat-docs.readthedocs.io/en/2.13.8/ + .. |docs_2137| image:: https://readthedocs.org/projects/xcat-docs/badge/?version=2.13.7 :alt: 2.13.7 documentation status :scale: 100% diff --git a/Version b/Version index c38dd67f3..6ad4f1e46 100644 --- a/Version +++ b/Version @@ -1 +1 @@ -2.13.8 +2.13.9 diff --git a/docs/source/QA/index.rst b/docs/source/QA/index.rst new file mode 100644 index 000000000..00069abdd --- /dev/null +++ b/docs/source/QA/index.rst @@ -0,0 +1,7 @@ +Q/A list +======== + +.. toctree:: + :maxdepth: 2 + + makehosts_qa.rst diff --git a/docs/source/QA/makehosts_qa.rst b/docs/source/QA/makehosts_qa.rst new file mode 100644 index 000000000..f0c425b87 --- /dev/null +++ b/docs/source/QA/makehosts_qa.rst @@ -0,0 +1,132 @@ +DNS,hostname and alias Q/A list +------------------------------- + +Q: When there are multiple NICs, how to generate ``/etc/hosts`` records? +```````````````````````````````````````````````````````````````````````` + +When there are multiple NICs, and you want to use ``confignetwork`` to configure these NICs, suggest to use ``hosts`` table to configure installnic and use ``nics`` table to configure secondary NICs. You can refer to the following best practice example to generate ``/etc/hosts`` records. + +**Best practice example**: + + * There are 2 networks in different domains: ``mgtnetwork`` and ``pubnetwork`` + * ``mgtnetwork`` is xCAT management network + * There are 2 adapters in system node1: ``eth0`` and ``eth1`` + * Add installnic ``eth0`` ``10.5.106.101`` record in ``/etc/hosts``, its alias is ``mgtnic`` + * hostnames ``node1-pub`` and ``node1.public.com`` are for nic ``eth1``, ip is ``192.168.30.101`` + +**Steps**: + + #. Add networks entry in ``networks`` table: :: + + chdef -t network mgtnetwork net=10.0.0.0 mask=255.0.0.0 domain=cluster.com + chdef -t network pubnetwork net=192.168.30.0 mask=255.255.255.0 domain=public.com + + #. Create ``node1`` with installnic ip ``10.5.106.101``, its alias is ``mgtnic``: :: + + chdef node1 ip=10.5.106.101 hostnames=mgtnic groups=all + + #. Configure ``eth1`` in ``nics`` table: :: + + chdef node1 nicips.eth1=192.168.30.101 nichostnamesuffixes.eth1=-pub nicaliases.eth1=node1.public.com nictypes.eth1=Ethernet nicnetworks.eth1=pubnetwork + + #. Check ``node1`` definition: :: + + lsdef node1 + Object name: node1 + groups=all + ip=10.5.106.101 + hostnames=mgtnic + nicaliases.eth1=node1.public.com + nichostnamesuffixes.eth1=-pub + nicips.eth1=192.168.30.101 + nicnetworks.eth1=pubnetwork + nictypes.eth1=Ethernet + postbootscripts=otherpkgs + postscripts=syslog,remoteshell,syncfiles + + #. Execute ``makehosts -n`` to generate ``/etc/hosts`` records: :: + + makehosts -n + + #. Check results in ``/etc/hosts``: :: + + 10.5.106.101 node1 node1.cluster.com mgtnic + 192.168.30.101 node1-pub node1.public.com + + #. Edit ``/etc/resolv.conf``, xCAT management node ip like ``10.5.106.2`` is nameserver: :: + + search cluster.com public.com + nameserver 10.5.106.2 + + #. Execute ``makedns -n`` to configure DNS + +Q: How to configure aliases? +```````````````````````````` + +There are 3 methods to configure aliases: + +#. Use ``hostnames`` in ``hosts`` table to configure aliases for the installnic. +#. If you want to use script ``confignetwork`` to configure secondary NICs, suggest to use ``aliases`` in ``nics`` table to configure aliases, you can refer to :doc:`Configure Aliases <../guides/admin-guides/manage_clusters/common/deployment/network/cfg_network_aliases>` +#. If you want to generate aliases records in ``/etc/hosts`` for secondary NICs, and don't want to use script ``confignetwork`` to configure these NICs, suggest to use ``otherinterfaces`` in ``hosts`` table to configure aliases. You can refer to following example: + + * If you want to add ``node1-hd`` ``20.1.1.1`` in ``hosts`` table, and don't use ``confignetwork`` to configure it, you can add ``otherinterfaces`` like this: :: + + chdef node1 otherinterfaces="node1-hd:20.1.1.1" + + * After executing ``makehosts -n``, you can get records in ``/etc/hosts`` like following: :: + + 20.1.1.1 node1-hd + +**Note**: If suffixes or aliases for the same IP are configured in both ``hosts`` table and ``nics`` table, will cause conflicts. ``makehosts`` will use values from ``nics`` table. The values from ``nics`` table will over-write that from ``hosts`` table to create ``/etc/hosts`` records. + +Q: How to handle the same short hostname in different domains? +`````````````````````````````````````````````````````````````` + +You can follow the best practice example. + +**Best practice example**: + + * There are 2 networks in different domains: ``mgtnetwork`` and ``pubnetwork`` + * ``mgtnetwork`` is xCAT management network + * Generate 2 records with the same hostname in ``/etc/hosts``, like: :: + + 10.5.106.101 node1.cluster.com + 192.168.20.101 node1.public.com + + * Nameserver is xCAT management node IP + +**Steps**: + + #. Add networks entry in ``networks`` table: :: + + chdef -t network mgtnetwork net=10.0.0.0 mask=255.0.0.0 domain=cluster.com + chdef -t network pubnetwork net=192.168.30.0 mask=255.255.255.0 domain=public.com + + #. Create ``node1`` with ``ip=10.5.106.101``, xCAT can manage and install this node: :: + + chdef node1 ip=10.5.106.101 groups=all + + #. Create ``node1-pub`` with ``ip=192.168.30.101``, this node is only used to generate ``/etc/hosts`` records for public network, can use ``_unmanaged`` group name to label it: :: + + chdef node1-pub ip=192.168.30.101 hostnames=node1.public.com groups=_unmanaged + + #. Execute ``makehosts -n`` to generate ``/etc/hosts`` records: :: + + makehosts -n + + #. Check results in ``/etc/hosts``: :: + + 10.5.106.101 node1 node1.cluster.com + 192.168.30.101 node1-pub node1.public.com + + #. Edit ``/etc/resolv.conf``, for example, xCAT management node IP is 10.5.106.2 : :: + + search cluster.com public.com + nameserver 10.5.106.2 + + #. Execute ``makedns -n`` to configure DNS + +Q: When to use ``hosts`` table and ``nics`` table? +`````````````````````````````````````````````````` + +``hosts`` table is used to store IP addresses and hostnames of nodes. ``makehosts`` use these data to create ``/etc/hosts`` records. ``nics`` table is used to stores secondary NICs details. Some scripts like ``confignetwork`` use data from ``nics`` table to configure secondary NICs. ``makehosts`` also use these data to create ``/etc/hosts`` records for each NIC. diff --git a/docs/source/advanced/index.rst b/docs/source/advanced/index.rst index 8c84eb6ac..820e899d8 100755 --- a/docs/source/advanced/index.rst +++ b/docs/source/advanced/index.rst @@ -23,6 +23,5 @@ Advanced Topics restapi/index.rst security/index.rst softlayer/index.rst - switches/index.rst sysclone/index.rst zones/index.rst diff --git a/docs/source/advanced/networks/index.rst b/docs/source/advanced/networks/index.rst index cd29cd51f..83fe4c232 100644 --- a/docs/source/advanced/networks/index.rst +++ b/docs/source/advanced/networks/index.rst @@ -1,5 +1,5 @@ -Networks -======== +Networking +========== .. toctree:: :maxdepth: 2 diff --git a/docs/source/advanced/networks/onie_switches/os_cumulus/install.rst b/docs/source/advanced/networks/onie_switches/os_cumulus/install.rst index 8915d02af..b10dd9a79 100644 --- a/docs/source/advanced/networks/onie_switches/os_cumulus/install.rst +++ b/docs/source/advanced/networks/onie_switches/os_cumulus/install.rst @@ -12,12 +12,16 @@ xCAT provides support for detecting and installing the Cumulus Linux OS into ONI The mac address of the switch management port is required for xCAT to configure the DHCP information and send over the OS to install on the switch. - **[small clusters]** If you know the mac address of the management port on the switch, create the pre-defined switch definition providing the mac address. :: + **Small Clusters** + + If you know the mac address of the management port on the switch, create the pre-defined switch definition providing the mac address. :: mkdef frame01sw1 --template onieswitch arch=armv71 \ ip=192.168.1.1 mac="aa:bb:cc:dd:ee:ff" - **[large clusters]** xCAT's :doc:`switchdiscover ` command can be used to discover the mac address and fill in the predefined switch definitions based on the switch/switchport mapping. + **Large Clusters** + + xCAT's :doc:`switchdiscover ` command can be used to discover the mac address and fill in the predefined switch definitions based on the switch/switchport mapping. #. Define all the switch objects providing the switch/switchport mapping: :: diff --git a/docs/source/advanced/networks/onie_switches/os_cumulus/manage.rst b/docs/source/advanced/networks/onie_switches/os_cumulus/manage.rst index 512c4b1f4..b2976f56a 100644 --- a/docs/source/advanced/networks/onie_switches/os_cumulus/manage.rst +++ b/docs/source/advanced/networks/onie_switches/os_cumulus/manage.rst @@ -4,7 +4,19 @@ Switch Management Switch Port and VLAN Configuration ---------------------------------- -xCAT expects the configuration for the front-panel ports to be located at ``/etc/network/interfaces.d/xCAT.intf`` on the switch. The ``configinterface`` postscript can download an interface configuration file from the management node. Place the configuration file in the directory ``/install/custom/sw_os/cumulus/interface/`` on the management node. It will first look for a file named the same as the switch's hostname, followed by the name of each group, followed by the word 'default'. If the postscript cannot find a configuration file on the management node, it will set all the ports on the switch to be part of VLAN 1. See the Cumulus Networks documentation for more information regarding advanced networking configuration. :: +xCAT places the front-panel port configuration in ``/etc/network/interfaces.d/xCAT.intf``. + +The ``configinterface`` postscript can be used to pull switch interface configuration from the xCAT Management Node (MN) to the switch. Place the switch specific confguration files in the following directory on the MN: ``/install/custom/sw_os/cumulus/interface/``. + +xCAT will look for files in the above directory in the following order: + + 1. file name that matches the switch hostname + 2. file name that matches the switch group name + 3. file name that has the word 'default' + + Note: If the postscript cannot find a configuration file on the MN, it will set all ports on the switch to be part of VLAN 1. + +Execute the script using the following command: :: updatenode -P configinterface @@ -12,9 +24,11 @@ xCAT expects the configuration for the front-panel ports to be located at ``/etc Re-install OS ------------- -There may be occasions where a re-install of the OS is required. Assuming the files are available on the xCAT management node, the following commands will invoke the install process: +There may be occasions where a re-install of the Cumulus Linux OS is required. The following commands can be used to invoke the install: -* **[use xCAT]** ``xdsh`` can be used to invoke the reinstall of the OS: :: +**Note:** Assumption that the Cumulus Linux files are on the xCAT MN in the correct place. + +* **Using xCAT**, ``xdsh`` can invoke the reinstall of the OS: :: # to clear out all the previous configuration, use the -k option (optional) xdsh "/usr/cumulus/bin/onie-select -k @@ -22,7 +36,7 @@ There may be occasions where a re-install of the OS is required. Assuming the # to invoke the reinstall of the OS xdsh "/usr/cumulus/bin/onie-select -i -f;reboot" -* **[manually]** Log into the Cumulus OS switch and run the following commands: :: +* **Manually**, log into the switch and run the following commands: :: sudo onie-select -i sudo reboot diff --git a/docs/source/advanced/networks/onie_switches/os_cumulus/upgrade.rst b/docs/source/advanced/networks/onie_switches/os_cumulus/upgrade.rst index da079129c..ff125998e 100644 --- a/docs/source/advanced/networks/onie_switches/os_cumulus/upgrade.rst +++ b/docs/source/advanced/networks/onie_switches/os_cumulus/upgrade.rst @@ -1,62 +1,79 @@ -Cumulus OS upgrade +Cumulus OS Upgrade ================== -The Cumulus OS on the ONIE switches can be upgraded in 2 ways: +The Cumulus OS on the ONIE switches can be upgraded using one of the following methods: -* Upgrade only the changed packages, using ``apt-get update`` and ``apt-get upgrade``. If the ONIE switches has internet access, this is the preferred method, otherwise, you need to build up a local cumulus mirror in the cluster. +Full Install +------------ - Since in a typical cluster setup, the switches usually do not have internet access, you can create a local mirror on the server which has internet access and can be reached from the switches, the steps are :: +Perform a full install from the ``.bin`` file of the new Cumulus Linux OS version, using ONIE. + +**Note:** Make sure you back up all your data and configuration files as the binary install will erase all previous configuration. - mkdir -p /install/mirror/cumulus - cd /install/mirror/cumulus - #the wget might take a long time, it will be better if you can set up - #a cron job to sync the local mirror with upstream - wget -m --no-parent http://repo3.cumulusnetworks.com/repo/ - - then compose a ``sources.list`` file on MN like this(take 172.21.253.37 as ip address of the local mirror server) :: +#. Place the binary image under ``/install`` on the xCAT MN node. - #cat /tmp/sources.list - deb http://172.21.253.37/install/mirror/cumulus/repo3.cumulusnetworks.com/repo CumulusLinux-3 cumulus upstream - deb-src http://172.21.253.37/install/mirror/cumulus/repo3.cumulusnetworks.com/repo CumulusLinux-3 cumulus upstream - - deb http://172.21.253.37/install/mirror/cumulus/repo3.cumulusnetworks.com/repo CumulusLinux-3-security-updates cumulus upstream - deb-src http://172.21.253.37/install/mirror/cumulus/repo3.cumulusnetworks.com/repo CumulusLinux-3-security-updates cumulus upstream - - deb http://172.21.253.37/install/mirror/cumulus/repo3.cumulusnetworks.com/repo CumulusLinux-3-updates cumulus upstream - deb-src http://172.21.253.37/install/mirror/cumulus/repo3.cumulusnetworks.com/repo CumulusLinux-3-updates cumulus upstream - - distribute the ``sources.list`` file to the switches to upgrade with ``xdcp``, take "switch1" as an example here :: - - xdcp switch1 /tmp/sources.list /etc/apt/sources.list - - then invoke ``apt-get update`` and ``apt-get install`` on the switches to start package upgrade, a reboot might be needed after upgrading :: - - xdsh switch1 'apt-get update && apt-get upgrade && reboot' - - check the `/etc/os-release` file to make sure the Cumulus OS has been upgraded :: - - cat /etc/os-release - - - -* Performe a binary (full image) install of the new version, using ONIE. If you expect to upgrade between major versions or if you have the binary image to upgrade to, this way is the recommended one. Make sure to backup your data and configuration files because binary install will erase all the configuration and data on the switch. - - The steps to perform a binary (full image) install of the new version are: - - 1) place the binary image "cumulus-linux-3.4.1.bin" under ``/install`` directory on MN("172.21.253.37") :: + In this example, IP=172.21.253.37 is the IP on the Management Node. :: mkdir -p /install/onie/ cp cumulus-linux-3.4.1.bin /install/onie/ - 2) invoke the upgrade on switches with ``xdsh`` :: +#. Invoke the upgrade on the switches using :doc:`xdsh `: :: - xdsh switch1 "/usr/cumulus/bin/onie-install -a -f -i http://172.21.253.37/install/onie/cumulus-linux-3.4.1.bin && reboot" + xdsh switch1 "/usr/cumulus/bin/onie-install -a -f -i \ + http://172.21.253.37/install/onie/cumulus-linux-3.4.1.bin && reboot" - The full upgrade process might cost 30 min, you can ping the switch with ``ping switch1`` to check whether it finishes upgrade. - - 3) After upgrading, the license should be installed, see :ref:`Activate the License ` for detailed steps. + **Note:** The full upgrade process may run 30 minutes or longer. + +#. After upgrading, the license should be installed, see :ref:`Activate the License ` for details. + +#. Restore your data and configuration files on the switch. + + + +Update Changed Packages +----------------------- + +This is the preferred method for upgrading the switch OS for incremental OS updates. + +Create Local Mirror +``````````````````` + +If the switches do not have access to the public Internet, you can create a local mirror of the Cumulus Linux repo. + +#. Create a local mirror on the Management Node: :: - 4) Restore your data and configuration files on the switch. + mkdir -p /install/mirror/cumulus + cd /install/mirror/cumulus + wget -m --no-parent http://repo3.cumulusnetworks.com/repo/ + +#. Create a ``sources.list`` file to point to the local repo on the Management node. In this example, IP=172.21.253.37 is the IP on the Management Node. :: + + # cat /tmp/sources.list + deb http://172.21.253.37/install/mirror/cumulus/repo3.cumulusnetworks.com/repo CumulusLinux-3 cumulus upstream + deb-src http://172.21.253.37/install/mirror/cumulus/repo3.cumulusnetworks.com/repo CumulusLinux-3 cumulus upstream + + deb http://172.21.253.37/install/mirror/cumulus/repo3.cumulusnetworks.com/repo CumulusLinux-3-security-updates cumulus upstream + deb-src http://172.21.253.37/install/mirror/cumulus/repo3.cumulusnetworks.com/repo CumulusLinux-3-security-updates cumulus upstream + + deb http://172.21.253.37/install/mirror/cumulus/repo3.cumulusnetworks.com/repo CumulusLinux-3-updates cumulus upstream + deb-src http://172.21.253.37/install/mirror/cumulus/repo3.cumulusnetworks.com/repo CumulusLinux-3-updates cumulus upstream + + +#. Distribute the ``sources.list`` file to your switches using :doc:`xdcp `. :: + + xdcp switch1 /tmp/sources.list /etc/apt/sources.list + +Invoke the Update +````````````````` + +#. Use xCAT :doc:`xdsh ` to invoke the update: :: + + # + # A reboot may be needed after the upgrade + # + xdsh switch1 'apt-get update && apt-get upgrade && reboot' + +#. Check in ``/etc/os-release`` file to verify that the OS has been upgraded. diff --git a/docs/source/advanced/security/index.rst b/docs/source/advanced/security/index.rst index 5fdc56f08..790979759 100644 --- a/docs/source/advanced/security/index.rst +++ b/docs/source/advanced/security/index.rst @@ -6,4 +6,5 @@ The security of a system covers a wide range of elements, from the security of s .. toctree:: :maxdepth: 2 - security + ssl_config.rst + security.rst diff --git a/docs/source/advanced/security/ssl_config.rst b/docs/source/advanced/security/ssl_config.rst new file mode 100644 index 000000000..3ea6f360b --- /dev/null +++ b/docs/source/advanced/security/ssl_config.rst @@ -0,0 +1,56 @@ +OpenSSL Configuration +===================== + +xCAT does not ship OpenSSL RPMS nor does it statically link to any OpenSSL libraries. Communication between the xCAT client and daemon utilizes OpenSSL and the administrator can configure SSL_version and SSL_cipher that should be used by xCAT daemons. + +The configuration is stored in the xCAT site table using the ``site.xcatsslversion`` and ``site.xcatsslciphers`` variables. + +Configuration +------------- + +By default, xCAT ships with ``TLSv1`` configured. The current highest SSL version that can be supported is ``TLSv1.2``. + +* For rhels7.x and sles12.x and higher: :: + + chtab key=xcatsslversion site.value=TLSv12 + +* For ubuntu 14.x and higher: :: + + chtab key=xcatsslversion site.value=TLSv1_2 + +* For AIX 7.1.3.x: :: + + chtab key=xcatsslversion site.value=TLSv1_2 + + +If running > ``TLSv1``, it is possible to disable insecure ciphers. Here's an example of one possible configuration: :: + + "xcatsslciphers","kDH:kEDH:kRSA:!SSLv3:!SSLv2:!aNULL:!eNULL:!MEDIUM:!LOW:!MD5:!EXPORT:!CAMELLIA:!ECDH",, + +After making any changes to these configuration values, ``xcatd`` must be restarted: :: + + service restart xcatd + + +If any mistakes have been made and communiation is lost to xCAT, use ``XCATBYPASS`` to fix/remove the bad configuration: :: + + XCATBYPASS=1 tabedit site + + +Validation +---------- + +Use the ``openssl`` command to validate the SSL configuration is valid and expected. + +* To check whether TLSv1 is supported by xcatd: :: + + openssl s_client -connect 127.0.0.1:3001 -tls1 + +* To check if SSLv3 is disabled on ``xcatd``: :: + + openssl s_client -connect localhost:3001 -ssl3 + + You should get a reponse similar to: :: + + 70367087597568:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1259:SSL alert number 40 + 70367087597568:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:598: diff --git a/docs/source/advanced/switches/ethernet_switches.rst b/docs/source/advanced/switches/ethernet_switches.rst deleted file mode 100644 index 1c9a8d361..000000000 --- a/docs/source/advanced/switches/ethernet_switches.rst +++ /dev/null @@ -1,2 +0,0 @@ -Ethernet Switches -================= diff --git a/docs/source/advanced/switches/index.rst b/docs/source/advanced/switches/index.rst deleted file mode 100644 index 74d3b9cf9..000000000 --- a/docs/source/advanced/switches/index.rst +++ /dev/null @@ -1,7 +0,0 @@ -Switch Management -================= - -.. toctree:: - :maxdepth: 2 - - ethernet_switches.rst diff --git a/docs/source/guides/admin-guides/references/man1/bmcdiscover.1.rst b/docs/source/guides/admin-guides/references/man1/bmcdiscover.1.rst index 6fde20bb8..b341c4d92 100644 --- a/docs/source/guides/admin-guides/references/man1/bmcdiscover.1.rst +++ b/docs/source/guides/admin-guides/references/man1/bmcdiscover.1.rst @@ -25,10 +25,6 @@ SYNOPSIS \ **bmcdiscover**\ [\ **-**\ **-sn**\ \ *SN_nodename*\ ] [\ **-s**\ \ *scan_method*\ ] [\ **-u**\ \ *bmc_user*\ ] [\ **-p**\ \ *bmc_passwd*\ ] [\ **-z**\ ] [\ **-w**\ ] \ **-**\ **-range**\ \ *ip_ranges*\ -\ **bmcdiscover**\ \ **-u**\ \ *bmc_user*\ \ **-p**\ \ *bmc_passwd*\ \ **-i**\ \ *bmc_ip*\ \ **-**\ **-check**\ - -\ **bmcdiscover**\ [\ **-u**\ \ *bmc_user*\ ] [\ **-p**\ \ *bmc_passwd*\ ] \ **-i**\ \ *bmc_ip*\ \ **-**\ **-ipsource**\ - *********** DESCRIPTION @@ -98,18 +94,6 @@ OPTIONS -\ **-**\ **-check**\ - - Check BMC administrator User/Password. - - - -\ **-**\ **-ipsource**\ - - Display the BMC IP configuration. - - - \ **-h|-**\ **-help**\ Display usage message @@ -187,22 +171,6 @@ Output is similar to: bmcdiscover -s nmap --range "10.4.22-23.100-254" -w -z -5. To check if the username or password is correct against the BMC: - - -.. code-block:: perl - - bmcdiscover -i 10.4.23.254 -u USERID -p PASSW0RD --check - - -6. Get BMC IP Address source, DHCP Address or static Address - - -.. code-block:: perl - - bmcdiscover -i 10.4.23.254 -u USERID -p PASSW0RD --ipsource - - ******** SEE ALSO diff --git a/docs/source/guides/admin-guides/references/man1/rflash.1.rst b/docs/source/guides/admin-guides/references/man1/rflash.1.rst index 12833968e..097c35655 100644 --- a/docs/source/guides/admin-guides/references/man1/rflash.1.rst +++ b/docs/source/guides/admin-guides/references/man1/rflash.1.rst @@ -63,7 +63,9 @@ OpenPOWER OpenBMC specific : \ **rflash**\ \ *noderange*\ \ *tar_file_path*\ {[\ **-c | -**\ **-check**\ ] | [\ **-a | -**\ **-activate**\ ] | [\ **-u | -**\ **-upload**\ ]} -\ **rflash**\ \ *noderange*\ \ *image_id*\ {[\ **-a | -**\ **-activate**\ ] | [\ **-d | -**\ **-delete**\ ]} +\ **rflash**\ \ *noderange*\ \ *tar_file_directory*\ [\ **-d**\] [\ **--no-host-reboot**\] + +\ **rflash**\ \ *noderange*\ \ *image_id*\ {[\ **-a | -**\ **-activate**\ ] | [\ **-**\ **-delete**\ ]} @@ -135,18 +137,65 @@ OpenPOWER specific (using IPMI): ================================ -The command will update firmware for OpenPOWER BMC when given an OpenPOWER node and either the hpm formatted file path or path to a data directory. +The command will update firmware for OpenPOWER BMC when given an OpenPOWER node with \ *mgt=ipmi*\ and either the hpm formatted file path or path to a data directory. + \ **Note:**\ When using \ **rflash**\ in hierarchical environment, the hpm file or data directory must be accessible from Service Nodes. -OpenPOWER OpenBMC specific: -=========================== +OpenPOWER specific (using OpenBMC): +=================================== -The command will update firmware for OpenPOWER OpenBMC when given an OpenPOWER node and either an update .tar file or an uploaded image id. +The command will update firmware for OpenPOWER BMC when given an OpenPOWER node with \ *mgt=openbmc*\ and either an update .tar file or an uploaded image id. + +\ **-l|-**\ **-list**\ : + + +.. code-block:: perl + + The list option will list out available firmware on the BMC. It provides an interface to display the ID of the various firmware levels. + + The (*) symbol indicates the active running firmware on the server. + + The (+) symbol indicates the firmware that is pending and a reboot is required to set it to be the active running firmware level. + + +\ **-u|-**\ **-upload**\ : + + +.. code-block:: perl + + The upload option expects a .tar file as the input and will upload the file to the BMC. Use the list option to view the result. + + +\ **-a|-**\ **-activate**\ : + + +.. code-block:: perl + + The activate option expects either a .tar file or an ID as the input. If a .tar file is provided, it will upload and activate the firmware in a single step + + +To apply the firmware level, a reboot is required to BMC and HOST. + \ **Note:**\ When using \ **rflash**\ in hierarchical environment, the .tar file must be accessible from Service Nodes. +\ **-d**\ : + +.. code-block:: perl + + This option steamlines the update, activate, reboot BMC and reboot HOST procedure. It expects a directory containing both BMC and PNOR .tar files. When BMC and PNOR tar files are provided, the command will upload and activate firmware. After BMC becomes activate, it will reboot BMC. If BMC state is Ready, the command will reboot the HOST. If BMC state is NotReady, the command will exit. + +\ **Note:**\ When using \ **--no-host-reboot**\, it will not reboot the host after BMC is reboot. + + +\ **-**\ **-delete**\ : + +.. code-block:: perl + + The delete option will delete update image from BMC. It expects an ID as the input. + *************** \ **Options**\ @@ -232,7 +281,7 @@ The command will update firmware for OpenPOWER OpenBMC when given an OpenPOWER n -\ **-d|-**\ **-delete**\ +\ **-**\ **-delete**\ Delete update image from BMC @@ -325,7 +374,7 @@ The command will update firmware for OpenPOWER OpenBMC when given an OpenPOWER n -6. To update the firmware on IBM Power S822LC for Big Data machine specify the node name and the file path of the data directory containing pUpdate utility and BMC and/or PNOR update files: +6. To update the firmware on IBM Power S822LC for Big Data machine specify the node name and the file path of the data directory containing pUpdate utility, both BMC and PNOR update files: .. code-block:: perl diff --git a/docs/source/guides/admin-guides/references/man1/rmdef.1.rst b/docs/source/guides/admin-guides/references/man1/rmdef.1.rst index 3655a78b5..221319ff5 100644 --- a/docs/source/guides/admin-guides/references/man1/rmdef.1.rst +++ b/docs/source/guides/admin-guides/references/man1/rmdef.1.rst @@ -90,7 +90,7 @@ OPTIONS \ **-C|-**\ **-cleanup**\ - Perform additional cleanup by running \ **nodeset offline**\ on the objects specified in the \ *noderange*\ . + Perform additional cleanup by running \ **nodeset offline**\ and \ **makeconservercf -d**\ on the objects specified in the \ *noderange*\ . diff --git a/docs/source/guides/admin-guides/references/man1/rspconfig.1.rst b/docs/source/guides/admin-guides/references/man1/rspconfig.1.rst index dab879fa5..b6956de5d 100644 --- a/docs/source/guides/admin-guides/references/man1/rspconfig.1.rst +++ b/docs/source/guides/admin-guides/references/man1/rspconfig.1.rst @@ -49,6 +49,8 @@ OpenBMC specific: \ **rspconfig**\ \ *noderange*\ {\ **ipsrc | ip | netmask | gateway | hostname | vlan | sshcfg**\ } +\ **rspconfig**\ \ *noderange*\ \ **dump**\ [\ **-l | -**\ **-list**\ ] [\ **-g | -**\ **-generate**\ ] [\ **-c | -**\ **-clear**\ {\ *id*\ |\ **all**\ }] [\ **-d | -**\ **-download**\ \ *id*\ ] + MPA specific: ============= @@ -430,6 +432,29 @@ OPTIONS +\ **dump**\ + + Manage OpenBMC system dumps. If no sub-option is provided, will generate, wait, and download the dump. + + + \ **-c**\ will clear a single specified dump, or use 'all' to clear all dumps on the BMC. + + + + \ **-l**\ will list all the generated dumps on the BMC. + + + + \ **-g**\ will generate a new dump on the BMC. Dump generation can take a few minutes. + + + + \ **-d**\ will download a single dump from the BMC to /var/log/xcat/dump on management or service node. + + + + + \ **network**\ ={[\ *ip*\ ],[\ *host*\ ],[\ *gateway*\ ],[\ *netmask*\ ]|\*} For MPA: get or set the MPA network parameters. If '\*' is specified, all parameters are read from the xCAT database. @@ -1230,6 +1255,48 @@ EXAMPLES +31. To list BMC dumps available for download: + + + .. code-block:: perl + + rspconfig p9euh02 dump -l + + + Output is similar to: + + + .. code-block:: perl + + p9euh02: [1] Generated: 09/06/2017 14:31:49, Size: 4528 + p9euh02: [2] Generated: 09/06/2017 14:31:55, Size: 4516 + p9euh02: [3] Generated: 09/06/2017 14:32:01, Size: 4236 + p9euh02: [4] Generated: 09/06/2017 14:32:07, Size: 4248 + p9euh02: [5] Generated: 09/06/2017 14:32:11, Size: 4268 + + + + +32. To generate and download BMC dump: + + + .. code-block:: perl + + rspconfig p9euh02 dump + + + Output is similar to: + + + .. code-block:: perl + + Capturing BMC Diagnostic information, this will take some time... + p9euh02: Dump requested. Target ID is 6, waiting for BMC to generate... + p9euh02: Dump 6 generated. Downloading to /var/log/xcat/dump/20171211-0951_p9euh02_dump_6.tar.xz + + + + ******** SEE ALSO diff --git a/docs/source/guides/admin-guides/references/man5/linuximage.5.rst b/docs/source/guides/admin-guides/references/man5/linuximage.5.rst index 1ecae0842..532eafc1b 100644 --- a/docs/source/guides/admin-guides/references/man5/linuximage.5.rst +++ b/docs/source/guides/admin-guides/references/man5/linuximage.5.rst @@ -80,7 +80,7 @@ linuximage Attributes: \ **otherpkgdir**\ - The base directory where the non-distro packages are stored. Only 1 local directory supported at present. + The base directory and urls of internet repos from which the non-distro packages are retrived. Only 1 local directory is supported at present. The entries should be delimited with comma ",". Currently, the internet repos are only supported on Ubuntu and Redhat. diff --git a/docs/source/guides/admin-guides/references/man5/servicenode.5.rst b/docs/source/guides/admin-guides/references/man5/servicenode.5.rst index 3da4820e5..e202132f4 100644 --- a/docs/source/guides/admin-guides/references/man5/servicenode.5.rst +++ b/docs/source/guides/admin-guides/references/man5/servicenode.5.rst @@ -44,67 +44,67 @@ servicenode Attributes: \ **nameserver**\ - Do we set up DNS on this service node? Valid values: 2, 1, no or 0. If 2, creates named.conf as dns slave, using the management node as dns master, and starts named. If 1, creates named.conf file with forwarding to the management node and starts named. If no or 0, it does not change the current state of the service. + Do we set up DNS on this service node? Valid values: 2, 1, or 0. If 2, creates named.conf as dns slave, using the management node as dns master, and starts named. If 1, creates named.conf file with forwarding to the management node and starts named. If 0, it does not change the current state of the service. \ **dhcpserver**\ - Do we set up DHCP on this service node? Not supported on AIX. Valid values:yes or 1, no or 0. If yes, runs makedhcp -n. If no or 0, it does not change the current state of the service. + Do we set up DHCP on this service node? Not supported on AIX. Valid values:1 or 0. If 1, runs makedhcp -n. If 0, it does not change the current state of the service. \ **tftpserver**\ - Do we set up TFTP on this service node? Not supported on AIX. Valid values:yes or 1, no or 0. If yes, configures and starts atftp. If no or 0, it does not change the current state of the service. + Do we set up TFTP on this service node? Not supported on AIX. Valid values:1 or 0. If 1, configures and starts atftp. If 0, it does not change the current state of the service. \ **nfsserver**\ - Do we set up file services (HTTP,FTP,or NFS) on this service node? For AIX will only setup NFS, not HTTP or FTP. Valid values:yes or 1, no or 0.If no or 0, it does not change the current state of the service. + Do we set up file services (HTTP,FTP,or NFS) on this service node? For AIX will only setup NFS, not HTTP or FTP. Valid values:1 or 0.If 0, it does not change the current state of the service. \ **conserver**\ - Do we set up Conserver on this service node? Valid values:yes or 1, no or 0. If yes, configures and starts conserver daemon. If no or 0, it does not change the current state of the service. + Do we set up Conserver on this service node? Valid values:1 or 0. If 1, configures and starts conserver daemon. If 0, it does not change the current state of the service. \ **monserver**\ - Is this a monitoring event collection point? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service. + Is this a monitoring event collection point? Valid values: 1 or 0. If 0, it does not change the current state of the service. \ **ldapserver**\ - Do we set up ldap caching proxy on this service node? Not supported on AIX. Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service. + Do we set up ldap caching proxy on this service node? Not supported on AIX. Valid values:1 or 0. If 0, it does not change the current state of the service. \ **ntpserver**\ - Not used. Use setupntp postscript to setup a ntp server on this service node? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service. + Not used. Use setupntp postscript to setup a ntp server on this service node? Valid values:1 or 0. If 0, it does not change the current state of the service. \ **ftpserver**\ - Do we set up a ftp server on this service node? Not supported on AIX Valid values:yes or 1, no or 0. If yes, configure and start vsftpd. (You must manually install vsftpd on the service nodes before this.) If no or 0, it does not change the current state of the service. xCAT is not using ftp for compute nodes provisioning or any other xCAT features, so this attribute can be set to 0 if the ftp service will not be used for other purposes + Do we set up a ftp server on this service node? Not supported on AIX Valid values:1 or 0. If 1, configure and start vsftpd. (You must manually install vsftpd on the service nodes before this.) If 0, it does not change the current state of the service. xCAT is not using ftp for compute nodes provisioning or any other xCAT features, so this attribute can be set to 0 if the ftp service will not be used for other purposes \ **nimserver**\ - Not used. Do we set up a NIM server on this service node? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service. + Not used. Do we set up a NIM server on this service node? Valid values:1 or 0. If 0, it does not change the current state of the service. \ **ipforward**\ - Do we set up ip forwarding on this service node? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service. + Do we set up ip forwarding on this service node? Valid values:1 or 0. If 0, it does not change the current state of the service. @@ -116,7 +116,7 @@ servicenode Attributes: \ **proxydhcp**\ - Do we set up proxydhcp service on this node? valid values: yes or 1, no or 0. If yes, the proxydhcp daemon will be enabled on this node. + Do we set up proxydhcp service on this node? valid values: 1 or 0. If 1, the proxydhcp daemon will be enabled on this node. diff --git a/docs/source/guides/admin-guides/references/man7/group.7.rst b/docs/source/guides/admin-guides/references/man7/group.7.rst index a90adca50..0995bf85c 100644 --- a/docs/source/guides/admin-guides/references/man7/group.7.rst +++ b/docs/source/guides/admin-guides/references/man7/group.7.rst @@ -947,67 +947,67 @@ group Attributes: \ **setupconserver**\ (servicenode.conserver) - Do we set up Conserver on this service node? Valid values:yes or 1, no or 0. If yes, configures and starts conserver daemon. If no or 0, it does not change the current state of the service. + Do we set up Conserver on this service node? Valid values:1 or 0. If 1, configures and starts conserver daemon. If 0, it does not change the current state of the service. \ **setupdhcp**\ (servicenode.dhcpserver) - Do we set up DHCP on this service node? Not supported on AIX. Valid values:yes or 1, no or 0. If yes, runs makedhcp -n. If no or 0, it does not change the current state of the service. + Do we set up DHCP on this service node? Not supported on AIX. Valid values:1 or 0. If 1, runs makedhcp -n. If 0, it does not change the current state of the service. \ **setupftp**\ (servicenode.ftpserver) - Do we set up a ftp server on this service node? Not supported on AIX Valid values:yes or 1, no or 0. If yes, configure and start vsftpd. (You must manually install vsftpd on the service nodes before this.) If no or 0, it does not change the current state of the service. xCAT is not using ftp for compute nodes provisioning or any other xCAT features, so this attribute can be set to 0 if the ftp service will not be used for other purposes + Do we set up a ftp server on this service node? Not supported on AIX Valid values:1 or 0. If 1, configure and start vsftpd. (You must manually install vsftpd on the service nodes before this.) If 0, it does not change the current state of the service. xCAT is not using ftp for compute nodes provisioning or any other xCAT features, so this attribute can be set to 0 if the ftp service will not be used for other purposes \ **setupipforward**\ (servicenode.ipforward) - Do we set up ip forwarding on this service node? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service. + Do we set up ip forwarding on this service node? Valid values:1 or 0. If 0, it does not change the current state of the service. \ **setupldap**\ (servicenode.ldapserver) - Do we set up ldap caching proxy on this service node? Not supported on AIX. Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service. + Do we set up ldap caching proxy on this service node? Not supported on AIX. Valid values:1 or 0. If 0, it does not change the current state of the service. \ **setupnameserver**\ (servicenode.nameserver) - Do we set up DNS on this service node? Valid values: 2, 1, no or 0. If 2, creates named.conf as dns slave, using the management node as dns master, and starts named. If 1, creates named.conf file with forwarding to the management node and starts named. If no or 0, it does not change the current state of the service. + Do we set up DNS on this service node? Valid values: 2, 1, or 0. If 2, creates named.conf as dns slave, using the management node as dns master, and starts named. If 1, creates named.conf file with forwarding to the management node and starts named. If 0, it does not change the current state of the service. \ **setupnfs**\ (servicenode.nfsserver) - Do we set up file services (HTTP,FTP,or NFS) on this service node? For AIX will only setup NFS, not HTTP or FTP. Valid values:yes or 1, no or 0.If no or 0, it does not change the current state of the service. + Do we set up file services (HTTP,FTP,or NFS) on this service node? For AIX will only setup NFS, not HTTP or FTP. Valid values:1 or 0.If 0, it does not change the current state of the service. \ **setupnim**\ (servicenode.nimserver) - Not used. Do we set up a NIM server on this service node? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service. + Not used. Do we set up a NIM server on this service node? Valid values:1 or 0. If 0, it does not change the current state of the service. \ **setupntp**\ (servicenode.ntpserver) - Not used. Use setupntp postscript to setup a ntp server on this service node? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service. + Not used. Use setupntp postscript to setup a ntp server on this service node? Valid values:1 or 0. If 0, it does not change the current state of the service. \ **setupproxydhcp**\ (servicenode.proxydhcp) - Do we set up proxydhcp service on this node? valid values: yes or 1, no or 0. If yes, the proxydhcp daemon will be enabled on this node. + Do we set up proxydhcp service on this node? valid values: 1 or 0. If 1, the proxydhcp daemon will be enabled on this node. \ **setuptftp**\ (servicenode.tftpserver) - Do we set up TFTP on this service node? Not supported on AIX. Valid values:yes or 1, no or 0. If yes, configures and starts atftp. If no or 0, it does not change the current state of the service. + Do we set up TFTP on this service node? Not supported on AIX. Valid values:1 or 0. If 1, configures and starts atftp. If 0, it does not change the current state of the service. diff --git a/docs/source/guides/admin-guides/references/man7/node.7.rst b/docs/source/guides/admin-guides/references/man7/node.7.rst index 02b84092a..060e5fc74 100644 --- a/docs/source/guides/admin-guides/references/man7/node.7.rst +++ b/docs/source/guides/admin-guides/references/man7/node.7.rst @@ -959,67 +959,67 @@ node Attributes: \ **setupconserver**\ (servicenode.conserver) - Do we set up Conserver on this service node? Valid values:yes or 1, no or 0. If yes, configures and starts conserver daemon. If no or 0, it does not change the current state of the service. + Do we set up Conserver on this service node? Valid values:1 or 0. If 1, configures and starts conserver daemon. If 0, it does not change the current state of the service. \ **setupdhcp**\ (servicenode.dhcpserver) - Do we set up DHCP on this service node? Not supported on AIX. Valid values:yes or 1, no or 0. If yes, runs makedhcp -n. If no or 0, it does not change the current state of the service. + Do we set up DHCP on this service node? Not supported on AIX. Valid values:1 or 0. If 1, runs makedhcp -n. If 0, it does not change the current state of the service. \ **setupftp**\ (servicenode.ftpserver) - Do we set up a ftp server on this service node? Not supported on AIX Valid values:yes or 1, no or 0. If yes, configure and start vsftpd. (You must manually install vsftpd on the service nodes before this.) If no or 0, it does not change the current state of the service. xCAT is not using ftp for compute nodes provisioning or any other xCAT features, so this attribute can be set to 0 if the ftp service will not be used for other purposes + Do we set up a ftp server on this service node? Not supported on AIX Valid values:1 or 0. If 1, configure and start vsftpd. (You must manually install vsftpd on the service nodes before this.) If 0, it does not change the current state of the service. xCAT is not using ftp for compute nodes provisioning or any other xCAT features, so this attribute can be set to 0 if the ftp service will not be used for other purposes \ **setupipforward**\ (servicenode.ipforward) - Do we set up ip forwarding on this service node? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service. + Do we set up ip forwarding on this service node? Valid values:1 or 0. If 0, it does not change the current state of the service. \ **setupldap**\ (servicenode.ldapserver) - Do we set up ldap caching proxy on this service node? Not supported on AIX. Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service. + Do we set up ldap caching proxy on this service node? Not supported on AIX. Valid values:1 or 0. If 0, it does not change the current state of the service. \ **setupnameserver**\ (servicenode.nameserver) - Do we set up DNS on this service node? Valid values: 2, 1, no or 0. If 2, creates named.conf as dns slave, using the management node as dns master, and starts named. If 1, creates named.conf file with forwarding to the management node and starts named. If no or 0, it does not change the current state of the service. + Do we set up DNS on this service node? Valid values: 2, 1, or 0. If 2, creates named.conf as dns slave, using the management node as dns master, and starts named. If 1, creates named.conf file with forwarding to the management node and starts named. If 0, it does not change the current state of the service. \ **setupnfs**\ (servicenode.nfsserver) - Do we set up file services (HTTP,FTP,or NFS) on this service node? For AIX will only setup NFS, not HTTP or FTP. Valid values:yes or 1, no or 0.If no or 0, it does not change the current state of the service. + Do we set up file services (HTTP,FTP,or NFS) on this service node? For AIX will only setup NFS, not HTTP or FTP. Valid values:1 or 0.If 0, it does not change the current state of the service. \ **setupnim**\ (servicenode.nimserver) - Not used. Do we set up a NIM server on this service node? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service. + Not used. Do we set up a NIM server on this service node? Valid values:1 or 0. If 0, it does not change the current state of the service. \ **setupntp**\ (servicenode.ntpserver) - Not used. Use setupntp postscript to setup a ntp server on this service node? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service. + Not used. Use setupntp postscript to setup a ntp server on this service node? Valid values:1 or 0. If 0, it does not change the current state of the service. \ **setupproxydhcp**\ (servicenode.proxydhcp) - Do we set up proxydhcp service on this node? valid values: yes or 1, no or 0. If yes, the proxydhcp daemon will be enabled on this node. + Do we set up proxydhcp service on this node? valid values: 1 or 0. If 1, the proxydhcp daemon will be enabled on this node. \ **setuptftp**\ (servicenode.tftpserver) - Do we set up TFTP on this service node? Not supported on AIX. Valid values:yes or 1, no or 0. If yes, configures and starts atftp. If no or 0, it does not change the current state of the service. + Do we set up TFTP on this service node? Not supported on AIX. Valid values:1 or 0. If 1, configures and starts atftp. If 0, it does not change the current state of the service. diff --git a/docs/source/guides/admin-guides/references/man7/osimage.7.rst b/docs/source/guides/admin-guides/references/man7/osimage.7.rst index d8b2c77ce..8e2faea1f 100644 --- a/docs/source/guides/admin-guides/references/man7/osimage.7.rst +++ b/docs/source/guides/admin-guides/references/man7/osimage.7.rst @@ -255,7 +255,7 @@ osimage Attributes: \ **otherpkgdir**\ (linuximage.otherpkgdir) - The base directory where the non-distro packages are stored. Only 1 local directory supported at present. + The base directory and urls of internet repos from which the non-distro packages are retrived. Only 1 local directory is supported at present. The entries should be delimited with comma ",". Currently, the internet repos are only supported on Ubuntu and Redhat. diff --git a/docs/source/guides/admin-guides/references/man8/makeconservercf.8.rst b/docs/source/guides/admin-guides/references/man8/makeconservercf.8.rst index 19ae43ea6..249be78f4 100644 --- a/docs/source/guides/admin-guides/references/man8/makeconservercf.8.rst +++ b/docs/source/guides/admin-guides/references/man8/makeconservercf.8.rst @@ -21,6 +21,8 @@ SYNOPSIS \ **makeconservercf**\ [\ **-V|-**\ **-verbose**\ ] [\ **-d|-**\ **-delete**\ ] [\ *noderange*\ ] +\ **makeconservercf**\ [\ **-V|-**\ **-verbose**\ ] [\ **-C|-**\ **-cleanup**\ ] + \ **makeconservercf**\ [\ **-V|-**\ **-verbose**\ ] [\ **-l|-**\ **-local**\ ] [\ *noderange*\ ] \ **makeconservercf**\ [\ **-V|-**\ **-verbose**\ ] [\ **-c|-**\ **-conserver**\ ] [\ *noderange*\ ] @@ -42,6 +44,8 @@ does not have nodehm.cons set, it will not be written to the file. If \ **-d**\ is specified, \ **makeconservercf**\ will remove specified nodes from /etc/conserver.cf file. If \ *noderange*\ is not specified, all xCAT nodes will be removed from /etc/conserver.cf file. +If \ **-C|-**\ **-cleanup**\ is specified, \ **makeconservercf**\ will remove console configuration entries from /etc/conserver.cf for the nodes whose definitions have been removed from xCATdb. \ **Don't**\ specify any noderange. + In the case of a hierarchical cluster (i.e. one with service nodes) \ **makeconservercf**\ will determine which nodes will have their consoles accessed from the management node and which from a service node (based on the nodehm.conserver attribute). The /etc/conserver.cf file will be created accordingly on @@ -60,6 +64,12 @@ OPTIONS +\ **-C|-**\ **-cleanup**\ + + Remove the entries for the nodes whose definitions have been removed from xCAT db. + + + \ **-c|-**\ **-conserver**\ Only set up the conserver on the conserver host. If no conserver host diff --git a/docs/source/guides/admin-guides/references/man8/makegocons.8.rst b/docs/source/guides/admin-guides/references/man8/makegocons.8.rst new file mode 100644 index 000000000..76eb7a5fc --- /dev/null +++ b/docs/source/guides/admin-guides/references/man8/makegocons.8.rst @@ -0,0 +1,151 @@ + +############ +makegocons.8 +############ + +.. highlight:: perl + + +**** +NAME +**** + + +\ **makegocons**\ - Register or unregister the node in the goconserver service + + +******** +SYNOPSIS +******** + + +\ **makegocons**\ [\ **-V|-**\ **-verbose**\ ] [\ **-d|-**\ **-delete**\ ] [\ *noderange*\ ] + +\ **makeconservercf**\ [\ **-h|-**\ **-help|-v|-**\ **-version**\ ] + + +*********** +DESCRIPTION +*********** + + +The \ **makegocons**\ command will start the goconserver service if it is not started, then +send the REST request to create or delete the session resource in the goconserver service. The session +information including the session command or ssh connection parameters (for openbmc) is generated by xcat +based on the records in the related tables (e.g. nodehm, ipmi, ppc, openbmc). + +By default \ **makegocons**\ will register the session for all of the nodes in xcat. + +If a \ *noderange*\ is specified, only the session in the specified scope will be affected, goconserver +service will not be restarted and the other session will not be disconnected. This is the advantage +of goconserver over the conserver service with \ **makeconservercf**\ . + +If \ **-d**\ is specified, \ **makegocons**\ will remove the session in the goconserver service. + +In the case of a hierarchical cluster (i.e. one with service nodes) \ **makegocons**\ will determine +which nodes will have their consoles accessed from the management node and which from a service node +(based on the nodehm.conserver attribute). + +For openbmc which uses ssh as the terminal session connection method, goconserver can help save the system +resources as goconserver could handle the ssh connection within goroutine which is more light-weighted than the command process. + +\ **Note:**\ goconserver is an experimental feature, it will not be installed with xcat and will only support the systemd based systems. +Download and setup the rpm or deb package manually. Release link: + + +.. code-block:: perl + + https://github.com/chenglch/goconserver/releases + + + +******* +OPTIONS +******* + + + +\ **-d|-**\ **-delete**\ + + Delete rather than add or refresh the nodes specified as a noderange. + + + +\ **-v|-**\ **-version**\ + + Display version. + + + +\ **-V|-**\ **-verbose**\ + + Verbose mode. + + + +\ **-h|-**\ **-help**\ + + Display usage message. + + + + +************ +RETURN VALUE +************ + + + +0. The command completed successfully. + + + +1. An error has occurred. + + + + +******** +EXAMPLES +******** + + + +1. To create goconserver configuration for all the nodes. + + + .. code-block:: perl + + makegocons + + + + +2. To create goconserver configuration for nodes node01-node10. + + + .. code-block:: perl + + makegocons node01-node10 + + + + +3. To remove goconserver configuration for node01. + + + .. code-block:: perl + + makegocons -d node01 + + + + + +******** +SEE ALSO +******** + + +rcons(1)|rcons.1 + diff --git a/docs/source/index.rst b/docs/source/index.rst index 0afdb7281..32ec86a95 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -32,6 +32,7 @@ Table of Contents guides/install-guides/index.rst guides/admin-guides/index.rst advanced/index.rst + QA/index.rst references/index.rst troubleshooting/index.rst developers/index.rst diff --git a/docs/source/references/coral/cluster_mgmt/firmware/index.rst b/docs/source/references/coral/cluster_mgmt/firmware/index.rst new file mode 100644 index 000000000..1d105d896 --- /dev/null +++ b/docs/source/references/coral/cluster_mgmt/firmware/index.rst @@ -0,0 +1,8 @@ +Power9 Firmware Update +====================== + +.. toctree:: + :maxdepth: 2 + + ipmi.rst + openbmc.rst diff --git a/docs/source/references/coral/cluster_mgmt/firmware/ipmi.rst b/docs/source/references/coral/cluster_mgmt/firmware/ipmi.rst new file mode 100644 index 000000000..877294a5a --- /dev/null +++ b/docs/source/references/coral/cluster_mgmt/firmware/ipmi.rst @@ -0,0 +1,40 @@ +IPMI Firmware Update +==================== + +The process for updating firmware on the IBM Power9 Server (Boston) is documented below. + + +Collect the required files +-------------------------- + +Collect the following files and put them into a directory on the Management Node. + + * pUpdate + * pnor + * bmc + +If running ``rflash`` in Hierarchy, the firmware files/directory must be accessible on the Service Nodes. + +Flash Firmware +-------------- + +Using xCAT ``rflash`` command, specify the directory containing the files with the ``-d`` option. :: + + rflash -d /path-to-directory/ + +The ``pUpdate`` utility is leveraged in doing the firmware update against the target node and will do the following: + + * power off the host + * flash bmc and reboot + * flash pnor + * power on the host + +Monitor the progress for the nodes by looking at the files under ``/var/log/xcat/rflash/``. + +Validatation +------------ + +Use the ``rinv`` command to validate firmware level: :: + + rinv firm | xcoll + diff --git a/docs/source/references/coral/cluster_mgmt/firmware/openbmc.rst b/docs/source/references/coral/cluster_mgmt/firmware/openbmc.rst new file mode 100644 index 000000000..49caae6bf --- /dev/null +++ b/docs/source/references/coral/cluster_mgmt/firmware/openbmc.rst @@ -0,0 +1,79 @@ +OpenBMC Firmware Update +======================= + +The process of updating firmware on the OpenBMC managed servers is documented below. + +The sequence of events that must happen is the following: + + * Power off the Host + * Update and Activate PNOR + * Update and Activate BMC + * Reboot the BMC (applies BMC) + * Power on the Host (applies PNOR) + +**Note:** xCAT is working on streamlining this process to reduce the flexibility of the above steps at the convenience of the Administrator to handle the necessary reboots. See `Issue #4245 `_ + + + +Power off Host +-------------- + +Use the rpower command to power off the host: :: + + rpower off + +Update and Activate PNOR Firmware +--------------------------------- + +Use the rflash command to upload and activate the PNOR firmware: :: + + rflash -a /path/to/witherspoon.pnor.squashfs.tar + +If running ``rflash`` in Hierarchy, the firmware files must be accessible on the Service Nodes. + +**Note:** The ``-a`` option does an upload and activate in one step, after firmware is activated, use the ``rflash -l`` to view. The ``rflash`` command shows ``(*)`` as the active firmware and ``(+)`` on the firmware that requires reboot to become effective. + +Update and Activate BMC Firmware +-------------------------------- + +Use the rflash command to upload and activate the PNOR firmware: :: + + rflash -a /path/to/obmc-phosphor-image-witherspoon.ubi.mtd.tar + +If running ``rflash`` in Hierarchy, the firmware files must be accessible on the Service Nodes. + +**Note:** The ``-a`` option does an upload and activate in one step, after firmware is activated, use the ``rflash -l`` to view. The ``rflash`` command shows ``(*)`` as the active firmware and ``(+)`` on the firmware that requires reboot to become effective. + +Reboot the BMC +-------------- + +Use the ``rpower`` command to reboot the BMC: :: + + rpower bmcreboot + +The BMC will take 2-5 minutes to reboot, check the status using: ``rpower bmcstate`` and wait for ``BMCReady`` to be returned. + +**Known Issue:** On reboot, the first call to the BMC after reboot, xCAT will return ``Error: BMC did not respond within 10 seconds, retry the command.``. Please retry. + + +Power on Host +------------- + +User the ``rpower`` command to power on the Host: :: + + rpower on + + +Validation +---------- + +Use one of the following commands to validate firmware levels are in sync: + +* Use the ``rinv`` command to validate firmware level: :: + + rinv firm -V | grep -i ibm | grep "\*" | xcoll + +* Use the ``rflash`` command to validate the firmware level: :: + + rflash -l | grep "\*" | xcoll + diff --git a/docs/source/references/coral/cluster_mgmt/index.rst b/docs/source/references/coral/cluster_mgmt/index.rst new file mode 100644 index 000000000..20b2bbcb8 --- /dev/null +++ b/docs/source/references/coral/cluster_mgmt/index.rst @@ -0,0 +1,7 @@ +Cluster Management +================== + +.. toctree:: + :maxdepth: 2 + + firmware/index.rst diff --git a/docs/source/references/coral/index.rst b/docs/source/references/coral/index.rst index 4639e3360..58de81eac 100644 --- a/docs/source/references/coral/index.rst +++ b/docs/source/references/coral/index.rst @@ -7,6 +7,7 @@ CORAL stands for Collaboration of Oak Ridge, Argonne, and Livermore and is solut .. toctree:: :maxdepth: 2 + cluster_mgmt/index.rst known_issues/index.rst .. mn/index.rst .. discovery/index.rst diff --git a/docs/source/references/coral/known_issues/index.rst b/docs/source/references/coral/known_issues/index.rst index 359cd90de..63e9126be 100644 --- a/docs/source/references/coral/known_issues/index.rst +++ b/docs/source/references/coral/known_issues/index.rst @@ -5,3 +5,4 @@ Known Issues :maxdepth: 2 genesis_base.rst + openbmc/index.rst diff --git a/docs/source/references/coral/known_issues/openbmc/2_13_8.rst b/docs/source/references/coral/known_issues/openbmc/2_13_8.rst new file mode 100644 index 000000000..d5502f9be --- /dev/null +++ b/docs/source/references/coral/known_issues/openbmc/2_13_8.rst @@ -0,0 +1,7 @@ +#4264 - rpower command intermittently reports 503: Service Unavailable Error +============================================================================ + +Issue `#4264 `_ + +In attempt to improve the performance of the REST calls to OpenBMC and reduce the time spent in a timeout, we fail too soon here before the BMC has a chance to respond. + diff --git a/docs/source/references/coral/known_issues/openbmc/SW402273.rst b/docs/source/references/coral/known_issues/openbmc/SW402273.rst new file mode 100644 index 000000000..b1a07e688 --- /dev/null +++ b/docs/source/references/coral/known_issues/openbmc/SW402273.rst @@ -0,0 +1,17 @@ +SW402273 - Unable to tell the firmware level that is actually running on the node via REST +========================================================================================== + +* **Issue:** `SW402273 `_ +* **Reported:** 1738B (ibm-v1.99.10-0-r7) +* **Fixed:** 1740B (ibm-v1.99.10-0-r13) + +**Issue:** + +Until 1740B firmware (> ibm-v1.99.10-0-r13), there's no method provided by OpenBMC to indicate the active running firmware on the node. Until the BMC is rebooted or the HOST is rebooted, the Active firmware may or may not really be running. + +If you are running a version that prints the following message from ``rflash``: :: + + cn01: WARNING, The current firmware is unable to detect running firmware version. + +Please update the BMC to a version higher than ibm-v1.99.10-0-r13. + diff --git a/docs/source/references/coral/known_issues/openbmc/SW404161.rst b/docs/source/references/coral/known_issues/openbmc/SW404161.rst new file mode 100644 index 000000000..e955fdeab --- /dev/null +++ b/docs/source/references/coral/known_issues/openbmc/SW404161.rst @@ -0,0 +1,26 @@ +SW404161 - Firmware do not self extract tar, causing rflash cannot find ID to activate +====================================================================================== + +* **Issue:** `SW404161 `_ +* **Reported:** 1738A (ibm-v1.99.10-0-r7) +* **Fixed:** 1742D (ibm-v1.99.10-0-113-r10) + +**Issue:** + +Firmware is not extracted and could not be found by rflash to activate :: + + [root@c650mnp03 ~]# rflash c650f07p27 obmc-phosphor-image-witherspoon.ubi.mtd.tar -a + c650f07p27: Uploading /root/obmc-phosphor-image-witherspoon.ubi.mtd.tar ... + c650f07p27: Firmware upload successful. Attempting to activate firmware: ibm-v1.99.10-113-g65edf7d-r8-0-g713d86d + c650f07p27: Could not find ID for firmware ibm-v1.99.10-113-g65edf7d-r8-0-g713d86d to activate, waiting 10 seconds and retry... + c650f07p27: Could not find ID for firmware ibm-v1.99.10-113-g65edf7d-r8-0-g713d86d to activate, waiting 10 seconds and retry... + c650f07p27: Could not find ID for firmware ibm-v1.99.10-113-g65edf7d-r8-0-g713d86d to activate, waiting 10 seconds and retry... + c650f07p27: Could not find ID for firmware ibm-v1.99.10-113-g65edf7d-r8-0-g713d86d to activate, waiting 10 seconds and retry... + c650f07p27: Could not find ID for firmware ibm-v1.99.10-113-g65edf7d-r8-0-g713d86d to activate, waiting 10 seconds and retry... + c650f07p27: Could not find ID for firmware ibm-v1.99.10-113-g65edf7d-r8-0-g713d86d to activate, waiting 10 seconds and retry... + c650f07p27: Error: Could not find firmware ibm-v1.99.10-113-g65edf7d-r8-0-g713d86d after waiting 60 seconds. + +**Work-around:** Use one of the following methods: + +* Reboot the BMC before flashing firmware: ``rpower <> bmcreboot`` +* ssh into bmc and run: ``systemctl restart xyz.openbmc_project.Software.Version.service`` diff --git a/docs/source/references/coral/known_issues/openbmc/SW406771.rst b/docs/source/references/coral/known_issues/openbmc/SW406771.rst new file mode 100644 index 000000000..145844d86 --- /dev/null +++ b/docs/source/references/coral/known_issues/openbmc/SW406771.rst @@ -0,0 +1,84 @@ +SW406771 - Duplicate FW ID or 2 BMC firmware active at the same time +==================================================================== + +* **Issue:** `SW407037 `_ +* **Reported:** 1740A (ibm-v1.99.10-0-r11-0-g9c65260) +* **Fixed:** 1742 or higher + +**Issue:** + +At some point after 1740A firmware, ``ibm-v1.99.10-0-r11-0-g9c65260``, the hashing algorithm to create the ID on the BMC was chagned by the Firmware team. This allows for the same firmware to potentially have two different IDs resulting in two active running BMC firmware. + + +**Work-around** + +Upgrade from 1740A +------------------ + +If you are running 1740A, you will need to get two BMC firmware levels from your IBM representative. + +This example will cover flashing from 1740A to 1742D, using 1742C as the recovery flash level. + +#. Identify the issue where the IDs are not using the correct hash :: + + mid05tor12cn13: ID Purpose State Version + mid05tor12cn13: ------------------------------------------------------- + mid05tor12cn13: 9e55358e BMC Active(*) ibm-v1.99.10-0-r11-0-g9c65260 + mid05tor12cn13: 6e71e1af BMC Ready ibm-v1.99.10-113-g65edf7d-r10-0-gcdf7635 <--- bad hash for 1742D + + mid05tor12cn16: ID Purpose State Version + mid05tor12cn16: ------------------------------------------------------- + mid05tor12cn16: efc8a851 BMC Ready ibm-v1.99.10-113-g65edf7d-r10-0-gcdf7635 <--- correct hash for 1742D + mid05tor12cn16: b48d27e1 BMC Active(*) ibm-v1.99.10-113-g65edf7d-r3-0-g9e4f715 + +#. Flash up to 1742D, activate and reboot: :: + + mid05tor12cn13: ID Purpose State Version + mid05tor12cn13: ------------------------------------------------------- + mid05tor12cn13: 9e55358e BMC Active ibm-v1.99.10-0-r11-0-g9c65260 + mid05tor12cn13: 221d9020 Host Active(*) IBM-witherspoon-redbud-ibm-OP9_v1.19_1.33 + mid05tor12cn13: 6e71e1af BMC Active(*) ibm-v1.99.10-113-g65edf7d-r10-0-gcdf7635 <--- bad hash, active + mid05tor12cn13: + +#. Flash down to 1742C, activate and reboot: :: + + mid05tor12cn13: ID Purpose State Version + mid05tor12cn13: ------------------------------------------------------- + mid05tor12cn13: 9e55358e BMC Active ibm-v1.99.10-0-r11-0-g9c65260 + mid05tor12cn13: 221d9020 Host Active(*) IBM-witherspoon-redbud-ibm-OP9_v1.19_1.33 + mid05tor12cn13: 6e71e1af BMC Active(*) ibm-v1.99.10-113-g65edf7d-r10-0-gcdf7635 + mid05tor12cn13: f6590ce0 BMC Active(+) ibm-v1.99.10-113-g65edf7d-r8-0-g713d86d <--- 1742C + mid05tor12cn13: + +#. Delete the bad hash firmware: ``rflash -d 6e71e1af`` + + **Note:** This is optional because the BMC only allows 2 firmware max, so it would get pushed out. + +#. Flash back up to 1742D (with correct hash), activate and reboot: :: + + mid05tor12cn13: ID Purpose State Version + mid05tor12cn13: ------------------------------------------------------- + mid05tor12cn13: 221d9020 Host Active(*) IBM-witherspoon-redbud-ibm-OP9_v1.19_1.33 + mid05tor12cn13: efc8a851 BMC Active(*) ibm-v1.99.10-113-g65edf7d-r10-0-gcdf7635 <--- good hash + mid05tor12cn13: f6590ce0 BMC Active ibm-v1.99.10-113-g65edf7d-r8-0-g713d86d + mid05tor12cn13: + +Two active BMCs +--------------- + +If you have two active BMCs:: + + [root@mgt03 ~]# rflash f7n02 -l + f7n02: ID Purpose State Version + f7n02: ------------------------------------------------------- + f7n02: b5273d71 BMC Active(*) ibm-v1.99.10-113-g65edf7d-r8-0-g713d86d + f7n02: 30ee1c48 Host Active(*) IBM-witherspoon-ibm-OP9_v1.19_1.112 + f7n02: 4f33e0f4 Host Failed(+) IBM-witherspoon-ibm-OP9_v1.19_1.109 + f7n02: f6590ce0 BMC Active(*) ibm-v1.99.10-113-g65edf7d-r8-0-g713d86d + f7n02: + +There's no way to de-activate one manually, recover by doing the following: + +#. Flash the BMC to the previous level of the firmware and reboot BMC +#. Delete the duplicate firmware using ``rflash -d `` +#. Re-flash the BMC to the target level and reboot the BMC. diff --git a/docs/source/references/coral/known_issues/openbmc/SW407037.rst b/docs/source/references/coral/known_issues/openbmc/SW407037.rst new file mode 100644 index 000000000..5f939ede3 --- /dev/null +++ b/docs/source/references/coral/known_issues/openbmc/SW407037.rst @@ -0,0 +1,38 @@ +SW407037 - bmcsetup does not successfully configure the IP (Sev1) +================================================================= + +* **Issue:** `SW407037 `_ +* **Reported:** 1742C (ibm-v1.99.10-113-g65edf7d-r8-0-g713d86d) +* **Fixed:** Fixed in xCAT after 11/07/17 `#4242 `_ + +**Issue:** + +OpenBMC firmware has problems with ipmi inband support of the ``access on`` comamnd and the work around is to use the ``raw 0x06 0x40`` instead. In early Sept, we switched to using ``access on`` because the implementation looked like it was working, since then we have found some issues with it and recommendation is to revert back to the raw command. + +See related issues describing potential problems: +* https://github.com/openbmc/openbmc/issues/2493 +* https://github.com/openbmc/openbmc/issues/2492 + +This problem is very severe because if the network is not configured correctly, the access to the BMC is lost. + +**Work-around** + +Use one of the following work arounds: + +#. Install a version of xCAT built after November, 07, 2017 which includes the fix. (**Recommended**) + +#. Manually patch bmcsetup using changes in PR: https://github.com/xcat2/xcat-core/pull/4247, then run ``mknb ppc64`` + +#. Patch the system with provided patch: + + #. Download patch file: https://github.com/xcat2/xcat-core/files/1451181/bmcsetup.4242.patch.txt + + #. If file name is ``/tmp/bmcsetup.4242.patch.txt`` + + #. ``cd /opt/xcat/share/xcat/netboot/genesis/ppc64/fs/usr/bin`` + + #. ``patch -p0 < /tmp/bmcsetup.4242.patch.txt`` + + #. ``mknb ppc64`` + + diff --git a/docs/source/references/coral/known_issues/openbmc/index.rst b/docs/source/references/coral/known_issues/openbmc/index.rst new file mode 100644 index 000000000..0f01bb3f9 --- /dev/null +++ b/docs/source/references/coral/known_issues/openbmc/index.rst @@ -0,0 +1,47 @@ +OpenBMC Management Issues +========================= + +xCAT +---- + +2.13.8 +`````` + +Please see the `2.13.8 Release Notes `_ for the full list of known issues. + +.. toctree:: + :maxdepth: 2 + + 2_13_8.rst + +Firmware +-------- + +The following versions indicate the level of firmware the issue was reported. + + +1742C - ibm-v1.99.10-113-g65edf7d-r8-0-g713d86d +``````````````````````````````````````````````` + +.. toctree:: + :maxdepth: 1 + + SW407037.rst + +1740A - ibm-v1.99.10-0-r11 +`````````````````````````` + +.. toctree:: + :maxdepth: 1 + + SW406771.rst + + +1738A - ibm-v1.99.10-0-r7 +`````````````````````````` + +.. toctree:: + :maxdepth: 1 + + SW404161.rst + SW402273.rst diff --git a/perl-xCAT/xCAT/DBobjUtils.pm b/perl-xCAT/xCAT/DBobjUtils.pm index 0d6697955..9eb185374 100755 --- a/perl-xCAT/xCAT/DBobjUtils.pm +++ b/perl-xCAT/xCAT/DBobjUtils.pm @@ -949,6 +949,7 @@ sub setobjdefs my @setattrlist = (); my %checkedattrs; my $invalidattr; + my $conditionlist; foreach my $this_attr (@{ $datatype->{'attrs'} }) { my %keyhash; @@ -1008,7 +1009,12 @@ sub setobjdefs $checkedattrs{$attr_name} = 1; if ($invalidattr->{$attr_name}->{valid} != 1) { $invalidattr->{$attr_name}->{valid} = 0; - $invalidattr->{$attr_name}->{condition} = "\'$check_attr=$check_value\'"; + $invalidattr->{$attr_name}->{condition}=$check_attr; + if (defined($conditionlist->{$check_attr})) { + $conditionlist->{$check_attr}=$conditionlist->{$check_attr}.",".$check_value; + } else { + $conditionlist->{$check_attr}=$check_value; + } } next; @@ -1017,8 +1023,12 @@ sub setobjdefs if (!($objhash{$objname}{$check_attr} =~ /\b$check_value\b/) && !($DBattrvals{$objname}{$check_attr} =~ /\b$check_value\b/)) { if ($invalidattr->{$attr_name}->{valid} != 1) { $invalidattr->{$attr_name}->{valid} = 0; - $invalidattr->{$attr_name}->{condition} = "\'$check_attr=$check_value\'"; - + $invalidattr->{$attr_name}->{condition}=$check_attr; + if (defined($conditionlist->{$check_attr})) { + $conditionlist->{$check_attr}=$conditionlist->{$check_attr}.",".$check_value; + } else { + $conditionlist->{$check_attr}=$check_value; + } } next; @@ -1163,20 +1173,19 @@ sub setobjdefs if ($invalidattr->{$att}->{valid} != 1) { my $tt = $invalidattr->{$att}->{valid}; #if attribute is set invalid, check if its pre-check attribute exists in group objects, pick the attribute into valid. - # ex. if I want to set hdwctrlpoint I will have - # to match the right value for mgtmethod, but mgtmethod does exist in node object in chdef command - # if mgtmethod exists in group objects, set hdwctrlpoint valid - my $conditionkv=$invalidattr->{$att}->{condition}; - $conditionkv=~s/(^'|'$)//g; - my ($attk, $attv)=split("=", $conditionkv); - foreach my $tmpgrp (@tmplgrplist) { - if ($DBgroupsattr{$tmpgrp}{$attk} eq $attv) { - $pickvalidattr=1; - last; - } + # ex. like if I want to set hdwctrlpoint I will have + # to match the right value for mgtmethod + # if mgtmethod exists in group objects and its value match the one of only_if value, set hdwctrlpoint valid + my $conditionkey=$invalidattr->{$att}->{condition}; + foreach my $tmpgrp (@tmplgrplist) { + if (($DBgroupsattr{$tmpgrp}{$conditionkey}) && ($conditionlist->{$conditionkey} =~ $DBgroupsattr{$tmpgrp}{$conditionkey})) { + $pickvalidattr=1; + last; } + } if ($pickvalidattr != 1) { - push @{ $rsp->{data} }, "Cannot set the attr=\'$att\' attribute unless $invalidattr->{$att}->{condition}."; + $conditionlist->{$conditionkey}=~s/,/ or /g; + push @{ $rsp->{data} }, "Cannot set the attr=\'$att\' attribute unless $invalidattr->{$att}->{condition} value is $conditionlist->{$conditionkey}."; xCAT::MsgUtils->message("E", $rsp, $::callback); } } diff --git a/perl-xCAT/xCAT/DSHCLI.pm b/perl-xCAT/xCAT/DSHCLI.pm index 7e22de2d3..c1f59fdea 100644 --- a/perl-xCAT/xCAT/DSHCLI.pm +++ b/perl-xCAT/xCAT/DSHCLI.pm @@ -835,7 +835,7 @@ sub fork_fanout_dcp my @target_file = split '/', $$options{'source'}; $rcp_config{'dest-file'} = -"$$options{'target'}/$target_file[$#target_file]._$$target_properties{'hostname'}"; + "$$options{'target'}/$target_file[$#target_file]._$$target_properties{'hostname'}"; } @@ -850,6 +850,8 @@ sub fork_fanout_dcp $$options{'destDir_srcFile'}{$user_target}; } + $dsh_trace + && ($rcp_config{'trace'} = 1); #eval "require RemoteShell::$rsh_extension"; eval "require xCAT::$rsh_extension"; my $remoteshell = "xCAT::$rsh_extension"; @@ -5198,8 +5200,10 @@ sub parse_rsync_input_file_on_MN foreach my $target_node (@dest_host) { - # skip the node if it's NOT in the permitted list - if ($dest_node && !grep /^$target_node$/, @dest_nodes) { + # skip the node if it's NOT in the permitted list and if + # it's not a SN doing a hierarchical mode transfer + if ($dest_node && !(grep /^$target_node$/, @dest_nodes) + && ($rsyncSN != 1) ) { next; } $$options{'destDir_srcFile'}{$target_node} ||= {}; @@ -5214,7 +5218,13 @@ sub parse_rsync_input_file_on_MN if ($rsyncSN == 1) { # syncing the SN $dest_dir = $syncdir; # the SN sync dir - $dest_dir .= dirname($srcfile); + if($srcfile =~ /\/$/){ + #the srcfile is a directory + $dest_dir .= $srcfile; + }else{ + #the srcfile is a file + $dest_dir .= dirname($srcfile); + } $dest_dir =~ s/\s*//g; #remove blanks } $$options{'destDir_srcFile'}{$target_node}{$dest_dir} ||= @@ -5655,11 +5665,30 @@ sub parse_rsync_input_file_on_SN } else { # not processing EXECUTE, EXECUTEALWAYS or APPEND # otherwise it is just the synclist - if ($line =~ /(.+) -> (.+)/) + # xCAT supports the syncfile format: + # file -> file + # file -> (noderange for permitted nodes) file + if ($line =~ /(.+) -> (.+)/ || $line =~ /(.+) -> +\((.+)\) +(.+)/) { $process_line = 1; - my $src_file = $1; - my $dest_file = $2; + my $src_file; + my $dest_file; + my $dest_node; + my @dest_nodes; + if ($line =~ /(.+) -> +\((.+)\) +(.+)/) { + $src_file = $1; + $dest_node = $2; + $dest_file = $3; + } elsif ($line =~ /(.+) -> (.+)/) { + $src_file = $1; + $dest_file = $2; + } + + # get all the permitted nodes for the line + $dest_node =~ s/\s//g; + if ($dest_node) { + @dest_nodes = noderange($dest_node); + } $dest_file =~ s/[\s;]//g; # remove blanks # see if destination is a directory @@ -5688,6 +5717,10 @@ sub parse_rsync_input_file_on_SN foreach my $target_node (@dest_host) { + # skip the node if it's NOT in the permitted list + if ($dest_node && ! grep /^$target_node$/, @dest_nodes) { + next; + } $$options{'destDir_srcFile'}{$target_node} ||= {}; # for each file on the line diff --git a/perl-xCAT/xCAT/RSYNC.pm b/perl-xCAT/xCAT/RSYNC.pm index b40158d80..bd6d6efa3 100644 --- a/perl-xCAT/xCAT/RSYNC.pm +++ b/perl-xCAT/xCAT/RSYNC.pm @@ -156,7 +156,11 @@ sub remote_copy_command $dest_user_host = "$$config{'dest-user'}@" . "$$config{'dest-host'}"; } - print RSCYCCMDFILE "#!/bin/sh\n"; + if ($$config{'trace'}) { + print RSCYCCMDFILE "#!/bin/sh -x\n"; + } else { + print RSCYCCMDFILE "#!/bin/sh\n"; + } if ($localhost == 1) { # running to the MN from the MN print RSCYCCMDFILE "/bin/mkdir -p $dest_dir_list\n"; diff --git a/perl-xCAT/xCAT/Schema.pm b/perl-xCAT/xCAT/Schema.pm index f01edfd98..02760f105 100755 --- a/perl-xCAT/xCAT/Schema.pm +++ b/perl-xCAT/xCAT/Schema.pm @@ -694,17 +694,25 @@ passed as argument rather than by table value', }, }, pdu => { - cols => [qw(node nodetype outlet machinetype modelnum serialnum comments disable)], + cols => [qw(node nodetype pdutype outlet username password snmpversion community snmpuser authtype authkey privtype privkey seclevel comments disable)], keys => [qw(node)], nodecol => "node", table_desc => 'Parameters to use when interrogating pdus', descriptions => { node => 'The hostname/address of the pdu to which the settings apply', nodetype => 'The node type should be pdu ', + pdutype => 'The type of pdu ', outlet => 'The pdu outlet count', - machinetype => 'The pdu machine type', - modelnum => 'The pdu model number', - serialnum => 'The pdu serial number', + username => 'The remote login user name', + password => 'The remote login password', + snmpversion => 'The version to use to communicate with switch. SNMPv1 is assumed by default.', + community => 'The community string to use for SNMPv1/v2', + snmpuser => 'The username to use for SNMPv3 communication, ignored for SNMPv1', + authtype => 'The authentication protocol(MD5|SHA) to use for SNMPv3.', + authkey => 'The authentication passphrase for SNMPv3 ', + privtype => 'The privacy protocol(AES|DES) to use for SNMPv3.', + privkey => 'The privacy passphrase to use for SNMPv3.', + seclevel => 'The Security Level(noAuthNoPriv|authNoPriv|authPriv) to use for SNMPv3.', comments => 'Any user-written notes.', disable => "Set to 'yes' or '1' to comment out this row.", }, @@ -803,7 +811,7 @@ passed as argument rather than by table value', pkglist => 'The fully qualified name of the file that stores the distro packages list that will be included in the image. Make sure that if the pkgs in the pkglist have dependency pkgs, the dependency pkgs should be found in one of the pkgdir', pkgdir => 'The name of the directory where the distro packages are stored. It could be set to multiple paths. The multiple paths must be separated by ",". The first path in the value of osimage.pkgdir must be the OS base pkg dir path, such as pkgdir=/install/rhels6.2/x86_64,/install/updates . In the os base pkg path, there are default repository data. And in the other pkg path(s), the users should make sure there are repository data. If not, use "createrepo" command to create them. For ubuntu, multiple mirrors can be specified in the pkgdir attribute, the mirrors must be prefixed by the protocol(http/ssh) and delimited with "," between each other.', otherpkglist => 'The fully qualified name of the file that stores non-distro package lists that will be included in the image. It could be set to multiple paths. The multiple paths must be separated by ",".', - otherpkgdir => 'The base directory where the non-distro packages are stored. Only 1 local directory supported at present.', + otherpkgdir => 'The base directory and urls of internet repos from which the non-distro packages are retrived. Only 1 local directory is supported at present. The entries should be delimited with comma ",". Currently, the internet repos are only supported on Ubuntu and Redhat.', exlist => 'The fully qualified name of the file that stores the file names and directory names that will be excluded from the image during packimage command. It is used for diskless image only.', postinstall => 'Supported in diskless image only. The fully qualified name of the scripts running in non-chroot mode after the package installation but before initrd generation during genimage. If multiple scripts are specified, they should be seperated with comma ",". A set of osimage attributes are exported as the environment variables to be used in the postinstall scripts: @@ -950,19 +958,19 @@ passed as argument rather than by table value', table_desc => 'List of all Service Nodes and services that will be set up on the Service Node.', descriptions => { node => 'The hostname of the service node as known by the Management Node.', - nameserver => 'Do we set up DNS on this service node? Valid values: 2, 1, no or 0. If 2, creates named.conf as dns slave, using the management node as dns master, and starts named. If 1, creates named.conf file with forwarding to the management node and starts named. If no or 0, it does not change the current state of the service. ', - dhcpserver => 'Do we set up DHCP on this service node? Not supported on AIX. Valid values:yes or 1, no or 0. If yes, runs makedhcp -n. If no or 0, it does not change the current state of the service. ', - tftpserver => 'Do we set up TFTP on this service node? Not supported on AIX. Valid values:yes or 1, no or 0. If yes, configures and starts atftp. If no or 0, it does not change the current state of the service. ', - nfsserver => 'Do we set up file services (HTTP,FTP,or NFS) on this service node? For AIX will only setup NFS, not HTTP or FTP. Valid values:yes or 1, no or 0.If no or 0, it does not change the current state of the service. ', - conserver => 'Do we set up Conserver on this service node? Valid values:yes or 1, no or 0. If yes, configures and starts conserver daemon. If no or 0, it does not change the current state of the service.', - monserver => 'Is this a monitoring event collection point? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service.', - ldapserver => 'Do we set up ldap caching proxy on this service node? Not supported on AIX. Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service.', - ntpserver => 'Not used. Use setupntp postscript to setup a ntp server on this service node? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service.', - ftpserver => 'Do we set up a ftp server on this service node? Not supported on AIX Valid values:yes or 1, no or 0. If yes, configure and start vsftpd. (You must manually install vsftpd on the service nodes before this.) If no or 0, it does not change the current state of the service. xCAT is not using ftp for compute nodes provisioning or any other xCAT features, so this attribute can be set to 0 if the ftp service will not be used for other purposes', - nimserver => 'Not used. Do we set up a NIM server on this service node? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service.', - ipforward => 'Do we set up ip forwarding on this service node? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service.', + nameserver => 'Do we set up DNS on this service node? Valid values: 2, 1, or 0. If 2, creates named.conf as dns slave, using the management node as dns master, and starts named. If 1, creates named.conf file with forwarding to the management node and starts named. If 0, it does not change the current state of the service. ', + dhcpserver => 'Do we set up DHCP on this service node? Not supported on AIX. Valid values:1 or 0. If 1, runs makedhcp -n. If 0, it does not change the current state of the service. ', + tftpserver => 'Do we set up TFTP on this service node? Not supported on AIX. Valid values:1 or 0. If 1, configures and starts atftp. If 0, it does not change the current state of the service. ', + nfsserver => 'Do we set up file services (HTTP,FTP,or NFS) on this service node? For AIX will only setup NFS, not HTTP or FTP. Valid values:1 or 0.If 0, it does not change the current state of the service. ', + conserver => 'Do we set up Conserver on this service node? Valid values:1 or 0. If 1, configures and starts conserver daemon. If 0, it does not change the current state of the service.', + monserver => 'Is this a monitoring event collection point? Valid values: 1 or 0. If 0, it does not change the current state of the service.', + ldapserver => 'Do we set up ldap caching proxy on this service node? Not supported on AIX. Valid values:1 or 0. If 0, it does not change the current state of the service.', + ntpserver => 'Not used. Use setupntp postscript to setup a ntp server on this service node? Valid values:1 or 0. If 0, it does not change the current state of the service.', + ftpserver => 'Do we set up a ftp server on this service node? Not supported on AIX Valid values:1 or 0. If 1, configure and start vsftpd. (You must manually install vsftpd on the service nodes before this.) If 0, it does not change the current state of the service. xCAT is not using ftp for compute nodes provisioning or any other xCAT features, so this attribute can be set to 0 if the ftp service will not be used for other purposes', + nimserver => 'Not used. Do we set up a NIM server on this service node? Valid values:1 or 0. If 0, it does not change the current state of the service.', + ipforward => 'Do we set up ip forwarding on this service node? Valid values:1 or 0. If 0, it does not change the current state of the service.', dhcpinterfaces => 'The network interfaces DHCP server should listen on for the target node. This attribute can be used for management node and service nodes. If defined, it will override the values defined in site.dhcpinterfaces. This is a comma separated list of device names. !remote! indicates a non-local network for relay DHCP. For example: !remote!,eth0,eth1', - proxydhcp => 'Do we set up proxydhcp service on this node? valid values: yes or 1, no or 0. If yes, the proxydhcp daemon will be enabled on this node.', + proxydhcp => 'Do we set up proxydhcp service on this node? valid values: 1 or 0. If 1, the proxydhcp daemon will be enabled on this node.', comments => 'Any user-written notes.', disable => "Set to 'yes' or '1' to comment out this row.", @@ -2950,24 +2958,64 @@ my @nodeattrs = ( tabentry => 'pdu.nodetype', access_tabentry => 'pdu.node=attr:node', }, + { attr_name => 'pdutype', + only_if => 'nodetype=pdu', + tabentry => 'pdu.pdutype', + access_tabentry => 'pdu.node=attr:node', + }, { attr_name => 'outlet', only_if => 'nodetype=pdu', tabentry => 'pdu.outlet', access_tabentry => 'pdu.node=attr:node', }, - { attr_name => 'machinetype', + { attr_name => 'username', only_if => 'nodetype=pdu', - tabentry => 'pdu.machinetype', + tabentry => 'pdu.username', access_tabentry => 'pdu.node=attr:node', }, - { attr_name => 'modelnum', + { attr_name => 'password', only_if => 'nodetype=pdu', - tabentry => 'pdu.modelnum', + tabentry => 'pdu.password', access_tabentry => 'pdu.node=attr:node', }, - { attr_name => 'serialnum', + { attr_name => 'snmpversion', only_if => 'nodetype=pdu', - tabentry => 'pdu.serialnum', + tabentry => 'pdu.snmpversion', + access_tabentry => 'pdu.node=attr:node', + }, + { attr_name => 'community', + only_if => 'nodetype=pdu', + tabentry => 'pdu.community', + access_tabentry => 'pdu.node=attr:node', + }, + { attr_name => 'snmpuser', + only_if => 'nodetype=pdu', + tabentry => 'pdu.snmpuser', + access_tabentry => 'pdu.node=attr:node', + }, + { attr_name => 'authtype', + only_if => 'nodetype=pdu', + tabentry => 'pdu.authtype', + access_tabentry => 'pdu.node=attr:node', + }, + { attr_name => 'authkey', + only_if => 'nodetype=pdu', + tabentry => 'pdu.authkey', + access_tabentry => 'pdu.node=attr:node', + }, + { attr_name => 'privtype', + only_if => 'nodetype=pdu', + tabentry => 'pdu.privtype', + access_tabentry => 'pdu.node=attr:node', + }, + { attr_name => 'privkey', + only_if => 'nodetype=pdu', + tabentry => 'pdu.privkey', + access_tabentry => 'pdu.node=attr:node', + }, + { attr_name => 'seclevel', + only_if => 'nodetype=pdu', + tabentry => 'pdu.seclevel', access_tabentry => 'pdu.node=attr:node', }, diff --git a/perl-xCAT/xCAT/Scope.pm b/perl-xCAT/xCAT/Scope.pm index 39bb3da44..215709361 100644 --- a/perl-xCAT/xCAT/Scope.pm +++ b/perl-xCAT/xCAT/Scope.pm @@ -219,6 +219,10 @@ sub get_broadcast_disjoint_scope_with_parallel { my $reqs = get_parallel_scope($req); my $handled4me = 0; # indicate myself is already handled. + if (xCAT::Utils->isMN()) { # For MN, add itself always. + push @requests, @$reqs; + $handled4me = 1; + } my %prehandledhash = ();# the servers which is already handled. foreach (@$extras) { my $xcatdest = $_; diff --git a/perl-xCAT/xCAT/ServiceNodeUtils.pm b/perl-xCAT/xCAT/ServiceNodeUtils.pm index c27601874..13051df88 100755 --- a/perl-xCAT/xCAT/ServiceNodeUtils.pm +++ b/perl-xCAT/xCAT/ServiceNodeUtils.pm @@ -509,8 +509,11 @@ sub get_ServiceNode # get site.master this will be the default my $master = xCAT::TableUtils->get_site_Master(); - $noderestab = xCAT::Table->new('noderes'); + unless($master){ + xCAT::MsgUtils->message('SW',"site.master is not set!\n"); + } + $noderestab = xCAT::Table->new('noderes'); unless ($noderestab) # no noderes table, use default site.master { xCAT::MsgUtils->message('I', @@ -548,7 +551,7 @@ sub get_ServiceNode my $key = $rec->{$snattribute}; push @{ $snhash{$key} }, $node; } - else # use site.master + elsif($master) # use site.master { push @{ $snhash{$master} }, $node; } @@ -595,7 +598,7 @@ sub get_ServiceNode my $key = $rec->{$snattribute}; push @{ $snhash{$key} }, $node; } - else + elsif($master) { # use site.master push @{ $snhash{$master} }, $node; } @@ -631,7 +634,7 @@ sub get_ServiceNode my $key = $rec->{$snattribute}; push @{ $snhash{$key} }, $node; } - else + elsif($master) { # use site.master push @{ $snhash{$master} }, $node; } @@ -675,7 +678,7 @@ sub get_ServiceNode my $key = $sn->{$snattribute}; push @{ $snhash{$key} }, $node; } - else + elsif($master) { # no service node use master push @{ $snhash{$master} }, $node; } diff --git a/perl-xCAT/xCAT/Usage.pm b/perl-xCAT/xCAT/Usage.pm index 67d1bee90..454f8cbc1 100755 --- a/perl-xCAT/xCAT/Usage.pm +++ b/perl-xCAT/xCAT/Usage.pm @@ -146,6 +146,7 @@ my %usage = ( rspconfig [userid= username= password=] OpenBMC specific: rspconfig [ipsrc|ip|netmask|gateway|hostname|vlan] + rspconfig dump [-l|--list] [-g|--generate] [-c|--clear {|all}] [-d|--download ] iDataplex specific: rspconfig [thermprofile] rspconfig [thermprofile=] @@ -353,7 +354,8 @@ my %usage = ( OpenPOWER OpenBMC specific: rflash {[-c|--check] | [-l|--list]} rflash {[-c|--check] | [-a|--activate] | [-u|--upload]} - rflash {[-a|--activate] | [-d|--delete]}", + rflash [-d] [--no-host-reboot] + rflash {[-a|--activate] | [--delete]}", "mkhwconn" => "Usage: mkhwconn [-h|--help] diff --git a/perl-xCAT/xCAT/Utils.pm b/perl-xCAT/xCAT/Utils.pm index 35b9abea2..6a7f12c3a 100644 --- a/perl-xCAT/xCAT/Utils.pm +++ b/perl-xCAT/xCAT/Utils.pm @@ -48,7 +48,7 @@ require xCAT::Version; require DBI; our @ISA = qw(Exporter); -our @EXPORT_OK = qw(genpassword runcmd3); +our @EXPORT_OK = qw(genpassword runcmd3 natural_sort_cmp); # The functions that has been moved to TableUtils.pm @@ -4918,5 +4918,35 @@ sub acquire_lock_imageop { return (0,$lock); } +#-------------------------------------------------------------------------------- + +=head3 natural_sort_cmp + compare $left and $right by natural ordering. +=cut + +#-------------------------------------------------------------------------------- +sub natural_sort_cmp($$) { + my $left = shift; + my $right = shift; + while() { + if( !($left =~ /\d+(\.\d+)?/) ) { + return $left cmp $right; + } + my $before = $`; + my $match = $&; + my $after = $'; + if( !($right =~ /\d+(\.\d+)?/) ) { + return $left cmp $right; + } + if( $before ne $` ) { + return $left cmp $right; + } elsif( $match != $& ) { + return $match <=> $&; + } else { + $left = $after; + $right = $'; + } + } +} 1; diff --git a/perl-xCAT/xCAT/data/switchinfo.pm b/perl-xCAT/xCAT/data/switchinfo.pm index cf8f1af80..1a8986877 100644 --- a/perl-xCAT/xCAT/data/switchinfo.pm +++ b/perl-xCAT/xCAT/data/switchinfo.pm @@ -21,7 +21,8 @@ our %global_mac_identity = ( "8c:ea:1b" => "Edgecore Networks Switch", "a8:2b:b5" => "Edgecore Networks Switch", "3c:2c:99" => "Edgecore Networks Switch", - "70:72:cf" => "Edgecore Networks Switch" + "70:72:cf" => "Edgecore Networks Switch", + "6c:64:1a" => "Penguin Computing switch" ); #the hash to lookup switch type with vendor @@ -40,7 +41,8 @@ our %global_switch_type = ( MELLAN => "Mellanox", Cumulus => "onie", cumulus => "onie", - Edgecore => "onie" + Edgecore => "onie", + coral => "crpdu" ); diff --git a/xCAT-client/bin/rcons b/xCAT-client/bin/rcons index c5b1b78df..7a432c08c 100755 --- a/xCAT-client/bin/rcons +++ b/xCAT-client/bin/rcons @@ -62,6 +62,9 @@ done # confluent if this keyword is defined in the site table. This allows for confluent to # be installed on the xCAT management node and switch between conserver & confluent USE_CONFLUENT=0 +# If conluent is not enable, check the service status of goconserver. +# If goconserver is strated, use rcons through goconserver, otherwise through conserver. +USE_GOCONSERVER=0 CONSOLE_SERVICE_KEYWORD=`tabdump site | grep consoleservice | cut -d, -f1 | tr -d '"'` CONSOLE_SERVICE_VALUE=`tabdump site | grep consoleservice | cut -d, -f2 | tr -d '"'` @@ -71,6 +74,20 @@ if [ "$CONSOLE_SERVICE_KEYWORD" == "consoleservice" ]; then fi fi +if [ $USE_CONFLUENT != "1" ] && [ -f "/usr/bin/congo" ] && [ -f "/usr/bin/goconserver" ]; then + GOCONSERVER_RC=`service goconserver status >& /dev/null; echo $?` + if [[ ${GOCONSERVER_RC} == 0 ]]; then + USE_GOCONSERVER=1 + fi + if [[ ${USE_GOCONSERVER} == 1 ]]; then + CONSERVER_RC=`pidof conserver >> /dev/null; echo $?` + if [[ ${CONSERVER_RC} == 0 ]]; then + echo "Error: Both goconserver and conserver are running, please stop one of them, and retry..." + exit 1 + fi + fi +fi + if [ $USE_CONFLUENT == "1" ] && ([ -x "/opt/confluent/bin/confetty" ] || [ -x "/usr/bin/confetty" ] || [ -x "/usr/local/bin/confetty" ]); then # use confluent, make sure conserver is not also running CONSERVER_RC=`pidof conserver >> /dev/null; echo $?` @@ -78,6 +95,11 @@ if [ $USE_CONFLUENT == "1" ] && ([ -x "/opt/confluent/bin/confetty" ] || [ -x "/ echo "Error: consoleservice is set to 'confluent' but conserver is running. Stop conserver, run makeconfluentcfg, and retry..." exit 1 fi + GOCONSERVER_RC=`service goconserver status >& /dev/null; echo $?` + if [[ ${GOCONSERVER_RC} == 0 ]]; then + echo "Error: consoleservice is set to 'confluent' but goconserver is running. Stop goconserver, run makeconfluentcfg, and retry..." + exit 1 + fi CONFETTY="confetty" if [ -x "/opt/confluent/bin/confetty" ]; then CONFETTY="/opt/confluent/bin/confetty" @@ -103,6 +125,53 @@ if [ $USE_CONFLUENT == "1" ] && ([ -x "/opt/confluent/bin/confetty" ] || [ -x "/ CONSERVER="-s $CONSERVER" fi $CONFETTY $CONSCONTROLPATH $CONSERVER $1 +elif [ $USE_GOCONSERVER == "1" ]; then + # use goconserver + # make sure confluent is not also running, only if confluent is installed + if [[ -f "/etc/init.d/confluent" ]]; then + CONFLUENT_RC=`service confluent status >& /dev/null; echo $?` + if [[ ${CONFLUENT_RC} == 0 ]]; then + echo "Error: confluent is running. Stop confluent, run makegocons, and retry..." + exit 1 + fi + fi + if [ -z "$CONSERVER" ]; then + CONSERVER=`nodels $1 nodehm.conserver 2>/dev/null | awk -F: '{print $2}' | tr -d ' '` + fi + + if [ -z "$CONSERVER" ]; then + CONSERVER=$XCATHOST + fi + if [ -z "$CONSERVER" ]; then + CONSERVER=`hostname` + fi + CONGO_ENV="CONGO_SSL_KEY=$HOME/.xcat/client-cred.pem \ + CONGO_SSL_CERT=$HOME/.xcat/client-cred.pem \ + CONGO_SSL_CA_CERT=$HOME/.xcat/ca.pem \ + CONGO_PORT=12430 \ + CONGO_CLIENT_TYPE=xcat" + if [ "$CONSERVER" == `hostname` ]; then + host=`hostname -s` + if [ $? -ne 0 ]; then + echo "Error: could not get the short hostname for $CONSERVER." + exit 1 + fi + CONGO_ENV="$CONGO_ENV \ + CONGO_SERVER_HOST=$host \ + CONGO_URL=https://$host:12429" + exec env $CONGO_ENV /usr/bin/congo console $1 + else + host=`ssh $CONSERVER hostname -s` + if [ $? -ne 0 ]; then + echo "Error: could not get the short hostname for $CONSERVER." + exit 1 + fi + CONGO_ENV="$CONGO_ENV \ + CONGO_SERVER_HOST=$host \ + CONGO_URL=https://$host:12429" + exec ssh -t $CONSERVER "$CONGO_ENV /usr/bin/congo console $1" + fi + elif [ -f "/usr/bin/console" ] || [ -f "/bin/console" ]; then # use conserver # make sure confluent is not also running, only if confluent is installed diff --git a/xCAT-client/debian/xcat-client.links b/xCAT-client/debian/xcat-client.links index ed2ac8134..0bf090cd8 100644 --- a/xCAT-client/debian/xcat-client.links +++ b/xCAT-client/debian/xcat-client.links @@ -6,6 +6,7 @@ opt/xcat/bin/xcatclient opt/xcat/sbin/makeknownhosts opt/xcat/bin/xcatclient opt/xcat/sbin/nodeset opt/xcat/bin/xcatclient opt/xcat/sbin/setupiscsidev opt/xcat/bin/xcatclient opt/xcat/sbin/makeconservercf +opt/xcat/bin/xcatclient opt/xcat/sbin/makegocons opt/xcat/bin/xcatclient opt/xcat/bin/rbeacon opt/xcat/bin/xcatclient opt/xcat/bin/rvitals opt/xcat/bin/xcatclient opt/xcat/bin/nodestat diff --git a/xCAT-client/pods/man1/bmcdiscover.1.pod b/xCAT-client/pods/man1/bmcdiscover.1.pod index fc9ddfe5a..20ffd84b4 100644 --- a/xCAT-client/pods/man1/bmcdiscover.1.pod +++ b/xCAT-client/pods/man1/bmcdiscover.1.pod @@ -10,10 +10,6 @@ B [B<-v>|B<--version>] B [B<--sn> I] [B<-s> I] [B<-u> I] [B<-p> I] [B<-z>] [B<-w>] B<--range> I -B B<-u> I B<-p> I B<-i> I B<--check> - -B [B<-u> I] [B<-p> I] B<-i> I B<--ipsource> - =head1 DESCRIPTION @@ -61,14 +57,6 @@ BMC user name. BMC user password. -=item B<--check> - -Check BMC administrator User/Password. - -=item B<--ipsource> - -Display the BMC IP configuration. - =item B<-h|--help> Display usage message @@ -117,14 +105,6 @@ Output is similar to: bmcdiscover -s nmap --range "10.4.22-23.100-254" -w -z -5. To check if the username or password is correct against the BMC: - - bmcdiscover -i 10.4.23.254 -u USERID -p PASSW0RD --check - -6. Get BMC IP Address source, DHCP Address or static Address - - bmcdiscover -i 10.4.23.254 -u USERID -p PASSW0RD --ipsource - =head1 SEE ALSO L diff --git a/xCAT-client/pods/man1/rflash.1.pod b/xCAT-client/pods/man1/rflash.1.pod index ee2b29da1..447bdc332 100644 --- a/xCAT-client/pods/man1/rflash.1.pod +++ b/xCAT-client/pods/man1/rflash.1.pod @@ -34,7 +34,9 @@ B I {[B<-c>|B<--check>] | [B<-l>|B<--list>]} B I I {[B<-c>|B<--check>] | [B<-a>|B<--activate>] | [B<-u>|B<--upload>]} -B I I {[B<-a>|B<--activate>] | [B<-d>|B<--delete>]} +B I I [B<-d>] [B<--no-host-reboot>] + +B I I {[B<-a>|B<--activate>] | [B<--delete>]} =head1 B @@ -91,14 +93,44 @@ The command will update firmware for NeXtScale FPC when given an FPC node and th =head2 OpenPOWER specific (using IPMI): -The command will update firmware for OpenPOWER BMC when given an OpenPOWER node and either the hpm formatted file path or path to a data directory. +The command will update firmware for OpenPOWER BMC when given an OpenPOWER node with I and either the hpm formatted file path or path to a data directory. + B When using B in hierarchical environment, the hpm file or data directory must be accessible from Service Nodes. -=head2 OpenPOWER OpenBMC specific: +=head2 OpenPOWER specific (using OpenBMC): + +The command will update firmware for OpenPOWER BMC when given an OpenPOWER node with I and either an update .tar file or an uploaded image id. + +B<-l|--list>: + + The list option will list out available firmware on the BMC. It provides an interface to display the ID of the various firmware levels. + + The (*) symbol indicates the active running firmware on the server. + + The (+) symbol indicates the firmware that is pending and a reboot is required to set it to be the active running firmware level. + +B<-u|--upload>: + + The upload option expects a .tar file as the input and will upload the file to the BMC. Use the list option to view the result. + +B<-a|--activate>: + + The activate option expects either a .tar file or an ID as the input. If a .tar file is provided, it will upload and activate the firmware in a single step + +To apply the firmware level, a reboot is required to BMC and HOST. -The command will update firmware for OpenPOWER OpenBMC when given an OpenPOWER node and either an update .tar file or an uploaded image id. B When using B in hierarchical environment, the .tar file must be accessible from Service Nodes. +B<-d>: + + This option steamlines the update, activate, reboot BMC and reboot HOST procedure. It expects a directory containing both BMC and PNOR .tar files. When BMC and PNOR tar files are provided, the command will upload and activate firmware. After BMC becomes activate, it will reboot BMC. If BMC state is Ready, the command will reboot the HOST. If BMC state is NotReady, the command will exit. + +B When using B<--no-host-reboot>, it will not reboot the host after BMC is reboot. + +B<--delete>: + + This delete option will delete update image from BMC. It expects an ID as the input. + =head1 B =over 7 @@ -159,7 +191,7 @@ List currently uploaded update images. "(*)" indicates currently active image. Upload update image. Specified file must be in .tar format. -=item B<-d|--delete> +=item B<--delete> Delete update image from BMC @@ -213,14 +245,14 @@ Print verbose message to rflash log file (/var/log/xcat/rflash/fs3.log) when upd rflash fs3 /firmware/8335_810.1543.20151021b_update.hpm -V =item 6. -To update the firmware on IBM Power S822LC for Big Data machine specify the node name and the file path of the data directory containing pUpdate utility and BMC and/or PNOR update files: +To update the firmware on IBM Power S822LC for Big Data machine specify the node name and the file path of the data directory containing pUpdate utility, both BMC and PNOR update files: rflash briggs01 -d /root/supermicro/OP825 =item 7. To update the firmware on the OpenBMC machine, specify the firmare update file to upload and activate: - rflash p9euh02 -a /tmp/witherspoon.pnor.squashfs.tar + rflash p9euh02 -a /tmp/witherspoon.pnor.squashfs.tar =back diff --git a/xCAT-client/pods/man1/rmdef.1.pod b/xCAT-client/pods/man1/rmdef.1.pod index 95b4358b1..38b67b077 100644 --- a/xCAT-client/pods/man1/rmdef.1.pod +++ b/xCAT-client/pods/man1/rmdef.1.pod @@ -58,7 +58,7 @@ A set of comma delimited object types. =item B<-C|--cleanup> -Perform additional cleanup by running B on the objects specified in the I. +Perform additional cleanup by running B and B on the objects specified in the I. =item B<-V|--verbose> diff --git a/xCAT-client/pods/man1/rspconfig.1.pod b/xCAT-client/pods/man1/rspconfig.1.pod index a61149197..fbd1fa6f0 100644 --- a/xCAT-client/pods/man1/rspconfig.1.pod +++ b/xCAT-client/pods/man1/rspconfig.1.pod @@ -26,6 +26,8 @@ B I B=I