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