diff --git a/docs/source/guides/admin-guides/manage_clusters/common/deployment/additionalpkg/nonubuntu_os_pkg.rst b/docs/source/guides/admin-guides/manage_clusters/common/deployment/additionalpkg/nonubuntu_os_pkg.rst index 7380332a9..1968f5b7f 100644 --- a/docs/source/guides/admin-guides/manage_clusters/common/deployment/additionalpkg/nonubuntu_os_pkg.rst +++ b/docs/source/guides/admin-guides/manage_clusters/common/deployment/additionalpkg/nonubuntu_os_pkg.rst @@ -77,31 +77,33 @@ where **/install/post/custom//myotherlist** is another package list file Note: the trailing **"#"** character at the end of the line. It is important to specify this character for correct pkglist parsing. -Group/Pattern Names -''''''''''''''''''' +Module/Group/Pattern Names +'''''''''''''''''''''''''' -It is only supported for stateful deployment. +.. note:: On SLES pattern names are not supported for diskless deployment -In Linux, a groups of rpms can be packaged together into one package. It is called a group on RedHat, CentOS, Fedora and Scientific Linux. To get the list of available groups, run +On Linux, groups of rpms can be packaged together into one package. It can be a module or a group on RedHat, CentOS, Fedora and Scientific Linux. To get the list of available groups, run * **[RHEL]** :: - yum grouplist + yum group list + yum module list * **[SLES]** :: zypper se -t pattern -You can specify in this file the group/pattern names by adding a **'@'** and a space before the group/pattern names. For example: :: +You can specify module/group/pattern names by adding a **'@'** before the module/group/pattern names. For example: :: - @ base + @base + @Security Tools + @ruby:2.6 Remove RPMs After Installing '''''''''''''''''''''''''''' -It is only supported for stateful deployment. - -You can specify in this file that certain rpms to be removed after installing the new software. This is done by adding **'-'** before the rpm names you want to remove. For example: :: +You can specify that certain rpms to be removed after installing the new software. This is done by adding **'-'** before the rpm names you want to remove. For example: :: -ntp + -@ruby:2.6 diff --git a/docs/source/guides/admin-guides/references/man1/xcattest.1.rst b/docs/source/guides/admin-guides/references/man1/xcattest.1.rst index f24f6f324..a2762fa6f 100644 --- a/docs/source/guides/admin-guides/references/man1/xcattest.1.rst +++ b/docs/source/guides/admin-guides/references/man1/xcattest.1.rst @@ -128,15 +128,15 @@ The xCAT-test test cases are in flat text format, the testing framework will par #optional, description of the test case description: what the test case is for? #optional, environment requirements - os:AIX/Linux + os:AIX/Linux/sles/ubuntu/rhels/rhels7/rhels8 #optional, environment requirements - arch:ppc/x86 + arch:ppc/ppc64/ppc64le/x86_64 #optional, environment requirements - hcp:hmc/mm/bmc/fsp + hcp:hmc/mm/bmc/fsp/ipmi/openbmc #optional, label label:label1 #required, command need to run - cmd:comand + cmd:command #optional, check return code of last executed command check:rc == or != return code #optional, check output of last executed command @@ -155,7 +155,7 @@ EXAMPLES 1. - To run all test cases related command rpower: + To run all test cases related to command \ **rpower**\ : .. code-block:: perl @@ -167,7 +167,7 @@ EXAMPLES 2. - To run customized bundle with /tmp/config file: + To run customized bundle with \ */tmp/config*\ file: .. code-block:: perl @@ -181,7 +181,7 @@ EXAMPLES 3. - To run specified test cases with /tmp/config file: + To run specified test cases with \ */tmp/config*\ file: .. code-block:: perl @@ -193,7 +193,7 @@ EXAMPLES 4. - To add a new case to test \ **chvm**\ . In the example, we assume that the min_mem should not be equal to 16 in the lpar profile of computenode. The case name is chvm_custom. It create a test lpar named testnode firstly, that change the min_mem of the lpar to 16 using chvm, then check if min_mem have changed correctly. At last, the testnode be remove to ensure no garbage produced in the cases. + To add a new test case to test \ **chvm**\ . In this example, we assume that the \ **min_mem**\ should not be equal to 16 in the lpar profile of computenode. The case name is \ **chvm_customi**\ . It creates a test lpar named \ **testnode**\ first, then changes the \ **min_mem**\ of the lpar to 16 using \ **chvm**\ , then checks if \ **min_mem**\ have changed correctly. Finally, the \ **testnode**\ is removed. .. code-block:: perl diff --git a/xCAT-test/autotest/bundle/rhels_ppcle_weekly.bundle b/xCAT-test/autotest/bundle/rhels_ppcle_weekly.bundle index 3334b784b..3bfccc16b 100644 --- a/xCAT-test/autotest/bundle/rhels_ppcle_weekly.bundle +++ b/xCAT-test/autotest/bundle/rhels_ppcle_weekly.bundle @@ -25,10 +25,14 @@ nodeset_runimg nodeset_shell nodeset_shell_lzma reg_linux_diskfull_installation_flat +reg_linux_diskfull_installation_flat_groups_rh7 +reg_linux_diskfull_installation_flat_modules_and_groups_rh8 compare_postscripts cleanup_postscripts_diskfull reg_linux_diskless_installation_flat reg_linux_diskless_installation_flat_squashfs +reg_linux_diskless_installation_flat_groups_rh7 +reg_linux_diskless_installation_flat_modules_and_groups_rh8 reg_linux_statelite_installation_flat cleanup_postscripts_diskless rmimage_diskless diff --git a/xCAT-test/autotest/bundle/rhels_x86_weekly.bundle b/xCAT-test/autotest/bundle/rhels_x86_weekly.bundle index 1ea44ff43..893b15648 100644 --- a/xCAT-test/autotest/bundle/rhels_x86_weekly.bundle +++ b/xCAT-test/autotest/bundle/rhels_x86_weekly.bundle @@ -25,10 +25,14 @@ nodeset_runimg nodeset_shell nodeset_shell_lzma reg_linux_diskfull_installation_flat +reg_linux_diskfull_installation_flat_groups_rh7 +reg_linux_diskfull_installation_flat_modules_and_groups_rh8 compare_postscripts cleanup_postscripts_diskfull reg_linux_diskless_installation_flat reg_linux_diskless_installation_flat_squashfs +reg_linux_diskless_installation_flat_groups_rh7 +reg_linux_diskless_installation_flat_modules_and_groups_rh8 reg_linux_statelite_installation_flat cleanup_postscripts_diskless rmimage_diskless diff --git a/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_flat_modules_and_groups b/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_flat_modules_and_groups new file mode 100644 index 000000000..21cfa2feb --- /dev/null +++ b/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_flat_modules_and_groups @@ -0,0 +1,80 @@ +start:reg_linux_diskfull_installation_flat_modules_and_groups_rh8 +description:Test provision and updatenode with yum groups and modules. Runs only on RH8 +os:rhels8 +label:flat_cn_diskful,provision +cmd:cp /opt/xcat/share/xcat/install/rh/compute.rhels8.pkglist /opt/xcat/share/xcat/install/rh/compute.pkglist.modules +cmd:echo "@Security Tools" >> /opt/xcat/share/xcat/install/rh/compute.pkglist.modules +cmd:echo "@ruby:2.6" >> /opt/xcat/share/xcat/install/rh/compute.pkglist.modules +cmd:chdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute pkglist=/opt/xcat/share/xcat/install/rh/compute.pkglist.modules +cmd:cat /opt/xcat/share/xcat/install/rh/compute.pkglist.modules +cmd:/opt/xcat/share/xcat/tools/autotest/testcase/commoncmd/retry_install.sh $$CN __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute +check:rc==0 +check:output=~Provision node\(s\)\: $$CN +cmd:ping $$CN -c 3 +check:rc==0 +check:output=~64 bytes from $$CN +cmd:lsdef -l $$CN | grep status +check:rc==0 +check:output=~booted +cmd:xdsh $$CN date +check:rc==0 +# Verify group and module were installed +cmd:xdsh $$CN yum group list installed +check:output=~Security Tools +cmd:xdsh $$CN yum module list --installed +check:output=~ruby 2.6 +# Verify group and module can be removed +cmd:cp /opt/xcat/share/xcat/install/rh/compute.rhels8.pkglist /opt/xcat/share/xcat/install/rh/compute.pkglist.modules +cmd:echo "-@Security Tools" >> /opt/xcat/share/xcat/install/rh/compute.pkglist.modules +cmd:echo "-@ruby:2.6" >> /opt/xcat/share/xcat/install/rh/compute.pkglist.modules +cmd:updatenode $$CN -P ospkgs +check:rc==0 +cmd:xdsh $$CN yum group list installed +check:output!~Security Tools +cmd:xdsh $$CN yum module list --installed +check:output!~ruby 2.6 +# Cleanup +cmd:chdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute pkglist=/opt/xcat/share/xcat/install/rh/compute.rhels8.pkglist +cmd:rm /opt/xcat/share/xcat/install/rh/compute.pkglist.modules +end + +start:reg_linux_diskfull_installation_flat_groups_rh7 +description:Test provision and updatenode with yum groups. Runs only on RH7 +os:rhels7 +label:flat_cn_diskful,provision +cmd:cp /opt/xcat/share/xcat/install/rh/compute.rhels7.pkglist /opt/xcat/share/xcat/install/rh/compute.pkglist.modules +cmd:echo "@Security Tools" >> /opt/xcat/share/xcat/install/rh/compute.pkglist.modules +cmd:chdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute pkglist=/opt/xcat/share/xcat/install/rh/compute.pkglist.modules +cmd:cat /opt/xcat/share/xcat/install/rh/compute.pkglist.modules +cmd:/opt/xcat/share/xcat/tools/autotest/testcase/commoncmd/retry_install.sh $$CN __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute +check:rc==0 +check:output=~Provision node\(s\)\: $$CN +cmd:ping $$CN -c 3 +check:rc==0 +check:output=~64 bytes from $$CN +cmd:lsdef -l $$CN | grep status +check:rc==0 +check:output=~booted +cmd:xdsh $$CN date +check:rc==0 +# Verify group was installed by cheking individual RPMs +cmd:xdsh $$CN rpm -q xml-common openscap-scanner openscap scap-security-guide +check:output=~xml-common- +check:output=~openscap-scanner- +check:output=~openscap- +check:output=~scap-security-guide- +# Verify group can be removed (manually install, then remove using updatenode) +cmd:xdsh $$CN yum group install -y compat-libraries +check:rc==0 +cmd:xdsh $$CN yum group list installed +check:output=~Compatibility Libraries +cmd:cp /opt/xcat/share/xcat/install/rh/compute.rhels7.pkglist /opt/xcat/share/xcat/install/rh/compute.pkglist.modules +cmd:echo "-@Compatibility Libraries" >> /opt/xcat/share/xcat/install/rh/compute.pkglist.modules +cmd:updatenode $$CN -P ospkgs +check:rc==0 +cmd:xdsh $$CN yum group list installed +check:output!~Compatibility Libraries +# Cleanup +cmd:chdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute pkglist=/opt/xcat/share/xcat/install/rh/compute.rhels7.pkglist +cmd:rm /opt/xcat/share/xcat/install/rh/compute.pkglist.modules +end diff --git a/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_flat_modules_and_groups b/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_flat_modules_and_groups new file mode 100644 index 000000000..5821e409c --- /dev/null +++ b/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_flat_modules_and_groups @@ -0,0 +1,98 @@ +start:reg_linux_diskless_installation_flat_modules_and_groups_rh8 +description:Test provision and updatenode with yum groups and modules. Runs only on RH8 +os:rhels8 +label:flat_cn_diskless,provision +cmd:cp /opt/xcat/share/xcat/netboot/rh/compute.rhels8.__GETNODEATTR($$CN,arch)__.pkglist /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:echo "yum" >> /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:echo "@Security Tools" >> /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:echo "@ruby:2.6" >> /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:chdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute pkglist=/opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +check:rc==0 +cmd:cat /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:rmimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute +check:rc==0 +cmd:genimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute +check:rc==0 +cmd:packimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute +check:rc==0 +cmd:/opt/xcat/share/xcat/tools/autotest/testcase/commoncmd/retry_install.sh $$CN __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute +check:rc==0 +check:output=~Provision node\(s\)\: $$CN +cmd:ping $$CN -c 3 +check:rc==0 +check:output=~64 bytes from $$CN +cmd:lsdef -l $$CN | grep status +check:rc==0 +check:output=~booted +cmd:xdsh $$CN date +check:rc==0 +# Verify group and module were installed. Can not use "yum group" +# since .repo files are not setup at this point +cmd:xdsh $$CN rpm -q xml-common +check:rc==0 +check:output=~xml-common +cmd:xdsh $$CN yum module list --installed +check:output=~ruby +check:output=~2.6 + +# Verify group and module can be removed +cmd:cp /opt/xcat/share/xcat/netboot/rh/compute.rhels8.__GETNODEATTR($$CN,arch)__.pkglist /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:echo "-@Security Tools" >> /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:echo "-@ruby:2.6" >> /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:cat /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:updatenode $$CN -P ospkgs +check:rc==0 +cmd:xdsh $$CN yum group list installed +check:output!~Security Tools +cmd:xdsh $$CN yum module list --installed +check:output!~ruby +# Cleanup +cmd:chdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute pkglist=/opt/xcat/share/xcat/netboot/rh/compute.rhels8.__GETNODEATTR($$CN,arch)__.pkglist +cmd:rm /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +end + +start:reg_linux_diskless_installation_flat_groups_rh7 +description:Test provision and updatenode with yum groups. Runs only on RH7 +os:rhels7 +label:flat_cn_diskless,provision +cmd:cp /opt/xcat/share/xcat/netboot/rh/compute.rhels7.__GETNODEATTR($$CN,arch)__.pkglist /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:echo "yum" >> /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:echo "@Security Tools" >> /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:chdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute pkglist=/opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +check:rc==0 +cmd:cat /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:rmimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute +check:rc==0 +cmd:genimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute +check:rc==0 +cmd:packimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute +check:rc==0 +cmd:/opt/xcat/share/xcat/tools/autotest/testcase/commoncmd/retry_install.sh $$CN __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute +check:rc==0 +check:output=~Provision node\(s\)\: $$CN +cmd:ping $$CN -c 3 +check:rc==0 +check:output=~64 bytes from $$CN +cmd:lsdef -l $$CN | grep status +check:rc==0 +check:output=~booted +cmd:xdsh $$CN date +check:rc==0 +# Verify group was installed. Can not use "yum group" +# since .repo files are not setup at this point +cmd:xdsh $$CN rpm -q xml-common +check:rc==0 +check:output=~xml-common + +# Verify group can be removed +cmd:cp /opt/xcat/share/xcat/netboot/rh/compute.rhels7.__GETNODEATTR($$CN,arch)__.pkglist /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:echo "-@Security Tools" >> /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:cat /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +cmd:updatenode $$CN -P ospkgs +check:rc==0 +cmd:xdsh $$CN yum group list installed +check:output!~Security Tools +# Cleanup +cmd:chdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute pkglist=/opt/xcat/share/xcat/netboot/rh/compute.rhels7.__GETNODEATTR($$CN,arch)__.pkglist +cmd:rm /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules +end diff --git a/xCAT-test/pods/man1/xcattest.1.pod b/xCAT-test/pods/man1/xcattest.1.pod index ce3bf1401..d54afcd33 100644 --- a/xCAT-test/pods/man1/xcattest.1.pod +++ b/xCAT-test/pods/man1/xcattest.1.pod @@ -80,15 +80,15 @@ The xCAT-test test cases are in flat text format, the testing framework will par #optional, description of the test case description: what the test case is for? #optional, environment requirements - os:AIX/Linux + os:AIX/Linux/sles/ubuntu/rhels/rhels7/rhels8 #optional, environment requirements - arch:ppc/x86 + arch:ppc/ppc64/ppc64le/x86_64 #optional, environment requirements - hcp:hmc/mm/bmc/fsp + hcp:hmc/mm/bmc/fsp/ipmi/openbmc #optional, label label:label1 #required, command need to run - cmd:comand + cmd:command #optional, check return code of last executed command check:rc == or != return code #optional, check output of last executed command @@ -103,13 +103,13 @@ B: Each test case can have more than one I sections and each I s =item 1. -To run all test cases related command rpower: +To run all test cases related to command B: xcattest -f /tmp/config -c rpower =item 2. -To run customized bundle with /tmp/config file: +To run customized bundle with I file: xcattest -c lsdef -l > /opt/xcat/share/xcat/tools/autotest/bundle/custom.bundle Modify custom.bundle @@ -117,13 +117,13 @@ To run customized bundle with /tmp/config file: =item 3. -To run specified test cases with /tmp/config file: +To run specified test cases with I file: xcattest -f /tmp/config -t lsdef_t_o_l_z =item 4. -To add a new case to test B. In the example, we assume that the min_mem should not be equal to 16 in the lpar profile of computenode. The case name is chvm_custom. It create a test lpar named testnode firstly, that change the min_mem of the lpar to 16 using chvm, then check if min_mem have changed correctly. At last, the testnode be remove to ensure no garbage produced in the cases. +To add a new test case to test B. In this example, we assume that the B should not be equal to 16 in the lpar profile of computenode. The case name is B. It creates a test lpar named B first, then changes the B of the lpar to 16 using B, then checks if B have changed correctly. Finally, the B is removed. add a new test case file in /opt/xcat/share/xcat/tools/autotest/chvm edit filename diff --git a/xCAT-test/xcattest b/xCAT-test/xcattest index cac3ed4ad..cae71da3b 100755 --- a/xCAT-test/xcattest +++ b/xCAT-test/xcattest @@ -205,7 +205,7 @@ if (defined $list) { log_this($running_log_fd, "$_"); } } elsif (!@cases_to_be_run && $search_expression){ - log_this($running_log_fd, "There is no cases match search expression $search_expression"); + log_this($running_log_fd, "There are no cases match search expression $search_expression"); } else { #list the cases shipped by xcat test package @@ -219,7 +219,7 @@ if (defined $list) { } } elsif ($list eq "caseinfo") { if (!@cases_to_be_run && $search_expression){ - log_this($running_log_fd, "There is no cases match search expression $search_expression"); + log_this($running_log_fd, "There are no cases match search expression $search_expression"); } else { $rst = show_case_info(\@cases_to_be_run, \$error); if ($rst) { @@ -436,7 +436,7 @@ if ($stop_to_keep_env) { # Description: print message to log file and STDOUT. # Set '-q' option in command line, just print message to log file # Atrributes: $logdf: the file description of openning log file -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #-------------------------------------------------------- sub log_this { my $logdf = shift; @@ -463,7 +463,7 @@ sub log_this { # Fuction name: pro_init # Description: Do program initialization # Atrributes: -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #-------------------------------------------------------- sub pro_init { mkpath("$resultdir") unless (-d "$resultdir"); @@ -489,7 +489,7 @@ sub pro_init { # The reference of array to save the cases to be handled # $error_ref (output attribe) # The reference of scalar to save the error message generated during running current function -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #------------------------------------------------------- sub calculate_cases_to_be_run { my $cases_to_be_run_ref = shift; @@ -596,7 +596,7 @@ sub calculate_cases_to_be_run { # Fuction name: expend_include_file # Description: To support '#INCLUDE" label in bundle file, to expend the include file # Atrributes: $bundle (input attribute): the name of bundle -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #-------------------------------------------------------- sub expend_include_file { my $bundle = shift; @@ -629,7 +629,7 @@ sub expend_include_file { # Fuction name: to_exit # Description: customize exit function, include clean up environment # Atrributes: -# Retrun code: +# Return code: #-------------------------------------------------------- sub to_exit { my $exit_code = shift; @@ -645,7 +645,7 @@ sub to_exit { # Atrributes: # $error_ref (output attribe) # The reference of scalar to save the error message generated during running current function -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #-------------------------------------------------------- sub check_option_validity { my $error_ref = shift; @@ -675,7 +675,7 @@ sub check_option_validity { # The reference of array to save the cases to be handled # $error_ref (output attribe) # The reference of scalar to save the error message generated during running current function -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #-------------------------------------------------------- sub show_case_info { my $cases_to_be_run_ref = shift; @@ -715,7 +715,7 @@ sub show_case_info { # Atrributes: # $error_ref (output attribe) # The reference of scalar to save the error message generated during running current function -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #-------------------------------------------------------- sub show_bundle_info { my $error_ref = shift; @@ -775,7 +775,7 @@ sub show_bundle_info { # config{var}{varname} # $error_ref (output attribe) # The reference of scalar to save the error message generated during running current function -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #-------------------------------------------------------- sub load_config_file { my $configfile = shift; @@ -932,7 +932,7 @@ sub load_config_file { # The flag of whether run these case nex. # 0 means no, just load case basic information, used by "searching informaiotn funtion of xcattest" # 1 means yes, load case basic information and parse the attribure at the sametime. used by "run case funtion of xcattest" -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #-------------------------------------------------------- sub load_case { my $cases_to_be_run_ref = shift; @@ -1280,7 +1280,7 @@ sub load_case { } } if (@unexisted_cases) { - log_this($running_log_fd, "Not existed:", @unexisted_cases); + log_this($running_log_fd, "Does not exist:", @unexisted_cases); push @wrong_cases, @unexisted_cases; $caseerror = 2; } @@ -1310,7 +1310,7 @@ sub load_case { # Atrributes: # $error_ref (output attribe) # The reference of scalar to save the error message generated during running current function -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #-------------------------------------------------------- sub bakup_current_env { my $error_ref = shift; @@ -1330,7 +1330,7 @@ sub bakup_current_env { # Atrributes: # $error_ref (output attribe) # The reference of scalar to save the error message generated during running current function -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #-------------------------------------------------------- sub restore_current_env { my $error_ref = shift; @@ -1354,7 +1354,7 @@ sub restore_current_env { # Due to there maybe is more than one implementation for one case # $error_ref (output attribe) # The reference of scalar to save the error message generated during running current function -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #-------------------------------------------------------- sub run_case { my $cases_to_be_run_ref = shift; @@ -1556,7 +1556,7 @@ sub run_case { # The structure of %config please refer to the comment of function load_config_file # $error_ref (output attribe) # The reference of scalar to save the error message generated during running current function -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #-------------------------------------------------------- sub setup_env_by_configure_file { my $config_ref = shift; @@ -1620,7 +1620,7 @@ sub setup_env_by_configure_file { # The structure of %config please refer to the comment of function load_config_file # $error_ref (output attribe) # The reference of scalar to save the error message generated during running current function -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #-------------------------------------------------------- sub detect_current_env { my $config_ref = shift; @@ -1672,7 +1672,7 @@ sub detect_current_env { # Fuction name: runcmd # Description: run a command after 'cmd' label in one case # Atrributes: -# Retrun code: +# Return code: # $::RUNCMD_RC : the return code of command # @$outref : the output of command #-------------------------------------------------------- @@ -1701,7 +1701,7 @@ sub runcmd # Atrributes: # $script_ref (input attribute) # the reference of array where save every line of script -# Retrun code: +# Return code: # $::RUNCMD_RC : the return code of command # @$outref : the output of command #-------------------------------------------------------- @@ -1730,7 +1730,7 @@ sub runscript { # Fuction name: getnodeattr # Description: get the value of node attribute from current environment # Atrributes: -# Retrun code: +# Return code: #-------------------------------------------------------- sub getnodeattr { my $node = shift; @@ -1743,7 +1743,7 @@ sub getnodeattr { # Fuction name: getobjectattr # Description: get the value of object attribute from current DB # Atrributes: -# Retrun code: +# Return code: #-------------------------------------------------------- sub getobjectattr { my $objtype = shift; @@ -1772,7 +1772,7 @@ sub getobjectattr { # The target scan directory # $files_path_ref (output attribute) # the reference of array where save all vaild files under $dir -# Retrun code: +# Return code: #-------------------------------------------------------- sub get_files_recursive { @@ -1804,7 +1804,7 @@ sub get_files_recursive # Fuction name: is_valid_case_name # Description: to check if a case name is valid # Atrributes: $casename (input atrribute): the target case name -# Retrun code: 0 Success 1 Failed +# Return code: 0 Success 1 Failed #-------------------------------------------------------- sub is_valid_case_name { my $casename = shift; @@ -1817,13 +1817,20 @@ sub is_valid_case_name { #------------------------------------------------------- # Fuction name: get_current_os -# Description: +# Description: Return name of current OS. For rhels, also return major number # Atrributes: -# Retrun code: +# Return code: #-------------------------------------------------------- sub get_current_os { if (-f "/etc/redhat-release") { - return "rhels"; + # Try to return "rhels" + major version, if can not get it, just return "rhels" + my $major_version = ""; + my @output = &runcmd("cat /etc/redhat-release"); + my $out_line = $output[0]; + if ($out_line =~ (/(\d+)\.(\d*)/)) { + $major_version = $1; + } + return "rhels".$major_version; } elsif (-f "/etc/lsb-release") { return "ubuntu"; } elsif (-f "/etc/os-release") { @@ -1844,7 +1851,7 @@ sub get_current_os { # Fuction name: generate_performance_report # Description: # Atrributes: -# Retrun code: +# Return code: #-------------------------------------------------------- sub generate_performance_report { my $runninglog = shift; @@ -1889,7 +1896,7 @@ sub generate_performance_report { # Fuction name: getvar # Description: replace specific attribute in case definition by the value set in config file # Atrributes: -# Retrun code: +# Return code: #-------------------------------------------------------- sub getvar { @@ -1913,7 +1920,7 @@ sub getvar # Fuction name: getfunc # Description: replace specific funciton in case definition # Atrributes: -# Retrun code: +# Return code: #-------------------------------------------------------- sub getfunc { @@ -1952,7 +1959,7 @@ sub getfunc # Fuction name: gettablevalue # Description: get specific table value from current environment # Atrributes: -# Retrun code: +# Return code: #-------------------------------------------------------- sub gettablevalue { @@ -1965,7 +1972,7 @@ sub gettablevalue # Fuction name: print_table # Description: print a hash table in good format # Atrributes: -# Retrun code: +# Return code: #-------------------------------------------------------- sub print_table { my $msg_ref = shift; diff --git a/xCAT/postscripts/ospkgs b/xCAT/postscripts/ospkgs index 83451061c..f18c404f3 100755 --- a/xCAT/postscripts/ospkgs +++ b/xCAT/postscripts/ospkgs @@ -436,9 +436,9 @@ do #categorize the groups according to the action(install/remove) if [ $remove -eq 0 ]; then - groups="$groups $tmp" + groups="$groups @$tmp" else - groups_d="$groups_d $tmp" + groups_d="$groups_d @$tmp" fi else if ( pmatch "$x" "cuda*" ); then @@ -945,8 +945,8 @@ else #install new groups if any if [ -n "$groups" ]; then - #cmd="echo $groups| $ENVLIST xargs yum -y groupinstall" - cmd="$ENVLIST yum -y groupinstall $groups" + #cmd="$ENVLIST yum -y groupinstall $groups" + cmd="$ENVLIST yum -y install $groups" result=`eval $cmd 2>&1` R=$? if [ $R -ne 0 ]; then @@ -1005,7 +1005,8 @@ else #remove some groups if specified if [ -n "$groups_d" ]; then - cmd="$ENVLIST yum -y groupremove $groups_d" + #cmd="$ENVLIST yum -y groupremove $groups_d" + cmd="$ENVLIST yum -y remove $groups_d" result=`eval $cmd 2>&1` R=$? if [ $R -ne 0 ]; then