2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-05-21 00:02:46 +00:00

Merge pull request #6867 from xcat2/master

Merge from master to 2.16 branch for 2.16.1 release. (1)
This commit is contained in:
Mark Gurevich
2020-10-28 14:52:34 -04:00
committed by GitHub
96 changed files with 1052 additions and 423 deletions
+1 -1
View File
@@ -1 +1 @@
2.16
2.16.1
@@ -1,7 +1,9 @@
Removing ``xcatdb`` from PostgreSQL
===================================
Removing ``xcatdb`` from PostgreSQL and restoring data into SQLite
==================================================================
To remove ``xcatdb`` completely from the PostgreSQL database:
.. note. If you are using *xCAT Hierarchy (service nodes)* and removing ``xcatdb`` from postgres, hierarchy will no longer work. You will need to configure another database which supports remote database access to continue using the hierarchy feature. ::
To remove ``xcatdb`` completely from the PostgreSQL database and restore xCAT data into SQLite:
#. Run a backup of the database to save any information that is needed: ::
@@ -9,7 +11,6 @@ To remove ``xcatdb`` completely from the PostgreSQL database:
dumpxCATdb -p ~/xcat-dbback
#. Stop the ``xcatd`` daemon on the management node.
**Note:** If you are using *xCAT Hierarchy (service nodes)* and removing ``xcatdb`` from postgres, hierarchy will no longer work. You will need to configure another database which supports remote database access to continue using the hierarchy feature. ::
service xcatd stop
@@ -29,6 +30,7 @@ To remove ``xcatdb`` completely from the PostgreSQL database:
cd /var/lib/pgsql/data
rm -rf *
exit
#. Move, or remove, the ``/etc/xcat/cfglog`` file as it points xCAT to PostgreSQL. (without this file, xCAT defaults to SQLite): ::
@@ -103,5 +103,7 @@ The following table illustrates the cluster being used in this example:
chdef -t site clustersite installloc=
rsync -auv --exclude 'autoinst' /install r1n01:/
rsync -auv --exclude 'autoinst' /install r2n01:/
rsync -auv --exclude 'autoinst' /tftpboot r1n01:/
rsync -auv --exclude 'autoinst' /tftpboot r2n01:/
rsync -auv /tftpboot r1n01:/
rsync -auv /tftpboot r2n01:/
.. note:: If ``/install`` and ``/tftpboot`` directories local to each Service Node are used and ``mknb`` command is executed to generate a diskless network boot image with custom changes, it will not be automatically copied to the Service Node. Make sure to run the above ``rsync`` commands after executing the ``mknb``. Verify ``/tftpboot/xcat`` directory on Service node contains ``genesis.kernel.<arch>`` and ``genesis.fs.<arch>.gz`` files.
+2 -2
View File
@@ -12,11 +12,11 @@ information to help customer configure the network.
How to use getadapter
-----------------------
Set the chian table to run ``getadapter`` script ::
Set the chain table to run ``getadapter`` script ::
chdef <noderange> chain="runcmd=getadapter"
After the discovery completed, the column ``nicsadapter`` of ```nics`` table is
After the discovery completed, the column ``nicsadapter`` of ``nics`` table is
updated.
View result with ``lsdef`` command ::
+1
View File
@@ -8,3 +8,4 @@ Networking
onie_switches/index.rst
switchdiscover/index.rst
infiniband/index.rst
getadapter.rst
+3 -3
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.2'
release = '2.16.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@@ -103,9 +103,9 @@ exclude_patterns = ['guides/install-guides/common_sections.rst',
#'**hamn/setup_ha_mgmt_node_with_shared_data.rst',
#'**hamn/setup_xcat_high_available_management_node_in_softlayer.rst',
'**hierarchy/databases/postgres_tips.rst',
'**hierarchy/define_and_install_compute_node.rst',
'**hierarchy/define_and_install_compute_node.rst'
#'**hierarchy/define_service_node.rst',
'**networks/getadapter.rst'
#'**networks/getadapter.rst'
#'**networks/vlan/index.rst',
#'**networks/vlan/vlan.rst',
#'**license/xcat_corporate_contributor_license_agreement.rst',
@@ -166,7 +166,9 @@ Appedix
* https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/kernel_crash_dump_guide/sect-kdump-config-cli.
* https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/system_design_guide/installing-and-configuring-kdump_system-design-guide
#. OS Documentation on dump analysis:
* http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/s1-kdump-crash.htmlRHELdocument
* https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/s1-kdump-crashdd
@@ -21,7 +21,7 @@ SYNOPSIS
\ **imgexport [-h| -**\ **-help]**\
\ **imgexport**\ \ *image_name*\ [\ *destination*\ ] [[\ **-e | -**\ **-extra**\ \ *file:dir*\ ] ... ] [\ **-p | -**\ **-postscripts**\ \ *node_name*\ ] [\ **-v | -**\ **-verbose**\ ]
\ **imgexport**\ \ *image_name*\ [\ *destination*\ ] [\ **-e | -**\ **-extra**\ \ *file:dir*\ ] ... ] [\ **-p | -**\ **-postscripts**\ \ *node_name*\ ] [\ **-R | -**\ **-remotehost**\ \ *user@host*\ ] [\ **-v | -**\ **-verbose**\ ]
***********
@@ -90,6 +90,12 @@ OPTIONS
\ **-R|-**\ **-remotehost**\ \ *user@host*\
Export the image to remote host. Passwordless ssh must be setup to the remote host.
\ **-v|-**\ **-verbose**\
Verbose output.
@@ -132,7 +138,7 @@ EXAMPLES
imgexport foo
foo.tgz will be built in the current working directory. Make sure that you have enough space in the directory that you are in to run imgexport if you have a big image to tar up.
foo.tgz will be built in the current working directory. Make sure that you have enough space in the directory that you are in to run imgexport, if you have a big image to tar up.
2. To include extra files with your image:
@@ -21,7 +21,7 @@ SYNOPSIS
\ **imgimport [-h|-**\ **-help]**\
\ **imgimport**\ \ *bundle_file_name*\ [\ **-p | -**\ **-postscripts**\ \ *nodelist*\ ] [\ **-f | -**\ **-profile**\ \ *new_profile*\ ] [\ **-v | -**\ **-verbose**\ ]
\ **imgimport**\ \ *bundle_file_name*\ [\ **-p | -**\ **-postscripts**\ \ *nodelist*\ ] [\ **-f | -**\ **-profile**\ \ *new_profile*\ ] [\ **-R | -**\ **-remotehost**\ \ *user@host*\ ] [\ **-v | -**\ **-verbose**\ ]
***********
@@ -109,6 +109,12 @@ OPTIONS
\ **-R|-**\ **-remotehost**\ \ *user@host*\
Import the image from remote host. Passwordless ssh must be setup to the remote host.
\ **-v|-**\ **-verbose**\
Verbose output.
@@ -33,8 +33,8 @@ DESCRIPTION
***********
\ **pgsqlsetup**\ - Sets up the PostgreSQL database for xCAT to use. The pgsqlsetup script is run on the Management Node as root after the PostgreSQL code has been installed. The xcatd daemon will be stopped during migration. No xCAT commands should be run during the init process, because we will be migrating the xCAT database to PostgreSQL and restarting the xcatd daemon as well as the PostgreSQL daemon. For full information on all the steps that will be done reference
One password must be supplied for the setup, a password for the xcatadm unix id and the same password for the xcatadm database id. The password will be prompted for interactively or you can set the XCATPGPW environment variable to the password and then there will be no prompt.
\ **pgsqlsetup**\ - Sets up the PostgreSQL database for xCAT to use. The \ **pgsqlsetup**\ script is run on the Management Node as root after the PostgreSQL has been installed. The \ **xcatd**\ daemon will be stopped during migration. No xCAT commands should be run during the init process, because we will be migrating the xCAT database to PostgreSQL and restarting the \ **xcatd**\ daemon as well as the PostgreSQL daemon.
One password must be supplied for the setup, a password for the xcatadm unix id and the same password for the xcatadm database id. The password will be prompted for interactively or you can set the XCATPGPW environment variable to the password in order to avoid the prompt.
*******
@@ -63,17 +63,17 @@ OPTIONS
\ **-i|-**\ **-init**\
The init option is used to setup an installed PostgreSQL database so that xCAT can use the database. This involves creating the xcat database, the xcat admin id, allowing access to the xcatdb database by the Management Node. It customizes the postgresql.conf configuration file, adds the management server to the pg_hba.conf and starts the PostgreSQL server. It also backs up the current xCAT database and restores it into the newly setup xcatdb PostgreSQL database. It creates the /etc/xcat/cfgloc file to point the xcatd daemon to the PostgreSQL database and restarts the xcatd daemon using the database.
On AIX, it additionally setup the xcatadm unix id and the postgres id and group. For AIX, you should be using the PostgreSQL rpms available from the xCAT website. For Linux, you should use the PostgreSQL rpms shipped with the OS. You can chose the -o option, to run after the init.
To add additional nodes to access the PostgreSQL server, setup on the Management Node, use the -a option.
The \ **-**\ **-init**\ option is used to setup an installed PostgreSQL database so that xCAT can use it. This involves creating the xcat database, the xcat admin id, allowing access to the xcatdb database by the Management Node. It customizes the postgresql.conf configuration file, adds the management server to the pg_hba.conf and starts the PostgreSQL server. It also backs up the current xCAT database and restores it into the newly setup xcatdb PostgreSQL database. It creates the /etc/xcat/cfgloc file to point the \ **xcatd**\ daemon to the PostgreSQL database and restarts the \ **xcatd**\ daemon using the database.
On AIX, it additionally setup the xcatadm unix id and the postgres id and group. For AIX, you should be using the PostgreSQL rpms available from the xCAT website. For Linux, you should use the PostgreSQL rpms shipped with the OS. You can chose the \ **-o**\ option, to run after the init.
To add additional nodes to access the PostgreSQL server, setup on the Management Node, use the \ **-a**\ option.
For more documentation see:Setting_Up_PostgreSQL_as_the_xCAT_DB
For more documentation see:<https://xcat-docs.readthedocs.io/en/stable/advanced/hierarchy/databases/index.html#postgresql>
\ **-N|-**\ **-nostart**\
This option with the -i flag will create the database, but will not backup and restore xCAT tables into the database. It will create the cfgloc file such that the next start of xcatd will try and contact the database. This can be used to setup the xCAT PostgreSQL database during or before install.
This option with the \ **-i**\ flag will create the database, but will not backup and restore xCAT tables into the database. It will create the cfgloc file such that the next start of \ **xcatd**\ will try and contact the database. This can be used to setup the xCAT PostgreSQL database during or before install.
@@ -19,7 +19,7 @@ SYNOPSIS
********
\ **replaycons**\ [\ *node*\ ] [\ *bps*\ ] [\ *tail_amount*\ ]
\ **replaycons**\ \ *node log file*\ [\ *bps*\ ] [\ *tail_amount*\ ]
\ **replaycons**\ [\ **-h**\ | \ **-**\ **-help**\ | \ **-v**\ | \ **-**\ **-version**\ ]
@@ -31,9 +31,9 @@ DESCRIPTION
The \ **replaycons**\ command reads the console log stored by conserver for this node, and displays it
in a way that simulates the original output of the console. Using the \ *bps*\ value, it will throttle
the speed of the output play back. (The conserver logs are stored in /var/log/consoles.)
the speed of the output play back. (The logs are stored in /var/log/consoles.)
For now, replaycons must be run locally on the system on which the console log is stored. This is normally
\ **replaycons**\ must be run locally on the system on which the console log is stored. This is normally
that management node, but in a hierarchical cluster will usually be the service node.
@@ -51,7 +51,7 @@ OPTIONS
\ *tail_amount*\
The place in the console log file to start play back, specified as the # of lines from the end.
The place in the console log file to start play back, specified as the number of lines from the end.
@@ -96,7 +96,7 @@ EXAMPLES
.. code-block:: perl
replaycons 19200 2000
replaycons node1.log 19200 2000
@@ -452,7 +452,7 @@ OPTIONS
The non-root userid must be previously defined as an xCAT user.
The userid sudo setup will have to be done by the admin on the node.
This is not supported in a hierarchical cluster, that is the node is serviced by a service node.
See the document Granting_Users_xCAT_privileges for required xcat/sudo setup.
See the document https://xcat-docs.readthedocs.io/en/stable/advanced/security/security.html#granting-users-xcat-privileges for required xcat/sudo setup.
@@ -43,7 +43,7 @@ The \ **xdsh**\ command runs commands in parallel on remote nodes and/or the Ma
remote shell command for each target specified, and returns the output
from all targets,
formatted so that command results from all nodes can be managed.
If the command is to be executed on the Management Node, it does not use a remote shell command, but uses the local OS copy or shell command. The Management Node must be defined in the xCAT database. The best way to do this is to use the xcatconfig -m option.
If the command is to be executed on the Management Node, it does not use a remote shell command, but uses the local OS copy or shell command. The Management Node must be defined in the xCAT database. The best way to do this is to use the \ **xcatconfig -m**\ option.
The \ **xdsh**\ command is an xCAT Distributed Shell Utility.
\ **COMMAND**\ \ **SPECIFICATION**\ :
@@ -176,8 +176,8 @@ the commands executing on the remote targets.
Signal 19 (CONT), Signal 17 (STOP), and Signal 18 (TSTP) default to
\ **xdsh**\ ; the \ **xdsh**\ command responds normally to these signals, but the
signals do not have an effect on remotely executing commands. Other
signals are caught by \ **xdsh**\ and have their default effects on the \ **xdsh**\
command; all current child processes, through propagation to remotely
signals are caught by \ **xdsh**\ and have their default effects on the \ **xdsh**\ command;
all current child processes, through propagation to remotely
running commands, are terminated (SIGTERM).
@@ -195,13 +195,13 @@ running commands, are terminated (SIGTERM).
\ **-c | -**\ **-cleanup**\
This flag will have xdsh remove all files from the subdirectories of the
the directory on the servicenodes, where xdcp stages the copy to the
This flag will have \ **xdsh**\ remove all files from the subdirectories of the
the directory on the service nodes, where \ **xdcp**\ stages the copy to the
compute nodes as defined in the site table SNsyncfiledir and nodesyncfiledir
attribute, when the target is a service node.
It can also be used to remove the nodesyncfiledir directory on the compute
nodes, which keeps the backup copies of files for the xdcp APPEND function
nodes, which keeps the backup copies of files for the \ **xdcp**\ APPEND function
support, if a compute node is the target.
@@ -234,7 +234,7 @@ running commands, are terminated (SIGTERM).
for Ethernet switches and and IB switches under
\ */opt/xcat/share/xcat/devicetype*\ directory. If you want to overwrite
any of the configuration files, copy them to \ */var/opt/xcat/*\
directory and cutomize.
directory and customize.
For example, \ *base/IBSwitch/Qlogic/config*\ is the configuration
file location if devicetype is specified as IBSwitch::Qlogic.
xCAT will first search config file using \ */var/opt/xcat/*\ as the base.
@@ -258,10 +258,10 @@ running commands, are terminated (SIGTERM).
\ **-i | -**\ **-rootimg**\ \ *install image*\
For Linux, Specifies the path to the install image on the local node.
For AIX, specifies the name of the osimage on the local node. Run lsnim
For AIX, specifies the name of the osimage on the local node. Run \ **lsnim**\
for valid names.
xdsh will chroot (xcatchroot for AIX) to this path and run the xdsh command against the
install image. No other xdsh flags, environment variables apply with
\ **xdsh**\ will \ **chroot**\ (\ **xcatchroot**\ for AIX) to this path and run the \ **xdsh**\ command against the
install image. No other \ **xdsh**\ flags, environment variables apply with
this input. A noderange is not accepted. Only runs on the local host,
normally the Management Node. The command you run must not prompt for input, the prompt will not be returned to you, and it will appear that \ **xdsh**\ hangs.
@@ -277,9 +277,9 @@ running commands, are terminated (SIGTERM).
The userid must have the same uid, gid and password as the userid on the node
where the keys will be setup.
If the current user is root, roots public ssh keys will be put in the
If the current user is root, root's public ssh keys will be put in the
authorized_keys\* files under roots .ssh directory on the node(s).
If the current user is non-root, the user must be in the policy table and have credential to run the xdsh command.
If the current user is non-root, the user must be in the policy table and have credential to run the \ **xdsh**\ command.
The non-root users public ssh keys and root's public ssh keys will be put in
the authorized_keys\* files under the non-root users .ssh directory on the node(s).
Other device types, such as IB switch, are also supported. The
@@ -344,8 +344,8 @@ running commands, are terminated (SIGTERM).
\ **-s | -**\ **-stream**\
Specifies that output is returned as it becomes available
from each target, instead of waiting for the \ *command_list*\
to be completed on a target before returning output.
from each target, instead of waiting for the \ *command_list*\ to
be completed on a target before returning output.
@@ -358,17 +358,17 @@ running commands, are terminated (SIGTERM).
\ **-**\ **-sudo**\
Adding the \ **-**\ **-sudo**\ flag to the xdsh command will have xdsh run sudo before
Adding the \ **-**\ **-sudo**\ flag to the \ **xdsh**\ command will have \ **xdsh**\ run \ **sudo**\ before
running the command. This is particular useful when using the \ **-e**\ option.
This is required when you input \ **-l**\ with a non-root user id and want that id
to be able to run as root on the node. The non-root userid will must be
previously defined as an xCAT user, see process for defining non-root ids in
xCAT and setting up for using xdsh. The userid sudo setup will have
xCAT and setting up for using \ **xdsh**\ . The userid \ **sudo**\ setup will have
to be done by the admin on the node. This includes, allowing all commands that
you would like to run with xdsh by using visudo to edit the /etc/sudoers file.
You must disabl ssh tty requirements by commenting out or removing this line in the /etc/sudoes file "#Defaults requiretty".
See the document Granting_Users_xCAT_privileges for sudo setup requirements.
This is not supported in a hierarical cluster, that is the nodes are serviced by servicenodes.
you would like to run with \ **xdsh**\ by using \ **visudo**\ to edit the /etc/sudoers file.
You must disable ssh tty requirements by commenting out or removing this line in the /etc/sudoes file "#Defaults requiretty".
See the document https://xcat-docs.readthedocs.io/en/stable/advanced/security/security.html#granting-users-xcat-privileges for \ **sudo**\ setup requirements.
This is not supported in a hierarchical cluster, where the nodes are serviced by service nodes.
@@ -417,7 +417,7 @@ running commands, are terminated (SIGTERM).
string, all \ **xdsh**\ environment variables will be ignored.
This option is useful when running \ **xdsh**\ from within other
scripts when you don't want the user's environment affecting
the behavior of xdsh.
the behavior of \ **xdsh**\ .
@@ -510,7 +510,7 @@ running commands, are terminated (SIGTERM).
\ **DSH_REMOTE_PASSWORD**\
If \ **DSH_REMOTE_PASSWORD**\ is set to the password of the
userid (usually root) that will ssh to the node, then when
userid (usually root) that will \ **ssh**\ to the node, then when
you use the \ **-K**\ flag, you will not be prompted for a password.
@@ -563,7 +563,7 @@ error is displayed and execution is bypassed for a remote target if
password prompting occurs, or if either authorization or
authentication to the remote target fails. Security configurations as they
pertain to the remote environment and remote shell command are
userdefined.
user defined.
*******************
@@ -571,7 +571,7 @@ userdefined.
*******************
The \ **xdsh**\ command exit code is 0 if the command executed without errors and all remote shell commands finished with exit codes of 0. If internal dsh errors occur or the remote shell commands do not complete successfully, the dsh command exit value is greater than 0. The exit value is increased by 1 for each successive instance of an unsuccessful remote command execution. If the remotely issued command is run in the background, the exit code of the remotely issued command is 0.
The \ **xdsh**\ command exit code is 0 if the command executed without errors and all remote shell commands finished with exit codes of 0. If internal \ **dsh**\ errors occur or the remote shell commands do not complete successfully, the \ **dsh**\ command exit value is greater than 0. The exit value is increased by 1 for each successive instance of an unsuccessful remote command execution. If the remotely issued command is run in the background, the exit code of the remotely issued command is 0.
****************
@@ -600,7 +600,7 @@ The \ **xdsh**\ command exit code is 0 if the command executed without errors a
3. To run the \ **ps**\ command on node targets \ **node1**\ and run the remote command with the -v and -t flag, enter:
3. To run the \ **ps**\ command on node targets \ **node1**\ and run the remote command with the \ **-v**\ and \ **-t**\ flag, enter:
.. code-block:: perl
@@ -621,7 +621,7 @@ context on several node targets, with a fanout of \ **1**\ , enter:
5. To run the ps command on node1 and ignore all the dsh
5. To run the \ **ps**\ command on node1 and ignore all the \ **dsh**\
environment variable except the DSH_NODE_OPTS, enter:
@@ -632,7 +632,7 @@ environment variable except the DSH_NODE_OPTS, enter:
6. To run on Linux, the xdsh command "rpm -qa | grep xCAT"
6. To run on Linux, the \ **xdsh**\ command \ **rpm -qa | grep xCAT**\
on the service node fedora9 diskless image, enter:
@@ -643,7 +643,7 @@ on the service node fedora9 diskless image, enter:
7. To run on AIX, the xdsh command "lslpp -l | grep bos" on the NIM 611dskls spot, enter:
7. To run on AIX, the \ **xdsh**\ command \ **lslpp -l | grep bos**\ on the NIM 611dskls spot, enter:
.. code-block:: perl
@@ -653,7 +653,7 @@ on the service node fedora9 diskless image, enter:
8. To cleanup the servicenode directory that stages the copy of files to the nodes, enter:
8. To cleanup the service node directory that stages the copy of files to the nodes, enter:
.. code-block:: perl
@@ -722,7 +722,7 @@ on the service node fedora9 diskless image, enter:
13. To run \ **xdsh**\ with the non-root userid "user1" that has been setup as an xCAT userid and with sudo on node1 and node2 to run as root, do the following, see xCAT doc on Granting_Users_xCAT_privileges:
13. To run \ **xdsh**\ with the non-root userid "user1" that has been setup as an xCAT userid and with \ **sudo**\ on node1 and node2 to run as root, do the following, see xCAT doc https://xcat-docs.readthedocs.io/en/stable/advanced/security/security.html#granting-users-xcat-privileges:
.. code-block:: perl
@@ -27,8 +27,8 @@ DESCRIPTION
***********
The \ **xdshbak**\ command formats output from the \ **xdsh**\ command. The \ **xdshbak**\
command takes, as input, lines in the following format:
The \ **xdshbak**\ command formats output from the \ **xdsh**\ command.
The \ **xdshbak**\ command takes, as input, lines in the following format:
.. code-block:: perl
@@ -73,11 +73,11 @@ When output is displayed from more than one node in collapsed form, the
host names are displayed alphabetically. When output is not collapsed,
output is displayed sorted alphabetically by host name.
If the \ **-q**\ quiet flag is not set then \ **xdshbak**\
command writes "." for each 1000 lines of output processed (to show progress),
If the \ **-q**\ quiet flag is not set then \ **xdshbak**\ command
writes "." for each 1000 lines of output processed (to show progress),
since it won't display the output until it has processed all of it.
If the \ **-x**\ flag is specified, the extra header lines that xdshbak normally
If the \ **-x**\ flag is specified, the extra header lines that \ **xdshbak**\ normally
displays for each node will be omitted, and the hostname at the beginning
of each line is not stripped off, but \ **xdshbak**\ still sorts
the output by hostname for easier viewing:
@@ -128,9 +128,9 @@ OPTIONS
\ **-x**\
Omit the extra header lines that xdshbak normally displays for
Omit the extra header lines that \ **xdshbak**\ normally displays for
each node. This provides
more compact output, but xdshbak still sorts the output by
more compact output, but \ **xdshbak**\ still sorts the output by
node name for easier viewing.
This option should not be used with \ **-c**\ .
@@ -11,7 +11,7 @@ xdshcoll.1
************
\ **xdshcoll**\ - Formats and consolidates the output of the \ **xdsh,sinv**\ commands.
\ **xdshcoll**\ - Formats and consolidates the output of the \ **xdsh, sinv**\ commands.
****************
@@ -27,7 +27,7 @@ xdshcoll.1
*******************
The \ **xdshcoll**\ command formats and consolidates output from the \ **xdsh,sinv**\ command. The \ **xdshcoll**\
The \ **xdshcoll**\ command formats and consolidates output from the \ **xdsh, sinv**\ commands. The \ **xdshcoll**\
command takes, as input, lines in the following format:
host_name: line of output from remote command
@@ -75,12 +75,12 @@ is identical:
1. To display the results of a command issued on several nodes, in
the format used in the Description, enter:
the format shown in the Description, enter:
.. code-block:: perl
xdsh node1,node2,node3 cat /etc/passwd> | B<xdshcoll
xdsh node1,node2,node3 cat /etc/passwd | xdshcoll
@@ -19,79 +19,57 @@ DESCRIPTION
***********
A stanza file contains information that can be used to create xCAT data object definitions. A stanza file can be used as input to several xCAT commands. The stanza file contains one or more individual stanzas that provide information for individual object definitions. The following rules must be followed when creating a stanza file:
A stanza file contains information that can be used to create xCAT data object definitions. A stanza file can be used as input to several xCAT commands. The stanza file contains one or more individual stanzas that provide information for individual object definitions as well as an optional default definition that applies to all subsequent object definitions of that type.
The following rules must be followed when creating a stanza file:
\*
An object stanza header consists of the object name followed by a colon, (":").
\* An object stanza header consists of the object name followed by a colon, (":").
\*
Attribute lines must take the form of Attribute=Value.
\* Attribute lines must take the form of Attribute=Value.
\*
Attribute name might include the character dot ("."), like passwd.HMC and nicips.eth0.
\* Attribute name might include the character dot ("."), like passwd.HMC and nicips.eth0.
\*
Only one stanza can exist for each object name.
\* Only one stanza can exist for each object name.
\*
All stanzas except for default stanzas must have a value set for "objtype".
\* All stanzas except for default stanzas must have a value set for "objtype".
\*
Comments beginning with the "#" pound sign may be added to the file. A comment must be on a separate line.
\* Comments beginning with the "#" pound sign may be added to the file. A comment must be on a separate line.
\*
When parsing the file, tab characters and spaces are ignored.
\* When parsing the file, tab characters and spaces are ignored.
\*
Each line of the file can have no more than one header or attribute definition.
\* Each line of the file can have no more than one header or attribute definition.
\*
If the header name is "default-<object type>:" the attribute values in the stanza are considered default values for subsequent definitions in the file that are the same object type.
\* If the header name is "default-<object type>:" the attribute values in the stanza are considered default values for subsequent definitions in the file that are the same object type.
\*
Default stanzas can be specified multiple times and at any point in a stanza file. The values apply to all definitions following the default stanzas in a file. The default values are cumulative; a default attribute value will remain set until it is explicitly unset or changed.
\* Default stanzas can be specified multiple times and at any point in a stanza file. The values apply to all definitions following the default stanzas in a file. The default values are cumulative; a default attribute value will remain set until it is explicitly unset or changed.
\*
To turn off a default value, use another default stanza to set the attribute to have no value using a blank space.
\* To turn off a default value, use another default stanza to set the attribute to have no value using a blank space.
\*
When a specific value for an attribute is provided in the stanza, it takes priority over any default value that had been set.
\* When a specific value for an attribute is provided in the stanza, it takes priority over any default value that had been set.
The format of a stanza file should look similar to the following.
+1 -3
View File
@@ -1,5 +1,3 @@
Version,Release Date,New OS Supported,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.1,2020-03-06,"RHEL 7.7",`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.1 2020-03-06 RHEL 8.1,RHEL 7.7,SLES 15.0 RHEL 7.7 `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>`_
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>`_
+2 -3
View File
@@ -1,4 +1,3 @@
Version,Release Date,New OS Supported,Release Notes
2.16.0,2020-06-17,,`2.16.0 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.16_Release_Notes>`_
2.16.1,2020-11-06,"RHEL 8.2",`2.16.1 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.16.1_Release_Notes>`_
2.16.0,2020-06-17,"RHEL 8.1,SLES 15",`2.16.0 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.16_Release_Notes>`_
1 Version Release Date New OS Supported Release Notes
2 2.16.0 2.16.1 2020-06-17 2020-11-06 RHEL 8.2 `2.16.0 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.16_Release_Notes>`_ `2.16.1 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.16.1_Release_Notes>`_
3 2.16.0 2020-06-17 RHEL 8.1,SLES 15 `2.16.0 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.16_Release_Notes>`_
+3 -1
View File
@@ -1,7 +1,9 @@
Troubleshooting
===============
This chapter introduces the methods of troubleshooting a xCAT cluster. It includes the following parts.
This chapter introduces the methods of debugging and troubleshooting a xCAT cluster. `General xCAT troubleshooting and debugging suggestions <https://sourceforge.net/p/xcat/wiki/Debugging_xCAT_Problems/>`_
Additional recomendations:
.. toctree::
:maxdepth: 2
+1 -1
View File
@@ -318,7 +318,7 @@ if (($INIT) && ($xcatrunningpgsql == 0))
# if that does not exist use resolved hostname
# double check site.master for resolution
my $sitefile = "$::backupdir/site.csv";
my $cmd = "grep master $sitefile";
my $cmd = "grep \"master $sitefile";
my @output = xCAT::Utils->runcmd($cmd, -1);
if ($::RUNCMD_RC == 0) # entry in site table
{
+6 -2
View File
@@ -6,7 +6,7 @@ B<imgexport> - Exports an xCAT image.
B<imgexport [-h| --help]>
B<imgexport> I<image_name> [I<destination>] [[B<-e>|B<--extra> I<file:dir>] ... ] [B<-p>|B<--postscripts> I<node_name>] [B<-v>|B<--verbose>]
B<imgexport> I<image_name> [I<destination>] [B<-e>|B<--extra> I<file:dir>] ... ] [B<-p>|B<--postscripts> I<node_name>] [B<-R>|B<--remotehost> I<user@host>] [B<-v>|B<--verbose>]
=head1 DESCRIPTION
@@ -65,6 +65,10 @@ Display usage message.
Get the names of the postscripts and postbootscripts for the given node and pack them into the image.
=item B<-R|--remotehost> I<user@host>
Export the image to remote host. Passwordless ssh must be setup to the remote host.
=item B<-v|--verbose>
Verbose output.
@@ -92,7 +96,7 @@ The output bundle file name.
imgexport foo
foo.tgz will be built in the current working directory. Make sure that you have enough space in the directory that you are in to run imgexport if you have a big image to tar up.
foo.tgz will be built in the current working directory. Make sure that you have enough space in the directory that you are in to run imgexport, if you have a big image to tar up.
2. To include extra files with your image:
+5 -1
View File
@@ -6,7 +6,7 @@ B<imgimport> - Imports an xCAT image or configuration file into the xCAT tables
B<imgimport [-h|--help]>
B<imgimport> I<bundle_file_name> [B<-p>|B<--postscripts> I<nodelist>] [B<-f>|B<--profile> I<new_profile>] [B<-v>|B<--verbose>]
B<imgimport> I<bundle_file_name> [B<-p>|B<--postscripts> I<nodelist>] [B<-f>|B<--profile> I<new_profile>] [B<-R>|B<--remotehost> I<user@host>] [B<-v>|B<--verbose>]
=head1 DESCRIPTION
@@ -82,6 +82,10 @@ Display usage message.
Import the postscripts. The postscripts contained in the image will be set in the postscripts table for I<nodelist>.
=item B<-R|--remotehost> I<user@host>
Import the image from remote host. Passwordless ssh must be setup to the remote host.
=item B<-v|--verbose>
Verbose output.
+7 -7
View File
@@ -15,8 +15,8 @@ B<pgsqlsetup> {B<-o> | B<--setupODBC>} [B<-V> | B<--verbose>]
=head1 DESCRIPTION
B<pgsqlsetup> - Sets up the PostgreSQL database for xCAT to use. The pgsqlsetup script is run on the Management Node as root after the PostgreSQL code has been installed. The xcatd daemon will be stopped during migration. No xCAT commands should be run during the init process, because we will be migrating the xCAT database to PostgreSQL and restarting the xcatd daemon as well as the PostgreSQL daemon. For full information on all the steps that will be done reference
One password must be supplied for the setup, a password for the xcatadm unix id and the same password for the xcatadm database id. The password will be prompted for interactively or you can set the XCATPGPW environment variable to the password and then there will be no prompt.
B<pgsqlsetup> - Sets up the PostgreSQL database for xCAT to use. The B<pgsqlsetup> script is run on the Management Node as root after the PostgreSQL has been installed. The B<xcatd> daemon will be stopped during migration. No xCAT commands should be run during the init process, because we will be migrating the xCAT database to PostgreSQL and restarting the B<xcatd> daemon as well as the PostgreSQL daemon.
One password must be supplied for the setup, a password for the xcatadm unix id and the same password for the xcatadm database id. The password will be prompted for interactively or you can set the XCATPGPW environment variable to the password in order to avoid the prompt.
=head1 OPTIONS
@@ -36,15 +36,15 @@ Displays verbose messages.
=item B<-i|--init>
The init option is used to setup an installed PostgreSQL database so that xCAT can use the database. This involves creating the xcat database, the xcat admin id, allowing access to the xcatdb database by the Management Node. It customizes the postgresql.conf configuration file, adds the management server to the pg_hba.conf and starts the PostgreSQL server. It also backs up the current xCAT database and restores it into the newly setup xcatdb PostgreSQL database. It creates the /etc/xcat/cfgloc file to point the xcatd daemon to the PostgreSQL database and restarts the xcatd daemon using the database.
On AIX, it additionally setup the xcatadm unix id and the postgres id and group. For AIX, you should be using the PostgreSQL rpms available from the xCAT website. For Linux, you should use the PostgreSQL rpms shipped with the OS. You can chose the -o option, to run after the init.
To add additional nodes to access the PostgreSQL server, setup on the Management Node, use the -a option.
The B<--init> option is used to setup an installed PostgreSQL database so that xCAT can use it. This involves creating the xcat database, the xcat admin id, allowing access to the xcatdb database by the Management Node. It customizes the postgresql.conf configuration file, adds the management server to the pg_hba.conf and starts the PostgreSQL server. It also backs up the current xCAT database and restores it into the newly setup xcatdb PostgreSQL database. It creates the /etc/xcat/cfgloc file to point the B<xcatd> daemon to the PostgreSQL database and restarts the B<xcatd> daemon using the database.
On AIX, it additionally setup the xcatadm unix id and the postgres id and group. For AIX, you should be using the PostgreSQL rpms available from the xCAT website. For Linux, you should use the PostgreSQL rpms shipped with the OS. You can chose the B<-o> option, to run after the init.
To add additional nodes to access the PostgreSQL server, setup on the Management Node, use the B<-a> option.
For more documentation see:Setting_Up_PostgreSQL_as_the_xCAT_DB
For more documentation see:<https://xcat-docs.readthedocs.io/en/stable/advanced/hierarchy/databases/index.html#postgresql>
=item B<-N|--nostart>
This option with the -i flag will create the database, but will not backup and restore xCAT tables into the database. It will create the cfgloc file such that the next start of xcatd will try and contact the database. This can be used to setup the xCAT PostgreSQL database during or before install.
This option with the B<-i> flag will create the database, but will not backup and restore xCAT tables into the database. It will create the cfgloc file such that the next start of B<xcatd> will try and contact the database. This can be used to setup the xCAT PostgreSQL database during or before install.
=item B<-l|--listen> I<address>
+5 -5
View File
@@ -5,7 +5,7 @@ B<replaycons> - replay the console output for a node
=head1 SYNOPSIS
B<replaycons> [I<node>] [I<bps>] [I<tail_amount>]
B<replaycons> I<node log file> [I<bps>] [I<tail_amount>]
B<replaycons> [B<-h> | B<--help> | B<-v> | B<--version>]
@@ -14,9 +14,9 @@ B<replaycons> [B<-h> | B<--help> | B<-v> | B<--version>]
The B<replaycons> command reads the console log stored by conserver for this node, and displays it
in a way that simulates the original output of the console. Using the I<bps> value, it will throttle
the speed of the output play back. (The conserver logs are stored in /var/log/consoles.)
the speed of the output play back. (The logs are stored in /var/log/consoles.)
For now, replaycons must be run locally on the system on which the console log is stored. This is normally
B<replaycons> must be run locally on the system on which the console log is stored. This is normally
that management node, but in a hierarchical cluster will usually be the service node.
@@ -30,7 +30,7 @@ The display rate to use to play back the console output. Default is 19200.
=item I<tail_amount>
The place in the console log file to start play back, specified as the # of lines from the end.
The place in the console log file to start play back, specified as the number of lines from the end.
=item B<-v|--version>
@@ -64,7 +64,7 @@ An error has occurred.
To replay the console for node1 at the default rate, starting 2000 lines from the end:
replaycons 19200 2000
replaycons node1.log 19200 2000
=back
+1 -1
View File
@@ -351,7 +351,7 @@ AIX and Linux and updating software (-S) for Linux only.
The non-root userid must be previously defined as an xCAT user.
The userid sudo setup will have to be done by the admin on the node.
This is not supported in a hierarchical cluster, that is the node is serviced by a service node.
See the document Granting_Users_xCAT_privileges for required xcat/sudo setup.
See the document https://xcat-docs.readthedocs.io/en/stable/advanced/security/security.html#granting-users-xcat-privileges for required xcat/sudo setup.
=item B<-P|--scripts>
+30 -30
View File
@@ -24,7 +24,7 @@ The B<xdsh> command runs commands in parallel on remote nodes and/or the Managem
remote shell command for each target specified, and returns the output
from all targets,
formatted so that command results from all nodes can be managed.
If the command is to be executed on the Management Node, it does not use a remote shell command, but uses the local OS copy or shell command. The Management Node must be defined in the xCAT database. The best way to do this is to use the xcatconfig -m option.
If the command is to be executed on the Management Node, it does not use a remote shell command, but uses the local OS copy or shell command. The Management Node must be defined in the xCAT database. The best way to do this is to use the B<xcatconfig -m> option.
The B<xdsh> command is an xCAT Distributed Shell Utility.
@@ -159,8 +159,8 @@ the commands executing on the remote targets.
Signal 19 (CONT), Signal 17 (STOP), and Signal 18 (TSTP) default to
B<xdsh>; the B<xdsh> command responds normally to these signals, but the
signals do not have an effect on remotely executing commands. Other
signals are caught by B<xdsh> and have their default effects on the B<xdsh>
command; all current child processes, through propagation to remotely
signals are caught by B<xdsh> and have their default effects on the B<xdsh> command;
all current child processes, through propagation to remotely
running commands, are terminated (SIGTERM).
=head1 B<OPTIONS>
@@ -173,13 +173,13 @@ Runs in bypass mode, use if the xcatd daemon is hung.
=item B<-c>|B<--cleanup>
This flag will have xdsh remove all files from the subdirectories of the
the directory on the servicenodes, where xdcp stages the copy to the
This flag will have B<xdsh> remove all files from the subdirectories of the
the directory on the service nodes, where B<xdcp> stages the copy to the
compute nodes as defined in the site table SNsyncfiledir and nodesyncfiledir
attribute, when the target is a service node.
It can also be used to remove the nodesyncfiledir directory on the compute
nodes, which keeps the backup copies of files for the xdcp APPEND function
nodes, which keeps the backup copies of files for the B<xdcp> APPEND function
support, if a compute node is the target.
=item B<-e>|B<--execute>
@@ -206,7 +206,7 @@ xCAT ships some default configuration files
for Ethernet switches and and IB switches under
I</opt/xcat/share/xcat/devicetype> directory. If you want to overwrite
any of the configuration files, copy them to I</var/opt/xcat/>
directory and cutomize.
directory and customize.
For example, I<base/IBSwitch/Qlogic/config> is the configuration
file location if devicetype is specified as IBSwitch::Qlogic.
xCAT will first search config file using I</var/opt/xcat/> as the base.
@@ -225,10 +225,10 @@ Displays usage information.
=item B<-i>|B<--rootimg> I<install image>
For Linux, Specifies the path to the install image on the local node.
For AIX, specifies the name of the osimage on the local node. Run lsnim
For AIX, specifies the name of the osimage on the local node. Run B<lsnim>
for valid names.
xdsh will chroot (xcatchroot for AIX) to this path and run the xdsh command against the
install image. No other xdsh flags, environment variables apply with
B<xdsh> will B<chroot> (B<xcatchroot> for AIX) to this path and run the B<xdsh> command against the
install image. No other B<xdsh> flags, environment variables apply with
this input. A noderange is not accepted. Only runs on the local host,
normally the Management Node. The command you run must not prompt for input, the prompt will not be returned to you, and it will appear that B<xdsh> hangs.
@@ -240,9 +240,9 @@ Set up the SSH keys for the user running the command to the specified node list.
The userid must have the same uid, gid and password as the userid on the node
where the keys will be setup.
If the current user is root, roots public ssh keys will be put in the
If the current user is root, root's public ssh keys will be put in the
authorized_keys* files under roots .ssh directory on the node(s).
If the current user is non-root, the user must be in the policy table and have credential to run the xdsh command.
If the current user is non-root, the user must be in the policy table and have credential to run the B<xdsh> command.
The non-root users public ssh keys and root's public ssh keys will be put in
the authorized_keys* files under the non-root users .ssh directory on the node(s).
Other device types, such as IB switch, are also supported. The
@@ -293,8 +293,8 @@ for remote command execution on node targets.
=item B<-s>|B<--stream>
Specifies that output is returned as it becomes available
from each target, instead of waiting for the I<command_list>
to be completed on a target before returning output.
from each target, instead of waiting for the I<command_list> to
be completed on a target before returning output.
=item B<-S>|B<--syntax> {B<csh>|B<ksh>}
@@ -303,17 +303,17 @@ If not specified, the B<ksh> syntax is used.
=item B<--sudo>
Adding the B<--sudo> flag to the xdsh command will have xdsh run sudo before
Adding the B<--sudo> flag to the B<xdsh> command will have B<xdsh> run B<sudo> before
running the command. This is particular useful when using the B<-e> option.
This is required when you input B<-l> with a non-root user id and want that id
to be able to run as root on the node. The non-root userid will must be
previously defined as an xCAT user, see process for defining non-root ids in
xCAT and setting up for using xdsh. The userid sudo setup will have
xCAT and setting up for using B<xdsh>. The userid B<sudo> setup will have
to be done by the admin on the node. This includes, allowing all commands that
you would like to run with xdsh by using visudo to edit the /etc/sudoers file.
You must disabl ssh tty requirements by commenting out or removing this line in the /etc/sudoes file "#Defaults requiretty".
See the document Granting_Users_xCAT_privileges for sudo setup requirements.
This is not supported in a hierarical cluster, that is the nodes are serviced by servicenodes.
you would like to run with B<xdsh> by using B<visudo> to edit the /etc/sudoers file.
You must disable ssh tty requirements by commenting out or removing this line in the /etc/sudoes file "#Defaults requiretty".
See the document https://xcat-docs.readthedocs.io/en/stable/advanced/security/security.html#granting-users-xcat-privileges for B<sudo> setup requirements.
This is not supported in a hierarchical cluster, where the nodes are serviced by service nodes.
=item B<-t>|B<--timeout> I<timeout>
@@ -352,7 +352,7 @@ argument to this option, or the argument is an empty
string, all B<xdsh> environment variables will be ignored.
This option is useful when running B<xdsh> from within other
scripts when you don't want the user's environment affecting
the behavior of xdsh.
the behavior of B<xdsh>.
=item B<-z>|B<--exit-status>
@@ -428,7 +428,7 @@ remote I<user_ID> is used.
=item B<DSH_REMOTE_PASSWORD>
If B<DSH_REMOTE_PASSWORD> is set to the password of the
userid (usually root) that will ssh to the node, then when
userid (usually root) that will B<ssh> to the node, then when
you use the B<-K> flag, you will not be prompted for a password.
@@ -468,12 +468,12 @@ error is displayed and execution is bypassed for a remote target if
password prompting occurs, or if either authorization or
authentication to the remote target fails. Security configurations as they
pertain to the remote environment and remote shell command are
userdefined.
user defined.
=head1 B<EXIT STATUS>
The B<xdsh> command exit code is 0 if the command executed without errors and all remote shell commands finished with exit codes of 0. If internal dsh errors occur or the remote shell commands do not complete successfully, the dsh command exit value is greater than 0. The exit value is increased by 1 for each successive instance of an unsuccessful remote command execution. If the remotely issued command is run in the background, the exit code of the remotely issued command is 0.
The B<xdsh> command exit code is 0 if the command executed without errors and all remote shell commands finished with exit codes of 0. If internal B<dsh> errors occur or the remote shell commands do not complete successfully, the B<dsh> command exit value is greater than 0. The exit value is increased by 1 for each successive instance of an unsuccessful remote command execution. If the remotely issued command is run in the background, the exit code of the remotely issued command is 0.
=head1 B<EXAMPLES>
@@ -491,7 +491,7 @@ To run the B<ps -ef> command on node targets B<node1> and B<node2>, enter:
xdsh node1,node2 "ps -ef"
=item 3.
To run the B<ps> command on node targets B<node1> and run the remote command with the -v and -t flag, enter:
To run the B<ps> command on node targets B<node1> and run the remote command with the B<-v> and B<-t> flag, enter:
xdsh node1,node2 -o "-v -t" ps
@@ -502,24 +502,24 @@ context on several node targets, with a fanout of B<1>, enter:
xdsh node1,node2 -f 1 -e myfile
=item 5.
To run the ps command on node1 and ignore all the dsh
To run the B<ps> command on node1 and ignore all the B<dsh>
environment variable except the DSH_NODE_OPTS, enter:
xdsh node1 -X `DSH_NODE_OPTS' ps
=item 6.
To run on Linux, the xdsh command "rpm -qa | grep xCAT"
To run on Linux, the B<xdsh> command B<rpm -qa | grep xCAT>
on the service node fedora9 diskless image, enter:
xdsh -i /install/netboot/fedora9/x86_64/service/rootimg "rpm -qa | grep xCAT"
=item 7.
To run on AIX, the xdsh command "lslpp -l | grep bos" on the NIM 611dskls spot, enter:
To run on AIX, the B<xdsh> command B<lslpp -l | grep bos> on the NIM 611dskls spot, enter:
xdsh -i 611dskls "/usr/bin/lslpp -l | grep bos"
=item 8.
To cleanup the servicenode directory that stages the copy of files to the nodes, enter:
To cleanup the service node directory that stages the copy of files to the nodes, enter:
xdsh servicenoderange -c
@@ -559,7 +559,7 @@ If it is for Telnet, add I<tn:> in front of the user name: I<tn:admin>.
dsh myswitch --devicetype EthSwitch::BNT 'enable;configure terminal;vlan 3;end;show vlan'
=item 13.
To run B<xdsh> with the non-root userid "user1" that has been setup as an xCAT userid and with sudo on node1 and node2 to run as root, do the following, see xCAT doc on Granting_Users_xCAT_privileges:
To run B<xdsh> with the non-root userid "user1" that has been setup as an xCAT userid and with B<sudo> on node1 and node2 to run as root, do the following, see xCAT doc https://xcat-docs.readthedocs.io/en/stable/advanced/security/security.html#granting-users-xcat-privileges:
xdsh node1,node2 --sudo -l user1 "cat /etc/passwd"
+7 -7
View File
@@ -8,8 +8,8 @@ B<xdshbak> [B<-c> | B<-x> [ B<-b> ] | B<-h> | B<-q>]
=head1 DESCRIPTION
The B<xdshbak> command formats output from the B<xdsh> command. The B<xdshbak>
command takes, as input, lines in the following format:
The B<xdshbak> command formats output from the B<xdsh> command.
The B<xdshbak> command takes, as input, lines in the following format:
host_name: line of output from remote command
@@ -46,11 +46,11 @@ When output is displayed from more than one node in collapsed form, the
host names are displayed alphabetically. When output is not collapsed,
output is displayed sorted alphabetically by host name.
If the B<-q> quiet flag is not set then B<xdshbak>
command writes "." for each 1000 lines of output processed (to show progress),
If the B<-q> quiet flag is not set then B<xdshbak> command
writes "." for each 1000 lines of output processed (to show progress),
since it won't display the output until it has processed all of it.
If the B<-x> flag is specified, the extra header lines that xdshbak normally
If the B<-x> flag is specified, the extra header lines that B<xdshbak> normally
displays for each node will be omitted, and the hostname at the beginning
of each line is not stripped off, but B<xdshbak> still sorts
the output by hostname for easier viewing:
@@ -87,9 +87,9 @@ and displayed only once.
=item B<-x>
Omit the extra header lines that xdshbak normally displays for
Omit the extra header lines that B<xdshbak> normally displays for
each node. This provides
more compact output, but xdshbak still sorts the output by
more compact output, but B<xdshbak> still sorts the output by
node name for easier viewing.
This option should not be used with B<-c>.
+4 -4
View File
@@ -1,6 +1,6 @@
=head1 B<NAME>
B<xdshcoll> - Formats and consolidates the output of the B<xdsh,sinv> commands.
B<xdshcoll> - Formats and consolidates the output of the B<xdsh, sinv> commands.
=head1 B<SYNOPSIS>
@@ -8,7 +8,7 @@ B<xdshcoll>
=head1 B<DESCRIPTION>
The B<xdshcoll> command formats and consolidates output from the B<xdsh,sinv> command. The B<xdshcoll>
The B<xdshcoll> command formats and consolidates output from the B<xdsh, sinv> commands. The B<xdshcoll>
command takes, as input, lines in the following format:
host_name: line of output from remote command
@@ -51,9 +51,9 @@ is identical:
=item 1.
To display the results of a command issued on several nodes, in
the format used in the Description, enter:
the format shown in the Description, enter:
xdsh node1,node2,node3 cat /etc/passwd> | B<xdshcoll
xdsh node1,node2,node3 cat /etc/passwd | xdshcoll
=back
+3 -13
View File
@@ -4,56 +4,46 @@ B<xcatstanzafile> - Format of a stanza file that can be used with xCAT data obje
=head1 DESCRIPTION
A stanza file contains information that can be used to create xCAT data object definitions. A stanza file can be used as input to several xCAT commands. The stanza file contains one or more individual stanzas that provide information for individual object definitions. The following rules must be followed when creating a stanza file:
A stanza file contains information that can be used to create xCAT data object definitions. A stanza file can be used as input to several xCAT commands. The stanza file contains one or more individual stanzas that provide information for individual object definitions as well as an optional default definition that applies to all subsequent object definitions of that type.
The following rules must be followed when creating a stanza file:
=over 2
=item *
An object stanza header consists of the object name followed by a colon, (":").
=item *
Attribute lines must take the form of Attribute=Value.
=item *
Attribute name might include the character dot ("."), like passwd.HMC and nicips.eth0.
=item *
Only one stanza can exist for each object name.
=item *
All stanzas except for default stanzas must have a value set for "objtype".
=item *
Comments beginning with the "#" pound sign may be added to the file. A comment must be on a separate line.
=item *
When parsing the file, tab characters and spaces are ignored.
=item *
Each line of the file can have no more than one header or attribute definition.
=item *
If the header name is "default-<object type>:" the attribute values in the stanza are considered default values for subsequent definitions in the file that are the same object type.
=item *
Default stanzas can be specified multiple times and at any point in a stanza file. The values apply to all definitions following the default stanzas in a file. The default values are cumulative; a default attribute value will remain set until it is explicitly unset or changed.
=item *
To turn off a default value, use another default stanza to set the attribute to have no value using a blank space.
=item *
When a specific value for an attribute is provided in the stanza, it takes priority over any default value that had been set.
=back
+1
View File
@@ -25,6 +25,7 @@ BuildArch: noarch
%endif
Requires: perl-xCAT = 4:%{version}-%{release}
Requires: cpio
# fping or nmap is needed by pping (in case xCAT-client is installed by itself on a remote client)
%ifos linux
+6 -4
View File
@@ -45,6 +45,8 @@ my %type_nodesnum = ();
# matching --> matched --> installing --> booting --> booted
# matching --> matched --> booting --> installing --> xxx --> booted
# The terminal state is configured(For PDU/Switch) or booted(for Node)
# matching means node found matching the range, but no status attribute value
# matched means node found matching the range, with mac attribute value, but no status attribute value
#-----------------------------
my %state_node_hash = ();
@@ -240,7 +242,7 @@ sub update_nodes_info {
foreach (@unmatched_nodes_attributes) {
if (/^(.*):\s*mac=(.*)$/) {
if ($2) {
update_node_info($1, "Matched");
update_node_info($1, "matched (no status)");
}
}
}
@@ -279,7 +281,7 @@ sub update_node_info {
if (exists($state_node_hash{$node_type}{$node_state}{$node})) {
delete($state_node_hash{$node_type}{$node_state}{$node});
}
unless (scalar keys ($state_node_hash{$node_type}{$node_state})) {
unless (scalar keys (%{$state_node_hash{$node_type}{$node_state}})) {
delete($state_node_hash{$node_type}{$node_state});
}
@@ -307,10 +309,10 @@ sub check_nodes_attributes {
$node_info{$_}{state} = $nodehash{$_}{status};
$unfinished_nodes{$_} = 1;
} elsif ($nodehash{$_}{mac}) {
$node_info{$_}{state} = "Matched";
$node_info{$_}{state} = "matched (no status)";
$unfinished_nodes{$_} = 1;
} else {
$node_info{$_}{state} = "matching";
$node_info{$_}{state} = "matching (no status, no mac)";
$unmatched_nodes{$_} = 1;
}
if ($nodehash{$_}{mgt} eq 'pdu') {
+1 -1
View File
@@ -144,7 +144,7 @@ if ($help) {
}
if ($test) {
probe_utils->send_msg("$output", "o", "This isn't a probe tool, this is just a template for sub command coding. Using it to develop sub command which need to cover hierarchical cluster");
probe_utils->send_msg("$output", "o", "This isn't a probe tool, this is just a template for sub command coding. Use it to develop sub command which need to cover hierarchical cluster");
exit 0;
}
+1 -1
View File
@@ -11,7 +11,7 @@ Vendor: IBM Corp.
Distribution: %{?_distribution:%{_distribution}}%{!?_distribution:%{_vendor}}
Prefix: /opt/xcat
BuildRoot: /var/tmp/%{name}-%{version}-%{release}-root
Requires: xCAT-client
PreReq: xCAT-client = 4:%{version}-%{release}
%ifos linux
BuildArch: noarch
+1 -1
View File
@@ -17,7 +17,7 @@ use Getopt::Long;
my $usage_string =
"Usage:
replaycons node [bps] [tail]
replaycons node_log [bps] [tail]
replaycons -h|--help
replaycons -v|--version
bps Specifies the display rate.
+2 -1
View File
@@ -102,7 +102,8 @@ sub run_cmd_in_perl {
# List of commands currently not supported in Python
my @unsupported_in_python_commands = ('rflash', 'getopenbmccons');
if ($command ~~ @unsupported_in_python_commands) {
my @temp = grep ({$command =~ $_ } @unsupported_in_python_commands);
if ( $command eq $temp[0]) {
# Command currently not supported in Python
if ($support_obmc and uc($support_obmc) eq 'YES') {
return (0, ''); # Go Python: unsuppored command, but XCAT_OPENBMC_DEVEL=YES overrides
+6 -7
View File
@@ -1135,11 +1135,10 @@ sub mkinstall
my @pkgdirs=split(/,/,$pkgdir);
foreach my $mypkgdir (@pkgdirs){
unless(-f "/install/postscripts/repos/$mypkgdir/local-repository.tmpl"){
#fix issue #2856@github
#for the osimages created by <=xCAT 2.12.3
unless(-s "/install/postscripts/repos/$mypkgdir/local-repository.tmpl"){
#there is no local-repository.tmpl under pkgdir created on copycds
#generate local-repository.tmpl here if it does not exist
#generate local-repository.tmpl here if it does not exist or empty
xCAT::MsgUtils->trace($verbose_on_off, "d", "anaconda->mkinstall: call to create /install/postscripts/repos/$mypkgdir/local-repository.tmpl");
xCAT::Yum->localize_yumrepo($mypkgdir, $os, $arch);
}
}
@@ -2547,7 +2546,7 @@ sub insert_dd {
# dracut + drvier rpm
# !dracut + driver rpm
# !dracut + driver disk
if (!<$install_dir/$os/$arch/Packages/dracut*> || (@rpm_list && ($Injectalldriver || $updatealldriver || @driver_list))) {
if (!(&using_dracut($os)) || (@rpm_list && ($Injectalldriver || $updatealldriver || @driver_list))) {
mkpath "$dd_dir/initrd_img"; # The dir for the new initrd
# unzip the initrd image
@@ -2695,7 +2694,7 @@ sub insert_dd {
# If the os has dracut rpm packet, then copy the drivers to the /lib/modules/<kernel>
# and recreate the dependency by the depmod command
if (<$install_dir/$os/$arch/Packages/dracut*>) { #rh6, fedora13 ...
if (&using_dracut($os)) { #rh6 above, fedora13 ...
# For dracut mode, only copy the drivers from rpm packages to the /lib/modules/<kernel>
# The driver disk will be handled that append the whole disk to the orignial initrd
@@ -3241,7 +3240,7 @@ EOMS
}
# dracut + driver disk, just append the driver disk to the initrd
if (<$install_dir/$os/$arch/Packages/dracut*> && @dd_list) { #new style, skip the fanagling, copy over the dds and append them...
if ( (&using_dracut($os)) && @dd_list) { #new style, skip the fanagling, copy over the dds and append them...
mkpath("$dd_dir/dd");
if (scalar(@dd_list) == 1) { #only one, just append it..
copy($dd_list[0], "$dd_dir/dd/dd.img");
+7 -1
View File
@@ -711,10 +711,16 @@ sub setdestiny {
$bphash->{$_}->[0]->{initrd} = "xcat/genesis.fs.$arch.$othersuffix";
$bphash->{$_}->[0]->{kcmdline} = $kcmdline . "xcatd=$master:$xcatdport destiny=$state";
}
} else { #'legacy' environment
} else { # genesis.kernel file is not there, assume 'legacy' environment
if (-r "$tftpdir/xcat/nbk.$arch") {
$bphash->{$_}->[0]->{kernel} = "xcat/nbk.$arch";
$bphash->{$_}->[0]->{initrd} = "xcat/nkfs.$arch.gz";
$bphash->{$_}->[0]->{kcmdline} = $kcmdline . "xcatd=$master:$xcatdport";
$callback->({ warning => ["No genesis.kernel.$arch file found. Defaulting to legacy nbk.$arch"]});
} else { # can not find genesis.kernel or nbk file
$callback->({ error => ["Could not find genesis.kernel.$arch or legacy nbk.$arch files"], errorcode => [1] });
exit(1);
}
}
}
+14 -10
View File
@@ -123,7 +123,7 @@ sub ximport {
'R|remotehost=s' => \$remoteHost,
'p|postscripts=s' => \$nodes,
'f|profile=s' => \$new_profile,
'n|nozip' => \$nozip
'n|nozip' => \$nozip
);
if ($help) {
@@ -131,8 +131,14 @@ sub ximport {
return;
}
# first extract the bundle
extract_bundle($request, $callback, $nodes, $new_profile, $remoteHost, $nozip );
if ($#ARGV == -1) {
# if no arguments left after processing the options, then bundle name is missing
$xusage->(1);
} else {
# first extract the bundle
my $bundle = shift @ARGV;
extract_bundle($request, $callback, $bundle, $nodes, $new_profile, $remoteHost, $nozip );
}
}
@@ -1067,10 +1073,10 @@ sub make_bundle {
if (defined $remoteHost) {
my $remoteFile = $remoteHost . ':' . $remoteDest;
$callback->({ data => ["Moving the image bundle to the remote system location $remoteDest"] });
$callback->({ data => ["Moving the image bundle to the remote system location $remoteFile"] });
$rc = system("/usr/bin/scp -B $dest $remoteFile");
if ($rc) {
$callback->({ error => ["Unable to copy the image bundle $bundleName to the remote host"], errorcode => [1] });
$callback->({ error => ["Unable to copy the image bundle $bundleName to the remote host (Maybe passwordless ssh was not setup?)"], errorcode => [1] });
}
}
}
@@ -1114,20 +1120,18 @@ sub extract_bundle {
#print Dumper($request);
my $callback = shift;
my $bundle = shift;
my $nodes = shift;
my $new_profile = shift;
my $remoteHost = shift;
my $nozip = shift;
@ARGV = @{ $request->{arg} };
my $xml;
my $data;
my $datas;
my $error = 0;
my $bundleCopy;
my $bundle = shift @ARGV;
# Determine the current working directory.
my $dir = $request->{cwd}; #getcwd;
$dir = $dir->[0];
@@ -1152,10 +1156,10 @@ sub extract_bundle {
my $remoteFile = "$remoteHost:$bundle";
$bundleCopy = `/bin/mktemp $workDir/imgimport.$$.XXXXXX`;
chomp($bundleCopy);
$callback->({ data => ["Obtaining the image bundle from the remote system"] });
$callback->({ data => ["Obtaining the image bundle from the remote system $remoteFile"] });
my $rc = system("/usr/bin/scp -v -B $remoteFile $bundleCopy");
if ($rc != 0) {
$callback->({ error => ["Unable to copy the image bundle $bundle from the remote host"], errorcode => [1] });
$callback->({ error => ["Unable to copy the image bundle $bundle from the remote host (Maybe passwordless ssh was not setup?)"], errorcode => [1] });
$rc = system("rm -rf $bundleCopy");
if ($rc) {
$callback->({ error => ["Failed to remove the local copy of the remote image bundle $bundleCopy"], errorcode => [1] });
+19 -6
View File
@@ -3950,7 +3950,8 @@ sub initfru_zero {
next;
}
if ($sdr->fru_subtype == 0x1) { #DIMM
if ($sdr->id_string =~ "DIMM") { #DIMM.
# Can not always use "fru_subtype=1" for DIMM, sometimes on Power it is 2
push @{ $sessdata->{dimmfru} }, $sdr;
} elsif ($sdr->fru_subtype == 0 or $sdr->fru_subtype == 2) {
push @{ $sessdata->{genhwfru} }, $sdr;
@@ -4213,7 +4214,14 @@ sub add_fruhash {
$sessdata->{frudex} += 1;
} elsif ($sessdata->{currfrutype} and $sessdata->{currfrutype} eq 'dimm') {
$fruhash = decode_spd(@{ $sessdata->{currfrudata} });
if ($fruhash->{product}->{model} =~ "Unrecognized SPD") {
# If decode_spd() was not able to parse SPD data for DIMM, try parsefru()
#
# Yes, it is a goto statement here. Ugly, but removes the need to restructure
goto PARSEFRU_DIMM;
}
} else {
PARSEFRU_DIMM:
my $err;
$global_sessdata = $sessdata; #pass by global, evil, but practical this time
($err, $fruhash) = parsefru($sessdata->{currfrudata});
@@ -4226,7 +4234,7 @@ sub add_fruhash {
$fru->rec_type("hw");
}
$fru->value($err);
if ($sessdata->{currfrusdr}) {
if ($sessdata->{currfrusdr} and scalar keys %{$sessdata->{currfrusdr}} ) {
$fru->desc($sessdata->{currfrusdr}->id_string);
}
if (exists($sessdata->{frudex})) {
@@ -4245,6 +4253,7 @@ sub add_fruhash {
} elsif (ref $sessdata->{currfrudata}) {
if ($sessdata->{currfrutype} and $sessdata->{currfrutype} eq 'dimm') {
add_textual_frus($fruhash, $sessdata->{currfrusdr}->id_string, "", "product", "dimm,hw", $sessdata);
add_textual_frus($fruhash, $sessdata->{currfrusdr}->id_string, "Board ", "board", "dimm,hw", $sessdata);
} else {
add_textual_frus($fruhash, $sessdata->{currfrusdr}->id_string, "Board ", "board", undef, $sessdata);
add_textual_frus($fruhash, $sessdata->{currfrusdr}->id_string, "Product ", "product", undef, $sessdata);
@@ -7528,20 +7537,22 @@ sub initsdr_withrepinfo {
my $dev_rev = $sessdata->{device_rev};
my $fw_rev1 = $sessdata->{firmware_rev1};
my $fw_rev2 = $sessdata->{firmware_rev2};
my $num_sdr_records = $sessdata->{sdr_info}->{rec_count};
#TODO: beware of dynamic SDR contents
my $cache_file = "$cache_dir/sdr_$mfg_id.$prod_id.$device_id.$dev_rev.$fw_rev1.$fw_rev2";
my $cache_name_id = "$mfg_id.$prod_id.$device_id.$dev_rev.$fw_rev1.$fw_rev2.$num_sdr_records";
my $cache_file = "$cache_dir/sdr_$cache_name_id";
$sessdata->{sdrcache_file} = $cache_file;
if ($enable_cache eq "yes") {
if ($sdr_caches{"$mfg_id.$prod_id.$device_id.$dev_rev.$fw_rev1.$fw_rev2"}) {
$sessdata->{sdr_hash} = $sdr_caches{"$mfg_id.$prod_id.$device_id.$dev_rev.$fw_rev1.$fw_rev2"};
if ($sdr_caches{"$cache_name_id"}) {
$sessdata->{sdr_hash} = $sdr_caches{"$cache_name_id"};
on_bmc_connect("SUCCESS", $sessdata); #retry bmc_connect since sdr_cache is validated
return; #don't proceed to slow load
} else {
my $rc = loadsdrcache($sessdata, $cache_file);
if ($rc == 0) {
$sdr_caches{"$mfg_id.$prod_id.$device_id.$dev_rev.$fw_rev1.$fw_rev2"} = $sessdata->{sdr_hash};
$sdr_caches{"$cache_name_id"} = $sessdata->{sdr_hash};
on_bmc_connect("SUCCESS", $sessdata); #retry bmc_connect since sdr_cache is validated
return; #don't proceed to slow load
}
@@ -8201,6 +8212,7 @@ sub decodebcd {
return ($text);
}
# Save SDR "metadata" into cache file
sub storsdrcache {
my $file = shift;
my $sessdata = shift;
@@ -8228,6 +8240,7 @@ sub storsdrcache {
return (0);
}
# Load SDR "metadata" from cache file
sub loadsdrcache {
my $sessdata = shift;
my $file = shift;
+17 -19
View File
@@ -3571,25 +3571,23 @@ sub lsvm {
if (exists $domain_info->{"state"}) {
my $state = $domain_info->{"state"};
my $state_string;
given($state) {
when ($state == &Sys::Virt::Domain::STATE_NOSTATE)
{$state_string = "The domain is active, but is not running / blocked (eg idle)";}
when ($state == &Sys::Virt::Domain::STATE_RUNNING)
{$state_string = "The domain is active and running";}
when ($state == &Sys::Virt::Domain::STATE_BLOCKED)
{$state_string = "The domain is active, but execution is blocked";}
when ($state == &Sys::Virt::Domain::STATE_PAUSED)
{$state_string = "The domain is active, but execution has been paused";}
when ($state == &Sys::Virt::Domain::STATE_SHUTDOWN)
{$state_string = "The domain is active, but in the shutdown phase";}
when ($state == &Sys::Virt::Domain::STATE_SHUTOFF)
{$state_string = "The domain is inactive, and shut down";}
when ($state == &Sys::Virt::Domain::STATE_CRUSHED)
{$state_string = "The domain is inactive, and crashed";}
when ($state == &Sys::Virt::Domain::STATE_PMSUSPENDED)
{$state_string = "The domain is active, but in power management suspend state";}
default {$state_string = "Unknown"};
}
if ($state == &Sys::Virt::Domain::STATE_NOSTATE)
{$state_string = "The domain is active, but is not running / blocked (eg idle)";}
elsif ($state == &Sys::Virt::Domain::STATE_RUNNING)
{$state_string = "The domain is active and running";}
elsif ($state == &Sys::Virt::Domain::STATE_BLOCKED)
{$state_string = "The domain is active, but execution is blocked";}
elsif ($state == &Sys::Virt::Domain::STATE_PAUSED)
{$state_string = "The domain is active, but execution has been paused";}
elsif ($state == &Sys::Virt::Domain::STATE_SHUTDOWN)
{$state_string = "The domain is active, but in the shutdown phase";}
elsif ($state == &Sys::Virt::Domain::STATE_SHUTOFF)
{$state_string = "The domain is inactive, and shut down";}
elsif ($state == &Sys::Virt::Domain::STATE_CRUSHED)
{$state_string = "The domain is inactive, and crashed";}
elsif ($state == &Sys::Virt::Domain::STATE_PMSUSPENDED)
{$state_string = "The domain is active, but in power management suspend state";}
else {$state_string = "Unknown"};
push @vms, "State :" . $domain_info->{"state"} . " ($state_string)";
}
# The following block of code copied from rscan command processng for disks
+2 -1
View File
@@ -1255,7 +1255,8 @@ sub parse_args {
my $option_s;
GetOptions( 's' => \$option_s );
return ([ 1, "The -s option is not supported for OpenBMC." ]) if ($option_s);
if ( "resolved=" ~~ @ARGV) {
my @temp = grep ({"resolved" =~ $_ } @ARGV);
if ( "resolved=" eq $temp[0]) {
return ([ 1, "$usage_errormsg $reventlog_no_id_resolved_errormsg" ]);
}
return ([ 1, "Only one option is supported at the same time for $command" ]);
+2 -1
View File
@@ -591,7 +591,8 @@ sub process_request {
return 1;
}
my $mksquashfs_command = "mksquashfs $temppath ../rootimg.sfs $flags";
my $rc = system("$mksquashfs_command");
xCAT::Utils->runcmd($mksquashfs_command, 0, 1);
my $rc = $::RUNCMD_RC;
if ($rc) {
$callback->({ error => ["Command \"$mksquashfs_command\" failed"], errorcode => [1] });
return 1;
+44 -12
View File
@@ -91,6 +91,25 @@ sub getstate {
}
}
my %efistubcache;
sub has_efistub {
my $kern = shift;
my $node = shift;
my $filename = $globaltftpdir . "/" . $kern;
if (defined $efistubcache{$filename}) {
return $efistubcache{$filename};
}
open my $kernel, '<:raw', $filename;
read $kernel, my $bytes, 512;
my $match = pack 'H*', '504500006486';
if ($bytes =~ m/$match/) {
$efistubcache{$filename} = 1;
return 1;
} else {
$efistubcache{$filename} = 0;
return 0;
}
}
sub setstate {
=pod
@@ -304,23 +323,36 @@ sub setstate {
print $pcfg "imgargs kernel BOOTIF=" . '${netX/mac}' . "\n";
}
if ($kern->{initrd}) {
print $pcfg "imgfetch http://" . '${next-server}:' . "$httpport/tftpboot/" . $kern->{initrd} . "\n";
print $pcfg "imgfetch -n initrd http://" . '${next-server}:' . "$httpport/tftpboot/" . $kern->{initrd} . "\n";
}
print $pcfg "imgexec kernel\n";
if ($kern->{kcmdline} and $kern->{initrd}) { #only a linux kernel/initrd pair should land here, write elilo config and uefi variant of xnba config file
my $ucfg;
open($ucfg, '>', $tftpdir . "/xcat/xnba/nodes/" . $node . ".uefi");
print $ucfg "#!gpxe\n";
print $ucfg 'chain http://${next-server}:'.$httpport.'/tftpboot/xcat/elilo-x64.efi -C /tftpboot/xcat/xnba/nodes/' . $node . ".elilo\n";
close($ucfg);
open($ucfg, '>', $tftpdir . "/xcat/xnba/nodes/" . $node . ".elilo");
print $ucfg 'default="xCAT"' . "\n";
print $ucfg "delay=0\n\n";
print $ucfg "image=/tftpboot/" . $kern->{kernel} . "\n";
print $ucfg " label=\"xCAT\"\n";
print $ucfg " initrd=/tftpboot/" . $kern->{initrd} . "\n";
print $ucfg " append=\"" . $elilokcmdline . ' BOOTIF=%B"' . "\n";
close($ucfg);
if (has_efistub($kern->{kernel}, $node)) {
print $ucfg "#!gpxe\n";
print $ucfg "imgfetch -n kernel http://" . '${next-server}:' . $httpport.'/tftpboot/' . $kern->{kernel} . "\n";
print $ucfg "imgload kernel\n";
if ($kern->{kcmdline}) {
print $ucfg "imgargs kernel " . $kern->{kcmdline} . ' BOOTIF=01-${netX/mac:hexhyp} initrd=initrd' . "\n";
} else {
print $ucfg "imgargs kernel BOOTIF=" . '${netX/mac} initrd=initrd' . "\n";
}
print $ucfg "imgfetch -n initrd http://" . '${next-server}:' . "$httpport/tftpboot/" . $kern->{initrd} . "\n";
print $ucfg "imgexec kernel\n";
close($ucfg);
} else {
print $ucfg "#!gpxe\n";
print $ucfg 'chain http://${next-server}:'.$httpport.'/tftpboot/xcat/elilo-x64.efi -C /tftpboot/xcat/xnba/nodes/' . $node . ".elilo\n";
close($ucfg);
open($ucfg, '>', $tftpdir . "/xcat/xnba/nodes/" . $node . ".elilo");
print $ucfg 'default="xCAT"' . "\n";
print $ucfg "delay=0\n\n";
print $ucfg "image=/tftpboot/" . $kern->{kernel} . "\n";
print $ucfg " label=\"xCAT\"\n";
print $ucfg " initrd=/tftpboot/" . $kern->{initrd} . "\n";
print $ucfg " append=\"" . $elilokcmdline . ' BOOTIF=%B"' . "\n";
}
}
}
}
@@ -9,3 +9,4 @@ wget
python3
tar
bzip2
perl-interpreter
@@ -9,3 +9,4 @@ wget
python3
tar
bzip2
perl-interpreter
@@ -13,3 +13,4 @@ unixODBC
python3
tar
bzip2
perl-interpreter
@@ -134,7 +134,7 @@ function download_recursive()
[ "$?" -ne "0" ] && return 1
;;
esac
done < <(curl --fail --retry 20 --max-time 60 "${url}/" | grep -o '<a href="\([^"]*\)">\1</a>' | cut -d '"' -f 2)
done < <(curl --fail --retry 20 --max-time 60 "${url}/" | grep -o '<a href="\([^"]*\)">.*</a>' | egrep -v "O=D|Directory" | cut -d '"' -f 2)
return 0
}
@@ -128,7 +128,12 @@ GetSyncInfo () {
xCATCmd () {
# $1 is the xCAT server
# $2 is the command
echo "<xcatrequest>\n<command>${2}</command>\n</xcatrequest>" | /usr/sbin/chroot ${MNTDIR} /usr/bin/openssl s_client -quiet -no_ssl3 $(/usr/sbin/chroot ${MNTDIR} /usr/bin/openssl s_client -help 2>&1 | grep -m 1 -o -- -no_ssl2) -connect ${1} -rand /bin/nice 2>/dev/null
if [ -f "/usr/bin/nice" ]; then
RANDOMBYTES="-rand /usr/bin/nice"
else
RANDOMBYTES=""
fi
echo "<xcatrequest>\n<command>${2}</command>\n</xcatrequest>" | /usr/sbin/chroot ${MNTDIR} /usr/bin/openssl s_client -quiet -no_ssl3 $(/usr/sbin/chroot ${MNTDIR} /usr/bin/openssl s_client -help 2>&1 | grep -m 1 -o -- -no_ssl2) -connect ${1} ${RANDOMBYTES} 2>/dev/null
}
@@ -266,7 +266,7 @@ unless ($onlyinitrd) {
foreach $pass (sort (keys(%extra_hash))) {
foreach (keys(%{ $extra_hash{$pass} })) {
if (($_ eq "PRE_REMOVE") || ($_ eq "POST_REMOVE")) { next; }
print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=file://$srcdir_otherpkgs/$_\ngpgpcheck=0\n\n";
print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=file://$srcdir_otherpkgs/$_\ngpgcheck=0\n\n";
$index++;
my $pa = $extra_hash{$pass}{$_};
$extrapkgnames{$pass} .= " " . join(' ', @$pa);
@@ -178,7 +178,7 @@ unless ($onlyinitrd) {
open($yumconfig, ">", "/tmp/genimage.$$.yum.conf");
my $repnum = 0;
foreach $srcdir (@yumdirs) {
print $yumconfig "[$osver-$arch-$repnum]\nname=$osver-$arch-$repnum\nbaseurl=file://$srcdir\ngpgpcheck=0\n\n";
print $yumconfig "[$osver-$arch-$repnum]\nname=$osver-$arch-$repnum\nbaseurl=file://$srcdir\ngpgcheck=0\n\n";
$repnum += 1;
}
$repnum -= 1;
@@ -263,7 +263,7 @@ unless ($onlyinitrd) {
}
if (($_ eq "PRE_REMOVE") || ($_ eq "POST_REMOVE")) { next; }
print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=file://$srcdir_otherpkgs/$_\ngpgpcheck=0\n\n";
print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=file://$srcdir_otherpkgs/$_\ngpgcheck=0\n\n";
$index++;
my $pa = $extra_hash{$pass}{$_};
$extrapkgnames{$pass} .= " " . join(' ', @$pa);
@@ -211,7 +211,7 @@ unless ($onlyinitrd) {
open($yumconfig, ">", "/tmp/genimage.$$.yum.conf");
my $repnum = 0;
foreach $srcdir (@yumdirs) {
print $yumconfig "[$osver-$arch-$repnum]\nname=$osver-$arch-$repnum\nbaseurl=file://$srcdir\ngpgpcheck=0\n\n";
print $yumconfig "[$osver-$arch-$repnum]\nname=$osver-$arch-$repnum\nbaseurl=file://$srcdir\ngpgcheck=0\n\n";
$repnum += 1;
}
$repnum -= 1;
@@ -279,7 +279,7 @@ unless ($onlyinitrd) {
foreach $pass (sort (keys(%extra_hash))) {
foreach (keys(%{ $extra_hash{$pass} })) {
if (($_ eq "PRE_REMOVE") || ($_ eq "POST_REMOVE")) { next; }
print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=file://$srcdir_otherpkgs/$_\ngpgpcheck=0\n\n";
print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=file://$srcdir_otherpkgs/$_\ngpgcheck=0\n\n";
$index++;
my $pa = $extra_hash{$pass}{$_};
$extrapkgnames{$pass} .= " " . join(' ', @$pa);
+2 -2
View File
@@ -125,7 +125,7 @@ if ($otherpkglist) {
open($yumconfig, ">", "/tmp/genimage.$$.yum.conf");
my $repnum = 0;
foreach $srcdir (@yumdirs) {
print $yumconfig "[$aiddistro-$repnum]\nname=$aiddistro-$repnum\nbaseurl=file://$srcdir\ngpgpcheck=0\n\n";
print $yumconfig "[$aiddistro-$repnum]\nname=$aiddistro-$repnum\nbaseurl=file://$srcdir\ngpgcheck=0\n\n";
$repnum += 1;
}
$repnum -= 1;
@@ -148,7 +148,7 @@ if ($otherpkglist) {
}
if (($_ eq "PRE_REMOVE") || ($_ eq "POST_REMOVE") || ($_ eq "ENVLIST")) { next; }
print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=file://$srcdir_otherpkgs/$_\ngpgpcheck=0\n\n";
print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=file://$srcdir_otherpkgs/$_\ngpgcheck=0\n\n";
$repohash{$pass}{$index} = 1;
$index++;
my $pa = $extra_hash{$pass}{$_};
@@ -30,3 +30,4 @@ gzip
grub2
grub2-tools
lsvpd
perl-interpreter
@@ -26,4 +26,5 @@ bash
vim-minimal
rpm
iputils
perl-interpreter
+6 -6
View File
@@ -336,11 +336,11 @@ if($onlyinitrd){
my $repnum = 0;
foreach $srcdir (@yumdirs) {
print $yumconfig "[$osver-$arch-$repnum]\nname=$osver-$arch-$repnum\nbaseurl=file://$srcdir\ngpgpcheck=0\nskip_if_unavailable=True\n\n";
print $yumconfig "[$osver-$arch-$repnum]\nname=$osver-$arch-$repnum\nbaseurl=file://$srcdir\ngpgcheck=0\nskip_if_unavailable=True\n\n";
$repnum += 1;
}
foreach $srcdir (@pkgdir_internet) {
print $yumconfig "[$osver-$arch-$repnum]\nname=$osver-$arch-$repnum\nbaseurl=$srcdir\ngpgpcheck=0\nskip_if_unavailable=True\n\n";
print $yumconfig "[$osver-$arch-$repnum]\nname=$osver-$arch-$repnum\nbaseurl=$srcdir\ngpgcheck=0\nskip_if_unavailable=True\n\n";
$repnum += 1;
}
$repnum -= 1;
@@ -516,12 +516,12 @@ if($onlyinitrd){
if (($_ eq "PRE_REMOVE") || ($_ eq "POST_REMOVE") || ($_ eq "ENVLIST")) { next; }
foreach(@otherpkgdir_url){
print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=$_\ngpgpcheck=0\nskip_if_unavailable=True\n\n";
print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=$_\ngpgcheck=0\nskip_if_unavailable=True\n\n";
$repohash{$pass}{$index} = 1;
$index++;
}
print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=file://$srcdir_otherpkgs_local/$_\ngpgpcheck=0\nskip_if_unavailable=True\n\n";
print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=file://$srcdir_otherpkgs_local/$_\ngpgcheck=0\nskip_if_unavailable=True\n\n";
$repohash{$pass}{$index} = 1;
$index++;
my $pa = $extra_hash{$pass}{$_};
@@ -1081,7 +1081,7 @@ sub mkinitrd_dracut {
open($DRACUTCONF, '>', "$rootimg_dir/etc/dracut.conf");
my $dracutmodulelist = "xcat nfs base network kernel-modules syslog";
foreach (qw/systemd systemd-initrd dracut-systemd fadump/) {
foreach (qw/systemd systemd-initrd dracut-systemd fadump kernel-modules-extra/) {
my ($dir) = glob($dracutmoduledir . "[0-9]*" . $_);
if (-d $dir) {
$dracutmodulelist .= " $_";
@@ -1122,7 +1122,7 @@ sub mkinitrd_dracut {
my $dracutmodulelist = "xcat nfs base network kernel-modules syslog";
foreach (qw/systemd systemd-initrd dracut-systemd fadump/) {
foreach (qw/systemd systemd-initrd dracut-systemd fadump kernel-modules-extra/) {
my ($dir) = glob($dracutmoduledir . "[0-9]*" . $_);
if (-d $dir) {
$dracutmodulelist .= " $_";
@@ -211,7 +211,7 @@ unless ($onlyinitrd) {
open($yumconfig, ">", "/tmp/genimage.$$.yum.conf");
my $repnum = 0;
foreach $srcdir (@yumdirs) {
print $yumconfig "[$osver-$arch-$repnum]\nname=$osver-$arch-$repnum\nbaseurl=file://$srcdir\ngpgpcheck=0\n\n";
print $yumconfig "[$osver-$arch-$repnum]\nname=$osver-$arch-$repnum\nbaseurl=file://$srcdir\ngpgcheck=0\n\n";
$repnum += 1;
}
$repnum -= 1;
@@ -285,7 +285,7 @@ unless ($onlyinitrd) {
foreach $pass (sort (keys(%extra_hash))) {
foreach (keys(%{ $extra_hash{$pass} })) {
if (($_ eq "PRE_REMOVE") || ($_ eq "POST_REMOVE")) { next; }
print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=file://$srcdir_otherpkgs/$_\ngpgpcheck=0\n\n";
print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=file://$srcdir_otherpkgs/$_\ngpgcheck=0\n\n";
$index++;
my $pa = $extra_hash{$pass}{$_};
$extrapkgnames{$pass} .= " " . join(' ', @$pa);
@@ -116,14 +116,14 @@ unless ($onlyinitrd) {
open($yumconfig, ">", "/tmp/genimage.$$.yum.conf");
my $repnum = 0;
foreach $srcdir (@yumdirs) {
print $yumconfig "[$osver-$arch-$repnum]\nname=$osver-$arch-$repnum\nbaseurl=file://$srcdir\ngpgpcheck=0\n\n";
print $yumconfig "[$osver-$arch-$repnum]\nname=$osver-$arch-$repnum\nbaseurl=file://$srcdir\ngpgcheck=0\n\n";
$repnum += 1;
}
$repnum -= 1;
#add the section for other packages
if ($pkgnames) {
print $yumconfig "[$osver-$arch-otherpkgs]\nname=$osver-$arch-otherpkgs\nbaseurl=file://$srcdir_otherpkgs\ngpgpcheck=0\n\n";
print $yumconfig "[$osver-$arch-otherpkgs]\nname=$osver-$arch-otherpkgs\nbaseurl=file://$srcdir_otherpkgs\ngpgcheck=0\n\n";
}
close($yumconfig);
+157
View File
@@ -0,0 +1,157 @@
#!/bin/bash
#
# Copyright (C) 2018 International Business Machines
# Eclipse Public License, Version 1.0 (EPL-1.0)
# <http://www.eclipse.org/legal/epl-v10.html>
#
# 2018-03-21 GONG Jie <gongjie@linux.vnet.ibm.com>
# 2018-04-24 Matt Ezell <ezellma@ornl.gov>
#
# This script is used for doing extra setup steps for NVIDIA POWER9 CUDA driver
# on RHEL 7. Please refer document below for details.
#
# http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#power9-setup
#
umask 0022
# Disable a udev rule installed by default in some Linux distributions that cause hot-pluggable
# memory to be automatically onlined when it is physically probed.
#
# The overrides for /lib/udev rules should be done in /etc/udev
#
UDEV_REDHAT_SOURCE=${IMG_ROOTIMGDIR}/lib/udev/rules.d/40-redhat.rules
UDEV_REDHAT_TARGET=${IMG_ROOTIMGDIR}/etc/udev/rules.d/40-redhat.rules
# If the file does not exist in /etc/udev, copy it from /lib/udev
if [ ! -e ${UDEV_REDHAT_TARGET} ]; then
cp -n ${UDEV_REDHAT_SOURCE} ${UDEV_REDHAT_TARGET}
fi
# Disable udev memory auto-onlining Rule for cuda10.x
#
# For RHELS 7.5 ALT
#
sed -i "s/^\(SUBSYSTEM==\"memory\".*\)/#\1/" ${UDEV_REDHAT_TARGET}
#
# For RHELS 7.6 ALT
#
if [[ `grep 'Memory hotadd request' ${UDEV_REDHAT_TARGET} 2>&1 >> /dev/null && grep 'LABEL="memory_hotplug_end' ${UDEV_REDHAT_TARGET} 2>&1 >> /dev/null; echo $?` == 0 ]]; then
echo "Detected RHELS 7.6 ALT, modifying ${UDEV_REDHAT_TARGET}..."
# Comment out the memory hotadd request (for reference)
if [[ `grep "## Memory hotadd request" ${UDEV_REDHAT_TARGET} 2>&1 >> /dev/null; echo $?` != 0 ]]; then
# but only run one time, not if it's already commented out. (to handle multiple genimage calls)
#sed -i '/Memory hotadd request/,+8 s/^/#/' ${UDEV_REDHAT_TARGET}
# RH76 CUDA doc recommends the following:
sed -i s/^\SUBSYSTEM!=\"memory\"/SUBSYSTEM==\"\*\"/ ${UDEV_REDHAT_TARGET}
sed -i s/^\ACTION!=\"add\"/ACTION==\"\*\"/ /tmp/40-redhat.rules ${UDEV_REDHAT_TARGET}
fi
fi
echo "Comparing ${UDEV_REDHAT_SOURCE} and ${UDEV_REDHAT_TARGET}"
diff ${UDEV_REDHAT_SOURCE} ${UDEV_REDHAT_TARGET}
# Setting NVIDIA parameters in both /etc/modprobe.d and /usr/lib/modprobe.d
echo "==> Setting NVIDIA options in /usr/lib/modprobe.d/gpusupport and /etc/modprobe.d"
echo 'options nvidia NVreg_EnableStreamMemOPs=1 NVreg_RegistryDwords="PeerMappingOverride=1"' >${IMG_ROOTIMGDIR}/usr/lib/modprobe.d/gpusupport.conf
echo 'options nvidia NVreg_EnableStreamMemOPs=1 NVreg_RegistryDwords="PeerMappingOverride=1"' >${IMG_ROOTIMGDIR}/etc/modprobe.d/gpusupport.conf
grep nouveau ${IMG_ROOTIMGDIR}/usr/lib/modprobe.d/nvidia.conf
if (( $? ))
then
echo 'blacklist nouveau' >> ${IMG_ROOTIMGDIR}/usr/lib/modprobe.d/nvidia.conf
fi
grep nouveau ${IMG_ROOTIMGDIR}/etc/modprobe.d/nvidia.conf
if (( $? ))
then
echo 'blacklist nouveau' >> ${IMG_ROOTIMGDIR}/etc/modprobe.d/nvidia.conf
fi
# This is for nvprof (per George Chochia)
grep NVreg_RestrictProfilingToAdminUsers ${IMG_ROOTIMGDIR}/usr/lib/modprobe.d/nvidia.conf
if (( $? ))
then
echo "options nvidia NVreg_RestrictProfilingToAdminUsers=0" >> ${IMG_ROOTIMGDIR}/usr/lib/modprobe.d/nvidia.conf
fi
grep NVreg_RestrictProfilingToAdminUsers ${IMG_ROOTIMGDIR}/etc/modprobe.d/nvidia.conf
if (( $? ))
then
echo "options nvidia NVreg_RestrictProfilingToAdminUsers=0" >> ${IMG_ROOTIMGDIR}/etc/modprobe.d/nvidia.conf
fi
#for cuda nvidia installation
unset ARCH
installed_kernel=`uname -r`
function hack_uname()
{
mv "$1/bin/uname" "$1/bin/uname.xcat"
cat <<-EOF >>"$1/bin/uname"
#!/bin/sh
case "\$1" in
"-m")
ARCH="\$(rpm -q kernel-\$("\$0" -r) --qf '%{arch}' 2>/dev/null)"
echo "\$ARCH"
;;
"-r")
kernel_version="$(for d in $(ls /lib/modules | sort -V) ; do : ; done && echo $d)"
echo "\$kernel_version"
;;
"-s"|"")
echo "Linux"
;;
esac
exit 0
EOF
chmod 0755 "$1/bin/uname"
}
if [ -z "${IMG_ROOTIMGDIR}" ]
then
kernel_version="$(for d in $(ls /lib/modules | sort -V) ; do : ; done && echo $d)"
mkinitrd -v -f "/boot/initramfs-${kernel_version}.img" "${kernel_version}"
hack_uname ${IMG_ROOTIMGDIR}
else
hack_uname
fi
updated_kernel=`uname -r`
dnf -y module install nvidia-driver:latest-dkms
dnf -y install cuda
#depmod nvidia_rsync_mem used installed kernel not updated kernel
if [ ${updated_kernel} != ${installed_kernel} ]
then
ln -s /lib/modules/${updated_kernel} /lib/modules/${installed_kernel}
fi
dnf -y install nvidia_peer_memory
dnf -y install nv_rsync_mem
dnf -y install nvidia_gdrcopy_kernel
if [ ${updated_kernel} != ${installed_kernel} ]
then
rm -rf /lib/modules/${installed_kernel}
fi
[ ! -z "${IMG_ROOTIMGDIR}" ] && CHROOTCMD="chroot ${IMG_ROOTIMGDIR}"
$CHROOTCMD /bin/bash -c "systemctl enable nvidia-persistenced"
[ ! -z "${IMG_ROOTIMGDIR}" ] && CHROOTCMD="chroot ${IMG_ROOTIMGDIR}"
$CHROOTCMD /bin/bash -c "systemctl enable nvidia_gdrcopy_kernel.service"
[ ! -z "${IMG_ROOTIMGDIR}" ] && CHROOTCMD="chroot ${IMG_ROOTIMGDIR}"
$CHROOTCMD /bin/bash -c "systemctl enable nv_rsync_mem.service"
if [ -z "${IMG_ROOTIMGDIR}" ]
then
mv "${IMG_ROOTIMGDIR}/bin/uname.xcat" "${IMG_ROOTIMGDIR}/bin/uname"
else
mv "/bin/uname.xcat" "/bin/uname"
fi
@@ -0,0 +1,73 @@
cuda setup scripts
==================
This sample documents installation of the NVIDIA CUDA Toolkit v11 on IBM POWER9 servers as part of xCAT diskful provisioning of Red Hat Enterprise Linux 8.1.
For ``CUDA11``, there is a known issue that prevents successful installion of the nvidia-drivers module as part of the operating system kickstart install process used by diskful provisioning.
Diskless provisioning can still be performed using the traditional osimage method; these instructions apply to diskful provisioning only.
Diskful images
--------------
For diskful provisioning, create a new ``cudafull`` osimage definition using the default ``rhels8.1-ppc64le-install-compute`` osimage as a starting point. ::
# lsdef -t osimage rhels8.1.0-ppc64le-install-cudafull
Object name: rhels8.1.0-ppc64le-install-cudafull
imagetype=linux
osarch=ppc64le
osdistroname=rhels8.1.0-ppc64le
osname=Linux
osvers=rhels8.1.0
otherpkgdir=/install/post/otherpkgs/rhels8.1.0/ppc64le
pkgdir=/install/rhels8.1.0/ppc64le,/install/REPO/software/nvidia/cuda-core/11.0.1_450.36.06-1/repo/ppc64le,/install/cuda11/ppc64le/cuda-deps
pkglist=/opt/xcat/share/xcat/install/rh/compute.rhels8.cuda.pkglist
postscripts=custom.ps/nvidia/postinstall/cuda11_power9_setup
profile=compute
provmethod=install
template=/opt/xcat/share/xcat/install/rh/compute.rhels8.tmpl
Postscripts
^^^^^^^^^^^
For ``CUDA11``, there is a known issue that prevents successful installion of the nvidia-drivers module as part of the Red Hat kickstart install process used by diskful provisioning. As an example method to work around this problem, refer to the postscript named ``cuda11_power9_setup``. This postscript will install the NVIDIA CUDA packages directly instead of relying on the osimage package list mechanism. ``cuda11_power9_setup`` is only needed for diskful provisioning.
CUDA dependences
^^^^^^^^^^^^^^^^
``dkms`` and ``opencl-filesystem`` are required for the CUDA11. ``dkms`` packages can be found in the rhel8 EPEL repository. ``opencl-filesystem`` packages can be found in the rhel8 CodeReady repository. ::
# ls -ltr /install/cuda11/ppc64le/cuda-deps
-rw-r--r-- 1 root root 82332 Jun 16 10:25 dkms-2.8.1-4.20200214git5ca628c.el8.noarch.rpm
-rw-r--r-- 1 root root 90148 Jun 16 10:29 opencl-headers-2.2-1.20180306gite986688.el8.noarch.rpm
-rw-r--r-- 1 root root 8668 Jun 16 10:29 opencl-filesystem-1.0-6.el8.noarch.rpm
drwxr-xr-x 2 root root 4096 Jun 16 15:10 repodata
CUDA Packages
^^^^^^^^^^^^^
``cuda-repo-rhel8-11-0-local-11.0.1_450.36.06-1.ppc64le.rpm`` is used for the example ``cudafull`` osimage and the contents are copied into a directory named ``/install/REPO/software/nvidia/cuda-core/11.0.1_450.36.06-1/repo/ppc64le``.
In addition to the rhels8 base pkglist, the following packages need to also be added. ::
# diff /opt/xcat/share/xcat/install/rh/compute.rhels8.cuda.pkglist /opt/xcat/share/xcat/install/rh/compute.rhels8.pkglist
12,27d11
< libtirpc
< yum
< rpm
< dnf
< dracut
< dracut-network
< e2fsprogs
< #For Cuda
< kernel-devel
< kernel-headers
< make
< gcc
< pciutils
< dkms
< opencl-filesystem
NOTE: The samples in this directory were verified as part of the IBM HPC POWER9 Clusters service pack testing
+2 -2
View File
@@ -172,13 +172,13 @@ GO_XCAT_CORE_PACKAGE_LIST=()
GO_XCAT_DEP_PACKAGE_LIST=()
# The package list of all the packages should be installed
GO_XCAT_INSTALL_LIST=(perl-xCAT xCAT xCAT-buildkit xCAT-client
GO_XCAT_INSTALL_LIST=(perl-xCAT xCAT-client xCAT xCAT-buildkit
xCAT-genesis-scripts-ppc64 xCAT-genesis-scripts-x86_64 xCAT-server
elilo-xcat grub2-xcat ipmitool-xcat syslinux-xcat
xCAT-genesis-base-ppc64 xCAT-genesis-base-x86_64 xnba-undi yaboot-xcat)
# For Debian/Ubuntu, it will need a sight different package list
type dpkg >/dev/null 2>&1 &&
GO_XCAT_INSTALL_LIST=(perl-xcat xcat xcat-buildkit xcat-client
GO_XCAT_INSTALL_LIST=(perl-xcat xcat-client xcat xcat-buildkit
xcat-genesis-scripts-amd64 xcat-genesis-scripts-ppc64 xcat-server
elilo-xcat grub2-xcat ipmitool-xcat syslinux-xcat
xcat-genesis-base-amd64 xcat-genesis-base-ppc64 xnba-undi)
@@ -139,7 +139,7 @@ sub get_cmd
foreach (@hdisk)
{
`lspv|grep $_ >/dev/nul 2>&1`;
`lspv|grep $_ >/dev/null 2>&1`;
$err++ if ($? != 0)
}
@@ -152,7 +152,7 @@ sub get_cmd
next;
}
`lsvg $key > /dev/nul 2>&1`;
`lsvg $key > /dev/null 2>&1`;
if ($? == 0)
{
#print "Invalid configuration item $key: vg $key already existed\n";
@@ -193,7 +193,7 @@ sub get_cmd
next;
}
`su - padmin " -c ioscli lslv $conf[0]" > /dev/nul 2>&1`;
`su - padmin " -c ioscli lslv $conf[0]" > /dev/null 2>&1`;
if ($? == 0)
{
#print "Invalid configuration item $key:the lv name $conf[0] already existed\n";
@@ -203,7 +203,7 @@ sub get_cmd
next;
}
`su - padmin " -c ioscli lsvg $conf[1]" > /dev/nul 2>&1`;
`su - padmin " -c ioscli lsvg $conf[1]" > /dev/null 2>&1`;
if ($? != 0)
{
#print "Invalid configuration item $key:the vg $conf[1] doesn't exist\n";
@@ -242,7 +242,7 @@ sub get_cmd
print "Mapping logical volumes to virtual adapters...";
while (my ($key, $value) = each %config)
{
`su - padmin " -c ioscli lslv $value" > /dev/nul 2>&1`;
`su - padmin " -c ioscli lslv $value" > /dev/null 2>&1`;
if ($? != 0)
{
#print "Invalid configuration item $key: lv $value doesn't exist\n";
@@ -252,7 +252,7 @@ sub get_cmd
next;
}
`su - padmin " -c ioscli lsdev -virtual |grep $key " >/dev/nul 2>&1`;
`su - padmin " -c ioscli lsdev -virtual |grep $key " >/dev/null 2>&1`;
if ($? != 0)
{
#print "Invaild configuration item $key: virtual adapter $key doesn't exist\n";
+2 -2
View File
@@ -1173,7 +1173,7 @@ sub send_email {
sub git_update {
send_msg(2, "[git update] starting to update xcat source code from git");
my $res = system("cd $xcatcoredir && git checkout $branch > /dev/nul 2>&1");
my $res = system("cd $xcatcoredir && git checkout $branch > /dev/null 2>&1");
if ($res != 0) {
send_msg(0, "[git update] change to branch $branch....[failed]");
return 2;
@@ -1198,7 +1198,7 @@ sub git_update {
return 2;
}
$res = system("grep 'Already up-to-date' $gitpulloutput > /dev/nul 2>&1");
$res = system("grep 'Already up-to-date' $gitpulloutput > /dev/null 2>&1");
if ($res == 0 && !$forceregwithoutupdate) {
send_msg(2, "[git update] code is already at latest version. exit regresson");
return 1;
+1 -1
View File
@@ -148,7 +148,7 @@ chmod 644 $RPM_BUILD_ROOT/%{prefix}/share/xcat/ca/*
cp share/xcat/mypostscript/* $RPM_BUILD_ROOT/%{prefix}/share/xcat/mypostscript
cp share/xcat/scripts/* $RPM_BUILD_ROOT/%{prefix}/share/xcat/scripts
cp share/xcat/conf/* $RPM_BUILD_ROOT/%{prefix}/share/xcat/conf
cp share/xcat/samples/* $RPM_BUILD_ROOT/%{prefix}/share/xcat/samples
cp -r share/xcat/samples/* $RPM_BUILD_ROOT/%{prefix}/share/xcat/samples
cp -r share/xcat/tools/* $RPM_BUILD_ROOT/%{prefix}/share/xcat/tools
cp -r share/xcat/hamn/* $RPM_BUILD_ROOT/%{prefix}/share/xcat/hamn
cp share/xcat/rollupdate/* $RPM_BUILD_ROOT/%{prefix}/share/xcat/rollupdate
+1 -1
View File
@@ -2879,7 +2879,7 @@ sub tablerowhdl {
# Check if there is any real data in response
# One key ('xcatdsource' => '<node>') is always returned.
# If no other keys in response - no matches on key or attribute were returned from xcatd
if (keys @$responses[0] <= 1) {
if (keys (%{@$responses[0]}) <= 1) {
@$responses[0]->{error} = "No table rows matched specified keys or attributes";
}
return $responses;
+27
View File
@@ -0,0 +1,27 @@
restapi_setup_on_MN_CN
restapi_list_all_resources
restapi_list_globalconf
restapi_list_groups
restapi_list_nodes
restapi_list_node_CN
restapi_list_networks
restapi_list_osimages
restapi_list_policy
restapi_create_temp_CN_put
restapi_delete_temp_CN_put
restapi_create_temp_CN_post
restapi_create_temp_CN_put
restapi_list_temp_CN_2
restapi_delete_temp_CN_2
restapi_create_temp_CN_put
restapi_add_id_temp_CN
restapi_modify_vmmemory_temp_CN
restapi_delete_id_temp_CN
restapi_show_temp_CN_osimage
restapi_list_nodes_wrong_password
restapi_list_nodes_invalid_option
restapi_list_invalid_resource
restapi_list_wrong_osimage
restapi_modify_wrong_field_CN
restapi_delete_temp_CN_put
restapi_cleanup_on_MN_CN
@@ -2,6 +2,7 @@ SN_setup_case
reg_linux_diskless_installation_hierarchy
reg_linux_diskless_installation_hierarchy_squashfs
reg_linux_diskfull_installation_hierarchy
compare_postscripts
updatenode_P_script1
updatenode_P_script1_script2
updatenode_P_script2
@@ -23,6 +24,7 @@ updatenode_syncfile_MERGE
updatenode_v
updatenode_without_flag
updatenode_without_options
#INCLUDE:restapi.bundle#
xdcp_nonroot_user
xdcp_src_dst
xdsh_E
@@ -17,12 +17,14 @@ bmcdiscover_range_z
bmcdiscover_help
bmcdiscover_q
bmcdiscover_version
xcatprobe_work
confignetwork_static_installnic
get_xcat_postscripts_loginfo
nodeset_cmdline
nodeset_runimg
nodeset_shell
reg_linux_diskfull_installation_flat
compare_postscripts
reg_linux_diskless_installation_flat
reg_linux_diskless_installation_flat_squashfs
reg_linux_statelite_installation_flat
@@ -2,6 +2,7 @@ SN_setup_case
reg_linux_diskless_installation_hierarchy
reg_linux_diskless_installation_hierarchy_squashfs
reg_linux_diskfull_installation_hierarchy
compare_postscripts
updatenode_P_script1
updatenode_P_script1_script2
updatenode_P_script2
@@ -23,6 +24,7 @@ updatenode_syncfile_MERGE
updatenode_v
updatenode_without_flag
updatenode_without_options
#INCLUDE:restapi.bundle#
xdcp_nonroot_user
xdcp_src_dst
xdsh_E
@@ -17,12 +17,14 @@ bmcdiscover_range_z
bmcdiscover_help
bmcdiscover_q
bmcdiscover_version
xcatprobe_work
confignetwork_static_installnic
get_xcat_postscripts_loginfo
nodeset_cmdline
nodeset_runimg
nodeset_shell
reg_linux_diskfull_installation_flat
compare_postscripts
reg_linux_diskless_installation_flat
reg_linux_diskless_installation_flat_squashfs
reg_linux_statelite_installation_flat
@@ -2,10 +2,12 @@ SN_setup_case
reg_linux_diskless_installation_hierarchy
reg_linux_diskless_installation_hierarchy_squashfs
reg_linux_diskfull_installation_hierarchy
compare_postscripts
assign_certain_command_permission
bmcdiscover_help
bmcdiscover_q
bmcdiscover_version
#INCLUDE:restapi.bundle#
xdcp_nonroot_user
xdsh_E
xdsh_Q_command
@@ -15,6 +15,7 @@ nodeset_cmdline
nodeset_runimg
nodeset_shell
reg_linux_diskfull_installation_flat
compare_postscripts
reg_linux_diskless_installation_flat
reg_linux_diskless_installation_flat_squashfs
reg_linux_statelite_installation_flat
@@ -2,10 +2,12 @@ SN_setup_case
reg_linux_diskless_installation_hierarchy
reg_linux_diskless_installation_hierarchy_squashfs
reg_linux_diskfull_installation_hierarchy
compare_postscripts
assign_certain_command_permission
bmcdiscover_help
bmcdiscover_q
bmcdiscover_version
#INCLUDE:restapi.bundle#
xdcp_nonroot_user
xdsh_E
xdsh_Q_command
@@ -15,6 +15,7 @@ nodeset_cmdline
nodeset_runimg
nodeset_shell
reg_linux_diskfull_installation_flat
compare_postscripts
reg_linux_diskless_installation_flat
reg_linux_diskless_installation_flat_squashfs
reg_linux_statelite_installation_flat
@@ -1,6 +1,7 @@
reg_linux_diskless_installation_flat
reg_linux_diskless_installation_flat_squashfs
reg_linux_diskfull_installation_flat
compare_postscripts
assign_certain_command_permission
bmcdiscover_help
bmcdiscover_q
@@ -1,6 +1,7 @@
reg_linux_diskless_installation_flat
reg_linux_diskless_installation_flat_squashfs
reg_linux_diskfull_installation_flat
compare_postscripts
assign_certain_command_permission
bmcdiscover_help
bmcdiscover_q
@@ -30,8 +30,13 @@ do
echo "rinstall $node osimage=$osimage"
rinstall $node osimage=$osimage
if [ $? != 0 ];then
echo "rinstall command failed ..."
exit 1
echo "First attempt to run rinstall command failed ..."
# First rinstall failed, try again with verbose flag
rinstall $node osimage=$osimage -V
if [ $? != 0 ];then
echo "Second attempt to run rinstall command failed ..."
exit 1
fi
fi
#sleep while for installation.
@@ -166,20 +166,20 @@ cmd:if grep SUSE /etc/*release;then xdsh $$CN "cp -f /etc/sysconfig/network/ifcf
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=100.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test1 net=$secondnet mask=255.255.0.0 mgtifname=$$SECONDNIC
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$SECONDNIC=$second1ip nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=confignetworks_test1
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$SECONDNIC=$second1ip nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=confignetworks_test1
check:rc==0
cmd:updatenode $$CN -P "confignetwork -s"
check:rc==0
cmd:rmdef -t network -o confignetworks_test1
cmd:if [ -e /tmp/CN.standa ]; then rmdef $$CN; cat /tmp/CN.standa | mkdef -z; rm -rf /tmp/CN.standa; fi
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;if grep SUSE /etc/*release;then xdsh $$CN "grep $second1ip /etc/sysconfig/network/ifcfg-$$SECONDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $second1ip /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $second1ip /etc/network/interfaces.d/$$SECONDNIC";else echo "Sorry,this is not supported os"; fi
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;if grep SUSE /etc/*release;then xdsh $$CN "grep $second1ip /etc/sysconfig/network/ifcfg-$$SECONDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $second1ip /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $second1ip /etc/network/interfaces.d/$$SECONDNIC";else echo "Sorry,this is not supported os"; fi
check:rc==0
cmd:installnic=`xdsh $$CN ip addr |grep __GETNODEATTR($$CN,ip)__|awk -F " " '{print $NF}'`; if grep SUSE /etc/*release;then xdsh $$CN "cat /etc/sysconfig/network/ifcfg-$installnic"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "cat /etc/sysconfig/network-scripts/ifcfg-*$installnic*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "cat /etc/network/interfaces.d/*";else echo "Sorry,this is not supported os"; fi
check:rc==0
check:output=~__GETNODEATTR($$CN,ip)__
check:output=~BOOTPROTO=none|static
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$SECONDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$SECONDNIC"
cmd:if grep SUSE /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network/ifcfg-$$SECONDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network-scripts"; elif grep Ubuntu /etc/*release;then xdsh $$CN "rm -rf /etc/network/interfaces.d/$$SECONDNIC";else echo "Sorry,this is not supported os"; fi
check:rc==0
cmd:if grep SUSE /etc/*release;then xdsh $$CN "cp -f /tmp/backupnet/* /etc/sysconfig/network/"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "cp -rf /tmp/backupnet/network-scripts /etc/sysconfig/"; elif grep Ubuntu /etc/*release;then xdsh $$CN "cp -f /tmp/backupnet/* /etc/network/interfaces.d/;cp -f /tmp/interfaces /etc/network/";else echo "Sorry,this is not supported os"; fi
@@ -278,7 +278,7 @@ cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=100.;var4=`echo $cnip |awk -F.
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=101.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test2 net=$secondnet mask=255.255.0.0 mgtifname=$$SECONDNIC
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=101;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var3;second2ip=$var2$var3;chdef $$CN nicips.$$SECONDNIC="$second1ip|$second2ip" nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC="confignetworks_test1|confignetworks_test2" nichostnamesuffixes.$$SECONDNIC="-$$SECONDNIC-1|-$$SECONDNIC-2" nicextraparams.$$SECONDNIC="CONNECTED_MODE=yes"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=101;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var3;second2ip=$var2$var3;chdef $$CN nicips.$$SECONDNIC="$second1ip|$second2ip" nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC="confignetworks_test1|confignetworks_test2" nichostnamesuffixes.$$SECONDNIC="-$$SECONDNIC-1|-$$SECONDNIC-2" nicextraparams.$$SECONDNIC="CONNECTED_MODE=yes"
check:rc==0
cmd:makehosts $$CN
check:rc==0
@@ -287,12 +287,12 @@ check:output=~$$CN-$$SECONDNIC-1
check:output=~$$CN-$$SECONDNIC-2
cmd:updatenode $$CN -P confignetwork
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var3;if grep SUSE /etc/*release;then xdsh $$CN "grep $second1ip /etc/sysconfig/network/ifcfg-$$SECONDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $second1ip /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $second1ip /etc/network/interfaces.d/$$SECONDNIC";else echo "Sorry,this is not supported os"; fi
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var3;if grep SUSE /etc/*release;then xdsh $$CN "grep $second1ip /etc/sysconfig/network/ifcfg-$$SECONDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $second1ip /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $second1ip /etc/network/interfaces.d/$$SECONDNIC";else echo "Sorry,this is not supported os"; fi
check:rc==0
cmd:if grep SUSE /etc/*release;then xdsh $$CN "cat /etc/sysconfig/network/ifcfg-$$SECONDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "cat /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "cat /etc/network/interfaces.d/$$SECONDNIC";else echo "Sorry,this is not supported os"; fi
check:output=~BOOTPROTO=none|static
check:output=~CONNECTED_MODE=yes|CONNECTED_MODE yes
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var3;if grep SUSE /etc/*release;then xdsh $$CN "grep $second1ip /etc/sysconfig/network/ifcfg-$$SECONDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $second1ip /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $second1ip /etc/network/interfaces.d/$$SECONDNIC";else echo "Sorry,this is not supported os"; fi
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var3;if grep SUSE /etc/*release;then xdsh $$CN "grep $second1ip /etc/sysconfig/network/ifcfg-$$SECONDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $second1ip /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $second1ip /etc/network/interfaces.d/$$SECONDNIC";else echo "Sorry,this is not supported os"; fi
check:rc==0
cmd:if grep SUSE /etc/*release;then xdsh $$CN "cat /etc/sysconfig/network/ifcfg-$$SECONDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "cat /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "cat /etc/network/interfaces.d/$$SECONDNIC";else echo "Sorry,this is not supported os"; fi
check:output=~CONNECTED_MODE=yes|CONNECTED_MODE yes
@@ -301,8 +301,8 @@ cmd:rmdef -t network -o confignetworks_test1
cmd:rmdef -t network -o confignetworks_test2
cmd:if grep SUSE /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network/ifcfg-$$SECONDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network-scripts"; elif grep Ubuntu /etc/*release;then xdsh $$CN "rm -f /etc/network/interfaces.d/$$SECONDNIC /etc/network/interfaces.d/$$SECONDNIC:1";else echo "Sorry,this is not supported os"; fi
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$SECONDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$SECONDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$SECONDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$SECONDNIC"
cmd:if [ -e /tmp/CN.standa ]; then rmdef $$CN; cat /tmp/CN.standa | mkdef -z; rm -rf /tmp/CN.standa; fi
check:rc==0
cmd:mv -f /etc/hosts.bak /etc/hosts
@@ -512,7 +512,7 @@ check:rc==0
cmd:xdsh $$CN "if grep SUSE /etc/*release;then cp -f /etc/sysconfig/network/ifcfg-* /tmp/backupnet/; elif grep -E \"Red Hat|CentOS\" /etc/*release;then cp -f /etc/sysconfig/network-scripts/ifcfg-* /tmp/backupnet/; elif grep Ubuntu /etc/*release;then cp -f /etc/network/interfaces.d/* /tmp/backupnet/;else echo \"Sorry,this is not supported os\"; fi"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=100.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test1 net=$secondnet mask=255.255.0.0 mgtifname=$$SECONDNIC
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$SECONDNIC=$second1ip nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=confignetworks_test1
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$SECONDNIC=$second1ip nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=confignetworks_test1
check:rc==0
cmd:updatenode $$CN -P confignetwork
check:rc==0
@@ -522,28 +522,28 @@ cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=105.;var4=`echo $cnip |awk -F.
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=106.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test7 net=$secondnet mask=255.255.0.0 mgtifname=$$SECONDNIC
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "if grep SUSE /etc/*release;then grep $second1ip /etc/sysconfig/network/ifcfg-$$SECONDNIC; elif grep -E \"Red Hat|CentOS\" /etc/*release;then grep $second1ip /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC*; elif grep Ubuntu /etc/*release;then grep $second1ip /etc/network/interfaces.d/$$SECONDNIC;else echo \"Sorry,this is not supported os\"; fi"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "if grep SUSE /etc/*release;then grep $second1ip /etc/sysconfig/network/ifcfg-$$SECONDNIC; elif grep -E \"Red Hat|CentOS\" /etc/*release;then grep $second1ip /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC*; elif grep Ubuntu /etc/*release;then grep $second1ip /etc/network/interfaces.d/$$SECONDNIC;else echo \"Sorry,this is not supported os\"; fi"
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=105;var2=106;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second6ip=$var1$var3;second7ip=$var2$var3;chdef $$CN nicnetworks.$$SECONDNIC.6=confignetworks_test6 nicnetworks.$$SECONDNIC.7=confignetworks_test7 nictypes.$$SECONDNIC.6=vlan nictypes.$$SECONDNIC.7=vlan nicips.$$SECONDNIC.6=$second6ip nicips.$$SECONDNIC.7=$second7ip nicdevices.$$SECONDNIC.6=$$SECONDNIC nicdevices.$$SECONDNIC.7=$$SECONDNIC nictypes.$$SECONDNIC=ethernet
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=105;var2=106;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second6ip=$var1$var3;second7ip=$var2$var3;chdef $$CN nicnetworks.$$SECONDNIC.6=confignetworks_test6 nicnetworks.$$SECONDNIC.7=confignetworks_test7 nictypes.$$SECONDNIC.6=vlan nictypes.$$SECONDNIC.7=vlan nicips.$$SECONDNIC.6=$second6ip nicips.$$SECONDNIC.7=$second7ip nicdevices.$$SECONDNIC.6=$$SECONDNIC nicdevices.$$SECONDNIC.7=$$SECONDNIC nictypes.$$SECONDNIC=ethernet
check:rc==0
cmd:updatenode $$CN -P confignetwork
check:rc==0
cmd:if [ -e /tmp/CN.standa ]; then rmdef $$CN; cat /tmp/CN.standa | mkdef -z; rm -rf /tmp/CN.standa; fi
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=105;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second6ip=$var1$var3; echo $second6ip; xdsh $$CN "if grep SUSE /etc/*release;then grep $second6ip /etc/sysconfig/network/ifcfg-$$SECONDNIC.6;elif grep -E \"Red Hat|CentOS\" /etc/*release;then grep $second6ip /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC.6*; elif grep Ubuntu /etc/*release;then grep $second6ip /etc/network/interfaces.d/$$SECONDNIC.6;else echo \"Sorry,this is not supported os\"; fi"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=105;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second6ip=$var1$var3; echo $second6ip; xdsh $$CN "if grep SUSE /etc/*release;then grep $second6ip /etc/sysconfig/network/ifcfg-$$SECONDNIC.6;elif grep -E \"Red Hat|CentOS\" /etc/*release;then grep $second6ip /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC.6*; elif grep Ubuntu /etc/*release;then grep $second6ip /etc/network/interfaces.d/$$SECONDNIC.6;else echo \"Sorry,this is not supported os\"; fi"
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var2=106;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second7ip=$var2$var3; echo $second6ip; xdsh $$CN "if grep SUSE /etc/*release;then grep $second7ip /etc/sysconfig/network/ifcfg-$$SECONDNIC.7; elif grep -E \"Red Hat|CentOS\" /etc/*release;then grep $second7ip /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC.7*; elif grep Ubuntu /etc/*release;then grep $second7ip /etc/network/interfaces.d/$$SECONDNIC.7;else echo \"Sorry,this is not supported os\"; fi"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var2=106;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second7ip=$var2$var3; echo $second6ip; xdsh $$CN "if grep SUSE /etc/*release;then grep $second7ip /etc/sysconfig/network/ifcfg-$$SECONDNIC.7; elif grep -E \"Red Hat|CentOS\" /etc/*release;then grep $second7ip /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC.7*; elif grep Ubuntu /etc/*release;then grep $second7ip /etc/network/interfaces.d/$$SECONDNIC.7;else echo \"Sorry,this is not supported os\"; fi"
check:rc==0
cmd:xdsh $$CN "if grep SUSE /etc/*release;then rm -rf /etc/sysconfig/network/ifcfg-$$SECONDNIC; elif grep -E \"Red Hat|CentOS\" /etc/*release;then rm -rf /etc/sysconfig/network-scripts/ifcfg-$$SECONDNIC*; elif grep Ubuntu /etc/*release;then rm -rf /etc/network/interfaces.d/$$SECONDNIC;else echo \"Sorry,this is not supported os\"; fi"
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=105;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second6ip=$var1$var3;xdsh $$CN "ip addr del $second6ip/8 dev $$SECONDNIC.6"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var2=106;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second7ip=$var2$var3;xdsh $$CN "ip addr del $second7ip/8 dev $$SECONDNIC.7"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=105;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second6ip=$var1$var3;xdsh $$CN "ip addr del $second6ip/8 dev $$SECONDNIC.6"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var2=106;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second7ip=$var2$var3;xdsh $$CN "ip addr del $second7ip/8 dev $$SECONDNIC.7"
cmd:rmdef -t network -o confignetworks_test1
cmd:rmdef -t network -o confignetworks_test6
cmd:rmdef -t network -o confignetworks_test7
cmd:xdsh $$CN "ip link del dev $$SECONDNIC.6"
cmd:xdsh $$CN "ip link del dev $$SECONDNIC.7"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$SECONDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$SECONDNIC"
cmd:xdsh $$CN "if grep SUSE /etc/*release;then rm -rf /etc/sysconfig/network/ifcfg-$$SECONDNIC.6 /etc/sysconfig/network/ifcfg-$$SECONDNIC.7; elif grep -E \"Red Hat|CentOS\" /etc/*release;then rm -rf /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC.6 /etc/sysconfig/network-scripts/ifcfg-*$$SECONDNIC.7; elif grep Ubuntu /etc/*release;then rm -rf /etc/network/interfaces.d/$$SECONDNIC.6 /etc/network/interfaces.d/$$SECONDNIC.7;else echo \"Sorry,this is not supported os\"; fi"
check:rc==0
cmd:xdsh $$CN "if grep SUSE /etc/*release;then cp -f /tmp/backupnet/* /etc/sysconfig/network/; elif grep -E \"Red Hat .* 8.*|CentOS .* 8.*\" /etc/*release; then cp -f /tmp/backupnet/* /etc/sysconfig/network-scripts/; nmcli con reload;elif grep -E \"Red Hat|CentOS\" /etc/*release;then cp -f /tmp/backupnet/* /etc/sysconfig/network-scripts/; elif grep Ubuntu /etc/*release;then cp -f /tmp/backupnet/* /etc/network/interfaces.d/;cp -f /tmp/interfaces /etc/network/;else echo \"Sorry,this is not supported os\"; fi"
@@ -607,14 +607,14 @@ cmd:xdsh $$CN "rm -rf /tmp/backupnet/"
cmd:xdsh $$CN "mkdir -p /tmp/backupnet/"
check:rc==0
cmd:if grep SUSE /etc/*release;then xdsh $$CN "cp -f /etc/sysconfig/network/ifcfg-* /tmp/backupnet/"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "cp -rf /etc/sysconfig/network-scripts /tmp/backupnet/"; elif grep Ubuntu /etc/*release;then xdsh $$CN "cp -f /etc/network/interfaces.d/* /tmp/backupnet/";else echo "Sorry,this is not supported os"; fi
cmd:if grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "yum -y install bridge-utils";fi
cmd:if grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "if yum -q list bridge-utils ; then yum -y install bridge-utils; fi";fi
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=100.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test1 net=$secondnet mask=255.255.0.0 mgtifname=$$SECONDNIC
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$SECONDNIC=$second1ip nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=confignetworks_test1
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$SECONDNIC=$second1ip nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=confignetworks_test1
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=101.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test2 net=$secondnet mask=255.255.0.0 mgtifname=$$THIRDNIC
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$THIRDNIC=$second1ip nictypes.$$THIRDNIC=Ethernet nicnetworks.$$THIRDNIC=confignetworks_test2
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$THIRDNIC=$second1ip nictypes.$$THIRDNIC=Ethernet nicnetworks.$$THIRDNIC=confignetworks_test2
check:rc==0
cmd:updatenode $$CN -P confignetwork
check:rc==0
@@ -622,7 +622,7 @@ cmd:chdef $$CN nicips.$$SECONDNIC= nictypes.$$SECONDNIC= nicnetworks.$$SECONDNIC
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=102.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test3 net=$secondnet mask=255.255.0.0
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;bond0ip=$var1$var2;chdef $$CN nicnetworks.bond0=confignetworks_test3 nictypes.$$SECONDNIC=ethernet nictypes.$$THIRDNIC=ethernet nictypes.bond0=bond nicips.bond0=$bond0ip nicdevices.bond0="$$SECONDNIC|$$THIRDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;bond0ip=$var1$var2;chdef $$CN nicnetworks.bond0=confignetworks_test3 nictypes.$$SECONDNIC=ethernet nictypes.$$THIRDNIC=ethernet nictypes.bond0=bond nicips.bond0=$bond0ip nicdevices.bond0="$$SECONDNIC|$$THIRDNIC"
check:rc==0
cmd:updatenode $$CN -P confignetwork
check:rc==0
@@ -630,7 +630,7 @@ cmd:xdsh $$CN "ls /sys/class/net"
check:output=~bond0
cmd:xdsh $$CN "cat /sys/class/net/bonding_masters"
check:output=~bond0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;bond0ip=$var1$var2;if grep SUSE /etc/*release;then xdsh $$CN "grep $bond0ip /etc/sysconfig/network/ifcfg-bond0"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $bond0ip /etc/sysconfig/network-scripts/ifcfg-*bond0"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $bond0ip /etc/network/interfaces.d/bond0";else echo "Sorry,this is not supported os"; fi
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;bond0ip=$var1$var2;if grep SUSE /etc/*release;then xdsh $$CN "grep $bond0ip /etc/sysconfig/network/ifcfg-bond0"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $bond0ip /etc/sysconfig/network-scripts/ifcfg-*bond0"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $bond0ip /etc/network/interfaces.d/bond0";else echo "Sorry,this is not supported os"; fi
check:rc==0
cmd:rmdef -t network -o confignetworks_test1
cmd:if grep SUSE /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network/ifcfg-$$SECONDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network-scripts/ifcfg-$$SECONDNIC"; elif grep Ubuntu /etc/*release;then xdsh $$CN "rm -rf /etc/network/interfaces.d/$$SECONDNIC";else echo "Sorry,this is not supported os"; fi
@@ -639,7 +639,7 @@ cmd:rmdef -t network -o confignetworks_test2
cmd:if grep SUSE /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network/ifcfg-$$THIRDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network-scripts/ifcfg-$$THIRDNIC"; elif grep Ubuntu /etc/*release;then xdsh $$CN "rm -rf /etc/network/interfaces.d/$$THIRDNIC";else echo "Sorry,this is not supported os"; fi
check:rc==0
cmd:rmdef -t network -o confignetworks_test3
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;bond0ip=$var1$var2;xdsh $$CN "ip addr del $bond0ip/16 dev bond0"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;bond0ip=$var1$var2;xdsh $$CN "ip addr del $bond0ip/16 dev bond0"
cmd:xdsh $$CN "ip link del dev bond0"
cmd:xdsh $$CN "echo -bond0 > /sys/class/net/bonding_masters"
cmd:if grep SUSE /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network/ifcfg-bond0"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network-scripts"; elif grep Ubuntu /etc/*release;then xdsh $$CN "rm -rf /etc/network/interfaces.d/bond0";else echo "Sorry,this is not supported os"; fi
@@ -663,30 +663,30 @@ cmd:xdsh $$CN "rm -rf /tmp/backupnet/"
cmd:xdsh $$CN "mkdir -p /tmp/backupnet/"
check:rc==0
cmd:if grep SUSE /etc/*release;then xdsh $$CN "cp -f /etc/sysconfig/network/ifcfg-* /tmp/backupnet/"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "cp -f /etc/sysconfig/network-scripts/ifcfg-* /tmp/backupnet/"; elif grep Ubuntu /etc/*release;then xdsh $$CN "cp -f /etc/network/interfaces.d/* /tmp/backupnet/";else echo "Sorry,this is not supported os"; fi
cmd:if grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "yum -y install bridge-utils";fi
cmd:if grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "if yum -q list bridge-utils ; then yum -y install bridge-utils; fi";fi
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=100.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test1 net=$secondnet mask=255.255.0.0 mgtifname=$$SECONDNIC
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$SECONDNIC=$second1ip nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=confignetworks_test1
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$SECONDNIC=$second1ip nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=confignetworks_test1
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=101.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test2 net=$secondnet mask=255.255.0.0 mgtifname=$$THIRDNIC
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$THIRDNIC=$second1ip nictypes.$$THIRDNIC=Ethernet nicnetworks.$$THIRDNIC=confignetworks_test2
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$THIRDNIC=$second1ip nictypes.$$THIRDNIC=Ethernet nicnetworks.$$THIRDNIC=confignetworks_test2
cmd:updatenode $$CN -P confignetwork
check:rc==0
cmd:chdef $$CN nicips.$$SECONDNIC= nictypes.$$SECONDNIC= nicnetworks.$$SECONDNIC= nicips.$$THIRDNIC= nictypes.$$THIRDNIC= nicnetworks.$$THIRDNIC=
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=102.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test3 net=$secondnet mask=255.255.0.0
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;bond0ip=$var1$var2;chdef $$CN nicnetworks.bond0=confignetworks_test3 nictypes.$$SECONDNIC=ethernet nictypes.$$THIRDNIC=ethernet nictypes.bond0=bond nicips.bond0=$bond0ip nicdevices.bond0=
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;bond0ip=$var1$var2;chdef $$CN nicnetworks.bond0=confignetworks_test3 nictypes.$$SECONDNIC=ethernet nictypes.$$THIRDNIC=ethernet nictypes.bond0=bond nicips.bond0=$bond0ip nicdevices.bond0=
check:rc==0
cmd:updatenode $$CN -P confignetwork
check:rc!=0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;bond0ip=$var1$var2;chdef $$CN nicnetworks.bond0=confignetworks_test3 nictypes.$$SECONDNIC=ethernet nictypes.$$THIRDNIC=ethernet nictypes.bond0=bond nicips.bond0=$bond0ip nicdevices.$$SECONDNIC=bond0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;bond0ip=$var1$var2;chdef $$CN nicnetworks.bond0=confignetworks_test3 nictypes.$$SECONDNIC=ethernet nictypes.$$THIRDNIC=ethernet nictypes.bond0=bond nicips.bond0=$bond0ip nicdevices.$$SECONDNIC=bond0
check:rc==0
cmd:updatenode $$CN -P confignetwork
check:rc!=0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$SECONDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$THIRDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$SECONDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$THIRDNIC"
cmd:rmdef -t network -o confignetworks_test1
cmd:if grep SUSE /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network/ifcfg-$$SECONDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network-scripts/ifcfg-$$SECONDNIC"; elif grep Ubuntu /etc/*release;then xdsh $$CN "rm -rf /etc/network/interfaces.d/$$SECONDNIC";else echo "Sorry,this is not supported os"; fi
check:rc==0
@@ -712,14 +712,14 @@ cmd:xdsh $$CN "rm -rf /tmp/backupnet/"
cmd:xdsh $$CN "mkdir -p /tmp/backupnet/"
check:rc==0
cmd:if grep SUSE /etc/*release;then xdsh $$CN "cp -f /etc/sysconfig/network/ifcfg-* /tmp/backupnet/"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "cp -rf /etc/sysconfig/network-scripts /tmp/backupnet/"; elif grep Ubuntu /etc/*release;then xdsh $$CN "cp -f /etc/network/interfaces.d/* /tmp/backupnet/;cp -f /etc/network/interfaces /tmp";else echo "Sorry,this is not supported os"; fi
cmd:if grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "yum -y install bridge-utils";fi
cmd:if grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "if yum -q list bridge-utils ; then yum -y install bridge-utils; fi";fi
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=100.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test1 net=$secondnet mask=255.255.0.0 mgtifname=$$SECONDNIC mtu=1500
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$SECONDNIC=$second1ip nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=confignetworks_test1
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$SECONDNIC=$second1ip nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=confignetworks_test1
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=101.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test2 net=$secondnet mask=255.255.0.0 mgtifname=$$THIRDNIC mtu=1500
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$THIRDNIC=$second1ip nictypes.$$THIRDNIC=Ethernet nicnetworks.$$THIRDNIC=confignetworks_test2
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$THIRDNIC=$second1ip nictypes.$$THIRDNIC=Ethernet nicnetworks.$$THIRDNIC=confignetworks_test2
check:rc==0
cmd:updatenode $$CN -P confignetwork
check:rc==0
@@ -729,13 +729,13 @@ cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=102.;var4=`echo $cnip |awk -F.
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=103.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test4 net=$secondnet mask=255.255.0.0 mtu=1500
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=103;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;bond2ip=$var1$var3;bond3ip=$var2$var3;chdef $$CN nicdevices.bond0.2=bond0 nicdevices.bond0.3=bond0 nicips.bond0.2=$bond2ip nicips.bond0.3=$bond3ip nicnetworks.bond0.2=confignetworks_test3 nicnetworks.bond0.3=confignetworks_test4 nictypes.bond0.2=vlan nictypes.bond0.3=vlan nictypes.bond0=bond nictypes.$$SECONDNIC=ethernet nictypes.$$THIRDNIC=ethernet nicdevices.bond0="$$SECONDNIC|$$THIRDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=103;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;bond2ip=$var1$var3;bond3ip=$var2$var3;chdef $$CN nicdevices.bond0.2=bond0 nicdevices.bond0.3=bond0 nicips.bond0.2=$bond2ip nicips.bond0.3=$bond3ip nicnetworks.bond0.2=confignetworks_test3 nicnetworks.bond0.3=confignetworks_test4 nictypes.bond0.2=vlan nictypes.bond0.3=vlan nictypes.bond0=bond nictypes.$$SECONDNIC=ethernet nictypes.$$THIRDNIC=ethernet nicdevices.bond0="$$SECONDNIC|$$THIRDNIC"
check:rc==0
cmd:updatenode $$CN -P confignetwork
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;bond2ip=$var1$var3;if grep SUSE /etc/*release;then xdsh $$CN "grep $bond2ip /etc/sysconfig/network/ifcfg-bond0.2"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $bond2ip /etc/sysconfig/network-scripts/ifcfg-*bond0.2*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $bond2ip /etc/network/interfaces.d/bond0.2";else echo "Sorry,this is not supported os"; fi
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;bond2ip=$var1$var3;if grep SUSE /etc/*release;then xdsh $$CN "grep $bond2ip /etc/sysconfig/network/ifcfg-bond0.2"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $bond2ip /etc/sysconfig/network-scripts/ifcfg-*bond0.2*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $bond2ip /etc/network/interfaces.d/bond0.2";else echo "Sorry,this is not supported os"; fi
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var2=103;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;bond3ip=$var2$var3;if grep SUSE /etc/*release;then xdsh $$CN "grep $bond3ip /etc/sysconfig/network/ifcfg-bond0.3"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $bond3ip /etc/sysconfig/network-scripts/ifcfg-*bond0.3*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $bond3ip /etc/network/interfaces.d/bond0.3";else echo "Sorry,this is not supported os"; fi
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var2=103;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;bond3ip=$var2$var3;if grep SUSE /etc/*release;then xdsh $$CN "grep $bond3ip /etc/sysconfig/network/ifcfg-bond0.3"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $bond3ip /etc/sysconfig/network-scripts/ifcfg-*bond0.3*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $bond3ip /etc/network/interfaces.d/bond0.3";else echo "Sorry,this is not supported os"; fi
check:rc==0
cmd:xdsh $$CN "ls /sys/class/net"
check:output=~bond0
@@ -751,10 +751,10 @@ cmd:if grep SUSE /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network/ifc
check:rc==0
cmd:rmdef -t network -o confignetworks_test3
cmd:rmdef -t network -o confignetworks_test4
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$SECONDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$THIRDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;bond2ip=$var1$var3;xdsh $$CN "ip addr del $bond2ip/16 dev bond0.2"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var2=103;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;bond3ip=$var2$var3;xdsh $$CN "ip addr del $bond3ip/16 dev bond0.3"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$SECONDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$THIRDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;bond2ip=$var1$var3;xdsh $$CN "ip addr del $bond2ip/16 dev bond0.2"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var2=103;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;bond3ip=$var2$var3;xdsh $$CN "ip addr del $bond3ip/16 dev bond0.3"
cmd:xdsh $$CN "ip link del dev bond0"
cmd:xdsh $$CN "ip link del dev bond0.2"
cmd:xdsh $$CN "ip link del dev bond0.3"
@@ -780,21 +780,21 @@ cmd:xdsh $$CN "rm -rf /tmp/backupnet/"
cmd:xdsh $$CN "mkdir -p /tmp/backupnet/"
check:rc==0
cmd:if grep SUSE /etc/*release;then xdsh $$CN "cp -f /etc/sysconfig/network/ifcfg-* /tmp/backupnet/"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "cp -rf /etc/sysconfig/network-scripts /tmp/backupnet/"; elif grep Ubuntu /etc/*release;then xdsh $$CN "cp -f /etc/network/interfaces.d/* /tmp/backupnet/";else echo "Sorry,this is not supported os"; fi
cmd:if grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "yum -y install bridge-utils";fi
cmd:if grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "if yum -q list bridge-utils ; then yum -y install bridge-utils; fi";fi
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=100.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test1 net=$secondnet mask=255.255.0.0 mgtifname=$$SECONDNIC
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$SECONDNIC=$second1ip nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=confignetworks_test1
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$SECONDNIC=$second1ip nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=confignetworks_test1
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=101.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test2 net=$secondnet mask=255.255.0.0 mgtifname=$$THIRDNIC
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$THIRDNIC=$second1ip nictypes.$$THIRDNIC=Ethernet nicnetworks.$$THIRDNIC=confignetworks_test2
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$THIRDNIC=$second1ip nictypes.$$THIRDNIC=Ethernet nicnetworks.$$THIRDNIC=confignetworks_test2
cmd:updatenode $$CN -P confignetwork
check:rc==0
cmd:chdef $$CN nicips.$$SECONDNIC= nictypes.$$SECONDNIC= nicnetworks.$$SECONDNIC= nicips.$$THIRDNIC= nictypes.$$THIRDNIC= nicnetworks.$$THIRDNIC=
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=102.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test3 net=$secondnet mask=255.255.0.0
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=103;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;br0ip=$var1$var2;chdef $$CN nicnetworks.br0=confignetworks_test3 nicdevices.br0=bond0 nictypes.br0=bridge nicips.br0=$br0ip nicdevices.bond0="$$SECONDNIC|$$THIRDNIC" nictypes.bond0=bond nictypes.$$SECONDNIC=ethernet nictypes.$$THIRDNIC=ethernet
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=103;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;br0ip=$var1$var2;chdef $$CN nicnetworks.br0=confignetworks_test3 nicdevices.br0=bond0 nictypes.br0=bridge nicips.br0=$br0ip nicdevices.bond0="$$SECONDNIC|$$THIRDNIC" nictypes.bond0=bond nictypes.$$SECONDNIC=ethernet nictypes.$$THIRDNIC=ethernet
check:rc==0
cmd:updatenode $$CN -P confignetwork
check:rc==0
@@ -802,7 +802,7 @@ cmd:xdsh $$CN "ls /sys/class/net"
check:output=~br0
cmd:xdsh $$CN "cat /sys/class/net/bonding_masters"
check:output=~bond0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=103;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;br0ip=$var1$var2;if grep SUSE /etc/*release;then xdsh $$CN "grep $br0ip /etc/sysconfig/network/ifcfg-br0"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $br0ip /etc/sysconfig/network-scripts/ifcfg-*br0"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $br0ip /etc/network/interfaces.d/br0";else echo "Sorry,this is not supported os"; fi
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=103;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;br0ip=$var1$var2;if grep SUSE /etc/*release;then xdsh $$CN "grep $br0ip /etc/sysconfig/network/ifcfg-br0"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $br0ip /etc/sysconfig/network-scripts/ifcfg-*br0"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $br0ip /etc/network/interfaces.d/br0";else echo "Sorry,this is not supported os"; fi
check:rc==0
cmd:rmdef -t network -o confignetworks_test1
cmd:if grep SUSE /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network/ifcfg-$$SECONDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network-scripts/ifcfg-$$SECONDNIC"; elif grep Ubuntu /etc/*release;then xdsh $$CN "rm -rf /etc/network/interfaces.d/$$SECONDNIC";else echo "Sorry,this is not supported os"; fi
@@ -811,9 +811,9 @@ cmd:rmdef -t network -o confignetworks_test2
cmd:if grep SUSE /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network/ifcfg-$$THIRDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network-scripts/ifcfg-$$THIRDNIC"; elif grep Ubuntu /etc/*release;then xdsh $$CN "rm -rf /etc/network/interfaces.d/$$THIRDNIC";else echo "Sorry,this is not supported os"; fi
check:rc==0
cmd:rmdef -t network -o confignetworks_test3
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=103;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;br0ip=$var1$var2;xdsh $$CN "ip addr del $br0ip/16 dev br0"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$SECONDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$THIRDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=103;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;br0ip=$var1$var2;xdsh $$CN "ip addr del $br0ip/16 dev br0"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$SECONDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;xdsh $$CN "ip addr del $second1ip/16 dev $$THIRDNIC"
cmd:xdsh $$CN "ip link del dev br0"
cmd:xdsh $$CN "echo -bond0 > /sys/class/net/bonding_masters"
cmd:if grep SUSE /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network/ifcfg-br0"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network-scripts"; elif grep Ubuntu /etc/*release;then xdsh $$CN "rm -rf /etc/network/interfaces.d/br0";else echo "Sorry,this is not supported os"; fi
@@ -835,14 +835,14 @@ cmd:xdsh $$CN "rm -rf /tmp/backupnet/"
cmd:xdsh $$CN "mkdir -p /tmp/backupnet/"
check:rc==0
cmd:if grep SUSE /etc/*release;then xdsh $$CN "cp -f /etc/sysconfig/network/ifcfg-* /tmp/backupnet/"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "cp -rf /etc/sysconfig/network-scripts /tmp/backupnet/"; elif grep Ubuntu /etc/*release;then xdsh $$CN "cp -f /etc/network/interfaces.d/* /tmp/backupnet/;cp -f /etc/network/interfaces /tmp";else echo "Sorry,this is not supported os"; fi
cmd:if grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "yum -y install bridge-utils";fi
cmd:if grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "if yum -q list bridge-utils ; then yum -y install bridge-utils; fi";fi
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=100.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test1 net=$secondnet mask=255.255.0.0 mgtifname=$$SECONDNIC
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$SECONDNIC=$second1ip nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=confignetworks_test1
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$SECONDNIC=$second1ip nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=confignetworks_test1
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=101.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test2 net=$secondnet mask=255.255.0.0 mgtifname=$$THIRDNIC
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$THIRDNIC=$second1ip nictypes.$$THIRDNIC=Ethernet nicnetworks.$$THIRDNIC=confignetworks_test2
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;second1ip=$var1$var2;chdef $$CN nicips.$$THIRDNIC=$second1ip nictypes.$$THIRDNIC=Ethernet nicnetworks.$$THIRDNIC=confignetworks_test2
check:rc==0
cmd:updatenode $$CN -P confignetwork
check:rc==0
@@ -851,34 +851,36 @@ check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=102.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test3 net=$secondnet mask=255.255.0.0
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var3=103.;var4=`echo $cnip |awk -F. '{print $2}'`;var5=.0.0;secondnet=$var3$var4$var5;mkdef -t network -o confignetworks_test4 net=$secondnet mask=255.255.0.0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=103;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;br22ip=$var1$var3;br33ip=$var2$var3;chdef $$CN nicdevices.br22=bond0.2 nicdevices.br33=bond0.3 nictypes.br22=bridge nictypes.br33=bridge nicnetworks.br22=confignetworks_test3 nicnetworks.br33=confignetworks_test4 nicips.br22=$br22ip nicips.br33=$br33ip nicdevices.bond0.2=bond0 nicdevices.bond0.3=bond0 nictypes.bond0.2=vlan nictypes.bond0.3=vlan nictypes.bond0=bond nictypes.$$SECONDNIC=ethernet nictypes.$$THIRDNIC=ethernet nicdevices.bond0="$$SECONDNIC|$$THIRDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=103;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;br22ip=$var1$var3;br33ip=$var2$var3;chdef $$CN nicdevices.br22=bond0.2 nicdevices.br33=bond0.3 nictypes.br22=bridge nictypes.br33=bridge nicnetworks.br22=confignetworks_test3 nicnetworks.br33=confignetworks_test4 nicips.br22=$br22ip nicips.br33=$br33ip nicdevices.bond0.2=bond0 nicdevices.bond0.3=bond0 nictypes.bond0.2=vlan nictypes.bond0.3=vlan nictypes.bond0=bond nictypes.$$SECONDNIC=ethernet nictypes.$$THIRDNIC=ethernet nicdevices.bond0="$$SECONDNIC|$$THIRDNIC"
check:rc==0
cmd:updatenode $$CN -P confignetwork
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;br22ip=$var1$var3;if grep SUSE /etc/*release;then xdsh $$CN "grep $br22ip /etc/sysconfig/network/ifcfg-br22"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $br22ip /etc/sysconfig/network-scripts/ifcfg-*br22*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $br22ip /etc/network/interfaces.d/br22";else echo "Sorry,this is not supported os"; fi
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;br22ip=$var1$var3;if grep SUSE /etc/*release;then xdsh $$CN "grep $br22ip /etc/sysconfig/network/ifcfg-br22"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $br22ip /etc/sysconfig/network-scripts/ifcfg-*br22*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $br22ip /etc/network/interfaces.d/br22";else echo "Sorry,this is not supported os"; fi
check:rc==0
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=103;var3=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;br33ip=$var1$var3;if grep SUSE /etc/*release;then xdsh $$CN "grep $br33ip /etc/sysconfig/network/ifcfg-br33"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $br33ip /etc/sysconfig/network-scripts/ifcfg-*br33*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $br33ip /etc/network/interfaces.d/br33";else echo "Sorry,this is not supported os"; fi
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=103;var3=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;br33ip=$var1$var3;if grep SUSE /etc/*release;then xdsh $$CN "grep $br33ip /etc/sysconfig/network/ifcfg-br33"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "grep $br33ip /etc/sysconfig/network-scripts/ifcfg-*br33*"; elif grep Ubuntu /etc/*release;then xdsh $$CN "grep $br33ip /etc/network/interfaces.d/br33";else echo "Sorry,this is not supported os"; fi
check:rc==0
cmd:xdsh $$CN "ls /sys/class/net"
check:output=~br22
check:output=~br33
cmd:xdsh $$CN "cat /sys/class/net/bonding_masters"
check:output=~bond0
cmd:xdsh $$CN "ip addr show bond0.3"
cmd:xdsh $$CN "ip addr show br33"
cmd:rmdef -t network -o confignetworks_test1
cmd:rmdef -t network -o confignetworks_test2
cmd:if grep SUSE /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network/ifcfg-$$SECONDNIC"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network-scripts"; elif grep Ubuntu /etc/*release;then xdsh $$CN "rm -rf /etc/network/interfaces.d/$$SECONDNIC";else echo "Sorry,this is not supported os"; fi
check:rc==0
cmd:rmdef -t network -o confignetworks_test3
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;br22ip=$var1$var2;xdsh $$CN "ip addr del $br22ip/16 dev br22"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=102;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;br22ip=$var1$var2;xdsh $$CN "ip addr del $br22ip/16 dev br22"
cmd:xdsh $$CN "ip link del dev br22"
cmd:rmdef -t network -o confignetworks_test4
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=103;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;br33ip=$var1$var2;xdsh $$CN "ip addr del $br33ip/16 dev br33"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=103;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;br33ip=$var1$var2;xdsh $$CN "ip addr del $br33ip/16 dev br33"
cmd:xdsh $$CN "ip link del dev br33"
cmd:xdsh $$CN "ip link del dev bond0.2"
cmd:xdsh $$CN "ip link del dev bond0.3"
cmd:xdsh $$CN "ip link del dev bond0"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;secondip=$var1$var2;xdsh $$CN "ip addr del $secondip/16 dev $$SECONDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]*(..\..*)/\1/'`;secondip=$var1$var2;xdsh $$CN "ip addr del $secondip/16 dev $$THIRDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=100;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;secondip=$var1$var2;xdsh $$CN "ip addr del $secondip/16 dev $$SECONDNIC"
cmd:cnip=__GETNODEATTR($$CN,ip)__;echo $cnip;var1=101;var2=`echo $cnip |sed -r 's/[^\.]{1,3}(\..*)/\1/'`;secondip=$var1$var2;xdsh $$CN "ip addr del $secondip/16 dev $$THIRDNIC"
cmd:xdsh $$CN "echo -bond0 > /sys/class/net/bonding_masters"
cmd:if grep SUSE /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network/ifcfg-bond0 /etc/sysconfig/network/ifcfg-bond0.2 /etc/sysconfig/network/ifcfg-bond0.3 /etc/sysconfig/network/ifcfg-br22 /etc/sysconfig/network/ifcfg-br33"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "rm -rf /etc/sysconfig/network-scripts"; elif grep Ubuntu /etc/*release;then xdsh $$CN "rm -rf /etc/network/interfaces.d/bond0 /etc/network/interfaces.d/bond0.2 /etc/network/interfaces.d/bond0.3 /etc/network/interfaces.d/br22 /etc/network/interfaces.d/br33";else echo "Sorry,this is not supported os"; fi
check:rc==0
@@ -900,7 +902,7 @@ cmd:xdsh $$CN "rm -rf /tmp/backupnet/"
cmd:xdsh $$CN "mkdir -p /tmp/backupnet/"
check:rc==0
cmd:if grep SUSE /etc/*release;then xdsh $$CN "cp -f /etc/sysconfig/network/ifcfg-* /tmp/backupnet/"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "cp -rf /etc/sysconfig/network-scripts /tmp/backupnet/"; elif grep Ubuntu /etc/*release;then xdsh $$CN "cp -f /etc/network/interfaces.d/* /tmp/backupnet/;cp -f /etc/network/interfaces /tmp";else echo "Sorry,this is not supported os"; fi
cmd:if grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "yum -y install bridge-utils";fi
cmd:if grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "if yum -q list bridge-utils ; then yum -y install bridge-utils; fi";fi
cmd:mkdef -t network -o 11_1_0_0-255_255_0_0 net=11.1.0.0 mask=255.255.0.0 mgtifname=$$SECONDNIC
check:rc==0
cmd:chdef $$CN nicips.$$SECONDNIC=11.1.0.100 nictypes.$$SECONDNIC=Ethernet nicnetworks.$$SECONDNIC=11_1_0_0-255_255_0_0
@@ -966,7 +968,7 @@ cmd:xdsh $$CN "rm -rf /tmp/backupnet/"
cmd:xdsh $$CN "mkdir -p /tmp/backupnet/"
check:rc==0
cmd:if grep SUSE /etc/*release;then xdsh $$CN "cp -f /etc/sysconfig/network/ifcfg-* /tmp/backupnet/"; elif grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "cp -f /etc/sysconfig/network-scripts/ifcfg-* /tmp/backupnet/"; elif grep Ubuntu /etc/*release;then xdsh $$CN "cp -f /etc/network/interfaces.d/* /tmp/backupnet/";else echo "Sorry,this is not supported os"; fi
cmd:if grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "yum -y install bridge-utils";fi
cmd:if grep -E "Red Hat|CentOS" /etc/*release;then xdsh $$CN "if yum -q list bridge-utils ; then yum -y install bridge-utils; fi";fi
cmd:mkdef -t network -o 30_5_0_0-255_255_0_0 net=30.5.0.0 mask=255.255.0.0
check:rc==0
cmd:mkdef -t network -o 40_5_0_0-255_255_0_0 net=40.5.0.0 mask=255.255.0.0
@@ -114,7 +114,7 @@ if ($genesis_nodesetshell_test) {
if ($genesis_runcmd_test) {
send_msg(2, "[$$]:Running nodeset NODE runcmd test...............");
if (&testxdsh(&rungenesiscmd(&get_arch))) {
send_msg(0, "[$$]:Could not verify test results using xdsh...............");
send_msg(0, "[$$]:Could not verify runcmd test results using testxdsh() ...............");
exit 1;
}
send_msg(2, "[$$]:Running runcmd test success...............");
@@ -125,7 +125,7 @@ if ($genesis_runcmd_test) {
if ($genesis_runimg_test) {
send_msg(2, "[$$]:Run nodeset NODE runimage test...............");
if (&testxdsh(&rungenesisimg)) {
send_msg(0, "[$$]:Could not verify test results using xdsh ...............");
send_msg(0, "[$$]:Could not verify runimage test results using testxdsh() ...............");
exit 1;
}
@@ -199,9 +199,13 @@ sub rungenesiscmd {
if ($?) {
send_msg(0, "mknb $arch failed for runcmd test.");
}
`rinstall $noderange "runcmd=cmdtest,shell"`;
my $rinstall_cmd = "rinstall $noderange \"runcmd=cmdtest,shell\"";
`$rinstall_cmd`;
if ($?) {
send_msg(0, "rinstall noderange shell failed for runcmd test");
send_msg(0, "Command \"$rinstall_cmd\" failed for runcmd test");
}
else {
send_msg(2, "Installing with \"$rinstall_cmd\" for runcmd test");
}
return $value;
}
@@ -247,7 +251,7 @@ sub rungenesisimg {
#########################################
sub testxdsh {
my $value = shift;
print "The input parameter is $value \n";
send_msg(2, "The input parameter for testxdsh() is $value \n");
my $checkstring;
my $checkfile;
my $nodestatus;
@@ -266,7 +270,7 @@ sub testxdsh {
if (($value == 1) || ($value == 2) || ($value == 3)) {
`$xdsh_command`;
if ($?) {
my @i = (1..10);
my @i = (1..5);
for (@i) {
sleep 300;
$nodestatus=`lsdef $noderange -i status -c 2>&1 | awk -F'=' '{print \$2}'`;
+25 -29
View File
@@ -21,10 +21,6 @@ check:rc==0
#Install additional packages on Red Hat
cmd:if xdsh $$CN "grep \"Red Hat\" /etc/*release >/dev/null"; then xdsh $$CN "yum install -y yum-utils dnf-utils bzip2"; fi
#Pull down core and deps repomd.xml on SLES to prevent caching of the wrong file
cmd:if xdsh $$CN "grep \"SUSE\" /etc/*release >/dev/null"; then xdsh $$CN "wget --no-cache http://xcat.org/files/xcat/repos/yum/devel/core-snap/repodata/repomd.xml"; fi
cmd:if xdsh $$CN "grep \"SUSE\" /etc/*release >/dev/null"; then os=`echo __GETNODEATTR($$CN,os)__ | cut -d "." -f1 | sed s/sle1/sles1/` && xdsh $$CN "wget --no-cache http://xcat.org/files/xcat/repos/yum/devel/xcat-dep/$os/__GETNODEATTR($$CN,arch)__/repodata/repomd.xml"; fi
#Install additional packages on Ubuntu
cmd:if xdsh $$CN "grep \"Ubuntu\" /etc/*release >/dev/null"; then xdsh $$CN "DEBIAN_FRONTEND=noninteractive apt-get install -y gnupg"; fi
@@ -34,12 +30,12 @@ cmd:if grep Ubuntu /etc/*release;then code=`lsb_release -sc` && xdsh $$CN "scp -
#Set flag to accept install dependent packages by default on Ubuntu
cmd:if grep Ubuntu /etc/*release;then arc_all=`uname -a`; if [[ $arc_all =~ "x86_64" ]]; then xdsh $$CN "echo '* libraries/restart-without-asking boolean true' | debconf-set-selections"; fi; fi
#Install devel version of xCAT
#Install devel version of xCAT. If first attempt fails, try again
cmd:xdsh $$CN "cd /; ./go-xcat --xcat-version=devel -y install"
check:rc==0
cmd:xdsh $$CN "cat /tmp/go-xcat.log"
cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -a"
check:rc==0
cmd:version=`xdsh $$CN /opt/xcat/bin/lsxcatd -v`; if [[ $version =~ "Version" ]]; then echo "xCAT installed successfully first time"; else echo "First attempt to install xCAT failed, attempting to install xCAT again"; xdsh $$CN "cd /; ./go-xcat --xcat-version=devel -y install"; fi
cmd:xdsh $$CN "source /etc/profile.d/xcat.sh; lsxcatd -v"
check:output=~Version
cmd:xdsh $$CN "service xcatd status"
check:rc==0
check:output=~running
@@ -78,12 +74,12 @@ cmd:if grep Ubuntu /etc/*release;then code=`lsb_release -sc` && xdsh $$CN "scp -
#Set flag to accept install dependent packages by default on Ubuntu
cmd:if grep Ubuntu /etc/*release;then arc_all=`uname -a`; if [[ $arc_all =~ "x86_64" ]]; then xdsh $$CN "echo '* libraries/restart-without-asking boolean true' | debconf-set-selections"; fi; fi
#Install GA version of xCAT
#Install GA version of xCAT. If first attempt fails, try again
cmd:xdsh $$CN "cd /; ./go-xcat -y install"
check:rc==0
cmd:xdsh $$CN "cat /tmp/go-xcat.log"
cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -a"
check:rc==0
cmd:version=`xdsh $$CN /opt/xcat/bin/lsxcatd -v`; if [[ $version =~ "Version" ]]; then echo "xCAT installed successfully first time"; else echo "First attempt to install xCAT failed, attempting to install xCAT again"; xdsh $$CN "cd /; ./go-xcat -y install"; fi
cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -v"
check:output=~Version
cmd:xdsh $$CN "service xcatd status"
check:rc==0
check:output=~running
@@ -122,21 +118,21 @@ cmd:if grep Ubuntu /etc/*release;then code=`lsb_release -sc` && xdsh $$CN "scp -
#Set flag to accept install dependent packages by default on Ubuntu
cmd:if grep Ubuntu /etc/*release;then arc_all=`uname -a`; if [[ $arc_all =~ "x86_64" ]]; then xdsh $$CN "echo '* libraries/restart-without-asking boolean true' | debconf-set-selections"; fi; fi
#Install GA version of xCAT
#Install GA version of xCAT. If first attempt fails, try again
cmd:xdsh $$CN "cd /; ./go-xcat -y install"
check:rc==0
cmd:xdsh $$CN "cat /tmp/go-xcat.log"
cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -a"
check:rc==0
cmd:version=`xdsh $$CN /opt/xcat/bin/lsxcatd -v`; if [[ $version =~ "Version" ]]; then echo "xCAT installed successfully first time"; else echo "First attempt to install xCAT failed, attempting to install xCAT again"; xdsh $$CN "cd /; ./go-xcat -y install"; fi
cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -v"
check:output=~Version
cmd:xdsh $$CN "service xcatd status"
check:rc==0
check:output=~running
#Update to devel version of xCAT
cmd:xdsh $$CN "cd /; ./go-xcat --xcat-version=devel -y update"
check:rc==0
cmd:xdsh $$CN "cat /tmp/go-xcat.log"
cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -a"
cmd:version=`xdsh $$CN /opt/xcat/bin/lsxcatd -v`; if [[ $version =~ "Version" ]]; then echo "xCAT updated successfully first time"; else echo "First attempt to update xCAT failed, attempting to update xCAT again"; xdsh $$CN "cd /; ./go-xcat --xcat-version=devel -y update"; fi
check:output=~xCAT updated successfully first time|xCAT has been successfully updated
cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -v"
check:rc==0
cmd:xdsh $$CN "service xcatd status"
check:rc==0
@@ -176,12 +172,12 @@ cmd:if grep Ubuntu /etc/*release;then code=`lsb_release -sc` && xdsh $$CN "scp -
#Set flag to accept install dependent packages by default on Ubuntu
cmd:if grep Ubuntu /etc/*release;then arc_all=`uname -a`; if [[ $arc_all =~ "x86_64" ]]; then xdsh $$CN "echo '* libraries/restart-without-asking boolean true' | debconf-set-selections"; fi; fi
#Install GA version of xCAT
#Install GA version of xCAT. If first attempt fails, try again
cmd:xdsh $$CN "cd /; ./go-xcat -y install"
check:rc==0
cmd:xdsh $$CN "cat /tmp/go-xcat.log"
cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -a"
check:rc==0
cmd:version=`xdsh $$CN /opt/xcat/bin/lsxcatd -v`; if [[ $version =~ "Version" ]]; then echo "xCAT installed successfully first time"; else echo "First attempt to install xCAT failed, attempting to install xCAT again"; xdsh $$CN "cd /; ./go-xcat -y install"; fi
cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -v"
check:output=~Version
cmd:xdsh $$CN "service xcatd status"
check:rc==0
check:output=~running
@@ -195,8 +191,8 @@ check:output=~could not be found|dead|no such service xcatd
#Install devel version of xCAT
cmd:xdsh $$CN "cd /; ./go-xcat --xcat-version=devel -y install"
check:rc==0
cmd:xdsh $$CN "cat /tmp/go-xcat.log"
cmd:version=`xdsh $$CN /opt/xcat/bin/lsxcatd -v`; if [[ $version =~ "Version" ]]; then echo "xCAT installed successfully first time"; else echo "First attempt to install xCAT failed, attempting to install xCAT again"; xdsh $$CN "cd /; ./go-xcat -y --xcat-version=devel install"; fi
check:output=~xCAT installed successfully first time|xCAT has been installed
cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -a"
check:rc==0
cmd:xdsh $$CN "service xcatd status"
@@ -9,17 +9,6 @@ check:output=~usage|Usage
end
start:imgimport_v
os:Linux
description:imgimport -v and --version
label:others
cmd:imgimport -v
check:output=~version|Version
cmd:imgimport --version
check:output=~version|Version
end
start:imgimport_bundlefile
os:Linux
description:imgimport foo.tgz
@@ -0,0 +1,16 @@
start:compare_postscripts
os:Linux
label:provision
cmd:cd /install/postscripts; tar cvf /tmp/mn.tar *
cmd:xdsh $$CN "cd /xcatpost; tar cvf /tmp/cn.tar *"
cmd:scp $$CN:/tmp/cn.tar /tmp
cmd:xdsh $$CN "rm /tmp/cn.tar"
cmd:mkdir -p /tmp/mn; tar xvf /tmp/mn.tar -C /tmp/mn
cmd:mkdir -p /tmp/cn; tar xvf /tmp/cn.tar -C /tmp/cn; rm /tmp/cn/mypost*
cmd:diff -r /tmp/mn /tmp/cn > /tmp/diff.list
check:rc==0
cmd:cat /tmp/diff.list
check:rc==0
cmd:rm -fr /tmp/mn; rm -fr /tmp/cn; rm /tmp/mn.tar; rm /tmp/diff.list
end
@@ -20,7 +20,7 @@ cmd:makedhcp -n
check:rc==0
cmd:makedhcp -a
check:rc==0
cmd:a=0;while true; do [ $a -eq 100 ] && exit 1;output=$(makedhcp -q $$CN);[ $? -ne 0 ] && exit 1;echo $output|grep $$CN 2>/dev/null && exit 0;a=$[$a+1];sleep 1;done
cmd:a=0;while true; do [ $a -eq 100 ] && { echo "After 100 iterations, makedhcp -q $$CN did not return any output"; makedhcp -q all; exit 1; }; output=$(makedhcp -q $$CN);[ $? -ne 0 ] && exit 1;echo $output|grep $$CN 2>/dev/null && exit 0;echo "[$a] Waiting for makedhcp -q $$CN to return output"; a=$[$a+1]; sleep 1;done
check:rc==0
cmd:copycds $$ISO
check:rc==0
@@ -106,7 +106,7 @@ cmd:makedhcp -n
check:rc==0
cmd:makedhcp -a
check:rc==0
cmd:a=0;while true; do [ $a -eq 100 ] && exit 1;output=$(makedhcp -q $$CN);[ $? -ne 0 ] && exit 1;echo $output|grep $$CN 2>/dev/null && exit 0;a=$[$a+1];sleep 1;done
cmd:a=0;while true; do [ $a -eq 100 ] && { echo "After 100 iterations, makedhcp -q $$CN did not return any output"; makedhcp -q all; exit 1; }; output=$(makedhcp -q $$CN);[ $? -ne 0 ] && exit 1;echo $output|grep $$CN 2>/dev/null && exit 0;echo "[$a] Waiting for makedhcp -q $$CN to return output"; a=$[$a+1]; sleep 1;done
check:rc==0
cmd:copycds $$ISO
check:rc==0
@@ -162,6 +162,8 @@ cmd:if [[ "$$OS" =~ "ubuntu" ]]; then apt-get install -y squashfs-tools; fi
#Make sure squashfs rpm is installed on SLES
cmd:if [[ "$$OS" =~ "sle" ]]; then zypper install -y squashfs; fi
cmd:fdisk -l
cmd:df -T
cmd:packimage -m squashfs __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute
check:rc==0
check:output=~archive method:squashfs
+239
View File
@@ -0,0 +1,239 @@
start:restapi_setup_on_MN_CN
description: Set up the REST API on MN and CN
label:restapi
#Install the mod_ssl package on Red Hat
cmd:if cat /etc/*release | grep "Red Hat" >/dev/null; then yum install mod_ssl -y; rpm -qa | grep mod_ssl; fi
check:rc==0
cmd:if cat /etc/*release | grep "Red Hat" >/dev/null; then sed -i 's/^\(\s*\)SSLCertificateFile.*$/\1SSLCertificateFile \/etc\/xcat\/cert\/server-cred.pem/' /etc/httpd/conf.d/ssl.conf; fi
cmd:if cat /etc/*release | grep "Red Hat" >/dev/null; then sed -i 's/^\(\s*SSLCertificateKeyFile.*\)$/#\1/' /etc/httpd/conf.d/ssl.conf; fi
check:rc==0
cmd:if cat /etc/*release | grep "Red Hat" >/dev/null; then service httpd restart; fi
check:rc==0
#Configure the SLES environment
cmd:if cat /etc/*release | grep "SLES" >/dev/null; then a2enmod ssl; a2enflag SSL; cp /etc/apache2/vhosts.d/vhost-ssl.template /etc/apache2/vhosts.d/vhost-ssl.conf; fi
check:rc==0
cmd:if cat /etc/*release | grep "SLES" >/dev/null; then sed -i 's/^\(\s*\)SSLCertificateFile.*$/\1SSLCertificateFile \/etc\/xcat\/cert\/server-cred.pem/' /etc/apache2/vhosts.d/vhost-ssl.conf; fi
cmd:if cat /etc/*release | grep "SLES" >/dev/null; then sed -i 's/^\(\s*SSLCertificateKeyFile.*\)$/#\1/' /etc/apache2/vhosts.d/vhost-ssl.conf; fi
check:rc==0
cmd:if cat /etc/*release | grep "SLES" >/dev/null; then service apache2 restart; fi
check:rc==0
cmd:scp /install/postscripts/ca/ca-cert.pem $$CN:/root
check:rc==0
cmd:tabch key=xcat,username=__GETTABLEVALUE(key,system,username,passwd)__ passwd.password=__GETTABLEVALUE(key,system,password,passwd)__
check:rc==0
end
start:restapi_cleanup_on_MN_CN
description: Clean up the REST API on MN and CN
label:restapi
cmd:xdsh $$CN "rm /root/ca-cert.pem"
check:rc==0
cmd:tabch -d key=xcat passwd
check:rc==0
#Remove the mod_ssl package on Red Hat
cmd:if cat /etc/*release | grep "Red Hat" >/dev/null; then yum remove mod_ssl -y; service httpd restart; fi
check:rc==0
#Clean up the SLES environment
cmd:if cat /etc/*release | grep "SLES" >/dev/null; then rm /etc/apache2/vhosts.d/vhost-ssl.conf; service apache2 restart; fi
check:rc==0
end
start:restapi_list_all_resources
description: List all resources on the management node with "curl -X GET"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws?userName=$username&userPW=$password'"
check:rc==0
check:output=~nodes
end
start:restapi_list_globalconf
description: List globalconf on the management node with "curl -X GET"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/globalconf?debug=2&userName=$username&userPW=$password'"
check:rc==0
check:output=~"tftpdir":"/tftpboot"
end
start:restapi_list_groups
description: List groups on the management node with "curl -X GET"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;curl_v=`xdsh $$CN "curl -X GET -s -k --cacert /root/ca-cert.pem 'https://$$MN/xcatws/groups?userName=$username&userPW=$password' | sed 's/\"//g' | sed 's/\[//' | sed 's/\]//'"`;lsdef -t group > list; tr -d '\n' < list > list1; sed -i 's/[[:blank:]][[:blank:]]/,/g' list1; sed -i 's/(group)//g' list1; sed -i 's/,$//' list1; sed -i 's/^/$$CN: /' list1; lsdef_v=`cat list1`; echo $curl_v; echo $lsdef_v; rm -f list list1; if [[ $curl_v = $lsdef_v ]]; then echo Match; else echo No-match; fi
check:rc==0
check:output=~Match
end
start:restapi_list_nodes
description: List nodes on the management node with "curl -X GET"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes?&userName=$username&userPW=$password'"
check:rc==0
check:output=~$$SN
end
start:restapi_list_node_CN
description: Display details of the compute node with "curl -X GET"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes/$$CN?pretty=1&xcoll=1&userName=$username&userPW=$password'"
check:rc==0
check:output=~__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__
end
start:restapi_list_networks
description: List networks on the management node with "curl -X GET"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s -k --cacert /root/ca-cert.pem 'https://$$MN/xcatws/networks?userName=$username&userPW=$password'"
check:rc==0
check:output=~__GETTABLEVALUE(mtu,1500,netname,networks)__
end
start:restapi_list_osimages
description: List osimages on the management node with "curl -X GET"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/osimages?userName=$username&userPW=$password'"
check:output=~__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
end
start:restapi_list_policy
description: List policies on the management node with "curl -X GET"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/policy?userName=$username&userPW=$password'"
check:rc==0
check:output=~__GETTABLEVALUE(rule,trusted,priority,policy)__
end
start:restapi_create_temp_CN_put
description: Created a temporary compute node with "curl -X PUT"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X PUT -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes/temp_node1?userName=$username&userPW=$password' -H Content-Type:application/json --data '{\"groups\":\"all\",\"mgt\":\"kvm\",\"vmmemory\":\"2048\"}'"
check:rc==0
cmd:lsdef
check:output=~temp_node1
end
start:restapi_delete_temp_CN_put
description: Delete a temporary compute node with "curl -X DELETE"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X DELETE -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes/temp_node1?userName=$username&userPW=$password'"
check:rc==0
cmd:lsdef
check:output!~temp_node1
end
start:restapi_delete_temp_CN_2
description: Delete two temporary compute nodes with "curl -X DELETE"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X DELETE -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes/temp_node[1-2]?userName=$username&userPW=$password'"
check:rc==0
cmd:lsdef
check:output!~temp_node1
end
start:restapi_list_temp_CN_2
description: List two temporary compute nodes with "curl -X DELETE" and with various range options
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes/temp_node[1-2]?userName=$username&userPW=$password'"
check:rc==0
check:output=~temp_node1
check:output=~temp_node2
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes/temp_node[1-2]/nodels?userName=$username&userPW=$password'"
check:rc==0
check:output=~temp_node1
check:output=~temp_node2
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes/temp_node1+1/nodels?userName=$username&userPW=$password'"
check:rc==0
check:output=~temp_node1
check:output=~temp_node2
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes/all/nodels?userName=$username&userPW=$password'"
check:rc==0
check:output=~temp_node1
check:output=~temp_node2
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes/mgt==kvm/nodels?userName=$username&userPW=$password'"
check:rc==0
check:output=~temp_node1
check:output=~temp_node2
cmd:lsdef
check:output=~temp_node1
check:output=~temp_node2
end
start:restapi_create_temp_CN_post
description: Created a temporary compute node with "curl -X POST"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X POST -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes/temp_node2?userName=$username&userPW=$password' -H Content-Type:application/json --data '{\"groups\":\"all\",\"mgt\":\"kvm\",\"vmmemory\":\"2048\"}'"
check:rc==0
cmd:lsdef
check:output=~temp_node2
end
start:restapi_add_id_temp_CN
description: Add an id field of a temporary compute node with "curl -X PUT"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X PUT -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes/temp_node1?userName=$username&userPW=$password' -H Content-Type:application/json --data '{\"id\":\"100\"}'"
check:rc==0
cmd:lsdef temp_node1
check:output=~id=100
end
start:restapi_modify_vmmemory_temp_CN
description: Modify the vmmemory field of a temporary computer node with "curl -X PUT"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X PUT -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes/temp_node1?xcoll=1&userName=$username&userPW=$password' -H Content-Type:application/json --data '{\"vmmemory\":\"4096\"}'"
check:rc==0
cmd:lsdef temp_node1
check:output=~vmmemory=4096
end
start:restapi_delete_id_temp_CN
description: Delete the id field of a temporary compute node with "curl -X DELETE"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X PUT -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes/temp_node1?userName=$username&userPW=$password' -H Content-Type:application/json --data '{\"id\":\" \"}'"
check:rc==0
cmd:lsdef temp_node1
check:output!~id=
end
start:restapi_show_temp_CN_osimage
description: Show the detail of the osimage of CN with "curl -X GET"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/osimages/__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute?pretty=1&userName=$username&userPW=$password'"
check:rc==0
check:output=~__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
end
start:restapi_list_nodes_wrong_password
description: List nodes on the management node with an invalid password with "curl -X GET"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes?userName=$username&userPW=invalid_password'"
check:rc==0
check:output=~Authentication failure
end
start:restapi_list_nodes_invalid_option
description: List nodes on the management node with an invalid option with "curl -X GET"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes?xyz=123&userName=$username&userPW=$password'"
check:rc==0
end
start:restapi_list_invalid_resource
description: List nodes on the management node with an invalid option with "curl -X GET"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/abc?userName=$username&userPW=invalid_password&xyz=123'"
check:rc==0
check:output=~Unsupported resource
end
start:restapi_list_wrong_osimage
description: List a wrong osimage on the management node with "curl -X GET"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X GET -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/osimages/wrong_image?userName=$username&userPW=$password'"
check:output=~Could not find an object named 'wrong_image'
end
start:restapi_modify_wrong_field_CN
description: Modify the vmmemori field of the computer node with "curl -X PUT"
label:restapi
cmd:username=__GETTABLEVALUE(key,system,username,passwd)__;password=__GETTABLEVALUE(key,system,password,passwd)__;xdsh $$CN "curl -X PUT -s --cacert /root/ca-cert.pem 'https://$$MN/xcatws/nodes/$$CN?debug=1&userName=$username&userPW=$password' -H Content-Type:application/json --data '{\"vmmemori\":\"4096\"}'"
check:rc==0
check:output=~'vmmemori' is not a valid attribute name for an object type
end
+2 -2
View File
@@ -18,7 +18,7 @@ Attribute: $$CN-The operation object of rpower command
label:cn_bmc_ready,hctrl_general
#If rpower fails on the first try, try again with smaller memory
cmd:out=`rpower $$CN on 2>&1`;if [ $? -eq 1 ];then memory=`lsdef $$CN -i vmmemory -c | cut -d '=' -f 2`; chvm $$CN --mem $((memory-2048)); echo "'rpower on' failed with ${out}. Trying with smaller memory."; rpower $$CN on; fi
cmd:out=`rpower $$CN on 2>&1`;if [ $? -eq 1 ];then memory=`lsdef $$CN -i vmmemory -c | cut -d '=' -f 2`; chvm $$CN --mem $((memory-2048)); echo "'rpower on' VM with memory $memory failed with error ${out}. Trying with smaller memory $((memory-2048))."; rpower $$CN on; fi
cmd:a=0;while ! `rpower $$CN stat|grep "Running\|on" >/dev/null`; do sleep 5;((a++));if [ $a -gt 5 ];then break;fi done
cmd:rpower $$CN stat
@@ -47,7 +47,7 @@ cmd:rpower $$CN stat
check:output=~Not Activated|off
# Display active VMs and memory on VM host
cmd:vmhost=`lsdef $$CN -i vmhost -c | cut -d '=' -f 2`; if [[ ! -z $vmhost ]]; then echo "Memory on vmhost $vmhost"; ssh $vmhost free -m; echo "Active VMs on vmhost $vmhost"; ssh $vmhost virsh list; fi
cmd:rpower $$CN boot
cmd:rpower_boot_out=`rpower $$CN boot`; if [[ $rpower_boot_out =~ qemu-kvm ]]; then echo "rpower boot failed with $rpower_boot_out. Will retry"; rpower $$CN boot; else echo "rpower boot success on first try: $rpower_boot_out"; exit 0; fi
check:rc==0
cmd:a=0;while ! `rpower $$CN stat|grep "Running\|on" >/dev/null`; do sleep 5;((a++));if [ $a -gt 11 ];then break;fi done
cmd:rpower $$CN stat
@@ -6,7 +6,7 @@ cmd: rm -rf /tmp/backend_test/
cmd:rm -rf ~/.xcatinv/inventory.cfg.bak.backend_init
check: rc==0
cmd: mkdir -p ~/.xcatinv/
cmd: [ -f ~/.xcatinv/inventory.cfg ] && mv ~/.xcatinv/inventory.cfg ~/.xcatinv/inventory.cfg.bak.backend_init
cmd: if [[ -f ~/.xcatinv/inventory.cfg ]]; then mv ~/.xcatinv/inventory.cfg ~/.xcatinv/inventory.cfg.bak.backend_init; fi
cmd: cp /opt/xcat/share/xcat/tools/autotest/testcase/xcat_inventory/templates/inventory.cfg ~/.xcatinv/inventory.cfg
cmd: xcat-inventory init
check: rc==0
@@ -86,7 +86,7 @@ check: output!=~ws
cmd: XCATBYPASS=1 restorexCATdb -p /tmp/backend_test/backup/db
check: rc==0
cmd: [ -f "~/.xcatinv/inventory.cfg.bak.backend_init" ] && rm -rf "~/.xcatinv/inventory.cfg" && mv "~/.xcatinv/inventory.cfg.bak.backend_init" "~/.xcatinv/inventory.cfg"
cmd: if [[ -f "~/.xcatinv/inventory.cfg.bak.backend_init" ]]; then rm -rf "~/.xcatinv/inventory.cfg"; mv "~/.xcatinv/inventory.cfg.bak.backend_init" "~/.xcatinv/inventory.cfg"; fi
cmd: rm -rf /tmp/backend_test/
end
+4 -2
View File
@@ -1867,9 +1867,11 @@ sub getvar
{
my $str = shift;
my $config_ref = shift;
my @vars = ($str =~ /\$\$(\w+)/g);
my @reverse_sorted_vars = reverse sort @vars;
while ($str =~ /\$\$(\w+)/) {
my $varname = $1;
# let $$AA and $$A have the same chance to be replaced.
for my $varname (@reverse_sorted_vars) {
if (exists($$config_ref{var}{$varname})) {
$str =~ s/\$\$$varname/$$config_ref{var}{$varname}/g;
} else {
+1 -1
View File
@@ -6,7 +6,7 @@
#
BINARIES="ofed_info mst ibdev2netdev"
for PROG in ${BINARIES}; do
RC=`command -v ${PROG} >> /dev/nul 2>&1; echo $?`
RC=`command -v ${PROG} >> /dev/null 2>&1; echo $?`
if [[ ${RC} != 0 ]]; then
echo "${PROG} is not installed on this node, unable to check firmware levels."
exit 1
+7
View File
@@ -524,6 +524,7 @@ elif [ "$1" = "-s" ];then
str_inst_mask=''
str_inst_gateway=''
str_inst_mtu=''
str_inst_dns=''
if [ "$str_os_type" = "aix" ];then
log_error "configeth on $NODE: aix does not support -s flag"
exit 1
@@ -578,6 +579,7 @@ elif [ "$1" = "-s" ];then
str_inst_ip=`grep fixed-address $str_lease_file | tail -n 1 | awk '{print $2}' | sed 's/;$//'`
str_inst_mask=`grep subnet-mask $str_lease_file | tail -n 1 | awk '{print $3}' | sed 's/;$//'`
str_inst_gateway=`grep routers $str_lease_file | tail -n 1 | awk '{print $3}' | sed 's/;$//'`
str_inst_dns=`grep domain-name-servers $str_lease_file | tail -n 1 | awk '{print $3}' | sed 's/;$//'`
else
if [ -n "$MACADDRESS" ];then
str_inst_mac=$MACADDRESS
@@ -734,6 +736,11 @@ elif [ "$1" = "-s" ];then
if [ $networkmanager_active -eq 2 ]; then
echo "AUTOCONNECT_PRIORITY=9" >> $str_conf_file
fi
if [ -n "${str_inst_dns}" ];then
if [ $networkmanager_active -eq 1 ]; then
nmcli con modify $con_name ipv4.dns ${str_inst_dns}
fi
fi
if [ -n "${str_inst_mtu}" ];then
if [ $networkmanager_active -eq 1 ]; then
nmcli con modify $con_name mtu ${str_inst_mtu}
+1 -1
View File
@@ -29,7 +29,7 @@ function logerr {
#check if mlnx ofed commands are installed
COMMANDS="ofed_info mst mlxconfig"
for CMD in ${COMMANDS}; do
RC=`command -v ${CMD} >> /dev/nul 2>&1; echo $?`
RC=`command -v ${CMD} >> /dev/null 2>&1; echo $?`
if [[ ${RC} != 0 ]]; then
ERRMSG="Command: ${CMD} is not found, unable to run the scripts"
logerr $ERRMSG
+4 -5
View File
@@ -58,11 +58,6 @@ if [ ! -z "$MACX" ] && [ ! -z "$ETHX" ]; then
echo "ONBOOT=yes" >> $CONFFILE
echo "IPADDR=$IP" >> $CONFFILE
echo "NETMASK=$MASK" >> $CONFFILE
else
echo "DEVICE=$ETHX" > $CONFFILE
echo "BOOTPROTO=dhcp" >> $CONFFILE
echo "HWADDR=$MACX" >> $CONFFILE
echo "ONBOOT=yes" >> $CONFFILE
fi
fi
@@ -222,6 +217,10 @@ EOF
for i in $nfsvers
do
if [ $i -eq 3 ] && ! [ grep -w nfs /proc/filesystems >/dev/null 2>&1 ]; then
if (pmatch $OSVER "rhel8*") || (pmatch $OSVER "rhels8*");then
# For RHEL8 do not mount with vers=3 option
continue
fi
nfsver=3
break
elif [ $i -eq 4 ] && ! [ grep -w nfs4 /proc/filesystems >/dev/null 2>&1 ]; then
+12 -2
View File
@@ -1,9 +1,19 @@
#!/usr/bin/awk -f
BEGIN {
if (!system("test -f /usr/bin/nice")) {
randombytes = "-rand /usr/bin/nice"
} else {
randombytes = ""
}
if (!system("test -f openssl")) {
print "Error: openssl utility missing"
exit 1
}
if ((ENVIRON["USEOPENSSLFORXCAT"]) || (ENVIRON["AIX"])) {
server = "openssl s_client -quiet -no_ssl3 -connect " ENVIRON["XCATSERVER"] " -rand /bin/nice 2> /dev/null"
server = "openssl s_client -quiet -no_ssl3 -connect " ENVIRON["XCATSERVER"] " "randombytes" 2> /dev/null"
if (!system("openssl s_client -help 2>&1 | grep -m 1 -q -- -no_ssl2")) {
server = "openssl s_client -quiet -no_ssl3 -no_ssl2 -connect " ENVIRON["XCATSERVER"] " -rand /bin/nice 2> /dev/null"
server = "openssl s_client -quiet -no_ssl3 -no_ssl2 -connect " ENVIRON["XCATSERVER"] " "randombytes" 2> /dev/null"
}
} else {
server = "/inet/tcp/0/127.0.0.1/400"
+12 -2
View File
@@ -1,9 +1,19 @@
#!/usr/bin/awk -f
BEGIN {
if (!system("test -f /usr/bin/nice")) {
randombytes = "-rand /usr/bin/nice"
} else {
randombytes = ""
}
if (!system("test -f openssl")) {
print "Error: openssl utility missing"
exit 1
}
if (ENVIRON["USEOPENSSLFORXCAT"]) {
server = "openssl s_client -no_ssl3 -connect " ENVIRON["XCATSERVER"] " -rand /bin/nice 2> /dev/null"
server = "openssl s_client -no_ssl3 -connect " ENVIRON["XCATSERVER"] " "randombytes" 2> /dev/null"
if (!system("openssl s_client -help 2>&1 | grep -m 1 -q -- -no_ssl2")) {
server = "openssl s_client -no_ssl3 -no_ssl2 -connect " ENVIRON["XCATSERVER"] " -rand /bin/nice 2> /dev/null"
server = "openssl s_client -no_ssl3 -no_ssl2 -connect " ENVIRON["XCATSERVER"] " "randombytes" 2> /dev/null"
}
} else {
server = "/inet/tcp/0/127.0.0.1/400"
+3
View File
@@ -756,9 +756,12 @@ function check_brctl() {
function check_and_set_device_managed() {
devname=$1
rc=1
log_info "check_and_set_device_managed for device $devname"
$nmcli device show $devname >/dev/null 2>/dev/null
if [ $? -ne 0 ]; then
log_error "Device $devname not found"
# Could not find the device we wanted. Display all devices
$nmcli device show
else
$nmcli -g GENERAL.STATE device show $devname|grep unmanaged >/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
+12 -2
View File
@@ -1,9 +1,19 @@
#!/usr/bin/awk -f
BEGIN {
if (!system("test -f /usr/bin/nice")) {
randombytes = "-rand /usr/bin/nice"
} else {
randombytes = ""
}
if (!system("test -f openssl")) {
print "Error: openssl utility missing"
exit 1
}
if (ENVIRON["USEOPENSSLFORXCAT"]) {
server = "openssl s_client -no_ssl3 -connect " ENVIRON["XCATSERVER"] " -rand /bin/nice 2> /dev/null"
server = "openssl s_client -no_ssl3 -connect " ENVIRON["XCATSERVER"] " "randombytes" 2> /dev/null"
if (!system("openssl s_client -help 2>&1 | grep -m 1 -q -- -no_ssl2")) {
server = "openssl s_client -no_ssl3 -no_ssl2 -connect " ENVIRON["XCATSERVER"] " -rand /bin/nice 2> /dev/null"
server = "openssl s_client -no_ssl3 -no_ssl2 -connect " ENVIRON["XCATSERVER"] " "randombytes" 2> /dev/null"
}
} else {
server = "/inet/tcp/0/127.0.0.1/400"
+2 -2
View File
@@ -304,8 +304,8 @@ fi
# Do not even touch rsyslog.conf
# There is no /etc/sysconfig/rsyslog file, so we use rsyslogd -v to get the version
if [ -e "/sbin/rsyslogd" -o -e "/usr/sbin/rsyslogd" ]; then
SYSLOGPROD=`rsyslogd -v | grep rsyslogd |awk {'print $1'}`
SYSLOGVER=`rsyslogd -v | grep rsyslogd |awk {'print $2'}`
SYSLOGPROD=`rsyslogd -v | grep rsyslogd |grep -v PID |awk {'print $1'}`
SYSLOGVER=`rsyslogd -v | grep rsyslogd |grep -v PID |awk {'print $2'}`
if ( pmatch $SYSLOGPROD "*rsyslogd*" ) && ( pmatch $SYSLOGVER "8*" ); then
config_rsyslog_V8
#keep a record