From 10fe1b81f621605d8a9b0fee847e7f717d92cecc Mon Sep 17 00:00:00 2001 From: Wai Yee Wong Date: Thu, 9 Apr 2020 17:09:12 -0400 Subject: [PATCH 1/6] Add execute permision to all files recursively under /xcatpost on the Compute Node. --- xCAT-server/share/xcat/install/scripts/post.xcat.ng | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xCAT-server/share/xcat/install/scripts/post.xcat.ng b/xCAT-server/share/xcat/install/scripts/post.xcat.ng index 53a2fe878..255298db8 100644 --- a/xCAT-server/share/xcat/install/scripts/post.xcat.ng +++ b/xCAT-server/share/xcat/install/scripts/post.xcat.ng @@ -145,7 +145,10 @@ then /tmp/updateflag "$MASTER" "$XCATIPORT" "installstatus failed" sleep infinity fi -find /xcatpost -type f -maxdepth 1 -exec chmod 0755 {} + + +# Add execute permision to all files recursively under /xcatpost. +chmod -R +x `find /xcatpost/ -maxdepth 1 -print | grep -E -v '^(/xcatpost/|/xcatpost/_xcat|/xcatpost/_ssh|/xcatpost/ca|/xcatpost/hostkeys)$'` + msgutil_r "$MASTER_IP" "info" "postscripts downloaded successfully" "/var/log/xcat/xcat.log" "$log_label" # Get the precreated mypostscript file From ddf982f2d8ebb5d401f5a19cd7a4c264ea6d4340 Mon Sep 17 00:00:00 2001 From: Wai Yee Wong Date: Wed, 15 Apr 2020 16:28:31 -0400 Subject: [PATCH 2/6] Add dir1/dir2/dir3/foo.bar (permision 755) to /install/postscripts on the management node before diskless and diskfull OS provisioning to a compute node to verify that the execute permission of foo.bar is preserved after provisioning. Failure of doing so will prevent some postscripts under multiple levels of sub-directories from running during the postscript phase. --- .../reg_linux_diskfull_installation_hierarchy | 28 +++++++++++++++++++ .../reg_linux_diskless_installation_hierarchy | 28 +++++++++++++++++++ 2 files changed, 56 insertions(+) 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 f78bf840a..9e02f0119 100644 --- a/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_hierarchy +++ b/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_hierarchy @@ -18,6 +18,15 @@ check:rc==0 cmd:chtab key=nameservers site.value="" check:rc==0 +cmd:mkdir -p /install/postscripts/dir1/dir2/dir3 +check:rc==0 +cmd:echo -e '#!/bin/bash\n\nif [[ $1 == 1 ]] \nthen\n echo \"The number is ONE\";\nelse\n echo \"The number is NOT 1\"; \nfi\nexit 0;'> /install/postscripts/dir1/dir2/dir3/foo.bar +check:rc==0 +cmd:chmod 755 /install/postscripts/dir1/dir2/dir3/foo.bar +check:rc==0 +cmd:chdef -p -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar 1,dir1/dir2/dir3/foo.bar 0" +check:rc==0 + cmd:makedns -n check:rc==0 cmd:if [ -x /usr/bin/goconserver ]; then makegocons $$CN; else makeconservercf $$CN;fi @@ -75,4 +84,23 @@ check:rc==0 cmd:if [ -x /usr/bin/goconserver ]; then makegocons -d $$CN; else makeconservercf -d $$CN; fi cmd:if [[ -f /test.synclist.bak ]] ;then mv -f /test.synclist.bak /test.synclist;else rm -rf /test.synclist;fi cmd:chdef -t osimage -o __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute synclists= + +cmd:xdsh $$CN "find /xcatpost/dir1/dir2/dir3/foo.bar -type f -perm -111 | egrep 'foo'" +check:rc==0 +cmd:xdsh $$CN "grep \"The number is ONE\" /var/log/xcat/xcat.log" +check:rc==0 +check:output=~ The number is ONE +cmd:xdsh $$CN "grep \"The number is NOT 1\" /var/log/xcat/xcat.log" +check:rc==0 +check:output=~ The number is NOT 1 +cmd:rm -f /install/postscripts/dir1/dir2/dir3/foo.bar +check:rc==0 +cmd:cd /install/postscripts; rmdir -p dir1/dir2/dir3 +check:rc==0 +cmd:xdsh $$CN "rm -f /xcatpost/dir1/dir2/dir3/foo.bar" +check:rc==0 +cmd:xdsh $$CN "cd /xcatpost; rmdir -p dir1/dir2/dir3" +check:rc==0 +cmd:chdef -m -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar 1,dir1/dir2/dir3/foo.bar 0" +check:rc==0 end 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 bd8fe4876..4906881ab 100644 --- a/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_hierarchy +++ b/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_hierarchy @@ -14,6 +14,15 @@ cmd:chdef -t node -o $$CN servicenode=$$SN monserver=$$SN nfsserver=$$SN tftpser cmd:chdef -t node $$SN groups=service,all check:rc==0 +cmd:mkdir -p /install/postscripts/dir1/dir2/dir3 +check:rc==0 +cmd:echo -e '#!/bin/bash\n\nif [[ $1 == 1 ]] \nthen\n echo \"The number is ONE\";\nelse\n echo \"The number is NOT 1\"; \nfi\nexit 0;'> /install/postscripts/dir1/dir2/dir3/foo.bar +check:rc==0 +cmd:chmod 755 /install/postscripts/dir1/dir2/dir3/foo.bar +check:rc==0 +cmd:chdef -p -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar 1,dir1/dir2/dir3/foo.bar 0" +check:rc==0 + cmd:makedns -n check:rc==0 cmd:if [ -x /usr/bin/goconserver ]; then makegocons $$CN; else makeconservercf $$CN; fi @@ -82,4 +91,23 @@ cmd:if [ -x /usr/bin/goconserver ]; then makegocons -d $$CN; else makeconserverc cmd:if [[ -f /test.synclist.bak ]] ;then mv -f /test.synclist.bak /test.synclist;else rm -rf /test.synclist;fi cmd:chdef -t osimage -o __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute synclists= check:rc==0 + +cmd:xdsh $$CN "find /xcatpost/dir1/dir2/dir3/foo.bar -type f -perm -111 | egrep 'foo'" +check:rc==0 +cmd:xdsh $$CN "grep \"The number is ONE\" /var/log/xcat/xcat.log" +check:rc==0 +check:output=~ The number is ONE +cmd:xdsh $$CN "grep \"The number is NOT 1\" /var/log/xcat/xcat.log" +check:rc==0 +check:output=~ The number is NOT 1 +cmd:rm -f /install/postscripts/dir1/dir2/dir3/foo.bar +check:rc==0 +cmd:cd /install/postscripts; rmdir -p dir1/dir2/dir3 +check:rc==0 +cmd:xdsh $$CN "rm -f /xcatpost/dir1/dir2/dir3/foo.bar" +check:rc==0 +cmd:xdsh $$CN "cd /xcatpost; rmdir -p dir1/dir2/dir3" +check:rc==0 +cmd:chdef -m -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar 1,dir1/dir2/dir3/foo.bar 0" +check:rc==0 end From 9920a4c7d91041e293eb6ace74f518df14eeb87f Mon Sep 17 00:00:00 2001 From: Wai Yee Wong Date: Thu, 16 Apr 2020 11:53:19 -0400 Subject: [PATCH 3/6] updatenode_postscripts_permission is used to test that postscripts in nested sub-directories can execute on CN by running "updatenode -P" on MN (xcat-core issue #6579). A diskless or a diskfull image has been installed on CN at the point of testing. --- xCAT-test/autotest/testcase/updatenode/cases0 | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/xCAT-test/autotest/testcase/updatenode/cases0 b/xCAT-test/autotest/testcase/updatenode/cases0 index 59281087e..28b9db19c 100644 --- a/xCAT-test/autotest/testcase/updatenode/cases0 +++ b/xCAT-test/autotest/testcase/updatenode/cases0 @@ -665,7 +665,33 @@ cmd:rm -rf /install/custom/install/__GETNODEATTR($$CN,os)__/compute.$$OS.srcdstd check:rc==0 end - - - - +start:updatenode_postscripts_permission +label:others,updatenode +description:This is to test that postscripts in nested sub-directories can execute on CN by running "updatenode -P" on MN (xcat-core issue #6579). +cmd:mkdir -p /install/postscripts/dir1/dir2/dir3 +check:rc==0 +cmd:echo -e '#!/bin/bash\n\nif [[ $1 == 1 ]] \nthen\n echo \"The number is ONE\";\nelse\n echo \"The number is NOT 1\"; \nfi\nexit 0;'> /install/postscripts/dir1/dir2/dir3/foo.bar +check:rc==0 +cmd:chmod 755 /install/postscripts/dir1/dir2/dir3/foo.bar +check:rc==0 +cmd:chdef -p -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar 1,dir1/dir2/dir3/foo.bar 0" +check:rc==0 +cmd:updatenode $$CN -P "dir1/dir2/dir3/foo.bar 1" +check:rc==0 +check:output=~ The number is ONE +cmd:updatenode $$CN -P "dir1/dir2/dir3/foo.bar 0" +check:rc==0 +check:output=~ The number is NOT 1 +cmd:xdsh $$CN "find /xcatpost/dir1/dir2/dir3/foo.bar -type f -perm -111 | egrep 'foo'" +check:rc==0 +cmd:rm -f /install/postscripts/dir1/dir2/dir3/foo.bar +check:rc==0 +cmd:cd /install/postscripts; rmdir -p dir1/dir2/dir3 +check:rc==0 +cmd:xdsh $$CN "rm -f /xcatpost/dir1/dir2/dir3/foo.bar" +check:rc==0 +cmd:xdsh $$CN "cd /xcatpost; rmdir -p dir1/dir2/dir3" +check:rc==0 +cmd:chdef -m -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar 1,dir1/dir2/dir3/foo.bar 0" +check:rc==0 +end From e864af7855c347480193680879a0e44966d296db Mon Sep 17 00:00:00 2001 From: Wai Yee Wong Date: Thu, 16 Apr 2020 17:55:17 -0400 Subject: [PATCH 4/6] Simplify foo.bar and invoke and test it one time without input value. --- xCAT-test/autotest/testcase/updatenode/cases0 | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/xCAT-test/autotest/testcase/updatenode/cases0 b/xCAT-test/autotest/testcase/updatenode/cases0 index 28b9db19c..ae24382a2 100644 --- a/xCAT-test/autotest/testcase/updatenode/cases0 +++ b/xCAT-test/autotest/testcase/updatenode/cases0 @@ -670,18 +670,14 @@ label:others,updatenode description:This is to test that postscripts in nested sub-directories can execute on CN by running "updatenode -P" on MN (xcat-core issue #6579). cmd:mkdir -p /install/postscripts/dir1/dir2/dir3 check:rc==0 -cmd:echo -e '#!/bin/bash\n\nif [[ $1 == 1 ]] \nthen\n echo \"The number is ONE\";\nelse\n echo \"The number is NOT 1\"; \nfi\nexit 0;'> /install/postscripts/dir1/dir2/dir3/foo.bar +cmd:echo -e '#!/bin/bash\n\necho \"Execute permission is set.\"\nexit 0'> /install/postscripts/dir1/dir2/dir3/foo.bar check:rc==0 cmd:chmod 755 /install/postscripts/dir1/dir2/dir3/foo.bar check:rc==0 -cmd:chdef -p -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar 1,dir1/dir2/dir3/foo.bar 0" +cmd:updatenode $$CN -P "dir1/dir2/dir3/foo.bar" check:rc==0 -cmd:updatenode $$CN -P "dir1/dir2/dir3/foo.bar 1" +check:output=~ Execute permission is set check:rc==0 -check:output=~ The number is ONE -cmd:updatenode $$CN -P "dir1/dir2/dir3/foo.bar 0" -check:rc==0 -check:output=~ The number is NOT 1 cmd:xdsh $$CN "find /xcatpost/dir1/dir2/dir3/foo.bar -type f -perm -111 | egrep 'foo'" check:rc==0 cmd:rm -f /install/postscripts/dir1/dir2/dir3/foo.bar @@ -692,6 +688,4 @@ cmd:xdsh $$CN "rm -f /xcatpost/dir1/dir2/dir3/foo.bar" check:rc==0 cmd:xdsh $$CN "cd /xcatpost; rmdir -p dir1/dir2/dir3" check:rc==0 -cmd:chdef -m -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar 1,dir1/dir2/dir3/foo.bar 0" -check:rc==0 end From 2679f5354872cbb8a70e86b5b233a2e9bbb62976 Mon Sep 17 00:00:00 2001 From: Wai Yee Wong Date: Thu, 16 Apr 2020 18:00:47 -0400 Subject: [PATCH 5/6] Simplify foo.bar and invoke it and test it only one time for each test case without an input value. --- .../reg_linux_diskfull_installation_hierarchy | 13 +++++-------- .../reg_linux_diskless_installation_hierarchy | 13 +++++-------- 2 files changed, 10 insertions(+), 16 deletions(-) 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 9e02f0119..cfcd0832a 100644 --- a/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_hierarchy +++ b/xCAT-test/autotest/testcase/installation/reg_linux_diskfull_installation_hierarchy @@ -20,11 +20,11 @@ check:rc==0 cmd:mkdir -p /install/postscripts/dir1/dir2/dir3 check:rc==0 -cmd:echo -e '#!/bin/bash\n\nif [[ $1 == 1 ]] \nthen\n echo \"The number is ONE\";\nelse\n echo \"The number is NOT 1\"; \nfi\nexit 0;'> /install/postscripts/dir1/dir2/dir3/foo.bar +cmd:echo -e '#!/bin/bash\n\necho \"Execute permission is set.\"\nexit 0'> /install/postscripts/dir1/dir2/dir3/foo.bar check:rc==0 cmd:chmod 755 /install/postscripts/dir1/dir2/dir3/foo.bar check:rc==0 -cmd:chdef -p -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar 1,dir1/dir2/dir3/foo.bar 0" +cmd:chdef -p -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar" check:rc==0 cmd:makedns -n @@ -87,12 +87,9 @@ cmd:chdef -t osimage -o __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-inst cmd:xdsh $$CN "find /xcatpost/dir1/dir2/dir3/foo.bar -type f -perm -111 | egrep 'foo'" check:rc==0 -cmd:xdsh $$CN "grep \"The number is ONE\" /var/log/xcat/xcat.log" +cmd:xdsh $$CN "grep \"Execute permission is set\" /var/log/xcat/xcat.log" check:rc==0 -check:output=~ The number is ONE -cmd:xdsh $$CN "grep \"The number is NOT 1\" /var/log/xcat/xcat.log" -check:rc==0 -check:output=~ The number is NOT 1 +check:output=~ Execute permission is set cmd:rm -f /install/postscripts/dir1/dir2/dir3/foo.bar check:rc==0 cmd:cd /install/postscripts; rmdir -p dir1/dir2/dir3 @@ -101,6 +98,6 @@ cmd:xdsh $$CN "rm -f /xcatpost/dir1/dir2/dir3/foo.bar" check:rc==0 cmd:xdsh $$CN "cd /xcatpost; rmdir -p dir1/dir2/dir3" check:rc==0 -cmd:chdef -m -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar 1,dir1/dir2/dir3/foo.bar 0" +cmd:chdef -m -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar" check:rc==0 end 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 4906881ab..6dd07c8a8 100644 --- a/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_hierarchy +++ b/xCAT-test/autotest/testcase/installation/reg_linux_diskless_installation_hierarchy @@ -16,11 +16,11 @@ check:rc==0 cmd:mkdir -p /install/postscripts/dir1/dir2/dir3 check:rc==0 -cmd:echo -e '#!/bin/bash\n\nif [[ $1 == 1 ]] \nthen\n echo \"The number is ONE\";\nelse\n echo \"The number is NOT 1\"; \nfi\nexit 0;'> /install/postscripts/dir1/dir2/dir3/foo.bar +cmd:echo -e '#!/bin/bash\n\necho \"Execute permission is set.\"\nexit 0'> /install/postscripts/dir1/dir2/dir3/foo.bar check:rc==0 cmd:chmod 755 /install/postscripts/dir1/dir2/dir3/foo.bar check:rc==0 -cmd:chdef -p -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar 1,dir1/dir2/dir3/foo.bar 0" +cmd:chdef -p -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar" check:rc==0 cmd:makedns -n @@ -94,12 +94,9 @@ check:rc==0 cmd:xdsh $$CN "find /xcatpost/dir1/dir2/dir3/foo.bar -type f -perm -111 | egrep 'foo'" check:rc==0 -cmd:xdsh $$CN "grep \"The number is ONE\" /var/log/xcat/xcat.log" +cmd:xdsh $$CN "grep \"Execute permission is set\" /var/log/xcat/xcat.log" check:rc==0 -check:output=~ The number is ONE -cmd:xdsh $$CN "grep \"The number is NOT 1\" /var/log/xcat/xcat.log" -check:rc==0 -check:output=~ The number is NOT 1 +check:output=~ Execute permission is set cmd:rm -f /install/postscripts/dir1/dir2/dir3/foo.bar check:rc==0 cmd:cd /install/postscripts; rmdir -p dir1/dir2/dir3 @@ -108,6 +105,6 @@ cmd:xdsh $$CN "rm -f /xcatpost/dir1/dir2/dir3/foo.bar" check:rc==0 cmd:xdsh $$CN "cd /xcatpost; rmdir -p dir1/dir2/dir3" check:rc==0 -cmd:chdef -m -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar 1,dir1/dir2/dir3/foo.bar 0" +cmd:chdef -m -t node -o $$CN postscripts="dir1/dir2/dir3/foo.bar" check:rc==0 end From f0b5b63660ff4a64e6061b1f6754a3962b10ad76 Mon Sep 17 00:00:00 2001 From: Wai Yee Wong Date: Fri, 17 Apr 2020 16:19:33 -0400 Subject: [PATCH 6/6] Modify updatenode_P_script1 to test execute permission of postscripts under multiple levels of sub-directories under /xcatpost on CN. --- xCAT-test/autotest/testcase/updatenode/cases0 | 45 ++++++------------- 1 file changed, 14 insertions(+), 31 deletions(-) diff --git a/xCAT-test/autotest/testcase/updatenode/cases0 b/xCAT-test/autotest/testcase/updatenode/cases0 index ae24382a2..fbce9a6cc 100644 --- a/xCAT-test/autotest/testcase/updatenode/cases0 +++ b/xCAT-test/autotest/testcase/updatenode/cases0 @@ -303,15 +303,15 @@ end start:updatenode_P_script1 label:others,updatenode -cmd:echo "echo hello > /tmp/updatenode_P_script" > /tmp/script1 +cmd:mkdir -p /install/postscripts/dir1/dir2/dir3 check:rc==0 -cmd:chmod a+x /tmp/script1 +cmd:echo "echo hello > /tmp/updatenode_P_script" > /install/postscripts/dir1/dir2/dir3/script1 check:rc==0 -cmd:cp /tmp/script1 /install/postscripts +cmd:chmod a+x /install/postscripts/dir1/dir2/dir3/script1 check:rc==0 -cmd:chdef $$CN postscripts=script1 +cmd:chdef $$CN postscripts=dir1/dir2/dir3/script1 check:rc==0 -cmd:updatenode $$CN -P script1 +cmd:updatenode $$CN -P dir1/dir2/dir3/script1 check:rc==0 check:output=~script1 cmd:xdsh $$CN "ls -l /tmp/updatenode_P_script" @@ -321,7 +321,15 @@ check:rc==0 check:output=~hello cmd:chdef $$CN postscripts= check:rc==0 -cmd:rm -f /install/script1 +cmd:rm -f /install/postscripts/dir1/dir2/dir3/script1 +check:rc==0 +cmd:cd /install/postscripts; rmdir -p dir1/dir2/dir3 +check:rc==0 +cmd:xdsh $$CN "rm /tmp/updatenode_P_script" +check:rc==0 +cmd:xdsh $$CN "rm -f /xcatpost/dir1/dir2/dir3/script1" +check:rc==0 +cmd:xdsh $$CN "cd /xcatpost; rmdir -p dir1/dir2/dir3" check:rc==0 end @@ -664,28 +672,3 @@ check:rc==0 cmd:rm -rf /install/custom/install/__GETNODEATTR($$CN,os)__/compute.$$OS.srcdstdiff.synclist check:rc==0 end - -start:updatenode_postscripts_permission -label:others,updatenode -description:This is to test that postscripts in nested sub-directories can execute on CN by running "updatenode -P" on MN (xcat-core issue #6579). -cmd:mkdir -p /install/postscripts/dir1/dir2/dir3 -check:rc==0 -cmd:echo -e '#!/bin/bash\n\necho \"Execute permission is set.\"\nexit 0'> /install/postscripts/dir1/dir2/dir3/foo.bar -check:rc==0 -cmd:chmod 755 /install/postscripts/dir1/dir2/dir3/foo.bar -check:rc==0 -cmd:updatenode $$CN -P "dir1/dir2/dir3/foo.bar" -check:rc==0 -check:output=~ Execute permission is set -check:rc==0 -cmd:xdsh $$CN "find /xcatpost/dir1/dir2/dir3/foo.bar -type f -perm -111 | egrep 'foo'" -check:rc==0 -cmd:rm -f /install/postscripts/dir1/dir2/dir3/foo.bar -check:rc==0 -cmd:cd /install/postscripts; rmdir -p dir1/dir2/dir3 -check:rc==0 -cmd:xdsh $$CN "rm -f /xcatpost/dir1/dir2/dir3/foo.bar" -check:rc==0 -cmd:xdsh $$CN "cd /xcatpost; rmdir -p dir1/dir2/dir3" -check:rc==0 -end