2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-05-22 08:42:47 +00:00

Merge tag '2.15.1' into lenovobuild

This commit is contained in:
Jarrod Johnson
2020-03-06 11:10:19 -05:00
132 changed files with 1727 additions and 434 deletions
+1 -1
View File
@@ -1 +1 @@
2.15
2.15.1
+12 -2
View File
@@ -22,6 +22,7 @@
# Verifies no broken link files in ..../<OS>/<ARCH>/
# Verifies there are no multiple, real (non-link) files with the same name
# Verifies all real (non-link) files have a link to it
# Verifies all files have read permission set for all
# VERBOSE=1 - Set to 1 to see more VERBOSE output
# This script should only be run on RPM based machines
@@ -189,6 +190,15 @@ if [[ ${CHECK} -eq 1 ]]; then
fi
done
# Find files that have read permission missing for "all"
MISSING_PERMISSION=`find $GSA/* -type f -not -perm -444`
for file in $MISSING_PERMISSION; do
echo "Verify permission for file: "
echo " " $(ls -l $file)
ERROR=1
done
if [[ ${ERROR} -eq 1 ]]; then
echo -e "\nErrors found verifying files. Rerun this script with CHECK=0 to skip file verification."
exit 1
@@ -268,8 +278,8 @@ chgrp -R -h $SYSGRP *
chmod -R g+w *
# Change permission on all repodata files to be readable by all
chmod a+r */*/repodata/*.gz
chmod a+r */*/repodata/*.bz2
chmod a+rx */*/repodata
chmod a+r */*/repodata/*
TARBALL_WORKING_DIR="${XCATCOREDIR}/${DESTDIR}"
echo "===> Building the tarball at: ${TARBALL_WORKING_DIR} ..."
@@ -3,10 +3,9 @@ Configure DHCP
Add the relevant networks into the DHCP configuration, refer to: :ref:`Setup-dhcp`
Add the defined nodes into the DHCP configuration, refer to:
`XCAT_pLinux_Clusters/#configure-dhcp <http://localhost/fake_todo>`_
Add the defined nodes into the DHCP configuration, refer to :doc:`Manually define nodes </guides/admin-guides/manage_clusters/ppc64le/discovery/manually_define>`
In the large cluster, the size of dhcp lease file "/var/lib/dhcpd/dhcpd.leases" on the DHCP server will grow over time. At around 100MB in size, the DHCP server will take a long time to respond to DHCP requests from clients and cause DHCP timeouts: ::
In the large cluster, the size of dhcp lease file ``/var/lib/dhcpd/dhcpd.leases`` on the DHCP server will grow over time. At around 100MB in size, the DHCP server will take a long time to respond to DHCP requests from clients and cause DHCP timeouts: ::
...
Mar 2 01:59:10 c656ems2 dhcpd: DHCPDISCOVER from 00:0a:f7:73:7d:d0 via eth0
@@ -63,6 +63,16 @@ Suse Linux Enterprise Server
libmysqlclient18-*
perl-DBD-mysql-*
* For SLE15, MariaDB is shipped. Using ``zypper``, ensure that the following packages are installed on the management node: ::
mariadb
mariadb-client
mariadb-errormessages
perl-DBD-mysql
libmariadb-devel
mariadb-tools
libmariadb_plugins
Debian/Ubuntu
-------------
@@ -19,6 +19,11 @@ Start/Stop MySQL/MariaDB service
service mysql start
service mysql stop
**[SLE15]** : ::
systemctl start mariadb
systemctl stop mariadb
Basic MySQL/MariaDB commands
-----------------------------
@@ -11,41 +11,41 @@ be adding the information to the database that will tell xCAT which service
nodes (SN) will service which compute nodes (CN).
For this example, we have two service nodes: **sn1** and **sn2**. We will call
our Management Node: **mn1**. Note: service nodes are, by convention, in a
our Management Node: **mn1**. Service nodes are, by convention, in a
group called **service**. Some of the commands in this document will use the
group **service** to update all service nodes.
Note: a Service Node's service node is the Management Node; so a service node
must have a direct connection to the management node. The compute nodes do not
have to be directly attached to the Management Node, only to their service
node. This will all have to be defined in your networks table.
.. note:: a Service Node's service node is the Management Node; so a service node
must have a direct connection to the management node. The compute nodes do not
have to be directly attached to the Management Node, only to their service
node. This will all have to be defined in your networks table.
Add Service Nodes to the nodelist Table
---------------------------------------
Define your service nodes (if not defined already), and by convention we put
them in a **service** group. We usually have a group compute for our compute
them in a **service** group. We usually have a group **compute** for our compute
nodes, to distinguish between the two types of nodes. (If you want to use your
own group name for service nodes, rather than service, you need to change some
defaults in the xCAT db that use the group name service. For example, in the
postscripts table there is by default a group entry for service, with the
own group name for service nodes, rather than **service**, you need to change some
defaults in the xCAT db that use the group name **service**. For example, in the
postscripts table there is by default a group entry for **service**, with the
appropriate postscripts to run when installing a service node. Also, the
default ``kickstart/autoyast`` template, pkglist, etc that will be used have
files names based on the profile name service.) ::
files names based on the profile name **service**.) ::
mkdef sn1,sn2 groups=service,ipmi,all
Add OS and Hardware Attributes to Service Nodes
-----------------------------------------------
When you ran copycds, it creates several osimage definitions, including some
When you ran ``copycds``, it creates several osimage definitions, including some
appropriate for SNs. Display the list of osimages and choose one with
"service" in the name: ::
**service** in the name: ::
lsdef -t osimage
For this example, let's assume you chose the stateful osimage definition for
rhels 7: rhels7-x86_64-install-service . If you want to modify any of the
rhels 7: ``rhels7-x86_64-install-service`` . If you want to modify any of the
osimage attributes (e.g. ``kickstart/autoyast`` template, pkglist, etc),
make a copy of the osimage definition and also copy to ``/install/custom``
any files it points to that you are modifying.
@@ -60,19 +60,19 @@ Now set some of the common attributes for the SNs at the group level: ::
primarynic=mac \
provmethod=rhels7-x86_64-install-service
Add Service Nodes to the servicenode Table
Add Service Nodes to the ``servicenode`` Table
------------------------------------------
An entry must be created in the servicenode table for each service node or the
service group. This table describes all the services you would like xcat to
An entry must be created in the ``servicenode`` table for each service node or the
**service** group. This table describes all the services you would like xcat to
setup on the service nodes. (Even if you don't want xCAT to set up any
services - unlikely - you must define the service nodes in the servicenode
services - unlikely - you must define the service nodes in the ``servicenode``
table with at least one attribute set (you can set it to 0), otherwise it will
not be recognized as a service node.)
When the xcatd daemon is started or restarted on the service node, it will
When the ``xcatd`` daemon is started or restarted on the service node, it will
make sure all of the requested services are configured and started. (To
temporarily avoid this when restarting xcatd, use "service xcatd reload"
temporarily avoid this when restarting ``xcatd``, use ``service xcatd reload``
instead.)
To set up the minimum recommended services on the service nodes: ::
@@ -82,23 +82,21 @@ To set up the minimum recommended services on the service nodes: ::
setupnameserver=1 \
setupconserver=1
.. TODO
See the ``setup*`` attributes in the :doc:`node manpage </guides/admin-guides/references/man7/node.7>` for the services available. (The HTTP server is also started when setupnfs is set.)
If you are using the setupntp postscript on the compute nodes, you should also
set setupntp=1. For clusters with subnetted management networks (i.e. the
If you are using the ``setupntp`` postscript on the compute nodes, you should also
set ``setupntp=1``. For clusters with subnetted management networks (i.e. the
network between the SN and its compute nodes is separate from the network
between the MN and the SNs) you might want to also set setupipforward=1.
between the MN and the SNs) you might want to also set ``setupipforward=1``.
.. _add_service_node_postscripts_label:
Add Service Node Postscripts
----------------------------
By default, xCAT defines the service node group to have the "servicenode"
By default, xCAT defines the **service** node group to have the ``servicenode``
postscript run when the SNs are installed or diskless booted. This
postscript sets up the xcatd credentials and installs the xCAT software on
postscript sets up the ``xcatd`` credentials and installs the xCAT software on
the service nodes. If you have your own postscript that you want run on the
SN during deployment of the SN, put it in ``/install/postscripts`` on the MN
and add it to the service node postscripts or postbootscripts. For example: ::
@@ -113,7 +111,7 @@ Notes:
* Make sure that the servicenode postscript is set to run before the
otherpkgs postscript or you will see errors during the service node
deployment.
* The -p flag automatically adds the specified postscript at the end of the
* The ``-p`` flag automatically adds the specified postscript at the end of the
comma-separated list of postscripts (or postbootscripts).
If you are running additional software on the service nodes that need **ODBC**
@@ -125,43 +123,42 @@ the xCAT supplied postbootscript called "odbcsetup". ::
Assigning Nodes to their Service Nodes
--------------------------------------
The node attributes **servicenode** and **xcatmaster** define which SN
services this particular node. The servicenode attribute for a compute node
defines which SN the MN should send a command to (e.g. xdsh), and should be
The node attributes ``servicenode`` and ``xcatmaster`` define which SN
services this particular node. The ``servicenode`` attribute for a compute node
defines which SN the MN should send a command to (e.g. ``xdsh``), and should be
set to the hostname or IP address of the service node that the management
node contacts it by. The xcatmaster attribute of the compute node defines
node contacts it by. The ``xcatmaster`` attribute of the compute node defines
which SN the compute node should boot from, and should be set to the
hostname or IP address of the service node that the compute node contacts it
by. Unless you are using service node pools, you must set the xcatmaster
by. Unless you are using service node pools, you must set the ``xcatmaster``
attribute for a node when using service nodes, even if it contains the same
value as the node's servicenode attribute.
value as the node's ``servicenode`` attribute.
Host name resolution must have been setup in advance, with ``/etc/hosts``, DNS
or dhcp to ensure that the names put in this table can be resolved on the
Management Node, Service nodes, and the compute nodes. It is easiest to have a
node group of the compute nodes for each service node. For example, if all the
nodes in node group compute1 are serviced by sn1 and all the nodes in node
group compute2 are serviced by sn2:
nodes in node group **compute1** are serviced by sn1 and all the nodes in node
group **compute2** are serviced by sn2:
::
chdef -t group compute1 servicenode=sn1 xcatmaster=sn1-c
chdef -t group compute2 servicenode=sn2 xcatmaster=sn2-c
Note: in this example, sn1 and sn2 are the node names of the service nodes
(and therefore the hostnames associated with the NICs that the MN talks to).
The hostnames sn1-c and sn2-c are associated with the SN NICs that communicate
with their compute nodes.
.. note:: In this example, sn1 and sn2 are the node names of the service nodes
(and therefore the hostnames associated with the NICs that the MN talks to).
The hostnames sn1-c and sn2-c are associated with the SN NICs that communicate
with their compute nodes.
Note: if not set, the attribute tftpserver's default value is xcatmaster,
but in some releases of xCAT it has not defaulted correctly, so it is safer
to set the tftpserver to the value of xcatmaster.
.. note:: If not set, the attribute tftpserver's default value is ``xcatmaster``,
but in some releases of xCAT it has not defaulted correctly, so it is safer
to set the tftpserver to the value of ``xcatmaster``.
These attributes will allow you to specify which service node should run the
conserver (console) and monserver (monitoring) daemon for the nodes in the
group specified in the command. In this example, we are having each node's
primary SN also act as its conserver and monserver (the most typical setup).
::
primary SN also act as its conserver and monserver (the most typical setup). ::
chdef -t group compute1 conserver=sn1 monserver=sn1,sn1-c
chdef -t group compute2 conserver=sn2 monserver=sn2,sn2-c
@@ -176,22 +173,22 @@ for work-load balancing on the service nodes. But note that the selection of
which SN will service which compute node is made at compute node boot time.
After that, the selection of the SN for this compute node is fixed until the
compute node is rebooted or the compute node is explicitly moved to another SN
using the `snmove <http://localhost/fake_todo>`_ command.
using the :doc:`snmove </guides/admin-guides/references/man1/snmove.1>` command.
To use Service Node pools, you need to architect your network such that all of
the compute nodes and service nodes in a particular pool are on the same flat
network. If you don't want the management node to respond to manage some of
the compute nodes, it shouldn't be on that same flat network. The
site, dhcpinterfaces attribute should be set such that the SNs' DHCP daemon
``site`` table, ``dhcpinterfaces`` attribute should be set such that the SNs' DHCP daemon
only listens on the NIC that faces the compute nodes, not the NIC that faces
the MN. This avoids some timing issues when the SNs are being deployed (so
that they don't respond to each other before they are completely ready). You
also need to make sure the `networks <http://localhost/fake_todo>`_ table
also need to make sure the :doc:`networks </guides/admin-guides/references/man5/networks.5>` table
accurately reflects the physical network structure.
To define a list of service nodes that support a set of compute nodes, set the
servicenode attribute to a comma-delimited list of the service nodes. When
running an xCAT command like xdsh or updatenode for compute nodes, the list
``servicenode`` attribute to a comma-delimited list of the service nodes. When
running an xCAT command like ``xdsh`` or ``updatenode`` for compute nodes, the list
will be processed left to right, picking the first service node on the list to
run the command. If that service node is not available, then the next service
node on the list will be chosen until the command is successful. Errors will
@@ -201,10 +198,10 @@ service nodes as we do below.
When using service node pools, the intent is to have the service node that
responds first to the compute node's DHCP request during boot also be the
xcatmaster, the tftpserver, and the NFS/http server for that node. Therefore,
the xcatmaster and nfsserver attributes for nodes should not be set. When
nodeset is run for the compute nodes, the service node interface on the
network to the compute nodes should be defined and active, so that nodeset
``xcatmaster``, the ``tftpserver``, and the NFS/http server for that node. Therefore,
the ``xcatmaster`` and ``nfsserver`` attributes for nodes should not be set. When
``nodeset`` is run for the compute nodes, the service node interface on the
network to the compute nodes should be defined and active, so that ``nodeset``
will default those attribute values to the "node ip facing" interface on that
service node.
@@ -213,30 +210,29 @@ For example: ::
chdef -t node compute1 servicenode=sn1,sn2 xcatmaster="" nfsserver=""
chdef -t node compute2 servicenode=sn2,sn1 xcatmaster="" nfsserver=""
You need to set the sharedtftp site attribute to 0 so that the SNs will not
automatically mount the ``/tftpboot`` directory from the management node:
::
You need to set the ``sharedtftp`` site attribute to ``0`` so that the SNs will not
automatically mount the ``/tftpboot`` directory from the management node: ::
chdef -t site clustersite sharedtftp=0
For stateful (diskful) installs, you will need to use a local ``/install`` directory on each service node. The ``/install/autoinst/node`` files generated by nodeset will contain values specific to that service node for correctly installing the nodes. ::
For stateful (diskful) installs, you will need to use a local ``/install`` directory on each service node. The ``/install/autoinst/node`` files generated by ``nodeset`` will contain values specific to that service node for correctly installing the nodes. ::
chdef -t site clustersite installloc=""
With this setting, you will need to remember to rsync your ``/install``
With this setting, you will need to remember to ``rsync`` your ``/install``
directory from the xCAT management node to the service nodes anytime you
change your ``/install/postscripts``, custom osimage files, os repositories,
or other directories. It is best to exclude the ``/install/autoinst`` directory
from this rsync.
from this ``rsync``.
::
rsync -auv --exclude 'autoinst' /install sn1:/
Note: If your service nodes are stateless and site.sharedtftp=0, if you reboot
any service node when using servicenode pools, any data written to the local
``/tftpboot`` directory of that SN is lost. You will need to run nodeset for
all of the compute nodes serviced by that SN again.
.. note:: If your service nodes are stateless and ``site.sharedtftp=0``, if you reboot
any service node when using servicenode pools, any data written to the local
``/tftpboot`` directory of that SN is lost. You will need to run ``nodeset`` for
all of the compute nodes serviced by that SN again.
For additional information about service node pool related settings in the
networks table, see ref: networks table, see :ref:`setup_networks_table_label`.
@@ -246,13 +242,13 @@ Conserver and Monserver and Pools
The support of conserver and monserver with Service Node Pools is still not
supported. You must explicitly assign these functions to a service node using
the nodehm.conserver and noderes.monserver attribute as above.
the ``nodehm.conserver`` and ``noderes.monserver`` attribute as above.
Setup Site Table
----------------
If you are not using the NFS-based statelite method of booting your compute
nodes, set the installloc attribute to ``/install``. This instructs the
nodes, set the ``installloc`` attribute to ``/install``. This instructs the
service node to mount ``/install`` from the management node. (If you don't do
this, you have to manually sync ``/install`` between the management node and
the service nodes.) ::
@@ -261,25 +257,25 @@ the service nodes.) ::
For IPMI controlled nodes, if you want the out-of-band IPMI operations to be
done directly from the management node (instead of being sent to the
appropriate service node), set site.ipmidispatch=n.
appropriate service node), set ``site.ipmidispatch=n``.
If you want to throttle the rate at which nodes are booted up, you can set the
following site attributes:
* syspowerinterval
* syspowermaxnodes
* powerinterval (system p only)
* ``syspowerinterval``
* ``syspowermaxnodes``
* ``powerinterval`` (system p only)
See the `site table man page <http://localhost/fack_todo>`_ for details.
See the :doc:`site table man page </guides/admin-guides/references/man5/site.5>` for details.
.. _setup_networks_table_label:
Setup networks Table
--------------------
All networks in the cluster must be defined in the networks table. When xCAT
is installed, it runs makenetworks, which creates an entry in the networks
All networks in the cluster must be defined in the ``networks`` table. When xCAT
is installed, it runs ``makenetworks``, which creates an entry in the ``networks``
table for each of the networks the management node is on. You need to add
entries for each network the service nodes use to communicate to the compute
nodes.
@@ -288,28 +284,27 @@ For example: ::
mkdef -t network net1 net=10.5.1.0 mask=255.255.255.224 gateway=10.5.1.1
If you want to set the nodes' xcatmaster as the default gateway for the nodes,
the gateway attribute can be set to keyword "<xcatmaster>". In this case, xCAT
code will automatically substitute the IP address of the node's xcatmaster for
the keyword. Here is an example:
::
If you want to set the nodes' ``xcatmaster`` as the default gateway for the nodes,
the ``gateway`` attribute can be set to keyword ``<xcatmaster>``. In this case, xCAT
code will automatically substitute the IP address of the node's ``xcatmaster`` for
the keyword. Here is an example: ::
mkdef -t network net1 net=10.5.1.0 mask=255.255.255.224 gateway=<xcatmaster>
The ipforward attribute should be enabled on all the xcatmaster nodes that
will be acting as default gateways. You can set ipforward to 1 in the
servicenode table or add the line "net.ipv4.ip_forward = 1" in file
``/etc/sysctl.conf`` and then run "sysctl -p /etc/sysctl.conf" manually to
The ``ipforward`` attribute should be enabled on all the ``xcatmaster`` nodes that
will be acting as default gateways. You can set ``ipforward`` to ``1`` in the
``servicenode`` table or add the line ``net.ipv4.ip_forward = 1`` in file
``/etc/sysctl.conf`` and then run ``sysctl -p /etc/sysctl.conf`` manually to
enable the ipforwarding.
Note:If using service node pools, the networks table dhcpserver attribute can
be set to any single service node in your pool. The networks tftpserver, and
nameserver attributes should be left blank.
.. note:: If using service node pools, the ``networks`` table ``dhcpserver`` attribute can
be set to any single service node in your pool. The networks ``tftpserver``, and
``nameserver`` attributes should be left blank.
Verify the Tables
--------------------
To verify that the tables are set correctly, run lsdef on the service nodes,
To verify that the tables are set correctly, run ``lsdef`` on the service nodes,
compute1, compute2: ::
lsdef service,compute1,compute2
@@ -318,22 +313,21 @@ Add additional adapters configuration script (optional)
------------------------------------------------------------
It is possible to have additional adapter interfaces automatically configured
when the nodes are booted. XCAT provides sample configuration scripts for
when the nodes are booted. xCAT provides sample configuration scripts for
ethernet, IB, and HFI adapters. These scripts can be used as-is or they can be
modified to suit your particular environment. The ethernet sample is
``/install/postscript/configeth``. When you have the configuration script that
you want you can add it to the "postscripts" attribute as mentioned above. Make
you want you can add it to the ``postscripts`` attribute as mentioned above. Make
sure your script is in the ``/install/postscripts`` directory and that it is
executable.
Note: For system p servers, if you plan to have your service node perform the
hardware control functions for its compute nodes, it is necessary that the SN
ethernet network adapters connected to the HW service VLAN be configured.
.. note:: For system p servers, if you plan to have your service node perform the
hardware control functions for its compute nodes, it is necessary that the SN
ethernet network adapters connected to the HW service VLAN be configured.
Configuring Secondary Adapters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To configure secondary adapters, see `Configuring_Secondary_Adapters
<http://localhost/fake_todo>`_
To configure secondary adapters, see :doc:`Configure Additional Network Interfaces </guides/admin-guides/manage_clusters/ppc64le/diskless/customize_image/network/cfg_network_adapter>`
@@ -37,7 +37,7 @@ The ``mlnxofed_ib_install`` is a sample script intended to assist with the insta
| | || option list. |
| | || |
| | || If nothing is specified, xCAT passes the the following |
| | || ``--without-32bit --with out-fw-update --force`` |
| | || ``--without-32bit --without-fw-update --force`` |
+---------+------------------+----------------------------------------------------------+
|``-i`` | For diskless || The image root path of the diskless image |
| | || |
@@ -6,9 +6,9 @@ In xCAT, the Operation System provisioning over network is heavily relying on th
#. Tuning MaxRequestWorkers directive
By default, httpd is configured to use ``prefork`` module for **MPM**, which has a limit of 256 simultaneous requests. If any slow httpd response issue was hit during OS provisioning, you can increase **MaxRequestWorkers** directive for greater performance.
By default, httpd is configured to use ``prefork`` module for **MPM**, which has a limit of 256 simultaneous requests. If slow httpd response observed during OS provisioning, you can increase **MaxRequestWorkers** directive for better performance.
For example, to avoid some nodes provisioning failure when rebooting all nodes in a large hierarchy stateless cluster ( one service node is serving 270 compute nodes ). It is suggested to increased the value from 256 to 1000.
For example, to avoid some nodes provisioning failure when rebooting all nodes in a large hierarchy stateless cluster ( one service node is serving 270 compute nodes ), increase the value from 256 to 1000.
On Red Hat, change (or add) these directives in
::
@@ -24,9 +24,9 @@ For example, to avoid some nodes provisioning failure when rebooting all nodes i
#. Having httpd Cache the Files It Is Serving
Note: this information was contributed by Jonathan Dye and is provided here as an example. The details may have to be changed for distro or apache version.
.. note:: this information was contributed by Jonathan Dye and is provided here as an example. The details may have to be changed for distro or apache version.
This is simplest if you set noderes.nfsserver to a separate apache server, and then you can configure it to reverse proxy and cache. For some reason mod_mem_cache doesn't seem to behave as expected, so you can use mod_disk_cache to achieve a similar result: make a tmpfs on the apache server and configure its mountpoint to be the directory that CacheRoot points to. Also tell it to ignore /install/autoinst since the caching settings are really aggressive. Do a recursive wget to warm the cache and watch the tmpfs fill up. Then do a bunch of kickstart installs. Before this, the apache server on the xcat management node may have been a bottleneck during kickstart installs. After this change, it no longer should be.
This is simplest if you set ``noderes.nfsserver`` to a separate apache server, and then you can configure it to reverse proxy and cache. For some reason ``mod_mem_cache`` doesn't seem to behave as expected, so you can use ``mod_disk_cache`` to achieve a similar result: make a ``tmpfs`` on the apache server and configure its mountpoint to be the directory that ``CacheRoot`` points to. Also tell it to ignore ``/install/autoinst`` since the caching settings are really aggressive. Do a recursive ``wget`` to warm the cache and watch the ``tmpfs`` fill up. Then do a bunch of kickstart installs. Before this, the apache server on the xcat management node may have been a bottleneck during kickstart installs. After this change, it no longer should be.
Here is the apache config file:
::
@@ -217,9 +217,9 @@ It can be used as an example script to access and control xCAT resources. From t
./xcatws-test.sh -u root -p cluster -h <FQDN of xCAT MN> -t
./xcatws-test.sh -u root -p cluster -h <FQDN of xCAT MN> -c -t
But for exploration and experimentation, you can make API calls from your browser or by using the **curl** command.
But for exploration and experimentation, you can make API calls from your browser or by using the ``curl`` command.
To make an API call from your browser, use the desired URL from this document. To simplify the test step, all the examples for the resources use 'curl -k' for unsecure http connection and use the 'username+password' to authenticate the user. ::
To make an API call from your browser, use the desired URL from this document. To simplify the test step, all the examples for the resources use ``curl -k`` for unsecure http connection and use the 'username+password' to authenticate the user. ::
curl -X GET -k 'https://myserver/xcatws/nodes?userName=xxx&userPW=xxx&pretty=1'
@@ -276,5 +276,4 @@ References
* General JSON: http://www.json.org/
* JSON wrapping: http://search.cpan.org/~makamaka/JSON-2.27/lib/JSON.pm
* Apache CGI: http://httpd.apache.org/docs/2.2/howto/cgi.html
* Perl CGI: http://perldoc.perl.org/CGI.html
+4 -4
View File
@@ -101,25 +101,25 @@ To support clone, add 'otherpkglist' and 'otherpkgdir' attributes to the image d
chdef -t osimage -o <osimage-name> otherpkglist=/opt/xcat/share/xcat/install/rh/sysclone.rhels6.x86_64.otherpkgs.pkglist
chdef -t osimage -o <osimage-name> -p otherpkgdir=/install/post/otherpkgs/rhels6.4/x86_64
updatenode <golden-cilent> -S
updatenode <golden-client> -S
* **[CentOS6.3 and x86_64]**::
chdef -t osimage -o <osimage-name> otherpkglist=/opt/xcat/share/xcat/install/rh/sysclone.rhels6.x86_64.otherpkgs.pkglist
chdef -t osimage -o <osimage-name> -p otherpkgdir=/install/post/otherpkgs/CentOS6.3/x86_64
updatenode <golden-cilent> -S
updatenode <golden-client> -S
* **[SLES11.3 and x86_64]**::
chdef -t osimage -o <osimage-name> otherpkglist=/opt/xcat/share/xcat/install/sles/sysclone.sles11.x86_64.otherpkgs.pkglist
chdef -t osimage -o <osimage-name> -p otherpkgdir=/install/post/otherpkgs/SLES11.3/x86_64
updatenode <golden-cilent> -S
updatenode <golden-client> -S
* **[RH6.3 and ppc64]**::
chdef -t osimage -o <osimage-name> otherpkglist=/opt/xcat/share/xcat/install/rh/sysclone.rhels6.ppc64.otherpkgs.pkglist
chdef -t osimage -o <osimage-name> -p otherpkgdir=/install/post/otherpkgs/rhels6.3/ppc64
updatenode <golden-cilent> -S
updatenode <golden-client> -S
*[Note]: If you install systemimager RPMs on CentOS 6.5 node by above steps, you maybe hit a failure. This is a known issue with CentOS6.5. Refer to known issue section for help.*
+1 -1
View File
@@ -59,7 +59,7 @@ author = u'IBM Corporation'
# The short X.Y version.
version = '2'
# The full version, including alpha/beta/rc tags.
release = '2.15.0'
release = '2.15.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@@ -137,9 +137,9 @@ Add links to refer other web page is a very common way in writing document, it'
* **Add an External Link**
Link to an external web page: `google <http://www.goole.com>`_: ::
Link to an external web page: `google <http://www.google.com>`_: ::
`google <http://www.goole.com>`_
`google <http://www.google.com>`_
..
@@ -38,7 +38,7 @@ The partition file must follow the partitioning syntax of the respective install
* Use yast2 autoyast in GUI or CLI mode to customize the installation options and create autoyast file
* Use yast2 clone_system to create autoyast configuration file /root/autoinst.xml to clone an existing system
* Ubuntu: `Preseed documentation <https://www.debian.org/releases/stable/i386/apbs04.html.en#preseed-partman>`_
* Ubuntu: `Preseed documentation <https://www.debian.org/releases/stable/i386/apbs04.en.html#preseed-partman>`_
* For detailed information see the files ``partman-auto-recipe.txt`` and ``partman-auto-raid-recipe.txt`` included in the debian-installer package. Both files are also available from the debian-installer source repository.
@@ -4,7 +4,7 @@ Enable kdump Over Ethernet
Overview
--------
kdump is an feature of the Linux kernel that allows the system to be booted from the context of another kernel. This second kernel reserves a small amount of memory and its only purpose is to capture the core dump in the event of a kernel crash. The ability to analyze the core dump helps to determine causes of system failures.
``kdump`` is an feature of the Linux kernel that allows the system to be booted from the context of another kernel. This second kernel reserves a small amount of memory and its only purpose is to capture the core dump in the event of a kernel crash. The ability to analyze the core dump helps to determine causes of system failures.
xCAT Interface
@@ -22,7 +22,7 @@ The following attributes of an osimage should be modified to enable ``kdump``:
Configure the ``pkglist`` file
------------------------------
The ``pkglist`` for the osimage needs to include the appropriate RPMs. The following list of RPMs are provided as a sample, always refer to the Operating System specific documentataion to ensure the required packages are there for ``kdump`` support.
The ``pkglist`` for the osimage needs to include the appropriate RPMs. The following list of RPMs are provided as a sample, always refer to the Operating System specific documentation to ensure the required packages are there for ``kdump`` support.
* **[RHELS]** ::
@@ -53,7 +53,7 @@ Run ``packimage`` to update the diskless image with the changes.
The ``postinstall`` file
------------------------
The kdump will create a new initrd which used in the dumping stage. The ``/tmp`` or ``/var/tmp`` directory will be used as the temporary directory. These 2 directory only are allocated 10M space by default. You need to enlarge it to 200M. Modify the postinstall file to increase ``/tmp`` space.
The ``kdump`` will create a new initrd which is used in the dumping stage. The ``/tmp`` or ``/var/tmp`` directory will be used as the temporary directory. These two directories are only allocated 10M space by default. You need to enlarge it to 200M. Modify the postinstall file to increase ``/tmp`` space.
* **[RHELS]** ::
@@ -70,7 +70,7 @@ The kdump will create a new initrd which used in the dumping stage. The ``/tmp``
The ``dump`` attribute
----------------------
To support kernel dumps, the ``dump`` attribute **must** be set on the osimage definition. If not set, kdump service will not be enabled. The ``dump`` attribute defines the NFS remote path where the crash information is to be stored.
To support kernel dumps, the ``dump`` attribute **must** be set in the osimage definition. If not set, ``kdump`` service will not be enabled. The ``dump`` attribute defines the NFS remote path where the crash information is to be stored.
Use the ``chdef`` command to set a value of the ``dump`` attribute: ::
@@ -80,7 +80,7 @@ If the NFS server is the Service Node or Management Node, the server can be left
chdef -t osimage <image name> dump=nfs:///<kdump_path>
**Note:** Only NFS is currently supported as a storage location. Make sure the NFS remote path(``nfs://<nfs_server_ip>/<kdump_path>``) is exported and it is read-writeable to the node where kdump service is enabled.
.. note:: Only NFS is currently supported as a storage location. Make sure the NFS remote path (``nfs://<nfs_server_ip>/<kdump_path>``) is exported and it is read-writeable on the node where ``kdump`` service is enabled.
The ``crashkernelsize`` attribute
@@ -102,18 +102,18 @@ For setting specific sizes, use the following example:
chdef -t osimage <image name> crashkernelsize=<size>@32M
**Notes**: the value of the ``crashkernelsize`` depends on the total physical memory size on the machine. For more about size, refer to `Appedix`_
.. note:: The value of the ``crashkernelsize`` depends on the total physical memory size on the machine. For more about size, refer to `Appedix`_
If kdump start error like this: ::
If ``kdump`` start displays error like this: ::
Your running kernel is using more than 70% of the amount of space you reserved for kdump, you should consider increasing your crashkernel
The ``crashkernelsize`` is not large enough, you should change the ``crashkernelsize`` larger until the error message disappear.
The ``crashkernelsize`` is not large enough, you should increase the ``crashkernelsize`` until the error message disappears.
The ``enablekdump`` postscript
------------------------------
xCAT provides a postscript ``enablekdump`` that can be added to the Nodes to automatically start the ``kdump`` service when the node boots. Add to the nodes using the following command: ::
xCAT provides a postscript ``enablekdump`` that can be added to the node definition to automatically start the ``kdump`` service when the node boots. ::
chdef -t node <node range> -p postscripts=enablekdump
@@ -147,13 +147,13 @@ Once the system has returned from recovering the crash, you can analyze the kern
#. Locate the recent vmcore dump file.
#. Locate the kernel file for the crash server. The kernel is under ``/tftpboot/xcat/netboot/<OS name="">/<ARCH>/<profile>/kernel`` on the managenent node.
#. Locate the kernel file for the crash server. The kernel is under ``/tftpboot/xcat/netboot/<OS name="">/<ARCH>/<profile>/kernel`` on the management node.
#. Once you have located a vmcore dump file and kernel file, call ``crash``: ::
crash <vmcore_dump_file> <kernel_file>
**Note:** If ``crash`` cannot find any files, make sure you have the ``kernel-debuginfo`` package installed.
.. note:: If ``crash`` cannot find any files, make sure you have the ``kernel-debuginfo`` package installed.
Appedix
-------
@@ -170,4 +170,3 @@ Appedix
* http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/s1-kdump-crash.htmlRHELdocument
* http://www.novell.com/support/kb/doc.php?id=3374462SLESdocument
@@ -28,7 +28,7 @@ Define Adapters in the nics table
#. Data NIC ``eth1`` is not install NIC, configure ``eth1`` into ``nics`` table ::
chdef cn1 nicips.eth1="13.1.89.7" nicnetworks.eth1="net13" nictypes.eth1="Ethernet" nichostnamesuffixes.eth1=-eth2
chdef cn1 nicips.eth1="13.1.89.7" nicnetworks.eth1="net13" nictypes.eth1="Ethernet" nichostnamesuffixes.eth1=-eth1
Update /etc/hosts
~~~~~~~~~~~~~~~~~
@@ -66,7 +66,7 @@ Configure adapters with static IPs
updatenode cn1 -P "confignetwork"
**Notes:** Option "-s" writes the install NIC's information into configuration file for persistence. All other NIC's data defined in ``nics`` table will be written also. Without option "-s", ``confignetwork`` only configures all NIC's data defined in ``nics`` table.
.. note:: Option ``-s`` writes the install NIC's information into configuration file for persistence. All other NIC's data defined in ``nics`` table will be written also. Without option ``-s``, ``confignetwork`` only configures all NIC's data defined in ``nics`` table.
Check result
~~~~~~~~~~~~
@@ -19,3 +19,7 @@ Use ``nicextraparams`` to customize attributes in NIC configuration file. For ex
HWADDR=42:f5:0a:05:6a:09
MTU=1456
#. Example to add `nicextraparams` to `bond` interface ::
chdef cn1 nicextraparams.bond0='BONDING_OPTS="mode=active-backup;abc=100" MTU=6400 XYZ="4800" IOP="mode=1 phase=2"'
@@ -31,7 +31,7 @@ Examples for xdsh
- To run the ``ps`` command on node targets node1 and run the remote command with the ``-v`` and ``-t`` flag, enter: ::
xdsh node1,node2 -o"-v -t" ps =item *
xdsh node1,node2 -o "-v -t" ps
- To execute the commands contained in myfile in the XCAT context on several node targets, with a fanout of 1, enter: ::
@@ -31,7 +31,7 @@ Partitioning disk file(For Ubuntu only)
.. include:: ../../../common/deployment/cfg_partition.rst
:start-after: BEGIN_Partition_Disk_File_ubuntu_only
:end-before: END_Partition_Disk_File_ubuntu_only
Additional preseed configuration file(For Ubuntu only)
``````````````````````````````````````````````````````
.. include:: ../../../common/deployment/cfg_partition.rst
@@ -64,14 +64,14 @@ Associate partition script with osimage
:start-after: BEGIN_Partition_Definition_Script_Associate_partition_script_with_osimage_common
:end-before: END_Partition_Definition_Script_Associate_partition_script_with_osimage_common
Partitioning disk script(For Ubuntu only)
`````````````````````````````````````````
Partitioning disk script (For Ubuntu only)
``````````````````````````````````````````
.. include:: ../../../common/deployment/cfg_partition.rst
:start-after: BEGIN_Partition_Disk_Script_ubuntu_only
:end-before: END_Partition_Disk_Script_ubuntu_only
Additional preseed configuration script(For Ubuntu only)
````````````````````````````````````````````````````````
Additional preseed configuration script (For Ubuntu only)
`````````````````````````````````````````````````````````
.. include:: ../../../common/deployment/cfg_partition.rst
:start-after: BEGIN_Additional_preseed_configuration_script_ubuntu_only
:end-before: END_Additional_preseed_configuration_script_ubuntu_only
@@ -3,7 +3,7 @@
See :doc:`reventlog manpage </guides/admin-guides/references/man1/reventlog.1>` for more information.
The ``reventlog`` command can be used to display and clear event log information on the service processor, or Baseboard Management Controller (BMC), of a physical machine.
The ``reventlog`` command can be used to display and clear event log information on the service processor, or Baseboard Management Controller (BMC), of a physical machine. OpenBMC based servers need the `IBM OpenBMC tool <http://www.ibm.com/support/customercare/sas/f/lopdiags/scaleOutLCdebugtool.html#OpenBMC>`_ to obtain more detailed logging messages.
For example, to display all event log entries for node ``cn5``: ::
@@ -23,7 +23,7 @@ SYNOPSIS
\ **bmcdiscover**\ [\ **-v | -**\ **-version**\ ]
\ **bmcdiscover**\ [\ **-**\ **-sn**\ \ *SN_nodename*\ ] [\ **-s**\ \ *scan_method*\ ] [\ **-u**\ \ *bmc_user*\ ] [\ **-p**\ \ *bmc_passwd*\ ] [\ **-z**\ ] [\ **-w**\ ] \ **-**\ **-range**\ \ *ip_ranges*\
\ **bmcdiscover**\ \ **-**\ **-range**\ \ *ip_ranges*\ [\ **-**\ **-sn**\ \ *SN_nodename*\ ] [\ **-s**\ \ *scan_method*\ ] [\ **-u**\ \ *bmc_user*\ ] [\ **-p**\ \ *bmc_passwd*\ ] [\ **-z**\ ] [\ **-w**\ ]
***********
@@ -35,9 +35,9 @@ The \ **bmcdiscover**\ command will discover Baseboard Management Controllers (
The command uses \ **nmap**\ to scan active nodes over a specified IP range. The IP range format should be a format that is acceptable by \ **nmap**\ .
The \ **bmcdiscover**\ command can also obtain some information about the BMC. (Check username/password, IP address source, DHCP/static configuration)
\ **Note:**\ The scan method currently supported is \ **nmap**\ .
Note: The scan method currently support is \ **nmap**\ .
\ **Note:**\ Starting on January 1, 2020, some newly shipped systems will require the default BMC password to be changed before they can be managed by xCAT. \ **bmcdiscover**\ will not be able to discover such systems. Run \ */opt/xcat/share/xcat/scripts/BMC_change_password.sh*\ script to change the default password for BMCs in specified range, then rerun \ **bmcdiscover**\ with \ **-p "new bmc password"**\ flag to discover systems with the changed password.
*******
@@ -48,13 +48,13 @@ OPTIONS
\ **-**\ **-range**\
Specify one or more IP ranges acceptable to \ **nmap**\ . IP range can be hostnames, IP addresses, networks, etc. A single IP address (10.1.2.3), several IPs with commas (10.1.2.3,10.1.2.10), Ip range with "-" (10.1.2.0-100) or an IP range (10.1.2.0/24) can be specified. If the range is very large, the \ **bmcdiscover**\ command may take a long time to return.
Specify one or more IP ranges acceptable to \ **nmap**\ . IP range can be hostnames, IP addresses, networks, etc. A single IP address (10.1.2.3), several IPs with commas (10.1.2.3,10.1.2.10), IP range with "-" (10.1.2.0-100) or an IP range (10.1.2.0/24) can be specified. If the range is very large, the \ **bmcdiscover**\ command may take a long time to return.
\ **-**\ **-sn**\
Specify one or more service nodes on which bmcdiscover will run. In hierarchical cluster, the MN may not be able to access the BMC of CN directly, but SN can. With this option, \ **bmcdiscover**\ will be dispatched to the specified SNs. Then, the nodename of the service node that \ **bmcdiscover**\ is running on will be set to the 'servicenode' attribute of the discovered BMC node.
Specify one or more service nodes on which \ **bmcdiscover**\ will run. In hierarchical cluster, the MN may not be able to access the BMC of CN directly, but SN can. In that case, \ **bmcdiscover**\ will be dispatched to the specified SNs. Then, the nodename of the service node that \ **bmcdiscover**\ is running on will be set to the 'servicenode' attribute of the discovered BMC node.
@@ -76,12 +76,6 @@ OPTIONS
\ **-i|-**\ **-bmcip**\
BMC IP address.
\ **-u|-**\ **-bmcuser**\
BMC user name.
@@ -122,7 +116,7 @@ EXAMPLES
********
1. To get all responding BMCs from IP range "10.4.23.100-254" and 50.3.15.1-2":
1. To get all responding BMCs from IP range "10.4.23.100-254" and "50.3.15.1-2":
.. code-block:: perl
@@ -29,6 +29,16 @@ DESCRIPTION
***********
\ **Note:**\ The command \ **nodechmac**\ has been deprecated. To change the MAC address of the node:
.. code-block:: perl
makedhcp -d <nodename>
chdef -t node -o <nodename> mac=<new-mac>
makedhcp <nodename>
The \ **nodechmac**\ command changes the MAC address for provisioned node's network interface.
You can use this command to keep an existing node configuration. For example, if an existing node has hardware problems, the replacement node can use the old configurations. By using the nodechmac command, the node name and network settings of the old node can be used by the new node.
@@ -31,7 +31,7 @@ DESCRIPTION
The \ **nodepurge**\ automatically removes all nodes from the database and any related configurations used by the node.
After the nodes are removed, the configuration files related to these nodes are automatically updated, including the following files: /etc/hosts, DNS, DHCP. Any kits that are used by the nodes are triggered to automatically update kit configuration and services.
After the nodes are removed, the configuration files related to these nodes are automatically updated, including the following files: \ */etc/hosts*\ , DNS, DHCP. Any kits that are used by the nodes are triggered to automatically update kit configuration and services. Any related configuration files from \ */install/autoinst*\ are also removed.
*******
@@ -39,17 +39,11 @@ OPTIONS
*******
\ **-h|-**\ **-help**\
\ **-h|-**\ **-help**\ Display usage message.
Display usage message.
\ **-v|-**\ **-version**\ Command Version
\ **-v|-**\ **-version**\
Command Version
\ *noderange*\
The nodes to be removed.
\ *noderange*\ The nodes to be removed.
************
@@ -67,7 +61,7 @@ EXAMPLES
********
To remove nodes compute-000 and compute-001, use the following command:
To remove nodes compute-000 and compute-001:
.. code-block:: perl
@@ -45,7 +45,7 @@ DESCRIPTION
***********
The rmvm command removes the partitions specified in noderange. If noderange is an CEC, all the partitions associated with that CEC will be removed. Note that removed partitions are automatically removed from the xCAT database. For IVM-managed systems, care must be taken to not remove the VIOS partition, or all the associated partitions will be removed as well.
The \ **rmvm**\ command removes the partitions specified in \ *noderange*\ . If \ *noderange*\ is an CEC, all the partitions associated with that CEC will be removed. Note that removed partitions are automatically removed from the xCAT database. For IVM-managed systems, care must be taken to not remove the VIOS partition, or all the associated partitions will be removed as well.
For DFM-managed (short For Direct FSP Management mode) normal power machines, only partitions can be removed. No options is needed.
@@ -65,7 +65,11 @@ OPTIONS
\ **-**\ **-service**\ Remove the service partitions of the specified CECs.
\ **-p**\ KVM: Purge the existence of the VM from persistent storage. This will erase all storage related to the VM in addition to removing it from the active virtualization configuration. PPC: Remove the specified partition on normal power machine.
\ **-p**\
KVM: Purge the existence of the VM from persistent storage. This will erase all storage related to the VM in addition to removing it from the active virtualization configuration. Storage devices of "raw" or "block" type are not removed.
PPC: Remove the specified partition on normal power machine.
\ **-f**\ Force remove the VM, even if the VM appears to be online. This will bring down a live VM if requested.
@@ -83,6 +83,10 @@ OpenBMC specific:
\ **rspconfig**\ \ *noderange*\ \ **sshcfg**\
\ **rspconfig**\ \ *noderange*\ \ **thermalmode**\
\ **rspconfig**\ \ *noderange*\ \ **thermalmode={default|custom|heavy_io|max_base_fan_floor}**\
\ **rspconfig**\ \ *noderange*\ \ **timesyncmethod**\
\ **rspconfig**\ \ *noderange*\ \ **timesyncmethod={manual|ntp}**\
@@ -521,6 +525,12 @@ OPTIONS
\ **thermalmode**\
Display or set the thermal mode of the system to a setting, depending on your system, adapter, and cable type. After a factory reset of the system, the thermal mode setting is lost and must be reapplied. To choose the correct setting for your system, see https://www.ibm.com/support/knowledgecenter/POWER9/p9ei3/p9ei3_thermal_mode.htm [OpenBMC]
\ **timesyncmethod**\
Set the method for time synchronization on the BMC. [OpenBMC]
@@ -21,21 +21,15 @@ SYNOPSIS
\ **xcattest**\ [\ **-?|-h**\ ]
\ **xcattest**\ [\ **-f**\ \ *configure file*\ ] [\ **-b**\ \ *case bundle list*\ ]
\ **xcattest**\ [\ **-f**\ \ *configure file*\ [\ **:System**\ ]] [\ **-l**\ [{\ **caselist|caseinfo|casenum**\ }]] [\ **-r**\ ] [\ **-q**\ ] [\ **-b**\ \ *testcase bundle list*\ ]
\ **xcattest**\ [\ **-f**\ \ *configure file*\ ] [\ **-t**\ \ *case list*\ ]
\ **xcattest**\ [\ **-f**\ \ *configure file*\ [\ **:System**\ ]] [\ **-l**\ [{\ **caselist|caseinfo|casenum**\ }]] [\ **-r**\ ] [\ **-q**\ ] [\ **-t**\ \ *testcase name list*\ ]
\ **xcattest**\ [\ **-f**\ \ *configure file*\ ] [\ **-c**\ \ *cmd list*\ ]
\ **xcattest**\ [\ **-f**\ \ *configure file*\ [\ **:System**\ ]] [\ **-l**\ [{\ **caselist|caseinfo|casenum**\ }]] [\ **-r**\ ] [\ **-q**\ ] [\ **-c**\ \ *testcase command list*\ ]
\ **xcattest**\ [\ **-b**\ \ *case bundle list*\ ] [\ **-l**\ ]
\ **xcattest**\ [\ **-f**\ \ *configure file*\ [\ **:System**\ ]] [\ **-l**\ [{\ **caselist|caseinfo|casenum**\ }]] [\ **-r**\ ] [\ **-q**\ ] [\ **-s**\ \ *testcase filter expression*\ ]
\ **xcattest**\ [\ **-t**\ \ *case list*\ ] [\ **-l**\ ]
\ **xcattest**\ [\ **-c**\ \ *cmd list*\ ] [\ **-l**\ ]
\ **xcattest**\ [\ **-s**\ \ **command**\ ]
\ **xcattest**\ [\ **-s**\ \ **bundle**\ ]
\ **xcattest**\ [\ **-f**\ \ *configure file*\ [\ **:System**\ ]] \ **-l bundleinfo**\
***********
@@ -43,9 +37,9 @@ DESCRIPTION
***********
The xcattest command runs test cases to verify the xCAT functions, it can be used when you want to verify the xCAT functions for whatever reason, for example, to ensure the code changes you made do not break the existing commands; to run acceptance test for new build you got; to verify the xCAT snapshot build or development build before putting it onto your production system. The xcattest command is part of the xCAT package xCAT-test.
The \ **xcattest**\ command runs test cases to verify the xCAT functions. It can be used to ensure the code changes you made do not break the existing commands; to run acceptance test for new build you got; to verify the xCAT snapshot build or development build before putting it onto your production system. The \ **xcattest**\ command is part of the xCAT package \ *xCAT-test*\ .
The root directory for the xCAT-test package is /opt/xcat/share/xcat/tools/autotest/. All test cases are in the sub directory \ *testcase*\ , indexed by the xCAT command, you can add your own test cases according to the test cases format below. The subdirectory \ *bundle*\ contains all the test cases bundles definition files, you can customize or create any test cases bundle file as required. The testing result information will be written into the subdirectory \ *result*\ , the timestamps are used as the postfixes for all the result files. xCAT-test package ships two configuration files template \ *aix.conf.template*\ and \ *linux.conf.template*\ for AIX and Linux environment, you can use the template files as the start point of making your own configuration file.
The root directory for the \ *xCAT-test*\ package is \ */opt/xcat/share/xcat/tools/autotest/*\ . All test cases are in the sub directory \ *testcase*\ , indexed by the xCAT command, you can add your own test cases according to the test cases format below. The subdirectory \ *bundle*\ contains all the test cases bundle definition files, you can customize or create any test cases bundle file as required. The testing result information will be written into the subdirectory \ *result*\ , the timestamps are used as the postfixes for all the result files. \ *xCAT-test*\ package ships two configuration file templates: \ *aix.conf.template*\ and \ *linux.conf.template*\ for AIX and Linux environment, you can use the template files as the starting point of making your own configuration file.
*******
@@ -62,37 +56,49 @@ OPTIONS
\ **-f**\ \ *configure file*\
Specifies the configuration file with full-path. xCAT supports an example config file: /opt/xcat/share/xcat/tools/autotest/linux.conf.template
Specifies the configuration file with full-path. If not specified, an example config file: \ */opt/xcat/share/xcat/tools/autotest/linux.conf.template*\ is used by default. If \ **System**\ tag is used, only \ *[System]*\ section in the configuration file will be used. If \ **System**\ is not used, all other sections of the configuration file will be used, like \ *[Table]*\ , \ *[Object]*\ , etc.
\ **-b**\ \ *case bundle list*\
\ **-b**\ \ *testcase bundle list*\
Comma separated list of test cases bundle files, each test cases bundle can contain multiple lines and each line for one test case name. The bundle files should be listed in: /opt/xcat/share/xcat/tools/autotest/bundle.
Comma separated list of test case bundle files, each test cases bundle can contain multiple lines and each line for one test case name. The bundle files should be placed in \ */opt/xcat/share/xcat/tools/autotest/bundle*\ .
\ **-t**\ \ *cases list*\
\ **-t**\ \ *testcase name list*\
Comma separated list of test cases that will be run.
Comma separated list of test cases to run.
\ **-c**\ \ *cmd list*\
\ **-c**\ \ *testcase command list*\
Comma separated list of commands which will be tested, i.e., all the test cases under the command sub directory will be run.
\ **-l**\
\ **-s**\ \ *filter expression*\
Display the test cases names specified by the flag -b, -t or -c.
Run testcases with testcase \ **label**\ attribute matching \ *filter expression*\ . Operators \ **|**\ , \ **+**\ , and \ **-**\ can be used. Expresson \ *"label1+label2-label3|label4|label5"*\ will match testcases that have \ **label**\ attribute matching "label1" and "label2", but not "label3" or testcases that have \ **label**\ attribute matching "label4" or testcases that have \ **label**\ attribute matching "label5"
\ **-s**\
\ **-l {caselist|caseinfo|casenum|bundleinfo}**\
Display the bundle files and command with value: bundle or command.
Display rather than run the test cases. The \ **caselist**\ is a default and will display a list of testcase names. \ **caseinfo**\ will display testcase names and descriptions. \ **casenum**\ will display the number of testcases. \ **bundleinfo**\ will display testcase bundle names and descriptions.
\ **-r**\
Back up the original environment settings before running test, and restore them after running test.
\ **-q**\
Do not print output of test cases to STDOUT, instead, log output to \ */opt/xcat/share/xcat/tools/autotest/result*\ .
@@ -127,6 +133,8 @@ The xCAT-test test cases are in flat text format, the testing framework will par
arch:ppc/x86
#optional, environment requirements
hcp:hmc/mm/bmc/fsp
#optional, label
label:label1
#required, command need to run
cmd:comand
#optional, check return code of last executed command
@@ -185,7 +193,7 @@ EXAMPLES
4.
To add a new case to test chvm. In the example, we assume that the min_mem should not be equal to 16 in the lpar profile of computenode. The case name is chvm_custom. It create a test lpar named testnode firstly, that change the min_mem of the lpar to 16 using chvm, then check if min_mem have changed correctly. At last, the testnode be remove to ensure no garbage produced in the cases.
To add a new case to test \ **chvm**\ . In the example, we assume that the min_mem should not be equal to 16 in the lpar profile of computenode. The case name is chvm_custom. It create a test lpar named testnode firstly, that change the min_mem of the lpar to 16 using chvm, then check if min_mem have changed correctly. At last, the testnode be remove to ensure no garbage produced in the cases.
.. code-block:: perl
@@ -211,6 +219,30 @@ EXAMPLES
5.
To run all test cases that have \ *label:kdump*\ or \ *label:parallel_cmds*\ :
.. code-block:: perl
xcattest -s kdump|parallel_cmds
6.
To display all bundles and their descriptions:
.. code-block:: perl
xcattest -l bundleinfo
****************
INLINE FUNCTIONS
@@ -219,19 +251,32 @@ INLINE FUNCTIONS
The xCAT-test testing framework provides some inline functions. The inline functions can be called in test cases as __FUNCTIONNAME(PARAMTERLIST)__ to get some necessary attributes defined in the configuration file. The inline functions can be used in \ *cmd*\ section and the \ *check:output*\ section.
1. \ **GETNODEATTR(nodename, attribute)**\ To get the value of specified node's attribute
2. \ **INC(digit)**\ To get value of digit+1.
For example, to run rscan command against the hardware control point of compute node specified in the configuration file:
1.
\ **GETNODEATTR(nodename, attribute)**\ To get the value of specified node's attribute
.. code-block:: perl
rscan __GETNODEATTR($$CN, hcp)__ -z
2.
\ **INC(digit)**\ To get value of digit+1.
For example, to run \ **rscan**\ command against the hardware control point of compute node specified in the configuration file:
.. code-block:: perl
rscan __GETNODEATTR($$CN, hcp)__ -z
3. \ **GETTABLEVALUE(keyname, key, colname, table)**\ To get the value of column where keyname == key in specified table.
3.
\ **GETTABLEVALUE(keyname, key, colname, table)**\ To get the value of column where keyname == key in specified table.
*****
@@ -121,6 +121,8 @@ nics Attributes:
<nic1>!<param1=value1 param2=value2>,<nic2>!<param3=value3>, for example, eth0!MTU=1500,ib0!MTU=65520 CONNECTED_MODE=yes.
If multiple ip addresses are associated with each NIC:
<nic1>!<param1=value1 param2=value2>|<param3=value3>,<nic2>!<param4=value4 param5=value5>|<param6=value6>, for example, eth0!MTU=1500|MTU=1460,ib0!MTU=65520 CONNECTED_MODE=yes.
The semicolon separator is needed if there are multiple values for extra parameters:
bond0!BONDING_OPTS=lacp_rate=1;miimon=100;mode=802.3ad
The xCAT object definition commands support to use nicextraparams.<nicname> as the sub attributes.
@@ -191,7 +191,7 @@ vm Attributes:
\ **othersettings**\
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu mode use either:'cpumode:host-passthrough' or 'cpumode:host-model'. This improves performance on x86 VMs significantly. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
@@ -277,7 +277,7 @@ group Attributes:
\ **dockerflag**\ (vm.othersettings)
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu mode use either:'cpumode:host-passthrough' or 'cpumode:host-model'. This improves performance on x86 VMs significantly. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
@@ -629,6 +629,8 @@ group Attributes:
<nic1>!<param1=value1 param2=value2>,<nic2>!<param3=value3>, for example, eth0!MTU=1500,ib0!MTU=65520 CONNECTED_MODE=yes.
If multiple ip addresses are associated with each NIC:
<nic1>!<param1=value1 param2=value2>|<param3=value3>,<nic2>!<param4=value4 param5=value5>|<param6=value6>, for example, eth0!MTU=1500|MTU=1460,ib0!MTU=65520 CONNECTED_MODE=yes.
The semicolon separator is needed if there are multiple values for extra parameters:
bond0!BONDING_OPTS=lacp_rate=1;miimon=100;mode=802.3ad
The xCAT object definition commands support to use nicextraparams.<nicname> as the sub attributes.
@@ -1328,7 +1330,7 @@ group Attributes:
\ **vmothersetting**\ (vm.othersettings)
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu mode use either:'cpumode:host-passthrough' or 'cpumode:host-model'. This improves performance on x86 VMs significantly. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
@@ -289,7 +289,7 @@ node Attributes:
\ **dockerflag**\ (vm.othersettings)
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu mode use either:'cpumode:host-passthrough' or 'cpumode:host-model'. This improves performance on x86 VMs significantly. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
@@ -629,6 +629,8 @@ node Attributes:
<nic1>!<param1=value1 param2=value2>,<nic2>!<param3=value3>, for example, eth0!MTU=1500,ib0!MTU=65520 CONNECTED_MODE=yes.
If multiple ip addresses are associated with each NIC:
<nic1>!<param1=value1 param2=value2>|<param3=value3>,<nic2>!<param4=value4 param5=value5>|<param6=value6>, for example, eth0!MTU=1500|MTU=1460,ib0!MTU=65520 CONNECTED_MODE=yes.
The semicolon separator is needed if there are multiple values for extra parameters:
bond0!BONDING_OPTS=lacp_rate=1;miimon=100;mode=802.3ad
The xCAT object definition commands support to use nicextraparams.<nicname> as the sub attributes.
@@ -1364,7 +1366,7 @@ node Attributes:
\ **vmothersetting**\ (vm.othersettings)
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu mode use either:'cpumode:host-passthrough' or 'cpumode:host-model'. This improves performance on x86 VMs significantly. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
+4 -1
View File
@@ -1,2 +1,5 @@
Version,Release Date,New OS Supported,Release Notes
2.15.0,2019-07-31,,`2.15.0 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.15_Release_Notes>`_
2.15.1,2020-03-06,"RHEL 8.1,RHEL 7.7,SLES 15.0",`2.15.1 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.15.1_Release_Notes>`_
2.15.0,2019-11-11,"RHEL 8.0",`2.15.0 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.15_Release_Notes>`_
1 Version Release Date New OS Supported Release Notes
2 2.15.0 2.15.1 2019-07-31 2020-03-06 RHEL 8.1,RHEL 7.7,SLES 15.0 `2.15.0 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.15_Release_Notes>`_ `2.15.1 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.15.1_Release_Notes>`_
3 2.15.0 2019-11-11 RHEL 8.0 `2.15.0 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.15_Release_Notes>`_
4
5
+3 -1
View File
@@ -226,7 +226,7 @@ qq{ link,ro - The file is readonly, and will be placed in tmpfs on the booted no
'vncport' => 'Tracks the current VNC display port (currently not meant to be set',
'textconsole' => 'Tracks the Psuedo-TTY that maps to the serial port or console of a VM',
'powerstate' => "This flag is used by xCAT to track the last known power state of the VM.",
'othersettings' => "This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:\"vcpupin:'0-15,^8'\",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running B<virsh nodedev-list> on the host.",
'othersettings' => "This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu mode use either:'cpumode:host-passthrough' or 'cpumode:host-model'. This improves performance on x86 VMs significantly. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:\"vcpupin:'0-15,^8'\",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running B<virsh nodedev-list> on the host.",
'guestostype' => "This allows administrator to specify an identifier for OS to pass through to virtualization stack. Normally this should be ignored as xCAT will translate from nodetype.os rather than requiring this field be used\n",
'beacon' => "This flag is used by xCAT to track the state of the identify LED with respect to the VM.",
'datacenter' => "Optionally specify a datacenter for the VM to exist in (only applicable to VMWare)",
@@ -1626,6 +1626,8 @@ zvmivp => {
<nic1>!<param1=value1 param2=value2>,<nic2>!<param3=value3>, for example, eth0!MTU=1500,ib0!MTU=65520 CONNECTED_MODE=yes.
If multiple ip addresses are associated with each NIC:
<nic1>!<param1=value1 param2=value2>|<param3=value3>,<nic2>!<param4=value4 param5=value5>|<param6=value6>, for example, eth0!MTU=1500|MTU=1460,ib0!MTU=65520 CONNECTED_MODE=yes.
The semicolon separator is needed if there are multiple values for extra parameters:
bond0!BONDING_OPTS=lacp_rate=1;miimon=100;mode=802.3ad
The xCAT object definition commands support to use nicextraparams.<nicname> as the sub attributes.',
nicdevices => 'Comma-separated list of NIC device per NIC, multiple ethernet devices can be bonded as bond device, these ethernet devices are separated by | . <nic1>!<dev1>|<dev3>,<nic2>!<dev2>, e.g. bond0!eth0|eth2,br0!bond0. The xCAT object definition commands support to use nicdevices.<nicname> as the sub attributes.',
nicsadapter => 'Comma-separated list of NIC information collected by getadapter. <nic1>!<param1=value1 param2=value2>,<nic2>!<param4=value4 param5=value5>, for example, enP3p3s0f1!mac=98:be:94:59:fa:cd linkstate=DOWN,enP3p3s0f2!mac=98:be:94:59:fa:ce candidatename=enP3p3s0f2/enx98be9459face',
+2
View File
@@ -193,6 +193,8 @@ my %usage = (
rspconfig <noderange> timesyncmethod={ntp|manual}
rspconfig <noderange> bootmode
rspconfig <noderange> bootmode={safe|regular|setup}
rspconfig <noderange> thermalmode
rspconfig <noderange> thermalmode={default|custom|heavy_io|max_base_fan_floor}
rspconfig <noderange> autoreboot
rspconfig <noderange> autoreboot={0|1}
",
+2
View File
@@ -14,6 +14,8 @@ require Exporter;
use strict;
our %distnames = (
"1578087695.538488" => "centos8.1", #x86_64
"1578087695.537220" => "centos8.1", #ppc64le
"1480943823.812754" => "centos7.3", #x86_64
"1450147276.351714" => "centos7.2", #ppc64le
"1449699925.561114" => "centos7.2", #x86_64
+39 -18
View File
@@ -888,23 +888,25 @@ sub initmysqldb
}
} # end AIX only
#on debian/ubuntu should comment the bind-adress line in my.cnf
#bind-adress line in my.cnf should comment out
#on Ubuntu16.04, the bind-address line is in the mariadb.conf.d/50-server.cnf
if ($::debianflag) {
my $bind_file;
if (-e "/etc/mysql/mariadb.conf.d/50-server.cnf")
{
$bind_file = "/etc/mysql/mariadb.conf.d/50-server.cnf";
} else {
$bind_file = "/etc/mysql/my.cnf";
}
$cmd = "sed 's/\\(^\\s*bind.*\\)/#\\1/' $bind_file > /tmp/my.cnf; mv -f /tmp/my.cnf $bind_file;chmod 644 $bind_file";
xCAT::Utils->runcmd($cmd, 0);
if ($::RUNCMD_RC != 0)
{
xCAT::MsgUtils->message("E", " comment the bind-address line in $bind_file failed: $cmd.");
exit(1);
}
#on SLE15, the bind-address line is in the /etc/my.cnf
my $bind_file;
if (-e "/etc/mysql/mariadb.conf.d/50-server.cnf")
{
$bind_file = "/etc/mysql/mariadb.conf.d/50-server.cnf";
} elsif (-e "/etc/mysql/my.cnf")
{
$bind_file = "/etc/mysql/my.cnf";
} else {
$bind_file = "/etc/my.cnf";
}
$cmd = "sed 's/^bind/#&/' $bind_file > /tmp/my.cnf; mv -f /tmp/my.cnf $bind_file;chmod 644 $bind_file";
xCAT::Utils->runcmd($cmd, 0);
if ($::RUNCMD_RC != 0)
{
xCAT::MsgUtils->message("E", " comment the bind-address line in $bind_file failed: $cmd.");
exit(1);
}
# Create the MySQL data directory and initialize the grant tables
@@ -926,6 +928,15 @@ sub initmysqldb
}
$cmd = "$sqlcmd --user=mysql";
#on rhels7.7, /usr/bin/mysql_install_db requires /usr/libexec/resolveip,
#but it's available at the /usr/bin/resolveip
if ($::linuxos == "rhels7.7") {
my $resolveip="/usr/libexec/resolveip";
if (!(-x ($resolveip))) {
my $linkcmd="ln -s /usr/bin/resolveip $resolveip";
xCAT::Utils->runcmd($linkcmd, 0);
}
}
}
xCAT::Utils->runcmd($cmd, 0);
if ($::RUNCMD_RC != 0)
@@ -971,7 +982,7 @@ sub mysqlstart
else
{
if ($::MariaDB == 1) { # running MariaDB
if ($::linuxos =~ /rh.*/) {
if ( ($::linuxos =~ /rh.*/) || ($::linuxos =~ /sles15.*/) ) {
$ret = xCAT::Utils->startservice("mariadb");
} else { # sles
$ret = xCAT::Utils->startservice("mysql");
@@ -1084,7 +1095,7 @@ sub mysqlreboot
{
if ($::MariaDB == 1) { # MariaDB not MySQL
if ($::linuxos =~ /rh.*/) {
if ( ($::linuxos =~ /rh.*/) || ($::linuxos =~ /sles15.*/) ){
$cmd = "chkconfig mariadb on";
} else { #sles
$cmd = "chkconfig mysql on";
@@ -1244,6 +1255,14 @@ sub setupxcatdb
$grantall_localhost .= "\'";
$grantall_localhost .= " IDENTIFIED BY \'$::adminpassword\';\r";
#GRAND root to host account
my $grantroot = "";
$grantroot = "GRANT ALL on xcatdb.* TO root@";
$grantroot .= "\'";
$grantroot .= "$::MN";
$grantroot .= "\'";
$grantroot .= " IDENTIFIED BY \'$::rootpassword\';\r";
#
# -re $pwd_prompt
# Enter the password for root
@@ -1312,6 +1331,8 @@ sub setupxcatdb
$mysql->clear_accum();
$mysql->send("$grantall_localhost");
$mysql->clear_accum();
$mysql->send("$grantroot");
$mysql->clear_accum();
$mysql->send("exit;\r");
}
+7 -10
View File
@@ -8,7 +8,7 @@ B<bmcdiscover> [B<-?>|B<-h>|B<--help>]
B<bmcdiscover> [B<-v>|B<--version>]
B<bmcdiscover> [B<--sn> I<SN_nodename>] [B<-s> I<scan_method>] [B<-u> I<bmc_user>] [B<-p> I<bmc_passwd>] [B<-z>] [B<-w>] B<--range> I<ip_ranges>
B<bmcdiscover> B<--range> I<ip_ranges> [B<--sn> I<SN_nodename>] [B<-s> I<scan_method>] [B<-u> I<bmc_user>] [B<-p> I<bmc_passwd>] [B<-z>] [B<-w>]
=head1 DESCRIPTION
@@ -17,9 +17,10 @@ The B<bmcdiscover> command will discover Baseboard Management Controllers (BMCs)
The command uses B<nmap> to scan active nodes over a specified IP range. The IP range format should be a format that is acceptable by B<nmap>.
The B<bmcdiscover> command can also obtain some information about the BMC. (Check username/password, IP address source, DHCP/static configuration)
B<Note:> The scan method currently supported is B<nmap>.
Note: The scan method currently support is B<nmap>.
B<Note:> Starting on January 1, 2020, some newly shipped systems will require the default BMC password to be changed before they can be managed by xCAT. B<bmcdiscover> will not be able to discover such systems. Run I</opt/xcat/share/xcat/scripts/BMC_change_password.sh> script to change the default password for BMCs in specified range, then rerun B<bmcdiscover> with B<-p "new bmc password"> flag to discover systems with the changed password.
=head1 OPTIONS
@@ -27,11 +28,11 @@ Note: The scan method currently support is B<nmap>.
=item B<--range>
Specify one or more IP ranges acceptable to B<nmap>. IP range can be hostnames, IP addresses, networks, etc. A single IP address (10.1.2.3), several IPs with commas (10.1.2.3,10.1.2.10), Ip range with "-" (10.1.2.0-100) or an IP range (10.1.2.0/24) can be specified. If the range is very large, the B<bmcdiscover> command may take a long time to return.
Specify one or more IP ranges acceptable to B<nmap>. IP range can be hostnames, IP addresses, networks, etc. A single IP address (10.1.2.3), several IPs with commas (10.1.2.3,10.1.2.10), IP range with "-" (10.1.2.0-100) or an IP range (10.1.2.0/24) can be specified. If the range is very large, the B<bmcdiscover> command may take a long time to return.
=item B<--sn>
Specify one or more service nodes on which bmcdiscover will run. In hierarchical cluster, the MN may not be able to access the BMC of CN directly, but SN can. With this option, B<bmcdiscover> will be dispatched to the specified SNs. Then, the nodename of the service node that B<bmcdiscover> is running on will be set to the 'servicenode' attribute of the discovered BMC node.
Specify one or more service nodes on which B<bmcdiscover> will run. In hierarchical cluster, the MN may not be able to access the BMC of CN directly, but SN can. In that case, B<bmcdiscover> will be dispatched to the specified SNs. Then, the nodename of the service node that B<bmcdiscover> is running on will be set to the 'servicenode' attribute of the discovered BMC node.
=item B<-s>
@@ -45,10 +46,6 @@ List the data returned in xCAT stanza format
Write to the xCAT database.
=item B<-i|--bmcip>
BMC IP address.
=item B<-u|--bmcuser>
BMC user name.
@@ -76,7 +73,7 @@ Display version information
=head1 EXAMPLES
1. To get all responding BMCs from IP range "10.4.23.100-254" and 50.3.15.1-2":
1. To get all responding BMCs from IP range "10.4.23.100-254" and "50.3.15.1-2":
bmcdiscover -s nmap --range "10.4.23.100-254 50.3.15.1-2"
+6
View File
@@ -10,6 +10,12 @@ B<nodechmac> I<node-name> B<mac=>I<mac-address>
=head1 DESCRIPTION
B<Note:> The command B<nodechmac> has been deprecated. To change the MAC address of the node:
makedhcp -d <nodename>
chdef -t node -o <nodename> mac=<new-mac>
makedhcp <nodename>
The B<nodechmac> command changes the MAC address for provisioned node's network interface.
You can use this command to keep an existing node configuration. For example, if an existing node has hardware problems, the replacement node can use the old configurations. By using the nodechmac command, the node name and network settings of the old node can be used by the new node.
+5 -11
View File
@@ -12,21 +12,15 @@ B<nodepurge> I<noderange>
The B<nodepurge> automatically removes all nodes from the database and any related configurations used by the node.
After the nodes are removed, the configuration files related to these nodes are automatically updated, including the following files: /etc/hosts, DNS, DHCP. Any kits that are used by the nodes are triggered to automatically update kit configuration and services.
After the nodes are removed, the configuration files related to these nodes are automatically updated, including the following files: I</etc/hosts>, DNS, DHCP. Any kits that are used by the nodes are triggered to automatically update kit configuration and services. Any related configuration files from I</install/autoinst> are also removed.
=head1 OPTIONS
B<-h|--help>
B<-h|--help> Display usage message.
Display usage message.
B<-v|--version> Command Version
B<-v|--version>
Command Version
I<noderange>
The nodes to be removed.
I<noderange> The nodes to be removed.
=head1 RETURN VALUE
@@ -36,7 +30,7 @@ The nodes to be removed.
=head1 EXAMPLES
To remove nodes compute-000 and compute-001, use the following command:
To remove nodes compute-000 and compute-001:
nodepurge compute-000,compute-001
+6 -2
View File
@@ -20,7 +20,7 @@ B<rmvm [-p]> I<noderange>
=head1 DESCRIPTION
The rmvm command removes the partitions specified in noderange. If noderange is an CEC, all the partitions associated with that CEC will be removed. Note that removed partitions are automatically removed from the xCAT database. For IVM-managed systems, care must be taken to not remove the VIOS partition, or all the associated partitions will be removed as well.
The B<rmvm> command removes the partitions specified in I<noderange>. If I<noderange> is an CEC, all the partitions associated with that CEC will be removed. Note that removed partitions are automatically removed from the xCAT database. For IVM-managed systems, care must be taken to not remove the VIOS partition, or all the associated partitions will be removed as well.
For DFM-managed (short For Direct FSP Management mode) normal power machines, only partitions can be removed. No options is needed.
@@ -37,7 +37,11 @@ B<-r> Retain the data object definitions of the nodes.
B<--service> Remove the service partitions of the specified CECs.
B<-p> KVM: Purge the existence of the VM from persistent storage. This will erase all storage related to the VM in addition to removing it from the active virtualization configuration. PPC: Remove the specified partition on normal power machine.
B<-p>
KVM: Purge the existence of the VM from persistent storage. This will erase all storage related to the VM in addition to removing it from the active virtualization configuration. Storage devices of "raw" or "block" type are not removed.
PPC: Remove the specified partition on normal power machine.
B<-f> Force remove the VM, even if the VM appears to be online. This will bring down a live VM if requested.
+8
View File
@@ -60,6 +60,10 @@ B<rspconfig> I<noderange> B<powersupplyredundancy={disabled|enabled}>
B<rspconfig> I<noderange> B<sshcfg>
B<rspconfig> I<noderange> B<thermalmode>
B<rspconfig> I<noderange> B<thermalmode={default|custom|heavy_io|max_base_fan_floor}>
B<rspconfig> I<noderange> B<timesyncmethod>
B<rspconfig> I<noderange> B<timesyncmethod={manual|ntp}>
@@ -402,6 +406,10 @@ B<-d> will download a single dump or all generated dumps from the BMC to /var/lo
=back
=item B<thermalmode>
Display or set the thermal mode of the system to a setting, depending on your system, adapter, and cable type. After a factory reset of the system, the thermal mode setting is lost and must be reapplied. To choose the correct setting for your system, see https://www.ibm.com/support/knowledgecenter/POWER9/p9ei3/p9ei3_thermal_mode.htm [OpenBMC]
=item B<timesyncmethod>
Set the method for time synchronization on the BMC. [OpenBMC]
+13 -2
View File
@@ -170,7 +170,8 @@ logger -s -t $log_label -p local4.info "IPMIVER=$IPMIVER, IPMIMFG=$IPMIMFG, XPRO
#
# IPMIMFG=2 = IBM
# IPMIMFG=0 = OpenPOWER
# IPMIMFG=42817 and XPROD=16975 = OpenBMC
# IPMIMFG=42817 and XPROD=16975 = OpenBMC (AC922)
# IPMIMFG=42817 and XPROD=1 = OpenBMC (IC922)
#
if [ "$IPMIMFG" == 2 ]; then #IBM
if [ "$XPROD" == "220" ]; then
@@ -291,7 +292,9 @@ elif [ "$IPMIMFG" == "674" ]; then # DELL
ipmitool delloem lan set shared with lom$BMCPORT &>/dev/null
ipmitool delloem lan set shared with failover all loms &>/dev/null
fi
elif [ "$IPMIMFG" = "42817" -a "$XPROD" = "16975" ]; then # IBM OpenPOWER servers with OpenBMC
elif [ "$IPMIMFG" == "42817" -a "$XPROD" == "16975" ]; then # IBM OpenPOWER servers with OpenBMC (AC922)
ISOPENBMC=1
elif [ "$IPMIMFG" == "42817" -a "$XPROD" == "1" ]; then # IBM OpenPOWER servers with OpenBMC (IC922)
ISOPENBMC=1
fi
@@ -466,6 +469,14 @@ for user in $BMCUS; do
USERSLOT=$((`ipmitool raw 6 0x44 1 1|awk '{print $3}'` + 1))
fi
if [ "$USERSLOT" == 0 -o -z "$LOCKEDUSERS" ]; then USERSLOT=2; fi
# automatically find first unlocked user slot
for slot in {1..16}; do
USERLOCKED=`ipmitool channel getaccess $LANCHAN $slot | grep Fixed | awk '{print $4}'`
if [ "$USERLOCKED" == "No" ]; then
USERSLOT=$slot
break
fi
done
if [ "$ISITE" = 1 ]; then
allowcred.awk &
CREDPID=$!
+3 -1
View File
@@ -32,7 +32,9 @@ BMCMAC=`ipmitool lan print $LANCHAN|grep ^MAC|awk '{print $4}'` #bmcconfig may o
IPMIMFG=`ipmitool mc info |grep "^Manufacturer ID"|awk '{print $4}'`
XPROD=`ipmitool mc info | grep "^Product ID"|awk '{print $4}'`
if [ "$IPMIMFG" == "42817" -a "$XPROD" == "16975" ]; then
ISOPENBMC=1
ISOPENBMC=1 # AC922
elif [ "$IPMIMFG" == "42817" -a "$XPROD" == "1" ]; then
ISOPENBMC=1 # IC922
else
ISOPENBMC=0
fi
@@ -234,6 +234,18 @@ RSPCONFIG_APIS = {
'setup': "xyz.openbmc_project.Control.Boot.Mode.Modes.Setup",
},
},
'thermalmode': {
'baseurl': "/control/thermal/0",
'set_url': "/attr/Current",
'get_url': "/attr/Current",
'display_name':"BMC ThermalMode",
'attr_values': {
'default': "DEFAULT",
'custom': "CUSTOM",
'heavy_io': "HEAVY_IO",
'max_base_fan_floor': "MAX_BASE_FAN_FLOOR",
},
},
'timesyncmethod': {
'baseurl': '/time/sync_method',
'get_url': '',
@@ -253,7 +265,8 @@ EVENTLOG_URLS = {
}
RAS_POLICY_TABLE = "/opt/ibm/ras/lib/policyTable.json"
RAS_POLICY_MSG = "Install the OpenBMC RAS package to obtain more detailed logging messages."
RAS_POLICY_TABLE_RPM_LOC = "https://www.ibm.com/support/customercare/sas/f/lopdiags/scaleOutLCdebugtool.html#OpenBMC"
RAS_POLICY_MSG = "Install the openbmctool rpm from " + RAS_POLICY_TABLE_RPM_LOC + " to obtain more detailed logging messages."
RAS_NOT_FOUND_MSG = " Not found in policy table: "
RESULT_OK = 'ok'
@@ -53,7 +53,7 @@ all_nodes_result = {}
# global variables of rbeacon
BEACON_OPTIONS = ('on', 'off', 'stat')
RSPCONFIG_GET_OPTIONS = ['ip','ipsrc','netmask','gateway','vlan','ntpservers','hostname','bootmode','autoreboot','powersupplyredundancy','powerrestorepolicy', 'timesyncmethod']
RSPCONFIG_GET_OPTIONS = ['ip','ipsrc','netmask','gateway','vlan','ntpservers','hostname','bootmode','thermalmode','autoreboot','powersupplyredundancy','powerrestorepolicy', 'timesyncmethod']
RSPCONFIG_SET_OPTIONS = {
'ip':'.*',
@@ -66,6 +66,7 @@ RSPCONFIG_SET_OPTIONS = {
'powersupplyredundancy':"^enabled$|^disabled$",
'powerrestorepolicy':"^always_on$|^always_off$|^restore$",
'bootmode':"^regular$|^safe$|^setup$",
'thermalmode':"^default$|^custom$|^heavy_io$|^max_base_fan_floor$",
'admin_passwd':'.*,.*',
'timesyncmethod':'^ntp$|^manual$',
}
+1 -1
View File
@@ -448,7 +448,7 @@ sub is_dns_ready {
my $hostname = shift;
my $domain = shift;
my $output = `nslookup $mnip $serverip 2>&1`;
my $output = `nslookup -type=A $mnip $serverip 2>&1`;
if ($?) {
return 0;
+1 -1
View File
@@ -1006,7 +1006,7 @@ sub check_dns_service {
} else {
# if there is no sn, nslookup mnip
my $nslkp = `nslookup $serverip $serverip 2>&1`;
my $nslkp = `nslookup -type=A $serverip $serverip 2>&1`;
chomp($nslkp);
my $tmp = grep { $_ =~ "Server:[\t\s]*$serverip" } split(/\n/, $nslkp);
if (!$tmp) {
+64 -13
View File
@@ -51,6 +51,13 @@ my $openbmc_pass;
my $done_num = 0;
$::P9_WITHERSPOON_MFG_ID = "42817";
$::P9_WITHERSPOON_PRODUCT_ID = "16975";
$::P9_MIHAWK_MFG_ID = "42817";
$::P9_MIHAWK_PRODUCT_ID = "1";
$::CHANGE_PW_REQUIRED="The password provided for this account must be changed before access is granted";
$::NO_SESSION="Unable to establish IPMI v2 / RMCP";
$::CHANGE_PW_INSTRUCTIONS_1="Run script '/opt/xcat/share/xcat/scripts/BMC_change_password.sh' to change default password";
$::CHANGE_PW_INSTRUCTIONS_2="Rerun 'bmcdiscover' command with '-p new_bmc_password' flag";
$::NO_MFG_OR_PRODUCT_ID="Zeros returned for Manufacturer id and Product id";
%::VPDHASH = ();
my %node_in_list = ();
@@ -196,7 +203,7 @@ sub bmcdiscovery_usage {
push @{ $rsp->{data} }, "Usage:";
push @{ $rsp->{data} }, "\tbmcdiscover [-?|-h|--help]";
push @{ $rsp->{data} }, "\tbmcdiscover [-v|--version]";
push @{ $rsp->{data} }, "\tbmcdiscover [--sn <SN_nodename>] [-s scan_method] [-u bmc_user] [-p bmc_passwd] [-z] [-w] --range ip_range\n";
push @{ $rsp->{data} }, "\tbmcdiscover --range ip_range <ip_range> [--sn <SN_nodename>] [-s <scan_method>] [-u <bmc_user>] [-p <bmc_passwd>] [-z] [-w]\n";
xCAT::MsgUtils->message("I", $rsp, $::CALLBACK);
return 0;
@@ -650,11 +657,11 @@ sub scan_process {
$bcmd = join(" ", $nmap_path, " -sn -n $range");
}
xCAT::MsgUtils->trace(0, "I", "$log_label Try to scan live IPs by command $bcmd ...");
xCAT::MsgUtils->trace(0, "I", "$log_label Try to scan live IPs with command $bcmd ...");
$ip_info_list = xCAT::Utils->runcmd("$bcmd", -1);
if ($::RUNCMD_RC != 0) {
my $rsp = {};
push @{ $rsp->{data} }, "Nmap scan is failed.\n";
push @{ $rsp->{data} }, "Nmap scan has failed.\n";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
return 2;
}
@@ -674,7 +681,7 @@ sub scan_process {
my %pipe_map;
if (scalar(@{$live_ip}) > 0) {
xCAT::MsgUtils->trace(0, "I", "$log_label Scaned live IPs " . scalar(@{$live_ip}) . " with mac " . scalar(@{$live_mac}));
xCAT::MsgUtils->trace(0, "I", "$log_label Scanned " . scalar(@{$live_ip}) . " live IPs with " . scalar(@{$live_mac}) . " MACs");
foreach (@{$live_ip}) {
my $new_mac = lc(shift @{$live_mac});
$new_mac =~ s/\://g;
@@ -748,9 +755,11 @@ sub scan_process {
$bmcpassword = "-P $bmc_pass" if ($bmc_pass);
my @mc_cmds = ("/opt/xcat/bin/ipmitool-xcat -I lanplus -H ${$live_ip}[$i] -P $openbmc_pass mc info -N 1 -R 1",
"/opt/xcat/bin/ipmitool-xcat -I lanplus -H ${$live_ip}[$i] $bmcusername $bmcpassword mc info -N 1 -R 1");
"/opt/xcat/bin/ipmitool-xcat -I lanplus -H ${$live_ip}[$i] -U $openbmc_user -P $openbmc_pass mc info -N 1 -R 1",
"/opt/xcat/bin/ipmitool-xcat -I lanplus -H ${$live_ip}[$i] $bmcusername $bmcpassword mc info -N 1 -R 1");
my $mc_info;
my $is_openbmc = 0;
my $is_ipmi = 0;
foreach my $mc_cmd (@mc_cmds) {
$mc_info = xCAT::Utils->runcmd($mc_cmd, -1);
if ($::RUNCMD_RC != 0) {
@@ -758,16 +767,50 @@ sub scan_process {
}
if ($mc_info =~ /Manufacturer ID\s*:\s*(\d+)\s*Manufacturer Name.+\s*Product ID\s*:\s*(\d+)/) {
xCAT::MsgUtils->trace(0, "D", "$log_label Found ${$live_ip}[$i] Manufacturer ID: $1 Product ID: $2");
if ($1 eq $::P9_WITHERSPOON_MFG_ID and $2 eq $::P9_WITHERSPOON_PRODUCT_ID) {
bmcdiscovery_openbmc(${$live_ip}[$i], $opz, $opw, $request_command,$parent_fd);
if (($1 eq $::P9_WITHERSPOON_MFG_ID and $2 eq $::P9_WITHERSPOON_PRODUCT_ID) or
($1 eq $::P9_MIHAWK_MFG_ID and $2 eq $::P9_MIHAWK_PRODUCT_ID)) {
bmcdiscovery_openbmc(${$live_ip}[$i], $opz, $opw, $request_command,$parent_fd,$2);
$is_openbmc = 1;
$is_ipmi = 0;
last;
}
elsif ($1 eq "0" and $2 eq "0") {
# Got zeros for MFG and PRODUCT ID, not sure if openbmc or ipmi. Print message and move on.
xCAT::MsgUtils->message("W", { data => ["${$live_ip}[$i]: $::NO_MFG_OR_PRODUCT_ID"] }, $::CALLBACK);
last;
}
else {
# System replied to mc info but not with either
# $::P9_WITHERSPOON_MFG_ID and $::P9_WITHERSPOON_PRODUCT_ID, or
# $::P9_MIHAWK_MFG_ID and $::P9_MIHAWK_PRODUCT_ID,
# assume IPMI
$is_openbmc = 0;
$is_ipmi = 1;
last;
}
}
}
unless ($is_openbmc) {
if ($is_ipmi) {
bmcdiscovery_ipmi(${$live_ip}[$i], $opz, $opw, $request_command,$parent_fd);
}
if (!$is_openbmc and !$is_ipmi) {
if ($mc_info =~ /$::NO_SESSION/) {
# Did not get usefull data from ipmi mc info, could be one of two possibilities:
# 1. Incorrect pw was used
# 2. New system installed after January 1, 2020 where default password needs to be changed
#
# Verify this is case 2, by attempting to establish a RedFish session
my $redfish_session_cmd = "curl -sD - --data '{\"UserName\":\"$openbmc_user\",\"Password\":\"$openbmc_pass\"}' -k -X POST https://${$live_ip}[$i]/redfish/v1/SessionService/Sessions";
my $redfish_session_info = xCAT::Utils->runcmd($redfish_session_cmd, -1);
if ($redfish_session_info =~ /$::CHANGE_PW_REQUIRED/) {
# RedFish session replied that password change is needed. Print instructions and exit
xCAT::MsgUtils->message("I", { data => ["${$live_ip}[$i]: $::CHANGE_PW_REQUIRED"] }, $::CALLBACK);
xCAT::MsgUtils->message("I", { data => ["$::CHANGE_PW_INSTRUCTIONS_1"] }, $::CALLBACK);
xCAT::MsgUtils->message("I", { data => ["$::CHANGE_PW_INSTRUCTIONS_2"] }, $::CALLBACK);
}
}
}
close($parent_fd);
exit 0;
} else {
@@ -1183,7 +1226,7 @@ sub bmcdiscovery_ipmi {
my $mtmsip = lc($mtm)."*".lc($serial)."-".$ip;
if (exists($::VPDHASH{$mtmsip})) {
my $pre_node = $::VPDHASH{$mtmsip};
xCAT::MsgUtils->message("I", { data => ["Found match node $pre_node with bmc ip address: $ip, rsetboot/rpower $pre_node to continue hardware discovery."] }, $::CALLBACK);
xCAT::MsgUtils->message("I", { data => ["Found matching node $pre_node with bmc ip address: $ip, rsetboot/rpower $pre_node to continue hardware discovery."] }, $::CALLBACK);
if ($opz) {
$node_data .= ",";
display_output($opz,undef,$pre_node,$mac_node,$node_data,"ipmi",$request_command);
@@ -1206,7 +1249,7 @@ sub bmcdiscovery_ipmi {
xCAT::MsgUtils->message("W", { data => ["BMC password is incorrect for $ip"] }, $::CALLBACK);
return;
} else {
xCAT::MsgUtils->message("W", { data => ["Unknown error get from $ip"] }, $::CALLBACK);
xCAT::MsgUtils->message("W", { data => ["Unknown error from $ip"] }, $::CALLBACK);
return;
}
@@ -1232,6 +1275,7 @@ sub bmcdiscovery_openbmc{
my $opw = shift;
my $request_command = shift;
my $fd = shift;
my $model_id = shift;
my $mtms_node = "";
my $mac_node = "";
@@ -1245,6 +1289,7 @@ sub bmcdiscovery_openbmc{
my $login_endpoint = "login";
my $system_endpoint = "inventory/system";
my $motherboard_boxelder_endpoint = "$system_endpoint/chassis/motherboard/boxelder/bmc";
my $motherboard_bmc_endpoint = "$system_endpoint/chassis/motherboard/bmc";
my $node_data = $ip;
my $brower = LWP::UserAgent->new( ssl_opts => { SSL_verify_mode => 0x00, verify_hostname => 0 }, );
@@ -1263,8 +1308,14 @@ sub bmcdiscovery_openbmc{
my $req = HTTP::Request->new('GET', $url, $header);
my $req_output = $brower->request($req);
if ($req_output->is_error) {
# If the host system has not yet been powered on, check the boxelder bmc info for model/serial
$url = "$http_protocol://$ip/$openbmc_project_url/$motherboard_boxelder_endpoint";
# If the host system has not yet been powered on, system_endpoint call will return error
# Instead, check the boxelder (for AC922) or bmc (for IC922) info for model/serial
if ($model_id eq $::P9_MIHAWK_PRODUCT_ID) {
$url = "$http_protocol://$ip/$openbmc_project_url/$motherboard_bmc_endpoint";
}
else {
$url = "$http_protocol://$ip/$openbmc_project_url/$motherboard_boxelder_endpoint";
}
$req = HTTP::Request->new('GET', $url, $header);
$req_output = $brower->request($req);
if ($req_output->is_error) {
@@ -1318,7 +1369,7 @@ sub bmcdiscovery_openbmc{
my $mtmsip = lc($mtm)."*".lc($serial)."-".$ip;
if (exists($::VPDHASH{$mtmsip})) {
my $pre_node = $::VPDHASH{$mtmsip};
xCAT::MsgUtils->message("I", { data => ["Found match node $pre_node with bmc ip address: $ip, rsetboot/rpower $pre_node to continue hardware discovery."] }, $::CALLBACK);
xCAT::MsgUtils->message("I", { data => ["Found matching node $pre_node with bmc ip address: $ip, rsetboot/rpower $pre_node to continue hardware discovery."] }, $::CALLBACK);
if ($opz) {
$node_data .= ",";
display_output($opz,undef,$pre_node,$mac_node,$node_data,"openbmc",$request_command);
+14 -3
View File
@@ -730,6 +730,7 @@ sub build_xmldesc {
my %cpupinhash;
my @passthrudevices;
my $memnumanodes;
my $cpumode;
my $advsettings = undef;
if (defined $confdata->{vm}->{$node}->[0]->{othersettings}) {
$advsettings = $confdata->{vm}->{$node}->[0]->{othersettings};
@@ -740,6 +741,7 @@ sub build_xmldesc {
#cpu pining: "vcpupin:<physical cpu set>"
#pci passthrough: "devpassthrough:<pci device name1>,<pci device name2>..."
#memory binding: "membind:<numa node set>"
#cpu mode: "cpumode:<host-model|host-passthrough>"
if ($advsettings) {
my @tmp_array = split ";", $advsettings;
foreach (@tmp_array) {
@@ -762,6 +764,9 @@ sub build_xmldesc {
$memnumanodes = $1;
}
if (/cpumode:(.*)/) {
$cpumode = $1;
}
}
}
@@ -779,6 +784,12 @@ sub build_xmldesc {
$xtree{vcpu}->{cpuset} =~ s/\"\'//g;
}
if (defined $cpumode) {
if ($cpumode eq 'host-passthrough' or $cpumode eq 'host-model') {
$xtree{cpu}->{mode} = $cpumode;
}
}
#prepare the xml hash for pci passthrough
my @prdevarray;
foreach my $devname (@passthrudevices) {
@@ -1791,13 +1802,13 @@ sub rmvm {
unless ($driver[0]) { next; }
my $drivertype = $driver[0]->getAttribute("type");
if (($drivertype eq "raw") || ($disktype eq "block")) {
#For raw or block devices, do not remove, even if purge was specified. Log info message.
xCAT::MsgUtils->trace(0, "i", "Not purging raw or block storage device: $disk");
# For raw or block devices, do not remove device, even if purge was specified. Display info message.
xCAT::SvrUtils::sendmsg("Not purging raw or block storage device: $disk", $callback, $node);
next;
}
my $file = $disk->getAttribute("file");
unless ($file) {
xCAT::MsgUtils->trace(0, "w", "Not able to find 'file' attribute value for: $disk");
xCAT::SvrUtils::sendmsg("Not able to find 'file' attribute value for: $disk", $callback, $node);
next;
}
-1
View File
@@ -382,7 +382,6 @@ sub cumulus_connect {
$ssh->debug(0);
$ssh->log_stdout(0); # suppress stdout output..
$ssh->slave->stty(qw(sane -echo));
unless ($ssh->spawn($command, @parameters))
{
+24 -6
View File
@@ -91,6 +91,7 @@ $::RSPCONFIG_CONFIGURED_API_KEY = -1;
$::XCAT_LOG_DIR = "/var/log/xcat";
$::RAS_POLICY_TABLE = "/opt/ibm/ras/lib/policyTable.json";
$::RAS_POLICY_TABLE_RPM_LOC = "https://www.ibm.com/support/customercare/sas/f/lopdiags/scaleOutLCdebugtool.html#OpenBMC";
$::XCAT_LOG_RFLASH_DIR = $::XCAT_LOG_DIR . "/rflash/";
$::XCAT_LOG_DUMP_DIR = $::XCAT_LOG_DIR . "/dump/";
@@ -676,6 +677,21 @@ my %api_config_info = (
manual => "xyz.openbmc_project.Time.Synchronization.Method.Manual",
},
},
RSPCONFIG_THERMAL_MODE => {
command => "rspconfig",
url => "/control/thermal/0",
attr_url => "Current",
display_name => "BMC ThermalMode",
instruct_msg => "",
type => "attribute",
subcommand => "thermalmode",
attr_value => {
default => "DEFAULT",
custom => "CUSTOM",
heavy_io => "HEAVY_IO",
max_base_fan_floor => "MAX_BASE_FAN_FLOOR",
},
},
);
$::RESPONSE_OK = "200 OK";
@@ -1107,7 +1123,7 @@ rmdir \"/tmp/\$userid\" \n";
while (1) {
unless ($wait_node_num) {
if ($event_mapping and (ref($event_mapping) ne "HASH")) {
xCAT::SvrUtils::sendmsg("$event_mapping, install the OpenBMC RAS package to obtain more details logging messages.", $callback);
xCAT::MsgUtils->message("I", { data=> ["$event_mapping, install the openbmctool rpm from $::RAS_POLICY_TABLE_RPM_LOC to obtain more detailed logging messages."]}, $callback);
}
if ($next_status{LOGIN_RESPONSE} eq "RSPCONFIG_SSHCFG_REQUEST") {
my $home = xCAT::Utils->getHomeDir("root");
@@ -4393,6 +4409,7 @@ sub rvitals_response {
my @sorted_output;
my %leds = ();
my $number_of_fan_leds = 0;
foreach my $key_url (keys %{$response_info->{data}}) {
my %content = %{ ${ $response_info->{data} }{$key_url} };
@@ -4409,10 +4426,11 @@ sub rvitals_response {
$calc_value = (split(/\./, $content{State}))[-1];
$content_info = $label . ": " . $calc_value ;
if ($key_url =~ "fan0") { $leds{fan0} = $calc_value; }
if ($key_url =~ "fan1") { $leds{fan1} = $calc_value; }
if ($key_url =~ "fan2") { $leds{fan2} = $calc_value; }
if ($key_url =~ "fan3") { $leds{fan3} = $calc_value; }
# There could be multiple fan LEDs. Match a string "fan" followed by digits, but only at the end of a string
if ($key_url =~ /fan(\d+)$/) {
$leds{"fan" . $1} = $calc_value;
$number_of_fan_leds++;
}
if ($key_url =~ "front_id") { $leds{front_id} = $calc_value; }
if ($key_url =~ "front_fault") { $leds{front_fault} = $calc_value; }
if ($key_url =~ "front_power") { $leds{front_power} = $calc_value; }
@@ -4484,7 +4502,7 @@ sub rvitals_response {
}
}
# Fans
for (my $i = 0; $i < 4; $i++) {
for (my $i = 0; $i < $number_of_fan_leds; $i++) {
my $tmp_key = "fan" . $i;
$content_info = "LEDs Fan$i: $leds{$tmp_key}";
push (@sorted_output, $content_info);
+3 -2
View File
@@ -160,12 +160,13 @@ sub process_request {
xCAT::AGENT::wait_agent($pid, $callback);
}
my @rsp_common_options = qw/autoreboot bootmode powersupplyredundancy powerrestorepolicy timesyncmethod
my @rsp_common_options = qw/autoreboot bootmode thermalmode powersupplyredundancy powerrestorepolicy timesyncmethod
ip netmask gateway hostname vlan ntpservers/;
my @rspconfig_set_options = (@rsp_common_options, qw/admin_passwd/);
my %rsp_set_valid_values = (
autoreboot => "0|1",
bootmode => "regular|safe|setup",
thermalmode => "default|custom|heavy_io|max_base_fan_floor",
powersupplyredundancy => "disabled|enabled",
powerrestorepolicy => "always_off|always_on|restore",
timesyncmethod => "manual|ntp",
@@ -447,7 +448,7 @@ sub refactor_args {
}
}
if ($command eq "reventlog") {
if (!defined($extrargs->[0])) {
if ((!defined($extrargs->[0])) or ($extrargs->[0] =~ /^-V/)) {
# If no parameters are passed, default to list all records
$request->{arg} = ["list","all"];
}
+2 -3
View File
@@ -835,7 +835,6 @@ sub session_connect {
$ssh->debug(0);
$ssh->log_stdout(0); # suppress stdout output..
$ssh->slave->stty(qw(sane -echo));
unless ($ssh->spawn($command, @parameters))
{
@@ -1494,8 +1493,8 @@ sub netcfg_for_irpdu {
my $mypdu = new Expect;
$mypdu->log_stdout(1); # suppress stdout output..
$mypdu->slave->stty(qw(sane -echo));
$mypdu->debug(0);
$mypdu->log_stdout(0); # suppress stdout output..
unless ($mypdu->spawn($login_cmd))
{
+15 -1
View File
@@ -687,7 +687,7 @@ sub nodepurge {
Usage:
\tnodepurge <noderange>
\tnodepurge [-h|--help]
\tnodepurge {-v|--version}";
\tnodepurge [-v|--version]";
my $ret = validate_args($helpmsg);
if (!$ret) {
@@ -735,6 +735,20 @@ Usage:
$warnstr .= "Details: $retstrref->[1]";
}
}
# For each node in the noderange remove its configureation files in $config_dir, if file exists
setrsp_progress("Removing configuration files...");
my $config_dir = "/install/autoinst/";
foreach my $one_node (@$nodes) {
if ( -e "$config_dir/$one_node") {
unlink "$config_dir/$one_node";
}
if ( -e "$config_dir/$one_node.post") {
unlink "$config_dir/$one_node.post";
}
if ( -e "$config_dir/$one_node.pre") {
unlink "$config_dir/$one_node.pre";
}
}
setrsp_progress("Removed all nodes.");
setrsp_success($nodes, $warnstr);
}
+4 -1
View File
@@ -30,7 +30,10 @@ is_lsb_ubuntu ()
DIRECTORY=/var/named
if [ -f /etc/SuSE-release ]; then
# check for SLES
grep -s -q sles /etc/os-release
IS_SLES=$?
if [ -f /etc/SuSE-release ] || [ $IS_SLES -eq 0 ]; then
DIRECTORY=/var/lib/named
fi
FILE=/etc/named.conf
@@ -3,6 +3,8 @@
{
missingok
sharedscripts
copytruncate
delaycompress
postrotate
kill -HUP `systemctl show -p MainPID goconserver.service 2> /dev/null |awk -F= '{print $2}'` 2> /dev/null || true
endscript
@@ -0,0 +1,21 @@
<post-scripts config:type="list">
<script>
<filename>xcat.sh</filename>
<interpreter>shell</interpreter>
<debug config:type="boolean">false</debug>
<source>
<![CDATA[
mkdir -p /var/log/xcat/
{
echo "Running AutoYaST Post-Installation script..."
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.sles.common#
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.xcat#
} >>/var/log/xcat/xcat.log 2>&1
]]>
</source>
</script>
</post-scripts>
@@ -282,7 +282,7 @@ if [ $? -eq 0 ]; then
fi
if [ $hassystemd -eq 1 ] ; then
if [[ $OSVER == sles12* ]]; then
if [[ $OSVER =~ sle && $OSVER != sles11* ]]; then
cat >/etc/systemd/system/xcatpostinit1.service <<'EOF'
#INCLUDE:/install/postscripts/xcatpostinit1.service.yast2#
EOF
@@ -332,7 +332,7 @@ EOF
if [[ $OSVER == ubuntu* ]]; then
update-rc.d xcatpostinit1 defaults
else
if [[ $OSVER == sles* ]]; then
if [[ $OSVER == sle* ]]; then
if [[ $OSVER == sles10* ]]; then
/sbin/insserv xcatpostinit1
else
@@ -515,7 +515,7 @@ cd /
# To skip the conflict, the network service should be stoped in the yast first stage. Then base on the service
# dependency, the service start order will be 'YaST2-Second-Stage.service'->'network'->'xcatpostinit1' in serial.
# Then the Yast2 will be stopped before running the zypper in otherpkgs.
if [[ $OSVER =~ sles && $OSVER != sles11* ]]; then
if [[ $OSVER =~ sle && $OSVER != sles11* ]]; then
service network stop
fi
@@ -2,3 +2,7 @@ openssl
rsync
less
iputils
insserv-compat
net-tools-deprecated
rsyslog
nfs-client
@@ -94,9 +94,9 @@
</routing>
</networking>
<scripts>
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/pre.sle15#
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/pre.sle#
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/chroot.sles#
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.sles11#
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.sle#
</scripts>
</configure>
</profile>
@@ -0,0 +1,25 @@
@base
@x11
openssl
iputils
ntp
rsync
rsyslog
insserv-compat
net-tools-deprecated
nmap
perl-DBI
vsftpd
perl-IO-Tty
perl-Expect
perl-SNMP
unixODBC
perl-Net-DNS
perl-DBD-Pg
postgresql-server
postgresql
perl-DBD-mysql
mariadb-client
#libmysqlclient18
vim
@@ -0,0 +1,2 @@
xcat/xcat-core/xCATsn
xcat/xcat-dep/sles15/ppc64le/goconserver
@@ -0,0 +1,99 @@
<?xml version="1.0"?>
<!DOCTYPE profile SYSTEM "/usr/share/YaST2/include/autoinstall/profile.dtd">
<profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
<install>
<bootloader>
<write_bootloader config:type="boolean">true</write_bootloader>
<activate config:type="boolean">true</activate>
<kernel_parameters>#XCATVAR:PERSKCMDLINE#</kernel_parameters>
<lba_support config:type="boolean">false</lba_support>
<linear config:type="boolean">false</linear>
<location>mbr</location>
</bootloader>
<general>
<clock>
<hwclock>UTC</hwclock>
<timezone>#TABLE:site:key=timezone:value#</timezone>
</clock>
<keyboard>
<keymap>english-us</keymap>
</keyboard>
<language>en_US</language>
<mode>
<confirm config:type="boolean">false</confirm>
<forceboot config:type="boolean">false</forceboot>
<interactive_boot config:type="boolean">false</interactive_boot>
<reboot config:type="boolean">true</reboot>
</mode>
<mouse>
<id>non</id>
</mouse>
<signature-handling>
<accept_non_trusted_gpg_key config:type="boolean">true</accept_non_trusted_gpg_key>
<accept_unknown_gpg_key config:type="boolean">true</accept_unknown_gpg_key>
<accept_unsigned_file config:type="boolean">true</accept_unsigned_file>
</signature-handling>
</general>
<partitioning config:type="list">
<!-- XCAT-PARTITION-START -->
<drive>
<device>XCATPARTITIONHOOK</device>
<initialize config:type="boolean">true</initialize>
<use>all</use>
</drive>
<!-- XCAT-PARTITION-END -->
</partitioning>
<add-on>
<add_on_products config:type="list">
#INSTALL_SOURCES#
</add_on_products>
</add-on>
<software>
<products config:type="list">
<product>SLES</product>
</products>
<patterns config:type="list">
#INCLUDE_DEFAULT_PTRNLIST_S#
</patterns>
<packages config:type="list">
#INCLUDE_DEFAULT_PKGLIST_S#
</packages>
</software>
</install>
<configure>
<users config:type="list">
<user>
<username>root</username>
<user_password>#CRYPT:passwd:key=system,username=root:password#</user_password>
<encrypted config:type="boolean">true</encrypted>
<forename/>
<surname/>
</user>
</users>
<networking>
<dns>
<dhcp_hostname config:type="boolean">true</dhcp_hostname>
<dhcp_resolv config:type="boolean">true</dhcp_resolv>
<domain>local</domain>
<hostname>linux</hostname>
</dns>
<interfaces config:type="list">
<interface>
<bootproto>dhcp</bootproto>
<device>eth0</device>
<startmode>onboot</startmode>
</interface>
</interfaces>
<keep_install_network config:type="boolean">true</keep_install_network>
<routing>
<ip_forward config:type="boolean">false</ip_forward>
<routes config:type="list"/>
</routing>
</networking>
<scripts>
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/pre.sle#
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/chroot.sles#
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.sle#
</scripts>
</configure>
</profile>
@@ -0,0 +1,2 @@
xcat/xcat-core/xCATsn
xcat/xcat-dep/sles15/x86_64/goconserver
+1
View File
@@ -0,0 +1 @@
../rh/dracut_047
@@ -11,3 +11,4 @@ wget
python3
tar
bzip2
bc
@@ -40,6 +40,18 @@ then
sed -i 's/SELINUX=enforcing\|permissive/SELINUX=disabled/' $installroot/etc/selinux/config
fi
#--for redhat 8 and 8.1
#-- Need to disable firewalld, otherwise, the remoteshell script will not able to get all the SSH keys
if [ -f "$installroot/etc/systemd/system/multi-user.target.wants/firewalld.service" ]
then
rm -rf $installroot/etc/systemd/system/multi-user.target.wants/firewalld.service
fi
if [ -f "$installroot/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service" ]
then
rm -rf $installroot/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service
fi
#-- Example of booted image versioning
#-- We want to know, with what configuration (version of the image) each node was booted.
#-- Hence, we keep image definition files and postscripts in CVS. During image generation we create file /etc/IMGVERSION and fill it with CVS "$Id$" of files with image definition (.pkglist, .exlist, .repolist, .postinstall). Then, during boot, each "CVS enabled" postscript (see /install/postscripts/cvs_template.sh and /install/postscripts/cvs_template.pl) adds one line to /etc/IMGVERSION. Then you can determine in any time what image you are running and what postscipts in which versions were run.
@@ -11,3 +11,4 @@ wget
python3
tar
bzip2
bc
@@ -39,6 +39,17 @@ if [ -f "$installroot/etc/selinux/config" ]
then
sed -i 's/SELINUX=enforcing\|permissive/SELINUX=disabled/' $installroot/etc/selinux/config
fi
#--for redhat 8 and 8.1
#-- Need to disable firewalld, otherwise, the remoteshell script will not able to get all the SSH keys
if [ -f "$installroot/etc/systemd/system/multi-user.target.wants/firewalld.service" ]
then
rm -rf $installroot/etc/systemd/system/multi-user.target.wants/firewalld.service
fi
if [ -f "$installroot/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service" ]
then
rm -rf $installroot/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service
fi
#-- Example of booted image versioning
#-- We want to know, with what configuration (version of the image) each node was booted.
+1 -1
View File
@@ -717,7 +717,7 @@ if (@new_order) {
@ndrivers = (@new_order, @ndrivers);
}
if (-f "$rootimg_dir/lib/modules/$kernelver/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko") {
if (-d "$rootimg_dir/lib/modules/$kernelver/kernel/drivers/net/ethernet/mellanox/mlx4") {
for (@ndrivers) {
s/mlx_en/mlx4_en/;
}
@@ -13,3 +13,4 @@ perl-DBD-Pg
python3
tar
bzip2
bc
@@ -13,3 +13,4 @@ perl-DBD-Pg
python3
tar
bzip2
bc
@@ -0,0 +1,36 @@
./boot*
./etc/bootsplash/themes/SLES/images*
./opt/sci/include*
./usr/include*
./usr/lib/locale*
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/auto/Encode/CN*
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/auto/Encode/JP*
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/auto/Encode/TW*
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/auto/Encode/KR*
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/Encode/CN*
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/Encode/JP*
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/Encode/KR*
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/Encode/TW*
./usr/lib64/gcc/x86_64-suse-linux/4.3/include*
./usr/local/include*
./usr/local/man*
./usr/x86_64-suse-linux/include*
./usr/share/X11/locale/*
+./usr/share/X11/locale/en_US.UTF-8*
+./usr/share/X11/locale/C*
./usr/share/cracklib*
./usr/share/doc*
./usr/share/doc/packages/cyrus-sasl/doc*
./usr/share/gnome*
./usr/share/i18n*
./usr/share/info*
./usr/share/locale/*
+./usr/share/locale/en_US*
+./usr/share/locale/C*
./usr/share/man*
./usr/share/omf*
./usr/share/vim/site/doc*
./usr/share/vim/vim72/doc*
./var/cache/man*
./var/cache/yum*
@@ -0,0 +1,50 @@
aaa_base
coreutils
bash
dbus-1
wicked
device-mapper
dracut
nfs-kernel-server
keyutils
lvm2
openssl
dhcp-client
openssh
procps
psmisc
wget
sysconfig
rsyslog
vim
rsync
timezone
bc
ntp
gzip
e2fsprogs
parted
binutils
tar
open-iscsi
curl
btrfsprogs
cryptsetup
dmraid
mdadm
multipath-tools
gpg2
which
cifs-utils
open-lldp
fcoe-utils
util-linux-systemd
udev
kernel-default
kernel-firmware
adaptec-firmware
xz
insserv-compat
net-tools-deprecated
rsyslog
iputils
@@ -0,0 +1,46 @@
#!/bin/sh
#-- Do not remove following line if you want to make use of CVS version tracking
#-- $Id: compute.postinstall,v 1.21 2008/09/04 12:05:45 sikorsky Exp $
#-- jurij.sikorsky@t-systems.cz
#--
#-- this script is run after all packages from $profile.pkglist are installed
#--
#-- it gets these arguments:
#--
#-- $1 = install root (chroot directory for profile)
#-- $2 = OS version
#-- $3 = architecture
#-- $4 = profile name
#-- $5 = work dir (where genimage is located)
#--
#--
installroot=$1
osver=$2
arch=$3
profile=$4
workdir=$5
#-- Example how /etc/fstab can be automatically generated during image generation:
cat <<END >$installroot/etc/fstab
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
${profile}_${arch} / tmpfs rw 0 1
none /tmp tmpfs defaults,size=10m 0 2
none /var/tmp tmpfs defaults,size=10m 0 2
END
#-- Uncomment the line contains "cons" in /etc/inittab
#cons:12345:respawn:/sbin/smart_agetty -L 38400 console
TMP_inittab=`sed 's/\(#\)\(cons:12345.*\)$/\2/' $installroot/etc/inittab`
echo "$TMP_inittab" > $installroot/etc/inittab
#-- Example of booted image versioning
#-- We want to know, with what configuration (version of the image) each node was booted.
#-- Hence, we keep image definition files and postscripts in CVS. During image generation we create file /etc/IMGVERSION and fill it with CVS "$Id$" of files with image definition (.pkglist, .exlist, .repolist, .postinstall). Then, during boot, each "CVS enabled" postscript (see /install/postscripts/cvs_template.sh and /install/postscripts/cvs_template.pl) adds one line to /etc/IMGVERSION. Then you can determine in any time what image you are running and what postscipts in which versions were run.
#cat /dev/null > $installroot/etc/IMGVERSION
#for ext in pkglist exlist postinstall repolist; do
# [ -r $workdir/$profile.$ext ] && cat $workdir/$profile.$ext | grep -E '^[[:space:]]*#.*[[:space:]]\$Id' >> $installroot/etc/IMGVERSION
#done
@@ -0,0 +1 @@
compute.sle15.pkglist
@@ -1,7 +1,7 @@
#!/bin/sh
echo $drivers
dracut_install wget tar cpio gzip modprobe touch echo cut wc xz
dracut_install grep ifconfig hostname awk egrep grep dirname expr
dracut_install grep ifconfig ip hostname awk egrep grep dirname expr
dracut_install mount.nfs
dracut_install parted mke2fs bc mkswap swapon chmod
inst "$moddir/xcat-updateflag" "/tmp/updateflag"
@@ -1,7 +1,7 @@
#!/bin/sh
echo $drivers
dracut_install wget cpio gzip modprobe wc touch echo cut
dracut_install grep ifconfig hostname awk egrep grep dirname expr logger
dracut_install grep ifconfig ip hostname awk egrep grep dirname expr logger
dracut_install parted mke2fs bc mkswap swapon chmod
inst "$moddir/xcat-updateflag" "/tmp/updateflag"
inst_hook pre-mount 5 "$moddir/xcat-premount.sh"
@@ -153,11 +153,11 @@ function getdevfrommac() {
done
}
for lf in /tmp/dhclient.*.lease; do
netif=${lf#*.}
netif=${netif%.*}
cp $lf "$NEWROOT/var/lib/dhclient/dhclient-$netif.leases"
done
bootif=$(ls /tmp/net.*.conf|sed -e s/.*net\.// -e s/\.conf//)
cat <<EOF > $NEWROOT/etc/sysconfig/network/ifcfg-$bootif
BOOTPROTO='dhcp'
STARTMODE='auto'
EOF
if [ -f $NEWROOT/etc/hostname ]; then
echo `hostname -s` > $NEWROOT/etc/hostname
@@ -295,12 +295,12 @@ function getdevfrommac() {
if [ -z $STATEMNT ]; then
for lf in /tmp/dhclient.*.lease; do
netif=${lf#*.}
netif=${netif%.*}
cp $lf "$NEWROOT/var/lib/dhclient/dhclient-$netif.leases"
[ "$xcatdebugmode" > "0" ] && logger -t $log_label -p debug "saving $NEWROOT/var/lib/dhclient/dhclient-$netif.leases"
done
bootif=$(ls /tmp/net.*.conf|sed -e s/.*net\.// -e s/\.conf//)
cat <<EOF > $NEWROOT/etc/sysconfig/network/ifcfg-$bootif
BOOTPROTO='dhcp'
STARTMODE='auto'
EOF
[ "$xcatdebugmode" > "0" ] && logger -t $log_label -p debug "saving $NEWROOT/etc/sysconfig/network/ifcfg-$bootif"
if [ ! -z "$ifname" ]; then
MACX=${ifname#*:}
@@ -336,6 +336,9 @@ fi
[ "$xcatdebugmode" > "0" ] && logger -t $log_label -p debug "setting hostname..."
echo `hostname` > $NEWROOT/etc/hostname
if [ ! -z $NODE ]; then
echo $NODE > $NEWROOT/etc/hostname
fi
logger $SYSLOGHOST -t $log_label -p debug "Exiting xcatroot..."
+70 -29
View File
@@ -72,6 +72,31 @@ sub xdie {
die @_;
}
sub umount {
# some rpms mounts the imageroot/proc on the /proc, need to release it,
# otherwise got kernal panic when installing
# sometimes, the proc fs is not mounted, so one warning/error message will display,
# and I add one check point here.
my $MFD;
open MFD, "/proc/mounts";
my @lines = <MFD>;
close MFD;
my $ret = grep m{$rootimg_dir/proc}, @lines;
if ($ret > 0) {
system("umount -l $rootimg_dir/proc");
}
$ret = grep m{$rootimg_dir/sys}, @lines;
if ($ret > 0) {
system("umount -l $rootimg_dir/sys");
}
}
# Make sure we clean up all mounts everytime
END {
umount();
}
#-- fetch current version form CVS (overwrite locally changed versions)
# if (opendir(CVS,"$pathtofiles/CVS")){
# close CVS;
@@ -203,7 +228,7 @@ unless (grep /af_packet/, @ndrivers) {
}
my $osver_host;
if (`grep VERSION /etc/SuSE-release` =~ /VERSION = (\d+)/) {
if (`grep VERSION /etc/os-release` =~ /VERSION="(\d+)/) {
$osver_host = $1;
} else {
$osver_host = 11;
@@ -225,26 +250,32 @@ unless ($onlyinitrd) {
mkpath "$rootimg_dir/etc";
mkpath "$rootimg_dir/dev";
mkpath "$rootimg_dir/proc";
mkpath "$rootimg_dir/sys";
#needed for newer versions of the SLE permissions RPM. See: https://github.com/openSUSE/permissions/commit/2d0ef5d55b30f72322d18951214353ecfd9c4245
system "mount -t proc proc $rootimg_dir/proc";
#Create /sys to have /sys/kernel/fscaps. Fixes: "Warning: running kernel does not support fscaps"
system "mount -o bind /sys $rootimg_dir/sys";
#system "mount -o bind /dev $rootimg_dir/dev";
unless (-e "$rootimg_dir/dev/zero") {
system "mknod $rootimg_dir/dev/zero c 1 5";
system "mknod -m 0666 $rootimg_dir/dev/zero c 1 5";
}
unless (-e "$rootimg_dir/dev/null") {
system "mknod $rootimg_dir/dev/null c 1 3"; #that's neccessary for SLES11
system "mknod -m 0666 $rootimg_dir/dev/null c 1 3"; #that's neccessary for SLES11+
}
unless (-e "$rootimg_dir/dev/random") {
system "mknod $rootimg_dir/dev/random c 1 8"; #that's neccessary for SLES11
system "mknod -m 0666 $rootimg_dir/dev/random c 1 8"; #that's neccessary for SLES11+
}
unless (-e "$rootimg_dir/dev/urandom") {
system "mknod $rootimg_dir/dev/urandom c 1 9"; #that's neccessary for SLES11
system "mknod -m 0666 $rootimg_dir/dev/urandom c 1 9"; #that's neccessary for SLES11+
}
for (my $i = 0 ; $i <= 12 ; $i++)
{
unless (-e "$rootimg_dir/dev/tty$i") {
system "mknod $rootimg_dir/dev/tty$i c 4 $i"; #that's neccessary for SLES11
system "mknod $rootimg_dir/dev/tty$i c 4 $i"; #that's neccessary for SLES11+
}
}
@@ -264,11 +295,17 @@ unless ($onlyinitrd) {
# To support multiple paths for osimage.pkgdir
foreach $dir (@pkgdirs) {
my $ddir = $dir;
if (-d "$dir/1") {
$dir .= "/1";
$ddir .= "/1";
}
system("zypper -R $rootimg_dir $non_interactive ar file:$dir $osver-$i");
system("zypper -R $rootimg_dir $non_interactive ar file:$ddir $osver-$i");
$i++;
if (-d "$dir/2") {
$ddir = $dir . "/2";
system("zypper -R $rootimg_dir $non_interactive ar file:$ddir $osver-$i");
$i++;
}
}
#if(-e "$rootimg_dir/etc/zypp/repos.d/$osver.repo") {
@@ -391,6 +428,12 @@ unless ($onlyinitrd) {
#my $yumcmd = "yum -y -c /tmp/genimage.$$.yum.conf --installroot=$rootimg_dir --disablerepo=* ";
#$yumcmd .= "install ";
#mkpath("$rootimg_dir/var/lib/yum");
if (! -f "$rootimg_dir/etc/passwd") {
mkpath("$rootimg_dir/etc/");
my $passwdfile;
open($passwdfile, ">", "$rootimg_dir/etc/passwd");
print $passwdfile "root:x:0:0:root:/root:/bin/bash\n";
}
my $yumcmd;
if ($osver_host < 11) {
$yumcmd = "zypper -R $rootimg_dir $non_interactive install ";
@@ -862,19 +905,8 @@ system("cd $rootimg_dir/usr/bin/; ln -s ../../bin/keyctl $rootimg_dir/usr/bin/ke
# which is different from the Redhat family
# some rpms mounts the imageroot/proc on the /proc, need to release it,
# otherwise got kernal panic when installing
# sometimes, the proc fs is not mounted, so one warning/error message will display,
# and I add one check point here.
my $MFD;
open MFD, "/proc/mounts";
my @lines = <MFD>;
close MFD;
my $ret = grep m{$rootimg_dir/proc}, @lines;
if ($ret > 0) {
system("umount -l $rootimg_dir/proc");
}
# umount /proc and /sys from rootimg
umount();
# Load driver update disk, and copy them to the root image
my @dd_drivers = &load_dd();
@@ -1939,8 +1971,12 @@ sub generic_post { # This function is meant to leave the image in a state approx
system("sed -i 's!\\(HWCLOCK=\\).*!\\1\"--localtime\"!' $rootimg_dir/etc/sysconfig/clock");
}
if (-e "$rootimg_dir/etc/sysconfig/network/dhcp") {
system("sed -i 's!^DHCLIENT_SET_HOSTNAME=\\\"no\\\"!DHCLIENT_SET_HOSTNAME=\\\"yes\\\"!' $rootimg_dir/etc/sysconfig/network/dhcp");
}
unlink("$rootimg_dir/dev/null");
system("mknod $rootimg_dir/dev/null c 1 3");
system("mknod -m 0666 $rootimg_dir/dev/null c 1 3");
open($cfgfile, ">", "$rootimg_dir/etc/fstab");
print $cfgfile "devpts /dev/pts devpts gid=5,mode=620 0 0\n";
print $cfgfile "tmpfs /dev/shm tmpfs defaults 0 0\n";
@@ -1963,9 +1999,12 @@ sub generic_post { # This function is meant to leave the image in a state approx
print $cfgfile "NETWORKING=yes\n";
close($cfgfile);
open($cfgfile, ">", "$rootimg_dir/etc/resolv.conf");
print $cfgfile "#Dummy resolv.conf to make boot cleaner";
close($cfgfile);
# SLE15 has a symlink to /run/netconfig/resolv.conf and does not need a dummy file
if (! -l "$rootimg_dir/etc/resolv.conf") {
open($cfgfile, ">", "$rootimg_dir/etc/resolv.conf");
print $cfgfile "#Dummy resolv.conf to make boot cleaner";
close($cfgfile);
}
# Create the ifcfg-x file for diskless node. But keep the ONBOOT=no
# to skip the break of nfs-based boot
@@ -2048,8 +2087,10 @@ sub generic_post { # This function is meant to leave the image in a state approx
chmod(0755, "$rootimg_dir/etc/init.d/gettyset");
}
copy("$installroot/postscripts/xcatpostinit", "$rootimg_dir/etc/init.d/xcatpostinit");
chmod(0755, "$rootimg_dir/etc/init.d/xcatpostinit");
system("mkdir -p $rootimg_dir/opt/xcat");
copy("$installroot/postscripts/xcatpostinit", "$rootimg_dir/opt/xcat/xcatpostinit");
chmod(0755, "$rootimg_dir/opt/xcat/xcatpostinit");
copy("$installroot/postscripts/xcatpostinit.service", "$rootimg_dir/usr/lib/systemd/system/xcatpostinit.service");
#
# set certain system services to start on boot, if the file exists in /etc/init.d as a script,
@@ -2068,7 +2109,7 @@ sub generic_post { # This function is meant to leave the image in a state approx
system("$cmd");
}
else {
$cmd = $cmd . "systemctl start $service.service";
$cmd = $cmd . "systemctl enable $service.service";
system("$cmd");
}
}
@@ -0,0 +1,73 @@
aaa_base
adaptec-firmware
apache2
apache2-prefork
bash
bind
bind-utils
binutils
bc
btrfsprogs
bzip2
cifs-utils
coreutils
cron
cryptsetup
curl
dhcp
dhcp-client
dhcp-relay
dhcp-server
dmraid
e2fsprogs
fcoe-utils
gpg2
gzip
xz
kernel-default
keyutils
lvm2
mdadm
multipath-tools
nfs-kernel-server
ntp
openssh
openssl
open-iscsi
open-lldp
pam
pam-modules
parted
perl-doc
perl-Expect
plymouth
plymouth-dracut
procps
psmisc
rpm
rsync
sysconfig
tar
timezone
udev
util-linux
util-linux-systemd
vim
vsftpd
wget
which
zypper
insserv-compat
net-tools-deprecated
rsyslog
#for database
unixODBC
perl-DBD-mysql
mariadb-client
#libmysqlclient18
# The following rpms are available on the SLES SDK
# You will need to locate and make these rpms available in your zypper
# repository for service node installs and uncomment the following lines:
#MyODBC-unixODBC
perl-DBD-Pg
iputils
@@ -0,0 +1,68 @@
#!/bin/sh
#-- Do not remove following line if you want to make use of CVS version tracking
#-- $Id: compute.postinstall,v 1.21 2008/09/04 12:05:45 sikorsky Exp $
#-- jurij.sikorsky@t-systems.cz
#--
#-- this script is run after all packages from $profile.pkglist are installed
#--
#-- it gets these arguments:
#--
#-- $1 = install root (chroot directory for profile)
#-- $2 = OS version
#-- $3 = architecture
#-- $4 = profile name
#-- $5 = work dir (where genimage is located)
#--
#--
installroot=$1
osver=$2
arch=$3
profile=$4
workdir=$5
#-- Example how /etc/fstab can be automatically generated during image generation:
cp $installroot/etc/fstab $installroot/etc/fstab.prev
cat <<END >$installroot/etc/fstab
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
${profile}_${arch} / tmpfs rw 0 1
none /tmp tmpfs defaults,size=10m 0 2
none /var/tmp tmpfs defaults,size=10m 0 2
END
cat <<END >>$installroot/etc/hosts
`getent hosts $HOSTNAME`
END
#Prevent DHCP from starting up until xcatd has had a chance to configure it:
chroot $installroot chkconfig dhcpd off
chroot $installroot chkconfig dhcrelay off
#turn on some services
chroot $installroot chkconfig dbus on
chroot $installroot chkconfig boot.localnet on
chroot $installroot chkconfig haldaemon on
chroot $installroot chkconfig network on
chroot $installroot chkconfig syslog on
chroot $installroot chkconfig apache2 on
#export /install as read-only
mkdir -p /install
echo '/install *(ro,no_root_squash,sync,fsid=13)' > $installroot/etc/exports
#uncomment out the cons line in etc/inittab
#sed -i 's/^\#\(\s\)*cons/cons/' $installroot/etc/inittab
TMP_inittab=`sed 's/\(#\)\(cons:12345.*\)$/\2/' $installroot/etc/inittab`
echo "$TMP_inittab" > $installroot/etc/inittab
#-- Example of booted image versioning
#-- We want to know, with what configuration (version of the image) each node was booted.
#-- Hence, we keep image definition files and postscripts in CVS. During image generation we create file /etc/IMGVERSION and fill it with CVS "$Id$" of files with image definition (.pkglist, .exlist, .repolist, .postinstall). Then, during boot, each "CVS enabled" postscript (see /install/postscripts/cvs_template.sh and /install/postscripts/cvs_template.pl) adds one line to /etc/IMGVERSION. Then you can determine in any time what image you are running and what postscipts in which versions were run.
#cat /dev/null > $installroot/etc/IMGVERSION
#for ext in pkglist exlist postinstall repolist; do
# [ -r $workdir/$profile.$ext ] && cat $workdir/$profile.$ext | grep -E '^[[:space:]]*#.*[[:space:]]\$Id' >> $installroot/etc/IMGVERSION
#done
@@ -0,0 +1,3 @@
-perl-doc
xcat/xcat-core/xCATsn
xcat/xcat-dep/sles15/ppc64le/goconserver
@@ -0,0 +1,3 @@
-perl-doc
xcat/xcat-core/xCATsn
xcat/xcat-dep/sles15/x86_64/goconserver
+107
View File
@@ -0,0 +1,107 @@
#!/bin/sh
##########################################################################
# This script does the following:
# - use nmap for the range given (ex: 172.11.139.3-5) to generate list of IP address
# - try to connect using REST api
# with root/0penBmc (Witherspoon) or
# ADMIN/ADMIN (Boston) to check if this is OpenBMC system
# - check the output of the REST login to see if password needs to be changed
# - use REST call to change to user provided password
# - report error is password does not meet PAM validation rules
#
# Usage: $0 -r <ip_ranges> -n <new BMC Password>
# Note: If this script is being used in the process of discovering new BMCs,
# the new BMC password should be passed to bmcdiscover command
# using the [-p|--bmcpasswd] option.
##########################################################################
if [ $# -le 3 ]; then
echo "
Change the default root or ADMIN password of the BMC to the one
specified by '-n' flag. Use the same password when discovering new
BMCs, by passing it with '[-p|--bmcpasswd]' option to 'bmcdiscover' command.
"
echo "Usage:"
echo " $0 -r <ip_ranges> -n <new BMC Password> "
echo "Examples:"
echo " Target one node:"
echo " $0 -r 172.11.139.1 -n 0penBmc123"
echo " Target a range of nodes:"
echo " $0 -r 172.11.139.1-12 -n 0penBmc123"
exit
fi
while getopts n:r:h: option
do
case "${option}"
in
r) RANGE=${OPTARG};;
n) NEW=${OPTARG};;
esac
done
if ! [ -x "$(command -v nmap)" ]; then
echo 'Error: nmap is not installed.' >&2
exit 1
fi
#Generate the list of IP addresses in the range that user provided
nmap -n -sn $RANGE -oG - | awk '/Up$/{print $2}' > /tmp/$$.ip.list
WITHERSPOON_DEFAULT_USER="root"
WITHERSPOON_DEFAULT_PW="0penBmc"
BOSTON_DEFAULT_USER="ADMIN"
BOSTON_DEFAULT_PW="ADMIN"
CHANGE_PW_REQUIRED="The password provided for this account must be changed before access is granted"
PW_PAM_VALIDATION="password value failed PAM validation checks"
UNAUTHORIZED="Unauthorized"
for name in `cat /tmp/$$.ip.list`
do
## Look for Witherspoon first
SYSTEM_TYPE="Witherspoon"
PasswordChangeNeeded=`curl -sD - --data '{"UserName":"'"$WITHERSPOON_DEFAULT_USER"'","Password":"'"$WITHERSPOON_DEFAULT_PW"'"}' -k -X POST https://$name/redfish/v1/SessionService/Sessions`
if [[ "$PasswordChangeNeeded" =~ "$CHANGE_PW_REQUIRED" ]]; then
echo "$name: Password change needed for $SYSTEM_TYPE system"
PasswordChanged=`curl -u $WITHERSPOON_DEFAULT_USER:$WITHERSPOON_DEFAULT_PW --data '{"Password":"'"$NEW"'"}' -k -X PATCH https://$name/redfish/v1/AccountService/Accounts/$WITHERSPOON_DEFAULT_USER 2> /dev/null`
if [[ "$PasswordChanged" =~ "$PW_PAM_VALIDATION" ]]; then
echo "$name: Can not change password for $SYSTEM_TYPE system - $PW_PAM_VALIDATION"
elif [[ -z "$PasswordChanged" ]]; then
# If no output, password change was successful
echo "$name: Password for $SYSTEM_TYPE system changed. It might take up to 5 minutes for the BMC to update."
else
# Some unexpected output changing the password - report error and show output
echo "$name: Unable to change password for $SYSTEM_TYPE system - $PasswordChanged"
fi
continue
fi
## Look for Boston next
SYSTEM_TYPE="Boston"
PasswordChangeNeeded=`curl -sD - --data '{"UserName":"'"$BOSTON_DEFAULT_USER"'","Password":"'"$BOSTON_DEFAULT_PW"'"}' -k -X POST https://$name/redfish/v1/SessionService/Sessions`
if [[ "$PasswordChangeNeeded" =~ "$CHANGE_PW_REQUIRED" ]]; then
echo "$name: Password change needed for $SYSTEM_TYPE system"
PasswordChanged=`curl -u $BOSTON_DEFAULT_USER:$BOSTON_DEFAULT_PW --data '{"Password":"'"$NEW"'"}' -k -X PATCH https://$name/redfish/v1/AccountService/Accounts/2 2> /dev/null`
if [[ "$PasswordChanged" =~ "$PW_PAM_VALIDATION" ]]; then
echo "$name: Can not change password for $SYSTEM_TYPE system - $PW_PAM_VALIDATION"
elif [[ -z "$PasswordChanged" ]]; then
# If no output, password change was successful
echo "$name: Password for $SYSTEM_TYPE system changed. It might take up to 5 minutes for the BMC to update."
else
# Some unexpected output changing the password - report error and show output
echo "$name: Unable to change password for $SYSTEM_TYPE system - $PasswordChanged"
fi
continue
fi
done
rm /tmp/$$.ip.list
+4 -2
View File
@@ -409,7 +409,8 @@ sub config_snmp {
my $cfg_access3="snmp-server access 5 security usm\r";
my $cfg_access4="snmp-server access 5 read-view iso\r";
$mysw->slave->stty(qw(sane -echo));
$mysw->debug(0);
$mysw->log_stdout(0); # suppress stdout output..
unless ($mysw->spawn($login_cmd))
{
@@ -522,7 +523,8 @@ sub config_G8264 {
my $main_prompt="Main#";
my $authpw_cmd = "/cfg/sys/ssnmp/snmpv3/usm 5/authpw\r";
$mysw->slave->stty(qw(sane -echo));
$mysw->debug(0);
$mysw->log_stdout(0); # suppress stdout output..
unless ($mysw->spawn($login_cmd))
{
@@ -226,7 +226,6 @@ sub cumulus_connect {
$ssh->debug(0);
$ssh->log_stdout(0); # suppress stdout output..
$ssh->slave->stty(qw(sane -echo));
unless ($ssh->spawn($command, @parameters))
{
+5 -2
View File
@@ -2,7 +2,7 @@
#
# go-xcat - Install xCAT automatically.
#
# Version 1.0.44
# Version 1.0.45
#
# Copyright (C) 2016 - 2019 International Business Machines
# Eclipse Public License, Version 1.0 (EPL-1.0)
@@ -27,6 +27,8 @@
# - Added conserver-xcat to uninstall list
# 2019-10-23 Mark Gurevich <gurevich@us.ibm.com>
# - Display a list of packages that could not be uninstalled
# 2019-11-05 Mark Gurevich <gurevich@us.ibm.com>
# - Display a list of packages that will be installed before "Continue?"
#
function usage()
@@ -624,7 +626,7 @@ function check_repo_version_yum()
{
type yum >/dev/null 2>&1 || return 255
check_executes repoquery
exit_if_bad "$?" "Install the \`yum-utils' package and rerun."
exit_if_bad "$?" "Install the \`yum-utils' or \`dnf-utils' package and rerun."
local -a name=()
local -a ver=()
while read -r name ver
@@ -2156,6 +2158,7 @@ case "${GO_XCAT_ACTION}" in
;;
"install"|"update")
GO_XCAT_INSTALLER="${GO_XCAT_ACTION}_xcat"
list_xcat_packages
ask_to_continue "${GO_XCAT_YES[0]}" "xCAT is going to be ${GO_XCAT_ACTION/%e/}ed."
# Use `-y' here. Since the STDOUT is redirected.
# `yum' does not display the prompt message properly when
@@ -171,6 +171,9 @@ noderm_err_node
noderm_h
noderm_noderange
noderm_null
nodepurge_err_node
nodepurge_h
nodepurge_null
nodestat_err_node
restorexCAT_h
restorexCATdb_a_p_V
@@ -0,0 +1,42 @@
addkit_v
addkit_h
addkit_kit
addkit_i
addkit_multikit
addkit_p
addkitcomp_v
addkitcomp_h
addkitcomp_i
addkitcomp_f
buildkit_v
buildkit_h
buildkit_create
buildkit_create_l
buildkit_cleanrepo_all
buildkit_buildtar
chkkitcomp_v
chkkitcomp_h
chkkitcomp_V
lskit_v
lskit_h
lskit_F
lskit_K
lskit_R
lskit_C
lskitcomp_v
lskitcomp_h
lskitcomp_C
lskitcomp_S
lskitdeployparam_v
lskitdeployparam_h
lskitdeployparam_no_param
lskitdeployparam_k_1
lskitdeployparam_c_1
rmkit_v
rmkit_h
rmkit_t_no
rmkit_t_yes
rmkit_f
rmkit_V
rmkitcomp_v
rmkitcomp_h
@@ -212,6 +212,10 @@ noderm_err_node
noderm_h
noderm_noderange
noderm_null
nodepurge_err_node
nodepurge_h
nodepurge_noderange
nodepurge_null
tabdump_servicenode
nodeset_check_warninginfo
nodeset_errorcommand
@@ -205,6 +205,10 @@ noderm_err_node
noderm_h
noderm_noderange
noderm_null
nodepurge_err_node
nodepurge_h
nodepurge_noderange
nodepurge_null
nodeset_check_warninginfo
nodeset_disjointdhcps_petitboot
nodeset_errorcommand
@@ -300,3 +304,4 @@ xcatstanzafile_normal
xcatstanzafile_objtype
xcatstanzafile_specificvalue
xcatstanzafile_tab
go_xcat_devel_from_repo
@@ -205,6 +205,10 @@ noderm_err_node
noderm_h
noderm_noderange
noderm_null
nodepurge_err_node
nodepurge_h
nodepurge_noderange
nodepurge_null
nodeset_check_warninginfo
nodeset_errorcommand
nodeset_xnba
@@ -299,3 +303,4 @@ xcatstanzafile_normal
xcatstanzafile_objtype
xcatstanzafile_specificvalue
xcatstanzafile_tab
go_xcat_devel_from_repo
@@ -170,6 +170,10 @@ noderm_err_node
noderm_h
noderm_noderange
noderm_null
nodepurge_err_node
nodepurge_h
nodepurge_noderange
nodepurge_null
nodeset_check_warninginfo
nodeset_errorcommand
nodeset_grub2
@@ -155,6 +155,10 @@ noderm_err_node
noderm_h
noderm_noderange
noderm_null
nodepurge_err_node
nodepurge_h
nodepurge_noderange
nodepurge_null
nodeset_check_warninginfo
nodeset_disjointdhcps_petitboot
nodeset_errorcommand
@@ -244,3 +248,4 @@ xcatstanzafile_normal
xcatstanzafile_objtype
xcatstanzafile_specificvalue
xcatstanzafile_tab
go_xcat_devel_from_repo
@@ -17,5 +17,3 @@ nodeset_shell
reg_linux_diskfull_installation_flat
reg_linux_diskless_installation_flat
reg_linux_statelite_installation_flat
sles_migration1
sles_migration2
@@ -155,6 +155,10 @@ noderm_err_node
noderm_h
noderm_noderange
noderm_null
nodepurge_err_node
nodepurge_h
nodepurge_noderange
nodepurge_null
nodeset_check_warninginfo
nodeset_errorcommand
nodeset_noderange
@@ -243,3 +247,4 @@ xcatstanzafile_normal
xcatstanzafile_objtype
xcatstanzafile_specificvalue
xcatstanzafile_tab
go_xcat_devel_from_repo
@@ -17,5 +17,3 @@ nodeset_shell
reg_linux_diskfull_installation_flat
reg_linux_diskless_installation_flat
reg_linux_statelite_installation_flat
sles_migration1
sles_migration2
@@ -125,6 +125,10 @@ noderm_err_node
noderm_h
noderm_noderange
noderm_null
nodepurge_err_node
nodepurge_h
nodepurge_noderange
nodepurge_null
nodeset_errorcommand
nodeset_check_warninginfo
nodeset_grub2
@@ -125,6 +125,10 @@ noderm_err_node
noderm_h
noderm_noderange
noderm_null
nodepurge_err_node
nodepurge_h
nodepurge_noderange
nodepurge_null
nodeset_errorcommand
nodeset_check_warninginfo
nodeset_noderange

Some files were not shown because too many files have changed in this diff Show More