diff --git a/README b/README
deleted file mode 100644
index 31f6f5d44..000000000
--- a/README
+++ /dev/null
@@ -1,14 +0,0 @@
-xCAT - eXtreme Cloud Administration Toolkit
-
-xCAT is a toolkit for the deployment and administration of clusters.
-
-xCAT documentation is available at: http://xcat-docs.readthedocs.org/en/latest/
-
-xCAT is made available as open source software under the EPL license:
-http://www.opensource.org/licenses/eclipse-1.0.php
-
-
-Developers and prospective contributors are encouraged to read the developers
-guide: http://xcat-docs.readthedocs.org/en/latest/developers/
-and in particular the github related subsection:
-http://xcat-docs.readthedocs.org/en/latest/developers/github/
diff --git a/README.rst b/README.rst
new file mode 100644
index 000000000..730e14e67
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,39 @@
+xCAT
+----
+
+xCAT is a toolkit for the deployment and administration of clusters.
+
+Documentation
+-------------
+
+xCAT documentation is available at: http://xcat-docs.readthedocs.io/en/latest/
+
+|docs_latest| |docs_212| |docs_211|
+
+Open Source License
+-------------------
+
+xCAT is made available as open source software under the EPL license:
+http://www.opensource.org/licenses/eclipse-1.0.php
+
+Developers
+----------
+
+Developers and prospective contributors are encouraged to read the `Developers Guide `_
+In particular the `GitHub `_ related subsection.
+
+
+.. |docs_212| image:: https://readthedocs.org/projects/xcat-docs/badge/?version=2.12
+ :alt: 2.12 documentation status
+ :scale: 100%
+ :target: http://xcat-docs.readthedocs.io/en/2.12/
+
+.. |docs_211| image:: https://readthedocs.org/projects/xcat-docs/badge/?version=2.11
+ :alt: 2.11 documentation status
+ :scale: 100%
+ :target: http://xcat-docs.readthedocs.io/en/2.11/
+
+.. |docs_latest| image:: https://readthedocs.org/projects/xcat-docs/badge/?version=latest
+ :alt: Latest documentation status
+ :scale: 100%
+ :target: http://xcat-docs.readthedocs.io/en/latest/
diff --git a/Version b/Version
index 3e162f02e..3cf561c0b 100644
--- a/Version
+++ b/Version
@@ -1 +1 @@
-2.12
+2.12.1
diff --git a/docs/README.md b/docs/README.md
index 86e068447..05e277f85 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,21 +1,27 @@
# Welcome to the xCAT documentation
-We are working on improving the documentation. The latest docs are here: http://xcat-docs.readthedocs.org/en/latest/
+The latest docs are here: http://xcat-docs.readthedocs.io/en/latest/
-The documentation project is written in restructured text (.rst) using Sphinx.
-To build the docs locally:
+Status:
+[](http://xcat-docs.readthedocs.io/en/latest/?badge=latest)
+[](http://xcat-docs.readthedocs.io/en/2.11/?badge=2.11)
+
+
+The documentation project is written in restructured text (.rst) using Sphinx and hosted on ReadTheDocs.
+
+## Building Documentation
* Clone the project
* Using pip, install sphinx (See: http://pip.readthedocs.org/)
-```
+ ```
pip install sphinx
-```
+ ```
* Build the Docs
-```
+ ```
cd xcat-core/docs
make html
-```
+ ```
* View the docs by opening index.html from a web browser under xcat-core/docs/build/html/index.html
diff --git a/docs/source/advanced/docker/dockerized_xcat/run_xcat_in_docker_compose.rst b/docs/source/advanced/docker/dockerized_xcat/run_xcat_in_docker_compose.rst
index f5039b4f5..b934a0ce8 100644
--- a/docs/source/advanced/docker/dockerized_xcat/run_xcat_in_docker_compose.rst
+++ b/docs/source/advanced/docker/dockerized_xcat/run_xcat_in_docker_compose.rst
@@ -146,9 +146,10 @@ To update the xCAT Docker image, you can run ::
Known Issues
------------
-.. [1] When you start up xCAT Docker container, you might see an error message at the end of the output like: ::
+.. [1]
+When you start up xCAT Docker container, you might see an error message at the end of the output like: ::
- "Couldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running? If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable."
+ Couldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running? If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.`
- You can ignore it, the container has already been running. It is a Docker bug `#1214 `_
+You can ignore it, the container has already been running. It is a Docker bug `#1214 `_
diff --git a/docs/source/advanced/docker/lifecycle_management.rst b/docs/source/advanced/docker/lifecycle_management.rst
index cd3385d20..100c71969 100644
--- a/docs/source/advanced/docker/lifecycle_management.rst
+++ b/docs/source/advanced/docker/lifecycle_management.rst
@@ -5,7 +5,8 @@ The Docker linux container technology is currently very popular. xCAT can help m
This document describes how to use xCAT for docker management, from Docker Host setup to docker container operationis.
-**Note:** The document is based on **Docker Version 1.10.x** and **Docker API version 1.22.** And the Docker Host is based on **ubuntu14.04.3 x86_64**. At the time of this writing (February 2016), docker host images are not available for **ppc64** architecture from docker.org. You can search online to find them or build your own.
+**Note:** The document was verified with **Docker Version 1.10, 1.11** and **Docker API version 1.22.** The Docker Host was verified on **ubuntu14.04.3 x86_64**, **ubuntu15.10 x86_64**, **ubuntu16.04 x86_64** and **ubuntu16.04 ppc64el**.
+
Setting up Docker Host
----------------------
@@ -23,17 +24,20 @@ The osimage represents the image of the Operating System which will be deployed
Copy files out from DVDs/ISOs and generate
""""""""""""""""""""""""""""""""""""""""""
-
-::
+**[ubuntu x86_64]** ::
- copycds ubuntu-14.04.3-server-amd64.iso
+ copycds ubuntu-xxx-server-amd64.iso
+
+**[ubuntu16.04 ppc64el]** ::
+
+ copycds ubuntu-16.04-server-ppc64el.iso
Create pkglist and otherpkglist of osimage for dockerhost
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
The pkglist file should contain the following: ::
- # cat /install/custom/ubuntu1404/ubuntu1404.pkglist
+ # cat /install/custom/ubuntu/ubuntu.pkglist
openssh-server
ntp
gawk
@@ -41,14 +45,38 @@ The pkglist file should contain the following: ::
snmpd
bridge-utils
-The otherpkglist file should contain the following: ::
+The otherpkglist file should contain the following:
- # cat /install/custom/ubuntu1404/ubuntu1404_docker.pkglist
+**[ubuntu x86_64]** ::
+
+ # cat /install/custom/ubuntu/ubuntu_docker.pkglist
docker-engine
+**[ubuntu16.04 ppc64el]**
+
+At the time of this writing (February 2016), docker package is not available for **ppc64el** architecture from docker.org. You can follow instructions below on how to manually download and install it.
+
+* Download docker engine for ppc64el
+::
+
+ wget http://launchpadlibrarian.net/251622081/docker.io_1.10.3-0ubuntu4_ppc64el.deb -O /install/docker_ppc64el/docker.io_1.10.3-0ubuntu4_ppc64el.deb
+
+* Configure **otherpkgdir** like this
+::
+
+ otherpkgdir=/install/docker_ppc64el
+
+* The **otherpkglist** file should be
+::
+
+ # cat /install/custom/ubuntu/ubuntu_docker.pkglist
+ docker.io
+
Create the osimage for dockerhost
"""""""""""""""""""""""""""""""""
-The osimage for dockerhost will be like this: ::
+The osimage for dockerhost will be like this:
+
+**[ubuntu x86_64]** ::
# lsdef -t osimage ub14.04.03-x86_64-dockerhost
Object name: ub14.04.03-x86_64-dockerhost
@@ -57,13 +85,29 @@ The osimage for dockerhost will be like this: ::
osname=Linux
osvers=ubuntu14.04.3
otherpkgdir=https://apt.dockerproject.org/repo ubuntu-trusty main,http://cz.archive.ubuntu.com/ubuntu trusty main
- otherpkglist=/install/custom/ubuntu1404/ubuntu1404_docker.pkglist
+ otherpkglist=/install/custom/ubuntu/ubuntu_docker.pkglist
pkgdir=/install/ubuntu14.04.3/x86_64
- pkglist=/install/custom/ubuntu1404/ubuntu1404.pkglist
+ pkglist=/install/custom/ubuntu/ubuntu.pkglist
profile=compute
provmethod=install
template=/opt/xcat/share/xcat/install/ubuntu/compute.tmpl
+**[ubuntu16.04 ppc64el]** ::
+
+ # lsdef -t osimage ub16.04-ppc64el-dockerhost
+ Object name: ub16.04-ppc64el-dockerhost
+ imagetype=linux
+ osarch=ppc64el
+ osname=Linux
+ osvers=ubuntu16.04
+ otherpkgdir=/install/docker_ppc64el
+ otherpkglist=/install/custom/ubuntu/ubuntu_docker.pkglist
+ pkgdir=/install/ubuntu16.04/ppc64el
+ pkglist=/install/custom/ubuntu/ubuntu.pkglist
+ profile=compute
+ provmethod=install
+ template=/opt/xcat/share/xcat/install/ubuntu/compute.tmpl
+
Preparing setup trust connection for docker service and create docker network object
````````````````````````````````````````````````````````````````````````````````````
Currently, a customer defined network object is needed when create a docker container with static IP address, it can be done with the command: ::
@@ -99,7 +143,7 @@ After the dockerhost is ready, a docker instance can be managed through xCAT com
postbootscripts=otherpkgs
postscripts=syslog,remoteshell,syncfiles
-The command :doc:`mkdef ` or :doc:`chdef ` can be used to create a new docker instance node or change the node attributes. Specify any available unused ip address for *ip* attribute.
+The command :doc:`mkdef ` or :doc:`chdef ` can be used to create a new docker instance node or change the node attributes. Specify any available unused ip address for *ip* attribute. *mac* attribute is optional and if left unset, will be filled in by *mkdocker* command.
After docker instance node is defined, use command `makehosts host01c01` to add node *host01c01* and its IP address *10.0.120.1* into /etc/hosts.
@@ -173,3 +217,26 @@ Check docker instance status
::
rpower state
+
+Troubleshooting
+--------------------------
+
+If things go wrong:
+
+* After dockerhost node boots, check contents of **/var/log/xcat/xcat.log** file on the dockerhost for errors.
+
+* Verify **nicname** specified in **Preparing setup trust connection for docker service and create docker network object** section exists on the docker host. Depending on the version of Ubuntu OS and host architecture, it could be **eth0**, or **em1**, or **eno1**, or **enp0s1**. Verify by running on the dockerhost
+::
+
+ ip addr show dev
+
+* Run **ps -ef | grep docker** to verify docker engine is running with configured options. It should look something like
+::
+
+ root 3703 1 0 Apr15 ? 00:12:28 /usr/bin/docker daemon -H unix:///var/run/docker.sock -H tcp://host01:2375 --tls --tlscacert=/root/.docker/ca-cert.pem --tlscert=/root/.docker/dockerhost-cert.pem --tlskey=/root/.docker/dockerhost-cert.pem --tlsverify=true --raw-logs
+
+If the output is missing some options, verify that file **/lib/systemd/system/docker.service** contains the following lines
+::
+
+ EnvironmentFile=-/etc/default/docker
+ ExecStart=/usr/bin/docker daemon $DOCKER_OPTS -H fd://
diff --git a/docs/source/advanced/gpu/nvidia/index.rst b/docs/source/advanced/gpu/nvidia/index.rst
index db621ed66..ea9459018 100644
--- a/docs/source/advanced/gpu/nvidia/index.rst
+++ b/docs/source/advanced/gpu/nvidia/index.rst
@@ -17,3 +17,4 @@ Within the NVIDIA CUDA Toolkit, installing the ``cuda`` package will install bot
deploy_cuda_node.rst
verify_cuda_install.rst
management.rst
+ update_nvidia_driver.rst
diff --git a/docs/source/advanced/gpu/nvidia/update_nvidia_driver.rst b/docs/source/advanced/gpu/nvidia/update_nvidia_driver.rst
new file mode 100644
index 000000000..d7b726c05
--- /dev/null
+++ b/docs/source/advanced/gpu/nvidia/update_nvidia_driver.rst
@@ -0,0 +1,45 @@
+Update NVIDIA Driver
+=====================
+
+If the user wants to update the newer NVIDIA driver on the system, follow the :doc:`Create CUDA software repository ` document to create another repository for the new driver.
+
+The following example assumes the new driver is in ``/install/cuda-7.5/ppc64le/nvidia_new``.
+
+Diskful
+-------
+
+#. Change pkgdir for the cuda image: ::
+
+ chdef -t osimage -o rhels7.2-ppc64le-install-cudafull \
+ pkgdir=/install/cuda-7.5/ppc64le/nvidia_new,/install/cuda-7.5/ppc64le/cuda-deps
+
+
+#. Use xdsh command to remove all the NVIDIA rpms: ::
+
+ xdsh "yum remove *nvidia* -y"
+
+
+#. Run updatenode command to update NVIDIA driver on the compute node: ::
+
+ updatenode -S
+
+
+#. Reboot compute node: ::
+
+ rpower off
+ rpower on
+
+
+#. Verify the newer driver level: ::
+
+ nvidia-smi | grep Driver
+
+
+
+
+Diskless
+--------
+
+To update a new NVIDIA driver on diskless compute nodes, re-generate the osimage pointing to the new NVIDIA driver repository and reboot the node to load the diskless image.
+
+Refer to :doc:`Create osimage definitions ` for specific instructions.
diff --git a/docs/source/advanced/hierarchy/databases/mysql_install.rst b/docs/source/advanced/hierarchy/databases/mysql_install.rst
index e5dd7cc58..4ed15b5ab 100644
--- a/docs/source/advanced/hierarchy/databases/mysql_install.rst
+++ b/docs/source/advanced/hierarchy/databases/mysql_install.rst
@@ -18,8 +18,8 @@ The MySQL database is supported by xCAT since xCAT 2.1. MariaDB is a fork of th
MySQL/MariaDB packages are shipped as part of most Linux Distributions.
-Redhat Enterprise Linux
------------------------
+Red Hat Enterprise Linux
+------------------------
* MySQL - Using ``yum``, ensure that the following packages are installed on the management node: ::
diff --git a/docs/source/advanced/hierarchy/databases/postgres_install.rst b/docs/source/advanced/hierarchy/databases/postgres_install.rst
index cf26bbc6d..a87f81f09 100644
--- a/docs/source/advanced/hierarchy/databases/postgres_install.rst
+++ b/docs/source/advanced/hierarchy/databases/postgres_install.rst
@@ -4,13 +4,13 @@ Install PostgreSQL
PostgreSQL packages are shipped as part of most Linux Distributions.
-Redhat Enterprise Linux
------------------------
+Red Hat Enterprise Linux
+------------------------
Using yum, install the following rpms: ::
- yum install postgresql-libs-* postgresql-server-* postgresql-*
- yum install perl-DBD-Pg*
+ yum install postgresql*
+ yum install perl-DBD-Pg
Suse Linux Enterprise Server
@@ -20,8 +20,8 @@ Suse Linux Enterprise Server
Using zyppr, install the following rpms: ::
- zyppr install postgresql-libs-* postgresql-server-* postgresql-*
- zyppr install perl-DBD-Pg*
+ zypper install postgresql*
+ zypper install perl-DBD-Pg
Debian/Ubuntu
diff --git a/docs/source/advanced/kit/custom/using/addkitcomp.rst b/docs/source/advanced/kit/custom/using/addkitcomp.rst
index 1874c2915..b5b7acbae 100644
--- a/docs/source/advanced/kit/custom/using/addkitcomp.rst
+++ b/docs/source/advanced/kit/custom/using/addkitcomp.rst
@@ -36,7 +36,7 @@ Adding Multiple Versions of the Same Kit Component to an OS Image Definition
xCAT allows to have multiple versions/releases of a product software kit available in the cluster. Typically, different OS image definitions corresponding to the different versions/releases of a product software stack. However, in some instances, may need mulitple versions/releases of the same product available within a single OS image. This is only feasible if the software product supports the install of multiple versions or releases of its product within an OS image.
-Currently, it is not possible to install multiple versions of a product into an OS image using xCAT commands. xCAT uses yum on Redhat and zypper on SLES to install product rpms. These package managers do not provide an interface to install different versions of the same package, and will always force an upgrade of the package. We are investigating different ways to accomplish this function for future xCAT releases.
+Currently, it is not possible to install multiple versions of a product into an OS image using xCAT commands. xCAT uses yum on RedHat and zypper on SLES to install product rpms. These package managers do not provide an interface to install different versions of the same package, and will always force an upgrade of the package. We are investigating different ways to accomplish this function for future xCAT releases.
Some software products have designed their packaging to leave previous versions of the software installed in an OS image even when the product is upgraded. This is done by using different package names for each version/release, so that the package manager does not see the new version as an upgrade, but rather as a new package install. In this case, it is possible to use xCAT to install multiple versions of the product into the same image.
diff --git a/docs/source/advanced/kit/hpc/quickstart.rst b/docs/source/advanced/kit/hpc/quickstart.rst
index de25f7367..5a6174215 100644
--- a/docs/source/advanced/kit/hpc/quickstart.rst
+++ b/docs/source/advanced/kit/hpc/quickstart.rst
@@ -1,7 +1,7 @@
Quick Start Guide
=================
-This quick start is provided to guide users through the steps required to install the IBM High Performance Computing (HPC) software stack on a cluster managed by xCAT.
+This quick start is provided to guide users through the steps required to install the IBM High Performance Computing (HPC) software stack on a cluster managed by xCAT. (*NOTE:* xCAT provides XLC and XLF partial kits, but all other HPC kits are provided by the HPC products teams, xCAT may not have any knowledges of their dependencies and requirements)
The following software kits will be used to install the IBM HPC software stack on to a RedHat Enterprise Linux 7.2 operating system running on ppc64le architecture.
@@ -101,10 +101,11 @@ The following software kits will be used to install the IBM HPC software stack o
addkitcomp -a -i rhels7.2-ppc64le-install-compute \
essl-computenode-3264rtecuda-5.4.0-0-rhels-7.2-ppc64le
+ If the system doesn't have GPU and the CUDA toolkit is not needed, the adminstrator should not add the following kit components that requires the CUDA packages: ``essl-loginnode-5.4.0-0-rhels-7.2-ppc64le``, ``essl-computenode-3264rte-5.4.0-0-rhels-7.2-ppc64le`` and ``essl-computenode-3264rtecuda-5.4.0-0-rhels-7.2-ppc64le``. Please check the ESSL installation guide: http://www.ibm.com/support/knowledgecenter/SSFHY8_5.4.0/com.ibm.cluster.essl.v5r4.essl300.doc/am5il_xcatinstall.htm
#. Add the **Parallel ESSL** kitcomponents to osimage.
- *Note:* ESSL kitcomponents are required for the PESSL. ::
+ **Note:** ESSL kitcomponents are required for the PESSL. ::
addkitcomp -a -i rhels7.2-ppc64le-install-compute \
pessl-loginnode-5.2.0-0-rhels-7.2-ppc64le
diff --git a/docs/source/advanced/kit/hpc/software/essl.rst b/docs/source/advanced/kit/hpc/software/essl.rst
index 511201abe..a39c4b91e 100644
--- a/docs/source/advanced/kit/hpc/software/essl.rst
+++ b/docs/source/advanced/kit/hpc/software/essl.rst
@@ -18,6 +18,9 @@ Dependencies
addkitcomp -a -i rhels7.2-ppc64le-install-compute \
essl-computenode-3264rte-5.4.0-0-rhels-7.2-ppc64le
+Reference
+---------
+ Refer to ESSL installation guide for more information: http://www.ibm.com/support/knowledgecenter/SSFHY8_5.4.0/com.ibm.cluster.essl.v5r4.essl300.doc/am5il_xcatinstall.htm
.. [#] If using an older release, refer to `IBM HPC Stack in an xCAT Cluster `_
diff --git a/docs/source/guides/admin-guides/manage_clusters/common/deployment/acc_initrd_rootimg_gen.rst b/docs/source/guides/admin-guides/manage_clusters/common/deployment/acc_initrd_rootimg_gen.rst
index c296af68a..da723e72b 100644
--- a/docs/source/guides/admin-guides/manage_clusters/common/deployment/acc_initrd_rootimg_gen.rst
+++ b/docs/source/guides/admin-guides/manage_clusters/common/deployment/acc_initrd_rootimg_gen.rst
@@ -12,7 +12,7 @@ The paralell compression tool ``pigz`` can be enabled by installing ``pigz`` pac
* **[RHEL]**
- The package ``pigz`` is shipped in Extra Packages for Enterprise Linux (or EPEL) instead of Redhat iso, this involves some complexity.
+ The package ``pigz`` is shipped in Extra Packages for Enterprise Linux (or EPEL) instead of RedHat iso, this involves some complexity.
Extra Packages for Enterprise Linux (or EPEL) is a Fedora Special Interest Group that creates, maintains, and manages a high quality set of additional packages for Enterprise Linux, including, but not limited to, Red Hat Enterprise Linux (RHEL), CentOS and Scientific Linux (SL), Oracle Linux (OL).
diff --git a/docs/source/guides/admin-guides/manage_clusters/common/deployment/cfg_partition.rst b/docs/source/guides/admin-guides/manage_clusters/common/deployment/cfg_partition.rst
index 6fa84715f..44e05eebd 100644
--- a/docs/source/guides/admin-guides/manage_clusters/common/deployment/cfg_partition.rst
+++ b/docs/source/guides/admin-guides/manage_clusters/common/deployment/cfg_partition.rst
@@ -6,7 +6,7 @@ By default, xCAT will install the operating system on the first disk and with de
- 'Partition definition file' way can be used for RedHat, SLES and Ubuntu.
- 'partition definition script' way was tested only for RedHat and Ubuntu, use this feature on SLES at your own risk.
-- Because disk configuration for ubuntu is different from Redhat, there maybe some section special for ubuntu.
+- Because disk configuration for ubuntu is different from RedHat, there maybe some section special for ubuntu.
.. END_Overview
@@ -356,7 +356,7 @@ Run the following commands to associate the partition with the osimage: ::
chdef -t osimage partitionfile=/install/custom/my-partitions
nodeset osimage=
-- For Redhat, when nodeset runs and generates the /install/autoinst file for a node, it will replace the #XCAT_PARTITION_START#...#XCAT_PARTITION_END# directives from your osimage template with the contents of your custom partitionfile.
+- For RedHat, when nodeset runs and generates the /install/autoinst file for a node, it will replace the #XCAT_PARTITION_START#...#XCAT_PARTITION_END# directives from your osimage template with the contents of your custom partitionfile.
- For Ubuntu, when nodeset runs and generates the /install/autoinst file for a node, it will generate a script to write the partition configuration to /tmp/partitionfile, this script will replace the #XCA_PARTMAN_RECIPE_SCRIPT# directive in /install/autoinst/.pre.
@@ -365,7 +365,7 @@ Run the following commands to associate the partition with the osimage: ::
.. BEGIN_Partition_Definition_Script_overview
-Create a shell script that will be run on the node during the install process to dynamically create the disk partitioning definition. This script will be run during the OS installer %pre script on Redhat or preseed/early_command on Unbuntu execution and must write the correct partitioning definition into the file /tmp/partitionfile on the node
+Create a shell script that will be run on the node during the install process to dynamically create the disk partitioning definition. This script will be run during the OS installer %pre script on RedHat or preseed/early_command on Unbuntu execution and must write the correct partitioning definition into the file /tmp/partitionfile on the node
.. END_Partition_Definition_Script_overview
@@ -379,7 +379,7 @@ The purpose of the partition script is to create the /tmp/partionfile that will
.. BEGIN_Partition_Definition_Script_Create_partition_script_example_redhat_sles
-Here is an example of the partition script on Redhat and SLES, the partitioning script is ``/install/custom/my-partitions.sh``: ::
+Here is an example of the partition script on RedHat and SLES, the partitioning script is ``/install/custom/my-partitions.sh``: ::
instdisk="/dev/sda"
@@ -448,7 +448,7 @@ Run below commands to associate partition script with osimage: ::
nodeset osimage=
- The "s:" preceding the filename tells nodeset that this is a script.
- - For Redhat, when nodeset runs and generates the /install/autoinst file for a node, it will add the execution of the contents of this script to the %pre section of that file. The nodeset command will then replace the #XCAT_PARTITION_START#...#XCAT_PARTITION_END# directives from the osimage template file with "%include /tmp/partitionfile" to dynamically include the tmp definition file your script created.
+ - For RedHat, when nodeset runs and generates the /install/autoinst file for a node, it will add the execution of the contents of this script to the %pre section of that file. The nodeset command will then replace the #XCAT_PARTITION_START#...#XCAT_PARTITION_END# directives from the osimage template file with "%include /tmp/partitionfile" to dynamically include the tmp definition file your script created.
- For Ubuntu, when nodeset runs and generates the /install/autoinst file for a node, it will replace the "#XCA_PARTMAN_RECIPE_SCRIPT#" directive and add the execution of the contents of this script to the /install/autoinst/.pre, the /install/autoinst/.pre script will be run in the preseed/early_command.
.. END_Partition_Definition_Script_Associate_partition_script_with_osimage_common
diff --git a/docs/source/guides/admin-guides/manage_clusters/common/deployment/create_img.rst b/docs/source/guides/admin-guides/manage_clusters/common/deployment/create_img.rst
index 16167d51a..24b57eed3 100644
--- a/docs/source/guides/admin-guides/manage_clusters/common/deployment/create_img.rst
+++ b/docs/source/guides/admin-guides/manage_clusters/common/deployment/create_img.rst
@@ -43,11 +43,15 @@ For ubuntu ppc64le, the initrd.gz shipped with the ISO does not support network
* Download mini.iso from
- [ubuntu 14.04.1]: http://ports.ubuntu.com/ubuntu-ports/dists/$(lsb_release-sc)/main/installer-ppc64el/current/images/netboot/
+ [ubuntu 14.04.1]: http://xcat.org/files/netboot/ubuntu14.04.1/ppc64el/mini.iso
- [ubuntu 14.04.2]: http://ports.ubuntu.com/ubuntu-ports/dists/trusty-updates/main/installer-ppc64el/current/images/utopic-netboot/
+ [ubuntu 14.04.2]: http://xcat.org/files/netboot/ubuntu14.04.2/ppc64el/mini.iso
- [ubuntu 14.04.3]: http://ports.ubuntu.com/ubuntu-ports/dists/trusty-updates/main/installer-ppc64el/current/images/vivid-netboot/
+ [ubuntu 14.04.3]: http://xcat.org/files/netboot/ubuntu14.04.3/ppc64el/mini.iso
+
+ [ubuntu 14.04.4]: http://xcat.org/files/netboot/ubuntu14.04.4/ppc64el/mini.iso
+
+ [ubuntu 16.04]: http://xcat.org/files/netboot/ubuntu16.04/ppc64el/mini.iso
* Mount mini.iso ::
diff --git a/docs/source/guides/admin-guides/manage_clusters/common/deployment/trim_diskless_rootimg.rst b/docs/source/guides/admin-guides/manage_clusters/common/deployment/trim_diskless_rootimg.rst
index cbb344d23..198ac04e8 100644
--- a/docs/source/guides/admin-guides/manage_clusters/common/deployment/trim_diskless_rootimg.rst
+++ b/docs/source/guides/admin-guides/manage_clusters/common/deployment/trim_diskless_rootimg.rst
@@ -1,121 +1,73 @@
Trim diskless rootimg
=====================
+To reduce the memory and boot-up time for the diskless node, the initrd and rootimg.gz should be kept as compact as possible under the premise of meeting the user's requirements.
-the exclude list attribute: linuximage.exlist
-----------------------------------------------
+Exclude list
+------------
-To reduce the memory occupation and boot-up time for the diskless node, the initrd and rootimg.gz should be kept as compact as possible under the premise of meeting the user's requirements.
-
-xCAT provides an **exclude list** attribute ``linuximage.exlist`` in the **osimage** object definition, which enables user to trim the rootimg on the diskless node after the rpms are installed into the rootimg directory by ``genimage`` on management node.
+xCAT provides an attribute ``exlist`` in the **osimage** object definition, that allows the user to select files to exclude when building the ``rootimg.gz`` file for the diskless node.
Take the osimage **sles12.1-ppc64le-netboot-compute** for example::
- # lsdef -t osimage -o sles12.1-ppc64le-netboot-compute
+ # lsdef -t osimage -o sles12.1-ppc64le-netboot-compute -i exlist
Object name: sles12.1-ppc64le-netboot-compute
exlist=/opt/xcat/share/xcat/netboot/sles/compute.sles12.ppc64le.exlist
- imagetype=linux
- osarch=ppc64le
- osdistroname=sles12.1-ppc64le
- osname=Linux
- osvers=sles12.1
- otherpkgdir=/install/post/otherpkgs/sles12.1/ppc64le
- permission=755
- pkgdir=/install/sles12.1/ppc64le
- pkglist=/opt/xcat/share/xcat/netboot/sles/compute.sles12.ppc64le.pkglist
- postinstall=/opt/xcat/share/xcat/netboot/sles/compute.sles12.ppc64le.postinstall
- profile=compute
- provmethod=netboot
- rootimgdir=/install/netboot/sles12.1/ppc64le/compute
-the content of exlist file
---------------------------
+Content of the Exclude List file
+--------------------------------
-The file specified in ``linuximage.exlist`` includes **relative path** of the directories and files that will be excluded from the **rootimg.gz** generated by ``packimage``. The **relative path** suppose the ``rootimg`` directory, ``/install/netboot/sles12.1/ppc64le/compute/rootimg`` here, to be the base directory. [1]_ [2]_
+The file specified in ``linuximage.exlist`` includes **relative path** of the directories and files that will be excluded from the **rootimg.gz** generated by ``packimage``. The **relative path** assumes the ``rootimg`` directory, ``/install/netboot/sles12.1/ppc64le/compute/rootimg`` here, to be the base directory. [1]_
-xCAT ships a default exlist file, user can add or remove entries based on it according to their need.
+The following is a sample of ``exlist`` file ::
-The content of the default exlist file ``/opt/xcat/share/xcat/netboot/sles/compute.sles12.ppc64le.exlist`` is: ::
-
- # cat /opt/xcat/share/xcat/netboot/sles/compute.sles12.ppc64le.exlist
- ./boot*
- ./etc/bootsplash/themes/SLES/images*
- ./opt/sci/include*
- ./usr/include*
- ./usr/lib/locale*
- ./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/auto/Encode/CN*
- ./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/auto/Encode/JP*
- ./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/auto/Encode/TW*
- ./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/auto/Encode/KR*
- ./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/CN*
- ./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/JP*
- ./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/KR*
- ./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/TW*
- ./usr/lib64/gcc/powerpc64le-suse-linux/4.8/include*
- ./usr/local/include*
- ./usr/local/man*
- ./usr/powerpc64le-suse-linux/include*
+ ...
./usr/share/X11/locale/*
- +./usr/share/X11/locale/en_US.UTF-8*
+ ./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/JP*
+./usr/share/X11/locale/C*
- ./usr/share/cracklib*
- ./usr/share/doc*
- ./usr/share/doc/packages/cyrus-sasl/doc*
- ./usr/share/gnome*
- ./usr/share/i18n*
- ./usr/share/info*
- ./usr/share/locale/*
- +./usr/share/locale/en_US*
- +./usr/share/locale/C*
- ./usr/share/man*
- ./usr/share/omf*
- ./usr/share/vim/site/doc*
- ./usr/share/vim/vim[0-9]*/doc*
- ./var/cache/man*
- ./var/cache/zypp*
+ ...
The content above presents some syntax supported in exlist file:
-* exclude entry::
+* Exclude files::
- ./usr/share/X11/locale/*
+ ./usr/share/X11/locale/*
-all the files and subdirectories under ``rootimg/usr/share/X11/locale/`` will be excluded.
+ All the files and subdirectories under ``rootimg/usr/share/X11/locale/`` will be excluded.
-* include entry::
+..
- +./usr/share/locale/C*
+* Exclude Files using Patterns [2]_::
-all the files and subdirectories with the name matching pattern ``C*`` under ``/usr/share/locale/`` will be included in the **rootimg.gz**, it is quite useful to use ``+`` initialed entries following an exclude entry to include some specific files or directories under the excluded parent directory.
+ ./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/JP*
-* pattern of the file name and directory [3]_::
+ Use regular expression to easily exclude files. The above example will exclude any Perl library installed under ``/usr/lib/`` matching ``ppc64le-linux-thread-multi/Encode/JP*``
- ./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/JP*
+..
-all the files and subdirectories matching the pattern ``./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/JP*`` will be excluded, such as ::
+* Include files::
- ./usr/lib/perl5/5.18.2/ppc64le-linux-thread-multi/Encode/JP
- ./usr/lib/perl5/5.18.2/ppc64le-linux-thread-multi/Encode/JP/H2Z.pm
- ./usr/lib/perl5/5.18.2/ppc64le-linux-thread-multi/Encode/JP/JIS7.pm
- ./usr/lib/perl5/5.18.2/ppc64le-linux-thread-multi/Encode/JP.pm
+ +./usr/share/locale/C*
+
+ It is useful to include files following an exclude entry to qiuckly remove a larger set of files using a wildcard and then adding back the few necessary files using the + sign. In the above example, all the files and sub-directories matching the pattern ``/usr/share/locale/C*`` will be included in the ``rootimg.gz`` file.
-customize the exlist file and the osimage definition
-----------------------------------------------------
+Customize the ``exlist`` file and the osimage definition
+--------------------------------------------------------
-Please check the default exlist file and make sure:
+Check the default exlist file and make sure:
* all files and directories you do not want in the image will be excluded from the rootimg.
* no file or directory you need will be excluded from the rootimg.
-If you want to customize the osimage ``sles12.1-ppc64le-netboot-compute`` with your own exlist file, please follow the following steps: ::
+If you want to customize the osimage ``sles12.1-ppc64le-netboot-compute`` with your own exlist file, follow the following steps: ::
#create a customized exlist file based on the default one
- cp /opt/xcat/share/xcat/netboot/sles/compute.sles12.ppc64le.exlist /install/custom/netboot/sles/compute.sles12.ppc64le.exlist
+ cp /opt/xcat/share/xcat/netboot/sles/compute.sles12.ppc64le.exlist /install/custom/netboot/sles/compute.sles12.ppc64le.exlist
#edit the newly created exlist file according to your need
vi /install/custom/netboot/sles/compute.sles12.ppc64le.exlist
@@ -123,8 +75,6 @@ If you want to customize the osimage ``sles12.1-ppc64le-netboot-compute`` with y
#specify the newly created exlist file in the osimage definition
chdef -t osimage -o sles12.1-ppc64le-netboot-compute exlist=/install/custom/netboot/sles/compute.sles12.ppc64le.exlist
-.. [1] It would only make sense to use an absolute path name here. It means that this entry will never match anything: ``/usr/share/locale/*``.
+.. [1] The ``exlist`` file entry should not end with a slash ``/``, For example, this entry will never match anything: ``./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/``.
-.. [2] The exlist file entry should not be ended with a slash ``/``, it means that this entry will never match anything: ``./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/``.
-
-.. [3] Pattern match test applies to the whole file name,starting from one of the start points specified in the exlist file entry. The regex syntax comply the with the regex syntax of system command ``find -path``, please refer to its doc for details.
+.. [2] Pattern match test applies to the whole file name,starting from one of the start points specified in the ``exlist`` file entry. The regex syntax should comply with the regex syntax of system command ``find -path``, refer to its doc for details.
diff --git a/docs/source/guides/admin-guides/references/man1/bmcdiscover.1.rst b/docs/source/guides/admin-guides/references/man1/bmcdiscover.1.rst
index 92c8ddda1..00a06fb0c 100644
--- a/docs/source/guides/admin-guides/references/man1/bmcdiscover.1.rst
+++ b/docs/source/guides/admin-guides/references/man1/bmcdiscover.1.rst
@@ -23,11 +23,11 @@ SYNOPSIS
\ **bmcdiscover**\ [\ **-v | -**\ **-version**\ ]
-\ **bmcdiscover**\ [\ **-s**\ \ *scan_method*\ ] \ **-**\ **-range**\ \ *ip_ranges*\ [\ **-z**\ ] [\ **-w**\ ] [\ **-t**\ ]
+\ **bmcdiscover**\ [\ **-s**\ \ *scan_method*\ ] [\ **-u**\ \ *bmc_user*\ ] [\ **-p**\ \ *bmc_passwd*\ ] [\ **-z**\ ] [\ **-w**\ ] [\ **-t**\ ] \ **-**\ **-range**\ \ *ip_ranges*\
-\ **bmcdiscover**\ {\ **-i | -**\ **-bmcip**\ } \ *bmc_ip*\ {\ **-u | -**\ **-bmcuser**\ } \ *bmc_username*\ {\ **-p | -**\ **-bmcpasswd**\ } \ *bmc_password*\ \ **-**\ **-check**\
+\ **bmcdiscover**\ \ **-u**\ \ *bmc_user*\ \ **-p**\ \ *bmc_passwd*\ \ **-i**\ \ *bmc_ip*\ \ **-**\ **-check**\
-\ **bmcdiscover**\ {\ **-i | -**\ **-bmcip**\ } \ *bmc_ip*\ {\ **-u | -**\ **-bmcuser**\ } \ *bmc_username*\ {\ **-p | -**\ **-bmcpasswd**\ } \ *bmc_password*\ \ **-**\ **-ipsource**\
+\ **bmcdiscover**\ [\ **-u**\ \ *bmc_user*\ ] [\ **-p**\ \ *bmc_passwd*\ ] \ **-i**\ \ *bmc_ip*\ \ **-**\ **-ipsource**\
***********
@@ -98,15 +98,15 @@ OPTIONS
-\ **-c|-**\ **-check**\
+\ **-**\ **-check**\
- Check
+ Check BMC administrator User/Password.
\ **-**\ **-ipsource**\
- BMC IP source
+ Display the BMC IP configuration.
@@ -169,7 +169,7 @@ Note: Input for IP range can be in the form: scanme.nmap.org, microsoft.com/24,
.. code-block:: perl
- bmcdiscover -i 10.4.23.254 -u USERID -p PASSW0RD -c
+ bmcdiscover -i 10.4.23.254 -u USERID -p PASSW0RD --check
5. Get BMC IP Address source, DHCP Address or static Address
diff --git a/docs/source/guides/admin-guides/references/man1/lsvm.1.rst b/docs/source/guides/admin-guides/references/man1/lsvm.1.rst
index b2da686c5..ee8b7bf31 100644
--- a/docs/source/guides/admin-guides/references/man1/lsvm.1.rst
+++ b/docs/source/guides/admin-guides/references/man1/lsvm.1.rst
@@ -11,7 +11,7 @@ NAME
****
-\ **lsvm**\ - Lists partition profile information for HMC-, DFM-, IVM-, KVM-, Vmware- and zVM-managed nodes. For Power 775, it lists the LPARs' I/O slots information and CEC configuration.
+\ **lsvm**\ - Lists partition profile information for HMC-, DFM-, IVM-, KVM-, VMware- and zVM-managed nodes. For Power 775, it lists the LPARs' I/O slots information and CEC configuration.
********
@@ -36,6 +36,13 @@ For PPC (using Direct FSP Management):
\ **lsvm**\ \ *noderange*\
+For KVM and VMware
+==================
+
+
+\ **lsvm**\ \ *noderange*\
+
+
For zVM:
========
@@ -72,11 +79,11 @@ More information about this part, refer to the section Using the \*vm commands t
XCAT_Power_775_Hardware_Management
-For KVM and Vmware
+For KVM and VMware
==================
-The virtual machines that defined in the hypervisor \ *noderange*\ will be displayed. \ *noderange*\ only can be hypervisor. The type of the hypervisor should be set: hypervisor.type before running the lsvm.
+The virtual machines that defined in the hypervisor \ *noderange*\ will be displayed. \ *noderange*\ can only be hypervisor.
Note: Only the virtual machine which is in power on state can be listed by lsvm command.
diff --git a/docs/source/guides/admin-guides/references/man1/mkvm.1.rst b/docs/source/guides/admin-guides/references/man1/mkvm.1.rst
index 050834c54..6791a9ce4 100644
--- a/docs/source/guides/admin-guides/references/man1/mkvm.1.rst
+++ b/docs/source/guides/admin-guides/references/man1/mkvm.1.rst
@@ -52,7 +52,7 @@ For KVM:
========
-\ **mkvm**\ \ *noderange*\ [\ **-m|-**\ **-master**\ \ *mastername*\ ] [\ **-s|-**\ **-size**\ \ *disksize*\ ] [\ **-**\ **-mem**\ \ *memsize*\ ] [\ **-**\ **-cpus**\ \ *cpucount*\ ] [\ **-f|-**\ **-force**\ ]
+\ **mkvm**\ \ *noderange*\ [\ **-s|-**\ **-size**\ \ *disksize*\ ] [\ **-**\ **-mem**\ \ *memsize*\ ] [\ **-**\ **-cpus**\ \ *cpucount*\ ] [\ **-f|-**\ **-force**\ ]
For Vmware:
diff --git a/docs/source/guides/admin-guides/references/man1/pasu.1.rst b/docs/source/guides/admin-guides/references/man1/pasu.1.rst
index 322113c82..e7af74980 100644
--- a/docs/source/guides/admin-guides/references/man1/pasu.1.rst
+++ b/docs/source/guides/admin-guides/references/man1/pasu.1.rst
@@ -19,9 +19,9 @@ SYNOPSIS
********
-\ **pasu**\ [\ **-V**\ ] [\ **-d**\ ] [\ **-n**\ ] [\ **-l**\ \ *user*\ ] [\ **-p**\ \ *passwd*\ ] [\ **-f**\ \ *fanout*\ ] [\ **-i**\ \ *hostname-suffix*\ ] \ *noderange*\ \ *command*\
+\ **pasu**\ [\ **-V**\ ] [\ **-d**\ ] [\ **-l**\ \ *user*\ ] [\ **-p**\ \ *passwd*\ ] [\ **-f**\ \ *fanout*\ ] [\ **-i**\ \ *hostname-suffix*\ ] \ *noderange*\ \ *command*\
-\ **pasu**\ [\ **-V**\ ] [\ **-d**\ ] [\ **-n**\ ] [\ **-l**\ \ *user*\ ] [\ **-p**\ \ *passwd*\ ] [\ **-f**\ \ *fanout*\ ] [\ **-i**\ \ *hostname-suffix*\ ] \ **-b**\ \ *batchfile*\ \ *noderange*\
+\ **pasu**\ [\ **-V**\ ] [\ **-d**\ ] [\ **-l**\ \ *user*\ ] [\ **-p**\ \ *passwd*\ ] [\ **-f**\ \ *fanout*\ ] [\ **-i**\ \ *hostname-suffix*\ ] \ **-b**\ \ *batchfile*\ \ *noderange*\
\ **pasu**\ [\ **-h**\ | \ **-**\ **-help**\ ]
@@ -47,13 +47,6 @@ OPTIONS
-\ **-n|-**\ **-nonodecheck**\
-
- Do not send the noderange to xcatd to expand it into a list of nodes. Use the noderange exactly as it is specified
- to pasu. In this case, the noderange must be a simple list of comma-separated hostnames of the IMMs.
-
-
-
\ **-l|-**\ **-loginname**\ \ *username*\
The username to use to connect to the IMMs. If not specified, the row in the xCAT \ **passwd**\ table with key "ipmi"
diff --git a/docs/source/guides/admin-guides/references/man5/mpa.5.rst b/docs/source/guides/admin-guides/references/man5/mpa.5.rst
index f06f0bbab..e44e0f87d 100644
--- a/docs/source/guides/admin-guides/references/man5/mpa.5.rst
+++ b/docs/source/guides/admin-guides/references/man5/mpa.5.rst
@@ -63,9 +63,9 @@ mpa Attributes:
\ **slots**\
The number of available slots in the chassis. For PCM, this attribute is used to store the number of slots in the following format: ,, Where:
- = number of rows of slots in chassis
- = number of columns of slots in chassis
- = set to 0 if slots are vertical, and set to 1 if slots of horizontal
+ = number of rows of slots in chassis
+ = number of columns of slots in chassis
+ = set to 0 if slots are vertical, and set to 1 if slots of horizontal
diff --git a/docs/source/guides/admin-guides/references/man5/noderes.5.rst b/docs/source/guides/admin-guides/references/man5/noderes.5.rst
index 05bd332a1..36c9fb575 100644
--- a/docs/source/guides/admin-guides/references/man5/noderes.5.rst
+++ b/docs/source/guides/admin-guides/references/man5/noderes.5.rst
@@ -19,7 +19,7 @@ SYNOPSIS
********
-\ **noderes Attributes:**\ \ *node*\ , \ *servicenode*\ , \ *netboot*\ , \ *tftpserver*\ , \ *tftpdir*\ , \ *nfsserver*\ , \ *monserver*\ , \ *nfsdir*\ , \ *installnic*\ , \ *primarynic*\ , \ *discoverynics*\ , \ *cmdinterface*\ , \ *xcatmaster*\ , \ *current_osimage*\ , \ *next_osimage*\ , \ *nimserver*\ , \ *routenames*\ , \ *nameservers*\ , \ *proxydhcp*\ , \ *comments*\ , \ *disable*\
+\ **noderes Attributes:**\ \ *node*\ , \ *servicenode*\ , \ *netboot*\ , \ *tftpserver*\ , \ *tftpdir*\ , \ *nfsserver*\ , \ *monserver*\ , \ *nfsdir*\ , \ *installnic*\ , \ *primarynic*\ , \ *discoverynics*\ , \ *cmdinterface*\ , \ *xcatmaster*\ , \ *current_osimage*\ , \ *next_osimage*\ , \ *nimserver*\ , \ *routenames*\ , \ *nameservers*\ , \ *proxydhcp*\ , \ *syslog*\ , \ *comments*\ , \ *disable*\
***********
@@ -156,6 +156,12 @@ noderes Attributes:
+\ **syslog**\
+
+ To configure how to configure syslog for compute node. Valid values:blank(not set), ignore. blank - run postscript syslog; ignore - do NOT run postscript syslog
+
+
+
\ **comments**\
Any user-written notes.
diff --git a/docs/source/guides/admin-guides/references/man5/site.5.rst b/docs/source/guides/admin-guides/references/man5/site.5.rst
index 962517f45..6c0495904 100644
--- a/docs/source/guides/admin-guides/references/man5/site.5.rst
+++ b/docs/source/guides/admin-guides/references/man5/site.5.rst
@@ -300,16 +300,16 @@ site Attributes:
xcatconfdir: Where xCAT config data is (default /etc/xcat).
xcatdebugmode: the xCAT debug level. xCAT provides a batch of techniques
- to help user debug problems while using xCAT, especially on OS provision,
- such as collecting logs of the whole installation process and accessing
- the installing system via ssh, etc. These techniques will be enabled
- according to different xCAT debug levels specified by 'xcatdebugmode',
- currently supported values:
- '0': disable debug mode
- '1': enable basic debug mode
- '2': enalbe expert debug mode
- For the details on 'basic debug mode' and 'expert debug mode',
- please refer to xCAT documentation.
+ to help user debug problems while using xCAT, especially on OS provision,
+ such as collecting logs of the whole installation process and accessing
+ the installing system via ssh, etc. These techniques will be enabled
+ according to different xCAT debug levels specified by 'xcatdebugmode',
+ currently supported values:
+ '0': disable debug mode
+ '1': enable basic debug mode
+ '2': enalbe expert debug mode
+ For the details on 'basic debug mode' and 'expert debug mode',
+ please refer to xCAT documentation.
--------------------
REMOTESHELL ATTRIBUTES
@@ -380,6 +380,10 @@ site Attributes:
entries generated by 'makehosts' will put the FQDN before the PQDN(Partially
Qualified Domain Name). Otherwise, the original behavior will be performed.
+ hierarchicalattrs: Table attributes(e.g. postscripts, postbootscripts) that will be
+ included hierarchically. Attribute values for all the node's groups
+ will be applied to the node in the groups' order except the repeat one.
+
.. code-block:: perl
diff --git a/docs/source/guides/admin-guides/references/man7/group.7.rst b/docs/source/guides/admin-guides/references/man7/group.7.rst
index 8f03c6ac7..0e76c6a07 100644
--- a/docs/source/guides/admin-guides/references/man7/group.7.rst
+++ b/docs/source/guides/admin-guides/references/man7/group.7.rst
@@ -19,7 +19,7 @@ SYNOPSIS
********
-\ **group Attributes:**\ \ *addkcmdline*\ , \ *arch*\ , \ *authdomain*\ , \ *bmc*\ , \ *bmcpassword*\ , \ *bmcport*\ , \ *bmcusername*\ , \ *cfgmgr*\ , \ *cfgmgtroles*\ , \ *cfgserver*\ , \ *chain*\ , \ *chassis*\ , \ *cmdmapping*\ , \ *cons*\ , \ *conserver*\ , \ *consoleondemand*\ , \ *cpucount*\ , \ *cputype*\ , \ *currchain*\ , \ *currstate*\ , \ *dhcpinterfaces*\ , \ *disksize*\ , \ *displayname*\ , \ *dockercpus*\ , \ *dockerflag*\ , \ *dockerhost*\ , \ *dockermemory*\ , \ *dockernics*\ , \ *domainadminpassword*\ , \ *domainadminuser*\ , \ *domaintype*\ , \ *getmac*\ , \ *groupname*\ , \ *grouptype*\ , \ *hcp*\ , \ *height*\ , \ *hostcluster*\ , \ *hostinterface*\ , \ *hostmanager*\ , \ *hostnames*\ , \ *hosttype*\ , \ *hwtype*\ , \ *id*\ , \ *initrd*\ , \ *installnic*\ , \ *interface*\ , \ *ip*\ , \ *iscsipassword*\ , \ *iscsiserver*\ , \ *iscsitarget*\ , \ *iscsiuserid*\ , \ *kcmdline*\ , \ *kernel*\ , \ *linkports*\ , \ *mac*\ , \ *membergroups*\ , \ *members*\ , \ *memory*\ , \ *mgt*\ , \ *micbridge*\ , \ *michost*\ , \ *micid*\ , \ *miconboot*\ , \ *micpowermgt*\ , \ *micvlog*\ , \ *migrationdest*\ , \ *monserver*\ , \ *mpa*\ , \ *mtm*\ , \ *nameservers*\ , \ *netboot*\ , \ *nfsdir*\ , \ *nfsserver*\ , \ *nicaliases*\ , \ *niccustomscripts*\ , \ *nicdevices*\ , \ *nicextraparams*\ , \ *nichostnameprefixes*\ , \ *nichostnamesuffixes*\ , \ *nicips*\ , \ *nicnetworks*\ , \ *nicsadapter*\ , \ *nictypes*\ , \ *nimserver*\ , \ *nodetype*\ , \ *ondiscover*\ , \ *os*\ , \ *osvolume*\ , \ *otherinterfaces*\ , \ *ou*\ , \ *parent*\ , \ *passwd.HMC*\ , \ *passwd.admin*\ , \ *passwd.celogin*\ , \ *passwd.general*\ , \ *passwd.hscroot*\ , \ *password*\ , \ *postbootscripts*\ , \ *postscripts*\ , \ *power*\ , \ *pprofile*\ , \ *prescripts-begin*\ , \ *prescripts-end*\ , \ *primarynic*\ , \ *productkey*\ , \ *profile*\ , \ *protocol*\ , \ *provmethod*\ , \ *rack*\ , \ *room*\ , \ *routenames*\ , \ *serial*\ , \ *serialflow*\ , \ *serialport*\ , \ *serialspeed*\ , \ *servicenode*\ , \ *setupconserver*\ , \ *setupdhcp*\ , \ *setupftp*\ , \ *setupipforward*\ , \ *setupldap*\ , \ *setupnameserver*\ , \ *setupnfs*\ , \ *setupnim*\ , \ *setupntp*\ , \ *setupproxydhcp*\ , \ *setuptftp*\ , \ *sfp*\ , \ *side*\ , \ *slot*\ , \ *slotid*\ , \ *slots*\ , \ *snmpauth*\ , \ *snmppassword*\ , \ *snmpprivacy*\ , \ *snmpusername*\ , \ *snmpversion*\ , \ *storagcontroller*\ , \ *storagetype*\ , \ *supernode*\ , \ *supportedarchs*\ , \ *supportproxydhcp*\ , \ *switch*\ , \ *switchinterface*\ , \ *switchport*\ , \ *switchtype*\ , \ *switchvlan*\ , \ *termport*\ , \ *termserver*\ , \ *tftpdir*\ , \ *tftpserver*\ , \ *unit*\ , \ *urlpath*\ , \ *usercomment*\ , \ *userid*\ , \ *username*\ , \ *vmbeacon*\ , \ *vmbootorder*\ , \ *vmcfgstore*\ , \ *vmcluster*\ , \ *vmcpus*\ , \ *vmhost*\ , \ *vmmanager*\ , \ *vmmaster*\ , \ *vmmemory*\ , \ *vmnicnicmodel*\ , \ *vmnics*\ , \ *vmothersetting*\ , \ *vmphyslots*\ , \ *vmstorage*\ , \ *vmstoragecache*\ , \ *vmstorageformat*\ , \ *vmstoragemodel*\ , \ *vmtextconsole*\ , \ *vmvirtflags*\ , \ *vmvncport*\ , \ *webport*\ , \ *wherevals*\ , \ *xcatmaster*\
+\ **group Attributes:**\ \ *addkcmdline*\ , \ *arch*\ , \ *authdomain*\ , \ *bmc*\ , \ *bmcpassword*\ , \ *bmcport*\ , \ *bmcusername*\ , \ *cfgmgr*\ , \ *cfgmgtroles*\ , \ *cfgserver*\ , \ *chain*\ , \ *chassis*\ , \ *cmdmapping*\ , \ *cons*\ , \ *conserver*\ , \ *consoleondemand*\ , \ *cpucount*\ , \ *cputype*\ , \ *currchain*\ , \ *currstate*\ , \ *dhcpinterfaces*\ , \ *disksize*\ , \ *displayname*\ , \ *dockercpus*\ , \ *dockerflag*\ , \ *dockerhost*\ , \ *dockermemory*\ , \ *dockernics*\ , \ *domainadminpassword*\ , \ *domainadminuser*\ , \ *domaintype*\ , \ *getmac*\ , \ *groupname*\ , \ *grouptype*\ , \ *hcp*\ , \ *height*\ , \ *hostcluster*\ , \ *hostinterface*\ , \ *hostmanager*\ , \ *hostnames*\ , \ *hosttype*\ , \ *hwtype*\ , \ *id*\ , \ *initrd*\ , \ *installnic*\ , \ *interface*\ , \ *ip*\ , \ *iscsipassword*\ , \ *iscsiserver*\ , \ *iscsitarget*\ , \ *iscsiuserid*\ , \ *kcmdline*\ , \ *kernel*\ , \ *linkports*\ , \ *mac*\ , \ *membergroups*\ , \ *members*\ , \ *memory*\ , \ *mgt*\ , \ *micbridge*\ , \ *michost*\ , \ *micid*\ , \ *miconboot*\ , \ *micpowermgt*\ , \ *micvlog*\ , \ *migrationdest*\ , \ *monserver*\ , \ *mpa*\ , \ *mtm*\ , \ *nameservers*\ , \ *netboot*\ , \ *nfsdir*\ , \ *nfsserver*\ , \ *nicaliases*\ , \ *niccustomscripts*\ , \ *nicdevices*\ , \ *nicextraparams*\ , \ *nichostnameprefixes*\ , \ *nichostnamesuffixes*\ , \ *nicips*\ , \ *nicnetworks*\ , \ *nicsadapter*\ , \ *nictypes*\ , \ *nimserver*\ , \ *nodetype*\ , \ *ondiscover*\ , \ *os*\ , \ *osvolume*\ , \ *otherinterfaces*\ , \ *ou*\ , \ *parent*\ , \ *passwd.HMC*\ , \ *passwd.admin*\ , \ *passwd.celogin*\ , \ *passwd.general*\ , \ *passwd.hscroot*\ , \ *password*\ , \ *postbootscripts*\ , \ *postscripts*\ , \ *power*\ , \ *pprofile*\ , \ *prescripts-begin*\ , \ *prescripts-end*\ , \ *primarynic*\ , \ *productkey*\ , \ *profile*\ , \ *protocol*\ , \ *provmethod*\ , \ *rack*\ , \ *room*\ , \ *routenames*\ , \ *serial*\ , \ *serialflow*\ , \ *serialport*\ , \ *serialspeed*\ , \ *servicenode*\ , \ *setupconserver*\ , \ *setupdhcp*\ , \ *setupftp*\ , \ *setupipforward*\ , \ *setupldap*\ , \ *setupnameserver*\ , \ *setupnfs*\ , \ *setupnim*\ , \ *setupntp*\ , \ *setupproxydhcp*\ , \ *setuptftp*\ , \ *sfp*\ , \ *side*\ , \ *slot*\ , \ *slotid*\ , \ *slots*\ , \ *snmpauth*\ , \ *snmppassword*\ , \ *snmpprivacy*\ , \ *snmpusername*\ , \ *snmpversion*\ , \ *storagcontroller*\ , \ *storagetype*\ , \ *supernode*\ , \ *supportedarchs*\ , \ *supportproxydhcp*\ , \ *switch*\ , \ *switchinterface*\ , \ *switchport*\ , \ *switchtype*\ , \ *switchvlan*\ , \ *syslog*\ , \ *termport*\ , \ *termserver*\ , \ *tftpdir*\ , \ *tftpserver*\ , \ *unit*\ , \ *urlpath*\ , \ *usercomment*\ , \ *userid*\ , \ *username*\ , \ *vmbeacon*\ , \ *vmbootorder*\ , \ *vmcfgstore*\ , \ *vmcluster*\ , \ *vmcpus*\ , \ *vmhost*\ , \ *vmmanager*\ , \ *vmmaster*\ , \ *vmmemory*\ , \ *vmnicnicmodel*\ , \ *vmnics*\ , \ *vmothersetting*\ , \ *vmphyslots*\ , \ *vmstorage*\ , \ *vmstoragecache*\ , \ *vmstorageformat*\ , \ *vmstoragemodel*\ , \ *vmtextconsole*\ , \ *vmvirtflags*\ , \ *vmvncport*\ , \ *webport*\ , \ *wherevals*\ , \ *xcatmaster*\
***********
@@ -1120,11 +1120,11 @@ group Attributes:
.. code-block:: perl
- = number of rows of slots in chassis
+ = number of rows of slots in chassis
- = number of columns of slots in chassis
+ = number of columns of slots in chassis
- = set to 0 if slots are vertical, and set to 1 if slots of horizontal
+ = set to 0 if slots are vertical, and set to 1 if slots of horizontal
@@ -1227,6 +1227,12 @@ group Attributes:
+\ **syslog**\ (noderes.syslog)
+
+ To configure how to configure syslog for compute node. Valid values:blank(not set), ignore. blank - run postscript syslog; ignore - do NOT run postscript syslog
+
+
+
\ **termport**\ (nodehm.termport)
The port number on the terminal server that this node is connected to.
diff --git a/docs/source/guides/admin-guides/references/man7/node.7.rst b/docs/source/guides/admin-guides/references/man7/node.7.rst
index 441a15055..0d871ee82 100644
--- a/docs/source/guides/admin-guides/references/man7/node.7.rst
+++ b/docs/source/guides/admin-guides/references/man7/node.7.rst
@@ -19,7 +19,7 @@ SYNOPSIS
********
-\ **node Attributes:**\ \ *addkcmdline*\ , \ *appstatus*\ , \ *appstatustime*\ , \ *arch*\ , \ *authdomain*\ , \ *bmc*\ , \ *bmcpassword*\ , \ *bmcport*\ , \ *bmcusername*\ , \ *cfgmgr*\ , \ *cfgmgtroles*\ , \ *cfgserver*\ , \ *chain*\ , \ *chassis*\ , \ *cmdmapping*\ , \ *cons*\ , \ *conserver*\ , \ *consoleondemand*\ , \ *cpucount*\ , \ *cputype*\ , \ *currchain*\ , \ *currstate*\ , \ *dhcpinterfaces*\ , \ *disksize*\ , \ *displayname*\ , \ *dockercpus*\ , \ *dockerflag*\ , \ *dockerhost*\ , \ *dockermemory*\ , \ *dockernics*\ , \ *domainadminpassword*\ , \ *domainadminuser*\ , \ *domaintype*\ , \ *getmac*\ , \ *groups*\ , \ *hcp*\ , \ *height*\ , \ *hidden*\ , \ *hostcluster*\ , \ *hostinterface*\ , \ *hostmanager*\ , \ *hostnames*\ , \ *hosttype*\ , \ *hwtype*\ , \ *id*\ , \ *initrd*\ , \ *installnic*\ , \ *interface*\ , \ *ip*\ , \ *iscsipassword*\ , \ *iscsiserver*\ , \ *iscsitarget*\ , \ *iscsiuserid*\ , \ *kcmdline*\ , \ *kernel*\ , \ *linkports*\ , \ *mac*\ , \ *memory*\ , \ *mgt*\ , \ *micbridge*\ , \ *michost*\ , \ *micid*\ , \ *miconboot*\ , \ *micpowermgt*\ , \ *micvlog*\ , \ *migrationdest*\ , \ *monserver*\ , \ *mpa*\ , \ *mtm*\ , \ *nameservers*\ , \ *netboot*\ , \ *nfsdir*\ , \ *nfsserver*\ , \ *nicaliases*\ , \ *niccustomscripts*\ , \ *nicdevices*\ , \ *nicextraparams*\ , \ *nichostnameprefixes*\ , \ *nichostnamesuffixes*\ , \ *nicips*\ , \ *nicnetworks*\ , \ *nicsadapter*\ , \ *nictypes*\ , \ *nimserver*\ , \ *node*\ , \ *nodetype*\ , \ *ondiscover*\ , \ *os*\ , \ *osvolume*\ , \ *otherinterfaces*\ , \ *ou*\ , \ *parent*\ , \ *passwd.HMC*\ , \ *passwd.admin*\ , \ *passwd.celogin*\ , \ *passwd.general*\ , \ *passwd.hscroot*\ , \ *password*\ , \ *postbootscripts*\ , \ *postscripts*\ , \ *power*\ , \ *pprofile*\ , \ *prescripts-begin*\ , \ *prescripts-end*\ , \ *primarynic*\ , \ *primarysn*\ , \ *productkey*\ , \ *profile*\ , \ *protocol*\ , \ *provmethod*\ , \ *rack*\ , \ *room*\ , \ *routenames*\ , \ *serial*\ , \ *serialflow*\ , \ *serialport*\ , \ *serialspeed*\ , \ *servicenode*\ , \ *setupconserver*\ , \ *setupdhcp*\ , \ *setupftp*\ , \ *setupipforward*\ , \ *setupldap*\ , \ *setupnameserver*\ , \ *setupnfs*\ , \ *setupnim*\ , \ *setupntp*\ , \ *setupproxydhcp*\ , \ *setuptftp*\ , \ *sfp*\ , \ *side*\ , \ *slot*\ , \ *slotid*\ , \ *slots*\ , \ *snmpauth*\ , \ *snmppassword*\ , \ *snmpprivacy*\ , \ *snmpusername*\ , \ *snmpversion*\ , \ *status*\ , \ *statustime*\ , \ *storagcontroller*\ , \ *storagetype*\ , \ *supernode*\ , \ *supportedarchs*\ , \ *supportproxydhcp*\ , \ *switch*\ , \ *switchinterface*\ , \ *switchport*\ , \ *switchtype*\ , \ *switchvlan*\ , \ *termport*\ , \ *termserver*\ , \ *tftpdir*\ , \ *tftpserver*\ , \ *unit*\ , \ *updatestatus*\ , \ *updatestatustime*\ , \ *urlpath*\ , \ *usercomment*\ , \ *userid*\ , \ *username*\ , \ *vmbeacon*\ , \ *vmbootorder*\ , \ *vmcfgstore*\ , \ *vmcluster*\ , \ *vmcpus*\ , \ *vmhost*\ , \ *vmmanager*\ , \ *vmmaster*\ , \ *vmmemory*\ , \ *vmnicnicmodel*\ , \ *vmnics*\ , \ *vmothersetting*\ , \ *vmphyslots*\ , \ *vmstorage*\ , \ *vmstoragecache*\ , \ *vmstorageformat*\ , \ *vmstoragemodel*\ , \ *vmtextconsole*\ , \ *vmvirtflags*\ , \ *vmvncport*\ , \ *webport*\ , \ *xcatmaster*\ , \ *zonename*\
+\ **node Attributes:**\ \ *addkcmdline*\ , \ *appstatus*\ , \ *appstatustime*\ , \ *arch*\ , \ *authdomain*\ , \ *bmc*\ , \ *bmcpassword*\ , \ *bmcport*\ , \ *bmcusername*\ , \ *cfgmgr*\ , \ *cfgmgtroles*\ , \ *cfgserver*\ , \ *chain*\ , \ *chassis*\ , \ *cmdmapping*\ , \ *cons*\ , \ *conserver*\ , \ *consoleondemand*\ , \ *cpucount*\ , \ *cputype*\ , \ *currchain*\ , \ *currstate*\ , \ *dhcpinterfaces*\ , \ *disksize*\ , \ *displayname*\ , \ *dockercpus*\ , \ *dockerflag*\ , \ *dockerhost*\ , \ *dockermemory*\ , \ *dockernics*\ , \ *domainadminpassword*\ , \ *domainadminuser*\ , \ *domaintype*\ , \ *getmac*\ , \ *groups*\ , \ *hcp*\ , \ *height*\ , \ *hidden*\ , \ *hostcluster*\ , \ *hostinterface*\ , \ *hostmanager*\ , \ *hostnames*\ , \ *hosttype*\ , \ *hwtype*\ , \ *id*\ , \ *initrd*\ , \ *installnic*\ , \ *interface*\ , \ *ip*\ , \ *iscsipassword*\ , \ *iscsiserver*\ , \ *iscsitarget*\ , \ *iscsiuserid*\ , \ *kcmdline*\ , \ *kernel*\ , \ *linkports*\ , \ *mac*\ , \ *memory*\ , \ *mgt*\ , \ *micbridge*\ , \ *michost*\ , \ *micid*\ , \ *miconboot*\ , \ *micpowermgt*\ , \ *micvlog*\ , \ *migrationdest*\ , \ *monserver*\ , \ *mpa*\ , \ *mtm*\ , \ *nameservers*\ , \ *netboot*\ , \ *nfsdir*\ , \ *nfsserver*\ , \ *nicaliases*\ , \ *niccustomscripts*\ , \ *nicdevices*\ , \ *nicextraparams*\ , \ *nichostnameprefixes*\ , \ *nichostnamesuffixes*\ , \ *nicips*\ , \ *nicnetworks*\ , \ *nicsadapter*\ , \ *nictypes*\ , \ *nimserver*\ , \ *node*\ , \ *nodetype*\ , \ *ondiscover*\ , \ *os*\ , \ *osvolume*\ , \ *otherinterfaces*\ , \ *ou*\ , \ *parent*\ , \ *passwd.HMC*\ , \ *passwd.admin*\ , \ *passwd.celogin*\ , \ *passwd.general*\ , \ *passwd.hscroot*\ , \ *password*\ , \ *postbootscripts*\ , \ *postscripts*\ , \ *power*\ , \ *pprofile*\ , \ *prescripts-begin*\ , \ *prescripts-end*\ , \ *primarynic*\ , \ *primarysn*\ , \ *productkey*\ , \ *profile*\ , \ *protocol*\ , \ *provmethod*\ , \ *rack*\ , \ *room*\ , \ *routenames*\ , \ *serial*\ , \ *serialflow*\ , \ *serialport*\ , \ *serialspeed*\ , \ *servicenode*\ , \ *setupconserver*\ , \ *setupdhcp*\ , \ *setupftp*\ , \ *setupipforward*\ , \ *setupldap*\ , \ *setupnameserver*\ , \ *setupnfs*\ , \ *setupnim*\ , \ *setupntp*\ , \ *setupproxydhcp*\ , \ *setuptftp*\ , \ *sfp*\ , \ *side*\ , \ *slot*\ , \ *slotid*\ , \ *slots*\ , \ *snmpauth*\ , \ *snmppassword*\ , \ *snmpprivacy*\ , \ *snmpusername*\ , \ *snmpversion*\ , \ *status*\ , \ *statustime*\ , \ *storagcontroller*\ , \ *storagetype*\ , \ *supernode*\ , \ *supportedarchs*\ , \ *supportproxydhcp*\ , \ *switch*\ , \ *switchinterface*\ , \ *switchport*\ , \ *switchtype*\ , \ *switchvlan*\ , \ *syslog*\ , \ *termport*\ , \ *termserver*\ , \ *tftpdir*\ , \ *tftpserver*\ , \ *unit*\ , \ *updatestatus*\ , \ *updatestatustime*\ , \ *urlpath*\ , \ *usercomment*\ , \ *userid*\ , \ *username*\ , \ *vmbeacon*\ , \ *vmbootorder*\ , \ *vmcfgstore*\ , \ *vmcluster*\ , \ *vmcpus*\ , \ *vmhost*\ , \ *vmmanager*\ , \ *vmmaster*\ , \ *vmmemory*\ , \ *vmnicnicmodel*\ , \ *vmnics*\ , \ *vmothersetting*\ , \ *vmphyslots*\ , \ *vmstorage*\ , \ *vmstoragecache*\ , \ *vmstorageformat*\ , \ *vmstoragemodel*\ , \ *vmtextconsole*\ , \ *vmvirtflags*\ , \ *vmvncport*\ , \ *webport*\ , \ *xcatmaster*\ , \ *zonename*\
***********
@@ -1132,11 +1132,11 @@ node Attributes:
.. code-block:: perl
- = number of rows of slots in chassis
+ = number of rows of slots in chassis
- = number of columns of slots in chassis
+ = number of columns of slots in chassis
- = set to 0 if slots are vertical, and set to 1 if slots of horizontal
+ = set to 0 if slots are vertical, and set to 1 if slots of horizontal
@@ -1251,6 +1251,12 @@ node Attributes:
+\ **syslog**\ (noderes.syslog)
+
+ To configure how to configure syslog for compute node. Valid values:blank(not set), ignore. blank - run postscript syslog; ignore - do NOT run postscript syslog
+
+
+
\ **termport**\ (nodehm.termport)
The port number on the terminal server that this node is connected to.
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 242827176..fb662bd60 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -35,4 +35,5 @@ Table of Contents
troubleshooting/index.rst
developers/index.rst
help.rst
+ security/index.rst
diff --git a/docs/source/security/2016/20160115_openssl.rst b/docs/source/security/2016/20160115_openssl.rst
new file mode 100644
index 000000000..32dcee2a3
--- /dev/null
+++ b/docs/source/security/2016/20160115_openssl.rst
@@ -0,0 +1,28 @@
+2016-01-15 - OpenSSL Vulnerabilities (SLOTH)
+============================================
+
+A detailed description of this issue can be seen in the following blog posting: http://www.mitls.org/pages/attacks/SLOTH
+
+Advisory CVEs
+-------------
+
+`CVE-2015-7575 `_ - TLS 1.2 Transcipt Collision attacks against MD5 in key exchange protocol (SLOTH)
+
+Action
+------
+
+xCAT uses OpenSSL for client-server communication but **does not** ship it.
+
+It is highly recommended to keep your OpenSSL levels up-to-date with the indicated versions in the security bulletins to prevent any potential security threats. Obtain the updated software packages from your Operating system distribution channels.
+
+
+
+Disable MD5 authentication in the cipher list using the site table keyword ``xcatsslciphers``.
+
+1. Check if MD5 is already disabled: ``tabdump site | grep xcatssl``
+
+2. If nothing is set, add ``ALL:!MD5`` to the cipher list: ``chtab key=xcatsslciphers site.value='ALL:!MD5'``
+
+3. Restart xcat: ``service xcatd restart``
+
+
diff --git a/docs/source/security/2016/20160128_openssl.rst b/docs/source/security/2016/20160128_openssl.rst
new file mode 100644
index 000000000..a4b5f567a
--- /dev/null
+++ b/docs/source/security/2016/20160128_openssl.rst
@@ -0,0 +1,28 @@
+2016-01-28 - OpenSSL Vulnerabilities
+====================================
+
+*Jan 28, 2016* OpenSSL announced the following security advisories: https://mta.openssl.org/pipermail/openssl-announce/2016-January/000061.html
+
+Advisory CVEs
+-------------
+
+* CVE-2016-0701 - **DH small subgroups** (Severity:High)
+
+ This issue affects OpenSSL version 1.0.2.
+ OpenSSL 1.0.2 users should upgrade to 1.0.2f
+
+* CVE-2015-3197 - **SSLv2 doesn't block disabled ciphers** (Severity:Low)
+
+ This issue affects OpenSSL versions 1.0.2 and 1.0.1.
+
+ OpenSSL 1.0.2 users should upgrade to 1.0.2f
+ OpenSSL 1.0.1 users should upgrade to 1.0.1r
+
+
+Action
+------
+
+xCAT uses OpenSSL for client-server communication but **does not** ship it.
+
+It is recommended to keep your OpenSSL levels up-to-date with the indicated versions in the security bulletins to prevent any potential security threats.
+
diff --git a/docs/source/security/2016/20160301_openssl.rst b/docs/source/security/2016/20160301_openssl.rst
new file mode 100644
index 000000000..aa466cfb3
--- /dev/null
+++ b/docs/source/security/2016/20160301_openssl.rst
@@ -0,0 +1,68 @@
+2016-03-01 - OpenSSL Vulnerabilities (DROWN)
+============================================
+
+*March 1, 2016* OpenSSL announced the following security advisories: https://www.openssl.org/news/secadv/20160301.txt
+
+Advisory CVEs
+-------------
+
+* CVE-2016-0800 - **Cross-protocol attack on TLS using SSLv2 (DROWN)** (Severity:High)
+
+ This issue affects OpenSSL versions 1.0.1 and 1.0.2.
+
+ OpenSSL 1.0.2 users should upgrade to 1.0.2g
+ OpenSSL 1.0.1 users should upgrade to 1.0.1s
+
+* CVE-2016-0705 - **Double-free in DSA code** (Severity:Low)
+
+ This issue affects OpenSSL versions 1.0.2 and 1.0.1.
+
+ OpenSSL 1.0.2 users should upgrade to 1.0.2g
+ OpenSSL 1.0.1 users should upgrade to 1.0.1s
+
+* CVE-2016-0798 - **Memory leak in SRP database lookups** (Severity:Low)
+
+ This issue affects OpenSSL versions 1.0.2 and 1.0.1.
+
+ OpenSSL 1.0.2 users should upgrade to 1.0.2g
+ OpenSSL 1.0.1 users should upgrade to 1.0.1s
+
+* CVE-2016-0797 - **BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption** (Severity:Low)
+
+ This issue affects OpenSSL versions 1.0.2 and 1.0.1.
+
+ OpenSSL 1.0.2 users should upgrade to 1.0.2g
+ OpenSSL 1.0.1 users should upgrade to 1.0.1s
+
+
+* CVE-2016-0797 - **Fix memory issues in BIO_*printf functions** (Severity:Low)
+
+ This issue affects OpenSSL versions 1.0.2 and 1.0.1.
+
+ OpenSSL 1.0.2 users should upgrade to 1.0.2g
+ OpenSSL 1.0.1 users should upgrade to 1.0.1s
+
+
+* CVE-2016-0702 - **Side channel attack on modular exponentiation** (Severity:Low)
+
+ This issue affects OpenSSL versions 1.0.2 and 1.0.1.
+
+ OpenSSL 1.0.2 users should upgrade to 1.0.2g
+ OpenSSL 1.0.1 users should upgrade to 1.0.1s
+
+* CVE-2016-0703 - **Divide-and-conquer session key recovery in SSLv2** (Severity:High)
+
+ This issue affected OpenSSL versions 1.0.2, 1.0.1l, 1.0.0q, 0.9.8ze and all earlier versions. It was fixed in OpenSSL 1.0.2a, 1.0.1m, 1.0.0r and 0.9.8zf
+
+* CVE-2016-0704 - **Bleichenbacher oracle in SSLv2** (Severity:Moderate)
+
+ This issue affected OpenSSL versions 1.0.2, 1.0.1l, 1.0.0q, 0.9.8ze and all earlier versions. It was fixed in OpenSSL 1.0.2a, 1.0.1m, 1.0.0r and 0.9.8zf
+
+
+Action
+------
+
+xCAT uses OpenSSL for client-server communication but **does not** ship it. Regarding CVE-2016-0800, xCAT also does not use SSLv2 layer but uses the newer TLS transport layer security.
+
+It is recommended to keep your OpenSSL levels up-to-date with the indicated versions in the security bulletins to prevent any potential security threats.
+
diff --git a/docs/source/security/2016/20160503_openssl.rst b/docs/source/security/2016/20160503_openssl.rst
new file mode 100644
index 000000000..33b94836b
--- /dev/null
+++ b/docs/source/security/2016/20160503_openssl.rst
@@ -0,0 +1,52 @@
+2016-05-03 - OpenSSL Vulnerabilities (ANS.1 encoder)
+====================================================
+
+*May 3, 2016* OpenSSL announced the following security advisories: https://www.openssl.org/news/secadv/20160503.txt
+
+Advisory CVEs
+-------------
+
+* CVE-2016-2108 - **Memory corruption in the ASN.1 encoder** (Severity:High)
+
+ This issue affects all OpenSSL version prior to April 2015
+
+ OpenSSL 1.0.2 users should upgrade to 1.0.2c
+ OpenSSL 1.0.1 users should upgrade to 1.0.1o
+
+* CVE-2016-2107 - **Padding oracle in AES-NI CBC MAC check** (Severity: High)
+
+ This issue was introduced as part of the fix for Lucky 13 padding attack (CVE-2013-0169)
+
+ OpenSSL 1.0.2 users should upgrade to 1.0.2h
+ OpenSSL 1.0.1 users should upgrade to 1.0.1t
+
+* CVE-2016-2105 - **EVP_EncodeUpdate overflow** (Severity:Low)
+
+ OpenSSL 1.0.2 users should upgrade to 1.0.2h
+ OpenSSL 1.0.1 users should upgrade to 1.0.1t
+
+* CVE-2016-2106 - **EVP_EncryptUpdate overflow** (Severity:Low)
+
+ OpenSSL 1.0.2 users should upgrade to 1.0.2h
+ OpenSSL 1.0.1 users should upgrade to 1.0.1t
+
+
+* CVE-2016-2109 - **ASN.1 BIO excessive memory allocation** (Severity:Low)
+
+ OpenSSL 1.0.2 users should upgrade to 1.0.2h
+ OpenSSL 1.0.1 users should upgrade to 1.0.1t
+
+
+* CVE-2016-2176 - **EBCDIC overread** (Severity:Low)
+
+ OpenSSL 1.0.2 users should upgrade to 1.0.2h
+ OpenSSL 1.0.1 users should upgrade to 1.0.1t
+
+
+Action
+------
+
+xCAT uses OpenSSL for client-server communication but **does not** ship it.
+
+It is recommended to keep your OpenSSL levels up-to-date with the indicated versions in the security bulletins to prevent any potential security threats.
+
diff --git a/docs/source/security/2016/index.rst b/docs/source/security/2016/index.rst
new file mode 100644
index 000000000..3017c40dd
--- /dev/null
+++ b/docs/source/security/2016/index.rst
@@ -0,0 +1,10 @@
+2016 Notices
+============
+
+.. toctree::
+ :maxdepth: 1
+
+ 20160503_openssl.rst
+ 20160301_openssl.rst
+ 20160128_openssl.rst
+ 20160115_openssl.rst
diff --git a/docs/source/security/index.rst b/docs/source/security/index.rst
new file mode 100644
index 000000000..4f9535ac9
--- /dev/null
+++ b/docs/source/security/index.rst
@@ -0,0 +1,8 @@
+Security Notices
+================
+
+.. toctree::
+ :maxdepth: 2
+
+ 2016/index.rst
+ 2015/index.rst
diff --git a/docs/source/troubleshooting/os_installation/ssh_enable.rst b/docs/source/troubleshooting/os_installation/ssh_enable.rst
index 13f09dd29..5d1bebd3a 100644
--- a/docs/source/troubleshooting/os_installation/ssh_enable.rst
+++ b/docs/source/troubleshooting/os_installation/ssh_enable.rst
@@ -24,6 +24,10 @@ The ssh access to the installer is enabled, the admin can login into the install
Just as the message above suggests, the admin should run ``ssh -X root@`` to access the installer and run ``yast.ssh`` to finish the installation.
+ **Note**: For sles12, during the second stage of an SSH installation YaST freezes. It is blocked by the SuSEFirewall service because the ``SYSTEMCTL_OPTIONS`` environment variable is not set properly. Workaround: When logged in for the second time to start the second stage of the SSH installation, call **yast.ssh** with the ``--ignore-dependencies`` as follows: ::
+
+ SYSTEMCTL_OPTIONS=--ignore-dependencies yast.ssh
+
#. For UBT, the installation will halt on the following similar message in the console: ::
┌───────────┤ [!!] Continue installation remotely using SSH ├───────────┐
diff --git a/perl-xCAT/xCAT/RSYNC.pm b/perl-xCAT/xCAT/RSYNC.pm
index b3779c03e..52b0725f4 100644
--- a/perl-xCAT/xCAT/RSYNC.pm
+++ b/perl-xCAT/xCAT/RSYNC.pm
@@ -129,7 +129,7 @@ sub remote_copy_command
# if only syncing the service node or
# (no postscripts and no append lines) then do not
# get update file notification
- if (($::SYNCSN == 1) || ((!(defined @::postscripts)) && (!(defined @::appendlines)) && (!(defined @::mergelines)))) {
+ if (($::SYNCSN == 1) || ((!(@::postscripts)) && (!(@::appendlines)) && (!(@::mergelines)))) {
$sync_opt .= '-Lprogtz ';
} else {
$sync_opt .= '-Liprogtz --out-format=%f%L '; # add notify of update
diff --git a/perl-xCAT/xCAT/Schema.pm b/perl-xCAT/xCAT/Schema.pm
index 35bcb91b7..e7b7b0d97 100755
--- a/perl-xCAT/xCAT/Schema.pm
+++ b/perl-xCAT/xCAT/Schema.pm
@@ -1188,6 +1188,9 @@ use xCAT::ExtTab;
"FQDNfirst: Fully Qualified Domain Name first. If set to 1/yes/enable, the /etc/hosts \n" .
" entries generated by 'makehosts' will put the FQDN before the PQDN(Partially \n" .
" Qualified Domain Name). Otherwise, the original behavior will be performed.\n\n" .
+"hierarchicalattrs: Table attributes(e.g. postscripts, postbootscripts) that will be\n".
+" included hierarchically. Attribute values for all the node's groups\n".
+" will be applied to the node in the groups' order except the repeat one.\n\n".
" -----------------------\n" .
"VIRTUALIZATION ATTRIBUTES\n" .
" -----------------------\n" .
diff --git a/perl-xCAT/xCAT/Table.pm b/perl-xCAT/xCAT/Table.pm
index 68205c876..3f9e39165 100644
--- a/perl-xCAT/xCAT/Table.pm
+++ b/perl-xCAT/xCAT/Table.pm
@@ -2554,16 +2554,25 @@ sub getNodeAttribs_nosub_returnany
my $attrib;
my $result;
-
+ my @hierarchy_attrs;
+ my $hierarchy_field = xCAT::TableUtils->get_site_attribute("hierarchicalattrs");
+ if ($hierarchy_field) {
+ @hierarchy_attrs = split(/,/, $hierarchy_field);
+ }
+
my $data = $results[0];
if(defined{$data}) { #if there was some data for the node, loop through and check it
foreach $result (@results) {
foreach $attrib (keys %attribsToDo) {
+ if (defined($result) && defined($result->{$attrib}) && $self->{tabname} ne 'nodelist'
+ && @hierarchy_attrs && grep (/^$attrib$/, @hierarchy_attrs) ) {
+ $result->{$attrib} .= ',+=NEXTRECORD';
+ }
#check each item in the results to see which attributes were satisfied
if(defined($result) && defined($result->{$attrib}) && $result->{$attrib} !~ $nextRecordAtEnd) {
delete $attribsToDo{$attrib};
- }
- }
+ }
+ }
}
}
@@ -2571,6 +2580,16 @@ sub getNodeAttribs_nosub_returnany
return @results;
}
+ if ($self->{tabname} eq 'nodelist') {
+ return @results;
+ }
+
+ # As self->nodelist is a weak reference, if error haddpens, log it.
+ if (!defined($self->{nodelist})) {
+ xCAT::MsgUtils->message("S","xcat Table: Unexpected error, nodelist object is undef.");
+ return undef;
+ }
+
#find the groups for this node
my ($nodeghash) = $self->{nodelist}->getAttribs({node => $node}, 'groups');
@@ -2578,7 +2597,7 @@ sub getNodeAttribs_nosub_returnany
unless (defined($nodeghash) && defined($nodeghash->{groups})) {
return @results;
}
-
+
my @nodegroups = split(/,/, $nodeghash->{groups});
my $group;
my @groupResults;
@@ -2601,8 +2620,10 @@ sub getNodeAttribs_nosub_returnany
#print "looking for attrib $attrib\n";
if(defined($groupResult->{$attrib})){
$attribsDone{$attrib} = 0;
-#print "found attArib $attrib = $groupResult->{$attrib}\n";
-#print "and results look like this: \n".Dumper(\@results)."\n\n\n";
+ # for hierarchy attribute, append attributes from all the node's group
+ if (@hierarchy_attrs && grep (/^$attrib$/, @hierarchy_attrs) ) {
+ $groupResult->{$attrib} .= ',+=NEXTRECORD';
+ }
foreach $result (@results){ #loop through our existing results to add or modify the value for this attribute
if(defined($result)) {
if(defined($result->{$attrib})) {
@@ -2639,7 +2660,6 @@ sub getNodeAttribs_nosub_returnany
}
}
else {#no results in the array so far
-#print "pushing for the first time. attr=$attrib groupResults=$groupResult->{$attrib}\n";
$toPush{$attrib} = $groupResult->{$attrib};
if($options{withattribution} && $attrib ne $nodekey){
$toPush{'!!xcatgroupattribution!!'}->{$attrib} = $group;
@@ -2685,6 +2705,13 @@ sub getNodeAttribs_nosub_returnany
for $result (@results) {
for my $key (keys %$result) {
$result->{$key} =~ s/\+=NEXTRECORD//g;
+ if (@hierarchy_attrs && grep (/^$key$/, @hierarchy_attrs) ) {
+ my @attribs = split(/,/, $result->{$key});
+ my %count;
+ # remove the repeat value
+ @attribs = grep { ++$count{ $_ } < 2; } @attribs;
+ $result->{$key} = join(',', @attribs);
+ }
}
}
@@ -3474,10 +3501,12 @@ sub close
my $self = shift;
#if ($self->{dbh}) { $self->{dbh}->disconnect(); }
#undef $self->{dbh};
- if ($self->{tabname} eq 'nodelist') {
- undef $self->{nodelist};
- } else {
- $self->{nodelist}->close();
+ if ($0 ne "xcatd: DB Access") {
+ if ($self->{tabname} eq 'nodelist') {
+ undef $self->{nodelist};
+ } else {
+ $self->{nodelist}->close();
+ }
}
}
diff --git a/perl-xCAT/xCAT/TableUtils.pm b/perl-xCAT/xCAT/TableUtils.pm
index 92267c25b..77d5393b7 100755
--- a/perl-xCAT/xCAT/TableUtils.pm
+++ b/perl-xCAT/xCAT/TableUtils.pm
@@ -1606,7 +1606,7 @@ sub checkCredFiles
$dir = "/etc/xcat/hostkeys";
if (-d $dir)
{
- my $file = "$dir/ssh_host_key.pub";
+ my $file = "$dir/ssh_host_rsa_key.pub";
if (-e $file)
{
my $file2 = "$dir/*.pub"; # all public keys
diff --git a/perl-xCAT/xCAT/Usage.pm b/perl-xCAT/xCAT/Usage.pm
index f7c60288e..14054ca94 100755
--- a/perl-xCAT/xCAT/Usage.pm
+++ b/perl-xCAT/xCAT/Usage.pm
@@ -215,7 +215,7 @@ my %usage = (
[vmphyslots=drc_index1,drc_index2...] [vmothersetting=hugepage:N,bsr:N]
[vmnics=vlan1,vlan2] [vmstorage=] [--vios]
For KVM
- mkvm noderange -m|--master mastername -s|--size disksize -f|--force
+ mkvm noderange [-s|--size disksize] [--mem memsize] [--cpus cpucount] [-f|--force]
For zVM
mkvm noderange directory_entry_file_path
mkvm noderange source_virtual_machine pool=disk_pool pw=multi_password",
diff --git a/perl-xCAT/xCAT/Utils.pm b/perl-xCAT/xCAT/Utils.pm
index c59db5e57..bd47dcfb2 100644
--- a/perl-xCAT/xCAT/Utils.pm
+++ b/perl-xCAT/xCAT/Utils.pm
@@ -3896,30 +3896,55 @@ sub servicemap{
my $path=undef;
my $postfix="";
my $retdefault=$svcname;
+ my $svcmgrcmd;
if($svcmgrtype == 0){
+ #for sysvinit
$path="/etc/init.d/";
+ $svcmgrcmd="service";
}elsif ($svcmgrtype == 1){
- $path="/usr/lib/systemd/system/";
+ #for systemd
+ #ubuntu 16.04 replace upstart with systemd,
+ #all the service unit files are placed under /lib/systemd/system/ on ubuntu
+ #all the service unit files are placed under /usr/lib/systemd/system/ on redhat and sles
+ #$path delimited with space
+ $path="/usr/lib/systemd/system/ /lib/systemd/system/";
$postfix=".service";
+ $svcmgrcmd="systemctl";
# $retdefault=$svcname.".service";
}elsif ($svcmgrtype == 2){
$path="/etc/init/";
$postfix=".conf";
+ $svcmgrcmd="initctl";
+ }
+
+ #check whether service management command is available
+ system "type $svcmgrcmd >/dev/null 2>&1";
+ if($? != 0){
+ return undef;
}
-
+ my @paths=split(" ",$path);
my $ret=undef;
if($svchash{$svcname}){
- foreach my $file (@{$svchash{$svcname}}){
- if(-e $path.$file.$postfix ){
- $ret=$file;
- last;
+ foreach my $file (@{$svchash{$svcname}}){
+ foreach my $ipath (@paths){
+ if(-e $ipath.$file.$postfix ){
+ $ret=$file;
+ last;
+ }
}
- }
+
+ if(defined $ret){
+ last;
+ }
+ }
}else{
- if(-e $path.$retdefault.$postfix){
- $ret=$retdefault;
- }
+ foreach my $ipath (@paths){
+ if(-e $ipath.$retdefault.$postfix){
+ $ret=$retdefault;
+ last;
+ }
+ }
}
return $ret;
diff --git a/perl-xCAT/xCAT/data/discinfo.pm b/perl-xCAT/xCAT/data/discinfo.pm
index 67b8738a0..e44fcdb6e 100755
--- a/perl-xCAT/xCAT/data/discinfo.pm
+++ b/perl-xCAT/xCAT/data/discinfo.pm
@@ -75,6 +75,8 @@ require Exporter;
"1411733344.616389" => "rhels6.6", #ppc64
"1435823078.283602" => "rhels6.7", #ppc64
"1435823078.298912" => "rhels6.7", #x86_64
+ "1460645249.800975" => "rhels6.8", #ppc64
+ "1460645249.825876" => "rhels6.8", #x86_64
"1399449226.171922" => "rhels7", #x86_64
"1399449226.155578" => "rhels7", #ppc64
"1424360759.989976" => "rhels7.1", #x86_64
diff --git a/xCAT-client/pods/man1/bmcdiscover.1.pod b/xCAT-client/pods/man1/bmcdiscover.1.pod
index f63a9edb2..09abbe40c 100644
--- a/xCAT-client/pods/man1/bmcdiscover.1.pod
+++ b/xCAT-client/pods/man1/bmcdiscover.1.pod
@@ -8,11 +8,11 @@ B [B<-?>|B<-h>|B<--help>]
B [B<-v>|B<--version>]
-B [B<-s> I] B<--range> I [B<-z>] [B<-w>] [B<-t>]
+B [B<-s> I] [B<-u> I] [B<-p> I] [B<-z>] [B<-w>] [B<-t>] B<--range> I
-B {B<-i>|B<--bmcip>} I {B<-u>|B<--bmcuser>} I {B<-p>|B<--bmcpasswd>} I B<--check>
+B B<-u> I B<-p> I B<-i> I B<--check>
-B {B<-i>|B<--bmcip>} I {B<-u>|B<--bmcuser>} I {B<-p>|B<--bmcpasswd>} I B<--ipsource>
+B [B<-u> I] [B<-p> I] B<-i> I B<--ipsource>
=head1 DESCRIPTION
@@ -61,13 +61,13 @@ BMC user name.
BMC user password.
-=item B<-c|--check>
+=item B<--check>
-Check
+Check BMC administrator User/Password.
=item B<--ipsource>
-BMC IP source
+Display the BMC IP configuration.
=item B<-h|--help>
@@ -104,7 +104,7 @@ Note: Input for IP range can be in the form: scanme.nmap.org, microsoft.com/24,
4. To check if the username or password is correct against the BMC:
- bmcdiscover -i 10.4.23.254 -u USERID -p PASSW0RD -c
+ bmcdiscover -i 10.4.23.254 -u USERID -p PASSW0RD --check
5. Get BMC IP Address source, DHCP Address or static Address
diff --git a/xCAT-client/pods/man1/lsvm.1.pod b/xCAT-client/pods/man1/lsvm.1.pod
index b42cc097d..a9843bb8b 100644
--- a/xCAT-client/pods/man1/lsvm.1.pod
+++ b/xCAT-client/pods/man1/lsvm.1.pod
@@ -1,6 +1,6 @@
=head1 NAME
-B - Lists partition profile information for HMC-, DFM-, IVM-, KVM-, Vmware- and zVM-managed nodes. For Power 775, it lists the LPARs' I/O slots information and CEC configuration.
+B - Lists partition profile information for HMC-, DFM-, IVM-, KVM-, VMware- and zVM-managed nodes. For Power 775, it lists the LPARs' I/O slots information and CEC configuration.
=head1 SYNOPSIS
@@ -18,6 +18,10 @@ B [B<-l>| B<--long>] B<--p775> I
B I
+=head2 For KVM and VMware
+
+B I
+
=head2 For zVM:
B I
@@ -44,9 +48,9 @@ The Memory Interleaving Mode has 3 valid options:
More information about this part, refer to the section Using the *vm commands to define partitions in xCAT DFM in the doc below.
XCAT_Power_775_Hardware_Management
-=head2 For KVM and Vmware
+=head2 For KVM and VMware
-The virtual machines that defined in the hypervisor I will be displayed. I only can be hypervisor. The type of the hypervisor should be set: hypervisor.type before running the lsvm.
+The virtual machines that defined in the hypervisor I will be displayed. I can only be hypervisor.
Note: Only the virtual machine which is in power on state can be listed by lsvm command.
diff --git a/xCAT-client/pods/man1/mkvm.1.pod b/xCAT-client/pods/man1/mkvm.1.pod
index 232598754..b4d4f0e19 100644
--- a/xCAT-client/pods/man1/mkvm.1.pod
+++ b/xCAT-client/pods/man1/mkvm.1.pod
@@ -26,7 +26,7 @@ B I [B I] [B I] [
=head2 For KVM:
-B I [B<-m|--master> I] [B<-s|--size> I] [B<--mem> I] [B<--cpus> I] [B<-f|--force>]
+B I [B<-s|--size> I] [B<--mem> I] [B<--cpus> I] [B<-f|--force>]
=head2 For Vmware:
diff --git a/xCAT-client/pods/man1/pasu.1.pod b/xCAT-client/pods/man1/pasu.1.pod
index 12ce672f3..cb60c5c54 100644
--- a/xCAT-client/pods/man1/pasu.1.pod
+++ b/xCAT-client/pods/man1/pasu.1.pod
@@ -4,9 +4,9 @@ B - run the ASU to many nodes in parallel
=head1 SYNOPSIS
-B [B<-V>] [B<-d>] [B<-n>] [B<-l> I] [B<-p> I] [B<-f> I] [B<-i> I] I I
+B [B<-V>] [B<-d>] [B<-l> I] [B<-p> I] [B<-f> I] [B<-i> I] I I
-B [B<-V>] [B<-d>] [B<-n>] [B<-l> I] [B<-p> I] [B<-f> I] [B<-i> I] B<-b> I I
+B [B<-V>] [B<-d>] [B<-l> I] [B<-p> I] [B<-f> I] [B<-i> I] B<-b> I I
B [B<-h> | B<--help>]
@@ -25,11 +25,6 @@ to confirm that the IMMs are configured properly.
=over 10
-=item B<-n|--nonodecheck>
-
-Do not send the noderange to xcatd to expand it into a list of nodes. Use the noderange exactly as it is specified
-to pasu. In this case, the noderange must be a simple list of comma-separated hostnames of the IMMs.
-
=item B<-l|--loginname> I
The username to use to connect to the IMMs. If not specified, the row in the xCAT B table with key "ipmi"
diff --git a/xCAT-genesis-builder/98-mlx.rules b/xCAT-genesis-builder/98-mlx.rules
deleted file mode 100644
index 6d7ccc953..000000000
--- a/xCAT-genesis-builder/98-mlx.rules
+++ /dev/null
@@ -1 +0,0 @@
-SUBSYSTEM=="pci", ATTRS{subsystem_vendor}=="0x15b3", ATTRS{class}=="0x020000", RUN+="/sbin/loadmlxeth"
diff --git a/xCAT-genesis-builder/buildrpm b/xCAT-genesis-builder/buildrpm
index b9a665cf3..66a89eb14 100755
--- a/xCAT-genesis-builder/buildrpm
+++ b/xCAT-genesis-builder/buildrpm
@@ -38,6 +38,7 @@ if [ $BUILDARCH = "x86_64" ]; then
sed -i 's/\/lib64\/libmenu.so.5//' $DRACUTMODDIR/install
sed -i 's/\/lib64\/libsysfs.so.2//' $DRACUTMODDIR/install
sed -i 's/\/usr\/sbin\/iprconfig//' $DRACUTMODDIR/install
+ sed -i '/hwdb.bin/ d' $DRACUTMODDIR/install
sed -i 's/instmods ipr//' $DRACUTMODDIR/installkernel
fi
if [ "$HOSTOS" = "mcp" ]; then
diff --git a/xCAT-genesis-builder/install b/xCAT-genesis-builder/install
index db5c9fa01..c5020fc42 100755
--- a/xCAT-genesis-builder/install
+++ b/xCAT-genesis-builder/install
@@ -588,8 +588,6 @@ inst "$moddir/restart" "/bin/restart"
inst "$moddir/dhclient.conf" "/etc/dhclient.conf"
inst "$moddir/dhclient-script" "/sbin/dhclient-script"
inst "$moddir/rsyslog.conf" "/etc/rsyslog.conf"
-inst "$moddir/98-mlx.rules" "/etc/udev/rules.d/98-mlx.rules"
-inst "$moddir/loadmlxeth" "/sbin/loadmlxeth"
dracut_install /sbin/rpc.statd /usr/sbin/sm-notify /etc/netconfig rpcbind /etc/host.conf /usr/sbin/rpc.idmapd
dracut_install ps free find #debug
inst_dir /var/lib/nfs
diff --git a/xCAT-genesis-builder/install.ubuntu b/xCAT-genesis-builder/install.ubuntu
index 061e16b95..a329cd0cc 100755
--- a/xCAT-genesis-builder/install.ubuntu
+++ b/xCAT-genesis-builder/install.ubuntu
@@ -620,9 +620,7 @@ inst "$moddir/dhclient.conf" "/etc/dhclient.conf"
inst "$moddir/dhclient-script" "/sbin/dhclient-script"
inst "$moddir/rsyslog.conf" "/etc/rsyslog.conf"
inst "$moddir/99-imm.rules" "/etc/udev/rules.d/99-imm.rules"
-inst "$moddir/98-mlx.rules" "/etc/udev/rules.d/98-mlx.rules"
inst "$moddir/setupimmnic" "/sbin/setupimmnic"
-inst "$moddir/loadmlxeth" "/sbin/loadmlxeth"
if [ -n $version12 ];then
dracut_install rpcbind
else
diff --git a/xCAT-genesis-builder/xCAT-genesis-base.spec b/xCAT-genesis-builder/xCAT-genesis-base.spec
index bb8e26795..f63951d8d 100755
--- a/xCAT-genesis-builder/xCAT-genesis-base.spec
+++ b/xCAT-genesis-builder/xCAT-genesis-base.spec
@@ -1,4 +1,4 @@
-%define version 2.11
+%define version 2.12
%ifarch i386 i586 i686 x86
%define tarch x86
%endif
diff --git a/xCAT-genesis-scripts/bin/bmcsetup b/xCAT-genesis-scripts/bin/bmcsetup
index 51d3e2f15..88513d726 100755
--- a/xCAT-genesis-scripts/bin/bmcsetup
+++ b/xCAT-genesis-scripts/bin/bmcsetup
@@ -99,7 +99,9 @@ elif [ "$IPMIMFG" == 20301 -o "$IPMIMFG" == 19046 ] ; then
let idev=0
IFS=','
for p in $BMCPORT; do
+ unset IFS
ipmitool -d $idev raw 0xc 1 1 0xc0 $p > /dev/null
+ IFS=','
# after this change, we need to watch and wait to see that it
# actually takes effect. On port change, the service processor
# does not migrate the network configuration over
diff --git a/xCAT-genesis-scripts/bin/doxcat b/xCAT-genesis-scripts/bin/doxcat
index 3ff63d83f..0042673b5 100755
--- a/xCAT-genesis-scripts/bin/doxcat
+++ b/xCAT-genesis-scripts/bin/doxcat
@@ -283,10 +283,11 @@ while :; do
destiny=''
dest=''
elif [ "$dest" = shell ]; then
- echo "Dropping to debug shell, exit to check for further action"
+ echo "Dropping to debug shell, exit to run next destiny"
destiny=''
dest=''
/bin/bash
+ /bin/nextdestiny $XCATMASTER:$XCATPORT
elif [ "$dest" = runcmd ]; then
destiny=`/bin/nextdestiny $XCATMASTER:$XCATPORT`
dest=`echo $destiny|awk -F= '{print $1}'`
diff --git a/xCAT-genesis-scripts/etc/udev/rules.d/98-mlx.rules b/xCAT-genesis-scripts/etc/udev/rules.d/98-mlx.rules
new file mode 100644
index 000000000..e73d51046
--- /dev/null
+++ b/xCAT-genesis-scripts/etc/udev/rules.d/98-mlx.rules
@@ -0,0 +1,2 @@
+SUBSYSTEM=="pci", ATTRS{subsystem_vendor}=="15b3", ATTRS{class}=="0x020000", RUN+="/sbin/loadmlxeth"
+SUBSYSTEM=="pci", ATTRS{subsystem_vendor}=="15b3", ATTRS{class}=="0x028000", RUN+="/sbin/loadmlxeth"
diff --git a/xCAT-genesis-builder/loadmlxeth b/xCAT-genesis-scripts/sbin/loadmlxeth
old mode 100755
new mode 100644
similarity index 100%
rename from xCAT-genesis-builder/loadmlxeth
rename to xCAT-genesis-scripts/sbin/loadmlxeth
diff --git a/xCAT-genesis-scripts/xCAT-genesis-scripts.spec b/xCAT-genesis-scripts/xCAT-genesis-scripts.spec
index ae6b9f845..e37fe4995 100755
--- a/xCAT-genesis-scripts/xCAT-genesis-scripts.spec
+++ b/xCAT-genesis-scripts/xCAT-genesis-scripts.spec
@@ -112,4 +112,6 @@ touch /etc/xcat/genesis-scripts-updated
%{rpminstallroot}/debian/rules
%{rpminstallroot}/etc/init.d/functions
%{rpminstallroot}/etc/udev/rules.d/99-imm.rules
+%{rpminstallroot}/etc/udev/rules.d/98-mlx.rules
%{rpminstallroot}/sbin/setupimmnic
+%{rpminstallroot}/sbin/loadmlxeth
diff --git a/xCAT-server/lib/xcat/plugins/aixinstall.pm b/xCAT-server/lib/xcat/plugins/aixinstall.pm
index bc678607b..f84a0d7f1 100644
--- a/xCAT-server/lib/xcat/plugins/aixinstall.pm
+++ b/xCAT-server/lib/xcat/plugins/aixinstall.pm
@@ -7738,7 +7738,7 @@ sub update_dd_boot
}
print DDBOOT $l;
}
- if ($l =~ /rmdev -l \${BASECUST_REMOVAL}/ && !$dontupdt5)
+ if ($l =~ /rmdev -l \$\{BASECUST_REMOVAL\}/ && !$dontupdt5)
{
print DDBOOT " #Remove ODM object definition\n";
print DDBOOT " odmdelete -o CuDv -q name=\${BASECUST_REMOVAL}\n";
diff --git a/xCAT-server/lib/xcat/plugins/bmcdiscover.pm b/xCAT-server/lib/xcat/plugins/bmcdiscover.pm
index c76f9347c..801b57046 100644
--- a/xCAT-server/lib/xcat/plugins/bmcdiscover.pm
+++ b/xCAT-server/lib/xcat/plugins/bmcdiscover.pm
@@ -113,9 +113,13 @@ sub bmcdiscovery_usage {
push @{ $rsp->{data} }, "Usage:";
push @{ $rsp->{data} }, "\tbmcdiscover [-?|-h|--help]";
push @{ $rsp->{data} }, "\tbmcdiscover [-v|--version]";
- push @{ $rsp->{data} }, "\tbmcdiscover [-s scan_method] --range ip_range [-z] [-w] [-t]";
- push @{ $rsp->{data} }, "\tbmcdiscover {-i|--bmcip} bmc_ip {-u|--bmcuser} bmc_user {-p|--bmcpasswd} bmc_password --check";
- push @{ $rsp->{data} }, "\tbmcdiscover {-i|--bmcip} bmc_ip {-u|--bmcuser} bmc_user {-p|--bmcpasswd} bmc_password --ipsource";
+ push @{ $rsp->{data} }, "\tbmcdiscover [-s scan_method] [-u bmc_user] [-p bmc_passwd] [-z] [-w] [-t] --range ip_range\n";
+
+ push @{ $rsp->{data} }, "\tCheck BMC administrator User/Password:\n";
+ push @{ $rsp->{data} }, "\t\tbmcdiscover -u bmc_user -p bmc_password -i bmc_ip --check\n";
+
+ push @{ $rsp->{data} }, "\tDisplay the BMC IP configuration:\n";
+ push @{ $rsp->{data} }, "\t\tbmcdiscover [-u bmc_user] [-p bmc_passwd] -i bmc_ip --ipsource";
xCAT::MsgUtils->message( "I", $rsp, $::CALLBACK );
return 0;
@@ -197,43 +201,43 @@ sub bmcdiscovery_processargs {
return 1;
}
+ #
+ # Get the default bmc account from passwd table
+ #
+ ($bmc_user, $bmc_pass) = bmcaccount_from_passwd();
+ # overwrite the default user/pass with what is passed in
+ if ($::opt_U) {
+ $bmc_user = $::opt_U;
+ }
+ if ($::opt_P) {
+ $bmc_pass = $::opt_P;
+ }
+
#########################################
# Option -s -r should be together
######################################
if ( defined($::opt_R) )
{
-
- ######################################
- # check if there is nmap or not
- ######################################
- if ( -x '/usr/bin/nmap' )
- {
- $nmap_path="/usr/bin/nmap";
- }
- elsif ( -x '/usr/local/bin/nmap' )
- {
- $nmap_path="/usr/local/bin/nmap";
- }
- else
- {
- my $rsp;
- push @{ $rsp->{data} }, "\tThere is no nmap in /usr/bin/ or /usr/local/bin/. \n ";
- xCAT::MsgUtils->message( "E", $rsp, $::CALLBACK );
- return 1;
-
- }
- ($bmc_user, $bmc_pass) = bmcaccount_from_passwd();
- if ($::opt_P) {
- $bmc_pass = $::opt_P;
- if (!$::opt_U) {
- $bmc_user = '';
- } else {
- $bmc_user = $::opt_U;
- }
- }
- scan_process($::opt_M,$::opt_R,$::opt_Z,$::opt_W,$request_command);
-
- return 0;
+ ######################################
+ # check if there is nmap or not
+ ######################################
+ if ( -x '/usr/bin/nmap' )
+ {
+ $nmap_path="/usr/bin/nmap";
+ }
+ elsif ( -x '/usr/local/bin/nmap' )
+ {
+ $nmap_path="/usr/local/bin/nmap";
+ }
+ else
+ {
+ my $rsp;
+ push @{ $rsp->{data} }, "\tThere is no nmap in /usr/bin/ or /usr/local/bin/. \n ";
+ xCAT::MsgUtils->message( "E", $rsp, $::CALLBACK );
+ return 1;
+ }
+ scan_process($::opt_M,$::opt_R,$::opt_Z,$::opt_W,$request_command);
+ return 0;
}
if ( defined($::opt_C) && defined($::opt_S) ) {
@@ -244,19 +248,20 @@ sub bmcdiscovery_processargs {
return 2;
}
- ####################################################
- # --check option, requires -i and -p to be specified
- ####################################################
+ #########################################################
+ # --check option, requires -i, -u, and -p to be specified
+ #########################################################
if ( defined($::opt_C) ) {
- if ( defined($::opt_P) && defined($::opt_I) ) {
- my $option_u = defined $::opt_U ? $::opt_U : "none";
- my $res=check_auth_process($::opt_I,$option_u,$::opt_P);
+ if ( defined($::opt_P) && defined($::opt_U) && defined($::opt_I) ) {
+ my $res=check_auth_process($::opt_I,$::opt_U,$::opt_P);
return $res;
}
else {
my $msg = "";
if (!defined($::opt_I)) {
$msg = "The check option requires a BMC IP. Specify the IP using the -i|--bmcip option.";
+ } elsif (!defined($::opt_U)) {
+ $msg = "The check option requires a user. Specify the user with the -u|--bmcuser option.";
} elsif (!defined($::opt_P)) {
$msg = "The check option requires a password. Specify the password with the -p|--bmcpasswd option.";
}
@@ -271,9 +276,8 @@ sub bmcdiscovery_processargs {
# --ipsource option, requires -i, -p to be specified
####################################################
if ( defined($::opt_S) ) {
- if ( defined($::opt_P) && defined($::opt_I) ) {
- my $option_u = defined $::opt_U ? $::opt_U : "none";
- my $res=get_bmc_ip_source($::opt_I,$option_u,$::opt_P);
+ if ( defined($bmc_user) && defined($bmc_pass) && defined($::opt_I) ) {
+ my $res=get_bmc_ip_source($::opt_I,$bmc_user,$bmc_pass);
return $res;
}
else {
@@ -439,6 +443,7 @@ sub scan_process{
my $callback = $::CALLBACK;
my $children; # The number of child process
my %sp_children; # Record the pid of child process
+ my $bcmd;
my $sub_fds = new IO::Select; # Record the parent fd for each child process
if ( !defined($method) )
@@ -451,7 +456,18 @@ sub scan_process{
# get live ip list
###########################################################
if ( $method eq "nmap" ) {
- my $bcmd = join(" ",$nmap_path," -sn -n $range | grep for |cut -d ' ' -f5 |tr -s '\n' ' ' ");
+ #check nmap version first
+ my $ccmd = "$nmap_path -V | grep version";
+ my $version_result = xCAT::Utils->runcmd($ccmd, 0);
+ my @version_array = split / /, $version_result;
+ my $nmap_version = $version_array[2];
+ # the output of nmap is different for version under 4.75
+ if (xCAT::Utils->version_cmp($nmap_version,"4.75") <= 0) {
+ $bcmd = join(" ",$nmap_path," -sP -n $range | grep Host |cut -d ' ' -f2 |tr -s '\n' ' ' ");
+ } else {
+ $bcmd = join(" ",$nmap_path," -sn -n $range | grep for |cut -d ' ' -f5 |tr -s '\n' ' ' ");
+ }
+
$ip_list = xCAT::Utils->runcmd("$bcmd", -1);
if ($::RUNCMD_RC != 0) {
my $rsp = {};
@@ -884,23 +900,25 @@ sub bmcdiscovery_ipmi {
$node =~ s/(.*)/\L$1/g;
}
} elsif ($output =~ /error : unauthorized name/){
- xCAT::MsgUtils->message("I", {data=>["Warning: bmc username is incorrect for $node"]}, $::CALLBACK);
+ xCAT::MsgUtils->message("E", {data=>["BMC username is incorrect for $ip"]}, $::CALLBACK);
+ return 1;
} elsif ($output =~ /RAKP \S* \S* is invalid/) {
- xCAT::MsgUtils->message("I", {data=>["Warning: bmc password is incorrect for $node"]}, $::CALLBACK);
+ xCAT::MsgUtils->message("E", {data=>["BMC password is incorrect for $ip"]}, $::CALLBACK);
+ return 1;
}
- if ( defined($opz) || defined($opw) )
- {
- format_stanza($node, $ip);
- if (defined($opw))
- {
- write_to_xcatdb($node, $ip,$request_command);
- }
- }
- else{
- my $rsp = {};
- push @{ $rsp->{data} }, "$ip";
- xCAT::MsgUtils->message("I", $rsp, $::CALLBACK);
- }
+ if ( defined($opz) || defined($opw) )
+ {
+ format_stanza($node, $ip);
+ if (defined($opw))
+ {
+ write_to_xcatdb($node, $ip,$request_command);
+ }
+ }
+ else{
+ my $rsp = {};
+ push @{ $rsp->{data} }, "$ip";
+ xCAT::MsgUtils->message("I", $rsp, $::CALLBACK);
+ }
}
}
diff --git a/xCAT-server/lib/xcat/plugins/conserver.pm b/xCAT-server/lib/xcat/plugins/conserver.pm
index 9d07c9656..4522f2028 100644
--- a/xCAT-server/lib/xcat/plugins/conserver.pm
+++ b/xCAT-server/lib/xcat/plugins/conserver.pm
@@ -191,7 +191,7 @@ sub docfheaders {
my $idx = 0;
my $skip = 0;
my @meat = grep(!/^#/,@$content);
- unless (grep(/^config \* {/,@meat)) {
+ unless (grep(/^config \* \{/,@meat)) {
# do not add the ssl configurations
# if conserver is not compiled with ssl support
my $cmd = "console -h 2>&1";
diff --git a/xCAT-server/lib/xcat/plugins/ddns.pm b/xCAT-server/lib/xcat/plugins/ddns.pm
index 0607c54eb..fd061ffb8 100755
--- a/xCAT-server/lib/xcat/plugins/ddns.pm
+++ b/xCAT-server/lib/xcat/plugins/ddns.pm
@@ -1060,35 +1060,35 @@ sub update_namedconf {
my $skip=0;
do {
#push @newnamed,"\t\t//listen-on-v6 { any; };\n";
- if ($ctx->{forwarders} and $line =~ /forwarders {/) {
+ if ($ctx->{forwarders} and $line =~ /forwarders \{/) {
push @newnamed,"\tforwarders \{\n";
$skip=1;
foreach (@{$ctx->{forwarders}}) {
push @newnamed,"\t\t".$_.";\n";
}
push @newnamed,"\t};\n";
- } elsif ($ctx->{slaves} and $line =~ /allow-transfer {/) {
+ } elsif ($ctx->{slaves} and $line =~ /allow-transfer \{/) {
push @newnamed,"\tallow-transfer \{\n";
$skip=1;
foreach (@{$ctx->{slaves}}) {
push @newnamed,"\t\t".$_.";\n";
}
push @newnamed,"\t};\n";
- } elsif ($ctx->{slaves} and $line =~ /also-notify {/) {
+ } elsif ($ctx->{slaves} and $line =~ /also-notify \{/) {
push @newnamed,"\talso-notify \{\n";
$skip=1;
foreach (@{$ctx->{slaves}}) {
push @newnamed,"\t\t".$_.";\n";
}
push @newnamed,"\t};\n";
- } elsif (defined($ctx->{dnslistenonifs}) and defined($ctx->{dnslistenonifs}->{ipv4}) and $line =~ /listen-on {/) {
+ } elsif (defined($ctx->{dnslistenonifs}) and defined($ctx->{dnslistenonifs}->{ipv4}) and $line =~ /listen-on \{/) {
push @newnamed,"\tlisten-on \{\n";
$skip=1;
foreach (@{$ctx->{dnslistenonifs}->{ipv4}}) {
push @newnamed,"\t\t".$_.";\n";
}
push @newnamed,"\t};\n";
- } elsif (defined($ctx->{dnslistenonifs}) and defined($ctx->{dnslistenonifs}->{ipv6}) and $line =~ /listen-on-v6 {/) {
+ } elsif (defined($ctx->{dnslistenonifs}) and defined($ctx->{dnslistenonifs}->{ipv6}) and $line =~ /listen-on-v6 \{/) {
push @newnamed,"\tlisten-on-v6 \{\n";
$skip=1;
foreach (@{$ctx->{dnslistenonifs}->{ipv6}}) {
diff --git a/xCAT-server/lib/xcat/plugins/hosts.pm b/xCAT-server/lib/xcat/plugins/hosts.pm
index bf5760d2c..8f64c8913 100755
--- a/xCAT-server/lib/xcat/plugins/hosts.pm
+++ b/xCAT-server/lib/xcat/plugins/hosts.pm
@@ -87,6 +87,7 @@ sub addnode
# we're processing the nics table and we found an
# existing entry for this ip so just add this
# ode name as an alias for the existing entry
+ chomp($hosts[$idx]);
my ($hip, $hnode, $hdom, $hother)= split(/ /, $hosts[$idx]);
# at this point "othernames", if any is just a space
diff --git a/xCAT-server/lib/xcat/plugins/ipmi.pm b/xCAT-server/lib/xcat/plugins/ipmi.pm
index 9e0faf0b0..72217b903 100644
--- a/xCAT-server/lib/xcat/plugins/ipmi.pm
+++ b/xCAT-server/lib/xcat/plugins/ipmi.pm
@@ -2666,8 +2666,22 @@ sub got_backup_imm_builddate {
$fru->desc("Backup IMM Version");
$fru->value($sessdata->{backupimmversion}." (".$sessdata->{backupimmbuild}." ".$sessdata->{backupimmdate}.")");
$sessdata->{fru_hash}->{backupimm} = $fru;
- }
+ get_imm_property(property=>"/v2/ibmc/trusted_buildid",callback=>\&got_trusted_imm,sessdata=>$sessdata);
+ } else {
initfru_with_mprom($sessdata);
+ }
+}
+sub got_trusted_imm {
+ my %res = @_;
+ my $sessdata = $res{sessdata};
+ if ($res{data}) {
+ my $fru = FRU->new();
+ $fru->rec_type("bios,uefi,firmware");
+ $fru->desc("Trusted IMM Build");
+ $fru->value($res{data});
+ $sessdata->{fru_hash}->{trustedimm} = $fru;
+ }
+ initfru_with_mprom($sessdata);
}
sub got_fpga_version {
my %res = @_;
@@ -3396,10 +3410,15 @@ sub readcurrfrudevice {
}
my @data = @{$rsp->{data}};
if ($data[0] != $sessdata->{currfruchunk}) {
- add_fruhash($sessdata);
- my $text = "Received incorrect data from BMC for FRU ID: " . $sessdata->{currfruid};
- xCAT::SvrUtils::sendmsg($text,$callback,$sessdata->{node},%allerrornodes);
- return;
+ # Fix FRU 43,48 and 49 for GRS server that they can not return as much data as shall return
+ if ($data[0] gt 0) {
+ $sessdata->{currfrudone}=1;
+ } else {
+ my $text = "Received incorrect data from BMC for FRU ID: " . $sessdata->{currfruid};
+ xCAT::SvrUtils::sendmsg($text,$callback,$sessdata->{node},%allerrornodes);
+ add_fruhash($sessdata);
+ return;
+ }
}
shift @data;
push @{$sessdata->{currfrudata}},@data;
diff --git a/xCAT-server/lib/xcat/plugins/kvm.pm b/xCAT-server/lib/xcat/plugins/kvm.pm
index dd881b5d2..bc8e305fb 100755
--- a/xCAT-server/lib/xcat/plugins/kvm.pm
+++ b/xCAT-server/lib/xcat/plugins/kvm.pm
@@ -79,7 +79,7 @@ sub handled_commands {
#rvitals => 'nodehm:mgt',
#rinv => 'nodehm:mgt',
getrvidparms => 'nodehm:mgt',
- lsvm => 'hypervisor:type',
+ lsvm => 'nodehm:mgt=ipmi',
rbeacon => 'nodehm:mgt',
revacuate => 'hypervisor:type',
vmstatenotify => 'hypervisor:type',
@@ -1751,9 +1751,29 @@ sub rmvm {
my $disktype = $disk->parentNode()->getAttribute("device");
if ($disktype eq "cdrom") { next; }
my $file = $disk->getAttribute("file");
- my $vol = $hypconn->get_storage_volume_by_path($file);
- if ($vol) {
- $vol->delete();
+
+ # try to check the existence first, if cannot find, do nothing.
+ # we do retry because we found sometimes the delete might fail
+ my $retry = 0;
+ my $vol;
+ while ($retry < 10) {
+ eval { $vol = $hypconn->get_storage_volume_by_path($file); };
+ if ($@) {
+ # Cannot find volumn, then stop delete
+ xCAT::MsgUtils->trace(0, "e", "kvm: $@") if ($retry == 0);
+ last;
+ }
+ if ($vol) {
+ eval {
+ # Need to call get_info() before deleting a volume, without that, delete() will sometimes fail. Issue #455
+ $vol->get_info();
+ $vol->delete();
+ };
+ if ($@) {
+ xCAT::MsgUtils->trace(0, "e", "kvm: $@");
+ }
+ }
+ $retry++;
}
}
}
diff --git a/xCAT-server/lib/xcat/plugins/mknb.pm b/xCAT-server/lib/xcat/plugins/mknb.pm
index 8f2a9be2d..565872b12 100644
--- a/xCAT-server/lib/xcat/plugins/mknb.pm
+++ b/xCAT-server/lib/xcat/plugins/mknb.pm
@@ -120,14 +120,12 @@ sub process_request {
chmod(0700,$tempdir."$sshdir");
copy("/root/.ssh/id_rsa.pub","$tempdir$sshdir/authorized_keys");
chmod(0600,"$tempdir$sshdir/authorized_keys");
- if (not $invisibletouch and -r "/etc/xcat/hostkeys/ssh_host_key") {
- copy("/etc/xcat/hostkeys/ssh_host_key","$tempdir/etc/ssh_host_key");
+ if (not $invisibletouch and -r "/etc/xcat/hostkeys/ssh_host_rsa_key") {
copy("/etc/xcat/hostkeys/ssh_host_rsa_key","$tempdir/etc/ssh_host_rsa_key");
copy("/etc/xcat/hostkeys/ssh_host_dsa_key","$tempdir/etc/ssh_host_dsa_key");
chmod(0600,<$tempdir/etc/ssh_*>);
}
- unless ($invisibletouch or -r "$tempdir/etc/ssh_host_key") {
- system("ssh-keygen -t rsa1 -f $tempdir/etc/ssh_host_key -C '' -N ''");
+ unless ($invisibletouch or -r "$tempdir/etc/ssh_host_rsa_key") {
system("ssh-keygen -t rsa -f $tempdir/etc/ssh_host_rsa_key -C '' -N ''");
system("ssh-keygen -t dsa -f $tempdir/etc/ssh_host_dsa_key -C '' -N ''");
}
@@ -200,17 +198,13 @@ CREAT_CONF_FILE:
chmod(0755,"$tftpdir/xcat/xnba/nets");
mkpath("$tftpdir/pxelinux.cfg");
chmod(0755,"$tftpdir/pxelinux.cfg");
- if (! -r "$tftpdir/pxelinux.0") {
- unless (-r "/usr/lib/syslinux/pxelinux.0" or -r "/usr/share/syslinux/pxelinux.0") {
- $callback->({error=>["Unable to find pxelinux.0 "],errorcode=>[1]});
- return;
- }
- if (-r "/usr/lib/syslinux/pxelinux.0") {
- copy("/usr/lib/syslinux/pxelinux.0","$tftpdir/pxelinux.0");
- } else {
- copy("/usr/share/syslinux/pxelinux.0","$tftpdir/pxelinux.0");
- }
- chmod(0644,"$tftpdir/pxelinux.0");
+ if (-r "/usr/lib/syslinux/pxelinux.0") {
+ copy("/usr/lib/syslinux/pxelinux.0","$tftpdir/pxelinux.0");
+ } elsif (-r "/usr/share/syslinux/pxelinux.0") {
+ copy("/usr/share/syslinux/pxelinux.0","$tftpdir/pxelinux.0");
+ }
+ if (-r "$tftpdir/pxelinux.0") {
+ chmod(0644,"$tftpdir/pxelinux.0");
}
} elsif ($arch =~ /ppc/) {
mkpath("$tftpdir/pxelinux.cfg/p/");
diff --git a/xCAT-server/lib/xcat/plugins/nodediscover.pm b/xCAT-server/lib/xcat/plugins/nodediscover.pm
index 080e6298d..1c3372856 100644
--- a/xCAT-server/lib/xcat/plugins/nodediscover.pm
+++ b/xCAT-server/lib/xcat/plugins/nodediscover.pm
@@ -371,8 +371,11 @@ sub process_request {
$callback->({error=> ["The node [$node] should have a correct IP address which belongs to the management network."], errorcode=>["1"]});
return;
}
- # Other arch such as IBM system x need also to go into this function.
- xCAT::Utils->cleanup_for_powerLE_hardware_discovery($request, $doreq);
+ if ($request->{arch}->[0] =~ /ppc/ and $request->{platform}->[0] =~ /PowerNV/) {
+ # This is a slow thing to do, and frequently breaks things thoroughly
+ xCAT::Utils->cleanup_for_powerLE_hardware_discovery($request, $doreq);
+ }
+
my $restartstring = "restart";
if (scalar @forcenics > 0) {
diff --git a/xCAT-server/lib/xcat/plugins/sles.pm b/xCAT-server/lib/xcat/plugins/sles.pm
index 66bfe6527..b3d501559 100644
--- a/xCAT-server/lib/xcat/plugins/sles.pm
+++ b/xCAT-server/lib/xcat/plugins/sles.pm
@@ -1070,6 +1070,11 @@ sub mkinstall
and -r "$pkgdir/1/boot/ppc64le/linux"
and -r "$pkgdir/1/boot/ppc64le/initrd"
)
+ or (
+ $arch eq "ppc64"
+ and -r "$pkgdir/1/suseboot/linux64"
+ and -r "$pkgdir/1/suseboot/initrd64"
+ )
or ($arch =~ /ppc/ and -r "$pkgdir/1/suseboot/inst64")
)
{
@@ -1120,12 +1125,25 @@ sub mkinstall
xCAT::MsgUtils->trace($verbose_on_off,"d","sles->mkinstall: copy initrd.img and linux to $tftppath");
}
}
- elsif ($arch =~ /ppc/)
- {
+ elsif($arch eq "ppc64"){
unless ($noupdateinitrd) {
- copy("$pkgdir/1/suseboot/inst64", "$tftppath");
- @dd_drivers = &insert_dd($callback, $os, $arch, "$tftppath/inst64", undef, $driverupdatesrc, $netdrivers, $osupdir, $ignorekernelchk);
- xCAT::MsgUtils->trace($verbose_on_off,"d","sles->mkinstall: copy inst64 to $tftppath");
+ if(-r "$pkgdir/1/suseboot/linux64" and -r "$pkgdir/1/suseboot/initrd64"){
+ #from sles11.3, suseboot/linux64 and suseboot/initrd64 are used for diskful
+ #network installation
+ #the previous suseboot/inst64 can not be run on Power8 BE
+ copy("$pkgdir/1/suseboot/linux64", "$tftppath");
+ copy("$pkgdir/1/suseboot/initrd64", "$tftppath");
+ #TODO: need to verify whether initrd64 and linux64 can be inserted into initrd
+ #@dd_drivers = &insert_dd($callback, $os, $arch,"$tftppath/initrd64" ,"$tftppath/linux64", undef, $driverupdatesrc, $netdrivers, $osupdir, $ignorekernelchk);
+ xCAT::MsgUtils->trace($verbose_on_off,"d","sles->mkinstall: copy initrd64 and linux64 to $tftppath");
+ }
+ elsif(-r "$pkgdir/1/suseboot/inst64"){
+ #suseboot/inst64 is used for network installation before sles11.3
+ #suseboot/inst64 can not be run on Power8 BE
+ copy("$pkgdir/1/suseboot/inst64", "$tftppath");
+ @dd_drivers = &insert_dd($callback, $os, $arch, "$tftppath/inst64", undef, $driverupdatesrc, $netdrivers, $osupdir, $ignorekernelchk);
+ xCAT::MsgUtils->trace($verbose_on_off,"d","sles->mkinstall: copy inst64 to $tftppath");
+ }
}
}
}
@@ -1318,21 +1336,40 @@ sub mkinstall
kcmdline => $kcmdline
}
);
- }
- elsif ($arch =~ /ppc/)
+ }
+ elsif ($arch eq "ppc64")
{
- $kernelpath = "$rtftppath/inst64";
- xCAT::MsgUtils->trace($verbose_on_off,"d","sles->mkinstall: kcmdline=$kcmdline kernal=$kernelpath initrd=");
- $bptab->setNodeAttribs(
- $node,
- {
- kernel => $kernelpath,
- initrd => "",
- kcmdline => $kcmdline
- }
- );
+ if(-r "$tftppath/linux64" and -r "$tftppath/initrd64"){
+ #from sles11.3, suseboot/linux64 and suseboot/initrd64 are used for diskful
+ #network installation
+ #the previous suseboot/inst64 can not be run on Power8 BE
+ $kernelpath = "$rtftppath/linux64";
+ $initrdpath = "$rtftppath/initrd64";
+ xCAT::MsgUtils->trace($verbose_on_off,"d","sles->mkinstall: kcmdline=$kcmdline kernal=$kernelpath initrd=$initrdpath");
+ $bptab->setNodeAttribs(
+ $node,
+ {
+ kernel => $kernelpath,
+ initrd => $initrdpath,
+ kcmdline => $kcmdline
+ }
+ );
+ }
+ elsif(-r "$tftppath/inst64"){
+ #suseboot/inst64 is used for network installation before sles11.3
+ #suseboot/inst64 can not be run on Power8 BE
+ $kernelpath = "$rtftppath/inst64";
+ xCAT::MsgUtils->trace($verbose_on_off,"d","sles->mkinstall: kcmdline=$kcmdline kernal=$kernelpath initrd=");
+ $bptab->setNodeAttribs(
+ $node,
+ {
+ kernel => $kernelpath,
+ initrd => "",
+ kcmdline => $kcmdline
+ }
+ );
+ }
}
-
}
else
{
diff --git a/xCAT-server/lib/xcat/plugins/switchdiscover.pm b/xCAT-server/lib/xcat/plugins/switchdiscover.pm
index cde703e9d..f2ffb8257 100644
--- a/xCAT-server/lib/xcat/plugins/switchdiscover.pm
+++ b/xCAT-server/lib/xcat/plugins/switchdiscover.pm
@@ -37,10 +37,11 @@ my %global_switch_type = (
mellanox => "Mellanox",
MLNX => "Mellanox",
MELLAN => "Mellanox",
- IBM => "BNT",
+ IBM => "BNT"
);
+
#-------------------------------------------------------------------------------
=head1 xCAT_plugin:switchdiscover
=head2 Package Description
@@ -423,7 +424,7 @@ sub process_request {
if (!$display_done) {
#display header
- $format = "%-12s\t%-15s\t%-40.50s\t%-12s";
+ $format = "%-12s\t%-20s\t%-50s\t%-12s";
$header = sprintf $format, "ip", "name","vendor", "mac";
send_msg(\%request, 0, $header);
my $sep = "------------";
@@ -801,8 +802,10 @@ sub nmap_scan {
sub snmp_scan {
my $request = shift;
my $ccmd;
+ my $result;
my $switches;
my $counter = 0;
+ my $nmap_version;
# snmpwalk command has to be available for snmp_scan
if (-x "/usr/bin/snmpwalk" ){
@@ -819,13 +822,30 @@ sub snmp_scan {
##################################################
my $ranges = get_ip_ranges($request);
+ $ccmd = "nmap -V | grep version";
+ $result = xCAT::Utils->runcmd($ccmd, 0);
+ my @version_array = split / /, $result;
+ $nmap_version = $version_array[2];
+ if (exists($globalopt{verbose})) {
+ send_msg($request, 0, "version of nmap: $nmap_version\n");
+ }
+
#use nmap to find if snmp port is enabled
- $ccmd = "/usr/bin/nmap -P0 -v -sU -p 161 -oA snmp_scan @$ranges | grep 'open port 161' ";
+ # only open port will be scan
+ # currently, we know nmap version 4.75 has different output for snmp_scan
+ # command.
+ # for version 4.75, the line as :"Host 10.4.25.1 appears to be up ... good."
+ # other higher version has line like this: "Discovered open port 161/udp on 10.4.25.1"
+ if (xCAT::Utils->version_cmp($nmap_version,"4.75") <= 0) {
+ $ccmd = "/usr/bin/nmap -P0 -v -sU -p 161 -oA snmp_scan @$ranges | grep up | grep good ";
+ } else {
+ $ccmd = "/usr/bin/nmap -P0 -v -sU -p 161 -oA snmp_scan @$ranges | grep 'open port 161' ";
+ }
if (exists($globalopt{verbose})) {
send_msg($request, 0, "Process command: $ccmd\n");
}
- my $result = xCAT::Utils->runcmd($ccmd, 0);
+ $result = xCAT::Utils->runcmd($ccmd, 0);
if ($::RUNCMD_RC != 0)
{
send_msg($request, 1, "Could not process this command: $ccmd" );
@@ -840,11 +860,14 @@ sub snmp_scan {
}
my @lines = split /\n/, $result;
- # each line like this: "Discovered open port 161/udp on 10.4.25.1"
- # only open port will be scan
foreach my $line (@lines) {
my @array = split / /, $line;
- my $ip = $array[5];
+ my $ip;
+ if (xCAT::Utils->version_cmp($nmap_version,"4.75") <= 0) {
+ $ip = $array[1];
+ } else {
+ $ip = $array[5];
+ }
if (exists($globalopt{verbose})) {
send_msg($request, 0, "Run snmpwalk command to get information for $ip");
}
@@ -885,7 +908,9 @@ sub get_snmpvendorinfo {
my $snmpwalk_vendor;
- my $ccmd = "snmpwalk -Os -v1 -c public $ip sysDescr.0";
+ #Ubuntu only takes OID
+ #my $ccmd = "snmpwalk -Os -v1 -c public $ip sysDescr.0";
+ my $ccmd = "snmpwalk -Os -v1 -c public $ip 1.3.6.1.2.1.1.1";
if (exists($globalopt{verbose})) {
send_msg($request, 0, "Process command: $ccmd\n");
}
@@ -922,7 +947,10 @@ sub get_snmpmac {
my $ip = shift;
my $mac;
- my $ccmd = "snmpwalk -Os -v1 -c public $ip ipNetToMediaPhysAddress | grep $ip";
+ #Ubuntu only takes OID
+ #my $ccmd = "snmpwalk -Os -v1 -c public $ip ipNetToMediaPhysAddress | grep $ip";
+ my $ccmd = "snmpwalk -Os -v1 -c public $ip 1.3.6.1.2.1.4.22.1.2 | grep $ip";
+
if (exists($globalopt{verbose})) {
send_msg($request, 0, "Process command: $ccmd\n");
}
@@ -937,6 +965,10 @@ sub get_snmpmac {
}
my ($desc,$mac) = split /: /, $result;
+ #trim the white space at begin and end of mac
+ $mac =~ s/^\s+|\s+$//g;
+ #replace space to :
+ $mac =~ tr/ /:/;
if (exists($globalopt{verbose})) {
send_msg($request, 0, "switch mac = $mac\n" );
@@ -959,7 +991,9 @@ sub get_snmphostname {
my $ip = shift;
my $hostname;
- my $ccmd = "snmpwalk -Os -v1 -c public $ip sysName";
+ #Ubuntu only takes OID
+ #my $ccmd = "snmpwalk -Os -v1 -c public $ip sysName";
+ my $ccmd = "snmpwalk -Os -v1 -c public $ip 1.3.6.1.2.1.1.5";
if (exists($globalopt{verbose})) {
send_msg($request, 0, "Process command: $ccmd\n");
}
diff --git a/xCAT-server/sbin/xcatconfig b/xCAT-server/sbin/xcatconfig
index 9e84e8ed8..099a3e06c 100755
--- a/xCAT-server/sbin/xcatconfig
+++ b/xCAT-server/sbin/xcatconfig
@@ -949,19 +949,10 @@ sub genSSHNodeHostKey
# generate new hostkeys
#
xCAT::MsgUtils->message('I', "Generating new node hostkeys...");
- xCAT::MsgUtils->message('I', "Generating SSH1 RSA Key...");
- my $cmd =
- "/usr/bin/ssh-keygen -t rsa1 -f /etc/xcat/hostkeys/ssh_host_key -C '' -N ''";
- my $outref = xCAT::Utils->runcmd("$cmd", 0);
- if ($::RUNCMD_RC != 0)
- {
- xCAT::MsgUtils->message('E', "Could not generate SSH1 RSA key.");
- }
-
xCAT::MsgUtils->message('I', "Generating SSH2 RSA Key...");
- $cmd =
+ my $cmd =
"/usr/bin/ssh-keygen -t rsa -f /etc/xcat/hostkeys/ssh_host_rsa_key -C '' -N ''";
- $outref = xCAT::Utils->runcmd("$cmd", 0);
+ my $outref = xCAT::Utils->runcmd("$cmd", 0);
if ($::RUNCMD_RC != 0)
{
xCAT::MsgUtils->message('E', "Could not generate SSH2 RSA key.");
@@ -1172,6 +1163,7 @@ sub initDB
$chtabcmds .= "$::XCATROOT/sbin/chtab key=dhcplease site.value=43200;";
$chtabcmds .= "$::XCATROOT/sbin/chtab key=auditnosyslog site.value=0;";
$chtabcmds .= "$::XCATROOT/sbin/chtab key=xcatsslversion site.value=TLSv1;";
+ $chtabcmds .= "$::XCATROOT/sbin/chtab key=auditskipcmds site.value=ALL;";
#$chtabcmds .= "$::XCATROOT/sbin/chtab key=useflowcontrol site.value=yes;"; # need to fix 4031
if ($::osname eq 'AIX')
diff --git a/xCAT-server/sbin/xcatd b/xCAT-server/sbin/xcatd
index 407d68bee..6ba83ae57 100644
--- a/xCAT-server/sbin/xcatd
+++ b/xCAT-server/sbin/xcatd
@@ -585,13 +585,13 @@ sub do_discovery_process {
populate_vpd_hash();
populate_mp_hash();
while (not $quit) {
+ my $msg = fd_retrieve($broker);
if ((time()-$vintage)> 15) {
populate_site_hash();
populate_vpd_hash();
populate_mp_hash();
$vintage = time();
} # site table reread every 15 second
- my $msg = fd_retrieve($broker);
my $data;
my $client;
my $clientn;
@@ -616,7 +616,7 @@ sub do_discovery_process {
# xcatrequest xml, so go ahead and decompress it
my $bigdata;
IO::Uncompress::Gunzip::gunzip(\$data,\$bigdata);
- $data = $bigdata
+ $data = $bigdata;
}
my $req = eval { XMLin($data, SuppressEmpty=>undef,ForceArray=>1) };
if ($req and $req->{command} and ($req->{command}->[0] eq "findme" and $sport < 1000)) { # only consider priveleged port requests to start with
@@ -962,7 +962,6 @@ $SIG{TERM} = $SIG{INT} = sub {
kill 'USR2', $pid_UDP;
}
if ($pid_MON) {
- kill 'INT', $pid_MON;
kill 'USR2', $pid_MON;
}
xCAT::Table::shut_dbworker;
@@ -1294,6 +1293,8 @@ my @pendingconnections;
my $tconn;
my $sslfudgefactor = 0;
my $udpalive = 1;
+# Make sure DB process is ready.
+wait_db_process();
until ($quit) {
$SIG{CHLD} = \&ssl_reaper; # set here to ensure that signal handler is not corrupted during loop
while ($udpalive and $udpwatcher->can_read(0)) { # take an intermission to broker some state requests from udp traffic control
@@ -2353,6 +2354,33 @@ sub becomeuser {
# If here, unable to validate given credential
return undef;
}
+
+# Wait for the db process
+sub wait_db_process {
+ my $retry = 100;
+ my $ready = 0;
+ # Make sure DB process is ready, so that no direct access
+ while($retry) {
+ if (!xCAT::Utils::is_process_exists($dbmaster)) {
+ sleep 0.1;
+ } else {
+ $ready = 1;
+ last;
+ }
+ $retry --;
+ }
+ if (!$ready) {
+ xCAT::MsgUtils->message("S","Error: xcat db process has not been started in 10 seconds.");
+ return -1;
+ }
+ # use create 1 to make sure nodelist and site object cached.
+ my $tmptab = xCAT::Table->new('site',-create=>1);
+ if(!$tmptab) {
+ return -1;
+ }
+ return 0;
+}
+
sub populate_site_hash {
%::XCATSITEVALS=();
my $sitetab = xCAT::Table->new('site',-create=>0);
diff --git a/xCAT-server/share/xcat/ca/openssl.cnf.tmpl b/xCAT-server/share/xcat/ca/openssl.cnf.tmpl
index e3647635c..abfe25892 100644
--- a/xCAT-server/share/xcat/ca/openssl.cnf.tmpl
+++ b/xCAT-server/share/xcat/ca/openssl.cnf.tmpl
@@ -67,7 +67,7 @@ cert_opt = ca_default # Certificate field options
default_days = 7300 # how long to certify for
default_crl_days= 30 # how long before next CRL
-default_md = sha256 # which md to use.
+default_md = sha1 # which md to use.
preserve = no # keep passed DN ordering
# A few difference way of specifying how similar the request should look
diff --git a/xCAT-server/share/xcat/ib/scripts/Mellanox/mlnxofed_ib_install.v2 b/xCAT-server/share/xcat/ib/scripts/Mellanox/mlnxofed_ib_install.v2
old mode 100644
new mode 100755
index 558b9aa12..3a4881ce1
--- a/xCAT-server/share/xcat/ib/scripts/Mellanox/mlnxofed_ib_install.v2
+++ b/xCAT-server/share/xcat/ib/scripts/Mellanox/mlnxofed_ib_install.v2
@@ -250,18 +250,27 @@ if [ "$OS" = "Linux" ]; then
echo "[Error] please make your $HOSTNAME has ability to access ports.ubuntu.com" >&2
exit 1
fi
+
+
+ echo "get distro name form /etc/lsb-release ......"
+ source /etc/lsb-release >/dev/null 2>&1
+ if [ -z "$DISTRIB_CODENAME" ]; then
+ echo "[Error] can't get DISTRIB_CODENAME " >&2
+ exit 1
+ fi
+ echo "DISTRIB_CODENAME=$DISTRIB_CODENAME ...[OK]"
cp /etc/apt/sources.list /etc/apt/sources.list.bak
- sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty main/d" /etc/apt/sources.list
- sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty-updates main/d" /etc/apt/sources.list
- sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty universe/d" /etc/apt/sources.list
- sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty-updates universe/d" /etc/apt/sources.list
+ sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME main/d" /etc/apt/sources.list
+ sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME-updates main/d" /etc/apt/sources.list
+ sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME universe/d" /etc/apt/sources.list
+ sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME-updates universe/d" /etc/apt/sources.list
cat <<-EOF >>/etc/apt/sources.list
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty main
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty universe
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates universe
+deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME main
+deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME-updates main
+deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME universe
+deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME-updates universe
EOF
apt-get clean all
@@ -354,18 +363,25 @@ EOF
sourceslist="$IMGROOTPATH/etc/apt/sources.list"
cp "$sourceslist" "${sourceslist}.bak"
+
+ echo "get distro name form $IMGROOTPATH/etc/lsb-release ......"
+ source $IMGROOTPATH/etc/lsb-release >/dev/null 2>&1
+ if [ -z "$DISTRIB_CODENAME" ]; then
+ echo "[Error] can't get DISTRIB_CODENAME " >&2
+ exit 1
+ fi
+ echo "DISTRIB_CODENAME=$DISTRIB_CODENAME ...[OK]"
- sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty main/d" $sourceslist
- sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty main/d" $sourceslist
- sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty-updates main/d" $sourceslist
- sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty universe/d" $sourceslist
- sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty-updates universe/d" $sourceslist
+ sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME main/d" $sourceslist
+ sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME-updates main/d" $sourceslist
+ sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME universe/d" $sourceslist
+ sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME-updates universe/d" $sourceslist
cat <<-EOF >>"$sourceslist"
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty main
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty universe
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates universe
+deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME main
+deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME-updates main
+deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME universe
+deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME-updates universe
EOF
chroot "$IMGROOTPATH" apt-get clean all
diff --git a/xCAT-server/share/xcat/install/centos/compute.centos7.tmpl b/xCAT-server/share/xcat/install/centos/compute.centos7.tmpl
index b21d39057..04240e78e 100644
--- a/xCAT-server/share/xcat/install/centos/compute.centos7.tmpl
+++ b/xCAT-server/share/xcat/install/centos/compute.centos7.tmpl
@@ -76,7 +76,12 @@ clearpart --all --initlabel
# --useLilo
# --md5pass
#
-bootloader
+#The bootloader config here is commented out
+#For user customized partition file or partition script,
+#the bootloader configuration should be specified in the user customized partition file/script
+#For the xCAT default partition scheme, the bootloader configuration is in /tmp/partitioning
+#which is generated in %pre section
+##KICKSTARTBOOTLOADER#
#
# install or upgrade
@@ -147,9 +152,19 @@ reboot
#INCLUDE_DEFAULT_PKGLIST#
%end
%pre
+{
+echo "Running Kickstart Pre-Installation script..."
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/pre.rh.rhels7#
+} >>/tmp/pre-install.log 2>&1
%end
%post
+mkdir -p /var/log/xcat/
+{
+cat >> /var/log/xcat/xcat.log << "EOF"
+%include /tmp/pre-install.log
+EOF
+echo "Running Kickstart Post-Installation script..."
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.xcat#
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.rhels7#
+} >>/var/log/xcat/xcat.log 2>&1
%end
diff --git a/xCAT-server/share/xcat/install/rh/compute.rhels7.tmpl b/xCAT-server/share/xcat/install/rh/compute.rhels7.tmpl
index 52dd68699..c049da798 100644
--- a/xCAT-server/share/xcat/install/rh/compute.rhels7.tmpl
+++ b/xCAT-server/share/xcat/install/rh/compute.rhels7.tmpl
@@ -75,7 +75,12 @@ clearpart --all --initlabel
# --useLilo
# --md5pass
#
-#KICKSTARTBOOTLOADER#
+#The bootloader config here is commented out
+#For user customized partition file or partition script,
+#the bootloader configuration should be specified in the user customized partition file/script
+#For the xCAT default partition scheme, the bootloader configuration is in /tmp/partitioning
+#which is generated in %pre section
+##KICKSTARTBOOTLOADER#
#
diff --git a/xCAT-server/share/xcat/install/rh/service.rhels7.tmpl b/xCAT-server/share/xcat/install/rh/service.rhels7.tmpl
index 5395c1a1e..c7977d4ec 100644
--- a/xCAT-server/share/xcat/install/rh/service.rhels7.tmpl
+++ b/xCAT-server/share/xcat/install/rh/service.rhels7.tmpl
@@ -75,7 +75,13 @@ clearpart --all --initlabel
# --useLilo
# --md5pass
#
-#KICKSTARTBOOTLOADER#
+#The bootloader config here is commented out
+#For user customized partition file or partition script,
+#the bootloader configuration should be specified in the user customized partition file/script
+#For the xCAT default partition scheme, the bootloader configuration is in /tmp/partitioning
+#which is generated in %pre section
+##KICKSTARTBOOTLOADER#
+
#
# install or upgrade
#
diff --git a/xCAT-server/share/xcat/install/scripts/getinstdisk b/xCAT-server/share/xcat/install/scripts/getinstdisk
index 6683a1693..9a7214ad2 100644
--- a/xCAT-server/share/xcat/install/scripts/getinstdisk
+++ b/xCAT-server/share/xcat/install/scripts/getinstdisk
@@ -18,11 +18,11 @@
#-----------------------------------------------------------
install_disk=""
-rm /tmp/install_disk
+rm -f /tmp/install_disk
tmpdir="/tmp/xcat.getinstalldisk"
mkdir -p $tmpdir
-has_awk=$(find / -name "awk")
+has_awk=$(find /usr/* -name "awk")
utolcmd="sed -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"
@@ -36,9 +36,9 @@ if [ -z "$install_disk" ]; then
# Get all partitions and disks from /proc/partitions file
if [ -z "$has_awk" ]; then
- entries=$(cat /proc/partitions | sed 's/ */ /g' | cut -d " " -f5 | grep -v "name" | grep -e "[s|h]d.*$")
+ entries=$(cat /proc/partitions | sed 's/ */ /g' | cut -d " " -f5 | grep -v "name" | grep -e "[s|h|v]d.*$")
else
- entries=$(awk -F ' ' '{print $4}' /proc/partitions | grep -v "name" | grep -e "[s|h]d.*$")
+ entries=$(awk -F ' ' '{print $4}' /proc/partitions | grep -v "name" | grep -e "[s|h|v]d.*$")
fi
# Classify entries by DEVTYPE
@@ -133,10 +133,10 @@ if [ -z "$install_disk" ]; then
for disk in $disks; do
# Get disk's information: WWN, PATH and DRIVER
disk_info=$(udevadm info --query=property --name=$disk)
- output_for_wwn=$(echo $disk_info | grep '\' | cut -d "=" -f2 | $utolcmd)
- disk_wwn=$(IFS= ;echo $output_for_wwn)
- output_for_path=$(echo $disk_info | grep DEVPATH | cut -d "=" -f2 | $utolcmd)
- disk_path=$(IFS= ;echo $output_for_path)
+ output_for_wwn=$(IFS= ;echo $disk_info | grep '\' | cut -d "=" -f2)
+ disk_wwn=$(echo $output_for_wwn | $utolcmd)
+ output_for_path=$(IFS= ;echo $disk_info | grep DEVPATH | cut -d "=" -f2)
+ disk_path=$(echo $output_for_path | $utolcmd)
disk_driver=$(udevadm info --attribute-walk --name=$disk | grep DRIVERS| grep -v '""'| grep -v '"sd"'|
\head -n 1| sed -e 's/[^"]*"//' -e 's/"//' | $utolcmd)
diff --git a/xCAT-server/share/xcat/install/scripts/post.xcat b/xCAT-server/share/xcat/install/scripts/post.xcat
index 6fdecb425..7faefb438 100755
--- a/xCAT-server/share/xcat/install/scripts/post.xcat
+++ b/xCAT-server/share/xcat/install/scripts/post.xcat
@@ -421,6 +421,19 @@ updateflag.awk $MASTER 3002
cd /
+# fix the issue#929@github, the "service network restart" in
+# makes the 'network' service in start status, then it causes the
+# services YaST2-Second-Stage.service and xcatpostinit1 services to be run in parallel.
+# But the YaST2-Second-Stage.service calls the Yast2 which conflics with the zypper
+# which is called in xcatpostinit1->otherpkgs.
+# The correct services start order is 'YaST2-Second-Stage.service'->'network'->'xcatpostinit1' in serial.
+# To skip the conflict, the network service should be stoped in the yast first stage. Then base on the service
+# dependency, the service start order will be 'YaST2-Second-Stage.service'->'network'->'xcatpostinit1' in serial.
+# Then the Yast2 will be stopped before running the zypper in otherpkgs.
+if [[ $OSVER =~ sles && $OSVER != sles11* ]]; then
+ service network stop
+fi
+
if [ "$XCATDEBUGMODE" = "1" ] || [ "$XCATDEBUGMODE" = "2" ]; then
set +x
fi
diff --git a/xCAT-server/share/xcat/install/scripts/pre.rh.rhels7 b/xCAT-server/share/xcat/install/scripts/pre.rh.rhels7
index 36fb944b9..40ce7c96f 100755
--- a/xCAT-server/share/xcat/install/scripts/pre.rh.rhels7
+++ b/xCAT-server/share/xcat/install/scripts/pre.rh.rhels7
@@ -191,6 +191,18 @@ echo "part swap --recommended --ondisk $instdisk" >> /tmp/partitioning
echo "part pv.01 --size 1 --grow --ondisk $instdisk" >> /tmp/partitioning
echo "volgroup system pv.01" >> /tmp/partitioning
echo "logvol / --vgname=system --name=root --size 1 --grow --fstype $FSTYPE" >> /tmp/partitioning
+
+#specify "bootloader" configuration in "/tmp/partitioning" if there is no user customized partition file
+BOOTLOADER="bootloader "
+
+#specify the kernel options which will be persistent after installation
+[ -n "#ENV:PERSKCMDLINE#" ] && BOOTLOADER=$BOOTLOADER" --append=#ENV:PERSKCMDLINE#"
+
+#Specifies which drive the boot loader should be written to
+#and therefore which drive the computer will boot from.
+[ -n "$instdisk" ] && BOOTLOADER=$BOOTLOADER" --boot-drive=$(basename $instdisk)"
+
+echo "$BOOTLOADER" >> /tmp/partitioning
#XCA_PARTITION_SCRIPT#
diff --git a/xCAT-server/share/xcat/install/sles/service.sles12.pkglist b/xCAT-server/share/xcat/install/sles/service.sles12.pkglist
new file mode 100644
index 000000000..23c37900d
--- /dev/null
+++ b/xCAT-server/share/xcat/install/sles/service.sles12.pkglist
@@ -0,0 +1,22 @@
+@base
+@x11
+openssl
+ntp
+rsync
+nmap
+perl-DBI
+vsftpd
+perl-IO-Tty
+perl-Expect
+perl-SNMP
+unixODBC
+perl-Net-DNS
+perl-DBD-mysql
+mariadb-client
+libmysqlclient18
+# The following rpms are available on the SLES SDK
+# You will need to locate and make these rpms available in your zypper
+# repository for service node installs and uncomment the following lines:
+#MyODBC-unixODBC
+#perl-DBD-Pg
+
diff --git a/xCAT-server/share/xcat/install/sles/service.sles12.ppc64le.otherpkgs.pkglist b/xCAT-server/share/xcat/install/sles/service.sles12.ppc64le.otherpkgs.pkglist
new file mode 100644
index 000000000..6d403afb2
--- /dev/null
+++ b/xCAT-server/share/xcat/install/sles/service.sles12.ppc64le.otherpkgs.pkglist
@@ -0,0 +1,2 @@
+xcat/xcat-core/xCATsn
+xcat/xcat-dep/sles12/ppc64le/conserver-xcat
diff --git a/xCAT-server/share/xcat/install/sles/service.sles12.tmpl b/xCAT-server/share/xcat/install/sles/service.sles12.tmpl
new file mode 100644
index 000000000..f7cc1ecff
--- /dev/null
+++ b/xCAT-server/share/xcat/install/sles/service.sles12.tmpl
@@ -0,0 +1,126 @@
+
+
+
+
+
+ true
+ true
+ #XCATVAR:PERSKCMDLINE#
+ false
+ false
+ mbr
+
+
+
+ GMT
+ #TABLE:site:key=timezone:value#
+
+
+ english-us
+
+ en_US
+
+ false
+ false
+ false
+ true
+
+
+ non
+
+
+ true
+ true
+ true
+
+
+
+
+
+ XCATPARTITIONHOOK
+ true
+
+
+
+ true
+ false
+ device
+ 65
+ 1
+ false
+ 8225280
+
+
+ true
+ false
+ swap
+ true
+ false
+ swap
+ uuid
+ 130
+ 2
+ false
+ auto
+
+
+ true
+ false
+ btrfs
+ true
+ false
+ /
+ uuid
+ 131
+ 3
+ 100%
+
+
+
+
+
+
+
+ #INCLUDE_DEFAULT_PTRNLIST_S#
+
+
+ #INCLUDE_DEFAULT_PKGLIST_S#
+
+
+
+
+
+
+ root
+ #CRYPT:passwd:key=system,username=root:password#
+ true
+
+
+
+
+
+
+ true
+ true
+ local
+ linux
+
+
+
+ dhcp
+ eth0
+ onboot
+
+
+
+ false
+
+
+
+
+ #INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/pre.sles#
+ #INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/chroot.sles#
+ #INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.sles11#
+
+
+
diff --git a/xCAT-server/share/xcat/install/sles/service.sles12.x86_64.otherpkgs.pkglist b/xCAT-server/share/xcat/install/sles/service.sles12.x86_64.otherpkgs.pkglist
new file mode 100644
index 000000000..8c4f4de49
--- /dev/null
+++ b/xCAT-server/share/xcat/install/sles/service.sles12.x86_64.otherpkgs.pkglist
@@ -0,0 +1,2 @@
+xcat/xcat-core/xCATsn
+xcat/xcat-dep/sles12/x86_64/conserver-xcat
diff --git a/xCAT-server/share/xcat/install/ubuntu/compute.pkglist b/xCAT-server/share/xcat/install/ubuntu/compute.pkglist
index 925eba83e..7224b8787 100644
--- a/xCAT-server/share/xcat/install/ubuntu/compute.pkglist
+++ b/xCAT-server/share/xcat/install/ubuntu/compute.pkglist
@@ -1,5 +1,6 @@
openssh-server
ntp
+ntpdate
gawk
nfs-common
snmpd
diff --git a/xCAT-server/share/xcat/install/ubuntu/compute.ubuntu16.04.ppc64el.pkglist b/xCAT-server/share/xcat/install/ubuntu/compute.ubuntu16.04.ppc64el.pkglist
index ec88e4935..a2a01bc6e 100644
--- a/xCAT-server/share/xcat/install/ubuntu/compute.ubuntu16.04.ppc64el.pkglist
+++ b/xCAT-server/share/xcat/install/ubuntu/compute.ubuntu16.04.ppc64el.pkglist
@@ -8,6 +8,7 @@ openssh-client
wget
vim
ntp
+ntpdate
rsync
busybox-static
gawk
diff --git a/xCAT-server/share/xcat/netboot/mic/genimage b/xCAT-server/share/xcat/netboot/mic/genimage
index 82a229d00..205ea485c 100755
--- a/xCAT-server/share/xcat/netboot/mic/genimage
+++ b/xCAT-server/share/xcat/netboot/mic/genimage
@@ -251,10 +251,8 @@ my @sysfilelist = (
"/etc/nsswitch.conf",
"/etc/ssh/ssh_host_rsa_key",
"/etc/ssh/ssh_config",
- "/etc/ssh/ssh_host_key",
"/etc/ssh/sshd_config",
"/etc/ssh/ssh_host_dsa_key",
- "/etc/ssh/ssh_host_key.pub",
"/root/.ssh/id_rsa",
"/root/.ssh/id_rsa.pub",
"/root/.ssh/authorized_keys",);
diff --git a/xCAT-server/share/xcat/netboot/rh/genimage b/xCAT-server/share/xcat/netboot/rh/genimage
index 1ece8362a..746172726 100755
--- a/xCAT-server/share/xcat/netboot/rh/genimage
+++ b/xCAT-server/share/xcat/netboot/rh/genimage
@@ -91,15 +91,18 @@ sub mount_chroot {
my $rootimage_dir = shift;
#postinstall script of some packages might access the /proc, /sys and /dev filesystem
- #For Redhat7 or above, mount these directories readonly from host to avoid error messages
+ #For Redhat7 or above, mount /proc,/sys from host to avoid error messages
+ #For Redhat7 or above, create /dev according to /dev on the host to avoid error messages
#For Redhat6 or below, mount these directories might introduce error messages
if(majversion($osver) > 6){
system("mkdir -p $rootimage_dir/proc");
- system("mount proc $rootimage_dir/proc -t proc -o ro");
+ system("mount proc $rootimage_dir/proc -t proc");
system("mkdir -p $rootimage_dir/sys");
- system("mount sysfs $rootimage_dir/sys -t sysfs -o ro");
+ system("mount sysfs $rootimage_dir/sys -t sysfs");
system("mkdir -p $rootimage_dir/dev");
- system("mount devtmpfs $rootimage_dir/dev -t devtmpfs -o ro");
+ #system("mount devtmpfs $rootimage_dir/dev -t devtmpfs");
+ system("cd /dev;find .|cpio -H newc -o >$rootimage_dir/dev/dev.archive;cd -");
+ system("cd $rootimage_dir/dev;cpio -idum<./dev.archive;rm -f ./dev.archive;cd -");
}
}
@@ -109,9 +112,10 @@ sub umount_chroot {
my $rootimage_dir = shift;
if(majversion($osver) >6){
- system("umount $rootimage_dir/proc");
- system("umount $rootimage_dir/sys");
- system("umount $rootimage_dir/dev");
+ system("umount -l $rootimage_dir/proc");
+ system("umount -l $rootimage_dir/sys");
+ #system("umount -l $rootimage_dir/dev");
+ system("rm -rf $rootimage_dir/dev/*");
}
}
diff --git a/xCAT-server/share/xcat/netboot/sles/service.sles12.pkglist b/xCAT-server/share/xcat/netboot/sles/service.sles12.pkglist
new file mode 100644
index 000000000..cc15ffcfe
--- /dev/null
+++ b/xCAT-server/share/xcat/netboot/sles/service.sles12.pkglist
@@ -0,0 +1,69 @@
+aaa_base
+adaptec-firmware
+apache2
+apache2-prefork
+bash
+bind
+bind-utils
+binutils
+bc
+btrfsprogs
+bzip2
+cifs-utils
+coreutils
+cron
+cryptsetup
+curl
+dhcp
+dhcp-client
+dhcp-relay
+dhcp-server
+dmraid
+e2fsprogs
+fcoe-utils
+gpg2
+gzip
+kernel-default
+keyutils
+lvm2
+mdadm
+multipath-tools
+nfs-kernel-server
+ntp
+openssh
+openssl
+open-iscsi
+open-lldp
+pam
+pam-modules
+parted
+perl-doc
+perl-Expect
+plymouth
+plymouth-dracut
+procps
+psmisc
+rpm
+rsync
+sysconfig
+tar
+timezone
+udev
+util-linux
+util-linux-systemd
+vim
+vsftpd
+wget
+which
+zypper
+
+#for database
+unixODBC
+perl-DBD-mysql
+mariadb-client
+libmysqlclient18
+# The following rpms are available on the SLES SDK
+# You will need to locate and make these rpms available in your zypper
+# repository for service node installs and uncomment the following lines:
+#MyODBC-unixODBC
+#perl-DBD-Pg
diff --git a/xCAT-server/share/xcat/netboot/sles/service.sles12.postinstall b/xCAT-server/share/xcat/netboot/sles/service.sles12.postinstall
new file mode 100755
index 000000000..201599be0
--- /dev/null
+++ b/xCAT-server/share/xcat/netboot/sles/service.sles12.postinstall
@@ -0,0 +1,68 @@
+#!/bin/sh
+#-- Do not remove following line if you want to make use of CVS version tracking
+#-- $Id: compute.postinstall,v 1.21 2008/09/04 12:05:45 sikorsky Exp $
+#-- jurij.sikorsky@t-systems.cz
+#--
+#-- this script is run after all packages from $profile.pkglist are installed
+#--
+#-- it gets these arguments:
+#--
+#-- $1 = install root (chroot directory for profile)
+#-- $2 = OS version
+#-- $3 = architecture
+#-- $4 = profile name
+#-- $5 = work dir (where genimage is located)
+#--
+#--
+installroot=$1
+osver=$2
+arch=$3
+profile=$4
+workdir=$5
+
+#-- Example how /etc/fstab can be automatically generated during image generation:
+cp $installroot/etc/fstab $installroot/etc/fstab.prev
+cat <$installroot/etc/fstab
+proc /proc proc rw 0 0
+sysfs /sys sysfs rw 0 0
+devpts /dev/pts devpts rw,gid=5,mode=620 0 0
+${profile}_${arch} / tmpfs rw 0 1
+none /tmp tmpfs defaults,size=10m 0 2
+none /var/tmp tmpfs defaults,size=10m 0 2
+END
+
+
+cat <>$installroot/etc/hosts
+`getent hosts $HOSTNAME`
+END
+
+#Prevent DHCP from starting up until xcatd has had a chance to configure it:
+chroot $installroot chkconfig dhcpd off
+chroot $installroot chkconfig dhcrelay off
+
+#turn on some services
+chroot $installroot chkconfig dbus on
+chroot $installroot chkconfig boot.localnet on
+chroot $installroot chkconfig haldaemon on
+chroot $installroot chkconfig network on
+chroot $installroot chkconfig syslog on
+chroot $installroot chkconfig apache2 on
+
+#export /install as read-only
+mkdir -p /install
+echo '/install *(ro,no_root_squash,sync,fsid=13)' > $installroot/etc/exports
+
+#uncomment out the cons line in etc/inittab
+#sed -i 's/^\#\(\s\)*cons/cons/' $installroot/etc/inittab
+
+TMP_inittab=`sed 's/\(#\)\(cons:12345.*\)$/\2/' $installroot/etc/inittab`
+echo "$TMP_inittab" > $installroot/etc/inittab
+
+
+#-- Example of booted image versioning
+#-- We want to know, with what configuration (version of the image) each node was booted.
+#-- Hence, we keep image definition files and postscripts in CVS. During image generation we create file /etc/IMGVERSION and fill it with CVS "$Id$" of files with image definition (.pkglist, .exlist, .repolist, .postinstall). Then, during boot, each "CVS enabled" postscript (see /install/postscripts/cvs_template.sh and /install/postscripts/cvs_template.pl) adds one line to /etc/IMGVERSION. Then you can determine in any time what image you are running and what postscipts in which versions were run.
+#cat /dev/null > $installroot/etc/IMGVERSION
+#for ext in pkglist exlist postinstall repolist; do
+# [ -r $workdir/$profile.$ext ] && cat $workdir/$profile.$ext | grep -E '^[[:space:]]*#.*[[:space:]]\$Id' >> $installroot/etc/IMGVERSION
+#done
diff --git a/xCAT-server/share/xcat/netboot/sles/service.sles12.ppc64le.otherpkgs.pkglist b/xCAT-server/share/xcat/netboot/sles/service.sles12.ppc64le.otherpkgs.pkglist
new file mode 100644
index 000000000..6d403afb2
--- /dev/null
+++ b/xCAT-server/share/xcat/netboot/sles/service.sles12.ppc64le.otherpkgs.pkglist
@@ -0,0 +1,2 @@
+xcat/xcat-core/xCATsn
+xcat/xcat-dep/sles12/ppc64le/conserver-xcat
diff --git a/xCAT-server/share/xcat/netboot/sles/service.sles12.ppc64le.postinstall b/xCAT-server/share/xcat/netboot/sles/service.sles12.ppc64le.postinstall
new file mode 100755
index 000000000..c75134560
--- /dev/null
+++ b/xCAT-server/share/xcat/netboot/sles/service.sles12.ppc64le.postinstall
@@ -0,0 +1,46 @@
+#!/bin/sh
+#-- Do not remove following line if you want to make use of CVS version tracking
+#-- $Id: compute.postinstall,v 1.21 2008/09/04 12:05:45 sikorsky Exp $
+#-- jurij.sikorsky@t-systems.cz
+#--
+#-- this script is run after all packages from $profile.pkglist are installed
+#--
+#-- it gets these arguments:
+#--
+#-- $1 = install root (chroot directory for profile)
+#-- $2 = OS version
+#-- $3 = architecture
+#-- $4 = profile name
+#-- $5 = work dir (where genimage is located)
+#--
+#--
+installroot=$1
+osver=$2
+arch=$3
+profile=$4
+workdir=$5
+
+#-- Example how /etc/fstab can be automatically generated during image generation:
+cat <$installroot/etc/fstab
+proc /proc proc rw 0 0
+sysfs /sys sysfs rw 0 0
+devpts /dev/pts devpts rw,gid=5,mode=620 0 0
+${profile}_${arch} / tmpfs rw 0 1
+none /tmp tmpfs defaults,size=10m 0 2
+none /var/tmp tmpfs defaults,size=10m 0 2
+END
+
+#-- Uncomment the line contains "cons" in /etc/inittab
+#cons:12345:respawn:/sbin/smart_agetty -L 38400 console
+TMP_inittab=`sed 's/\(#\)\(cons:12345.*\)$/\2/' $installroot/etc/inittab`
+echo "$TMP_inittab" > $installroot/etc/inittab
+
+
+#-- Example of booted image versioning
+#-- We want to know, with what configuration (version of the image) each node was booted.
+#-- Hence, we keep image definition files and postscripts in CVS. During image generation we create file /etc/IMGVERSION and fill it with CVS "$Id$" of files with image definition (.pkglist, .exlist, .repolist, .postinstall). Then, during boot, each "CVS enabled" postscript (see /install/postscripts/cvs_template.sh and /install/postscripts/cvs_template.pl) adds one line to /etc/IMGVERSION. Then you can determine in any time what image you are running and what postscipts in which versions were run.
+#cat /dev/null > $installroot/etc/IMGVERSION
+#for ext in pkglist exlist postinstall repolist; do
+# [ -r $workdir/$profile.$ext ] && cat $workdir/$profile.$ext | grep -E '^[[:space:]]*#.*[[:space:]]\$Id' >> $installroot/etc/IMGVERSION
+#done
+
diff --git a/xCAT-server/share/xcat/netboot/sles/service.sles12.x86_64.otherpkgs.pkglist b/xCAT-server/share/xcat/netboot/sles/service.sles12.x86_64.otherpkgs.pkglist
new file mode 100644
index 000000000..7fe170d23
--- /dev/null
+++ b/xCAT-server/share/xcat/netboot/sles/service.sles12.x86_64.otherpkgs.pkglist
@@ -0,0 +1,3 @@
+-perl-doc
+xcat/xcat-core/xCATsn
+xcat/xcat-dep/sles12/x86_64/conserver-xcat
diff --git a/xCAT-server/share/xcat/netboot/ubuntu/compute.postinstall b/xCAT-server/share/xcat/netboot/ubuntu/compute.postinstall
index 1e6ed8dc3..26a801c61 100755
--- a/xCAT-server/share/xcat/netboot/ubuntu/compute.postinstall
+++ b/xCAT-server/share/xcat/netboot/ubuntu/compute.postinstall
@@ -49,5 +49,5 @@ chroot $installroot \
locale-gen en_US.UTF-8 en_US
chroot $installroot \
update-locale
-chroot $installroot \
+DEBIAN_FRONTEND=noninteractive chroot $installroot \
dpkg-reconfigure locales
diff --git a/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu14.04.4.ppc64el.pkglist b/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu14.04.4.ppc64el.pkglist
deleted file mode 120000
index 7dd0c7e61..000000000
--- a/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu14.04.4.ppc64el.pkglist
+++ /dev/null
@@ -1 +0,0 @@
-compute.ubuntu14.04.3.ppc64el.pkglist
\ No newline at end of file
diff --git a/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu14.04.4.ppc64el.pkglist b/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu14.04.4.ppc64el.pkglist
new file mode 100644
index 000000000..a6543075b
--- /dev/null
+++ b/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu14.04.4.ppc64el.pkglist
@@ -0,0 +1,15 @@
+bash
+nfs-common
+openssl
+isc-dhcp-client
+libc-bin
+linux-image-generic-lts-wily
+openssh-server
+openssh-client
+wget
+vim
+ntp
+rsync
+busybox-static
+gawk
+dnsutils
diff --git a/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu14.04.4.x86_64.pkglist b/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu14.04.4.x86_64.pkglist
deleted file mode 120000
index 9bbacda5b..000000000
--- a/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu14.04.4.x86_64.pkglist
+++ /dev/null
@@ -1 +0,0 @@
-compute.ubuntu14.04.3.x86_64.pkglist
\ No newline at end of file
diff --git a/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu14.04.4.x86_64.pkglist b/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu14.04.4.x86_64.pkglist
new file mode 100644
index 000000000..a6543075b
--- /dev/null
+++ b/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu14.04.4.x86_64.pkglist
@@ -0,0 +1,15 @@
+bash
+nfs-common
+openssl
+isc-dhcp-client
+libc-bin
+linux-image-generic-lts-wily
+openssh-server
+openssh-client
+wget
+vim
+ntp
+rsync
+busybox-static
+gawk
+dnsutils
diff --git a/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu16.04.ppc64el.pkglist b/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu16.04.ppc64el.pkglist
index d127000a6..a2b1afbdc 100644
--- a/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu16.04.ppc64el.pkglist
+++ b/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu16.04.ppc64el.pkglist
@@ -3,12 +3,13 @@ nfs-common
openssl
isc-dhcp-client
libc-bin
-linux-image-generic-lts-xenial
+linux-image-generic
openssh-server
openssh-client
wget
vim
ntp
+ntpdate
rsync
busybox-static
gawk
diff --git a/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu16.04.x86_64.pkglist b/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu16.04.x86_64.pkglist
index d127000a6..a2b1afbdc 100644
--- a/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu16.04.x86_64.pkglist
+++ b/xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu16.04.x86_64.pkglist
@@ -3,12 +3,13 @@ nfs-common
openssl
isc-dhcp-client
libc-bin
-linux-image-generic-lts-xenial
+linux-image-generic
openssh-server
openssh-client
wget
vim
ntp
+ntpdate
rsync
busybox-static
gawk
diff --git a/xCAT-server/share/xcat/netboot/ubuntu/genimage b/xCAT-server/share/xcat/netboot/ubuntu/genimage
index 7a6cab391..efbdb4e52 100755
--- a/xCAT-server/share/xcat/netboot/ubuntu/genimage
+++ b/xCAT-server/share/xcat/netboot/ubuntu/genimage
@@ -1970,13 +1970,17 @@ sub mount_chroot {
#postinstall script of package installation
#might access the /proc, /sys and /dev filesystem
- #mount them from host read-only
+ #mount /proc, /sys from host
+ #create /dev based on /dev/ on host
system("mkdir -p $rootimage_dir/proc");
- system("mount proc $rootimage_dir/proc -t proc -o ro");
+ system("mount proc $rootimage_dir/proc -t proc");
system("mkdir -p $rootimage_dir/sys");
- system("mount sysfs $rootimage_dir/sys -t sysfs -o ro");
+ system("mount sysfs $rootimage_dir/sys -t sysfs");
system("mkdir -p $rootimage_dir/dev");
- system("mount devfs $rootimage_dir/dev -t devfs -o ro");
+ #system("mount devtmpfs $rootimage_dir/dev -t devtmpfs");
+ system("cd /dev;find .|cpio -H newc -o >$rootimage_dir/dev/dev.archive;cd -");
+ system("cd $rootimage_dir/dev;cpio -idum<./dev.archive;rm -f ./dev.archive;cd -");
+
if ($pkgdir) {
if (-d $pkgdir) {
@@ -2009,21 +2013,22 @@ sub mount_chroot {
sub umount_chroot {
my $rootimage_dir = shift;
- system("umount $rootimage_dir/proc");
- system("umount $rootimage_dir/sys");
- system("umount $rootimage_dir/dev");
+ system("umount -l $rootimage_dir/proc");
+ system("umount -l $rootimage_dir/sys");
+ #system("umount -l $rootimage_dir/dev");
+ system("rm -rf $rootimage_dir/dev/*");
- system("umount $rootimage_dir/mnt/pkgdir");
+ system("umount -l $rootimage_dir/mnt/pkgdir");
rmdir("$rootimage_dir/mnt/pkgdir");
my @data = `grep /mnt/otherpkgdir /proc/mounts | cut -f2 -d' ' | sort -r`;
foreach (@data) {
- `umount $_`;
+ `umount -l $_`;
}
rmdir("$rootimage_dir/mnt/otherpkgdir");
if (-d "$rootimage_dir/mnt/kerneldir") {
- system("umount $rootimage_dir/mnt/kerneldir");
+ system("umount -l $rootimage_dir/mnt/kerneldir");
rmdir("$rootimage_dir/mnt/kerneldir");
}
}
diff --git a/xCAT-server/share/xcat/tools/xCATreg b/xCAT-server/share/xcat/tools/xCATreg
old mode 100644
new mode 100755
index ed71bd173..2ad97c79f
--- a/xCAT-server/share/xcat/tools/xCATreg
+++ b/xCAT-server/share/xcat/tools/xCATreg
@@ -55,8 +55,8 @@ my $regresultdir = "$regrootdir/regresult";
my $todayregresultdir="";
my $maildir="$regrootdir/mail";
my $mailfile="";
-my $rootdir = "$::XCATROOT/share/xcat/tools/autotest";
-my %confkeys;
+my $rootdir = "$::XCATROOT/share/xcat/tools/autotest";
+my %confkeys;
my $mail_list = 0;
my $needhelp = 0;
my $branch = "master";
@@ -524,7 +524,7 @@ sub copy_code {
return 1;
}
send_msg(2, "[$mn->$confkeys{$mn}][copy_code] copy ISO $iso to $mn successfully");
- system ("sed -i 's|ISO=/\\S*|ISO=/$iso|g' $configfiledir/$regconf");
+ system ("sed -i 's|^ISO=/\\S*|ISO=/$iso|g' $configfiledir/$regconf");
}
if($mn =~ /sles/){
@@ -548,7 +548,7 @@ sub copy_code {
return 1;
}
send_msg(2, "[$mn->$confkeys{$mn}][copy_code] copy ISO $iso to $mn successfully");
- system ("sed -i 's|ISO=/\\S*|ISO=/$iso|g' $configfiledir/$regconf");
+ system ("sed -i 's|^ISO=/\\S*|ISO=/$iso|g' $configfiledir/$regconf");
if($os =~ /sles11/){
$res = system("xdsh $confkeys{$mn} \"mv /usr/lib/rpm/find-requires /usr/lib/rpm/find-requires.org\" && scp $osisodir/find-requires $confkeys{$mn}:/usr/lib/rpm/ > /dev/null");
@@ -581,7 +581,7 @@ sub copy_code {
return 1;
}
send_msg(2, "[$mn->$confkeys{$mn}][copy_code] copy ISO $iso to $mn successfully");
- system ("sed -i 's|ISO=/\\S*|ISO=/$iso|g' $configfiledir/$regconf");
+ system ("sed -i 's|^ISO=/\\S*|ISO=/$iso|g' $configfiledir/$regconf");
}
return 0;
}
@@ -711,6 +711,7 @@ sub do_test {
my $diskless_installation_hierarchy_testcase="";
my $statelite_installation_hierarchy_by_ramdisk_testcase="";
my $statelite_installation_hierarchy_by_nfs_testcase="";
+ my $setup_dockerhost_testcase="";
my $batbundle="";
if((($mn =~ /sles/) || ($mn =~ /rh/)) && ($mn !~ /E/)){
$diskfull_installation_flat_testcase="reg_linux_diskfull_installation_flat";
@@ -728,6 +729,7 @@ sub do_test {
}elsif($mn =~ /ubuntux/){
$diskfull_installation_flat_testcase="Ubuntu_full_installation_flat_x86_vm";
$diskless_installation_flat_testcase="Ubuntu_diskless_installation_flat_x86_vm";
+ $setup_dockerhost_testcase="Full_installation_flat_docker";
$batbundle="x_ubuntu_cmd.bundle";
}elsif($mn =~ /E/){
$diskfull_installation_flat_testcase="Full_installation_flat_p8_le";
@@ -869,6 +871,12 @@ sub do_test {
send_msg(2, "[$mn->$confkeys{$mn}][do_test] do diskfull installation test in flat mode in $mn.....[done]");
last if($rc != 0);
+ #set up dockerhosts
+ send_msg(2, "[$mn->$confkeys{$mn}][do_test] setupdockerhost $mn.....");
+ $rc=system("ssh -t $confkeys{$mn} 'exec bash -l -i -c \"xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t $setup_dockerhost_testcase\"' >/dev/null 2>&1");
+ send_msg(2, "[$mn->$confkeys{$mn}][do_test] setup dockerhosts $mn.....[done]");
+ last if($rc != 0);
+
#commands bundle in flat mode test
send_msg(2, "[$mn->$confkeys{$mn}][do_test] doing all commands test in flat mode in $mn.....");
$rc=system("ssh -t $confkeys{$mn} 'exec bash -l -i -c \"xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -b $batbundle\"' >/dev/null 2>&1");
@@ -950,7 +958,7 @@ sub creat_report{
}elsif($k =~ /ubuntux/){
$batbundle="/$xcatcoredir/xCAT-test/autotest/bundle/x_ubuntu_cmd.bundle";
$totalcase=`cat $batbundle|wc -l`;
- $totalcase+=2;
+ $totalcase+=3;
}elsif($k =~ /E/){
$batbundle="$xcatcoredir/xCAT-test/autotest/bundle/le_rhels_cmd.bundle" if($k =~ /rhLE/);
$batbundle="$xcatcoredir/xCAT-test/autotest/bundle/le_sles_cmd.bundle" if($k =~ /slesLE/);
diff --git a/xCAT-server/xCAT-server.spec b/xCAT-server/xCAT-server.spec
index 120553cca..5af1928ca 100644
--- a/xCAT-server/xCAT-server.spec
+++ b/xCAT-server/xCAT-server.spec
@@ -25,17 +25,15 @@ AutoReqProv: no
# also need to fix Requires for AIX
%ifos linux
BuildArch: noarch
-Requires: perl-IO-Socket-SSL perl-XML-Simple perl-XML-Parser perl-Digest-SHA1 perl(LWP::Protocol::https) perl-Net-HTTPS-NB perl-HTTP-Async
+Requires: perl-IO-Socket-SSL perl-XML-Simple perl-XML-Parser perl-Digest-SHA1 perl(LWP::Protocol::https)
Obsoletes: atftp-xcat
%endif
# The aix rpm cmd forces us to do this outside of ifos type stmts
%if %notpcm
%ifos linux
-# ifarch/ifnarch does not work for noarch package
-#%ifnarch s390x
# PCM does not use or ship grub2-xcat
-Requires: grub2-xcat
+Requires: grub2-xcat perl-Net-HTTPS-NB perl-HTTP-Async
#%endif
%endif
%endif
@@ -413,14 +411,15 @@ fi
ln -sf $RPM_INSTALL_PREFIX0/sbin/xcatd /usr/sbin/xcatd
if [ "$1" = "1" ]; then #Only if installing for the first time..
- if [ -x /usr/lib/lsb/install_initd ]; then
- /usr/lib/lsb/install_initd /etc/init.d/xcatd
- elif [ -x /sbin/chkconfig ]; then
- /sbin/chkconfig --add xcatd
- else
- echo "Unable to register init scripts on this system"
- fi
+ if [ -x /sbin/chkconfig ]; then
+ /sbin/chkconfig --add xcatd
+ elif [ -x /usr/lib/lsb/install_initd ]; then
+ /usr/lib/lsb/install_initd /etc/init.d/xcatd
+ else
+ echo "Unable to register init scripts on this system"
+ fi
fi
+
if [ "$1" -gt "1" ]; then #only on upgrade...
#migration issue for monitoring
XCATROOT=$RPM_INSTALL_PREFIX0 $RPM_INSTALL_PREFIX0/sbin/chtab filename=monitorctrl.pm notification -d
@@ -463,10 +462,11 @@ if [ $1 == 0 ]; then #This means only on -e
if [ -f "/proc/cmdline" ]; then # prevent running it during install into chroot image
/etc/init.d/xcatd stop
fi
- if [ -x /usr/lib/lsb/remove_initd ]; then
+
+ if [ -x /sbin/chkconfig ]; then
+ /sbin/chkconfig --del xcatd
+ elif [ -x /usr/lib/lsb/remove_initd ]; then
/usr/lib/lsb/remove_initd /etc/init.d/xcatd
- elif [ -x /sbin/chkconfig ]; then
- /sbin/chkconfig --del xcatd
fi
rm -f /usr/sbin/xcatd #remove the symbolic
diff --git a/xCAT-test/autotest/bundle/le_rhels_cmd.bundle b/xCAT-test/autotest/bundle/le_rhels_cmd.bundle
index 91def4d65..742b6066c 100644
--- a/xCAT-test/autotest/bundle/le_rhels_cmd.bundle
+++ b/xCAT-test/autotest/bundle/le_rhels_cmd.bundle
@@ -190,3 +190,5 @@ switchdiscover_range_r
switchdiscover_range_x
switchdiscover_range_z
switchdiscover_range_z_V
+redhat_migration1
+redhat_migration2
diff --git a/xCAT-test/autotest/bundle/le_sles_cmd.bundle b/xCAT-test/autotest/bundle/le_sles_cmd.bundle
index a840d726e..ee0f0e23e 100644
--- a/xCAT-test/autotest/bundle/le_sles_cmd.bundle
+++ b/xCAT-test/autotest/bundle/le_sles_cmd.bundle
@@ -194,3 +194,5 @@ switchdiscover_range_r
switchdiscover_range_x
switchdiscover_range_z
switchdiscover_range_z_V
+sles_migration1
+sles_migration2
diff --git a/xCAT-test/autotest/bundle/le_ubuntu_cmd.bundle b/xCAT-test/autotest/bundle/le_ubuntu_cmd.bundle
index 5c1428c70..452f1e480 100644
--- a/xCAT-test/autotest/bundle/le_ubuntu_cmd.bundle
+++ b/xCAT-test/autotest/bundle/le_ubuntu_cmd.bundle
@@ -238,3 +238,5 @@ xcatd_restart
run_command_with_XCATBYPASS
disable_root_permission_in_policy_table
assign_certain_command_permission
+ubuntu_migration1_p8le
+ubuntu_migration2_p8le
diff --git a/xCAT-test/autotest/bundle/p_rhels_cmd.bundle b/xCAT-test/autotest/bundle/p_rhels_cmd.bundle
index 61268c54a..02e1164b2 100644
--- a/xCAT-test/autotest/bundle/p_rhels_cmd.bundle
+++ b/xCAT-test/autotest/bundle/p_rhels_cmd.bundle
@@ -293,3 +293,5 @@ xcatd_restart
run_command_with_XCATBYPASS
disable_root_permission_in_policy_table
assign_certain_command_permission
+redhat_migration1
+redhat_migration2
diff --git a/xCAT-test/autotest/bundle/p_sles_cmd.bundle b/xCAT-test/autotest/bundle/p_sles_cmd.bundle
index 89be4234d..00d550171 100644
--- a/xCAT-test/autotest/bundle/p_sles_cmd.bundle
+++ b/xCAT-test/autotest/bundle/p_sles_cmd.bundle
@@ -257,3 +257,5 @@ makentp_V
makentp
makentp_a
nodeset_check_warninginfo
+sles_migration1
+sles_migration2
diff --git a/xCAT-test/autotest/bundle/rhels6.7_ppc64.bundle b/xCAT-test/autotest/bundle/rhels6.7_ppc64.bundle
new file mode 100644
index 000000000..243184594
--- /dev/null
+++ b/xCAT-test/autotest/bundle/rhels6.7_ppc64.bundle
@@ -0,0 +1,305 @@
+reg_linux_diskfull_installation_flat
+updatenode_h
+updatenode_v
+updatenode_diskful_syncfiles
+updatenode_diskful_syncfiles_rename
+updatenode_diskful_syncfiles_dir
+updatenode_diskful_syncfiles_multi_files
+updatenode_syncfile_EXECUTE
+updatenode_syncfile_EXECUTEALWAYS
+updatenode_syncfile_APPEND
+updatenode_syncfile_MERGE
+updatenode_P_script1
+updatenode_P_script2
+updatenode_f_incompatible_flags
+updatenode_k_incompatible_flags
+updatenode_diskful_syncfiles_P_script1
+updatenode_script3
+updatenode_P_script1_script2
+updatenode_without_flag
+chdef_null
+chdef_t_node
+chdef_t_network
+chdef_p
+chdef_m
+chdef_z
+chdef_group
+chdef_group_p
+chdef_dynamic_group
+chdef_multiple_keys
+chdef_n
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+getmacs_noderange
+getmacs_d
+getmacs_f_D
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+lslite_i
+lslite_noderange
+lslite_h
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_err_node
+rinv_bus
+rinv_config
+rinv_serial
+rinv_model
+rinv_firm
+rinv_all
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_off
+rpower_stat
+rpower_boot
+rpower_on
+rpower_reset
+rpower_noderange
+rpower_noderange_nodeps
+rpower_err_noderange
+rscan_noderange
+rscan_x
+rscan_z
+rscan_w
+rscan_x_w
+rscan_z_w
+rvitals_lcds
+rvitals_all
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_p_auditlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makehosts_h
+makehosts_help
+makehosts_null
+makehosts_l
+makehosts_d
+makehosts_n
+makehosts_n_noderange
+xdcp_src_dst
+makedns_h
+makedns_d_node
+makedns_n
+makedns
+noderange_individual_node
+noderange_individual_grp
+noderange_node01-node10
+noderange_group1-group3
+noderange_10-20
+noderange_XCAT_NODE_PREFIX
+noderange_XCAT_NODE_SUFFIX
+noderange_exclusion
+noderange_group_intersection
+confignics_config_one_port_single_value
+confignics_config_multiple_ports_single_value
+confignics_config_multiple_ports_multiple_value
+confignics_config_multiple_port_withnichostnamesuffixes_multiple_value
+confignics_config_multiple_port_withnicaliases_multiple_value
+confignics_disable_set_to_yes
+confignics_disable_set_to_1
+confignics_s
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+makentp_v
+makentp_h
+makentp_V
+makentp
+makentp_a
+nodeset_check_warninginfo
+runcmdinstaller
+runcmdinstaller_command
+get_xcat_postscripts_loginfo
+updatenode_postscripts_loginfo
+bmcdiscover_h
+bmcdiscover_nmap_range
+bmcdiscover_v
+bmcdiscover_check_paswd
+bmcdiscover_check_passwd_wrong
+bmcdiscover_get_ipsource
+bmcdiscover_range_w
+bmcdiscover_range_z
+xcatd_start
+xcatd_stop
+xcatd_restart
+run_command_with_XCATBYPASS
+disable_root_permission_in_policy_table
+assign_certain_command_permission
+reg_linux_diskless_installation_flat
+reg_linux_statelite_installation_flat
+SN_setup_case
+reg_linux_diskfull_installation_hierarchy
+reg_linux_diskless_installation_hierarchy
+reg_linux_statelite_installation_hierarchy_by_ramdisk
+reg_linux_statelite_installation_hierarchy_by_nfs
+redhat_migration1
+redhat_migration2
diff --git a/xCAT-test/autotest/bundle/rhels6.7_x86_64.bundle b/xCAT-test/autotest/bundle/rhels6.7_x86_64.bundle
new file mode 100644
index 000000000..2e7b87490
--- /dev/null
+++ b/xCAT-test/autotest/bundle/rhels6.7_x86_64.bundle
@@ -0,0 +1,208 @@
+reg_linux_diskfull_installation_flat
+makehosts_h
+makehosts_help
+makehosts_n
+makehosts_n_noderange
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+lslite_i
+lslite_noderange
+lslite_h
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_noderange
+nodestat_err_node
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_n
+makedns
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_i_linux
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+nodeset_check_warninginfo
+reg_linux_diskless_installation_flat
+reg_linux_statelite_installation_flat
+SN_setup_case
+reg_linux_diskfull_installation_hierarchy
+reg_linux_diskless_installation_hierarchy
+reg_linux_statelite_installation_hierarchy_by_ramdisk
+reg_linux_statelite_installation_hierarchy_by_nfs
+redhat_migration1
+redhat_migration2
diff --git a/xCAT-test/autotest/bundle/rhels6.8_ppc64.bundle b/xCAT-test/autotest/bundle/rhels6.8_ppc64.bundle
new file mode 100644
index 000000000..81ede5553
--- /dev/null
+++ b/xCAT-test/autotest/bundle/rhels6.8_ppc64.bundle
@@ -0,0 +1,303 @@
+reg_linux_diskfull_installation_flat
+updatenode_h
+updatenode_v
+updatenode_diskful_syncfiles
+updatenode_diskful_syncfiles_rename
+updatenode_diskful_syncfiles_dir
+updatenode_diskful_syncfiles_multi_files
+updatenode_syncfile_EXECUTE
+updatenode_syncfile_EXECUTEALWAYS
+updatenode_syncfile_APPEND
+updatenode_syncfile_MERGE
+updatenode_P_script1
+updatenode_P_script2
+updatenode_f_incompatible_flags
+updatenode_k_incompatible_flags
+updatenode_diskful_syncfiles_P_script1
+updatenode_script3
+updatenode_P_script1_script2
+updatenode_without_flag
+chdef_null
+chdef_t_node
+chdef_t_network
+chdef_p
+chdef_m
+chdef_z
+chdef_group
+chdef_group_p
+chdef_dynamic_group
+chdef_multiple_keys
+chdef_n
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+getmacs_noderange
+getmacs_d
+getmacs_f_D
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+lslite_i
+lslite_noderange
+lslite_h
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_err_node
+rinv_bus
+rinv_config
+rinv_serial
+rinv_model
+rinv_firm
+rinv_all
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_off
+rpower_stat
+rpower_boot
+rpower_on
+rpower_reset
+rpower_noderange
+rpower_noderange_nodeps
+rpower_err_noderange
+rscan_noderange
+rscan_x
+rscan_z
+rscan_w
+rscan_x_w
+rscan_z_w
+rvitals_lcds
+rvitals_all
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_p_auditlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makehosts_h
+makehosts_help
+makehosts_null
+makehosts_l
+makehosts_d
+makehosts_n
+makehosts_n_noderange
+xdcp_src_dst
+makedns_h
+makedns_d_node
+makedns_n
+makedns
+noderange_individual_node
+noderange_individual_grp
+noderange_node01-node10
+noderange_group1-group3
+noderange_10-20
+noderange_XCAT_NODE_PREFIX
+noderange_XCAT_NODE_SUFFIX
+noderange_exclusion
+noderange_group_intersection
+confignics_config_one_port_single_value
+confignics_config_multiple_ports_single_value
+confignics_config_multiple_ports_multiple_value
+confignics_config_multiple_port_withnichostnamesuffixes_multiple_value
+confignics_config_multiple_port_withnicaliases_multiple_value
+confignics_disable_set_to_yes
+confignics_disable_set_to_1
+confignics_s
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+makentp_v
+makentp_h
+makentp_V
+makentp
+makentp_a
+nodeset_check_warninginfo
+runcmdinstaller
+runcmdinstaller_command
+get_xcat_postscripts_loginfo
+updatenode_postscripts_loginfo
+bmcdiscover_h
+bmcdiscover_nmap_range
+bmcdiscover_v
+bmcdiscover_check_paswd
+bmcdiscover_check_passwd_wrong
+bmcdiscover_get_ipsource
+bmcdiscover_range_w
+bmcdiscover_range_z
+xcatd_start
+xcatd_stop
+xcatd_restart
+run_command_with_XCATBYPASS
+disable_root_permission_in_policy_table
+assign_certain_command_permission
+reg_linux_diskless_installation_flat
+reg_linux_statelite_installation_flat
+SN_setup_case
+reg_linux_diskfull_installation_hierarchy
+reg_linux_diskless_installation_hierarchy
+reg_linux_statelite_installation_hierarchy_by_ramdisk
+reg_linux_statelite_installation_hierarchy_by_nfs
diff --git a/xCAT-test/autotest/bundle/rhels6.8_x86_64.bundle b/xCAT-test/autotest/bundle/rhels6.8_x86_64.bundle
new file mode 100644
index 000000000..cec465f07
--- /dev/null
+++ b/xCAT-test/autotest/bundle/rhels6.8_x86_64.bundle
@@ -0,0 +1,206 @@
+reg_linux_diskfull_installation_flat
+makehosts_h
+makehosts_help
+makehosts_n
+makehosts_n_noderange
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+lslite_i
+lslite_noderange
+lslite_h
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_noderange
+nodestat_err_node
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_n
+makedns
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_i_linux
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+nodeset_check_warninginfo
+reg_linux_diskless_installation_flat
+reg_linux_statelite_installation_flat
+SN_setup_case
+reg_linux_diskfull_installation_hierarchy
+reg_linux_diskless_installation_hierarchy
+reg_linux_statelite_installation_hierarchy_by_ramdisk
+reg_linux_statelite_installation_hierarchy_by_nfs
diff --git a/xCAT-test/autotest/bundle/rhels7.2_ppc64.bundle b/xCAT-test/autotest/bundle/rhels7.2_ppc64.bundle
new file mode 100644
index 000000000..243184594
--- /dev/null
+++ b/xCAT-test/autotest/bundle/rhels7.2_ppc64.bundle
@@ -0,0 +1,305 @@
+reg_linux_diskfull_installation_flat
+updatenode_h
+updatenode_v
+updatenode_diskful_syncfiles
+updatenode_diskful_syncfiles_rename
+updatenode_diskful_syncfiles_dir
+updatenode_diskful_syncfiles_multi_files
+updatenode_syncfile_EXECUTE
+updatenode_syncfile_EXECUTEALWAYS
+updatenode_syncfile_APPEND
+updatenode_syncfile_MERGE
+updatenode_P_script1
+updatenode_P_script2
+updatenode_f_incompatible_flags
+updatenode_k_incompatible_flags
+updatenode_diskful_syncfiles_P_script1
+updatenode_script3
+updatenode_P_script1_script2
+updatenode_without_flag
+chdef_null
+chdef_t_node
+chdef_t_network
+chdef_p
+chdef_m
+chdef_z
+chdef_group
+chdef_group_p
+chdef_dynamic_group
+chdef_multiple_keys
+chdef_n
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+getmacs_noderange
+getmacs_d
+getmacs_f_D
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+lslite_i
+lslite_noderange
+lslite_h
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_err_node
+rinv_bus
+rinv_config
+rinv_serial
+rinv_model
+rinv_firm
+rinv_all
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_off
+rpower_stat
+rpower_boot
+rpower_on
+rpower_reset
+rpower_noderange
+rpower_noderange_nodeps
+rpower_err_noderange
+rscan_noderange
+rscan_x
+rscan_z
+rscan_w
+rscan_x_w
+rscan_z_w
+rvitals_lcds
+rvitals_all
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_p_auditlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makehosts_h
+makehosts_help
+makehosts_null
+makehosts_l
+makehosts_d
+makehosts_n
+makehosts_n_noderange
+xdcp_src_dst
+makedns_h
+makedns_d_node
+makedns_n
+makedns
+noderange_individual_node
+noderange_individual_grp
+noderange_node01-node10
+noderange_group1-group3
+noderange_10-20
+noderange_XCAT_NODE_PREFIX
+noderange_XCAT_NODE_SUFFIX
+noderange_exclusion
+noderange_group_intersection
+confignics_config_one_port_single_value
+confignics_config_multiple_ports_single_value
+confignics_config_multiple_ports_multiple_value
+confignics_config_multiple_port_withnichostnamesuffixes_multiple_value
+confignics_config_multiple_port_withnicaliases_multiple_value
+confignics_disable_set_to_yes
+confignics_disable_set_to_1
+confignics_s
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+makentp_v
+makentp_h
+makentp_V
+makentp
+makentp_a
+nodeset_check_warninginfo
+runcmdinstaller
+runcmdinstaller_command
+get_xcat_postscripts_loginfo
+updatenode_postscripts_loginfo
+bmcdiscover_h
+bmcdiscover_nmap_range
+bmcdiscover_v
+bmcdiscover_check_paswd
+bmcdiscover_check_passwd_wrong
+bmcdiscover_get_ipsource
+bmcdiscover_range_w
+bmcdiscover_range_z
+xcatd_start
+xcatd_stop
+xcatd_restart
+run_command_with_XCATBYPASS
+disable_root_permission_in_policy_table
+assign_certain_command_permission
+reg_linux_diskless_installation_flat
+reg_linux_statelite_installation_flat
+SN_setup_case
+reg_linux_diskfull_installation_hierarchy
+reg_linux_diskless_installation_hierarchy
+reg_linux_statelite_installation_hierarchy_by_ramdisk
+reg_linux_statelite_installation_hierarchy_by_nfs
+redhat_migration1
+redhat_migration2
diff --git a/xCAT-test/autotest/bundle/rhels7.2_ppc64le.bundle b/xCAT-test/autotest/bundle/rhels7.2_ppc64le.bundle
new file mode 100644
index 000000000..401756957
--- /dev/null
+++ b/xCAT-test/autotest/bundle/rhels7.2_ppc64le.bundle
@@ -0,0 +1,196 @@
+Diskless_installation_flat_p8_le
+Full_installation_flat_p8_le
+makehosts_h
+makehosts_help
+makehosts_n
+makehosts_n_noderange
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_err_node
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_n
+makedns
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_i_linux
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+redhat_migration1
+redhat_migration2
diff --git a/xCAT-test/autotest/bundle/rhels7.2_x86_64.bundle b/xCAT-test/autotest/bundle/rhels7.2_x86_64.bundle
new file mode 100644
index 000000000..2e7b87490
--- /dev/null
+++ b/xCAT-test/autotest/bundle/rhels7.2_x86_64.bundle
@@ -0,0 +1,208 @@
+reg_linux_diskfull_installation_flat
+makehosts_h
+makehosts_help
+makehosts_n
+makehosts_n_noderange
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+lslite_i
+lslite_noderange
+lslite_h
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_noderange
+nodestat_err_node
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_n
+makedns
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_i_linux
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+nodeset_check_warninginfo
+reg_linux_diskless_installation_flat
+reg_linux_statelite_installation_flat
+SN_setup_case
+reg_linux_diskfull_installation_hierarchy
+reg_linux_diskless_installation_hierarchy
+reg_linux_statelite_installation_hierarchy_by_ramdisk
+reg_linux_statelite_installation_hierarchy_by_nfs
+redhat_migration1
+redhat_migration2
diff --git a/xCAT-test/autotest/bundle/sles11.4_ppc64.bundle b/xCAT-test/autotest/bundle/sles11.4_ppc64.bundle
new file mode 100644
index 000000000..b46de71a3
--- /dev/null
+++ b/xCAT-test/autotest/bundle/sles11.4_ppc64.bundle
@@ -0,0 +1,269 @@
+reg_linux_diskfull_installation_flat
+chdef_null
+chdef_t_node
+chdef_t_network
+chdef_p
+chdef_m
+chdef_z
+chdef_group
+chdef_group_p
+chdef_dynamic_group
+chdef_multiple_keys
+chdef_n
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+getmacs_noderange
+getmacs_d
+getmacs_f_D
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+lslite_i
+lslite_noderange
+lslite_h
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_err_node
+rinv_bus
+rinv_config
+rinv_serial
+rinv_model
+rinv_firm
+rinv_all
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_off
+rpower_stat
+rpower_boot
+rpower_on
+rpower_reset
+rpower_noderange
+rpower_noderange_nodeps
+rpower_err_noderange
+rscan_noderange
+rscan_x
+rscan_z
+rscan_w
+rscan_x_w
+rscan_z_w
+rvitals_lcds
+rvitals_all
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_p_auditlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makehosts_h
+makehosts_help
+makehosts_null
+makehosts_l
+makehosts_d
+makehosts_n
+makehosts_n_noderange
+xdcp_src_dst
+makedns_h
+makedns_d_node
+makedns_n
+makedns
+noderange_individual_node
+noderange_individual_grp
+noderange_node01-node10
+noderange_group1-group3
+noderange_10-20
+noderange_XCAT_NODE_PREFIX
+noderange_XCAT_NODE_SUFFIX
+noderange_exclusion
+noderange_group_intersection
+confignics_config_one_port_single_value
+confignics_config_multiple_ports_single_value
+confignics_config_multiple_ports_multiple_value
+confignics_config_multiple_port_withnichostnamesuffixes_multiple_value
+confignics_config_multiple_port_withnicaliases_multiple_value
+confignics_disable_set_to_yes
+confignics_disable_set_to_1
+confignics_s
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+makentp_v
+makentp_h
+makentp_V
+makentp
+makentp_a
+nodeset_check_warninginfo
+reg_linux_diskless_installation_flat
+reg_linux_statelite_installation_flat
+SN_setup_case
+reg_linux_diskfull_installation_hierarchy
+reg_linux_diskless_installation_hierarchy
+reg_linux_statelite_installation_hierarchy_by_ramdisk
+reg_linux_statelite_installation_hierarchy_by_nfs
+sles_migration1
+sles_migration2
diff --git a/xCAT-test/autotest/bundle/sles11.4_ppc64le.bundle b/xCAT-test/autotest/bundle/sles11.4_ppc64le.bundle
new file mode 100644
index 000000000..ed800847f
--- /dev/null
+++ b/xCAT-test/autotest/bundle/sles11.4_ppc64le.bundle
@@ -0,0 +1,199 @@
+Diskless_installation_flat_p8_le
+Full_installation_flat_p8_le
+makehosts_h
+makehosts_help
+makehosts_n
+makehosts_n_noderange
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_err_symble
+chtab_err_table
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_err_node
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_n
+makedns
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_i_linux
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+
diff --git a/xCAT-test/autotest/bundle/sles11.4_x86_64.bundle b/xCAT-test/autotest/bundle/sles11.4_x86_64.bundle
new file mode 100644
index 000000000..8fd6db580
--- /dev/null
+++ b/xCAT-test/autotest/bundle/sles11.4_x86_64.bundle
@@ -0,0 +1,218 @@
+reg_linux_diskfull_installation_flat
+makehosts_h
+makehosts_help
+makehosts_n
+makehosts_n_noderange
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_err_symble
+chtab_err_table
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+lslite_i
+lslite_noderange
+lslite_h
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_noderange
+nodestat_err_node
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_n
+makedns
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_i_linux
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+nodeset_check_warninginfo
+xcatd_start
+xcatd_stop
+xcatd_restart
+run_command_with_XCATBYPASS
+disable_root_permission_in_policy_table
+assign_certain_command_permission
+reg_linux_diskless_installation_flat
+reg_linux_statelite_installation_flat
+SN_setup_case
+reg_linux_diskfull_installation_hierarchy
+reg_linux_diskless_installation_hierarchy
+reg_linux_statelite_installation_hierarchy_by_ramdisk
+reg_linux_statelite_installation_hierarchy_by_nfs
+sles_migration1
+sles_migration2
diff --git a/xCAT-test/autotest/bundle/sles12.1_ppc64.bundle b/xCAT-test/autotest/bundle/sles12.1_ppc64.bundle
new file mode 100644
index 000000000..04a1ebe34
--- /dev/null
+++ b/xCAT-test/autotest/bundle/sles12.1_ppc64.bundle
@@ -0,0 +1,262 @@
+reg_linux_diskfull_installation_flat
+chdef_null
+chdef_t_node
+chdef_t_network
+chdef_p
+chdef_m
+chdef_z
+chdef_group
+chdef_group_p
+chdef_dynamic_group
+chdef_multiple_keys
+chdef_n
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+getmacs_noderange
+getmacs_d
+getmacs_f_D
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+lslite_i
+lslite_noderange
+lslite_h
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_err_node
+rinv_bus
+rinv_config
+rinv_serial
+rinv_model
+rinv_firm
+rinv_all
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_off
+rpower_stat
+rpower_boot
+rpower_on
+rpower_reset
+rpower_noderange
+rpower_noderange_nodeps
+rpower_err_noderange
+rscan_noderange
+rscan_x
+rscan_z
+rscan_w
+rscan_x_w
+rscan_z_w
+rvitals_lcds
+rvitals_all
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_p_auditlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makehosts_h
+makehosts_help
+makehosts_null
+makehosts_l
+makehosts_d
+makehosts_n
+makehosts_n_noderange
+xdcp_src_dst
+makedns_h
+makedns_d_node
+makedns_n
+makedns
+noderange_individual_node
+noderange_individual_grp
+noderange_node01-node10
+noderange_group1-group3
+noderange_10-20
+noderange_XCAT_NODE_PREFIX
+noderange_XCAT_NODE_SUFFIX
+noderange_exclusion
+noderange_group_intersection
+confignics_config_one_port_single_value
+confignics_config_multiple_ports_single_value
+confignics_config_multiple_ports_multiple_value
+confignics_config_multiple_port_withnichostnamesuffixes_multiple_value
+confignics_config_multiple_port_withnicaliases_multiple_value
+confignics_disable_set_to_yes
+confignics_disable_set_to_1
+confignics_s
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+makentp_v
+makentp_h
+makentp_V
+makentp
+makentp_a
+nodeset_check_warninginfo
+reg_linux_diskless_installation_flat
+reg_linux_statelite_installation_flat
diff --git a/xCAT-test/autotest/bundle/sles12.1_ppc64le.bundle b/xCAT-test/autotest/bundle/sles12.1_ppc64le.bundle
new file mode 100644
index 000000000..a3716f22c
--- /dev/null
+++ b/xCAT-test/autotest/bundle/sles12.1_ppc64le.bundle
@@ -0,0 +1,200 @@
+Diskless_installation_flat_p8_le
+Full_installation_flat_p8_le
+makehosts_h
+makehosts_help
+makehosts_n
+makehosts_n_noderange
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_err_symble
+chtab_err_table
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_err_node
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_n
+makedns
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_i_linux
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+sles_migration1
+sles_migration2
diff --git a/xCAT-test/autotest/bundle/sles12.1_x86_64.bundle b/xCAT-test/autotest/bundle/sles12.1_x86_64.bundle
new file mode 100644
index 000000000..0225c9d50
--- /dev/null
+++ b/xCAT-test/autotest/bundle/sles12.1_x86_64.bundle
@@ -0,0 +1,213 @@
+reg_linux_diskfull_installation_flat
+makehosts_h
+makehosts_help
+makehosts_n
+makehosts_n_noderange
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_err_symble
+chtab_err_table
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+lslite_i
+lslite_noderange
+lslite_h
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_noderange
+nodestat_err_node
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_n
+makedns
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_i_linux
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+nodeset_check_warninginfo
+xcatd_start
+xcatd_stop
+xcatd_restart
+run_command_with_XCATBYPASS
+disable_root_permission_in_policy_table
+assign_certain_command_permission
+reg_linux_diskless_installation_flat
+reg_linux_statelite_installation_flat
+sles_migration1
+sles_migration2
diff --git a/xCAT-test/autotest/bundle/sles12_ppc64.bundle b/xCAT-test/autotest/bundle/sles12_ppc64.bundle
new file mode 100644
index 000000000..04a1ebe34
--- /dev/null
+++ b/xCAT-test/autotest/bundle/sles12_ppc64.bundle
@@ -0,0 +1,262 @@
+reg_linux_diskfull_installation_flat
+chdef_null
+chdef_t_node
+chdef_t_network
+chdef_p
+chdef_m
+chdef_z
+chdef_group
+chdef_group_p
+chdef_dynamic_group
+chdef_multiple_keys
+chdef_n
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+getmacs_noderange
+getmacs_d
+getmacs_f_D
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+lslite_i
+lslite_noderange
+lslite_h
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_err_node
+rinv_bus
+rinv_config
+rinv_serial
+rinv_model
+rinv_firm
+rinv_all
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_off
+rpower_stat
+rpower_boot
+rpower_on
+rpower_reset
+rpower_noderange
+rpower_noderange_nodeps
+rpower_err_noderange
+rscan_noderange
+rscan_x
+rscan_z
+rscan_w
+rscan_x_w
+rscan_z_w
+rvitals_lcds
+rvitals_all
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_p_auditlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makehosts_h
+makehosts_help
+makehosts_null
+makehosts_l
+makehosts_d
+makehosts_n
+makehosts_n_noderange
+xdcp_src_dst
+makedns_h
+makedns_d_node
+makedns_n
+makedns
+noderange_individual_node
+noderange_individual_grp
+noderange_node01-node10
+noderange_group1-group3
+noderange_10-20
+noderange_XCAT_NODE_PREFIX
+noderange_XCAT_NODE_SUFFIX
+noderange_exclusion
+noderange_group_intersection
+confignics_config_one_port_single_value
+confignics_config_multiple_ports_single_value
+confignics_config_multiple_ports_multiple_value
+confignics_config_multiple_port_withnichostnamesuffixes_multiple_value
+confignics_config_multiple_port_withnicaliases_multiple_value
+confignics_disable_set_to_yes
+confignics_disable_set_to_1
+confignics_s
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+makentp_v
+makentp_h
+makentp_V
+makentp
+makentp_a
+nodeset_check_warninginfo
+reg_linux_diskless_installation_flat
+reg_linux_statelite_installation_flat
diff --git a/xCAT-test/autotest/bundle/sles12_ppc64le.bundle b/xCAT-test/autotest/bundle/sles12_ppc64le.bundle
new file mode 100644
index 000000000..04a1ebe34
--- /dev/null
+++ b/xCAT-test/autotest/bundle/sles12_ppc64le.bundle
@@ -0,0 +1,262 @@
+reg_linux_diskfull_installation_flat
+chdef_null
+chdef_t_node
+chdef_t_network
+chdef_p
+chdef_m
+chdef_z
+chdef_group
+chdef_group_p
+chdef_dynamic_group
+chdef_multiple_keys
+chdef_n
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+getmacs_noderange
+getmacs_d
+getmacs_f_D
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+lslite_i
+lslite_noderange
+lslite_h
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_err_node
+rinv_bus
+rinv_config
+rinv_serial
+rinv_model
+rinv_firm
+rinv_all
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_off
+rpower_stat
+rpower_boot
+rpower_on
+rpower_reset
+rpower_noderange
+rpower_noderange_nodeps
+rpower_err_noderange
+rscan_noderange
+rscan_x
+rscan_z
+rscan_w
+rscan_x_w
+rscan_z_w
+rvitals_lcds
+rvitals_all
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_p_auditlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makehosts_h
+makehosts_help
+makehosts_null
+makehosts_l
+makehosts_d
+makehosts_n
+makehosts_n_noderange
+xdcp_src_dst
+makedns_h
+makedns_d_node
+makedns_n
+makedns
+noderange_individual_node
+noderange_individual_grp
+noderange_node01-node10
+noderange_group1-group3
+noderange_10-20
+noderange_XCAT_NODE_PREFIX
+noderange_XCAT_NODE_SUFFIX
+noderange_exclusion
+noderange_group_intersection
+confignics_config_one_port_single_value
+confignics_config_multiple_ports_single_value
+confignics_config_multiple_ports_multiple_value
+confignics_config_multiple_port_withnichostnamesuffixes_multiple_value
+confignics_config_multiple_port_withnicaliases_multiple_value
+confignics_disable_set_to_yes
+confignics_disable_set_to_1
+confignics_s
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+makentp_v
+makentp_h
+makentp_V
+makentp
+makentp_a
+nodeset_check_warninginfo
+reg_linux_diskless_installation_flat
+reg_linux_statelite_installation_flat
diff --git a/xCAT-test/autotest/bundle/sles12_x86_64.bundle b/xCAT-test/autotest/bundle/sles12_x86_64.bundle
new file mode 100644
index 000000000..a5da4cee6
--- /dev/null
+++ b/xCAT-test/autotest/bundle/sles12_x86_64.bundle
@@ -0,0 +1,211 @@
+reg_linux_diskfull_installation_flat
+makehosts_h
+makehosts_help
+makehosts_n
+makehosts_n_noderange
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_err_symble
+chtab_err_table
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+lslite_i
+lslite_noderange
+lslite_h
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a
+makedhcp_a_d
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_noderange
+nodestat_err_node
+rinv_noderange_err
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_n
+makedns
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_i_linux
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+nodeset_check_warninginfo
+xcatd_start
+xcatd_stop
+xcatd_restart
+run_command_with_XCATBYPASS
+disable_root_permission_in_policy_table
+assign_certain_command_permission
+reg_linux_diskless_installation_flat
+reg_linux_statelite_installation_flat
diff --git a/xCAT-test/autotest/bundle/ubuntu14.04.3_ppc64le.bundle b/xCAT-test/autotest/bundle/ubuntu14.04.3_ppc64le.bundle
new file mode 100644
index 000000000..43e2804ee
--- /dev/null
+++ b/xCAT-test/autotest/bundle/ubuntu14.04.3_ppc64le.bundle
@@ -0,0 +1,244 @@
+Diskless_installation_flat_p8_le
+Full_installation_flat_p8_le
+makehosts_h
+makehosts_help
+makehosts_n_noderange
+makehosts_n
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a_ubuntu
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_specificvalue
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_tab
+xcatstanzafile_normal
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_err_node
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_ubuntu_n
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+addkit_v
+addkit_h
+addkit_kit
+addkit_i
+addkit_multikit
+addkit_p
+addkitcomp_v
+addkitcomp_h
+addkitcomp_i
+addkitcomp_f
+buildkit_v
+buildkit_h
+buildkit_create
+buildkit_create_l
+buildkit_cleanrepo_all
+buildkit_buildtar
+chkkitcomp_v
+chkkitcomp_h
+chkkitcomp_V
+lskit_v
+lskit_h
+lskit_F
+lskit_K
+lskit_R
+lskit_C
+lskitcomp_v
+lskitcomp_h
+lskitcomp_C
+lskitcomp_C
+lskitcomp_S
+lskitdeployparam_v
+lskitdeployparam_h
+lskitdeployparam_no_param
+lskitdeployparam_k_1
+lskitdeployparam_c_1
+rmkit_v
+rmkit_h
+rmkit_t_no
+rmkit_t_yes
+rmkit_f
+rmkit_V
+rmkitcomp_v
+rmkitcomp_h
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+xcatd_start
+xcatd_stop
+xcatd_restart
+run_command_with_XCATBYPASS
+disable_root_permission_in_policy_table
+assign_certain_command_permission
+ubuntu_migration1_p8le
+ubuntu_migration2_p8le
diff --git a/xCAT-test/autotest/bundle/ubuntu14.04.3_x86_64.bundle b/xCAT-test/autotest/bundle/ubuntu14.04.3_x86_64.bundle
new file mode 100644
index 000000000..e7ffd6bb9
--- /dev/null
+++ b/xCAT-test/autotest/bundle/ubuntu14.04.3_x86_64.bundle
@@ -0,0 +1,261 @@
+Ubuntu_diskless_installation_flat_x86_vm
+Ubuntu_full_installation_flat_x86_vm
+Full_installation_flat_docker
+makehosts_h
+makehosts_help
+makehosts_n_noderange
+makehosts_n
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a_ubuntu
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_noderange
+nodestat_err_node
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_ubuntu_n
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+addkit_v
+addkit_h
+addkit_kit
+addkit_i
+addkit_multikit
+addkit_p
+addkitcomp_v
+addkitcomp_h
+addkitcomp_i
+addkitcomp_f
+buildkit_v
+buildkit_h
+buildkit_create
+buildkit_create_l
+buildkit_buildrepo_all
+buildkit_buildrepo_ubuntu
+buildkit_cleanrepo_all
+buildkit_cleanrepo_ubuntu
+buildkit_listrepo
+buildkit_buildtar
+buildkit_cleantar
+buildkit_partialkit_ubuntu
+buildkit_partialkit_completekit
+chkkitcomp_v
+chkkitcomp_h
+chkkitcomp_V
+lskit_v
+lskit_h
+lskit_F
+lskit_K
+lskit_R
+lskit_C
+lskitcomp_v
+lskitcomp_h
+lskitcomp_C
+lskitcomp_C
+lskitcomp_S
+lskitdeployparam_v
+lskitdeployparam_h
+lskitdeployparam_no_param
+lskitdeployparam_k_1
+lskitdeployparam_c_1
+rmkit_v
+rmkit_h
+rmkit_t_no
+rmkit_t_yes
+rmkit_f
+rmkit_V
+rmkitcomp_v
+rmkitcomp_h
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+nodeset_check_warninginfo
+rpower_stop
+rpower_start
+rpower_state
+rpower_restart
+rpower_pause
+rpower_unpause
+mkdocker_h
+mkdocker_command
+rmdocker_h
+rmdocker_command
+rmdocker_f_command
+lsdocker_h_command
+lsdocker_l_command
+ubuntux_migration1_vm
+ubuntux_migration2_vm
diff --git a/xCAT-test/autotest/bundle/ubuntu14.04.4_ppc64le.bundle b/xCAT-test/autotest/bundle/ubuntu14.04.4_ppc64le.bundle
new file mode 100644
index 000000000..9990fb91d
--- /dev/null
+++ b/xCAT-test/autotest/bundle/ubuntu14.04.4_ppc64le.bundle
@@ -0,0 +1,243 @@
+Diskless_installation_flat_p8_le
+Full_installation_flat_p8_le
+makehosts_h
+makehosts_help
+makehosts_n_noderange
+makehosts_n
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a_ubuntu
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_specificvalue
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_tab
+xcatstanzafile_normal
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_err_node
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_ubuntu_n
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+addkit_v
+addkit_h
+addkit_kit
+addkit_i
+addkit_multikit
+addkit_p
+addkitcomp_v
+addkitcomp_h
+addkitcomp_i
+addkitcomp_f
+buildkit_v
+buildkit_h
+buildkit_create
+buildkit_create_l
+buildkit_cleanrepo_all
+buildkit_buildtar
+chkkitcomp_v
+chkkitcomp_h
+chkkitcomp_V
+lskit_v
+lskit_h
+lskit_F
+lskit_K
+lskit_R
+lskit_C
+lskitcomp_v
+lskitcomp_h
+lskitcomp_C
+lskitcomp_C
+lskitcomp_S
+lskitdeployparam_v
+lskitdeployparam_h
+lskitdeployparam_no_param
+lskitdeployparam_k_1
+lskitdeployparam_c_1
+rmkit_v
+rmkit_h
+rmkit_t_no
+rmkit_t_yes
+rmkit_f
+rmkit_V
+rmkitcomp_v
+rmkitcomp_h
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+xcatd_start
+xcatd_stop
+xcatd_restart
+run_command_with_XCATBYPASS
+disable_root_permission_in_policy_table
+assign_certain_command_permission
+
diff --git a/xCAT-test/autotest/bundle/ubuntu14.04.4_x86_64.bundle b/xCAT-test/autotest/bundle/ubuntu14.04.4_x86_64.bundle
new file mode 100644
index 000000000..eeab10ae7
--- /dev/null
+++ b/xCAT-test/autotest/bundle/ubuntu14.04.4_x86_64.bundle
@@ -0,0 +1,259 @@
+Ubuntu_diskless_installation_flat_x86_vm
+Ubuntu_full_installation_flat_x86_vm
+Full_installation_flat_docker
+makehosts_h
+makehosts_help
+makehosts_n_noderange
+makehosts_n
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a_ubuntu
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_noderange
+nodestat_err_node
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_ubuntu_n
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+addkit_v
+addkit_h
+addkit_kit
+addkit_i
+addkit_multikit
+addkit_p
+addkitcomp_v
+addkitcomp_h
+addkitcomp_i
+addkitcomp_f
+buildkit_v
+buildkit_h
+buildkit_create
+buildkit_create_l
+buildkit_buildrepo_all
+buildkit_buildrepo_ubuntu
+buildkit_cleanrepo_all
+buildkit_cleanrepo_ubuntu
+buildkit_listrepo
+buildkit_buildtar
+buildkit_cleantar
+buildkit_partialkit_ubuntu
+buildkit_partialkit_completekit
+chkkitcomp_v
+chkkitcomp_h
+chkkitcomp_V
+lskit_v
+lskit_h
+lskit_F
+lskit_K
+lskit_R
+lskit_C
+lskitcomp_v
+lskitcomp_h
+lskitcomp_C
+lskitcomp_C
+lskitcomp_S
+lskitdeployparam_v
+lskitdeployparam_h
+lskitdeployparam_no_param
+lskitdeployparam_k_1
+lskitdeployparam_c_1
+rmkit_v
+rmkit_h
+rmkit_t_no
+rmkit_t_yes
+rmkit_f
+rmkit_V
+rmkitcomp_v
+rmkitcomp_h
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+nodeset_check_warninginfo
+rpower_stop
+rpower_start
+rpower_state
+rpower_restart
+rpower_pause
+rpower_unpause
+mkdocker_h
+mkdocker_command
+rmdocker_h
+rmdocker_command
+rmdocker_f_command
+lsdocker_h_command
+lsdocker_l_command
\ No newline at end of file
diff --git a/xCAT-test/autotest/bundle/ubuntu16.04_ppc64le.bundle b/xCAT-test/autotest/bundle/ubuntu16.04_ppc64le.bundle
new file mode 100644
index 000000000..de643cfcc
--- /dev/null
+++ b/xCAT-test/autotest/bundle/ubuntu16.04_ppc64le.bundle
@@ -0,0 +1,242 @@
+Diskless_installation_flat_p8_le
+Full_installation_flat_p8_le
+makehosts_h
+makehosts_help
+makehosts_n_noderange
+makehosts_n
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a_ubuntu
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_specificvalue
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_tab
+xcatstanzafile_normal
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_err_node
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_ubuntu_n
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+addkit_v
+addkit_h
+addkit_kit
+addkit_i
+addkit_multikit
+addkit_p
+addkitcomp_v
+addkitcomp_h
+addkitcomp_i
+addkitcomp_f
+buildkit_v
+buildkit_h
+buildkit_create
+buildkit_create_l
+buildkit_cleanrepo_all
+buildkit_buildtar
+chkkitcomp_v
+chkkitcomp_h
+chkkitcomp_V
+lskit_v
+lskit_h
+lskit_F
+lskit_K
+lskit_R
+lskit_C
+lskitcomp_v
+lskitcomp_h
+lskitcomp_C
+lskitcomp_C
+lskitcomp_S
+lskitdeployparam_v
+lskitdeployparam_h
+lskitdeployparam_no_param
+lskitdeployparam_k_1
+lskitdeployparam_c_1
+rmkit_v
+rmkit_h
+rmkit_t_no
+rmkit_t_yes
+rmkit_f
+rmkit_V
+rmkitcomp_v
+rmkitcomp_h
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+xcatd_start
+xcatd_stop
+xcatd_restart
+run_command_with_XCATBYPASS
+disable_root_permission_in_policy_table
+assign_certain_command_permission
diff --git a/xCAT-test/autotest/bundle/ubuntu16.04_x86_64.bundle b/xCAT-test/autotest/bundle/ubuntu16.04_x86_64.bundle
new file mode 100644
index 000000000..eeab10ae7
--- /dev/null
+++ b/xCAT-test/autotest/bundle/ubuntu16.04_x86_64.bundle
@@ -0,0 +1,259 @@
+Ubuntu_diskless_installation_flat_x86_vm
+Ubuntu_full_installation_flat_x86_vm
+Full_installation_flat_docker
+makehosts_h
+makehosts_help
+makehosts_n_noderange
+makehosts_n
+chdef_null
+chdef_z
+chdef_t_o_error
+chtab_null
+chtab_d
+chtab_modify_node
+chtab_modify_key
+chtab_h
+chtab_v
+packimage_o_p_a_m
+packimage_p_a_o
+packimage_imagename
+packimage_h
+packimage_v
+pping_h
+pping_v
+pping_node
+gettab_key_table
+gettab_H
+gettab_err
+gettab_h
+lsdef_null
+lsdef_a
+lsdef_t_o_l
+lsdef_t_o_l_z
+lsdef_t
+lsdef_t_i_o
+lsdef_t_w
+lsdef_t_err
+makeconservercf_null
+makeconservercf_noderange
+makeconservercf_d
+makedhcp_n
+makedhcp_a_ubuntu
+makedhcp_d
+mkdef_null
+mkdef_z
+mkdef_t_o_error
+nodeadd_noderange
+nodeadd_err_symbol
+nodeadd_null
+nodeadd_noderange_nodetype
+nodeadd_v
+nodeadd_h
+nodegrpch_v
+nodegrpch_h
+nodegrpch_groups
+nodegrpch_err
+nodech_noderange_table
+nodech_noderange_table_comma
+nodech_noderange_table_arrow
+nodech_noderanage_table_at
+nodech_delete
+nodech_error_node
+nodech_error_table
+nodech_h
+nodech_v
+nodech_noderange_table_include
+nodech_noderange_table_uninclude
+nodech_noderange_table_equal
+nodech_noderange_table_unequal
+nodech_noderange_shortname_groups
+nodech_noderange_shortname_tags
+nodech_noderange_shortname_mgt
+nodels_null
+nodels_H
+nodels_noderange
+nodels_err_symbol
+nodels_err_noderange
+nodels_noderange_shortname_groups
+nodels_noderange_shortname_tags
+nodels_noderange_shortname_mgt
+nodels_table_include
+nodels_noderange_table_uninclude
+nodels_noderange_table_equal
+nodels_noderange_table_unequal
+nodels_b
+nodels_S
+nodels_noderange_table
+nodels_tablevalue
+nodels_tablevalue_tablecolumn
+nodels_noderange_tablecolumn
+nodels_tablevalue_tablecolumn
+nodels_h
+nodels_v
+xcatstanzafile_normal
+xcatstanzafile_colon
+xcatstanzafile_attribute
+xcatstanzafile_objtype
+xcatstanzafile_tab
+xcatstanzafile_multattr
+xcatstanzafile_defaultvalue
+xcatstanzafile_specificvalue
+noderm_noderange
+noderm_h
+noderm_null
+noderm_err_node
+nodeset_stat
+nodeset_noderange
+nodestat_noderange
+nodestat_err_node
+rmdef_null
+rmdef_t_err
+rpower_err_noderange
+rvitals_noderange_err
+tabdump_table
+tabdump_d
+tabdump_v
+tabdump_h
+tabdump_help
+tabdump_w_match
+tabdump_w_equal
+tabdump_w_ne
+tabdump_w_notmatch
+tabdump_w_gt
+tabdump_w_ge
+tabdump_w_lt
+tabdump_w_le
+tabdump_f_d
+tabdump_d_nodehm
+tabprune_h
+tabprune_v
+tabprune_a_eventlog
+tabprune_V_a_eventlog
+tabprune_i_auditlog
+tabprune_V_n_auditlog
+tabgrep_node
+tabgrep_null
+tabgrep_h
+tabgrep_err
+tabrestore_table
+tabrestore_null
+tabrestore_h
+tabrestore_err
+dumpxCATdb_h
+dumpxCATdb_v
+dumpxCATdb_p_nullskiptables
+dumpxCATdb_a_p_nullskiptables
+dumpxCATdb_p_skiptables
+dumpxCATdb_a_p_skiptables
+dumpxCATdb_p_nullskiptables_V
+dumpxCATdb_a_p_nullskiptables_V
+dumpxCATdb_p_V
+restorexCAT_h
+restorexCATdb_v
+restorexCATdb_p_V
+restorexCATdb_a_p_V
+restorexCATdb_wrongpath
+regnotif_null
+regnotif_o
+regnotif_err
+regnotif_h
+regnotif_v
+unregnotif_null
+unregnotif_f
+unregnotif_h
+unregnotif_v
+lsxcatd_null
+lsxcatd_h
+lsxcatd_d
+lsxcatd_a
+makedns_d_node
+makedns_ubuntu_n
+copycds_iso
+copycds_n
+copycds_a
+copycds_n_a
+copycds_a_err
+copycds_n_err
+addkit_v
+addkit_h
+addkit_kit
+addkit_i
+addkit_multikit
+addkit_p
+addkitcomp_v
+addkitcomp_h
+addkitcomp_i
+addkitcomp_f
+buildkit_v
+buildkit_h
+buildkit_create
+buildkit_create_l
+buildkit_buildrepo_all
+buildkit_buildrepo_ubuntu
+buildkit_cleanrepo_all
+buildkit_cleanrepo_ubuntu
+buildkit_listrepo
+buildkit_buildtar
+buildkit_cleantar
+buildkit_partialkit_ubuntu
+buildkit_partialkit_completekit
+chkkitcomp_v
+chkkitcomp_h
+chkkitcomp_V
+lskit_v
+lskit_h
+lskit_F
+lskit_K
+lskit_R
+lskit_C
+lskitcomp_v
+lskitcomp_h
+lskitcomp_C
+lskitcomp_C
+lskitcomp_S
+lskitdeployparam_v
+lskitdeployparam_h
+lskitdeployparam_no_param
+lskitdeployparam_k_1
+lskitdeployparam_c_1
+rmkit_v
+rmkit_h
+rmkit_t_no
+rmkit_t_yes
+rmkit_f
+rmkit_V
+rmkitcomp_v
+rmkitcomp_h
+xdsh_h
+xdsh_V
+xdsh_regular_command
+xdsh_Q_command
+xdsh_c_cn
+xdsh_e_filename
+xdsh_E
+xdsh_t
+xdsh_q
+xdsh_T
+xdsh_o
+switchdiscover_range_default
+switchdiscover_h
+switchdiscover_range_s
+switchdiscover_range_default_w
+switchdiscover_range_r
+switchdiscover_range_x
+switchdiscover_range_z
+switchdiscover_range_z_V
+nodeset_check_warninginfo
+rpower_stop
+rpower_start
+rpower_state
+rpower_restart
+rpower_pause
+rpower_unpause
+mkdocker_h
+mkdocker_command
+rmdocker_h
+rmdocker_command
+rmdocker_f_command
+lsdocker_h_command
+lsdocker_l_command
\ No newline at end of file
diff --git a/xCAT-test/autotest/bundle/x_rhels_cmd.bundle b/xCAT-test/autotest/bundle/x_rhels_cmd.bundle
index 3291a01cd..aac12e801 100644
--- a/xCAT-test/autotest/bundle/x_rhels_cmd.bundle
+++ b/xCAT-test/autotest/bundle/x_rhels_cmd.bundle
@@ -196,3 +196,5 @@ switchdiscover_range_x
switchdiscover_range_z
switchdiscover_range_z_V
nodeset_check_warninginfo
+redhat_migration1
+redhat_migration2
diff --git a/xCAT-test/autotest/bundle/x_sles_cmd.bundle b/xCAT-test/autotest/bundle/x_sles_cmd.bundle
index 00c966d83..fe978e117 100644
--- a/xCAT-test/autotest/bundle/x_sles_cmd.bundle
+++ b/xCAT-test/autotest/bundle/x_sles_cmd.bundle
@@ -206,3 +206,5 @@ xcatd_restart
run_command_with_XCATBYPASS
disable_root_permission_in_policy_table
assign_certain_command_permission
+sles_migration1
+sles_migration2
diff --git a/xCAT-test/autotest/bundle/x_ubuntu_cmd.bundle b/xCAT-test/autotest/bundle/x_ubuntu_cmd.bundle
index 4b67d0bc1..11ea27fae 100644
--- a/xCAT-test/autotest/bundle/x_ubuntu_cmd.bundle
+++ b/xCAT-test/autotest/bundle/x_ubuntu_cmd.bundle
@@ -254,3 +254,5 @@ rmdocker_command
rmdocker_f_command
lsdocker_h_command
lsdocker_l_command
+ubuntux_migration1_vm
+ubuntux_migration2_vm
diff --git a/xCAT-test/autotest/linux.conf.template b/xCAT-test/autotest/linux.conf.template
index 0c0455012..6dbfa6553 100644
--- a/xCAT-test/autotest/linux.conf.template
+++ b/xCAT-test/autotest/linux.conf.template
@@ -67,6 +67,19 @@ NETDRIVER=ibmveth #network infterface card driver used by diskless installat
NETBOOTDIR=/opt/xcat/share/xcat/netboot/rh #path of netboot directory, used by diskless installation
MaxLparID=32
KITDATA=kitdata
+#For migration cases Begin
+UBUNTU_MIGRATION1_CORE=https://xcat.org/files/xcat/xcat-core/2.10.x_Ubuntu/xcat-core/xcat-core-2.10.tar.bz2
+UBUNTU_MIGRATION2_CORE=https://xcat.org/files/xcat/xcat-core/2.11.x_Ubuntu/xcat-core/xcat-core-2.11.1-ubuntu.tar.bz2
+UBUNTU_MIGRATION1_DEP=https://xcat.org/files/xcat/xcat-dep/2.x_Ubuntu/xcat-dep-ubuntu-20151012.tar.bz
+UBUNTU_MIGRATION2_DEP=https://xcat.org/files/xcat/xcat-dep/2.x_Ubuntu/xcat-dep-ubuntu-2.11.1.tar.bz2
+MIGRATION1_CORE=http://xcat.org/files/xcat/xcat-core/2.10.x_Linux/xcat-core/xcat-core-2.10.tar.bz2
+MIGRATION2_CORE=http://xcat.org/files/xcat/xcat-core/2.11.x_Linux/xcat-core/xcat-core-2.11.1-linux.tar.bz2
+MIGRATION1_DEP=http://xcat.org/files/xcat/xcat-dep/2.x_Linux/xcat-dep-2.10.tar.bz2
+MIGRATION2_DEP=http://xcat.org/files/xcat/xcat-dep/2.x_Linux/xcat-dep-2.11.1.tar.bz2
+MIGRATION1_VERSION=2.10
+MIGRATION2_VERSION=2.11.1
+LATEST_VERSION=2.12.1
+#For migration cass End
[Custom]
#commands run before test
diff --git a/xCAT-test/autotest/testcase/bmcdiscover/cases0 b/xCAT-test/autotest/testcase/bmcdiscover/cases0
index 0d654d3d4..a0e5e70da 100644
--- a/xCAT-test/autotest/testcase/bmcdiscover/cases0
+++ b/xCAT-test/autotest/testcase/bmcdiscover/cases0
@@ -7,7 +7,7 @@ check:output=~Usage
end
start:bmcdiscover_nmap_range
-cmd:bmcdiscover -s nmap --range $$bmcrange
+cmd:bmcdiscover -s nmap --range $$bmcrange -u $$bmcusername -p $$bmcpasswd
check:rc==0
check:output=~$$bmcrange
end
@@ -37,13 +37,13 @@ check:output=~Static Address
end
start:bmcdiscover_range_w
-cmd:bmcdiscover --range $$bmcrange -w
+cmd:bmcdiscover --range $$bmcrange -u $$bmcusername -p $$bmcpasswd -w
check:rc==0
check:output=~bmc=$$bmcrange
end
start:bmcdiscover_range_z
-cmd:bmcdiscover --range $$bmcrange -z
+cmd:bmcdiscover --range $$bmcrange -u $$bmcusername -p $$bmcpasswd -z
check:rc==0
check:output=~bmc=$$bmcrange
end
diff --git a/xCAT-test/autotest/testcase/dockercommand/cases0 b/xCAT-test/autotest/testcase/dockercommand/cases0
index f3bd01e96..b3dcf2cd4 100644
--- a/xCAT-test/autotest/testcase/dockercommand/cases0
+++ b/xCAT-test/autotest/testcase/dockercommand/cases0
@@ -122,7 +122,7 @@ cmd:mkdocker $$DOCKERCN image=$$DOCKERIMAGE command=$$DOCKERCOMMAND dockerflag=
check:rc==0
cmd:rpower $$DOCKERCN pause
check:rc!=0
-check:output=~ Cannot pause container $$DOCKERCN
+check:output=~$$DOCKERCN: Error: Container
cmd:rpower $$DOCKERCN start
check:rc==0
cmd:rpower $$DOCKERCN pause
diff --git a/xCAT-test/autotest/testcase/installation/Diskless_installation_flat_p8_le b/xCAT-test/autotest/testcase/installation/Diskless_installation_flat_p8_le
index 876aad295..0e95955f5 100644
--- a/xCAT-test/autotest/testcase/installation/Diskless_installation_flat_p8_le
+++ b/xCAT-test/autotest/testcase/installation/Diskless_installation_flat_p8_le
@@ -4,7 +4,7 @@ stop:yes
cmd:copycds $$ISO
check:rc==0
-cmd:if [ "__GETNODEATTR($$CN,arch)__" != "ppc64" -a "__GETNODEATTR($$CN,mgt)__" != "ipmi" ];then chdef -t node -o $$CN vmstorage=dir:///var/lib/libvirt/images/ && rmvm $$CN -f && mkvm $$CN ; fi
+cmd:if [ "__GETNODEATTR($$CN,arch)__" != "ppc64" -a "__GETNODEATTR($$CN,mgt)__" != "ipmi" ];then if [[ "__GETNODEATTR($$CN,vmstorage)__" =~ "phy" ]]; then rmvm $$CN -f -p && mkvm $$CN; else rmvm $$CN -f -p && mkvm $$CN -s 20G; fi;fi
check:rc==0
cmd:makedns -n
check:rc==0
@@ -31,6 +31,7 @@ check:rc==0
cmd:rpower $$CN boot
check:rc==0
cmd:sleep 200
+cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 10;((a++));if [ $a -gt 300 ];then break;fi done
cmd:lsdef -l $$CN | grep status
check:output=~booted
cmd:xdsh $$CN date
diff --git a/xCAT-test/autotest/testcase/installation/Full_installation_flat_p8_le b/xCAT-test/autotest/testcase/installation/Full_installation_flat_p8_le
index c62cc0cac..579f583f9 100644
--- a/xCAT-test/autotest/testcase/installation/Full_installation_flat_p8_le
+++ b/xCAT-test/autotest/testcase/installation/Full_installation_flat_p8_le
@@ -20,7 +20,8 @@ cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-ins
check:rc==0
cmd:rpower $$CN boot
check:rc==0
-cmd:sleep 3000
+cmd:sleep 300
+cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 60;((a++));if [ $a -gt 50 ];then break;fi done
cmd:ping $$CN -c 3
check:output=~64 bytes from $$CN
cmd:lsdef -l $$CN | grep status
diff --git a/xCAT-test/autotest/testcase/installation/SN_setup_case b/xCAT-test/autotest/testcase/installation/SN_setup_case
new file mode 100644
index 000000000..d791de94b
--- /dev/null
+++ b/xCAT-test/autotest/testcase/installation/SN_setup_case
@@ -0,0 +1,95 @@
+start:SN_setup_case
+os:Linux
+stop:yes
+
+cmd:/opt/xcat/share/xcat/tools/autotest/testcase/installation/pre_deploy_sn __GETNODEATTR($$SN,os)__ __GETNODEATTR($$SN,arch)__
+check:rc==0
+
+cmd:chtab key=nameservers site.value=""
+check:rc==0
+cmd:if [ "__GETNODEATTR($$SN,arch)__" != "ppc64" -a "__GETNODEATTR($$SN,mgt)__" != "ipmi" ];then if [[ "__GETNODEATTR($$SN,vmstorage)__" =~ "phy" ]]; then rmvm $$SN -f -p && mkvm $$SN; else rmvm $$SN -f -p && mkvm $$SN -s 20G; fi;fi
+
+cmd:makedns -n
+check:rc==0
+cmd:makeconservercf $$SN
+check:rc==0
+cmd:cat /etc/conserver.cf | grep $$SN
+check:output=~$$SN
+cmd:sleep 20
+cmd:if [[ "__GETNODEATTR($$SN,arch)__" =~ "ppc64" ]]; then getmacs -D $$SN -V; fi
+check:rc==0
+cmd:makedhcp -n
+check:rc==0
+cmd:makedhcp -a
+check:rc==0
+cmd:if cat /etc/*release |grep SUSE >/dev/null;then cat /var/lib/dhcp/db/dhcpd.leases|grep $$SN;elif cat /etc/*release |grep "Red Hat" >/dev/null;then cat /var/lib/dhcpd/dhcpd.leases|grep $$SN;fi
+check:output=~$$SN
+
+cmd:chdef -t node $$SN groups=service,all
+check:rc==0
+cmd:chdef -t group -o service profile=service primarynic=mac installnic=mac
+check:rc==0
+cmd:chdef -t group -o service setupnfs=1 setupdhcp=1 setuptftp=1 setupnameserver=1 setupconserver=1
+check:rc==0
+cmd:chdef -t group -o service nfsserver=$$MN tftpserver=$$MN xcatmaster=$$MN monserver=$$MN
+check:rc==0
+cmd:chtab node=service postscripts.postscripts="servicenode"
+check:rc==0
+
+cmd:copycds $$ISO
+check:rc==0
+
+cmd:chdef -t site clustersite installloc="/install"
+check:rc==0
+
+cmd:cd /install/post/otherpkgs/__GETNODEATTR($$SN,os)__/__GETNODEATTR($$SN,arch)__/xcat/xcat-core && createrepo .
+check:rc==0
+
+cmd:if [[ "__GETNODEATTR($$SN,os)__" =~ "rh" ]]; then path="rh";elif [[ "__GETNODEATTR($$SN,os)__" =~ "sles" ]];then path="sles";fi; ver="__GETNODEATTR($$SN,os)__"; tmp=${ver%.*};ver=`echo "$tmp"|sed 's:[a-zA-Z]::g'`;cd /install/post/otherpkgs/__GETNODEATTR($$SN,os)__/__GETNODEATTR($$SN,arch)__/xcat/xcat-dep/$path$ver/__GETNODEATTR($$SN,arch)__ && createrepo .;
+check:rc==0
+
+cmd:chdef -t osimage __GETNODEATTR($$SN,os)__-__GETNODEATTR($$SN,arch)__-install-service otherpkgdir=/install/post/otherpkgs/__GETNODEATTR($$SN,os)__/__GETNODEATTR($$SN,arch)__
+check:rc==0
+
+cmd:if [[ "__GETNODEATTR($$SN,os)__" =~ "rh" ]]; then path="rh";elif [[ "__GETNODEATTR($$SN,os)__" =~ "sles" ]];then path="sles";fi; ver="__GETNODEATTR($$SN,os)__"; chdef -t osimage __GETNODEATTR($$SN,os)__-__GETNODEATTR($$SN,arch)__-install-service otherpkglist=/opt/xcat/share/xcat/install/$path/service.${ver%.*}.__GETNODEATTR($$SN,arch)__.otherpkgs.pkglist;
+check:rc==0
+
+#cmd:chdef -t osimage __GETNODEATTR($$SN,os)__-__GETNODEATTR($$SN,arch)__-install-service pkgdir="/install/__GETNODEATTR($$SN,os)__/__GETNODEATTR($$SN,arch)__"
+#check:rc==0
+
+cmd:nodeset $$SN osimage=__GETNODEATTR($$SN,os)__-__GETNODEATTR($$SN,arch)__-install-service
+check:rc==0
+cmd:if [[ "__GETNODEATTR($$SN,arch)__" =~ "ppc64" ]]; then rnetboot $$SN;elif [[ "__GETNODEATTR($$SN,arch)__" =~ "x86_64" ]];then rpower $$SN boot; fi
+check:rc==0
+
+cmd:/opt/xcat/share/xcat/tools/autotest/testcase/installation/customize_sleep_for_sn __GETNODEATTR($$SN,os)__ __GETNODEATTR($$SN,arch)__
+
+cmd:ping $$SN -c 3
+check:rc==0
+check:output=~64 bytes from $$SN
+cmd:lsdef -l $$SN | grep status
+check:rc==0
+check:output=~booted
+cmd:xdsh $$SN date
+check:rc==0
+check:output=~\d\d:\d\d:\d\d
+cmd:xdsh $$SN "ps -ef |grep xcatd"
+check:rc==0
+check:output=~xcatd:
+cmd:xdsh $$SN "lsdef"
+check:rc==0
+check:output=~$$SN: $$SN
+cmd:xdsh $$SN "tabdump site"
+check:rc==0
+check:output=~tftpdir
+cmd:xdsh $$SN "mount"
+check:rc==0
+check:output=~/install on /install
+cmd:xdsh $$SN "mount"
+check:rc==0
+check:output=~/tftpboot on /tftpboot
+
+cmd:if [[ "__GETNODEATTR($$SN,arch)__" =~ "x86_64" ]]; then if [[ "__GETNODEATTR($$SN,os)__" =~ "sles" ]];then xdsh $$SN "zypper -n install perl-Sys-Virt"; elif [[ "__GETNODEATTR($$SN,os)__" =~ "rh" ]];then xdsh $$SN "yum install -y perl-Sys-Virt";fi;fi
+check:rc==0
+
+end
diff --git a/xCAT-test/autotest/testcase/installation/customize_sleep_for_sn b/xCAT-test/autotest/testcase/installation/customize_sleep_for_sn
new file mode 100755
index 000000000..8cb28a999
--- /dev/null
+++ b/xCAT-test/autotest/testcase/installation/customize_sleep_for_sn
@@ -0,0 +1,28 @@
+#!/usr/bin/env perl
+
+my $os=$ARGV[0];
+my $arch=$ARGV[1];
+my $log="/tmp/pre_deploy_sn.log";
+
+my $orgclusterconffile="/opt/xcat/share/xcat/tools/autotest/default.conf";
+my $snnodename = `cat $orgclusterconffile |grep -E '^SN\s*='|awk -F'=' '{print \$2}'`;
+chomp($snnodename);
+`echo "SN=$snnodename" >> $log`;
+sleep 300;
+
+my $timecnt=0;
+while($timecnt < 200){
+ my $booted=system("lsdef -l $snnodename|grep status|grep booted > /dev/null 2>&1");
+ last if($booted==0);
+
+ if($os =~ /rhel/i && $arch =~ /^ppc64$/i){
+ my $booting=system("lsdef -l $snnodename|grep status|grep booting > /dev/null 2>&1");
+ system("xdsh $snnodename \"echo 1\"") if($booting==0);
+ `echo "send signal to $snnodename for the $timecnt times" >> $log`;
+ }
+
+ sleep 10;
+ $timecnt++;
+}
+
+exit 0;
diff --git a/xCAT-test/autotest/testcase/installation/pre_deploy_sn b/xCAT-test/autotest/testcase/installation/pre_deploy_sn
new file mode 100755
index 000000000..d02f342a8
--- /dev/null
+++ b/xCAT-test/autotest/testcase/installation/pre_deploy_sn
@@ -0,0 +1,28 @@
+#!/usr/bin/env perl
+
+$ENV{TERM} = "xterm-256color";
+
+my $os=$ARGV[0];
+my $arch=$ARGV[1];
+my $log="/tmp/pre_deploy_sn.log";
+
+sub runcmd{
+ my $cmd=shift;
+ `$cmd >> $log 2>&1`;
+ if($?){
+ #print "run $cmd ....[error]\n";
+ exit 1;
+ }
+}
+
+$cmd="XCATMYSQLADMIN_PW=12345 XCATMYSQLROOT_PW=12345 /opt/xcat/bin/mysqlsetup -i -V";
+runcmd("$cmd");
+
+$cmd="echo \"GRANT ALL on xcatdb.* TO xcatadmin@\'%\' IDENTIFIED BY \'12345\'\;\" | mysql -u root -p12345";
+runcmd("$cmd");
+
+my $xcatballpath = "/install/post/otherpkgs/$os/$arch/xcat";
+$cmd="mkdir -p $xcatballpath/xcat-core && cp -r /xcat-core/* $xcatballpath/xcat-core && cp -r /xcat-dep $xcatballpath";
+runcmd("$cmd");
+
+exit 0;
diff --git a/xCAT-test/autotest/testcase/installation/reg_linux_SN_installation_hierarchy b/xCAT-test/autotest/testcase/installation/reg_linux_SN_installation_hierarchy
index 5fd078f34..c7ed81bb0 100644
--- a/xCAT-test/autotest/testcase/installation/reg_linux_SN_installation_hierarchy
+++ b/xCAT-test/autotest/testcase/installation/reg_linux_SN_installation_hierarchy
@@ -1,10 +1,9 @@
start:reg_linux_SN_installation_hierarchy
os:Linux
-stop:yes
cmd:chtab key=nameservers site.value=""
check:rc==0
-cmd:if [[ "__GETNODEATTR($$SN,arch)__" =~ "x86_64" ]];then chdef -t node -o $$SN vmstorage=dir:///var/lib/libvirt/images/ && rmvm $$SN -f -p && mkvm $$SN -s 25G; fi
+cmd:if [[ "__GETNODEATTR($$SN,arch)__" =~ "x86_64" ]];then rmvm $$SN -f -p && mkvm $$SN -s 40G; fi
cmd:makedns -n
check:rc==0
diff --git a/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_flat b/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_flat
index c8f54d1b5..5a938f67b 100644
--- a/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_flat
+++ b/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_flat
@@ -1,12 +1,12 @@
start:reg_linux_diskfull_installation_flat
os:Linux
-stop:yes
cmd:if ping -c 1 $$SN > /dev/null;then rpower $$SN off > /dev/null;fi
cmd:chdef -t node -o $$CN servicenode= monserver=$$MN nfsserver=$$MN tftpserver=$$MN xcatmaster=$$MN
check:rc==0
-cmd:if [ "__GETNODEATTR($$CN,arch)__" != "ppc64" -a "__GETNODEATTR($$CN,mgt)__" != "ipmi" ];then chdef -t node -o $$CN vmstorage=dir:///var/lib/libvirt/images/ && rmvm $$CN -f && mkvm $$CN ; fi
+cmd:if [ "__GETNODEATTR($$CN,arch)__" != "ppc64" -a "__GETNODEATTR($$CN,mgt)__" != "ipmi" ];then if [[ "__GETNODEATTR($$CN,vmstorage)__" =~ "phy" ]]; then rmvm $$CN -f -p && mkvm $$CN; else rmvm $$CN -f -p && mkvm $$CN -s 20G; fi;fi
+check:rc=0
cmd:makedns -n
check:rc==0
cmd:makeconservercf
diff --git a/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_hierarchy b/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_hierarchy
index ec28d5b86..e2d918bff 100644
--- a/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_hierarchy
+++ b/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_hierarchy
@@ -43,7 +43,7 @@ cmd:if [[ "__GETNODEATTR($$CN,arch)__" =~ "ppc" ]]; then sleep 120;elif [[ "__GE
#check:rc==0
#check:output!~booted
-cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 10;((a++));if [ $a -gt 300 ];then break;fi done
+cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 60;((a++));if [ $a -gt 50 ];then break;fi done
cmd:ping $$CN -c 3
check:rc==0
diff --git a/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_flat b/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_flat
index 812eb0daf..f6c69169d 100644
--- a/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_flat
+++ b/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_flat
@@ -1,6 +1,5 @@
start:reg_linux_diskless_installation_flat
os:Linux
-stop:yes
cmd:chdef -t node -o $$CN servicenode= monserver=$$MN nfsserver=$$MN tftpserver=$$MN xcatmaster=$$MN
check:rc==0
diff --git a/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_hierarchy b/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_hierarchy
index 7232133d4..9119eee1a 100644
--- a/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_hierarchy
+++ b/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_hierarchy
@@ -1,6 +1,5 @@
start:reg_linux_diskless_installation_hierarchy
os:Linux
-stop:yes
cmd:chdef -t node -o $$CN servicenode=$$SN monserver=$$SN nfsserver=$$SN tftpserver=$$SN xcatmaster=$$SN
check:rc==0
diff --git a/xCAT-test/autotest/testcase/installation/reg_linux_statelite_installation_flat b/xCAT-test/autotest/testcase/installation/reg_linux_statelite_installation_flat
index a9759d66f..780d32e3b 100644
--- a/xCAT-test/autotest/testcase/installation/reg_linux_statelite_installation_flat
+++ b/xCAT-test/autotest/testcase/installation/reg_linux_statelite_installation_flat
@@ -1,6 +1,5 @@
start:reg_linux_statelite_installation_flat
os:Linux
-stop:yes
cmd:chdef -t node -o $$CN servicenode= monserver=$$MN nfsserver=$$MN tftpserver=$$MN xcatmaster=$$MN
check:rc==0
diff --git a/xCAT-test/autotest/testcase/installation/reg_linux_statelite_installation_hierarchy_by_nfs b/xCAT-test/autotest/testcase/installation/reg_linux_statelite_installation_hierarchy_by_nfs
index 7e310aaa1..28260fdc0 100644
--- a/xCAT-test/autotest/testcase/installation/reg_linux_statelite_installation_hierarchy_by_nfs
+++ b/xCAT-test/autotest/testcase/installation/reg_linux_statelite_installation_hierarchy_by_nfs
@@ -1,6 +1,5 @@
start:reg_linux_statelite_installation_hierarchy_by_nfs
os:Linux
-stop:yes
cmd:chdef -t node -o $$CN servicenode=$$SN monserver=$$SN nfsserver=$$SN tftpserver=$$SN xcatmaster=$$SN
check:rc==0
diff --git a/xCAT-test/autotest/testcase/installation/reg_linux_statelite_installation_hierarchy_by_ramdisk b/xCAT-test/autotest/testcase/installation/reg_linux_statelite_installation_hierarchy_by_ramdisk
index 8d4984708..c9b3af64f 100644
--- a/xCAT-test/autotest/testcase/installation/reg_linux_statelite_installation_hierarchy_by_ramdisk
+++ b/xCAT-test/autotest/testcase/installation/reg_linux_statelite_installation_hierarchy_by_ramdisk
@@ -1,6 +1,5 @@
start:reg_linux_statelite_installation_hierarchy_by_ramdisk
os:Linux
-stop:yes
cmd:chdef -t node -o $$CN servicenode=$$SN monserver=$$SN nfsserver=$$SN tftpserver=$$SN xcatmaster=$$SN
check:rc==0
diff --git a/xCAT-test/autotest/testcase/installation/ubuntu_diskless_installation_vm b/xCAT-test/autotest/testcase/installation/ubuntu_diskless_installation_vm
index 569d7605d..7ae29b85a 100644
--- a/xCAT-test/autotest/testcase/installation/ubuntu_diskless_installation_vm
+++ b/xCAT-test/autotest/testcase/installation/ubuntu_diskless_installation_vm
@@ -1,10 +1,10 @@
start:Ubuntu_diskless_installation_flat_x86_vm
os:Linux
-stop:yes
cmd:copycds $$ISO
check:rc==0
-cmd:if [[ "__GETNODEATTR($$CN,arch)__" =~ "x86_64" ]];then chdef -t node -o $$CN vmstorage=dir:///var/lib/libvirt/images/ && rmvm $$CN -f && mkvm $$CN ; fi
+cmd:if [ "__GETNODEATTR($$CN,arch)__" != "ppc64" -a "__GETNODEATTR($$CN,mgt)__" != "ipmi" ];then if [[ "__GETNODEATTR($$CN,vmstorage)__" =~ "phy" ]]; then rmvm $$CN -f -p && mkvm $$CN; else rmvm $$CN -f -p && mkvm $$CN -s 20G; fi;fi
+check:rc=0
cmd:makedns -n
check:rc==0
cmd:makedhcp -n
@@ -24,6 +24,7 @@ check:rc==0
cmd:rpower $$CN boot
check:rc==0
cmd:sleep 200
+cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 10;((a++));if [ $a -gt 300 ];then break;fi done
cmd:lsdef -l $$CN | grep status
check:output=~booted
cmd:xdsh $$CN date
diff --git a/xCAT-test/autotest/testcase/installation/ubuntu_full_installation_vm b/xCAT-test/autotest/testcase/installation/ubuntu_full_installation_vm
index ff4d42ce6..fd6f3e176 100644
--- a/xCAT-test/autotest/testcase/installation/ubuntu_full_installation_vm
+++ b/xCAT-test/autotest/testcase/installation/ubuntu_full_installation_vm
@@ -1,6 +1,5 @@
start:Ubuntu_full_installation_flat_x86_vm
os:Linux
-stop:yes
cmd:copycds $$ISO
check:rc==0
@@ -19,7 +18,8 @@ cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-ins
check:rc==0
cmd:rpower $$CN boot
check:rc==0
-cmd:sleep 3000
+cmd:sleep 300
+cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 10;((a++));if [ $a -gt 300 ];then break;fi done
cmd:ping $$CN -c 3
check:output=~64 bytes from $$CN
cmd:lsdef -l $$CN | grep status
diff --git a/xCAT-test/autotest/testcase/installation/ubuntu_full_installation_vm_docker b/xCAT-test/autotest/testcase/installation/ubuntu_full_installation_vm_docker
index ced2f1231..732349b1e 100644
--- a/xCAT-test/autotest/testcase/installation/ubuntu_full_installation_vm_docker
+++ b/xCAT-test/autotest/testcase/installation/ubuntu_full_installation_vm_docker
@@ -2,7 +2,7 @@ start:Full_installation_flat_docker
os:Linux
cmd:copycds $$ISO
check:rc==0
-cmd:if [[ "__GETNODEATTR($$DOCKERHOST,arch)__" != "ppc64" ]];then chdef -t node -o $$DOCKERHOST vmstorage=dir:///var/lib/libvirt/images/ && rmvm $$DOCKERHOST -f && mkvm $$DOCKERHOST ; fi
+cmd:if [[ "__GETNODEATTR($$DOCKERHOST,arch)__" != "ppc64" ]];then rmvm $$DOCKERHOST -f && chdef $$DOCKERHOST mac= && mkvm $$DOCKERHOST ; fi
check:rc==0
cmd:makehosts $$DOCKERHOST
check:rc==0
diff --git a/xCAT-test/autotest/testcase/migration/redhat_migration b/xCAT-test/autotest/testcase/migration/redhat_migration
new file mode 100644
index 000000000..975456215
--- /dev/null
+++ b/xCAT-test/autotest/testcase/migration/redhat_migration
@@ -0,0 +1,216 @@
+start:redhat_migration1
+os:Linux
+stop:yes
+
+#cmd:if ping -c 1 $$SN > /dev/null;then rpower $$SN off > /dev/null;fi
+#cmd:chdef -t node -o $$CN servicenode= monserver=$$MN nfsserver=$$MN tftpserver=$$MN xcatmaster=$$MN
+#check:rc==0
+cmd:if [ "__GETNODEATTR($$CN,arch)__" != "ppc64" -a "__GETNODEATTR($$CN,mgt)__" != "ipmi" ];then rmvm $$CN -f -p && mkvm $$CN -s 20G; fi
+cmd:rscan __GETNODEATTR($$CN,hcp)__ -w
+check:rc==0
+cmd:makedns -n
+check:rc==0
+cmd:service named restart
+check:rc==0
+cmd:makeconservercf $$CN
+check:rc==0
+cmd:cat /etc/conserver.cf | grep $$CN
+check:output=~$$CN
+cmd:sleep 60
+cmd:if [ "__GETNODEATTR($$CN,arch)__" = "ppc64" -a "__GETNODEATTR($$CN,mgt)__" != "ipmi" ]; then getmacs -D $$CN; fi
+check:rc==0
+cmd:makedhcp -n
+check:rc==0
+cmd:makedhcp -a
+check:rc==0
+cmd:service dhcpd restart
+check:rc==0
+cmd:if cat /etc/*release |grep SUSE >/dev/null;then cat /var/lib/dhcp/db/dhcpd.leases|grep $$CN;elif cat /etc/*release |grep "Red Hat" >/dev/null;then cat /var/lib/dhcpd/dhcpd.leases|grep $$CN;fi
+check:output=~$$CN
+cmd:copycds $$ISO
+check:rc==0
+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
+check:rc==0
+cmd:lsdef $$CN |grep provmethod
+check:rc==0
+check:output=~__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
+cmd:if [[ "__GETNODEATTR($$CN,mgt)__" = "ipmi" ]]; then rsetboot $$CN net; fi
+check:rc==0
+cmd:if [ "__GETNODEATTR($$CN,mgt)__" != "ipmi" ];then if [ "__GETNODEATTR($$CN,arch)__" = "ppc64" ];then rnetboot $$CN;else rpower $$CN boot;fi else rpower $$CN boot;fi
+check:rc==0
+cmd:sleep 600
+cmd:lsdef -l $$CN | grep status
+cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 10;((a++));if [ $a -gt 300 ];then break;fi done
+cmd:ping $$CN -c 3
+check:output=~64 bytes from $$CN
+cmd:lsdef -l $$CN | grep status
+check:output=~booted
+cmd:xdsh $$CN date
+check:rc==0
+check:output=~\d\d:\d\d:\d\d
+cmd:xdsh $$CN "rm -rf /oldxcat"
+cmd:xdsh $$CN "mkdir -p /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "yum -y install bzip2"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$MIGRATION1_DEP"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$MIGRATION1_CORE"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-dep* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-core* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "/oldxcat/xcat-core/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat/xcat-dep/rh`echo __GETNODEATTR($$CN,os)__ | cut -c6`/__GETNODEATTR($$CN,arch)__/;./mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "yum clean all;yum -y install xCAT"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh"
+check:rc==0
+cmd:xdsh $$CN "lsxcatd -v"
+check:rc==0
+check:output=~$$MIGRATION1_VERSION
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "chdef -t node -o node0001 nodetype=osi groups=linux"
+check:rc==0
+cmd:xdsh $$CN "lsdef"
+check:output=~node0001
+cmd:check==0
+cmd:xdsh $$CN "cd /; scp -r $$MN:/core-rpms-snap.tar.bz2 /"
+check:rc==0
+cmd:xdsh $$CN "cd /; scp -r $$MN:/xcat-dep*.tar.bz2 /"
+check:rc==0
+cmd:xdsh $$CN "tar -jxf /core-rpms-snap.tar.bz2"
+check:rc==0
+cmd:xdsh $$CN "cd /root/xcat-core;./mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /xcat-dep*.tar.bz2"
+check:rc==0
+cmd:xdsh $$CN "cd /root/xcat-dep/rh`echo __GETNODEATTR($$CN,os)__ | cut -c6`/__GETNODEATTR($$CN,arch)__/;./mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "yum clean metadata;yum -y update '*xCAT*'"
+check:rc==0
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "lsdef"
+check:output=~node0001
+cmd:xdsh $$CN "noderm node0001"
+check:rc==0
+cmd:xdsh $$CN "lsxcatd -v"
+check:rc==0
+check:output=~$$LATEST_VERSION
+end
+
+start:redhat_migration2
+os:Linux
+stop:yes
+
+#cmd:if ping -c 1 $$SN > /dev/null;then rpower $$SN off > /dev/null;fi
+#cmd:chdef -t node -o $$CN servicenode= monserver=$$MN nfsserver=$$MN tftpserver=$$MN xcatmaster=$$MN
+#check:rc==0
+cmd:if [ "__GETNODEATTR($$CN,arch)__" != "ppc64" -a "__GETNODEATTR($$CN,mgt)__" != "ipmi" ];then rmvm $$CN -f -p && mkvm $$CN -s 20G; fi
+cmd:rscan __GETNODEATTR($$CN,hcp)__ -w
+check:rc==0
+cmd:makedns -n
+check:rc==0
+cmd:service named restart
+check:rc==0
+cmd:makeconservercf $$CN
+check:rc==0
+cmd:cat /etc/conserver.cf | grep $$CN
+check:output=~$$CN
+cmd:sleep 60
+cmd:if [ "__GETNODEATTR($$CN,arch)__" = "ppc64" -a "__GETNODEATTR($$CN,mgt)__" != "ipmi" ]; then getmacs -D $$CN; fi
+check:rc==0
+cmd:makedhcp -n
+check:rc==0
+cmd:makedhcp -a
+check:rc==0
+cmd:service dhcpd restart
+check:rc==0
+cmd:if cat /etc/*release |grep SUSE >/dev/null;then cat /var/lib/dhcp/db/dhcpd.leases|grep $$CN;elif cat /etc/*release |grep "Red Hat" >/dev/null;then cat /var/lib/dhcpd/dhcpd.leases|grep $$CN;fi
+check:output=~$$CN
+cmd:copycds $$ISO
+check:rc==0
+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
+check:rc==0
+cmd:lsdef $$CN |grep provmethod
+check:rc==0
+check:output=~__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
+cmd:if [[ "__GETNODEATTR($$CN,mgt)__" = "ipmi" ]]; then rsetboot $$CN net; fi
+check:rc==0
+cmd:if [ "__GETNODEATTR($$CN,mgt)__" != "ipmi" ];then if [ "__GETNODEATTR($$CN,arch)__" = "ppc64" ];then rnetboot $$CN;else rpower $$CN boot;fi else rpower $$CN boot;fi
+check:rc==0
+cmd:sleep 600
+cmd:lsdef -l $$CN | grep status
+cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 10;((a++));if [ $a -gt 300 ];then break;fi done
+cmd:ping $$CN -c 3
+check:output=~64 bytes from $$CN
+cmd:lsdef -l $$CN | grep status
+check:output=~booted
+cmd:xdsh $$CN date
+check:rc==0
+check:output=~\d\d:\d\d:\d\d
+cmd:xdsh $$CN "rm -rf /oldxcat"
+cmd:xdsh $$CN "mkdir -p /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "yum -y install bzip2"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$MIGRATION2_DEP"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$MIGRATION2_CORE"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-dep* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-core* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "/oldxcat/xcat-core/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat/xcat-dep/rh`echo __GETNODEATTR($$CN,os)__ | cut -c6`/__GETNODEATTR($$CN,arch)__/;./mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "yum clean all;yum -y install xCAT"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh"
+check:rc==0
+cmd:xdsh $$CN "lsxcatd -v"
+check:rc==0
+check:output=~$$MIGRATION2_VERSION
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "chdef -t node -o node0001 nodetype=osi groups=linux"
+check:rc==0
+cmd:xdsh $$CN "lsdef"
+check:output=~node0001
+cmd:check==0
+cmd:xdsh $$CN "cd /; scp -r $$MN:/core-rpms-snap.tar.bz2 /"
+check:rc==0
+cmd:xdsh $$CN "cd /; scp -r $$MN:/xcat-dep*.tar.bz2 /"
+check:rc==0
+cmd:xdsh $$CN "tar -jxf /core-rpms-snap.tar.bz2"
+check:rc==0
+cmd:xdsh $$CN "cd /root/xcat-core;./mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /xcat-dep*.tar.bz2"
+check:rc==0
+cmd:xdsh $$CN "cd /root/xcat-dep/rh`echo __GETNODEATTR($$CN,os)__ | cut -c6`/__GETNODEATTR($$CN,arch)__/;./mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "yum clean metadata;yum -y update '*xCAT*'"
+check:rc==0
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "lsdef"
+check:output=~node0001
+cmd:xdsh $$CN "noderm node0001"
+check:rc==0
+cmd:xdsh $$CN "lsxcatd -v"
+check:rc==0
+check:output=~$$LATEST_VERSION
+end
+
diff --git a/xCAT-test/autotest/testcase/migration/sles_migration b/xCAT-test/autotest/testcase/migration/sles_migration
new file mode 100644
index 000000000..1a729b45e
--- /dev/null
+++ b/xCAT-test/autotest/testcase/migration/sles_migration
@@ -0,0 +1,218 @@
+start:sles_migration1
+os:Linux
+#cmd:if ping -c 1 $$SN > /dev/null;then rpower $$SN off > /dev/null;fi
+#cmd:chdef -t node -o $$CN servicenode= monserver=$$MN nfsserver=$$MN tftpserver=$$MN xcatmaster=$$MN
+#check:rc==0
+cmd:if [ "__GETNODEATTR($$CN,arch)__" != "ppc64" -a "__GETNODEATTR($$CN,mgt)__" != "ipmi" ];then rmvm $$CN -f -p && mkvm $$CN -s 20G; fi
+cmd:rscan __GETNODEATTR($$CN,hcp)__ -w
+check:rc==0
+cmd:makedns -n
+check:rc==0
+cmd:service named restart
+check:rc==0
+cmd:makeconservercf $$CN
+check:rc==0
+cmd:cat /etc/conserver.cf | grep $$CN
+check:output=~$$CN
+cmd:sleep 60
+cmd:if [ "__GETNODEATTR($$CN,arch)__" = "ppc64" -a "__GETNODEATTR($$CN,mgt)__" != "ipmi" ]; then getmacs -D $$CN; fi
+check:rc==0
+cmd:makedhcp -n
+check:rc==0
+cmd:makedhcp -a
+check:rc==0
+cmd:service dhcpd restart
+check:rc==0
+cmd:if cat /etc/*release |grep SUSE >/dev/null;then cat /var/lib/dhcp/db/dhcpd.leases|grep $$CN;elif cat /etc/*release |grep "Red Hat" >/dev/null;then cat /var/lib/dhcpd/dhcpd.leases|grep $$CN;fi
+check:output=~$$CN
+cmd:copycds $$ISO
+check:rc==0
+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
+check:rc==0
+cmd:lsdef $$CN |grep provmethod
+check:rc==0
+check:output=~__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
+cmd:if [[ "__GETNODEATTR($$CN,mgt)__" = "ipmi" ]]; then rsetboot $$CN net; fi
+check:rc==0
+cmd:if [ "__GETNODEATTR($$CN,mgt)__" != "ipmi" ];then if [ "__GETNODEATTR($$CN,arch)__" = "ppc64" ];then rnetboot $$CN;else rpower $$CN boot;fi else rpower $$CN boot;fi
+check:rc==0
+cmd:sleep 600
+cmd:lsdef -l $$CN | grep status
+cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 10;((a++));if [ $a -gt 300 ];then break;fi done
+cmd:ping $$CN -c 3
+check:output=~64 bytes from $$CN
+cmd:lsdef -l $$CN | grep status
+check:output=~booted
+cmd:xdsh $$CN date
+check:rc==0
+check:output=~\d\d:\d\d:\d\d
+cmd:xdsh $$CN "rm -rf /oldxcat"
+cmd:xdsh $$CN "mkdir -p /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "zypper install bzip2"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$MIGRATION1_DEP"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$MIGRATION1_CORE"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-dep* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-core* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "/oldxcat/xcat-core/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat/xcat-dep/sles1`more /etc/*release|grep VERSION_ID|cut -c14`/__GETNODEATTR($$CN,arch)__/;./mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "zypper sl -U;zypper --gpg-auto-import-keys search --match-exact -s screen"
+check:rc==0
+cmd:xdsh $$CN "zypper -n install xCAT"
+check:rc==0
+cmd:xdsh $$CN "zypper -n install createrepo"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh"
+check:rc==0
+cmd:xdsh $$CN "lsxcatd -v"
+check:rc==0
+check:output=~$$MIGRATION1_VERSION
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "chdef -t node -o node0001 nodetype=osi groups=linux"
+check:rc==0
+cmd:xdsh $$CN "lsdef"
+check:output=~node0001
+cmd:xdsh $$CN "cd /; scp -r $$MN:/core-rpms-snap.tar.bz2 /"
+check:rc==0
+cmd:xdsh $$CN "cd /; scp -r $$MN:/xcat-dep*.tar.bz2 /"
+check:rc==0
+cmd:xdsh $$CN "tar -jxf /core-rpms-snap.tar.bz2"
+check:rc==0
+cmd:xdsh $$CN "cd /root/xcat-core;./mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /xcat-dep*.tar.bz2"
+check:rc==0
+cmd:xdsh $$CN "cd /root/xcat-dep/sles1`more /etc/*release|grep VERSION_ID|cut -c14`/__GETNODEATTR($$CN,arch)__/;./mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "zypper refresh;zypper -n update '*xCAT*'"
+check:rc==0
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "lsdef"
+check:output=~node0001
+cmd:xdsh $$CN "noderm node0001"
+check:rc==0
+cmd:xdsh $$CN "lsxcatd -v"
+check:rc==0
+check:output=~$$LATEST_VERSION
+end
+
+start:sles_migration2
+os:Linux
+#cmd:if ping -c 1 $$SN > /dev/null;then rpower $$SN off > /dev/null;fi
+#cmd:chdef -t node -o $$CN servicenode= monserver=$$MN nfsserver=$$MN tftpserver=$$MN xcatmaster=$$MN
+#check:rc==0
+cmd:if [ "__GETNODEATTR($$CN,arch)__" != "ppc64" -a "__GETNODEATTR($$CN,mgt)__" != "ipmi" ];then rmvm $$CN -f -p && mkvm $$CN -s 20G; fi
+cmd:rscan __GETNODEATTR($$CN,hcp)__ -w
+check:rc==0
+cmd:makedns -n
+check:rc==0
+cmd:service named restart
+check:rc==0
+cmd:makeconservercf $$CN
+check:rc==0
+cmd:cat /etc/conserver.cf | grep $$CN
+check:output=~$$CN
+cmd:sleep 60
+cmd:if [ "__GETNODEATTR($$CN,arch)__" = "ppc64" -a "__GETNODEATTR($$CN,mgt)__" != "ipmi" ]; then getmacs -D $$CN; fi
+check:rc==0
+cmd:makedhcp -n
+check:rc==0
+cmd:makedhcp -a
+check:rc==0
+cmd:service dhcpd restart
+check:rc==0
+cmd:if cat /etc/*release |grep SUSE >/dev/null;then cat /var/lib/dhcp/db/dhcpd.leases|grep $$CN;elif cat /etc/*release |grep "Red Hat" >/dev/null;then cat /var/lib/dhcpd/dhcpd.leases|grep $$CN;fi
+check:output=~$$CN
+cmd:copycds $$ISO
+check:rc==0
+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
+check:rc==0
+cmd:lsdef $$CN |grep provmethod
+check:rc==0
+check:output=~__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
+cmd:if [[ "__GETNODEATTR($$CN,mgt)__" = "ipmi" ]]; then rsetboot $$CN net; fi
+check:rc==0
+cmd:if [ "__GETNODEATTR($$CN,mgt)__" != "ipmi" ];then if [ "__GETNODEATTR($$CN,arch)__" = "ppc64" ];then rnetboot $$CN;else rpower $$CN boot;fi else rpower $$CN boot;fi
+check:rc==0
+cmd:sleep 600
+cmd:lsdef -l $$CN | grep status
+cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 10;((a++));if [ $a -gt 300 ];then break;fi done
+cmd:ping $$CN -c 3
+check:output=~64 bytes from $$CN
+cmd:lsdef -l $$CN | grep status
+check:output=~booted
+cmd:xdsh $$CN date
+check:rc==0
+check:output=~\d\d:\d\d:\d\d
+cmd:xdsh $$CN "rm -rf /oldxcat"
+cmd:xdsh $$CN "mkdir -p /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "zypper install bzip2"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$MIGRATION2_CORE"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$MIGRATION2_DEP"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-dep* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-core* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "/oldxcat/xcat-core/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat/xcat-dep/sles1`more /etc/*release|grep VERSION_ID|cut -c14`/__GETNODEATTR($$CN,arch)__/;./mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "zypper sl -U;zypper --gpg-auto-import-keys search --match-exact -s screen"
+check:rc==0
+cmd:xdsh $$CN "zypper -n install xCAT"
+check:rc==0
+cmd:xdsh $$CN "zypper -n install createrepo"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh"
+eck:rc==0
+cmd:xdsh $$CN "lsxcatd -v"
+check:rc==0
+check:output=~$$MIGRATION2_VERSION
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "chdef -t node -o node0001 nodetype=osi groups=linux"
+check:rc==0
+cmd:xdsh $$CN "lsdef"
+check:output=~node0001
+cmd:xdsh $$CN "cd /; scp -r $$MN:/core-rpms-snap.tar.bz2 /"
+check:rc==0
+cmd:xdsh $$CN "cd /; scp -r $$MN:/xcat-dep*.tar.bz2 /"
+check:rc==0
+cmd:xdsh $$CN "tar -jxf /core-rpms-snap.tar.bz2"
+check:rc==0
+cmd:xdsh $$CN "cd /root/xcat-core;./mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /xcat-dep*.tar.bz2"
+check:rc==0
+cmd:xdsh $$CN "cd /root/xcat-dep/sles1`more /etc/*release|grep VERSION_ID|cut -c14`/__GETNODEATTR($$CN,arch)__/;./mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "zypper refresh;zypper -n update '*xCAT*'"
+check:rc==0
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "lsdef"
+check:output=~node0001
+cmd:xdsh $$CN "noderm node0001"
+check:rc==0
+cmd:xdsh $$CN "lsxcatd -v"
+check:rc==0
+check:output=~$$LATEST_VERSION
+end
+
diff --git a/xCAT-test/autotest/testcase/migration/ubuntule_migration1_p8le b/xCAT-test/autotest/testcase/migration/ubuntule_migration1_p8le
new file mode 100644
index 000000000..4f8dedf11
--- /dev/null
+++ b/xCAT-test/autotest/testcase/migration/ubuntule_migration1_p8le
@@ -0,0 +1,122 @@
+start:ubuntu_migration1_p8le
+os:Linux
+cmd:copycds $$ISO
+check:rc==0
+cmd:if [[ "__GETNODEATTR($$CN,os)__" =~ "ubuntu" ]];then mkdir /tmp/iso; mount -o loop $$MINIISO /tmp/iso ; mkdir -p /install/__GETNODEATTR($$CN,os)__/__GETNODEATTR($$CN,arch)__/install/netboot; cp /tmp/iso/install/initrd.gz /install/__GETNODEATTR($$CN,os)__/__GETNODEATTR($$CN,arch)__/install/netboot;umount /tmp/iso; rmdir /tmp/iso; fi
+check:rc==0
+cmd:makedhcp -n
+check:rc==0
+cmd:makedhcp -a
+check:rc==0
+cmd:makedns -n
+check:rc==0
+cmd:makeconservercf $$CN
+check:rc==0
+cmd:cat /etc/conserver.cf | grep $$CN
+check:output=~$$CN
+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
+check:rc==0
+cmd:rpower $$CN boot
+check:rc==0
+cmd:sleep 300
+cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 10;((a++));if [ $a -gt 300 ];then break;fi done
+cmd:ping $$CN -c 3
+check:output=~64 bytes from $$CN
+cmd:lsdef -l $$CN | grep status
+check:output=~booted
+cmd:xdsh $$CN date
+check:rc==0
+check:output=~\d\d:\d\d:\d\d
+cmd:xdsh $$CN "echo \"nameserver 9.0.2.1\" >> /etc/resolv.conf"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y install software-properties-common"
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://ports.ubuntu.com/ubuntu-ports $lsb_r main"'
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://ports.ubuntu.com/ubuntu-ports ${lsb_r}-updates main"'
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://ports.ubuntu.com/ubuntu-ports ${lsb_r} universe"'
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://ports.ubuntu.com/ubuntu-ports ${lsb_r}-updates universe"'
+check:rc==0
+cmd:xdsh $$CN "sed -i '/install/d' /etc/apt/sources.list"
+check:rc==0
+cmd:xdsh $$CN "sed -i '/security.ubuntu.com/d' /etc/apt/sources.list"
+check:rc==0
+cmd:xdsh $$CN "wget -O - http://sourceforge.net/projects/xcat/files/ubuntu/apt.key/download | apt-key add -"
+check:rc==0
+cmd:xdsh $$CN "apt-get clean all"
+check:rc==0
+cmd:xdsh $$CN "apt-get update"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y install build-essential dpkg-dev dh-make debhelper fakeroot gnupg lintian pbuilder quilt reprepro libsoap-lite-perl libdbi-perl"
+check:rc==0
+cmd:xdsh $$CN "rm -rf /oldxcat"
+cmd:xdsh $$CN "mkdir -p /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$UBUNTU_MIGRATION1_CORE"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$UBUNTU_MIGRATION1_DEP"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-dep* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-core* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "/oldxcat/xcat-core/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "/oldxcat/xcat-dep/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "apt-get clean all"
+check:rc==0
+cmd:xdsh $$CN "apt-get update"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y install xcat xCAT-test"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -v > /oldxcat/old_version"
+check:rc==0
+cmd:xdsh $$CN "cat /oldxcat/old_version|grep $$MIGRATION1_VERSION"
+check:rc==0
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;chdef -t node -o node0001 nodetype=osi groups=linux"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsdef"
+check:output=~node0001
+cmd:xdsh $$CN "rm -rf /newxcat"
+cmd:xdsh $$CN "mkdir -p /newxcat"
+check:rc==0
+cmd:xdsh $$CN "scp -r $$MN:/core-debs-snap.tar.bz2 /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "scp -r $$MN:/xcat-dep*.tar.bz2 /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /newxcat/xcat-dep* -C /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /newxcat/core-debs-snap.tar.bz2 -C /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "/newxcat/xcat-core/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "/newxcat/xcat-dep/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "apt-get clean all"
+check:rc==0
+cmd:xdsh $$CN "apt-get update"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y upgrade xcat xCAT-test"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -v > /newxcat/new_version"
+check:rc==0
+cmd:xdsh $$CN "cat /newxcat/new_version|grep $$LATEST_VERSION"
+check:rc==0
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;rmdef node0001"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsdef"
+check:output!~node0001
+cmd:xdsh $$CN "diff /oldxcat/old_version /newxcat/new_version"
+check:rc!=0
+
+end
+
diff --git a/xCAT-test/autotest/testcase/migration/ubuntule_migration2_p8le b/xCAT-test/autotest/testcase/migration/ubuntule_migration2_p8le
new file mode 100644
index 000000000..92fa54ce4
--- /dev/null
+++ b/xCAT-test/autotest/testcase/migration/ubuntule_migration2_p8le
@@ -0,0 +1,122 @@
+start:ubuntu_migration2_p8le
+os:Linux
+cmd:copycds $$ISO
+check:rc==0
+cmd:if [[ "__GETNODEATTR($$CN,os)__" =~ "ubuntu" ]];then mkdir /tmp/iso; mount -o loop $$MINIISO /tmp/iso ; mkdir -p /install/__GETNODEATTR($$CN,os)__/__GETNODEATTR($$CN,arch)__/install/netboot; cp /tmp/iso/install/initrd.gz /install/__GETNODEATTR($$CN,os)__/__GETNODEATTR($$CN,arch)__/install/netboot;umount /tmp/iso; rmdir /tmp/iso; fi
+check:rc==0
+cmd:makedhcp -n
+check:rc==0
+cmd:makedhcp -a
+check:rc==0
+cmd:makedns -n
+check:rc==0
+cmd:makeconservercf $$CN
+check:rc==0
+cmd:cat /etc/conserver.cf | grep $$CN
+check:output=~$$CN
+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
+check:rc==0
+cmd:rpower $$CN boot
+check:rc==0
+cmd:sleep 300
+cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 10;((a++));if [ $a -gt 300 ];then break;fi done
+cmd:ping $$CN -c 3
+check:output=~64 bytes from $$CN
+cmd:lsdef -l $$CN | grep status
+check:output=~booted
+cmd:xdsh $$CN date
+check:rc==0
+check:output=~\d\d:\d\d:\d\d
+cmd:xdsh $$CN "echo \"nameserver 9.0.2.1\" >> /etc/resolv.conf"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y install software-properties-common"
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://ports.ubuntu.com/ubuntu-ports $lsb_r main"'
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://ports.ubuntu.com/ubuntu-ports ${lsb_r}-updates main"'
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://ports.ubuntu.com/ubuntu-ports ${lsb_r} universe"'
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://ports.ubuntu.com/ubuntu-ports ${lsb_r}-updates universe"'
+check:rc==0
+cmd:xdsh $$CN "sed -i '/install/d' /etc/apt/sources.list"
+check:rc==0
+cmd:xdsh $$CN "sed -i '/security.ubuntu.com/d' /etc/apt/sources.list"
+check:rc==0
+cmd:xdsh $$CN "wget -O - http://sourceforge.net/projects/xcat/files/ubuntu/apt.key/download | apt-key add -"
+check:rc==0
+cmd:xdsh $$CN "apt-get clean all"
+check:rc==0
+cmd:xdsh $$CN "apt-get update"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y install build-essential dpkg-dev dh-make debhelper fakeroot gnupg lintian pbuilder quilt reprepro libsoap-lite-perl libdbi-perl"
+check:rc==0
+cmd:xdsh $$CN "rm -rf /oldxcat"
+cmd:xdsh $$CN "mkdir -p /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$UBUNTU_MIGRATION2_CORE"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$UBUNTU_MIGRATION2_DEP"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-dep* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-core* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "/oldxcat/xcat-core/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "/oldxcat/xcat-dep/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "apt-get clean all"
+check:rc==0
+cmd:xdsh $$CN "apt-get update"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y install xcat xCAT-test"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -v > /oldxcat/old_version"
+check:rc==0
+cmd:xdsh $$CN "cat /oldxcat/old_version|grep $$MIGRATION2_VERSION"
+check:rc==0
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;chdef -t node -o node0001 nodetype=osi groups=linux"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsdef"
+check:output=~node0001
+cmd:xdsh $$CN "rm -rf /newxcat"
+cmd:xdsh $$CN "mkdir -p /newxcat"
+check:rc==0
+cmd:xdsh $$CN "scp -r $$MN:/core-debs-snap.tar.bz2 /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "scp -r $$MN:/xcat-dep*.tar.bz2 /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /newxcat/xcat-dep* -C /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /newxcat/core-debs-snap.tar.bz2 -C /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "/newxcat/xcat-core/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "/newxcat/xcat-dep/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "apt-get clean all"
+check:rc==0
+cmd:xdsh $$CN "apt-get update"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y upgrade xcat xCAT-test"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -v > /newxcat/new_version"
+check:rc==0
+cmd:xdsh $$CN "cat /newxcat/new_version|grep $$LATEST_VERSION"
+check:rc==0
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;rmdef node0001"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsdef"
+check:output!~node0001
+cmd:xdsh $$CN "diff /oldxcat/old_version /newxcat/new_version"
+check:rc!=0
+
+end
+
diff --git a/xCAT-test/autotest/testcase/migration/ubuntux_migration1_vm b/xCAT-test/autotest/testcase/migration/ubuntux_migration1_vm
new file mode 100644
index 000000000..a9aeea6aa
--- /dev/null
+++ b/xCAT-test/autotest/testcase/migration/ubuntux_migration1_vm
@@ -0,0 +1,118 @@
+start:ubuntux_migration1_vm
+os:Linux
+cmd:copycds $$ISO
+check:rc==0
+cmd:makedns -n
+check:rc==0
+cmd:sleep 60
+cmd:makedhcp -n
+check:rc==0
+cmd:makedhcp -a
+check:rc==0
+cmd:makeconservercf $$CN
+check:rc==0
+cmd:cat /etc/conserver.cf | grep $$CN
+check:output=~$$CN
+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
+check:rc==0
+cmd:rpower $$CN boot
+check:rc==0
+cmd:sleep 3000
+cmd:ping $$CN -c 3
+check:output=~64 bytes from $$CN
+cmd:lsdef -l $$CN | grep status
+check:output=~booted
+cmd:xdsh $$CN date
+check:rc==0
+check:output=~\d\d:\d\d:\d\d
+cmd:xdsh $$CN "echo \"nameserver 9.0.2.1\" >> /etc/resolv.conf"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y install software-properties-common"
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://archive.ubuntu.com/ubuntu $lsb_r main"'
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://archive.ubuntu.com/ubuntu ${lsb_r}-updates main"'
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://archive.ubuntu.com/ubuntu ${lsb_r} universe"'
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://archive.ubuntu.com/ubuntu ${lsb_r}-updates universe"'
+check:rc==0
+cmd:xdsh $$CN "sed -i '/install/d' /etc/apt/sources.list"
+check:rc==0
+cmd:xdsh $$CN "sed -i '/security.ubuntu.com/d' /etc/apt/sources.list"
+check:rc==0
+cmd:xdsh $$CN "wget -O - http://sourceforge.net/projects/xcat/files/ubuntu/apt.key/download | apt-key add -"
+check:rc==0
+cmd:xdsh $$CN "apt-get clean all"
+check:rc==0
+cmd:xdsh $$CN "apt-get update"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y install build-essential dpkg-dev dh-make debhelper fakeroot gnupg lintian pbuilder quilt reprepro libsoap-lite-perl libdbi-perl"
+check:rc==0
+cmd:xdsh $$CN "rm -rf /oldxcat"
+cmd:xdsh $$CN "mkdir -p /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$UBUNTU_MIGRATION1_CORE"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$UBUNTU_MIGRATION1_DEP"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-dep* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-core* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "/oldxcat/xcat-core/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "/oldxcat/xcat-dep/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "apt-get clean all"
+check:rc==0
+cmd:xdsh $$CN "apt-get update"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y install xcat xCAT-test"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -v > /oldxcat/old_version"
+check:rc==0
+cmd:xdsh $$CN "cat /oldxcat/old_version|grep $$MIGRATION1_VERSION"
+check:rc==0
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;chdef -t node -o node0001 nodetype=osi groups=linux"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsdef"
+check:output=~node0001
+cmd:xdsh $$CN "rm -rf /newxcat"
+cmd:xdsh $$CN "mkdir -p /newxcat"
+check:rc==0
+cmd:xdsh $$CN "scp -r $$MN:/core-debs-snap.tar.bz2 /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "scp -r $$MN:/xcat-dep*.tar.bz2 /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /newxcat/xcat-dep* -C /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /newxcat/core-debs-snap.tar.bz2 -C /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "/newxcat/xcat-core/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "/newxcat/xcat-dep/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "apt-get clean all"
+check:rc==0
+cmd:xdsh $$CN "apt-get update"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y upgrade xcat xCAT-test"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -v > /newxcat/new_version"
+check:rc==0
+cmd:xdsh $$CN "cat /newxcat/new_version|grep $$LATEST_VERSION"
+check:rc==0
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;rmdef node0001"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsdef"
+check:output!~node0001
+cmd:xdsh $$CN "diff /oldxcat/old_version /newxcat/new_version"
+check:rc!=0
+end
diff --git a/xCAT-test/autotest/testcase/migration/ubuntux_migration2_vm b/xCAT-test/autotest/testcase/migration/ubuntux_migration2_vm
new file mode 100644
index 000000000..bc16ee2c8
--- /dev/null
+++ b/xCAT-test/autotest/testcase/migration/ubuntux_migration2_vm
@@ -0,0 +1,118 @@
+start:ubuntux_migration2_vm
+os:Linux
+cmd:copycds $$ISO
+check:rc==0
+cmd:makedns -n
+check:rc==0
+cmd:sleep 60
+cmd:makedhcp -n
+check:rc==0
+cmd:makedhcp -a
+check:rc==0
+cmd:makeconservercf $$CN
+check:rc==0
+cmd:cat /etc/conserver.cf | grep $$CN
+check:output=~$$CN
+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
+check:rc==0
+cmd:rpower $$CN boot
+check:rc==0
+cmd:sleep 3000
+cmd:ping $$CN -c 3
+check:output=~64 bytes from $$CN
+cmd:lsdef -l $$CN | grep status
+check:output=~booted
+cmd:xdsh $$CN date
+check:rc==0
+check:output=~\d\d:\d\d:\d\d
+cmd:xdsh $$CN "echo \"nameserver 9.0.2.1\" >> /etc/resolv.conf"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y install software-properties-common"
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://archive.ubuntu.com/ubuntu $lsb_r main"'
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://archive.ubuntu.com/ubuntu ${lsb_r}-updates main"'
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://archive.ubuntu.com/ubuntu ${lsb_r} universe"'
+check:rc==0
+cmd:xdsh $$CN 'lsb_r=`lsb_release -sc`;add-apt-repository "deb http://archive.ubuntu.com/ubuntu ${lsb_r}-updates universe"'
+check:rc==0
+cmd:xdsh $$CN "sed -i '/install/d' /etc/apt/sources.list"
+check:rc==0
+cmd:xdsh $$CN "sed -i '/security.ubuntu.com/d' /etc/apt/sources.list"
+check:rc==0
+cmd:xdsh $$CN "wget -O - http://sourceforge.net/projects/xcat/files/ubuntu/apt.key/download | apt-key add -"
+check:rc==0
+cmd:xdsh $$CN "apt-get clean all"
+check:rc==0
+cmd:xdsh $$CN "apt-get update"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y install build-essential dpkg-dev dh-make debhelper fakeroot gnupg lintian pbuilder quilt reprepro libsoap-lite-perl libdbi-perl"
+check:rc==0
+cmd:xdsh $$CN "rm -rf /oldxcat"
+cmd:xdsh $$CN "mkdir -p /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$UBUNTU_MIGRATION2_CORE"
+check:rc==0
+cmd:xdsh $$CN "cd /oldxcat;wget $$UBUNTU_MIGRATION2_DEP"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-dep* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /oldxcat/xcat-core* -C /oldxcat"
+check:rc==0
+cmd:xdsh $$CN "/oldxcat/xcat-core/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "/oldxcat/xcat-dep/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "apt-get clean all"
+check:rc==0
+cmd:xdsh $$CN "apt-get update"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y install xcat xCAT-test"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -v > /oldxcat/old_version"
+check:rc==0
+cmd:xdsh $$CN "cat /oldxcat/old_version|grep $$MIGRATION2_VERSION"
+check:rc==0
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;chdef -t node -o node0001 nodetype=osi groups=linux"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsdef"
+check:output=~node0001
+cmd:xdsh $$CN "rm -rf /newxcat"
+cmd:xdsh $$CN "mkdir -p /newxcat"
+check:rc==0
+cmd:xdsh $$CN "scp -r $$MN:/core-debs-snap.tar.bz2 /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "scp -r $$MN:/xcat-dep*.tar.bz2 /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /newxcat/xcat-dep* -C /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "tar -jxvf /newxcat/core-debs-snap.tar.bz2 -C /newxcat/"
+check:rc==0
+cmd:xdsh $$CN "/newxcat/xcat-core/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "/newxcat/xcat-dep/mklocalrepo.sh"
+check:rc==0
+cmd:xdsh $$CN "apt-get clean all"
+check:rc==0
+cmd:xdsh $$CN "apt-get update"
+check:rc==0
+cmd:xdsh $$CN "apt-get -y upgrade xcat xCAT-test"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsxcatd -v > /newxcat/new_version"
+check:rc==0
+cmd:xdsh $$CN "cat /newxcat/new_version|grep $$LATEST_VERSION"
+check:rc==0
+cmd:xdsh $$CN "service xcatd status"
+check:rc==0
+check:output=~running
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;rmdef node0001"
+check:rc==0
+cmd:xdsh $$CN "source /etc/profile.d/xcat.sh;lsdef"
+check:output!~node0001
+cmd:xdsh $$CN "diff /oldxcat/old_version /newxcat/new_version"
+check:rc!=0
+end
diff --git a/xCAT-test/autotest/testcase/tabprune/cases0 b/xCAT-test/autotest/testcase/tabprune/cases0
index 651e5ea54..79b646035 100644
--- a/xCAT-test/autotest/testcase/tabprune/cases0
+++ b/xCAT-test/autotest/testcase/tabprune/cases0
@@ -39,15 +39,25 @@ end
start:tabprune_i_auditlog
description:remove the records whose recid is less than the input recid number
+cmd:chtab key=auditskipcmds site.value=
+check:rc=0
+cmd:lsdef -t site
+cmd:lsdef -t site
+cmd:lsdef -t site
+cmd:sleep 3
cmd:n1=`lsdef -t auditlog|sed -n 2p|awk '{print $1}'`;tabprune auditlog -i $n1;n1=$(($n1-1));lsdef -t auditlog -l $n1
check:rc=0
check:output=~tabprune of auditlog complete
check:output=~Could not get xCAT object definitions
+cmd:chtab key=auditskipcmds site.value=ALL
+check:rc=0
end
start:tabprune_V_n_auditlog
description:remove 3 records from the auditlog table and display the remove records
description:tabprune auditlog -V -n 3
+cmd:chtab key=auditskipcmds site.value=
+check:rc=0
cmd:lsdef -t site
cmd:lsdef -t site
cmd:lsdef -t site
@@ -57,5 +67,7 @@ check:output=~4
cmd:cat /tmp/result.tmp
check:output=~recid,audittime
cmd:rm /tmp/result.tmp
+cmd:chtab key=auditskipcmds site.value=ALL
+check:rc=0
end
diff --git a/xCAT-test/autotest/testcase/xcatconfig/case0 b/xCAT-test/autotest/testcase/xcatconfig/case0
index 993e49479..ffdb5407a 100644
--- a/xCAT-test/autotest/testcase/xcatconfig/case0
+++ b/xCAT-test/autotest/testcase/xcatconfig/case0
@@ -46,7 +46,7 @@ check:rc==0
cmd:xcatconfig -s
check:rc==0
check:output=~(Generating new node hostkeys)
-cmd:diff /etc/xcat/hostkeys/ssh_host_key.pub /etc/xcat/hostkeysbak/ssh_host_key.pub
+cmd:diff /etc/xcat/hostkeys/ssh_host_rsa_key.pub /etc/xcat/hostkeysbak/ssh_host_rsa_key.pub
check:rc!=0
cmd:rm -rf /etc/xcat/hostkeysbak
end
@@ -63,9 +63,7 @@ check:output=~Created xCAT certificate
check:output=~Signature ok
check:output=~OK
check:output!~Fail
-cmd:diff /etc/xcat/hostkeys/ssh_host_key.pub /etc/xcat/hostkeysbak/ssh_host_key.pub
-check:rc!=0
-cmd:diff /etc/xcat/hostkeys/ssh_host_key.pub /etc/xcat/hostkeysbak/ssh_host_key.pub
+cmd:diff /etc/xcat/hostkeys/ssh_host_rsa_key.pub /etc/xcat/hostkeysbak/ssh_host_rsa_key.pub
check:rc!=0
cmd:rm -rf /etc/xcat/hostkeysbak
cmd:rm -rf /root/.xcatbak
diff --git a/xCAT-test/xcattest b/xCAT-test/xcattest
index 5090576f6..5adc90aa3 100755
--- a/xCAT-test/xcattest
+++ b/xCAT-test/xcattest
@@ -94,6 +94,7 @@ if($ret != 0){
goto EXIT;
}
#run case
+&reordercases;
&runcase;
EXIT:
@@ -197,7 +198,7 @@ sub getConfig
}
}elsif ($type eq "Object") {
##OBJECT BLOCK##
- if($line =~ /(\w+)\s*=\s*([:\w\.\-]+)/) {
+ if($line =~ /(\w+)\s*=\s*([:\w\.\-\/]+)/) {
$attr = $1;
$value = $2;
if($attr eq "Name"){
@@ -222,7 +223,7 @@ sub getConfig
}
} elsif ($type eq "Varible") {
##NODE_BLOCK##
- if($line =~ /(\w+)\s*=\s*([\w\.\-\+\/]+)/) {
+ if($line =~ /(\w+)\s*=\s*([\w\.\-\+\/:]+)/) {
$config{var}{$1} = $2;
}
}
@@ -592,7 +593,7 @@ sub loadcase
}elsif($line =~ /^stop\s*:\s*(\w[\w\,]+)/){
next if $skip;
$cases[$i]->{stop}=$1;
- }elsif($line =~ /^cmd\s*:\s*([\$\w].+)/){
+ }elsif($line =~ /^cmd\s*:\s*([\/\$\w].+)/){
next if $skip;
$j = $j + 1;
$z = 0;
@@ -740,7 +741,7 @@ sub runcase
$j = 0;
$total = $total + 1;
my $now1=timelocal(localtime());
- my $time1=gmtime $now1;
+ my $time1=scalar(localtime());
log_this("------START:$$case{name}::Time:$time1------");
push @record, "------START:$$case{name}::Time:$time1------";
push @record, "FILENAME:$$case{filename}";
@@ -855,7 +856,7 @@ sub runcase
$j = $j + 1;
}
my $now2=timelocal(localtime());
- my $time2=gmtime $now2;
+ my $time2 = scalar(localtime());
my $diff=$now2-$now1;
if($failed){
log_this("------END::$$case{name}::Failed::Time:$time2 ::Duration::$diff sec------");
@@ -926,3 +927,42 @@ close(STDOUT);
}
+sub reordercases{
+ my @caserange = ();
+ my $line;
+ if($bundle_list){
+ my @bundles = split /,/, $bundle_list;
+ foreach my $bundle (@bundles){
+ if(!open(FILE, "<$rootdir/bundle/$bundle")){
+ log_this("can't open $rootdir/bundle/$bundle");
+ return 1;
+ }
+ while($line=){
+ $line = trim($line);
+ next if(length($line) == 0);
+ push(@caserange, $line);
+ }
+ close(FILE);
+ }
+ }
+ if($case_list){
+ @caserange = split /,/, $case_list;
+ }
+
+ my @tmpcases=();
+ foreach my $case (@caserange){
+ my $i=0;
+ my $hit=0;
+ foreach my $runcase (@cases){
+ if($runcase->{name} eq $case){
+ $hit=1;
+ last;
+ }
+ $i++;
+ next;
+ }
+ push(@tmpcases, $cases[$i]) if($hit);
+ }
+ @cases=@tmpcases;
+}
+
diff --git a/xCAT/etc/rsyslog.d/xcat-debug.conf b/xCAT/etc/rsyslog.d/xcat-debug.conf
new file mode 100644
index 000000000..4756b300d
--- /dev/null
+++ b/xCAT/etc/rsyslog.d/xcat-debug.conf
@@ -0,0 +1,3 @@
+# By default, dhcpd use the ``daemon'' facility. Thus dhcp logs will go here.
+# ftp.* is for tftp log.
+daemon.debug;ftp.* /var/log/messages
diff --git a/xCAT/postscripts/setupdockerhost b/xCAT/postscripts/setupdockerhost
index 1babeaaa1..3ea39f33e 100755
--- a/xCAT/postscripts/setupdockerhost
+++ b/xCAT/postscripts/setupdockerhost
@@ -17,13 +17,38 @@ if [ "$(uname -s|tr 'A-Z' 'a-z')" = "linux" ];then
fi
if [[ "$OSVER" != ubuntu* ]]; then
- echo "Sorry, only ubuntu have been verified at present"
+ echo "OS = $OSVER: Setup of Docker host is currently supported only on Ubuntu."
exit 1
fi
+if [[ "$ARCH" == "x86_64" ]]; then
+ # Check if docker-engine is installed
+ dpkg -l docker-engine
+ if [ $? -ne 0 ]; then
+ echo "Error: can not detect docker-engine installation."
+ exit 1
+ fi
+fi
+
+if [[ "$ARCH" == "ppc64el" ]]; then
+ # Check if docker.io is installed
+ dpkg -l docker.io
+ if [ $? -ne 0 ]; then
+ echo "Error: can not detect docker.io installation."
+ exit 1
+ fi
+fi
+
+# Docker is installed, check that it is running
+docker info
+if [ $? -ne 0 ]; then
+ echo "Docker is not running, Trying to restart."
+ service docker start
+fi
+
DOCKER_VERSION=`docker info 2>/dev/null | grep "Server Version:" | awk -F: '{print $2}'`
if [ -z "$DOCKER_VERSION" ];then
- echo "Failed to get docker server version"
+ echo "Error: failed to get docker server version"
exit 1
fi
MAJOR_VERSION=`echo $DOCKER_VERSION | awk -F. '{print $1}'`
@@ -32,7 +57,7 @@ if [ -z "$MAJOR_VERSION" -o -z "$MINOR_VERSION" ]; then
echo "The docker version $DOCKER_VERSION can not be recorgnized"
exit 1
elif [ $MAJOR_VERSION -le 1 -a $MINOR_VERSION -lt 10 ]; then
- echo "Only docker version 1.10.x and abover is supported"
+ echo "Only docker version 1.10.x and above is supported"
exit 1
fi
@@ -42,8 +67,8 @@ mask=""
gateway=""
nicname=""
-if [ $# -ne 1]; then
- echo "Usage error, must in the format '$0 netname=net/mask@gateway[:nicname]'"
+if [ $# -ne 1 ]; then
+ echo "Error: must be in format '$0 netname=net/mask@gateway[:nicname]'"
exit 1
else
NETINFO="$1"
@@ -53,8 +78,15 @@ else
mask=`echo $netinfo | awk -F'@' '{print $1}' | awk -F/ '{print $2}'`
gateway=`echo $netinfo | awk -F'@' '{print $2}' | awk -F: '{print $1}'`
nicname=`echo $netinfo | awk -F: '{print $2}'`
+ if [ ! -z "$nicname" ]; then
+ if [ ! -x /sbin/brctl ]; then
+ echo "Error: /sbin/brctl command not found. Not able to configure $nicname"
+ exit 1;
+ fi
+ fi
+
if [ -z "$netname" -o -z "$net" -o -z "$mask" -o -z "$gateway" ]; then
- echo "Usage error, must in the format '$0 netname=net/mask@gateway[:nicname]'"
+ echo "Error: must be in format '$0 netname=net/mask@gateway[:nicname]'"
exit 1
fi
fi
@@ -63,7 +95,7 @@ fi
#Setup TLS
master=$MASTER
if ! ping $master -c 1 > /dev/null 2>&1 ; then
- echo "Host $master is not reachable"
+ echo "Error: Host $master is not reachable"
exit 1
fi
@@ -87,20 +119,20 @@ if [ $? -ne 0 ]; then
cat /tmp/xcat_dockerhost_cert |
cat /tmp/xcat_dockerhost_cert | grep -E -v '{0,1}errorcode>|/{0,1}data>|{0,1}content>|{0,1}desc>' >$HOST_CERT_PEM
else
- echo "Can not get dockerhost certificate files"
+ echo "Error: can not get dockerhost certificate files"
exit 1
fi
cp /xcatpost/ca/ca-cert.pem $HOST_CA_PEM
if [ ! -e $HOST_CA_PEM -o ! -e $HOST_CERT_PEM ];then
- echo "Can not get dockerhost certificate files"
+ echo "Error: can not get dockerhost certificate files"
exit 1
fi
docker_conf_file="/etc/default/docker"
if [ ! -f "$docker_conf_file" ]; then
- echo "Error: file $docker_conf_file not exist"
+ echo "Error: file $docker_conf_file does not exist"
exit 1
fi
if ! grep "^DOCKER_OPTS" $docker_conf_file > /dev/null 2>&1 ; then
@@ -120,12 +152,15 @@ else
fi
#Restart docker service
-service docker restart
+service docker stop
+sleep 2
+systemctl daemon-reload
+service docker start
# It is found that sometimes the docker ps will failed if run immediately after restart docker daemon
sleep 2
docker ps
if [ $? -ne 0 ]; then
- echo "Docker service starting failed"
+ echo "Error: Failed to start Docker service"
exit 1
fi
@@ -133,7 +168,7 @@ echo "Will create network based on: $net/$mask@$gateway===$nicname:$netname=====
ret=`docker network create --gateway=$gateway --subnet=$net/$mask -o "com.docker.network.bridge.host_binding_ipv4"="$gateway" -o "com.docker.network.bridge.name"="$netname" $netname 2>&1`
if [ $? -ne 0 ]; then
- echo "Create network object \"$netname\" failed: $ret"
+ echo "Error: Creation of network object \"$netname\" failed: $ret"
exit 1
fi
if [ ! -z "$nicname" ]; then
diff --git a/xCAT/postscripts/syncfiles b/xCAT/postscripts/syncfiles
index d8835a08f..488571e2a 100644
--- a/xCAT/postscripts/syncfiles
+++ b/xCAT/postscripts/syncfiles
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# IBM(c) 2009 EPL license http://www.eclipse.org/legal/epl-v10.html
#####################################################
#
diff --git a/xCAT/postscripts/syslog b/xCAT/postscripts/syslog
index 6073bc59b..183344238 100755
--- a/xCAT/postscripts/syslog
+++ b/xCAT/postscripts/syslog
@@ -85,8 +85,6 @@ config_Rsyslog_C3()
if [ ! -f $2.XCATORIG ]; then
cp -f $2 $2.XCATORIG
- else
- cat $2 > $2.XCATORIG
fi
grep "xCAT settings" $conf_file 2>&1 1> /dev/null
@@ -113,6 +111,8 @@ config_Rsyslog_C3()
touch /var/log/messages
if ( pmatch $OSVER "ubuntu*" ) || ( is_lsb_ubuntu ) || ( pmatch $OSVER "debian*" ); then
chown syslog:adm /var/log/messages
+ sed -i 's/\$PrivDropToGroup syslog/\$PrivDropToGroup adm/' $2
+ chown syslog:adm /var/log/xcat
fi
else
sed -i 's/^\(\*\..*\)/\#\1/;
@@ -152,6 +152,10 @@ config_rsyslog_V8()
fi
fi
+ # backup rsyslog.conf
+ if [ ! -f $conf_file.XCATORIG ]; then
+ cp -f $conf_file $conf_file.XCATORIG
+ fi
# check if already an entry by xCAT. If so, we need to replace it
grep "xCAT settings" $conf_file 2>&1 1> /dev/null
@@ -170,10 +174,8 @@ config_rsyslog_V8()
touch /var/log/messages
if ( pmatch $OSVER "ubuntu*" ) || ( is_lsb_ubuntu ) || ( pmatch $OSVER "debian*" ); then
chown syslog:adm /var/log/messages
- fi
- # backup rsyslog.conf
- if [ ! -f $conf_file.XCATORIG ]; then
- cp -f $conf_file $conf_file.XCATORIG
+ sed -i 's/\$PrivDropToGroup syslog/\$PrivDropToGroup adm/' $conf_file
+ chown syslog:adm /var/log/xcat
fi
#comment out the rules which will write logs to /var/log/messages
@@ -193,6 +195,16 @@ config_rsyslog_V8()
s/#\$ModLoad imtcp.so/\$ModLoad imtcp.so/;
s/#\$InputTCPServerRun /\$InputTCPServerRun 514/' $remoteconf
fi
+
+ #ubuntu16.04 ships rsyslog 8.16.0,which does not ship remote.conf
+ #the configuration for UDP and TCP syslog reception is in rsyslog.conf
+ if [ -f "$conf_file" ]; then
+ sed -i 's/#module(load="imudp")/module(load="imudp")/;
+ s/#input(type="imudp" port="514")/input(type="imudp" port="514")/;
+ s/#module(load="imtcp")/module(load="imtcp")/;
+ s/#input(type="imtcp" port="514")/input(type="imtcp" port="514")/' $conf_file
+ fi
+
else
# not logging local, forward logging
# backup the existing remote.conf file from the install
diff --git a/xCAT/postscripts/xcatlib.sh b/xCAT/postscripts/xcatlib.sh
index b96f8dee5..fa238a852 100755
--- a/xCAT/postscripts/xcatlib.sh
+++ b/xCAT/postscripts/xcatlib.sh
@@ -278,11 +278,11 @@ function servicemap {
local svcmgrtype=$2
local svclistname=
- # if there are more than 1 possible service names for a service among
- # different os distributions and os releases, the service should be
- # specified with structure
- # INIT_(general service name) = "list of possible service names"
- #
+ # if there are more than 1 possible service names for a service among
+ # different os distributions and os releases, the service should be
+ # specified with structure
+ # INIT_(general service name) = "list of possible service names"
+ #
INIT_dhcp="dhcp3-server dhcpd isc-dhcp-server";
INIT_nfs="nfsserver nfs-server nfs nfs-kernel-server";
@@ -303,19 +303,37 @@ function servicemap {
local path=
local postfix=""
+ local svcmgrcmd=
local retdefault=$svcname
local svcvar=${svcname//[-.]/_}
if [ "$svcmgrtype" = "0" ];then
+ #for sysvinit
path="/etc/init.d/"
+ svcmgrcmd="service"
elif [ "$svcmgrtype" = "1" ];then
+ #for systemd
#retdefault=$svcname.service
- path="/usr/lib/systemd/system/"
+ #ubuntu 16.04 replace upstart with systemd,
+ #all the service unit files are placed under /lib/systemd/system/ on ubuntu
+ #all the service unit files are placed under /usr/lib/systemd/system/ on redhat and sles
+ #path should be delimited with space
+ path="/usr/lib/systemd/system/ /lib/systemd/system/"
postfix=".service"
+ svcmgrcmd="systemctl"
elif [ "$svcmgrtype" = "2" ];then
+ #for upstart
path="/etc/init/"
postfix=".conf"
+ svcmgrcmd="initctl"
fi
-
+
+ #check whether the service management command exists
+ type $svcmgrcmd >/dev/null 2>&1
+ if [ $? -ne 0 ];then
+ echo ""
+ return
+ fi
+
svclistname=INIT_$svcvar
local svclist=$(eval echo \$$svclistname)
@@ -325,12 +343,15 @@ function servicemap {
for name in `echo $svclist`
do
- if [ -e "$path$name$postfix" ];then
- echo $name
- break
- fi
+ for ipath in `echo $path`;do
+ if [ -e "$ipath$name$postfix" ];then
+ echo "$name"
+ return
+ fi
+ done
done
-
+
+ echo ""
}
#some special services cannot be processed in sysVinit, upstart and systemd framework, should be process here...
@@ -466,7 +487,7 @@ function restartservice {
elif [ -n "$svcjob" ];then
initctl status $svcjob | grep stop
if [ "$?" = "0" ];then
- cmd= "initctl start $svcjob"
+ cmd="initctl start $svcjob"
else
cmd="initctl restart $svcjob"
fi
diff --git a/xCAT/xCAT.spec b/xCAT/xCAT.spec
index fa2b7277e..0fdab697e 100644
--- a/xCAT/xCAT.spec
+++ b/xCAT/xCAT.spec
@@ -61,13 +61,13 @@ Requires: conserver-xcat
%ifarch i386 i586 i686 x86 x86_64
Requires: syslinux xCAT-genesis-scripts-x86_64 elilo-xcat
-Requires: ipmitool-xcat >= 1.8.9
+Requires: ipmitool-xcat >= 1.8.11
Requires: xnba-undi
%endif
%ifos linux
%ifarch ppc ppc64 ppc64le
Requires: xCAT-genesis-scripts-ppc64
-Requires: ipmitool-xcat >= 1.8.9
+Requires: ipmitool-xcat >= 1.8.15
%endif
%endif
@@ -252,6 +252,7 @@ exit 0
/etc/logrotate.d/xcat
/etc/rsyslog.d/xcat-cluster.conf
/etc/rsyslog.d/xcat-compute.conf
+/etc/rsyslog.d/xcat-debug.conf
/install/winpostscripts
%endif
%defattr(-,root,root)
diff --git a/xCATsn/xCATsn.spec b/xCATsn/xCATsn.spec
index 5eb868494..560c09f19 100644
--- a/xCATsn/xCATsn.spec
+++ b/xCATsn/xCATsn.spec
@@ -56,13 +56,13 @@ Requires: conserver-xcat
%ifarch i386 i586 i686 x86 x86_64
Requires: syslinux xCAT-genesis-scripts-x86_64 elilo-xcat
-Requires: ipmitool-xcat >= 1.8.9
+Requires: ipmitool-xcat >= 1.8.11
Requires: xnba-undi
%endif
%ifos linux
%ifarch ppc ppc64 ppc64le
Requires: xCAT-genesis-scripts-ppc64
-Requires: ipmitool-xcat >= 1.8.9
+Requires: ipmitool-xcat >= 1.8.15
%endif
%endif