Compare commits

..

1411 Commits

Author SHA1 Message Date
arif 5a8479cd85 update the routes for debian/ubuntu as well 2014-03-28 11:05:37 +00:00
arif f3449882b3 fix minor typo for iface --> ifname 2014-03-27 23:03:19 +00:00
arif 8f3b04bd1a more fixes on device based routing 2014-03-27 22:22:11 +00:00
arif abbd20549a updatedate routes scripts so that we can route through a device 2014-03-27 22:15:08 +00:00
lissav a487eeda81 fix spelling 2014-03-27 13:34:07 -04:00
daniceexi e0ff38a38a refine the output for node resources 2014-03-27 10:18:29 -04:00
mellor e75be5fe88 defect 3998 - change file vars to globals 2014-03-26 17:10:05 -04:00
lissav c822d4f560 defect 3953 2014-03-26 13:08:41 -04:00
ligc 4d262b0db4 doxcat: the ntp -c rv 0 offset may return negative number 2014-03-26 16:02:16 -05:00
ligc fe545184b5 gensis-scripts: doxcat - ntpq -c rv state does not work any more, use the ntpq -c rv offset instead 2014-03-26 14:23:28 -05:00
mellor 2709ec4d25 defect 3964 - clarify mknb man page for hierarchy with sharedtftp=0 2014-03-25 15:59:17 -04:00
lissav 4c88b1b469 defect 3941 2014-03-25 08:11:11 -04:00
ligc 95a3d8ef3c add the centos6.5 discid info, fix a problem in post.xcat 2014-03-25 17:17:00 -05:00
daniceexi 8be3e23145 Change the output format for several URI 2014-03-25 10:18:34 -04:00
litingt 435e989da4 build script for local automation test 2014-03-25 02:45:11 -07:00
immarvin 36c2404d1c add grub2-xcat as a dependency to enable provisioning rhel7 on an ubuntu MN 2014-03-25 01:17:24 -07:00
ligc 9f9768fd28 fix xCAT-genesis-builder/buildrpm for latest mcp version 2014-03-25 14:54:51 -05:00
yinle 194b864487 Merge subroutines to xcatreg 2014-03-25 02:00:50 -07:00
root eb3e5aaee0 wangjunxiaw check autotest script 2014-03-24 18:51:30 -07:00
lissav 0297069b71 remove autosetup of useflowcontorl see 4031 2014-03-24 09:26:46 -04:00
zhaoertao 054ef6d125 rcons support for powerkvm 2014-03-24 02:03:06 -07:00
huweihua ec8a2069cd fix defect 3875 2014-03-24 05:04:30 -04:00
root e60212cfb8 code frame step by step 2014-03-24 01:39:31 -07:00
lissav dba2219b18 update man 2014-03-21 14:52:17 -04:00
lissav 5694147a73 tabprune -a supports all tables 2014-03-21 14:45:56 -04:00
Jarrod Johnson d183a0bb9d Support 'specific' copycds mode.
ESXi releases updates without bumping version numbers.  For such cases,
the default behavior is for the new version to supersede the old.  This
makes sense for the vast majority of cases.  There are, however, corner
cases where being explicit about the release is indicated.
2014-03-21 10:57:42 -04:00
lissav 021b4c69fb fix -L option 2014-03-21 09:57:22 -04:00
lissav 8fcfccb42f add pointer to Easy Regx documentation 2014-03-21 08:02:49 -04:00
immarvin 3fa9fd3e7b append some code logic and documentation for rhels7 support on grub2
Conflicts:

	xCAT-server/lib/xcat/plugins/grub2.pm
2014-03-21 04:53:07 -07:00
zhaoertao 17aa3f84ac support for powerkvm provisioning 2014-03-21 00:14:47 -07:00
huweihua 5a3847d3ea add testcase for xdsh 2014-03-21 02:10:01 -04:00
huweihua 737550e69b add testcase for xdcp 2014-03-21 02:09:21 -04:00
huweihua 25f7bb326e add testcase for sysclone 2014-03-21 02:08:44 -04:00
huweihua 398e63f180 add testcase for pscp 2014-03-21 02:08:10 -04:00
huweihua 0a45d0bcf9 add testcase for prsync 2014-03-21 02:07:38 -04:00
huweihua 1535113fb1 add testcase for ppping 2014-03-21 01:55:20 -04:00
huweihua 43fefadf30 add testcase for makeroutes 2014-03-21 01:53:27 -04:00
huweihua b186280ab8 add testcase for makedns 2014-03-21 01:37:04 -04:00
arif 373cc13aa0 fix bug #4027, replace chop with chomp 2014-03-20 23:10:31 +00:00
lissav 12f1819180 fix defect 3981 2014-03-20 14:22:47 -04:00
linggao b96b2d0ec9 more code for supporting other hardware in OpenStack baremetal driver. 2014-03-21 06:58:10 -04:00
Jia Zhao ff619264a4 fix autodiscovery problem as not run makehosts command 2014-03-20 18:34:41 +08:00
daniceexi 3bac60fac8 add more rest api implementation. refine the doc output 2014-03-20 11:26:50 -04:00
daniceexi 4aafb62e16 add comments for the procedure to handle a restapi request; add comments to describe the definition of URI 2014-03-20 02:13:27 -04:00
Bruce Potter eab4fced6a Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core
updated table rest api description
2014-03-19 18:02:24 -04:00
Bruce Potter bd7a9096b2 updated table rest api description 2014-03-19 18:01:58 -04:00
immarvin 9c3ed358b4 fix defect #4030 [DEV]'makedhcp -n' failed to add subnet info to dhcpd.conf on rhels7.0 x86_64 mn 2014-03-19 08:15:58 -07:00
immarvin c2b6d4def1 add rhels7 stateless and statelite support for x86_64 2014-03-19 08:00:45 -07:00
daniceexi 221a6854b7 add more doc info 2014-03-19 10:19:43 -04:00
lissav 149f0fd277 fix defect 4028 2014-03-19 07:23:32 -04:00
litingt 81dc649a24 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2014-03-19 02:10:47 -04:00
litingt a0dc770139 xCAT daily regression tool script 2014-03-19 00:15:48 -04:00
Bruce Potter 7ad5cf800d Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core
finished table get rest api calls
2014-03-18 18:47:14 -04:00
Bruce Potter 0bd4753702 finished table get rest api calls 2014-03-18 18:47:01 -04:00
mellor 9a2305dd3a clarify that genimage -i is optional 2014-03-18 14:55:32 -04:00
daniceexi a5ff9cfeec add the mechanism to auto make document for restapi 2014-03-18 10:22:17 -04:00
ligc 707f0c315b xCAT-SoftLayer package is noarch only on Linux, not on AIX 2014-03-18 16:20:19 -05:00
ligc 596aadcd3e xCAT-SoftLayer.spec: cp -a does not work on AIX, change to use -p -R instead 2014-03-18 14:16:55 -05:00
ligc 83732b7b5d makerpm: add copying xcat.conf.apach24 into /SOURCES 2014-03-18 13:56:45 -05:00
ligc 2a65930be9 update with xCAT-OpenStack-baremetal packaging: 1) update xpod2man to not create summary page 2) remove xcat.1.pod from xCAT-OpenStack-baremetal 2014-03-17 23:40:49 -04:00
Bruce Potter 120312c5ea Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core
got table rest api call to work for single or multiple node
2014-03-17 18:16:43 -04:00
linggao 5529a93267 fix defect #4023 syntax error 2014-03-18 09:16:25 -04:00
Bruce Potter 79d7b55208 got table rest api call to work for single or multiple node 2014-03-17 18:16:13 -04:00
daniceexi c55655a50c Add more rest api support 2014-03-17 10:11:27 -04:00
lissav 6cf827b891 defect 4022 and add podchecker, good debug tool 2014-03-17 06:50:23 -04:00
lissav 3f08f410fe defect 4022 and add podchecker, good debug tool 2014-03-17 06:49:46 -04:00
Bruce Potter 3eaf383163 started the table api calls 2014-03-16 19:54:00 -04:00
ligc 7f63cf564c fix for bug 3935: support nic name with space, like Local Area Network on windows 2014-03-14 17:49:49 -05:00
ligc 6f79aead61 fix for bug 3937: return 1 when lsdef <object> can not find the object 2014-03-14 17:02:47 -05:00
daniceexi df3239cbb5 new implementaion of xCAT rest api 2014-03-14 09:45:04 -04:00
ligc 50fed0a17a fix for bug 3976: check -i flag 2014-03-14 16:15:16 -05:00
lissav 9ae698fb70 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2014-03-13 10:43:26 -04:00
immarvin dcaef3f2eb add xCAT-OpenStack-baremetal to build-ubunturepo package list, change debian/source/format to 1.0 2014-03-13 07:45:29 -07:00
lissav 5fc7fe289e Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2014-03-13 10:37:53 -04:00
lissav 2c49eb1195 additional checks 2014-03-13 10:37:35 -04:00
immarvin 770e8a7301 add ubuntu/debian package files for dpkg-buildpackage 2014-03-13 07:13:28 -07:00
lissav 25e02c8b73 change sync of keys so they are cleaned up when zones are removed 2014-03-13 09:50:10 -04:00
lissav ddcec671a0 chzone manpage 2014-03-13 08:45:16 -04:00
lissav 62cdefa219 add and improve zone manpages 2014-03-13 07:53:23 -04:00
lissav 655148ffdd add man page for mkzone 2014-03-12 12:30:23 -04:00
lissav 24da10e021 fix parsing 2014-03-12 11:33:27 -04:00
lissav acc07123e9 rm id_rsa so we can switch between sshbetweennode yes and no 2014-03-12 10:46:45 -04:00
linggao 89c649ae56 xCAT baremetal driver for OpenStack supports nodes with all hw types that are supported by xCAT 2014-03-13 03:18:27 -04:00
linggao dbf362ea52 fix the description for table hwinv. 2014-03-13 03:15:59 -04:00
lissav 77f1e2452e chzone code 2014-03-11 14:19:36 -04:00
xcat aix bld machine d3f205440a create instoss for AIX 6.1Y using new perl-Net_SSLeay.pm-1.55 2014-03-11 04:24:33 -04:00
zhaoertao dd1eaab04c fix bug 4014: updatenodegroups routine always add all group to the node 2014-03-10 19:09:26 -07:00
lissav cc955a172b a lot of chzone, needs more work 2014-03-10 14:43:35 -04:00
immarvin 4323842e28 rhels7 statelite/stateless support 2014-03-08 06:40:40 -08:00
immarvin 376c57d74e fix defect 4015 2014-03-07 08:06:11 -08:00
lissav 127934c3d3 rmzone 2014-03-07 09:57:52 -05:00
lissav 1ded53ae14 rmzone support 2014-03-07 09:56:51 -05:00
immarvin 35ed43d06b fix defect #3999 2014-03-07 06:02:26 -08:00
immarvin 5a8d12715a fix defect #3999 and #4013 2014-03-07 05:59:13 -08:00
ligc 72abb182bb fix for bug 4010: remove xcatws.cgi from PCM build 2014-03-06 15:52:23 -06:00
zhaoertao c8ebe8a9df fix bug 4007: DFM support Powerlinux, mkvm return error 2014-03-05 00:53:58 -08:00
lissav 555810f7ed better hierarchical processing for zones 2014-03-04 10:22:55 -05:00
lissav aff04efce8 docuement DSH_REMOTE_PASSWORD env variable 2014-03-04 08:32:41 -05:00
lissav d3c808f75f fix spelling 2014-03-03 14:51:18 -05:00
lissav f4cc23ef0f add xCAT-OpenStack-baremetal rpm 2014-03-03 14:43:53 -05:00
lissav 82d9b5b9ef support getting zone ssh keys 2014-03-03 13:29:29 -05:00
lissav 971808efbd support zone root ssh keys 2014-03-03 13:18:53 -05:00
lissav bf27c3ac96 more zone functions 2014-03-03 13:15:40 -05:00
Bruce Potter e9f220cecc fixed man page issue with xCAT-SoftLayer rpm 2014-03-02 18:33:13 -05:00
Bruce Potter 6be8450b9b added xCAT-SoftLayer rpm to buildcore.sh 2014-03-02 18:11:39 -05:00
Bruce Potter aecc720d7d packaged softlayer files into an rpm 2014-03-02 18:05:09 -05:00
Bruce Potter 9893a2dd71 template and postscript for softlayer node install 2014-03-02 13:11:41 -05:00
ligc c464e3c1d6 fix for bug 4002, configib replaces /etc/sysctl.conf 2014-02-28 14:05:59 -06:00
lissav 43f9eb6384 updatenode customized mypostscript.tmpl with ZONENAME lines 2014-02-27 10:57:02 -05:00
lissav a7867e1370 updatenode customized mypostscript.tmpl with ZONENAME lines 2014-02-27 10:27:23 -05:00
zhaoertao 8751f25154 fix bug 3873: DFM illegal action could work 2014-02-27 01:26:45 -08:00
Bruce Potter 316470c60d Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core
finished test driver for node resource
2014-02-26 19:34:58 -05:00
linggao bccae8efe7 Merge branch 'master' of ssh://linggao@git.code.sf.net/p/xcat/xcat-core 2014-02-27 10:52:23 -05:00
linggao 49d53ed922 more for xCAT baremetal driver for OpenStack 2014-02-27 10:51:50 -05:00
Bruce Potter 681ec3c968 finished test driver for node resource 2014-02-26 19:34:16 -05:00
lissav d122c8a3fa initialize if no zones 2014-02-26 11:32:07 -05:00
lissav 318cf6bfa8 add zonename 2014-02-26 10:41:42 -05:00
lissav 8f6bbd40d9 support zonename 2014-02-26 10:39:17 -05:00
lissav 78d3e285a6 adding routines for support 2014-02-26 10:38:03 -05:00
lissav cd8389984f fix ENABLESSHBETWEENNODES setting in mypostscript file when zones 2014-02-26 08:37:26 -05:00
lissav a5e378a641 fix ENABLESSHBETWEENNODES setting in mypostscript file when zones 2014-02-26 08:17:21 -05:00
daniceexi 4abeecbd03 defect 3961: make domain name keep without . at beginning 2014-02-26 13:27:14 -05:00
linggao ef589ec580 removed the debugger 2014-02-26 04:29:02 -05:00
lissav f3392ba1ee defect 3994 2014-02-25 11:45:10 -05:00
lissav ec5de72ee4 zone hierarchical support for xdsh -K 2014-02-25 10:00:43 -05:00
Bruce Potter c58f440db1 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core
removed user/pw from xcatws-test.sh
2014-02-25 04:11:56 -05:00
Bruce Potter 29c8b4216b removed user/pw from xcatws-test.sh 2014-02-25 04:11:22 -05:00
zhaoertao 61a686acac update manpage for mkvm and chvm about partitioning item 2014-02-25 00:00:40 -08:00
ligc 242b39ace6 fix a typo in updatenode manpage 2014-02-25 13:50:40 -06:00
baiyuan 1607a1dac6 fix:convert array to hash,xcatws.cgi use hash entries 2014-02-25 00:07:34 -05:00
lissav d5695f5727 xdsh -K support (still need to do hierarchy) 2014-02-24 11:48:09 -05:00
lissav 539f37f391 xdsh -K support (still need to do hierarchy) 2014-02-24 11:39:36 -05:00
baiyuan 86e663860d fix:line 6: user: command not found. add: arguments 2014-02-24 04:14:18 -05:00
Bruce Potter b77b8e7c7d got node list of xcatws.cgi also working with new json structure 2014-02-23 16:00:37 -05:00
Bruce Potter e251f0a2cf example rest apis working with new json structure 2014-02-23 04:13:15 -05:00
Bruce Potter aea43684c3 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core
added workaround to pushinitrd for slow SL switches
2014-02-21 10:08:49 -05:00
ligc 54982068cf fix for bug 3991: if the node can not be resolved or ip address is not valid, print warning message and ignore the node 2014-02-21 12:39:57 -06:00
Bruce Potter 84bc552130 added workaround to pushinitrd to handle slow switches 2014-02-21 10:08:20 -05:00
lissav 56e8e8b0d5 zone coce 2014-02-20 12:34:51 -05:00
lissav 2e0ccb7d7e more code 2014-02-20 11:35:20 -05:00
lissav e331cf5085 more code 2014-02-20 11:33:54 -05:00
lissav 4c031e1806 fix for defect 3985 2014-02-20 07:25:29 -05:00
linggao 542259583c xCAT baremetal driver for OpenStack 2014-02-20 09:45:15 -05:00
Bruce Potter c159000f94 pushinitrd is finished, for now 2014-02-19 14:38:04 -05:00
lissav 2598e30ee1 more zone code 2014-02-19 12:52:11 -05:00
lissav 9db5ceef6a designchanges 2014-02-19 08:50:18 -05:00
lissav 1a59531d6c designchanges 2014-02-19 08:48:43 -05:00
lissav cdf72640fd add zone table sshbetweennodes attribute 2014-02-19 07:13:24 -05:00
lissav d45ba76f8e add missing -g flag 2014-02-19 05:24:13 -05:00
lissav 8ced46f7cc more improvements for zones 2014-02-18 10:16:24 -05:00
lissav e16e4d327b more zone support 2014-02-18 09:15:41 -05:00
lissav 22b529f8e3 more zone support 2014-02-18 08:52:24 -05:00
lissav d0e85aeee2 fix man page 2014-02-18 06:21:39 -05:00
arif 1b6225b820 change comment on path of where the gpfs_updates directory is placed 2014-02-17 12:23:17 +00:00
arif 26d8a9b4a5 Merge branch 'add/nodeconsoleondemand' of gitlab.arif-ali.co.uk:arif/xcat-core 2014-02-17 11:14:57 +00:00
Bruce Potter c2e2cefd9f Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core
cmds to push network boot info to softlayer nodes
2014-02-15 16:32:15 -05:00
Bruce Potter 35b919185e add cmds to push the network boot info to softlayer nodes 2014-02-15 16:31:35 -05:00
lissav 540e11c599 link in commands 2014-02-13 13:55:15 -05:00
Jarrod Johnson 14b61f339d Explicitly set SSL_VERIFY_MODE during start ssl in Client 2014-02-13 09:51:40 -05:00
lissav 72acb3b564 Multiple zone support 2014-02-13 07:53:31 -05:00
lissav 352f12aaee Multiple zone support 2014-02-13 07:51:44 -05:00
zhaoertao 8987ad4702 update manpage of mkdef/chdef for osimage 2014-02-13 00:56:48 -08:00
jjhua c58b291e98 only use short node name in loadclouddata 2014-02-13 12:31:28 -05:00
immarvin ea0241e836 specify text installation mode, otherwise, anaconda will drop into choice dialog when fails to start X in graphic mode 2014-02-12 00:56:06 -08:00
immarvin 8aa878427e take *.rhel*.pkglist as pkglist file if *.rhels*.pkglist do not exist 2014-02-12 00:54:54 -08:00
zhaoertao 8bc490094a fix bug 3983: copycds show error info 2014-02-11 22:09:06 -08:00
jjhua 76a60547ff the template for keystone and swift(all in one) 2014-02-12 12:36:47 -05:00
Bruce Potter 751f3c4b89 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core
new getslnodes file
2014-02-11 10:55:13 -05:00
Bruce Potter 6b40d076fa new script to get softlayer info into xcat db 2014-02-11 10:54:18 -05:00
Jarrod Johnson 98bc658385 Have openssl req use better message digest 2014-02-11 10:07:30 -05:00
yinle 84ee1eb9f1 fix bug #3984 Ubuntu 13.10 diskless installation fails 2014-02-11 10:47:13 -08:00
daniceexi 9e91cf4f63 roll back the last change in configmic file; And fix the issue that hostname cannot show the short hostname 2014-02-11 04:50:41 -05:00
Jarrod Johnson af305e1c65 RHEL7 support for diskful compute profile complete 2014-02-10 13:59:14 -05:00
Jarrod Johnson 2b8f1c5086 Have RHEL7 proceed to get through install completion
Still need to get through the postscript phase
2014-02-10 10:48:46 -05:00
Jarrod Johnson 29b7e4331b Add signature detection for RHEL7 media to anaconda 2014-02-10 10:24:59 -05:00
daniceexi b7a04d3c94 fix the issue that hostname command cannot get short hort name 2014-02-10 08:26:55 -05:00
Bruce Potter 9c0fa6a8bb Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core
some improvements to xcatws.cgi
2014-02-09 15:43:53 -05:00
Bruce Potter 80d4cf913b curl working for xcatws.cgi put and some reorg of code 2014-02-09 15:43:37 -05:00
Jarrod Johnson 56556bdeec Fix xCAT init script status reporting
xCAT in some cases was reporting improper status for certain scenarios.
Risk being inaccure if no pid file exists so that it is accurate when it
does exist.
2014-02-07 17:37:56 -05:00
lissav 7f39eb7fe4 new zone table and zonename attribute 2014-02-05 08:39:46 -05:00
Jarrod Johnson d25680575d Correct } mistake in previous commit to IPMI.pm 2014-02-04 10:27:45 -05:00
Jarrod Johnson c2c29970ff Make IPMI 2.0 crypto dependencies mandatory
Faced with an increasing population of IPMI 2 only devices, make the AES/CBC
requirements mandatory as it is a common source of systems failing to work
now.
2014-02-04 10:27:42 -05:00
Bruce Potter dd8096b39f 1st put works with json dict 2014-02-03 15:58:15 -05:00
Bruce Potter 91b4041a3c Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2014-01-31 08:27:40 -05:00
Bruce Potter 466d5f0a9f test scripts for the rest api 2014-01-31 08:26:55 -05:00
Jarrod Johnson 7032988d7f Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2014-01-30 13:01:18 -05:00
Jarrod Johnson ac83cbe428 _clear_cache was removed long ago. _build_cache does all the needed work itself, so skip _build_cache. 2014-01-30 13:01:13 -05:00
arif 65470149e9 add per node consoleondemand 2014-01-29 21:47:09 +00:00
ligc 179a62145b fix for a typo in confignics, caused ib configuration problems 2014-01-29 10:02:13 -06:00
lissav a3d6555515 Add IBM_HPC_Stack_in_an_xCAT_Cluster 2014-01-28 14:48:34 -05:00
yinle 9db688423c minor fix 2014-01-28 13:49:26 -08:00
yinle 0f829608d1 minor fix of message 2014-01-28 13:33:57 -08:00
yinle ae62c9e403 Add range check and message to nmap 2014-01-28 13:32:46 -08:00
baiyuan 2825e469fe fix Undefined subroutine &JSON::decode_json called at /opt/xcat/ws/xcatws.cgi line 168 2014-01-27 23:36:01 -05:00
zhaoertao 4c74a94daf modify usage for 'chvm' and 'mkvm', remove debug msg 2014-01-26 22:52:30 -08:00
zhaoertao 9374e01b76 create VIOS and logical partitions 2014-01-26 22:08:15 -08:00
zhaoertao 5a9abe2acf The scripts used for configuring and provisioning VIOS partition 2014-01-26 22:07:08 -08:00
qyin edf9a4dc64 windows solution: 222013 2014-01-27 13:52:33 +08:00
ligc e299342956 fix for bug 3979: print a message with rnetboot/bootseq when gateway is empty 2014-01-27 09:57:13 -06:00
lissav b26b5c42bd improve man for sshbetweennodes 2014-01-23 12:59:57 -05:00
lissav d5cfab0c97 improve man for sshbetweennodes 2014-01-23 12:26:26 -05:00
zhaoertao addd4ed9c4 3974 rinv failed for Fujitsu Blade Server 2014-01-22 23:17:13 -08:00
baiyuan 6ffaad98d1 upload testcase for ubuntu 2014-01-22 22:34:33 -05:00
baiyuan fa236764e1 fix 3879,complete kit size is too big,just keep build_input in complete kit with buildkit.conf,other_files,plugins and scripts, remove other useless dir 2014-01-21 03:51:06 -05:00
yinle 225a2564bd fix bug #3973 Ubuntu 13.10 diskful installation fails 2014-01-20 13:36:27 -08:00
yinle 542a3dbbe4 Add a new file xcat.conf.apach24 2014-01-20 13:31:53 -08:00
yinle 407bef3e3d Add a new file xcat.conf.apach24 2014-01-20 13:29:02 -08:00
yinle ad6649144c fix bug #3973 Ubuntu 13.10 diskful installation fails 2014-01-20 13:25:36 -08:00
baiyuan 60f33728d2 this part of code is doubled by git automatically, remove redundant part 2014-01-20 09:34:48 -05:00
daniceexi 9908a8156c Change the man page of nodeset to make it supports the shutdown and shell operations 2014-01-20 11:10:07 -05:00
baiyuan 9cb232d069 fix 3879,remove build_input dir from complete kit xxx.tar.gz 2014-01-20 04:08:30 -05:00
baiyuan cc207c5ecd kitconponent should be kitcomponent 2014-01-19 22:20:54 -05:00
baiyuan 584fe221c2 update imgexport/imgimport manpage to surpport kits 2014-01-19 21:56:14 -05:00
arif e86917e218 fix bug 3971, trim othernames variable 2014-01-17 08:45:17 +00:00
baiyuan 481a93554f fixed 3357,add symlink,copy postscripts and plugin files for kit 2014-01-16 21:01:50 -05:00
yinle 894bdb17e7 update building of ubuntu repo to include the supported ubuntu disctros 2014-01-16 04:33:11 -08:00
daniceexi 9164cf83a3 defect 3968: fixed the issue that for statelite on aix, the .statelite dir was not copied to shared_root spot from default spot 2014-01-16 04:49:17 -05:00
lissav f93a5eb28b fix mysqlsetup -u 2014-01-15 06:15:35 -05:00
immarvin caafd03ca0 fix defect #3960 Genimage broken for CentOS 5.4 nodes 2014-01-14 01:03:54 -08:00
lissav 0fab0368ec defect 3541 2014-01-13 12:55:15 -05:00
daniceexi 35376641b4 To make bmcsetup cmd to update node status to be [bmcready] in genesis; And make chain mechanism to support [shutdown] key word which is used to poweroff the node 2014-01-13 07:55:03 -05:00
arif dd3f08682f Merge commit 'e5bde95310d245174ae533251f7eb8a9c6c2702e' 2014-01-10 14:43:07 +00:00
daniceexi b58e374758 fix the issue that proxydhcp configuration file cannot be updated 2014-01-10 09:16:42 -05:00
arif e5bde95310 add nichostnameprefixes to @nodeattrs 2014-01-10 14:16:15 +00:00
sjing a4e0952b6c Fix for bug 3955. 2014-01-10 03:00:25 -05:00
sjing 24215114c6 Fix for bug 3815
Last fix results in "makedhcp -n" not working, so re-fix it.
2014-01-09 22:20:51 -05:00
arif e01827f9d3 first commit for prefix hostname feature 2014-01-09 21:02:53 +00:00
lissav 23c464cbe8 update description 2014-01-09 08:45:15 -05:00
Jarrod Johnson 3b1d444077 Fix detection of debian for some ubuntu installations 2014-01-08 15:16:51 -05:00
lissav 835ab6b592 simplify messages for odbcsetup call 2014-01-08 11:14:22 -05:00
ligc 9e81eccc66 fix for bug 3951: remove the code to check xcat versions during xcatd restart/reload 2014-01-08 23:47:28 +08:00
lissav 41a16bb370 fix for defect 3839 2014-01-08 10:34:21 -05:00
ligc 99802e8a09 fix for bug 3947: add check for AIX and nmap existence 2014-01-08 23:32:40 +08:00
lissav 69e5f3abf6 add catagories to site table 2014-01-08 08:30:44 -05:00
wanghuaz 9976df95e9 handle kit staff in imgexport/imgimport 2014-01-08 20:53:39 +08:00
daniceexi adf723db25 fix the issue that xcatd hangs when reading the request which is formatted in one line like litefile request from statelte CN 2014-01-08 07:42:35 -05:00
daniceexi 23b836102a defect 3135: changed the mount process for the statelite directory (for persistent entries) that make a directory after the node name and remount to the nodename directory instead of nfs root dir for persistent 2014-01-08 05:00:32 -05:00
Jarrod Johnson e02a913e86 Use sha256 by default in openssl.cnf 2014-01-07 14:18:53 -05:00
Jarrod Johnson ee812a995f Have esxi report itself ready at the correct time after a netboot or install 2014-01-07 14:18:05 -05:00
baiyuan 23a51d7bbb fix:remoed should be removed 2014-01-07 03:08:49 -05:00
daniceexi 69833876fa make confignics postscript to accept the site.setinstallnic to configure installnic to be static 2014-01-07 02:27:35 -05:00
lissav e87604fd5f defect 3948 2014-01-06 14:58:46 -05:00
wanghuaz bb4fa36b29 fixing the migration problem that rmkitcomp should remove the kitdeployment parameter file and its contents. 2014-01-06 15:19:24 +08:00
immarvin adb04f1651 fedora19/fedora20 diskful support 2014-01-02 23:52:13 -08:00
baiyuan 0723ce1117 update cases0 for buildkit 2014-01-02 02:52:25 -05:00
ligc 66bb1bc712 do not use nodels --version in /etc/init.d/xcatd 2014-01-02 14:39:40 +08:00
sjing 2cca891e35 Fix for bug 3952
Made makedhcp be able to handle the case where site.nameservers or
networks.nameservers is a comma delimited list with <xcatmaster>
keyword in it.
2014-01-02 01:23:43 -05:00
daniceexi e7dc46a03a defect 3909: make xcatd loads xCAT::Enabletrace by require instead of use to save resource 2014-01-02 02:05:37 -05:00
daniceexi 0599847898 fix man page of mknb to indicate that mknb only supports x86_64 2014-01-02 01:14:51 -05:00
daniceexi 553ecb83d2 Change the Windows deployment templates to support disk configuration, nics configuration and run postscripts 2013-12-31 09:02:26 -05:00
daniceexi 05946f11db Enhance genimage.cmd to accept second and third params for multiple winpe support 2013-12-31 08:04:25 -05:00
wanghuaz 9383ceca98 add an enhancement to skip not well-formed deployment parameters. 2013-12-31 17:03:21 +08:00
wanghuaz 3b1900c52d minor change in last check of passing parameters to postinstall and postbootscritps 2013-12-31 15:36:10 +08:00
daniceexi 3221fed0da Add some comments and help message for genimage.bat 2013-12-30 23:03:37 -05:00
daniceexi cf371f30e7 fixed the issue that missed the winpe-scripting.cab in last checkin 2013-12-30 07:02:49 -05:00
wanghuaz 045f334d33 fixing bug 3815: don't use global variables which doest work well in hierarchy system. 2013-12-30 11:02:02 +08:00
wanghuaz 0c911a96a3 passing kitcomponent deploy parameters to genimage package installation, postinstall script and postbootscripts. 2013-12-30 09:54:46 +08:00
wanghuaz 85d9803221 fixng bug 3945: give an example of how to write ospkgdeps and kitpkgdeps in different arch. 2013-12-27 17:03:32 +08:00
wanghuaz c60e45b4b2 fixng bug 3945: give an example of how to write ospkgdeps and kitpkgdeps in different arch. 2013-12-27 17:02:38 +08:00
baiyuan b63193149d kit release should be mandatory according to mini-design 2013-12-27 02:40:32 -05:00
wanghuaz 01f621ee32 fixing bug 3943: give accureate pattern to match output from console 2013-12-27 15:32:23 +08:00
baiyuan 17b7ee559a fix Use of uninitialized value within @a2 in pattern match (m//) at BuildKitUtils.pm line 273 2013-12-27 01:59:43 -05:00
sjing 62a0cb6350 Support dns master/slave configuration 2013-12-26 22:52:41 -05:00
wanghuaz a2aee1a0bb fixing bug 3848, moving preuninstall script from prerequisite rpm to meta rpm to make sure it can be issued before componnet been uninstalled. 2013-12-26 15:09:52 +08:00
jjhua 921d251301 if there are two roles for one chef-client, the script couldn't assign the
roles to the node. fixed it.
2013-12-26 12:41:15 -05:00
nott b12771ab54 template cleanup 2013-12-23 15:29:39 -05:00
jjhua 623ccadcc0 support for cinder 2013-12-23 16:29:55 -05:00
yinle 71213c8719 Add warning message on fsp wrong slp reply 2013-12-22 05:11:50 -08:00
immarvin 8b38c35e63 grep in busybox do not support long optipn string, use short instead 2013-12-19 19:11:31 -08:00
linggao 1e3062d8e4 Changed table name from capacity to hwinv. 2013-12-19 22:39:50 -05:00
immarvin 06af9c15a1 add rhels5.10 discinfo 2013-12-19 04:56:51 -08:00
immarvin bd36de6f1b fix syntax error if is blank 2013-12-19 04:27:16 -08:00
immarvin f75d136828 grep in busybox do not support long optipn string, use short instead 2013-12-19 01:41:19 -08:00
daniceexi 8eb9348c51 add the second argument for genimage.bat to make it can generate winpe and BCD to a specific dir 2013-12-19 07:26:14 -05:00
immarvin b014538601 fix the problem that rhels5.10 initrd cannot resolve the mn hostname 2013-12-18 23:21:42 -08:00
daniceexi abea7eceee Rewirte the proxydhcp.c with proxydhcp-xcat in perl; Added site.installnic to control the nics setting for windows; Added servicenode.proxydhcp and noderes.proxydhcp to control the starting of proxydhcp-xcat daemon and makedhcp againsts node for windows deployment 2013-12-19 04:55:27 -05:00
yinle 412f3b51c6 Modify the bug that causes mklocalrepo.sh error 2013-12-19 01:07:52 -08:00
linggao 2f17a10f92 added capacity table to store cpu, memory and disk sizes for nodes 2013-12-19 08:25:41 -05:00
Bruce Potter c4170ce728 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-12-18 15:43:59 -05:00
Bruce Potter 69fbb8add5 fixed Error: at the beginning of monshow usage (feature request 73) 2013-12-18 15:42:25 -05:00
lissav a2d494c501 defect 3916 2013-12-18 09:14:50 -05:00
sjing f7812a2517 Support dns master/slave configuration 2013-12-18 01:25:16 -05:00
lissav 91347e0a9b defect 3916 2013-12-17 13:22:27 -05:00
daniceexi b3af99e178 make including winpostscript dir only for linux 2013-12-17 13:55:39 -05:00
jjhua 78bde6f6f7 if we set up the chef-server during os provision, there are some error messages
in the /var/log/messages on the management node. Fixed it.
2013-12-17 14:16:58 -05:00
daniceexi 0851987c3b Make xCAT rpm to install all files in /install/winpostscripts/* for Windows support 2013-12-17 02:24:42 -05:00
daniceexi 7c81f38a80 Enhanced postscript support in templates 2013-12-16 03:57:30 -05:00
daniceexi 9b5ad5113e code drop for windows postscript/postbootscript support. The postscript/postbootscript should be set in node/osimage.postscript/postbootscript and copy to /install/winpostscripts before running nodeset 2013-12-16 02:24:11 -05:00
yinle 8b71e68c68 Add lsslp unicast support 2013-12-13 01:24:18 -08:00
yinle ca73b902f1 Add lsslp unicast support 2013-12-13 01:19:04 -08:00
yinle 22e3c40f09 Add lsslp unicast support 2013-12-13 01:13:44 -08:00
lissav 5585b97e18 fix defect 3942 2013-12-12 11:20:40 -05:00
immarvin 55f981ea47 liteimg use rc.statelite instead of rc.statelite.ppc.redhat for rhels6.5.ppc64 statelite 2013-12-12 02:15:24 -08:00
wanghuaz f8bb5e4b50 prevent the running of postbootscripts 2013-12-12 17:50:49 +08:00
wanghuaz 7c45a82a53 prevent the running of postbootscripts 2013-12-12 17:35:09 +08:00
daniceexi 7a8b802a86 skip the bmc interface for nics configuration 2013-12-10 07:18:53 -05:00
baiyuan 7ab60cf654 add test cases for addkit 2013-12-10 02:21:21 -05:00
daniceexi 663a0b7da8 Mutiple winpes support. nodeset (Windows.pm) will generate configuration file (path of winpe) in /var/lib/xcat/proxydhcp.cfg and send signal to proxydhcp daemon, proxydhcp daemon loads configuration file and offers 4011 service to windows compute nodes. 2013-12-10 05:35:37 -05:00
wanghuaz 2dd2518120 fixing bug 3340: add test option for rmkit to list kitcomponents in use 2013-12-09 21:38:41 -08:00
wanghuaz e2688d0211 fixing bug 3340: add test option for rmkit to list kitcomponents in use 2013-12-09 21:24:51 -08:00
zhaoertao f4b432b9ab modify the vmstorage value format of local path 2013-12-09 19:01:15 -08:00
Bruce Potter b952e390f2 add valid values of kvm, esx, rhevm to nodehm.mgt and power attributes 2013-12-09 19:01:49 -05:00
Bruce Potter b4ab8a1b4c update description of litefile and litetree image attribute to include reference to image groups 2013-12-09 14:38:00 -05:00
immarvin 94ca59d560 rhels6.5 support 2013-12-05 21:51:47 -08:00
Bruce Potter 7f5465e80f filter out another useless line of output from xhtml2pdf in getxcatdocs 2013-12-05 08:42:12 -05:00
Bruce Potter 75f28121ec change getxcatdocs to not exit when it hits an error converting one of the wiki pages 2013-12-05 08:24:36 -05:00
ligc 1170cda7f4 fix for bug 3902: add bridge nics into dhcpd.conf, em\d+ for Fedora 2013-12-05 12:51:49 +08:00
ligc c78350a9bf fix for bug 3922, use getNodesAttribs instead of getNodeAttribs 2013-12-05 09:46:44 +08:00
sjing 0d00b1be94 Fix for bug 3912
update net-snmp rpm version
2013-12-04 03:59:03 -05:00
lissav 810c5324b5 fix lots of info in man page 2013-12-03 07:21:07 -05:00
daniceexi 6dd972fd50 code drop for feature to support multiple disks/paritions and multiple nics configuration for Windows deployment. 2013-12-03 02:36:48 -05:00
sjing 9c24bcf48b Fixed bug 3927
AIX bundle file can not recognize '#' in the middle of line.
2013-12-02 22:55:36 -05:00
wanghuaz 20ec000e77 fixing the typo error in last commit for master 2013-12-03 00:55:56 +08:00
lissav ef5ec3c17c Defect 3926, rerun of mysqlsetup -i leaves xcatd stopped 2013-12-02 06:43:41 -05:00
jjhua 75fbe70734 two environment template files if develop_mode=false 2013-12-02 16:34:06 -05:00
xq2005 7abd27fbfe put mypostscript.tmpl under /opt/xcat/share/xcat/templates/mypostscript 2013-12-02 00:10:47 -08:00
baiyuan e2672df777 update linux.conf.template for autotest 2013-12-01 22:17:02 -05:00
jjhua 4e4ea3c0a2 To support databag in openstack chef cookbook.
--nodevmode is only used when running all the procedure, and will
generate the secret, create the databag, and load the databag item
2013-11-29 14:58:06 -05:00
baiyuan 794ca69b97 support multiple os version 2013-11-29 00:33:09 -05:00
baiyuan d21d6271cc add test cases for buildkit 2013-11-28 22:04:16 -05:00
xq2005 0585d387fb delete unused build script on ubuntu and debian 2013-11-28 00:43:57 -08:00
Bruce Potter f02239bf29 change instoss in builddep.sh to upgrade all net-snmp rpms together - bug 3914 2013-11-27 11:12:36 -05:00
Bruce Potter 5570ab24cf removed the nbroot rpms from the yum group file 2013-11-27 04:36:07 -05:00
Jarrod Johnson 05f5636ebc Have ipmi do wire format, to match ipmitool and microsoft behavior in spite of the spec (which no one follows, not even prior xCAT code) 2013-11-26 10:26:09 -05:00
baiyuan 14ac0776d0 enhance os value in testcase,adding os:rhels,os:sles support in cases0 2013-11-22 03:42:11 -05:00
xq2005 2ce177d155 for bug 3919: version compare problem 2013-11-22 01:38:23 -08:00
xq2005 b19f226801 update the ubuntu dep tarball 2013-11-21 20:03:06 -08:00
zhaoertao cd984f7c51 remove 'sequential' parameter for runxcmd calling in configfpc.pm 2013-11-21 01:05:36 -08:00
zhaoertao 8bc0488764 fix bug 3889 xcatd not running preprocess for multiple plugins when mgt=ipmi 2013-11-21 00:52:08 -08:00
daniceexi a8ba71961f defect 3917: add support for running of postinstall script in mic genimage. The rootimage root is changed to overlay/rootimg from overlay/package 2013-11-21 05:19:11 -05:00
wanghuaz a2a8bbf514 fixing the problem that configing bond0 flushed the default gateway. 2013-11-21 10:15:06 +08:00
daniceexi 49cda4ba0f Change the man pages of nodeset,genimage and geninitrd commands for adding --ignorekernelchk option 2013-11-19 07:08:56 -05:00
ligc f132ece7be Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-11-19 15:55:13 +08:00
daniceexi 9fbd6a0f7d Code drop for new requirement: Add a new flag --ignorekernelchk for nodeset, geninitrd and genimage commands to skip the kernel version checking when injecting drivers from osimage.driverupdatesrc 2013-11-19 06:29:46 -05:00
ligc a3cad111de fix for bug 3913: do not use autocommit=0 for table read 2013-11-19 15:50:15 +08:00
sjing 3b9be43df8 Fix syntax error in 00kitnodebase.pm
When I upgrade xcat to 2.9, I got error "Error loading module
/opt/xcat/lib/perl/xCAT_plugin/00kitnodebase.pm  ...skipping"
This is caused by syntax error of line 182, near "$reques
t_command".
2013-11-19 01:05:39 -05:00
Jarrod Johnson 9799071116 Fix SLES driver update media injection that is not rpm based 2013-11-18 16:31:59 -05:00
lissav f1311c0aa8 defect 3870 2013-11-18 13:43:30 -05:00
lissav f77e980e2e Defect 3906 2013-11-18 06:51:08 -05:00
jjhua 7e66fc5072 fixed bug 3904, if the environements dir doesn't exsit, create it. 2013-11-18 16:28:05 -05:00
Jarrod Johnson e52df92352 Fix problem where bnx2x dependency tree needs special handling in sles 2013-11-14 15:53:36 -05:00
jjhua 0a4d9fd9bc fixed bug 3898. 2013-11-14 14:18:25 -05:00
xq2005 0bf9efc290 replace , or . in xcatlib and confignics 2013-11-13 23:49:05 -08:00
John Simpson 6da15f4770 update to add comment on susspend and RHEL 2013-11-13 15:14:36 -05:00
immarvin 6f9f434b4a fix defect #3693 [DEV] rhels6.4-ppc64 statelite failed with (FATAL error: could not get the entries from litefile table...) when noderes.xcatmaster=<hostname of MN> 2013-11-12 23:41:51 -08:00
sjing f475c143e9 only try to stop named if restartneeded=1
because on linux, if the named is already stopped, when we tried
to stop named, the return code is 0 with a warning message;
while on AIX, if the named is already stopped, when we tried to
stop named, the return code is 1, it's different with Linux.
2013-11-13 02:06:00 -05:00
xq2005 c010a68bb3 cacl broadcast address in configeth 2013-11-12 18:45:49 -08:00
John Simpson 2afe367b20 udpate to rflash man page for NeXtScale FPC 2013-11-12 16:46:36 -05:00
Jarrod Johnson e770d4b6dc Fix problem where fsm pulled in mic support 2013-11-12 10:03:53 -05:00
Jarrod Johnson 00f940d48b Remove ipmi.pm.legacy removal from fsm/zvm builds 2013-11-12 10:03:27 -05:00
sjing 88cbc07d96 update perl-Net_SSLeay.pm to 1.55-3 for AIX7.1.3 and above 2013-11-12 09:25:32 -05:00
sjing 039cf57962 update perl-Net_SSLeay.pm to 1.55-3 for AIX7.1.3 and above 2013-11-12 09:20:37 -05:00
John Simpson efb4906c68 updated the rflash man page with the NeXtScale FPC information 2013-11-11 19:18:26 -05:00
John Simpson bfca7b0bb7 update to fix configtfpc problems with running in xcatd 2013-11-11 17:49:29 -05:00
Jarrod Johnson 80b54be58e Add ability for appliances to forbid 32 bit architectures for RHEL 2013-11-11 15:31:32 -05:00
Jarrod Johnson 2f930993c0 Recognize and translate invalid url message 2013-11-11 09:25:22 -05:00
Jarrod Johnson 3dccc94696 Revert "Have rflash on fpc present a more readable error message"
This reverts commit 5509f6ab48.
2013-11-11 09:23:37 -05:00
Jarrod Johnson 5509f6ab48 Have rflash on fpc present a more readable error message 2013-11-11 09:18:00 -05:00
yinqing 1e40a422b1 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-11-11 17:25:36 +08:00
jjhua b9ef6a4282 fixed bug 3888
initialize the variable uselocalhost;
add new script configgw to configure the public gw
2013-11-11 16:11:18 -05:00
jjhua 5669c23ff1 remove the -vx flag 2013-11-11 14:46:37 -05:00
jjhua b91d6cd875 clean the chef-server data and stop the chef-server before uninstall the chef-server 2013-11-11 13:46:27 -05:00
yinqing 712ac48e82 merge 2.8.2-pcm code change from qing 2013-11-11 17:24:10 +08:00
Jarrod Johnson 3a4b586ea9 Fix bug with genimage and sles 2013-11-08 15:58:38 -05:00
John Simpson 5be4fab2b3 update to rvitals man page to remove summary option 2013-11-08 10:52:46 -05:00
John Simpson c7fbdf4626 update to rvitals man page to remove lcds from the options for BMC 2013-11-08 10:30:08 -05:00
John Simpson 9dabf11cd4 update to rinv man page to add descriptions for mprom, deveid, and guid 2013-11-08 10:24:40 -05:00
John Simpson a11fd07dbc update to process firm the same as firmware 2013-11-08 09:57:20 -05:00
John Simpson 3698609370 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-11-08 09:54:30 -05:00
xq2005 d8f6d1a6b4 confignics search ipv6 networks name automatically 2013-11-08 07:37:18 -08:00
John Simpson d3894733bd updated messages in ipmi.pm to correct double colon problem with IBM::EnergyManager in the string 2013-11-08 09:31:03 -05:00
Bruce Potter 3bd9fbc891 remove ipmi.pm.legacy 2013-11-08 08:31:58 -05:00
xq2005 ad7916eba0 delete grep error information in xcatlib.sh 2013-11-08 02:02:16 -08:00
daniceexi a3040af400 changed the description for column name powermgt in mic table 2013-11-07 23:03:44 -05:00
Jarrod Johnson efb4565f32 Fix problem where SLES11 SP3 SDK disk 3 would overwrite disk 1 2013-11-07 13:45:51 -05:00
Bruce Potter 9ab47e362f Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-11-07 12:10:06 -05:00
Bruce Potter d1066357b4 automatically save previous bld 2013-11-07 12:09:43 -05:00
Jarrod Johnson b91db176cd Add option to xcoll for individual output (-i) 2013-11-07 10:31:15 -05:00
Jarrod Johnson c2e30cadf2 Fix problem where reventlog would fail against a management module 2013-11-07 09:59:07 -05:00
xq2005 253c365f3c build xcat-openstack on ubuntu 2013-11-07 00:06:16 -08:00
xq2005 1fbcfd4785 build xcat-openstack on ubuntu 2013-11-07 00:03:10 -08:00
xq2005 5249e76e70 build xcat-openstack on ubuntu 2013-11-06 23:58:05 -08:00
xq2005 4e47350c59 build xcat-openstack on ubuntu 2013-11-06 23:47:48 -08:00
Bruce Potter 3c1268bc75 change group of sym links too in builddep.sh 2013-11-06 10:57:51 -05:00
Bruce Potter 2ef2f3d77b fix chgrp problem in build scripts on aix 2013-11-06 10:15:13 -05:00
Bruce Potter dae22d2531 update builddep.sh to have instoss install newer perl-Net_SSLeay.pm rpm on aix 71L 2013-11-06 09:41:05 -05:00
wanghuaz 40ea9ba362 Fixing bug 3876, reutrn with usage if no kitcomponent specified to addkitcomp/rmkitcomp 2013-11-06 18:20:22 +08:00
immarvin 88926480a2 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-11-06 01:45:42 -08:00
immarvin 7ba5977869 fix #3877 [FVT]genimage return confusing error message when xCAT-IBMhpc is not installed 2013-11-06 01:45:12 -08:00
daniceexi b33e239dc1 Xeon Phi support. Support nfs mount to any server which set in statelite table. Support power management setting. 2013-11-06 07:09:14 -05:00
wanghuaz 4624c6b9fa fixing bug 3815: check options again in process_request to make sure makedhcp options can be processes on service node. 2013-11-06 17:31:36 +08:00
wanghuaz 957403a1d2 still fixing bug 3815, dhcp.pm process_request with different makedhcp options -n and -a are triggerd by AAsn.pm twice during xcatd restarting on SN. the first -n option is enabled and not get cleanup because it is a global variable. and then second call with -a option conficts with -n option in last makedhcp context. we have to clean up -n before call the second makedhcp. 2013-11-06 17:26:52 +08:00
xq2005 adae06ce7b bug 3824: systeimager install failed on sles10 golden client 2013-11-04 23:49:20 -08:00
xq2005 53302a77ed bug 3824: systeimager install failed on sles10 golden client 2013-11-04 23:40:46 -08:00
xq2005 4fb578678c bug3872: stay on 'booting' when installing sles10 2013-11-04 22:50:19 -08:00
baiyuan d863097b05 add test cases for cn installation with sn in x86_64 redhat vm with kvm 2013-11-04 03:51:45 -05:00
baiyuan dcefc401c7 add testcase for sn installation in x86_64 redhat vm with kvm 2013-11-04 03:32:31 -05:00
baiyuan 128c35fa74 add testcase for cn diskfull installation with sn in x86_64 sles vm with kvm 2013-11-04 03:20:12 -05:00
baiyuan dee77954a1 add testcase for cn installatiion with sn in x86_64 sles vm with kvm 2013-11-04 03:09:54 -05:00
baiyuan 72b9ac43c7 add testcase for cn installation with sn in x86_64 sles vm with kvm 2013-11-04 03:06:12 -05:00
baiyuan fc3d050265 add testcase for sn installation in x86_64 sles vm with kvm 2013-11-04 02:47:30 -05:00
immarvin 67c66abb1e correct a syntax 2013-11-03 22:02:49 -08:00
daniceexi 4904b08a78 complete comments 2013-11-03 09:40:39 -05:00
daniceexi 9f1fd6c223 code drop for xeon phi (mic) support phase 2. 1. Support mpss 3.1; 2. Support to install software in .filelist, rpm and simple format; 3. Support the hcp software to be installed in .filelist format by genimage command; 4. Support the nfs mount setting for mic node (base on litefile table); 5. Support Internal bridge setting for mic host 2013-11-03 09:40:17 -05:00
Bruce Potter 36e4842a1c add db2man for blding xCAT-OpenStack man pages 2013-11-01 16:45:32 -04:00
Bruce Potter 7b57d0ba6c build man pages for xCAT-OpenStack tables and objects 2013-11-01 16:38:35 -04:00
immarvin 5e8d0c91e3 fix defect #2980 install kernel-source fail in genimage in rh6/centos 2013-11-01 04:06:59 -07:00
xq2005 23905cb311 use ip address to find the network name 2013-11-01 03:33:39 -07:00
Bruce Potter ae1241c0b2 add check for git pull success to build script 2013-10-31 12:57:33 -04:00
John Simpson c76c88f0e2 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-31 11:33:11 -04:00
jjhua 79f90a33a8 move the environment template files into the ./share/xcat/templates directory 2013-10-31 20:22:32 -04:00
jjhua e727395b75 add 2 environment template files 2013-10-31 17:06:27 -04:00
John Simpson 0bd4a8fc81 update configfpc 2013-10-31 11:32:45 -04:00
immarvin 6f1ff7a924 fix defect #3813 imgexport 2.7 will not imgimport 2.8 2013-10-31 01:42:57 -07:00
jjhua b5589691a9 Merge branch 'master' of ssh://jjhua@git.code.sf.net/p/xcat/xcat-core 2013-10-31 16:01:25 -04:00
jjhua 4cf04607d1 fixed some issues about errors and messages from Linda 2013-10-31 15:58:34 -04:00
yinle ec3fa3a7ec Fix bug #3712 p6 IH full-disk install fails with no /tftpboot/yaboot 2013-10-31 06:54:59 -07:00
yinle d526bbaaa8 Merge branch 'master' of ssh://git.code.sf.net/p//xcat/xcat-core 2013-10-31 06:48:09 -07:00
immarvin 195bd69ab2 fix defect #3393 xcat 2.8 mgt server(rhels6.4-ppc64) hang on Generating /etc/rndc.key during reboot 2013-10-30 07:12:35 -07:00
xq2005 0e54237c42 bug 3831: install ubuntu hang 2013-10-30 03:05:27 -07:00
wanghuaz 213556c27f fixing bug 3867 2013-10-30 01:46:24 -07:00
wanghuaz 3477b1f7a1 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-30 01:44:46 -07:00
nott 13e7903b43 buildkit fixes 3845, 3855, 3857 2013-10-29 14:45:14 -04:00
John Simpson 2b7def707f Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-29 11:29:51 -04:00
lissav 0eb918b7bd 3865,3864 2013-10-29 11:08:40 -04:00
ligc cac2677c1c temp fix for bug 3792: multiple nics in the same subnet, use the first nic that in the subnet for dhcp 2013-10-29 10:48:31 +08:00
Jarrod Johnson 3664f1d5c3 Implement rescansan in esx.pm and wire up svc.pm to issue rescansan 2013-10-28 20:26:40 -04:00
John Simpson 08accdf517 update to configfpc to add support for verbose and -i <int_adapter> option and a ping verification 2013-10-28 16:16:36 -04:00
Jarrod Johnson 952ff38ce4 Add --format to mkstorage 2013-10-28 16:15:25 -04:00
Jarrod Johnson fbce5a6a00 Add formatdisk to esx plugin, to be called by mkstorage 2013-10-28 16:07:38 -04:00
John Simpson abbbe735b5 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-28 15:44:16 -04:00
Jarrod Johnson b0ddf05865 Fix stateless esxi warning about ssh 2013-10-28 10:44:40 -04:00
Jarrod Johnson 908efae0ba Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-28 10:43:25 -04:00
Jarrod Johnson ec85d06117 Suppress warnings about ssh/tech support shell 2013-10-28 10:43:08 -04:00
yinle 0d827b59ab Add a new file configeth_aix 2013-10-28 07:35:09 -07:00
yinle 3be3d26ac3 Add lsslp support for IMM2. 2013-10-28 07:27:29 -07:00
yinle 8ecf88438c Add check in confignics to give message to AIX user. 2013-10-28 06:33:44 -07:00
yinle 0c7e33c045 Add check in configeth to give message to AIX user. 2013-10-28 06:28:45 -07:00
jjhua 428058af5a move setup_openstack_repo from xCAT/postscripts/ to xCAT-OpenStack/postscripts, and it will be packed into xCAT-OpenStack package 2013-10-28 11:02:30 -04:00
Jarrod Johnson 06fe33434a Fix table sourced controller pointing in *storage calls in svc 2013-10-27 16:49:25 -04:00
Jarrod Johnson bb351003dc Implement rmstorage for sc 2013-10-27 16:39:23 -04:00
Jarrod Johnson bd899691b0 Add detachstorage call to svc plugin 2013-10-27 16:23:52 -04:00
Jarrod Johnson 7cab5a1f41 Have mkstorage report the volumes created. 2013-10-27 15:22:50 -04:00
Jarrod Johnson dc9dd79a5b Add ability to request a specific name when doing mkstorage 2013-10-27 15:16:14 -04:00
Jarrod Johnson 1e8ebff8ac Add lsstorage command to the svc plugin 2013-10-27 14:51:20 -04:00
Jarrod Johnson 2aaeb87959 Fix shared mkstorage to actually function correctly in svc 2013-10-27 11:17:50 -04:00
Jarrod Johnson b44b1bbd6e Tolerate and amend host definitions in SVC removing hard requirement for host names to match svc and xCAT 2013-10-27 11:08:20 -04:00
jjhua fbc44597ca remove the print Dumper() 2013-10-27 16:16:57 -04:00
John Simpson ca3e7da99b update to configfpc to add support for verbose and -i <int_adapter> option and a ping verification 2013-10-25 12:33:38 -04:00
John Simpson 84f4f2c7c9 update to add the configfpc man page 2013-10-25 12:28:57 -04:00
wanghuaz 0ffc189fee fixing bug 3821 give better description for chkkitcomp 2013-10-26 00:19:27 +08:00
wanghuaz f7ae606485 fixing bug 3821 give better description for chkkitcomp 2013-10-26 00:17:42 +08:00
lissav dc9c746cbc defect 3859 2013-10-25 08:28:24 -04:00
immarvin 3d9582728b fix defect #3694 [PCM] Showing booting status always for NGP X node status after power reset: update site.status during normal diskful reboot 2013-10-25 00:27:46 -07:00
jjhua aaed135c1e add a new optional --script for confignics 2013-10-25 14:52:08 -04:00
zhaoertao b8f9d57194 fix bug 3856: rmvm could remove cec 2013-10-24 23:32:02 -07:00
jjhua a5424b703b add a new script configbr-ex to configure the IP of the external bridge for network node 2013-10-25 14:33:18 -04:00
zhaoertao 5de59481e1 fix bug 3850: "chtab key=fsp,username=HMC ..." doesn't work for Powerlinux 2013-10-24 23:01:18 -07:00
lissav 9a09552de5 defect 3851, further enhancements 2013-10-24 08:05:59 -04:00
lissav 4bac666675 defect 3851, further enhancements 2013-10-24 07:23:59 -04:00
lissav 3cae77406c defect 3851, further enhancements 2013-10-24 06:55:54 -04:00
daniceexi 399e71a4c0 defect 3789: fixed the issue that xcatdebug command kill the xcatd ssl listening process. The fix is that just remove the handling debug message from plugin modules since xcatd loads plugin modules for each command run, don't need xcatdebug for plugin any more. 2013-10-24 10:41:48 -04:00
zhaoertao d53c777ca1 fix bug 3820: rinv for feihu FPC is producing errors 2013-10-24 02:13:34 -07:00
daniceexi 245c3eab83 defect 3588: For rpower reset on kvm, in the case persistkvmguests is enabled, check the domain is inactive before resetting the domain 2013-10-24 08:58:21 -04:00
daniceexi b18d580dd5 defect 3369: to add the flag -g for genimage command like for sles that make rh could handle the case that the kernel version is different with the name of kernel rpm when using -k to specify a new kernel version. 2013-10-24 08:07:21 -04:00
sjing fb60b65258 Handle the case where networks.nameservers is a comma delimited list 2013-10-24 04:19:47 -04:00
wanghuaz 5565f20b8b fixing bug 3848: add prerequisite component as dependency of kit component meta rpm 2013-10-24 15:07:04 +08:00
zhaoertao eac9954e26 fix bug 3651: rspconfig with cmm does not execute or provide error when entry found in ipmi table 2013-10-23 23:46:04 -07:00
John Simpson 526ef5fbd8 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-23 16:56:22 -04:00
lissav 3bf30fcc38 defect 3851- handle multiple MN in DB 2013-10-23 13:50:05 -04:00
Jarrod Johnson 857af4d498 Send a positive acknowledgement of flow request 2013-10-23 11:15:04 -04:00
daniceexi 67f5b9c808 change the position to run localdisk script that put it before killing udev. For stateless only. 2013-10-23 15:05:26 -04:00
jjhua 7cff252401 add the loadclouddata, share/xcat/mypostscript/mypostscript_cloud.tmpl into xCAT-OpenStack 2013-10-23 22:56:17 -04:00
jjhua 4e59b13e0f move out the code to read cloud/clouds table from Postage.pm to Cloud.pm in xCAT-OpenStack. Move out the loadchefdata script. 2013-10-23 22:41:15 -04:00
daniceexi 50a853c96e add more kernel modules of scsi for localdisk support 2013-10-23 14:01:09 -04:00
Jarrod Johnson 3243037a91 For newer versions of esxi for which we have selected a less vague name, ensure we remake it every time. 2013-10-22 10:45:42 -04:00
immarvin 06e244202b correct xcat-yaboot in error message to yaboot-xcat 2013-10-22 05:11:27 -07:00
immarvin 105b54d4cd fix defect #3626 yaboot.pm needs to use pkgdir 2013-10-22 04:53:02 -07:00
immarvin bcd72b4040 fix defect #3626 yaboot.pm needs to use pkgdir 2013-10-22 00:57:14 -07:00
jjhua d464001ca1 Add the chef-client to invoke the config_chef_client script 2013-10-22 14:29:56 -04:00
jjhua f8daa39253 fixed a minor problem 2013-10-22 13:25:45 -04:00
jjhua e852d0b264 changes for the command makeclouddata 2013-10-22 10:45:41 -04:00
jjhua a77996e933 Postscripts for OpenStack-Chef-Cookbook/xCAT integration 2013-10-22 10:22:39 -04:00
jjhua 42bc6cef07 code for OpenStack-Chef-Cookbook/xCAT integration 2013-10-22 10:07:08 -04:00
Chuck Brazie 66d62f7e65 Adding file back in, not sure why it delted 2013-10-21 14:09:31 -04:00
Chuck Brazie ef75e82fe3 Merge zVM updates into xCAT 2.8.3 2013-10-21 14:01:20 -04:00
lissav 81679ffdb9 defect 3819 2013-10-21 11:28:50 -04:00
zhaoertao 80ba0a4601 fix bug 3774 :getmacs <noderange> -D -V failed 2013-10-21 02:54:15 -07:00
xq2005 617de03d13 delete 127.0.1.1 from /etc/hosts on ubuntu compute node 2013-10-21 01:08:59 -07:00
John Simpson 49f714850b Adding a new plugin confgifpc to support discovery and configuring of NeXtScale FPCs 2013-10-18 16:18:14 -04:00
nott c88d7751de check return from find_latest_pkg 2013-10-18 07:59:14 -04:00
nott 41b7c99bee Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-18 07:58:16 -04:00
nott 9f53a3c4e6 check return from find_latest_pkg 2013-10-18 07:57:49 -04:00
lissav e1c55be4ff defect 3844 2013-10-18 07:50:22 -04:00
lissav 059a4fd6f6 defect 3841 2013-10-18 07:24:00 -04:00
immarvin 4fcf3a96e6 fix defect #3370 Create osimage definition for the Management Node 2013-10-18 01:58:05 -07:00
ligc c30f46cc80 fix for bug 3841: syntax error in remoteshell postscript 2013-10-18 15:58:18 +08:00
ligc e5d8576cfd Update Clouds table for xCAT-OpenStack 2013-10-18 15:53:10 +08:00
nott 6bdf5bfc3f add -F option to lskit man 2013-10-17 15:18:07 -04:00
nott 899be1a70d add -F option to lskit 2013-10-17 15:02:18 -04:00
lissav c05b7c9a66 additional flowcontrol error handling defect 3819 2013-10-17 11:46:12 -04:00
lissav 6d00593449 enhance error reporting 2013-10-17 11:04:01 -04:00
xq2005 87db317493 add env parameters in runxcatpost 2013-10-17 02:21:02 -07:00
zhaoertao 52344f9997 fix bug 3835: 'rspconfig blade network=*' result need to be enhanced 2013-10-16 23:52:02 -07:00
xq2005 f8a56d3712 bug 3801: the booted status after syslone reboot 2013-10-16 20:12:52 -07:00
nott b3a222e811 add build_input subdir to complete kit 2013-10-16 15:03:55 -04:00
lissav 529a287a92 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-16 12:56:34 -04:00
xq2005 6043695181 bug 3801: the booted status after syslone reboot 2013-10-16 08:43:20 -07:00
lissav 74dffc5f26 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-16 06:08:51 -04:00
lissav 5e5cf68068 put manpage back 2013-10-16 06:08:30 -04:00
zhaoertao c8899e694a fix bug 3834: 'lsslp -s CMM -w' write different id for cmm01 with 'rscan cmm01 -u' 2013-10-16 02:35:43 -07:00
zhaoertao 8081d7bf4f modify the operating for CMM doesn't rely on 'id' attribute 2013-10-16 02:35:27 -07:00
zhaoertao ace7a82ef9 modifying 'rscan -u|-w' for working through DFM 2013-10-15 19:40:17 -07:00
Bruce Potter 3bd7a65b37 remove xcat.1.pod, it is generated by xpod2man 2013-10-15 21:10:22 -04:00
Bruce Potter 7040aebf37 require perl-IO-Stty on x86_64 too, in case managing ppc64 nodes 2013-10-15 20:44:05 -04:00
lissav b9144fc028 comment out for now disable buffering on the socket 2013-10-15 14:24:43 -04:00
Jarrod Johnson a52dc5b5f9 Correct problem introduced by partial backout of storable.
Client.pm was still expecting some output to a request no longer sent.  Correct that.
2013-10-15 13:39:20 -04:00
lissav 53974fcaa8 defect 3819, changes for xcatdsklspost and setuppostbootscripts 2013-10-15 10:21:53 -04:00
lissav 9c7f3e41c0 defect 3819 enhance -s behavior 2013-10-15 09:05:44 -04:00
lissav 248415daea defect 3819 enhance -s behavior 2013-10-15 08:15:12 -04:00
wanghuaz 3aca3b2a70 fixing bug 3510 remove useless repos after genimage 2013-10-15 17:49:01 +08:00
wanghuaz 882d64f809 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-15 02:32:43 -07:00
wanghuaz 8b035a3570 fixing bug 3510: remove useless repos after genimage. 2013-10-15 02:31:01 -07:00
ligc 6375fb72ad sequential discovery phase 2: add -n, osimage and -s flags 2013-10-15 16:06:26 +08:00
wanghuaz f788778e48 fixing bug 3821, use better description for chkkitcomp command 2013-10-15 15:43:10 +08:00
ligc ca6318cf58 fix for bug 3833: if ip forwarding is not enabled, do not use the MN as gateway 2013-10-15 09:49:30 +08:00
nott e2213896d2 change pkgdir description 2013-10-14 10:21:34 -04:00
xq2005 a9b4000b61 for bug 3817 modification 2013-10-14 04:31:18 -07:00
xq2005 7fc282011b bug 3817: sysclone support rhels 5.9 2013-10-14 03:46:53 -07:00
Sheng Feng Xing 53dc1cde81 Do not import lpar node if FSP network associated with it 2013-10-14 15:05:30 +08:00
jjhua feda4dddbb fixed bug 3683. In rhels 6.x, the mksquashfs doesn't have the -le and -be options.
for sles, the mksquashfs is in /usr/bin/ .
2013-10-14 12:33:55 -04:00
nott d962fc5092 change kit framework to 2 2013-10-13 10:38:20 -04:00
nott f229e78a9e change kit framework to 2 2013-10-13 10:37:22 -04:00
nott baabb6d4ba add -v and aix note 2013-10-12 12:58:15 -04:00
nott 6fa8fdfb74 add -v and aix note 2013-10-12 12:54:38 -04:00
Bruce Potter 008e6ecdb7 filter out signing msg in build script 2013-10-11 17:42:39 -04:00
Bruce Potter e329e234a7 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-11 17:31:10 -04:00
Bruce Potter 7a187b19aa set group for files/dirs to root instead of xcat, because the xcat group does not exist on users mn 2013-10-11 17:28:14 -04:00
nott 1842cff1cf add framework to -v and check for aix 2013-10-11 16:40:44 -04:00
Jarrod Johnson 62b436be08 Disable storable encoding for client
Clever things can live in Storable payloads that can essentially be remote execution.
Disable that for now.
2013-10-11 15:57:29 -04:00
Jarrod Johnson 5bfcf11689 Rework previous changeset somewhat and add gateway support 2013-10-11 14:57:26 -04:00
Jarrod Johnson 8376bfab67 Attempt to set ip and netmask remotely 2013-10-11 14:45:19 -04:00
Bruce Potter d3c49894d5 updated description of useflowcontrol attr 2013-10-11 13:31:37 -04:00
lissav 764e263c2f defect 3819 2013-10-11 07:17:30 -04:00
lissav fa24d1f47c defect 3819 2013-10-11 06:47:35 -04:00
immarvin 3724f333fe fix defect #3830 [DEV] rinstall complains inappropriate message 2013-10-11 01:21:25 -07:00
lissav f4610cfc6d defect 3819 2013-10-10 14:53:24 -04:00
lissav 8b84e9e0eb defect 3819 2013-10-10 13:57:18 -04:00
lissav cd1c5414d6 defect 3819 2013-10-10 11:25:36 -04:00
lissav 4a04c8fb10 defect 3823 2013-10-10 09:09:37 -04:00
xq2005 d8c0929f24 bug 3824: install systemimager on sles10 failed 2013-10-10 03:14:50 -07:00
xq2005 39b5298569 bug 3824: install systemimager on sles10 failed 2013-10-10 03:11:53 -07:00
xq2005 381287e451 build ubutnu packages for prega 2013-10-10 02:59:19 -07:00
Jia Zhao bf0c433a8e fix nodeimport message problem 2013-10-10 15:29:35 +08:00
Bruce Potter 81760673e3 fix setversionvars command not found problem during promote 2013-10-09 19:54:10 -04:00
lissav b733b711c3 defect 3819 2013-10-09 15:26:55 -04:00
lissav b83cb162dd defect 3819 2013-10-09 13:46:42 -04:00
lissav 2a4a063169 defect 3760 2013-10-09 12:28:09 -04:00
Jarrod Johnson e81fae18d1 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-08 16:09:14 -04:00
Jarrod Johnson 8862d59f99 Add a rmvcluster command for vSphere support 2013-10-08 16:08:51 -04:00
lissav 3598d5047d defect 3816 2013-10-08 15:36:59 -04:00
jjhua eb6cc1d15c fixed bug 3796. At the end of genimage, remove the repositories of zypper. 2013-10-08 16:22:58 -04:00
xq2005 80291f4473 bug 3808: error info when running confignics 2013-10-08 01:45:23 -07:00
xq2005 9c409845ba bug 3809: get the dhcp info from lease file 2013-10-07 22:57:42 -07:00
lissav 4116445f88 update again to log 2013-10-03 10:36:05 -04:00
lissav a632c7b307 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-03 09:31:38 -04:00
nott 8461780ea5 add find_latest_pkg 2013-10-02 14:18:34 -04:00
nott 4711465ad0 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-02 14:16:38 -04:00
nott d74b4a2527 add find_latest_pkg 2013-10-02 14:15:18 -04:00
nott a4ebd3bf6a add find_latest_pkg 2013-10-02 14:10:36 -04:00
Jarrod Johnson 422cf661ee Add removevlan support to chhypervisor for vmware 2013-10-02 13:46:15 -04:00
Jarrod Johnson 10dd94e428 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-02 12:45:57 -04:00
Jarrod Johnson 8b786b30c5 If xCAT-vlan is installed, have chhypervisor change the switch and the hypervisor 2013-10-02 12:28:29 -04:00
nott 213394d3a6 add mult pkg dir support 2013-10-02 12:00:57 -04:00
Jarrod Johnson 698cf75276 Refactor hostportgroup management code in esx plugin
Have esxi support --addvlan parameter
2013-10-02 10:24:18 -04:00
lissav 73d269c8c1 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-02 09:14:32 -04:00
lissav 490ea0e57c defect 3797 2013-10-02 09:13:40 -04:00
Jarrod Johnson c440e892da Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-10-02 08:36:30 -04:00
lissav 57f924c50d defect 3811 2013-10-01 08:25:09 -04:00
John Simpson 36c1eb5fd7 Add support for missing NeXtScale sensors 2013-09-30 16:51:00 -04:00
lissav 3e6abbcc60 temp fix for defect 3797, at least get it working on SLES 2013-09-27 09:55:48 -04:00
xq2005 d856b6caf4 ubuntu 13.04 stateful support 2013-09-27 02:56:44 -07:00
daniceexi 09fe6d5c8f defect 3803: appending the default drvier list even new driver is specified in netdrivers attr; change the output message of genimage 2013-09-27 01:59:06 -04:00
xq2005 58e403c28c bug:3804 2013-09-26 19:29:30 -07:00
daniceexi 9f8a003107 check in the code to support the driver injection for stateless: 1. genimage will copy the generated initrd to /tftpboot;2. support nodeset --noupdateinitrd 2013-09-26 03:04:36 -04:00
Jarrod Johnson fbb1c3c1c0 Add lsvcluster private esx function 2013-09-25 17:23:27 -04:00
Jarrod Johnson c0585e091b Add an easter egg entry point for createvcluster 2013-09-25 17:10:49 -04:00
Jarrod Johnson e600768e19 SVC support phase 2
Generally able to create shared and dedicated storage luns

TODO: still put the boot data into storage.osvolume
TODO: format callout to nodetype.os driven plugin (looking at esxi here)

attachstorage/detachstorage/showstorage/rmstorage still TODO
2013-09-25 11:26:27 -04:00
lissav 9845d52bb7 defect 3800 2013-09-25 08:13:39 -04:00
lissav c5119b23fd add /install/custom directory 2013-09-25 07:24:01 -04:00
daniceexi 18d6398e02 defect 3783: add the missing driver for sles11.3; fix the bug of adding new drivers with incorrect order 2013-09-25 02:06:47 -04:00
daniceexi f9c1bd930e defect 3779: change the output of driver injection to make it sensible 2013-09-25 01:49:56 -04:00
Jarrod Johnson 25dd2ce800 Phase 1 of SVC plugin implementation
This commit is able to create storage in an existing mdisk grp.

It hardcodes the iogrp to 0 for now.  The next step is to make hosts and vhostmap.
mkhost -name <name> -hbawwpn <wwpn> -force

And then map them together:
mkvdiskhostmap -host <host> -force <vdisk>

If boot, store the wwn into storage.osvolume for future use.

Commands to do:
attachstorage
detachstorage
showstorage
rmstorage

suspect frontending:
lsmdiskgrp to show state of avail space
will be appropriate
2013-09-24 21:03:48 -04:00
lissav 14696db19f defect 3799 2013-09-24 10:26:00 -04:00
xq2005 b5c87afbb2 bug 3798: confignics -s failed on sles11 sp3 2013-09-24 02:14:43 -07:00
lissav 4a1260201d defect 3618 2013-09-23 12:02:52 -04:00
wanghuaz 5f0bc62131 Fixing bug 3406, using md5 hash algorithm for centos 5.x during createrepo 2013-09-23 18:50:23 +08:00
xq2005 cbba505632 confignics modification for syntactics 2013-09-23 02:57:28 -07:00
Sheng Feng Xing 4dd033b069 Commit new nodeimport man page into master branch for Power rack-mount node support 2013-09-23 15:30:30 +08:00
xq2005 ed0e4b6fc2 bug 3795: node can not boot after cloning sles11.3 with legacy mode 2013-09-23 01:07:55 -07:00
Sheng Feng Xing 9b5e17ab88 Merge PowerLinux 7R2 support patches into master branch 2013-09-23 14:45:43 +08:00
wanghuaz 25563cc4eb Fixing bug 3406, using md5 hash algorithm for centos 5.x during createrepo 2013-09-22 18:21:59 +08:00
Sheng Feng Xing eb16d571a0 Fix #3793: CFMUtils.pm can not sync-up symbolic link directory under cfmdir 2013-09-22 14:34:40 +08:00
Jarrod Johnson c3749b7f93 Add support for esxi5.5 2013-09-19 15:53:29 -04:00
lissav 25c5e4686a defect 3150, check for errors from DB. We can do itgit diff tabutils.pm 2013-09-19 13:06:08 -04:00
lissav 9f7f09d0f7 defect 3580 2013-09-19 10:52:57 -04:00
lissav a23b9ab782 defect 3785 2013-09-19 07:36:48 -04:00
lissav 57db78797e document xcatmaxbatchconnections update 2013-09-18 14:24:16 -04:00
lissav 16f60b110a document xcatmaxbatchconnections, try 2013-09-18 14:09:35 -04:00
lissav 5e0fde83cd defect 3785 2013-09-18 13:45:11 -04:00
lissav e11faa9992 fix extra output on -k interface 2013-09-18 08:21:29 -04:00
lissav e8d067b359 defect 3785 2013-09-18 07:08:41 -04:00
ligc bfe3cdad05 fix for bug 3748: lsdef --osimage need to list all osimage attributes 2013-09-18 13:46:00 +08:00
ligc 982f411251 fix bug 3745: makehosts -d to delete otherinterfaces hosts 2013-09-18 07:54:40 +08:00
Jarrod Johnson 29d9d824fe Fix pasu with multi-node eX5 systems 2013-09-17 17:27:47 -04:00
lissav 82617219fc fix defect 3786 2013-09-17 12:23:17 -04:00
lissav 863481ab17 fix for defect 3785(PCM) requirement 2013-09-17 10:38:04 -04:00
zhaoertao 35479c4cf9 enhancement of supporting partition on IBM power 7R1/7R2 machines. 2013-09-17 07:21:37 -07:00
xq2005 ce0d0e18f7 bug 3763:write install nics's configuration file 2013-09-17 00:49:04 -07:00
litingt 22cbc9f005 confignics test case part one 2013-09-16 23:35:22 -04:00
Sheng Feng Xing c3963a7f80 Fix #3784: CFMUtils.pm reports error messages in Verbose model if osimage.cfmdir is not set 2013-09-17 10:32:49 +08:00
lissav 07397d277f defect 3781 2013-09-16 09:29:20 -04:00
xq2005 69d3902280 bug 3776: post install script hung when deploy rhels5.9 2013-09-16 01:48:57 -07:00
zhaoertao a731c4f20b Enhancement of fixing for bug 3780: Incorrect password selected for blade 2013-09-15 23:17:00 -07:00
lissav c667ff8f28 add support for -a (addrows) flag 2013-09-13 14:21:29 -04:00
lissav a854eaa08f add support for -a (addrows) flag 2013-09-13 14:18:49 -04:00
lissav df24dc4db9 add support for -a (addrows) flag 2013-09-13 14:17:36 -04:00
immarvin a9b22625d3 add fedora19 full install support 2013-09-13 07:16:13 -07:00
lissav 71274bf063 add missing libraries 2013-09-13 07:57:40 -04:00
lissav 48e922423a defect 3750 2013-09-13 07:37:25 -04:00
xq2005 bfd7e6c7ee setupntp do not return directly 2013-09-13 02:05:25 -07:00
zhaoertao cf14e652d1 fix bug 3780: Incorrect password selected for blade 2013-09-13 00:46:26 -07:00
lissav 0b9bccf4df defect 3750 2013-09-12 09:26:39 -04:00
lissav 1b808bcffd Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-09-12 08:19:19 -04:00
lissav 1223ff467e add -t info 2013-09-12 07:54:58 -04:00
xq2005 9390efe04e confignics modify -s option 2013-09-11 23:48:49 -07:00
Jarrod Johnson 787fb3207c Implement rflash support for NeXtScale Enclosure manager 2013-09-11 14:26:03 -04:00
lissav 0537dc4e61 defect 3766 2013-09-11 08:56:09 -04:00
lissav de087c0f9d defect 3778 2013-09-11 07:15:34 -04:00
zhaoertao f3d00082c2 Modifications of setting memory for partitions on Power Machines 2013-09-11 02:46:38 -07:00
daniceexi 9f2f230037 defect 3759: fix the man page for power 6 that attributes syssbpower,sysIPLtime were not in the command line list 2013-09-11 09:47:12 -04:00
xq2005 f9e7a88e69 bug3767:Target node doesn't return 'booted' status in sysclone 2013-09-11 03:23:19 -07:00
xq2005 d7db26b19c bug3767:Target node doesn't return 'booted' status in sysclone 2013-09-11 03:18:06 -07:00
xq2005 689d4837fb bug 3755, No way to setup CN hardware clock 2013-09-11 03:09:17 -07:00
sjing 069169902d Enhance usability of makedns with more checks and better messages. 2013-09-11 05:15:36 -04:00
lissav ad095fe20c fix defect 3777 2013-09-10 14:23:22 -04:00
lissav 0c36ee3155 add centos6 2013-09-10 09:13:58 -04:00
xq2005 3b1333d88f fix the postinst script for xcat-server on ubuntu 2013-09-10 02:24:18 -07:00
wanghuaz 73cf93f36b fixing bug 3764, add osminor version for sles. 2013-09-10 14:50:04 +08:00
wanghuaz 6c6f954ff8 enable snmpv3 monitoring on Linux on master 2013-09-10 14:48:46 +08:00
zhaoertao e42ce7835c Add a column 'physlots' for 'vm' table, it is used for partitioning. 2013-09-08 23:26:25 -07:00
xq2005 b10396f556 bug 3765 2013-09-08 23:55:13 -07:00
Jarrod Johnson 742fc45068 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-09-06 11:16:13 -04:00
Jarrod Johnson f39001788f Provide rpower reseat for NeXTScale 2013-09-06 11:15:39 -04:00
nott 0fac74810f #3655 - add two new subroutines for comparing rpm versions 2013-09-05 13:05:39 -04:00
nott 3b82ab0817 #3674 - add error return code 2013-09-05 12:29:37 -04:00
nott cf6f185635 #3752 - change tmp work dir location 2013-09-05 11:20:25 -04:00
zhaoertao ec4622a096 Modify manpage for mkvm, lsvm, rmvm. And checking if parition is disabled. 2013-09-05 01:28:27 -07:00
zhaoertao 371c4c79a9 Supporting full-partition and physical-partition with DFM 2013-09-05 01:28:01 -07:00
xq2005 4cb0606746 bug 3768,3769,3770 2013-09-04 20:59:20 -07:00
ligc db4b5a2065 add the storage.rhels6.pkglist 2013-09-05 09:59:39 +08:00
sjing 3e71a82741 add an error message if mn's hostname can not be resolved. 2013-09-04 05:58:19 -04:00
xq2005 0f9cd87b13 for bug 3762 2013-09-04 02:45:31 -07:00
Bruce Potter 9263cb2f15 specify --checksum for createrepo so the repo will work on rhel5 2013-08-31 10:35:25 -04:00
ligc e9d60852b7 add rhelhpc6.4 support 2013-08-30 09:13:17 +08:00
lissav c9053f4a6c add timeout support to updatenode to pass into xdsh 2013-08-29 13:53:34 -04:00
lissav bfbdb24622 add timeout support to updatenode to pass into xdsh 2013-08-29 13:34:13 -04:00
lissav f2ded51dec implement timeout in xdsh -K 2013-08-29 09:12:50 -04:00
lissav 856dd30fae more code to enable user input timeout on xdsh -K 2013-08-29 07:59:36 -04:00
xq2005 a5fb87a364 add syscloneimgupdate scripts to update the target nodes files 2013-08-29 02:59:32 -07:00
lissav 2662d2913f add support to supply expect timeout 2013-08-28 13:07:38 -04:00
lissav e8052e3e37 add check for servicenodes and computenodes in noderange for nodeset. Also remove very old commented out code defect 3750 2013-08-27 13:10:37 -04:00
lissav 072e57437a Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-08-27 12:55:34 -04:00
Bruce Potter f61d224d1c fix bld script change 2013-08-27 12:49:04 -04:00
lissav edabe5dc6c add check for servicenodes and computenodes in noderange for nodeset. Also remove very old commented out code defect 3750 2013-08-27 12:48:37 -04:00
Bruce Potter 79abddc476 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-08-27 12:36:38 -04:00
lissav c0fbda2ee2 add check for servicenodes and computenodes in noderange for nodeset. Also remove very old commented out code defect 3750 2013-08-27 12:26:09 -04:00
Bruce Potter b20f9ae848 change git cmd used to get current branch 2013-08-27 11:23:22 -04:00
lissav bacfae1024 fixes for defect 3750 2013-08-27 09:48:31 -04:00
xq2005 260d2a5746 sles.pm modification for sysclone on sles 2013-08-26 20:51:26 -07:00
xq2005 aa892335de update scripts for sysclone supports sles 2013-08-26 20:16:47 -07:00
lissav 1fc54f6bdc changes for defect 3758 git patch 2013-08-26 11:08:06 -04:00
xq2005 b2f511f4df sles.pm modification for sles 2013-08-26 00:01:05 -07:00
daniceexi 098ddc4b46 Just a checkin test, no change 2013-08-26 01:55:39 -04:00
daniceexi 1f7cb1b593 Just a checkin test, no change 2013-08-26 01:53:16 -04:00
daniceexi 2f175e4cef Just a checkin test, no change 2013-08-26 01:48:17 -04:00
ligc 0b874a4bd5 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-08-26 09:29:00 +08:00
lissav a8c36721b0 add additonal ethernet setup 2013-08-24 06:32:33 -04:00
daniceexi afc950912d kill the child processes when create socket failed 2013-08-23 06:42:36 -04:00
xq2005 e87d5fa074 add mksysclone in sles.pm 2013-08-22 23:32:02 -07:00
xq2005 56ed1f53d0 postscripts modification for sysclone on sles 2013-08-22 22:58:53 -07:00
Jarrod Johnson 82e6644c85 Correct more issues with noderange 2013-08-22 14:35:21 -04:00
lissav 84b36c29ab fix schema definition 2013-08-22 12:03:14 -04:00
daniceexi 10a1973aae make geninitrd could run against statelite image to generate initrd 2013-08-22 07:05:41 -04:00
daniceexi 969f535536 Remove the validity checking base machine type so that any power machines can be run with renergy command 2013-08-22 06:38:41 -04:00
xq2005 6df017b620 remove klogd from genesis base 2013-08-21 19:50:17 -07:00
lissav 5d7072da13 defect 3754 2013-08-21 12:55:39 -04:00
xcat ubuntu build machine 0565563156 build packages on ubuntu 2013-08-21 16:31:02 +00:00
xq2005 5aee2ceea8 add reiserfs into genesis to support sysclone for sels 2013-08-21 09:07:48 -07:00
xq2005 66700054a3 add kvm pkglist and template for ubuntu 2013-08-21 07:35:23 -07:00
xq2005 9e2bb00b82 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-08-21 03:07:34 -07:00
xq2005 65a2d35112 modification for builing xcat on ubuntu 2013-08-21 03:05:59 -07:00
Jarrod Johnson 2275e87b6f Try to suppress scary warning at time of checking for bmc port activity 2013-08-20 16:31:53 -04:00
Jarrod Johnson 7ac9dae5af Attempt to fix bmcsetup problem where service processor changes after request to change too late 2013-08-20 15:59:42 -04:00
Jarrod Johnson 21e8a18c9e Fix problem where values after parenthitcal group were not evaluated correctly 2013-08-20 15:34:16 -04:00
wanghuaz 0a59a7beb6 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-08-20 23:11:19 +08:00
wanghuaz 6439ab60ee fixing bug 94319: handle the case of some postscript contains parameters 2013-08-20 23:10:41 +08:00
lissav 8e48b6a40f fix defect 3750 2013-08-20 10:24:06 -04:00
xq2005 3188ab14cc postscripts modifiction about sysclone supporting for sles on master 2013-08-20 02:09:46 -07:00
xq2005 19d72e6f84 add debianpreconf into xcatlib.sh on master 2013-08-19 23:47:34 -07:00
lissav 6cac1a8001 fix pid files did not get removed and the kill term showing up 2013-08-19 13:29:51 -04:00
Bruce Potter bae1fbbdf4 add --nonodecheck to the psh usage and man page 2013-08-17 10:52:52 -04:00
immarvin 6b546dbf85 update node provision status based on the feedback of nodes instead of rpower/rnetboot 2013-08-16 02:17:16 -07:00
immarvin fd0accd00c update node provision status based on the feedback of nodes instead of rpower/rnetboot 2013-08-16 02:05:31 -07:00
immarvin 565f67b9fe update node provision status based on the feedback of nodes instead of rpower/rnetboot 2013-08-16 02:00:23 -07:00
immarvin 6769c92f7e update node provision status based on the feedback of nodes instead of rpower/rnetboot 2013-08-16 01:43:38 -07:00
immarvin 50901d0ac1 update node provision status based on the feedback of nodes instead of rpower/rnetboot 2013-08-16 01:42:53 -07:00
immarvin ef4a931440 update node provision status based on the feedback of nodes instead of rpower/rnetboot 2013-08-16 01:42:10 -07:00
immarvin 8eb4b81c90 update node provision status based on the feedback of nodes instead of rpower/rnetboot 2013-08-16 01:38:09 -07:00
immarvin c507d9a7d1 update the nodelist.status to installing/netbooting via feedback from node during provision 2013-08-16 01:29:08 -07:00
immarvin 1e6f25b395 update the nodelist.status to installing/netbooting via feedback from node during provision 2013-08-16 01:29:08 -07:00
immarvin 6a42e3c11b update the nodelist.status to installing/netbooting via feedback from node during provision 2013-08-16 01:29:08 -07:00
immarvin 4c1c27c753 update the nodelist.status to installing/netbooting via feedback from node during provision 2013-08-16 01:29:08 -07:00
zhaoertao f78ec64c25 The item of updating pre-defined groups for nodes 2013-08-15 23:56:30 -07:00
daniceexi 004e0533f0 Enchancement for drvier injection to initrd: 1. add the updateonly keyword for netdrivers att that only update the existed drivers from new distro update instead of copying all the drivers, this is helpful to reduce the size of new built initrd; 2. the drivers for old kernel will be removed if there's new kernel will be used. And merge the status update commit which checked in by Yang Song from 2.8 2013-08-16 05:55:19 -04:00
immarvin 125fb4d812 update the nodelist.status to installing/netbooting via feedback from node during provision 2013-08-15 22:40:47 -07:00
immarvin b1d5658f5e update the nodelist.status to installing/netbooting via feedback from node during provision 2013-08-15 22:38:32 -07:00
immarvin 7cbc8b1bea update the nodelist.status to installing/netbooting via feedback from node during provision 2013-08-15 22:33:51 -07:00
immarvin 6131921307 update the nodelist.status to installing/netbooting via feedback from node during provision 2013-08-15 22:10:07 -07:00
immarvin 988da99f89 update the nodelist.status to installing/netbooting via feedback from node during provision 2013-08-15 20:31:29 -07:00
immarvin c8ca832460 update the nodelist.status to installing/netbooting via feedback from node during provision 2013-08-15 20:29:27 -07:00
immarvin e918aa27a4 update the nodelist.status to installing/netbooting via feedback from node during provision 2013-08-15 20:27:20 -07:00
immarvin 908508f44c update the nodelist.status to installing/netbooting via feedback from node during provision 2013-08-15 20:24:34 -07:00
immarvin 3cef537a5f update the nodelist.status to installing/netbooting via feedback from node during provision 2013-08-15 20:18:47 -07:00
Jarrod Johnson 1c8bee1e14 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-08-15 11:35:33 -04:00
Jarrod Johnson 433866fb0b Default in user/password in the same way that ipmi works in plugin 2013-08-15 11:35:12 -04:00
lissav a13dc3db50 fix syntax 2013-08-15 07:34:54 -04:00
ligc ac9a21620d Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-08-15 11:00:57 +08:00
lissav 10ecce9fac new man page for xcatconfig -t 2013-08-14 09:54:23 -04:00
lissav f11b298acd setup interface for setting tunables 2013-08-14 09:46:19 -04:00
Jarrod Johnson f8cf3fd1d9 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-08-14 08:58:28 -04:00
Jarrod Johnson fa1b9f924b Correct spelling mistake in xCAT-genesis that got in the way of interface bring up 2013-08-14 08:58:01 -04:00
Bruce Potter 23cb176d27 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-08-13 13:52:56 -04:00
Bruce Potter e14616c4f8 fixed build script to include release in the path for the built rpms 2013-08-13 13:49:29 -04:00
Jarrod Johnson c6608120cb Try to bring up extra interfaces for discovery 2013-08-13 13:28:34 -04:00
lissav 6e5fcf3edd bad code in remoteshell for flowcontrol 2013-08-13 11:49:32 -04:00
Jarrod Johnson 4b506b415a Add support for rinv and faster DDR3 dimms 2013-08-13 10:13:45 -04:00
jjhua 2f352c0b1a Merge commit 'origin/master' 2013-08-13 17:18:54 -04:00
jjhua 1d3d316d05 fixed bug 3718. This fix only checked into xCAT 2.9 2013-08-13 17:13:47 -04:00
Jarrod Johnson 275a19151b Fix ipmi FRU parser to give up once malformed data is encountered 2013-08-12 16:04:08 -04:00
lissav a02372c5cb defect 3731 2013-08-12 13:49:31 -04:00
lissav 9209ba674b Defect 3731 2013-08-12 12:52:25 -04:00
daniceexi ddc5274f50 Add usage message and manpage for geninitrd command; Add --noupdateinitrd flag for nodeset manpage; Make geninitrd to check the provmethod if no image name is specified 2013-08-12 11:18:49 -04:00
xq2005 221caa74ab add comments in anaconda.pm 2013-08-12 02:48:54 -07:00
wanghuaz 0b9b5f957c fixing bug 3721, don't remove the repo from otherpkgdir if the repo is used by other osimage 2013-08-12 14:37:01 +08:00
immarvin 754866a6f5 fix defect 3734 makehosts throw exceptions when node ip is not illegal 2013-08-12 14:37:01 +08:00
Jarrod Johnson 325f887b40 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-08-09 10:31:40 -04:00
Jarrod Johnson 2952f0e907 Do sparse allocation for non-lvm raw format images 2013-08-09 10:30:58 -04:00
wanghuaz ab02c12352 fixing bug 3721, don't remove the repo from otherpkgdir if the repo is used by other osimage 2013-08-09 17:10:36 +08:00
immarvin d5609b9ca8 fix defect 3734 makehosts throw exceptions when node ip is not illegal 2013-08-08 21:32:03 -07:00
Jarrod Johnson 65e1f6f484 Implement vm.storagecache and vm.storageformat
It has been requested to make these tunables available since different storage schemes
can benefit greatly from them
2013-08-08 16:27:04 -04:00
jjhua fcd5f2fc45 fixed bug 3732, centos 5.x needs the url rpository 2013-08-08 14:26:51 -04:00
daniceexi 4139e20fb3 defect 3703: to support command [nodeset <node> osimage] when the provmethod has been set 2013-08-08 12:54:07 -04:00
daniceexi 9650919738 defect 3703: make the configmic and flashmic could get the correct hostname on the host node 2013-08-08 12:52:35 -04:00
ligc c3ebc4ec3b update testcase lsdef_nics 2013-08-08 16:41:06 +08:00
ligc a092441f67 add testcase lsdef --nics 2013-08-08 16:21:03 +08:00
ligc 00861c3455 add test case lsdef_t_h_i 2013-08-08 16:00:49 +08:00
Jarrod Johnson 2aeee72311 Fix for noderange parentheses handling 2013-08-07 17:00:09 -04:00
daniceexi 2810fbea3f defect 3726: for the initrd of sles, the /modules in initrd should symbol link to the new kernel dir if there's new kernel dir 2013-08-07 09:59:54 -04:00
immarvin b868858de3 fix defect 3719 [DEV] rcons fails when nodehm.mgt=kvm 2013-08-07 00:42:39 -07:00
yinqing d6debec1a6 #220993 Can not import node by auto discovery switch and switch port. 2013-08-07 13:40:05 +08:00
yinqing 9ddfd08f24 #221180 There is no mechanism to prevent error message printed in kitimagepostdelete when disassociated kit with the image profile 2013-08-07 11:32:13 +08:00
linggao f6ecd4a68e fixed defect 3729 imgexport does not honor rootimgdir 2013-08-06 20:15:23 -04:00
lissav f18d19a102 Change tabprune and tabdump to use MAXMIN routine 2013-08-06 11:55:54 -04:00
Jarrod Johnson cff10ef530 Correct language in sensor decode 2013-08-06 10:56:57 -04:00
lissav 5fe991bc02 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-08-06 09:43:58 -04:00
lissav 42b5373796 fix bug 2013-08-06 09:43:40 -04:00
immarvin 27747c44fa fix defect 3245 2.8:return value of nodeset does not equal to 0 on ppc64 2013-08-06 00:57:05 -07:00
lissav 38c2e8e06f add MAXMIN routine 2013-08-05 14:17:48 -04:00
Jia Zhao a4f86be2c9 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-08-05 19:01:21 +08:00
Jia Zhao aa83596560 fix noderegenips scalability problem 2013-08-05 19:00:42 +08:00
xq2005 b4578aeabe comment the useless apt repo in full installation on ubuntu 2013-08-05 02:23:59 -07:00
Lei Ai f0c90b3a51 initialize global variables to avoid Cannot re-provision the node which has been removed 2013-08-05 15:11:45 +08:00
xcat ubuntu build machine 67161bdcc7 changes to build-ubunturepo for git repo 2013-08-05 03:04:27 +00:00
lissav 6d1a5a12ea add support to generate mypostscript files 2013-08-02 12:27:07 -04:00
lissav 8591165766 add support to generate mypostscript files 2013-08-02 12:25:16 -04:00
lissav e0e331fc2e add support to generate mypostscript files 2013-08-02 12:22:27 -04:00
xq2005 fd48d12d60 transfer the confignics and configeth to shell 2013-08-02 03:03:26 -07:00
xq2005 9800265c12 start the xcatd on ubuntu/debian when system booting 2013-08-02 01:46:26 -07:00
linggao 9ed91d3a09 document tabdump -n 2013-08-01 12:18:16 -04:00
linggao da34a50431 add support to tabdump -n <#records> for auditlog and eventlog 2013-08-01 11:48:39 -04:00
immarvin 057c5668cb fix defect 3722: replace die with MsgUtils->message and exit 2013-08-01 02:38:34 -07:00
root f0e5505b24 fix defect 3724, makehosts should report error/warning messages when entrys in hosts table are not correct 2013-08-01 00:21:21 -07:00
lissav 03281d9891 Impliment flow control call for getpostscript and getcredentials 2013-07-31 09:29:32 -04:00
daniceexi cc888734aa Change the insert_dd function for handling the initrd hacking. 2013-07-31 06:57:34 -04:00
lissav 6588a4e05f Fix makehosts -h does not display and add makehosts -v (version) 2013-07-30 14:36:44 -04:00
lissav 8947209fd7 Fix for defect 3717 2013-07-29 14:24:45 -04:00
Jarrod Johnson 9ffbe24f64 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-29 14:01:34 -04:00
bp-sawyers 992d5c50ce Update bld script for different git branches
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17034 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-29 15:34:16 +00:00
Jarrod Johnson 39ba905704 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-26 14:31:44 -04:00
bp-sawyers 8098a1b4d7 Updates to build script to build from git
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17031 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-26 18:07:55 +00:00
lissav d9415d6871 fix message part of defect 3718
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17030 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-26 13:32:39 +00:00
simba372 581631e87d 211979: [low rank][PCM4.1][unmanaged node]Failed to create unmanaged node with the length of device name which is less than three letters
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17028 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-26 09:47:17 +00:00
creativezj 14656f2613 re-design node plugin 00kitnodebase
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17026 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-26 09:34:39 +00:00
lissav efbc5003b9 fix syntax error
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17025 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-25 17:38:29 +00:00
jbjohnso d7c4c6e5f9 Fix problem where setting a string that happened to contain the letters 'NULL' somewhere would fail
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17024 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-25 15:14:21 +00:00
Jarrod Johnson d82e567d13 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-25 11:10:41 -04:00
jbjohnso 40a65cc564 Fix problem where xcatd would error on end of stream
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17022 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-25 13:27:37 +00:00
Jarrod Johnson e55dcc8b3e Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-25 09:22:49 -04:00
Jarrod Johnson 725e89bef5 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-25 09:20:32 -04:00
lissav 7fd861742e fix defect 3714
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17021 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-25 11:00:45 +00:00
sjing d331353592 Remove klogd binary since it's not included in mcp 7.3
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17019 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-25 01:37:43 +00:00
jbjohnso 1d733e7911 Add information about IBM backup firmware to rinv
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17017 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-24 18:39:47 +00:00
Jarrod Johnson 66493d480a Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-24 14:34:49 -04:00
Jarrod Johnson a734799fa1 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-24 13:44:53 -04:00
bp-sawyers d755a59421 update xCAT-genesis-builder for mcp build
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17013 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-23 19:37:06 +00:00
Jarrod Johnson 1d217b4d47 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-23 14:31:25 -04:00
lissav be0c38e03b Do not check for config file for Mellanox, no longer needed. Also improve error message
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17012 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-23 13:19:26 +00:00
jjhua 18c8045c66 fixed bug 3706, enabled=0 in the Centos-Base.repo
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17011 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-23 05:27:34 +00:00
lissav 383c35fb49 fix defect 3707
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17010 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-22 17:11:01 +00:00
Jarrod Johnson b3413a47bf Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-22 09:45:17 -04:00
chudegao c55ab672f0 fix#220182,The node is not rebooted automatically while use new image profile during re-installation process
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17008 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-22 06:54:47 +00:00
asirxing d57098c482 Skip to add root relative information into CFM merge files
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17006 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-22 05:55:43 +00:00
jbjohnso cd85ac13c1 Fix problem where name resolution was used instead of certificate subject to identify 'trusted' peer
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17004 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-19 13:26:46 +00:00
Jarrod Johnson 52dff9bf51 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-19 09:22:42 -04:00
jbjohnso db0dd06b3f Fix Client.pm handling of Storable paylod
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17001 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-18 19:16:07 +00:00
Jarrod Johnson 89f2a8fcb5 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-18 15:11:20 -04:00
Jarrod Johnson 0604637110 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-18 14:56:17 -04:00
lissav ea552b5898 fix so output only shows up under updatenode -V
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@17000 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-18 14:14:33 +00:00
lissav 3f6796b1d3 new osimageusercomment not needed
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16999 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-18 11:32:08 +00:00
lissav 04bb21fef7 checked in with garbage on line 4
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16998 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-18 11:28:18 +00:00
jbjohnso e5dd20f15e Clear $1 prior to calling plugins
xcatd now might let $1 leak into the plugins.  Ideally, the downstream code
would check match before relying upon $1 to be undef, but better to
avoid unintuitive behavior.

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16997 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-17 18:59:10 +00:00
Jarrod Johnson c321b3223b Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-17 14:54:14 -04:00
lissav 97db7efd56 defect 3137
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16996 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-17 18:17:27 +00:00
lissav ee1ec2e91f fix defect 3137
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16995 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-17 17:25:39 +00:00
lissav 9e41f13680 don't implement in AIX
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16994 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-17 15:56:08 +00:00
jbjohnso 40f9dee2c6 Fix problem where Client would wait for EOF with storable encoding.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16993 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-17 15:29:26 +00:00
lissav 5801a0db29 fix defect 3137, add -V flag input to xcatdsklspost to be passed as VERBOSE env variable to postscripts
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16992 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-17 15:28:13 +00:00
Jarrod Johnson 8c671750b9 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-17 11:24:35 -04:00
jbjohnso 1f6177a5c6 Have xcatd send client more similar content between xml and non xml
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16991 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-17 15:20:49 +00:00
Jarrod Johnson 367df148be Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-17 11:16:03 -04:00
jbjohnso f468d1a5d3 Remove extraneous use from ipmi plugin
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16990 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-17 14:55:13 +00:00
Jarrod Johnson 31c6ef075e Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-17 10:50:33 -04:00
Jarrod Johnson acc6f2769c Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-17 10:43:03 -04:00
xq2005 9fdebefca8 fix the syntax error
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16989 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-17 14:40:30 +00:00
lissav 437b9348d1 fix defect 3627
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16988 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-17 10:54:05 +00:00
wanghuaz 0602dcfb6d Fixing bug 3697: addkitcomp -a option works with pessl automatically makes a wrong perte/compiler order in postbootscript for diskfull installation. compiler's postinstall script should always run before perte's postbootscripts.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16987 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-17 08:37:45 +00:00
wanghuaz f4e93057b1 fixing bug 3653 on sles and ubuntu.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16985 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-17 03:07:26 +00:00
nott 4e11f026ef add check for sles10 and rh5
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16983 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-16 16:33:33 +00:00
lissav dac3f1ca3f fix for defect 3464
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16981 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-16 11:59:20 +00:00
lissav 63abcb074b fix defect 3521
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16980 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-15 17:16:32 +00:00
jbjohnso 4e4e10d1f8 Rebuild discovery payload every cycle.
Since some things like LLDP data might trickle in, enable gather to
be gathered as it changes.

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16979 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-15 14:09:19 +00:00
Jarrod Johnson 5c82c9606d Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-15 10:04:31 -04:00
Jarrod Johnson 713a3a5408 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-15 09:57:17 -04:00
lissav ae708fa5e2 document sorting the policy table by priority defect 2959
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16978 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-15 12:31:10 +00:00
lissav 4d21c75a7e sort policy table before checking entries
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16977 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-15 12:22:53 +00:00
daniceexi 22290197a7 add the link for new command geninitrd
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16976 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-15 03:06:28 +00:00
daniceexi d36a03cc36 Add the new plugin to handle the geninitrd command that regenerate (hack) initrd for stateful osimage
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16975 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-15 03:05:27 +00:00
daniceexi d18c4b0307 Changed the insert_dd that the kernel will be updated from the new update distro.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16974 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-15 03:04:36 +00:00
bp-sawyers 03fc1d2f34 Improve performance of makeconservercf - bug 3691
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16972 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-13 19:59:15 +00:00
phamt c025c72802 Enlarged division width of bar chart so it could accommodate more data.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16971 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-13 14:10:26 +00:00
phamt b3b29d3c76 Enhanced z/VM resources page with bar chart to show disk pool space.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16970 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-13 13:25:22 +00:00
lissav 4057237b48 put back change do not think it breaks build
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16968 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-12 15:41:28 +00:00
zhaoertao 246b1aaa53 fix bug 3689: Modifying manpage for rspconfig and rscan
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16965 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-12 02:43:46 +00:00
lissav 125b6e006c backup kvm line to fix build
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16960 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-11 16:12:11 +00:00
jbjohnso 785fe50e9f Change bmcsetup to disable cipher suites 0 and 1 in the face of peculiar cipher suite support or enumeration
Also change to enable cipher suites 2 and 3 to facilitate sites without Rijndael

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16957 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-11 14:59:13 +00:00
Jarrod Johnson 6ca8ae5366 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-11 10:54:20 -04:00
Jarrod Johnson 160343bdef Change bmcsetup to disable cipher suites 0 and 1 in the face of peculiar cipher suite support or enumeration
Also change to enable cipher suites 2 and 3 to facilitate sites without Rijndael
2013-07-11 10:53:15 -04:00
nott 5b661a3160 add call to updtvpkg in instoss
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16955 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-11 14:01:12 +00:00
Jarrod Johnson a0e2438e06 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-11 08:45:36 -04:00
wanghuaz bc9aaf6b5b Fixing a problem while adding multiple kits, several data structures are not initialized in last feature checkin. Updated the data structures and did strong UTs today. Open bugs tonight.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16953 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-11 10:05:52 +00:00
daniceexi f485547a4d fixed a typo
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16950 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-11 08:31:04 +00:00
ligc 97473a8b09 fix for bug 3671: use autocommit => 1 instead of autocommit => 0 when opening a table
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16948 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-11 08:18:36 +00:00
zhaoertao c71bc4a320 modify man page for "rspconfig <node> USERID=\*"
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16947 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-11 07:18:42 +00:00
daniceexi 8e7e887e37 fixed the code to display error messages
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16945 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-11 07:02:31 +00:00
daniceexi af1638ce7d two changes: 1. run mount -a anyway to make sure the osimage has been mounted from MN; 2. set the STDIN/STDOUT/STDERR to /dev/null so that mpss start can daemonized cleanly
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16942 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-11 06:44:52 +00:00
daniceexi 12b4fd8975 defect 3685: fixed the source path for link /opt/xcat/share/xcat/cons/mic
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16941 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-11 06:22:02 +00:00
wanghuaz 9c94100609 Fixing a problem on sles that we need to use tar --wildcards option while extracting a file from kit tarball.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16938 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-11 05:22:56 +00:00
xq2005 ba7484e5a1 using nics table when getting vlan ip address
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16934 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-11 02:43:02 +00:00
lissav d12f9bd051 fix defect 3479
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16933 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-10 16:43:02 +00:00
xq2005 bb1a93a385 check the capabilities(CAP_NET_ADMIN) of /usr/bin/qemu-system-x86_64 on debian/ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16932 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-10 09:28:47 +00:00
xq2005 d8ccaf37e8 bug 3679, delete all ib nics' configuration files before configure them
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16931 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-10 09:07:51 +00:00
jjhua 4fa363e910 fixed bug 3682. In some case, the attribute BOOT_IMAGE added into the /proc/cmdline, using another method to get the nex-server value to fix this issue.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16928 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-10 09:07:11 +00:00
wanghuaz 86276afd3b Fixing bug 3643: remove createrepo from buildkit spec and add error check while using it.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16926 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-10 09:05:47 +00:00
wanghuaz c642e22556 Fixing bug 3669: passing envlist to yum upgrade command
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16925 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-10 08:30:39 +00:00
phamt 5ff3e2c42d Enable noderes.primarynic to be specified and used during nodeset.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16922 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-09 21:07:17 +00:00
lissav 7245c20ef8 fix 3668 Ubuntu also
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16921 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-09 16:43:58 +00:00
lissav ba524d3dba fix defect 3668
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16919 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-09 16:35:06 +00:00
phamt f2d4b07d2b Fixed the target disk address to be the same as the source disk address in cloning.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16916 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-09 12:30:20 +00:00
phamt bad07970cf Fixed the target disk address to be the same as the source disk address in cloning.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16915 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-09 12:26:42 +00:00
xq2005 5263081254 ubuntu and debian ship SHA.pm instand of SHA1.pm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16914 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-09 07:21:49 +00:00
xq2005 0db7fd3e4a ubuntu and debian ship SHA.pm instand of SHA1.pm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16913 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-09 07:20:57 +00:00
xq2005 e5e572f940 ubuntu and debian ship SHA.pm instand of SHA1.pm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16912 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-09 07:18:25 +00:00
xq2005 b5f3b1b526 ubuntu and debian ship SHA.pm instand of SHA1.pm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16911 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-09 07:15:39 +00:00
xq2005 4e38b17f76 xHRM support ubuntu/debian
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16910 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-09 06:46:31 +00:00
xq2005 5779f4e927 ubuntu and debian does release SHA.pm instand of SHA1.pm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16909 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-09 03:24:32 +00:00
xq2005 f40260f9cb ubuntu and debian does release SHA.pm instand of SHA1.pm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16908 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-09 03:19:47 +00:00
lissav c1731fec39 fix spelling
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16907 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-08 18:41:42 +00:00
phamt 5d0a2c75b7 Disable IPL column if advanced tab is selected on xCAT-UI z/VM provision page.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16905 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-08 13:14:38 +00:00
xq2005 277eb7cc53 build the ubuntu packages
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16903 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-08 07:15:25 +00:00
wanghuaz 2cf7521735 don't uninstall the packages from osimage with rmkit -f
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16900 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-08 03:09:07 +00:00
qyin 8a1502f0a9 #212726 [PCM4.1][Patch] [Dev to propose fix] The image profile kit plugins are not getting called by pcmimageprofile.pm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16897 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-05 08:36:32 +00:00
xq2005 e54dbe69e4 get the timzone automatic on ubuntu/debian
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16895 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-05 07:10:50 +00:00
daniceexi 8db9e8be80 defect 3673: fix a typo which affects the nodeset next
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16893 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-05 07:09:49 +00:00
xq2005 4bc071aa8d roolback to the last version
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16891 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-05 06:58:05 +00:00
xq2005 01ae96dcb5 xCAT::TableUtils->enablessh in postage.pm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16889 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-05 06:15:07 +00:00
jjhua 7aabf34d76 chef client/workstation installation based on the cfgmgt table
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16887 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-05 03:20:19 +00:00
jjhua 5f35f1d961 add the CFGMGT variable in the template to support the cfgmgt table
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16885 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-05 02:12:42 +00:00
jjhua daf8435663 modifiy the install chef server/client/workstation scripts to support the cfgmgt table
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16884 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-05 02:11:01 +00:00
xq2005 a728938094 add the double quote for --otherpkgdir option in genimage.pm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16882 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-05 01:57:36 +00:00
phamt ef30d13e94 Added option to select IPL device. Added more error handling.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16881 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-04 13:49:23 +00:00
wanghuaz 5881cc4268 Fixed a potential problem with kitcomponent.prerequisite that in some cases prerequisite is not removed from KIT_RMPKGS.otherpkg.pkglist during addkitcomp.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16879 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-04 05:54:04 +00:00
daniceexi 01d68774a2 Make nodeset can pass parameter --noupdateinitrd to mkinstall command
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16878 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-04 05:20:16 +00:00
daniceexi d3f0f4013f Make nodeset can pass parameter --noupdateinitrd to mkinstall command
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16876 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-04 05:10:50 +00:00
daniceexi 57889f408a Enhance of initrd hack: Additional drivers loading from osdistroupdate and support the --noupdateinitrd for nodeset command to avoid the initrd hack
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16874 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-04 05:06:50 +00:00
mellor 425a715d3c defect 3670 - add xcatd reload to post section for xCAT-OpenStack rpm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16871 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-03 15:31:10 +00:00
phamt 0111c1e6c3 Simplified z/VM provision page by abstracting the creation of the user directory entry.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16870 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-03 14:27:36 +00:00
creativezj bb811495cb fix nodeimport same ip error
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16868 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-03 13:42:15 +00:00
jjhua 37c0f9a382 in some of the mlnxofedinstall script from Mellanox OFED iso, there is not --nodeps to uninstall the libibverbs package. But the new pe kits are depended on the libibberbs. So I add the rpm -e --nodeps --allmatches libibverbs in mlnxofed_ib_install to uninstall the libibverbs before invoking the mlnxofedinstall script
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16865 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-03 06:10:51 +00:00
daniceexi 5acfd5a014 To make the mount of /install check to be accurate.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16863 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-03 03:14:03 +00:00
phamt 81b7bb502b Added option under rinv to collect z/VM user profile names.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16862 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-02 20:43:58 +00:00
phamt ba92de3034 Added option under rinv to collect z/VM user profile names.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16861 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-02 20:34:09 +00:00
Jarrod Johnson f317a3e10a Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-07-02 10:00:31 -04:00
leiaibj f7acefece1 Node provision failed after replacing one compute node: We can not call makedhcp twice in a single plugin.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16858 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-02 02:29:09 +00:00
wanghuaz fb6844fb64 Fixing bug 3409, added the handle for postscripts, missing in last checkin.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16857 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-01 10:18:13 +00:00
daniceexi 171c5a189f defect 3660: display the correct message when run nodediscoverdef command defines a request a node which has not correct IP.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16855 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-01 09:11:24 +00:00
xq2005 17d195449a delete needless file for building xcat-openstack
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16853 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-01 08:01:16 +00:00
wanghuaz 9d2b7e46b0 Fixing bug 3659: adjust the file order to work in some specific scenario
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16849 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-01 07:47:11 +00:00
xq2005 07c61eb98c change the source format into 1.0 on ubuntu/debian
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16848 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-01 07:45:14 +00:00
xq2005 a028fabf7f build xCAT-OpenStack in build-ubunturepo
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16846 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-01 07:31:00 +00:00
xq2005 358ba2c411 build xcat-openstack on ubuntu/debian
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16845 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-01 07:28:43 +00:00
ligc 58c5cfaafb undo the last checkin, rerun buildxcat fixed the build failure
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16844 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-01 04:38:27 +00:00
ligc 20383d8ba8 fix the build problem with cons/mic on AIX
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16843 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-01 03:25:11 +00:00
wanghuaz 7e808dc649 fixing several kit related bugs: 3657,3629,3409. the major change is now addkitcomp -a will add its dependency recursively, instead of two levels before. and in each level, it will check if the dependency fits to the osimage. So now user just need to add the highest level of product to osimage, addkitcomp -a will find it dependencies, check them and go to next level based on its kitcomponnent settings in the kit.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16842 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-07-01 02:29:19 +00:00
daniceexi ca435eb5d1 add symbol link from share/xcat/cons/kvm to share/xcat/cons/mic
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16840 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-30 04:40:16 +00:00
daniceexi bbeddd775a Code drop for Xeon Phi (mic) support. The plugin to handle the rpower, rinv, nodeset, rcons commands for mic
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16838 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-30 04:30:33 +00:00
daniceexi 6ab9ab0e29 dir for mic
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16837 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-30 04:29:29 +00:00
daniceexi cc619af68b Code drop for Xeon Phi (mic) support. Run on host to flash the mic
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16836 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-30 04:29:00 +00:00
daniceexi 9bd662e82a Code drop for Xeon Phi (mic) support. Run on host node to configure the mic (network,hostname,onboot,vlog)
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16835 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-30 04:28:19 +00:00
daniceexi 7f3a029049 Code drop for Xeon Phi (mic) support. Add the usage message for mic
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16827 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-30 03:57:28 +00:00
daniceexi 349e081cc0 Code drop for Xeon Phi (mic) support. Add the mic table.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16826 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-30 03:57:13 +00:00
daniceexi abf8941676 Code drop for Xeon Phi (mic) support. Add the rscan to scan mic from x86 host node
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16825 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-30 03:57:00 +00:00
daniceexi 1d9e405667 Code drop for Xeon Phi (mic) support. add the handling of tar format src to call the copytar command
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16824 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-30 03:56:29 +00:00
phamt 536bc94da7 Changed tabs to spaces. Fixed error in xcatconf4z script.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16819 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-28 18:14:52 +00:00
wanghuaz 68e4dd3d70 Fixing bug 3653: with more than 9 new_install_list sessions in otherpkgs.pkglist, perl 'sort' take the integers as string, and so does not sort the order correctly
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16817 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-28 06:27:23 +00:00
Jarrod Johnson 360e76309f Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-06-27 15:09:00 -04:00
jbjohnso 18f0040778 Restore xcatws understanding of existing code
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16815 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-27 19:08:49 +00:00
lissav ba7d622595 Add they are not hierarchical
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16813 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-27 16:52:15 +00:00
phamt d05143bef8 Fixed bug in xCAT-UI where empty inputs are not set as empty values in the policy table.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16810 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-27 15:25:13 +00:00
xq2005 fb95977151 upload the promote tar ball to xcat/<version>.x_Ubuntu/
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16809 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-27 14:43:17 +00:00
lissav 58d0965249 fix defect 3461
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16807 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-27 14:03:26 +00:00
ligc 8a22702ae3 fix for bug 3648: set xCAT::Client::EXITCODE=1 with error communication with the xCAT server seems to have been ended prematurely
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16803 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-27 08:22:50 +00:00
immarvin a9b79e36d2 add discinfo of centos5.9
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16801 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-27 08:14:09 +00:00
bp-sawyers a007fb74c9 Fix check for 2nd arg for xCAT-OpenStack
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16797 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-27 07:01:03 +00:00
zhaoertao b10007be4b delete internal information for rspconfig <celogin1>
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16787 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-27 03:24:46 +00:00
jjhua c448c7f09a accept Bruce's suggestion, not re-copy the hash every time. And it's really more efficient to have an inner foreach that just adds the keys to the hash
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16783 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-27 01:25:45 +00:00
mellor 69b2b419d6 make xCAT-OpenStack arch specific rpm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16782 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 20:45:11 +00:00
Jarrod Johnson 2d905826f8 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-06-26 16:44:40 -04:00
jbjohnso fc16c672ba Fix problem where Ctrl-C didn't work with new payload format
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16781 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 20:42:39 +00:00
bp-sawyers 265308065c update buildcore.sh to build the new xCAT-OpenStack meta rpm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16780 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 20:21:49 +00:00
mellor 8af3b2587d build tool changes for new xCAT-OpenStack rpm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16779 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 18:54:00 +00:00
mellor f87e899c78 files for new xCAT-OpenStack rpm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16778 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 18:52:41 +00:00
lissav 98295e06b1 fix defect 3641
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16775 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 18:09:22 +00:00
mellor 2aefc417d9 add new cfgmgt table to xCAT database
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16772 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 16:13:36 +00:00
jbjohnso 2a998b99d9 Have rvitals avoid requesting the same sensor multiple times
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16770 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 14:33:52 +00:00
Jarrod Johnson 70f8cae983 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-06-26 10:33:22 -04:00
Jarrod Johnson 85237d5126 Fix problem where rvitals could request the same sensor multiple times 2013-06-26 10:32:07 -04:00
Jarrod Johnson 508071d903 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-06-26 09:58:15 -04:00
nott 3e67ba3e19 enhance msgs for cpcosi error
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16768 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 13:51:08 +00:00
chudegao 4998ce006e fix #218490:There is no any case-sensitive checking of mac address when import the node by hostinfo file.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16766 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 09:41:39 +00:00
xq2005 e47c090868 change the Maintainer to xCAT when building genesis base on ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16761 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 07:35:59 +00:00
xq2005 28d9fdd2aa change the Maintainer to xCAT when building packages on ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16760 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 07:34:47 +00:00
jjhua 1e42465195 defect 3605. correct the nodesetstate value.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16757 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 06:58:53 +00:00
xq2005 33127b6f2d for bug 3438 on ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16756 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 06:57:48 +00:00
xq2005 5e70dbce10 upload the GA build on ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16753 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-26 06:09:58 +00:00
lissav 46c918d22d fix defect 3642
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16752 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-25 15:30:35 +00:00
lissav e95b7084b9 fix defect 3642
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16750 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-25 14:56:43 +00:00
xq2005 1fba5dfceb bug 3563, fix the post install script error when install xcat-genesis-base-amd64
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16748 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-25 14:04:33 +00:00
phamt 79c3f3e825 Make IP and hostname optional when configuring the group for the self service page.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16746 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-25 14:00:37 +00:00
xq2005 2ff3e57296 bug 3474 for removing the rpm error message on ubuntu/debian
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16744 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-25 13:51:47 +00:00
jbjohnso 0eecf43a7e Fix problem where dbworkersocket rename could indicate a missing path
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16743 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-25 13:28:52 +00:00
Jarrod Johnson fe9a146b36 Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core 2013-06-25 09:28:42 -04:00
Jarrod Johnson 4eacc008e3 Fix problem where dbworkersocket rename could indicate a missing path 2013-06-25 09:26:52 -04:00
jjhua 9e4450bab0 defect 3605. 1, change ENABLESSHBETWEENNODES= in the template, and add new subroutine TableUtil::enableSSH() 2, change NODESETSTATE= in the mypostscript.tmpl, and invoke the xCAT::SvrUtils->getNodesetStates
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16739 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-25 09:05:00 +00:00
jbjohnso 3dc34ed30d Do the same thing for pscp that I did for psh to avoid perl misbehavior on opening a reference to null glob
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16737 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-24 19:23:57 +00:00
jbjohnso 6c6f16a8f5 Rework sshnode sub to avoid pasing glob by reference since some perls don't seem to like that
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16736 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-24 19:17:16 +00:00
phamt 0f99809daa Added a hypervisor field in the storage table to handle z/VM native SCSI disks. In z/VM native SCSI disks must be configured for one or more hypervisors before they can be used.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16735 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-24 14:24:46 +00:00
lissav 1b47f597b7 fix defect 3642
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16734 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-24 12:57:49 +00:00
chudegao 02836b7287 remove files checked in by mistake
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16732 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-24 10:01:08 +00:00
ligc 2a33d3dcb2 remove README.txt which was checked in accidently
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16731 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-24 09:13:27 +00:00
xq2005 eee22d9c39 find SHA.pm in /usr/lib/perl on ubuntu/debian
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16729 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-24 07:36:06 +00:00
creativezj 0ef86edf17 fix nodeimport generate ip error
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16727 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-24 06:48:40 +00:00
lissav b1d6199c98 add req->{status} to runxcmd for defect 3641
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16726 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-23 10:55:24 +00:00
lissav ce47cdc151 add example of plugin to plugin call
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16723 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-22 11:58:26 +00:00
chudegao 94d469f741 git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16722 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd 2013-06-22 00:24:03 +00:00
jbjohnso 7fb9cdeff5 Fix plurality of pscript variable
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16721 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-21 19:13:03 +00:00
lissav d9e740a251 fix defect 3639
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16720 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-21 17:02:12 +00:00
lissav 56f28c07ab fix defect 3639
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16718 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-21 10:29:37 +00:00
wanghuaz e997e19531 fixing bug 3608: give error msg while kitrepo is not valid for 'buildkit cleanrepo <kitrepo>' command
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16716 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-21 01:20:31 +00:00
lissav 1141f649c0 fix defect 3637
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16714 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-20 13:06:18 +00:00
duowang 399b7f31bb enhanced profilenodes.pm to acquire chain attribute from hardwareprofile and append it to the node
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16710 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-20 04:01:22 +00:00
wanghuaz d329307578 Fixing bug 3636 for error msg outputing
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16708 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-20 03:42:51 +00:00
zhaoertao 28e70dd89d supportting x222 in "rscan cmm"
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16706 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-20 03:22:24 +00:00
linggao 0afc9b9d9d enhance postscrit perfomance when getting monitoring variables. defect 3605
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16704 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-19 20:21:09 +00:00
phamt b6e87461db Changed xcatconf4z logging.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16702 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-19 20:04:58 +00:00
phamt 1b0e64699a Undo some disabled buttons made with last checkin.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16701 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-19 19:27:55 +00:00
bp-sawyers 3f1f14aa94 require xCAT-buildkit so it is installed by default
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16698 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-19 18:59:40 +00:00
phamt cd4f866c6a In imgcapture, added option for specifying device to capture (only s390x). In rmimage, added support to remove provmethod = raw (native SCSI/FCP) images. In imgimport and imgexport, added remote host option to download from a node not managed by xCAT, fixed indentation issues, and added support for provmethod = raw (native SCSI/FCP device image)
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16697 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-19 16:18:42 +00:00
phamt 62761908f2 Added support for capture and deploy of system images for z/VM. This includes capturing ECKD/FBA and native SCSI/FCP devices. Each device is captured and stored as an image (.img) file. Note that mkvm has to be used to create the VM definition and chvm has to be used to add the disks. nodeset is used to put the .img contents onto existing disks.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16696 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-19 16:17:23 +00:00
phamt 9c7b61f341 Updated REST-API to support more xCAT commands and more z/VM options.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16695 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-19 16:16:51 +00:00
phamt 48b710c7cd Fixed bugs in xCAT-UI: fixed spacing issues, set default commands for guest users, set default arch and hypervisor for add z/VM node, and fixed dialog for adding SCSI/FCP device directly using WWPN & LUN.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16694 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-19 16:14:21 +00:00
jbjohnso d9100200e1 Simple implementation of postscripts, put in postscripts table and /install/winpostscripts
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16689 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-19 12:43:34 +00:00
sjing 61a42ec882 add "sysclone" as a valid osimage.provmethod.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16679 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-19 03:35:06 +00:00
wanghuaz 32f4697d67 fixing bug 3179: adding a sleep and reorder the steps
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16677 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-19 03:33:24 +00:00
creativezj 5184e7da2b fix nodeimport generate brocadcast ip or gateway ip
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16675 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-19 02:36:44 +00:00
ligc 1dd791c776 fix for bug 3630: typo with opt_nc and opt_c
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16673 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-19 01:38:02 +00:00
jbjohnso 3e86b5f20c Fix bug in esx.pm where spurious data could find its way into the nicmodel
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16672 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-18 19:34:54 +00:00
jbjohnso 4e16d8fb9f Fix problem where serialized empty list of args manifested differently between xml and storable strategies
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16671 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-18 17:45:17 +00:00
jbjohnso df8fdf3896 Add support for flexdiscover to work with x222 servers
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16670 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-18 17:07:46 +00:00
jbjohnso 5222f25f25 Correct deref in previous commit
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16665 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-18 15:39:56 +00:00
jbjohnso 8dba31f059 Change flexdiscover to separate imm and cmm search
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16664 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-18 15:35:07 +00:00
lissav 5849169891 make /xcatpost a variable so that we can override easily with a debug mode
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16663 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-18 13:51:54 +00:00
jjhua 57da947035 fixed bug 3605
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16661 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-18 09:06:00 +00:00
creativezj 1226f58bc6 fix modify multiple nodes profile error
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16659 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-18 08:22:12 +00:00
sjing 6abbe5c74b bug2830 - use xCAT::TableUtils->get_site_attribute("installdir") instead of gettab.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16658 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-18 08:08:03 +00:00
jjhua ebf7ea4be4 fixed bug 3605, improve the code according to Bruce's suggestion, except xCAT_monitoring::monitorctrl->getNodeConfData()
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16655 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-18 07:41:10 +00:00
creativezj 628e2a6ca5 fix regenerate ip error
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16652 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-18 04:46:29 +00:00
lissav da0ceef6b3 modify limitation on policy table
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16649 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-17 18:15:06 +00:00
jbjohnso 9b0c3f100f Add timeout to psh
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16647 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-17 17:50:35 +00:00
lissav 7d0cb74de6 fix defect 3625
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16646 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-17 17:34:52 +00:00
lissav 428c8f299d fix defect 3625
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16644 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-17 15:58:45 +00:00
lissav c4ac51c87d document non supported fields in policy table
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16641 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-17 12:56:45 +00:00
daniceexi ab6f939e62 defect 3619: backup the req before dispatch to a xCAT module and recover it after the dispatch
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16638 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-15 10:45:29 +00:00
brianfinley 38b5424c5d Captian Grammar fixes spelling -- s/sepcified/specified/g
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16636 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-14 15:45:27 +00:00
jbjohnso 246362ca48 Leave no processes or files behind on exit, allow updatenode to happily exit
Actually retry every interval rather than just endlessly listening

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16635 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-14 14:39:12 +00:00
jbjohnso 25c5f5fc28 Tolerate older bash versions in flowrequest example
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16634 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-14 14:39:06 +00:00
jbjohnso 434739f3a3 Fix problem with getipmicons
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16633 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-14 12:53:14 +00:00
jjhua b855407d64 fixed bug 3569, add #INSTALL_SOURCES# to the storage template file
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16631 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-14 08:17:32 +00:00
xq2005 a079b6c306 makeroutes support on stateless debian/ubuntu nodes
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16630 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-14 07:24:59 +00:00
xq2005 7e10342919 makeroutes support on stateless debian/ubuntu nodes
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16627 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-14 07:01:59 +00:00
lissav d1230bcf16 moved xcatflowrequest to /install/postscripts
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16626 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-13 16:15:11 +00:00
lissav 29e4fa31e7 add flow request
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16625 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-13 16:14:08 +00:00
nott d069bff740 cleanup comment
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16623 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-13 15:15:29 +00:00
nott 9e7a1c8fb4 clarify cleantar option
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16621 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-13 15:10:50 +00:00
nott bdfe498ee7 make cleantar remove ALL tar files
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16619 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-13 14:32:39 +00:00
lissav 87ebb6ae87 removed undocumented/does not work plugin
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16618 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-12 16:30:41 +00:00
lissav b145a34062 checkin for defect 3613
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16617 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-12 13:00:09 +00:00
bp-sawyers 2956839732 remove man pages for tools mkrrbc and mkrrnodes that were removed previously
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16614 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-12 12:29:03 +00:00
daniceexi 43a7d86394 For auto created bmc, add it to hosts.otherinterfaces instead of creating a new entry in the hosts table for bmc individually. That means auto created bmc will not be a individual node.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16612 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-12 02:56:50 +00:00
nott f341aa50ab allow kit location and kit name to be different
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16611 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-11 14:51:54 +00:00
nott 0b44aaa1ad more - better description of kit location
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16608 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-11 14:44:54 +00:00
nott 28a6d78c06 better description of kit location
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16606 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-11 12:55:41 +00:00
lissav f14b1042d3 defect 3613
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16605 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-10 20:02:58 +00:00
lissav 41e538c46d defect 3613
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16604 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-10 20:01:41 +00:00
lissav 1753ea7474 defect 3613
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16603 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-10 20:00:40 +00:00
jbjohnso b4f1b9a6ea Have client default to storable model to reduce XML overhead
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16599 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-10 18:44:17 +00:00
jbjohnso 20b3960c09 Prevent child reapers from trouncing accurate syscall errno settings
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16597 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-10 14:42:25 +00:00
jbjohnso 11e2d1e834 Further prepare xcatd to understand alternate encoding
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16596 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-10 14:42:18 +00:00
daniceexi 73e90f6cd9 added the checking of path for runimage, if cannot download, display an error message for nodeset command
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16594 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-09 09:15:57 +00:00
daniceexi 8ffc45d9cb defect 3612: add one line to handle variable like in the runimage; And added the checking code logic to display error message if wget failed
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16592 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-09 09:13:03 +00:00
daniceexi afa886e729 fix the issue that nodediscoverdef -u -n command cannot move the discovered node to next destiny. And also formatted the indention that replace the tab with four space
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16590 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-08 23:39:06 +00:00
daniceexi 518d0c0b02 Change the code logic that get bmc name from ipmi.bmc instead of using default <node>-bmc. If user uses hostiprange or bmciprange and did not define ipmi.bmc, the default bmc name will be <node>-bmc.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16588 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-08 23:31:28 +00:00
wanghuaz 9ba0cd197e update addkit command according to revision 16568 for kit framework
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16587 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-08 09:29:38 +00:00
ligc faec9945d0 add HAMN scripts cronEdit, activate-mn and deactivate-mn; based on the scripts from John Williams
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16585 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-08 08:34:57 +00:00
sjing 5a18669108 bug 3478 - exclude the net with external namesserver configured from dns zones.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16580 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-08 07:04:09 +00:00
wanghuaz f7f871278c Fixing bug 3610: not add prerequisite to full kit if there is no 'prerequisite' in kit.conf of partial kit
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16579 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-08 05:00:41 +00:00
nott f8bbdf8a97 clarify alt client cleanup
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16575 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-07 17:35:38 +00:00
bp-sawyers 9a42e826b9 Add hfi option to rbootseq man page
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16573 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-07 14:01:19 +00:00
nott cabe21df2c add #'s
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16572 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-07 13:24:04 +00:00
nott e6c93dc100 remove xCAT dependencies
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16570 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-07 13:16:29 +00:00
nott 72f6e3f1b2 add kitloc, create_frameworks, and misc updates
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16568 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-07 13:10:16 +00:00
jbjohnso 7e9a9d09f3 Fix loop after request done, can_read will happily return true even if the client has closed... TODO: perhaps check for client closed explicitly
if we ever feel like doing multiple request scheme

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16566 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-06 17:48:47 +00:00
zhaoertao f79b2850ad adding predefined groups based on hardware types
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16565 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-06 05:24:08 +00:00
immarvin a0f0158e74 if nodetype.provmethod is not set, use install as default value; call rsetboot net to set boot over network for ipmi nodes before rpower
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16563 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-06 03:14:52 +00:00
wanghuaz 12467ecd6c not export buildkit -n option by default.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16561 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-06 00:50:25 +00:00
bp-sawyers fd4a5040ba fix xCATsn install problem running mknb
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16558 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-05 23:04:36 +00:00
bp-sawyers 2bccc85011 stop building i386 version of xcat pkgs
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16556 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-05 21:00:33 +00:00
jbjohnso dc5b18e4ef Have xcatd prepare to accept alternate encoding 'storable'
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16555 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-05 20:58:47 +00:00
nott 0c5c11b541 kitloc and misc updates
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16554 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-05 17:01:28 +00:00
lissav 4d28e9fbe6 fix defect 3603
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16552 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-05 16:26:31 +00:00
jbjohnso c67d9135c1 Accept ECHILD as meaning the same thing as EAGAIN on sysread/syswrite to accomodate seemingly flawed platform behavior
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16548 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-05 13:58:03 +00:00
duowang bcabd11857 modified method gen_new_hostinfo_string() in profilenodes.pm to sort the nodes' name
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16546 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-05 10:34:59 +00:00
wanghuaz 83db9da9b1 code checkin for ordering rpm installation
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16543 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-05 07:28:04 +00:00
jbjohnso e24032c284 Have kvm update vm.memory if chvm is called
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16536 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-04 18:45:33 +00:00
jbjohnso 235e3e9d7f Recognize some common variants on chvm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16535 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-04 18:36:04 +00:00
jwsimpson a9f5a6b396 Updated with comments only
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16533 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-04 17:07:57 +00:00
jwsimpson 9a7b3b91df fixed syntax problem with checking on option -n
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16532 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-04 12:29:22 +00:00
sjing d5f7c77bc1 git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16530 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd 2013-06-04 08:16:38 +00:00
jjhua 427d482261 service node pool supports for sles
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16529 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-04 07:54:52 +00:00
creativezj 0eb9db534b fix multiple nics problem
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16524 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-04 05:46:55 +00:00
lissav 1e30875be2 fix code assumes only XCATSERVER entry in xcatinfo, we have now added NODE
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16523 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-03 15:37:27 +00:00
xq2005 72e4bea17f fix the syntax error
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16521 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-03 08:29:25 +00:00
immarvin 73f7a9322b add code comments
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16520 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-06-01 12:16:35 +00:00
nott 25300a2ef5 add workdir
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16517 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-31 19:50:36 +00:00
nott 8016f03610 add support for workdir and new spec attrs
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16516 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-31 19:23:54 +00:00
nott 4029cba989 add holders for new attrs
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16514 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-31 19:08:03 +00:00
nott 42af8e7112 add new attr descriptions
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16512 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-31 19:03:30 +00:00
lissav c17cce832a remove LInux restricction on precreatemypostscript
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16508 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-31 18:48:12 +00:00
jbjohnso bbfe35a452 Serial console and vdagent support
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16507 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-31 18:47:53 +00:00
lissav a11e9f3242 redesign to match more closely the processing in xcatdsklspost
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16506 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-31 18:36:42 +00:00
lissav edbbcb625b add new lines for array return
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16505 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-31 18:35:23 +00:00
immarvin 2bd59af6a2 fix defect #3463 rinstall does not support provmethod=osimagename
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16502 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-31 10:35:20 +00:00
jjhua 68bf4ad971 for rhels6.x, move the repository generation to pre-script in kickstart
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16500 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-31 08:58:50 +00:00
jjhua cfa71e3f2c service node pool supports for system X rhels6.x
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16499 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-31 08:51:20 +00:00
jjhua 43a3259a69 improve the code for last checkin
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16497 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-31 08:47:19 +00:00
jjhua e4838e2efb service node pool support for system X rhesl6.x
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16496 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-31 08:36:28 +00:00
jjhua 88f35c5e0e service node pool support for system X rhesl6.x
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16495 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-31 08:34:10 +00:00
jbjohnso 22e92e3c05 Try to doubly make sure that buffering and EGAIN doesn't interfere with communication
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16481 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-30 18:58:15 +00:00
jbjohnso d7ddcebef2 Add some chassis status support to rvitals
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16479 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-30 14:47:19 +00:00
lissav 0b7943fe28 get rid of duplicate messages on updatenode -k
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16478 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-30 11:47:39 +00:00
wanghuaz cadca639d8 fixed the problem that xcat failed to replace some system environments if there are mulitple levels of #INCLUDE. we should firstly expand the #INCLUDE and then to replace the system environements
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16476 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-30 09:24:24 +00:00
xq2005 ccfd373fd3 sudoer support on ubuntu/debian
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16474 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-30 09:02:31 +00:00
daniceexi dccddf6428 force to boot from pxe before the reboot in the genesis
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16472 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-30 08:43:38 +00:00
sjing 93511ea70d removed mkfs.btrfs since it's for ubuntu.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16471 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-30 06:58:56 +00:00
sjing e30fbd2b80 use reboot in genesis instead of shutdown
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16469 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-30 06:06:27 +00:00
sjing 7009498b84 Add a check for rsync service to make sure it's running.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16468 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-30 06:04:47 +00:00
amy0701 e78c04591c change rhsn to 23619SN in testcase linux_cn_with_sn_statelite_installation_x86_64_redhat
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16466 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-30 03:19:10 +00:00
amy0701 30285d5f10 add test bundle for x86_64
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16465 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-30 03:07:24 +00:00
jbjohnso 5c8c7c2a4d Fix autoula windows scheme to use the delimiter for mac that windows prefers
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16462 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-29 18:08:08 +00:00
immarvin 01e0c1c6f5 fix defect #3599 syslog-ng is shutting down in sles xCAT MN Edit, enable the settings that will log to local files in syslog-ng
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16457 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-29 12:14:13 +00:00
lissav ae3c564ef0 defect 3596
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16455 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-29 11:35:43 +00:00
lissav 80588e01c8 defect 3596
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16454 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-29 11:34:41 +00:00
lissav 6c293a26e3 defect 3596
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16453 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-29 11:33:53 +00:00
jjhua 257666102d remove the code which passes the into the subvars() in Template.pm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16445 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-29 07:46:27 +00:00
jjhua 58a6b7a28d fixed bug 3598 for PCM Ai Lei, support it for rhels5.9.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16444 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-29 07:44:21 +00:00
jjhua 3f43a9a760 fixed bug 3598 for PCM Ai Lei, support it for rhels5.9.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16443 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-29 07:23:52 +00:00
jjhua 2f8b62530d fixed bug 3598 for PCM Ai Lei, support it for rhels5.9.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16442 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-29 07:22:51 +00:00
asirxing a0f77dc958 Move codes to call makedns and makehosts for kitnoderemove request from 00kitnodebase.pm to profilednodes.pm as other kitnoderemove plugins need the node name for some operations
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16438 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-29 03:47:47 +00:00
jwsimpson 3165c35860 comment changes only to dhcp.pm to help document the code
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16436 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-28 15:30:40 +00:00
jbjohnso 130d2b2494 Add event log cmdlets to powershell
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16435 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-28 15:05:07 +00:00
lissav fb01e8e151 use NODE name defined in /opt/xcat/xcatinfo file, if there
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16433 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-28 13:52:39 +00:00
lissav 03ea26b499 up tablespace of servicenode for DB2 , it is close to the8K limit, if more attributes added we would be over
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16431 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-28 12:27:37 +00:00
lissav 425ec1d0cd remove anaconda.pm.new
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16429 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-28 12:20:48 +00:00
lissav a180201e24 add NODE=<nodename> to kcmdline
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16428 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-28 12:20:12 +00:00
xq2005 970aa52ab3 makeroutes support on debian/ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16421 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-24 09:43:29 +00:00
ligc 1bbe000d21 fix for bug 3593: check_options error with makedhcp -s statements
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16420 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-24 09:23:12 +00:00
xq2005 5f7c88a8b9 change tabs to spaces
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16417 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-24 09:06:45 +00:00
xq2005 ac3633b1b2 routeop support on debian/ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16415 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-24 08:37:11 +00:00
xq2005 cbe902cf22 change tabs to spaces
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16412 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-24 06:20:34 +00:00
lissav 9a3d8b8703 fix for 3591
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16409 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-23 19:07:11 +00:00
zhaoertao 1d89fb6e1b enhancement of "rspconfig noderange USERID=<password>"
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16408 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-23 08:23:21 +00:00
qyin e6fedc6556 fix #215702 nodeimport can import the same host info file for switch auto discovery twice or more
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16405 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-23 07:59:27 +00:00
xq2005 7f3056c15f change the tabs to spaces
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16403 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-23 03:07:25 +00:00
lissav e2e793d864 fix defect 3580/3586
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16401 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-22 18:24:28 +00:00
lissav e11519483c remove unused getNodeSpecAttribs routine
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16396 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-22 17:23:42 +00:00
lissav 1da068a263 improve grep for error
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16395 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-22 17:07:17 +00:00
daniceexi 0147aa233f support the predefined bmc is set in the hosts.otherinterfaces
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16392 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-22 14:57:01 +00:00
lissav 389c3cb193 support long hostnames
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16391 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-22 12:42:02 +00:00
lissav f5ccad350e cleanup tmp files
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16388 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-22 12:39:17 +00:00
zhaoertao 916a05b1cc fix bug 3583: mkhwconn -s cannnot work for firebird in rh mn
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16387 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-22 06:14:45 +00:00
lissav d86b8b8413 remove version 2
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16383 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-21 18:15:42 +00:00
lissav 32cf475cf8 fix getpostscript.pm call (noversion)
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16381 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-21 18:10:56 +00:00
jbjohnso e815ba5ac9 Add some more commands, have powershell recognize the multiple natures of data elements in api
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16380 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-21 14:37:07 +00:00
jbjohnso 398b975563 Fixes and trimming of exported internal function
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16378 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-21 13:50:25 +00:00
jbjohnso 083623ab1b Commit powershell files to windows style line wrap in case of notepad
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16375 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-21 12:56:46 +00:00
jwsimpson 20655afd7b updates to dhcp.pm to fix the problem with plugins calling it without arguements
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16374 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-21 12:22:17 +00:00
xq2005 181dc9ec47 ubuntu provision need the mirror/http/hostname configuration
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16372 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-21 08:26:26 +00:00
sjing 0f7e5d53f0 new otherpkg list for sysclone
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16370 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-21 06:47:34 +00:00
jbjohnso 2071c5945c Try to make powershell module more tolerant of pathing situations
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16369 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-20 21:21:43 +00:00
jbjohnso 0d6b9af866 Fix problem when request did not have adequate arg in dhcp.pm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16367 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-20 17:59:40 +00:00
jbjohnso 38b3d1c46a Fix error in vbscript
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16365 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-20 14:56:01 +00:00
bp-sawyers 973597d493 Add genericrange option to noderange function so we can remove NameRange.pm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16363 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-20 13:12:54 +00:00
lissav ee7d43cc61 Add setup of postgresql
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16361 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-20 11:01:20 +00:00
lissav dd438f5cfa fix defect 3575
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16359 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-18 10:23:43 +00:00
jbjohnso 0b30264d39 Note to future self about tabooseq scope
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16356 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-17 20:55:05 +00:00
phamt a21422aad7 Fixed issue with AutoYast where it expects the FCP channel, WWPN, and LUN to all be in lower-case. Otherwise, AutoYast would not find the SCSI/FCP device.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16355 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-17 20:20:59 +00:00
jbjohnso 784b582b1f Have fixupunattend check the process, user, and system environment space for value before giving up (MS env handling is madness)
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16352 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-17 13:38:45 +00:00
zhaoertao 2a8e95b4e8 the feature:enhancement of rspconfig for blacktip blade
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16349 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-17 09:30:50 +00:00
zhaoertao e3cbfd954f fix bug 3578: "rscan cmm -u|-w" will write information of System p blade into ipmi table
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16347 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-17 02:54:46 +00:00
ligc 2a396bc1fd fix the issue with XCATHOST=ipv6-lla%eth0:3001 and remote xcatd
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16344 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-17 02:38:48 +00:00
jbjohnso b21c3d7a61 Provide hook for OS volume selection
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16343 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 21:03:24 +00:00
jbjohnso 5c3e7c96e7 Should someone decide to switch from generated to static password on vm(s), remove expiry if present
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16341 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 19:52:08 +00:00
jbjohnso 9064aaf24b Remove debug output from Client
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16340 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 18:30:44 +00:00
lissav 99a88822e3 use new interface to makescript
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16337 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 17:07:05 +00:00
lissav c45ed81db3 add check for nofiles and more than one node
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16336 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 16:45:38 +00:00
lissav 43c5246b1a more postage removal
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16334 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 16:04:57 +00:00
lissav 8dde80a13a add info
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16331 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 15:59:24 +00:00
lissav 92091599da remove debug code
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16329 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 15:44:17 +00:00
lissav 86e108ead9 remove comment out call to writescript
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16326 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 14:17:14 +00:00
lissav 6d452dbcd4 remove writescript
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16325 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 14:14:59 +00:00
lissav 62b988207f remove postage xCAT command
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16322 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 14:08:38 +00:00
lissav 748b4ee78c first update for enhance precreatemypostscript handling, more todo
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16321 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 13:56:17 +00:00
jbjohnso cc457b33ee Support LLA with scope index XCATHOST
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16318 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 13:34:41 +00:00
daniceexi 8a98c3f75d add the man page for nodediscoverdef command
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16316 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 13:07:37 +00:00
daniceexi 53ba6a49ef add the manual type of discovery method
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16314 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 08:36:11 +00:00
daniceexi 5b4d1a01d6 add link for nodediscoverdef command
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16313 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 08:26:27 +00:00
daniceexi c8eadb91df add the nodediscoverdef command
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16309 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 08:17:47 +00:00
daniceexi cd4e45e385 filter off several inside attributes from request
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16308 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 08:16:50 +00:00
jjhua c20c72aba9 feature-request#157 Some Improvements to the mlnxofed_ib_install script
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16306 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 07:48:55 +00:00
amy0701 eef51c0af1 add testcase in bundle
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16304 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-16 07:19:54 +00:00
jwsimpson 322fde4ed9 updates to dhcp.pm and makedhcp man page for makedhcp query
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16303 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-15 20:36:34 +00:00
jbjohnso 688aec431a Add very thin support for x222 servers in 'blade.pm', *just* enough to facilitate discovery
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16301 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-15 15:04:39 +00:00
phamt 775339a584 Make IP and hostname inputs optional when configuring the group profile.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16300 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-15 14:20:55 +00:00
phamt 24cfe77966 Fixed bug where the profile conf file is not updated on 1st edit. Fixed error messages in to use double quotes so that variables are interpreted.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16299 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-15 14:10:28 +00:00
jbjohnso 6839048a17 Fix networkutils to work with CIDR again
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16297 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-14 15:28:11 +00:00
jbjohnso 60609b1b24 Fix problem erroneously requiring per-net config in ipv6 case not required in ipv4 case
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16295 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-14 15:13:28 +00:00
jbjohnso 86466c955c Fix problem where default gateway was interpreted oddly in makedhcp ipv6
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16293 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-14 14:50:12 +00:00
amy0701 6684bdab99 add testcase chdef_group_p for defect3574
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16291 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-14 09:29:22 +00:00
ligc 94f876a1cc fix for bug 3574: the blank grptype means static nodegroup
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16289 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-14 07:17:21 +00:00
immarvin 6c19753851 move "dbworker.sock.$$" from "/tmp/xcat" to "/var/run/xcat/" to avoid mis-deletion
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16288 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-14 05:18:56 +00:00
sjing d8c107b54a back port sysclone support
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16285 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-14 02:42:48 +00:00
daniceexi 5b81a7a8ca add comment to support multiple actions for the nodeset state
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16283 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-14 02:41:23 +00:00
sjing d569bfab3d back port sysclone support
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16281 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-14 02:38:07 +00:00
daniceexi b173de4f13 add comment for why the /etc/mtab needs special case
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16277 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-14 02:19:49 +00:00
bp-sawyers 906dbc3015 Fix noderange bug 3572 by switching back to jarrod's bracket noderange fix
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16274 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-14 02:17:41 +00:00
lissav 89e1f04f29 fix defect 3565
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16272 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-13 13:51:44 +00:00
xq2005 fb9501a197 upgrade xcat-genesis-base error on debian/ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16262 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-13 10:31:46 +00:00
xq2005 e6f7ece3d2 Check more directly for location of arp
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16255 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-13 09:07:22 +00:00
xq2005 cae54539ab build perl-xCAT when build xcat package
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16249 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-13 08:03:38 +00:00
sjing 34acc982c3 add SCRIPTNAME into kernel append parameters
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16248 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-13 08:01:45 +00:00
sjing 8d2e4859fc fix unrecognized chars in genesis
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16247 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-13 07:54:44 +00:00
xq2005 7fd4933fe8 lsxcatd -v return error revision on debian/ubuntu(bug 3564)
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16245 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-13 07:52:27 +00:00
sjing ebd1b34f84 change file mod to 755
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16244 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-13 07:48:13 +00:00
bp-sawyers 867e18a67c Fixed some typos in the postscripts descriptions
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16243 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-11 10:09:29 +00:00
nott 79a0dcd3d5 add check for blank file name
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16240 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-10 16:53:00 +00:00
jbjohnso 2bbce57260 Simple implementation of postscripts, put in postscripts table and /install/winpostscripts
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16237 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-10 14:52:44 +00:00
jbjohnso e1a21649ff Check more directly for location of arp (TODO: stop using arp, use ip neigh)
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16234 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-10 13:29:23 +00:00
zhaoertao 58dc034d02 fix bug 3562:"rspconfig cmm USERID=<password>" doesn't update password properly for existing hdwr connection
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16233 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-10 05:27:45 +00:00
lissav 336a1aa2ab do not regenerate hostkeys for xcatconfig -u
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16231 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-09 11:05:24 +00:00
daniceexi 57e42eaccc 3543: fixed the issue that /etc/ cannot be set to tmpfs. It was caused by the /etc/mtab which is a speicfic file which is needed for mount command.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16230 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-09 02:43:30 +00:00
mellor 71eb28ebc6 remove template directory. added by mistake with HPC kit build files.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16226 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-08 20:42:00 +00:00
mellor 473f1e6761 remove HPC kit build files. moved to git repository in GSA
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16223 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-08 20:09:52 +00:00
lissav 686ebdb500 fix for defect 3554 and 3549
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16220 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-08 18:24:32 +00:00
xq2005 5463dcdfa5 arp command location is different between redhat and debian/ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16218 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-08 09:52:30 +00:00
xq2005 b13e95a70b arp command location is different between redhat and debian/ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16216 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-08 09:40:02 +00:00
xq2005 cdb5b59df5 upload the building packages to sourceforge by default
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16214 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-08 08:25:56 +00:00
bp-sawyers b44063e744 fix bug 3429: noderange not expanded correctly for some bracket cases
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16213 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-07 19:28:28 +00:00
ligc 4dc12d61ab backout changes for bug 3429, revision 16190, Bruce will follow up
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16212 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-07 13:10:16 +00:00
zhaoertao 1e59b83e1d fix bug 3552, using mp.id and ipmi.bmc to judge whether it is a x blade.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16210 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-07 10:53:32 +00:00
wanghuaz 2c2079b8bb enable snmp monitoring on AIX
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16208 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-07 08:53:16 +00:00
amy0701 441ba139d4 add noderange testcase into bat.bundle
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16207 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-07 07:58:21 +00:00
daniceexi a7d3d1da21 take back the filter_nodes operation after the fix in Utils::filter_nodes
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16202 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-07 04:44:35 +00:00
daniceexi 6f9e40db93 change filter_nodes subroutine that (renergy relhistogram) goto ipmi.pm and (rspconfig network|textid) goto blade.pm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16201 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-07 04:39:22 +00:00
daniceexi e2c745d9ba only set the groups attribute to default value when it was null
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16199 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-07 04:23:39 +00:00
amy0701 f7ca82b1d1 update testcase noderange_group_intersection and noderange_individual_grp
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16196 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-07 02:38:44 +00:00
daniceexi 90a932fe28 Change the default bmc name to be (node name)-bmc instead of bmc(#)
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16194 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-07 02:25:45 +00:00
linggao 71862fdff0 added openstack grizzly repository for ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16192 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-06 21:02:33 +00:00
jbjohnso 1141b16f3e Attempt to correct dual bracketed noderanges
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16190 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-06 18:01:21 +00:00
jbjohnso 6f69796223 Fix blade to once again work correctly with bladecenter
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16189 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-06 15:26:42 +00:00
jbjohnso 8ae4adb75c Fix problem when staticv6 failed to adequately space out a comment
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16185 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-06 14:03:06 +00:00
zhaoertao f0bfee65d2 fix bug 3552 rpower/rinv getting incorrect password with Blacktip flex blade check password tables
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16184 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-06 09:39:48 +00:00
jbjohnso ec6325f1f7 Rely upon storage detection code in ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16182 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-03 21:07:31 +00:00
jbjohnso f1e4a15d4e Fixes for ubuntu enhancements
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16181 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-03 21:06:54 +00:00
jbjohnso 12bad57506 Stop filtering out on ITEs renergy for now as well as rspconfig...
Have rspconfig do textid

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16178 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-03 20:34:03 +00:00
jbjohnso b502edec67 Have detectnic write out to preseed.cfg file, which seems to take better
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16177 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-03 18:36:36 +00:00
phamt e39d942d9c Fixed issue in user table so it parses the policy table correctly. Changed the order of the refresh button in the self-service cnfigure page.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16176 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-03 15:02:06 +00:00
jbjohnso 54909beda7 Have nic detection happen sooner
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16174 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-03 14:06:33 +00:00
xyye 37a76708f1 remove makedhcp command for adding the unmanagement node
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16173 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-03 05:58:59 +00:00
phamt 14b475f74e Removed code that adds the any node to the "all" group.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16170 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-02 21:56:53 +00:00
phamt 4f10fd671a Fixed table ID used when shutdown button is clicked.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16169 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-02 21:44:21 +00:00
phamt 4c2f445b0a Disabled SELinux in default kickstart template. Added check in rpower softoff to check if node is pingable, if not proceed to shutdown instead of waiting. Rearranged buttons on action bar in self-service page. Added shutdown button in nodes page to shutdown node gracefully.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16168 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-02 21:24:26 +00:00
jbjohnso fd95ac4c80 Quiet down ubuntu kernel
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16167 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-02 19:27:19 +00:00
bp-sawyers f8261cf6ad added help back to mktoolscenter
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16165 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-02 19:07:18 +00:00
jbjohnso 1023dbc6f7 Have debian no longer require setting of noderes.nfsserver
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16163 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-02 18:27:41 +00:00
bp-sawyers 4669c26b02 Updated the node discovery man pages
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16161 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-02 16:41:18 +00:00
billwajda 1f1430f074 added NM_CONTROLLED=no for configib and configeth and changed BOOTPROTO=none for redhat in both files for bug 3499
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16160 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-02 15:01:28 +00:00
lissav 3713a0de0b fix defect 3477 PCM
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16159 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-02 11:29:30 +00:00
jbjohnso ff434f5822 Add storage detection logic to debian deploy
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16155 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-01 21:00:28 +00:00
jbjohnso 0d857ceabf Have debian support support BOOTIF autodetection
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16152 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-01 19:10:46 +00:00
jbjohnso 1ec86928e6 Fix from Shadd Gallegos on mktoolscenter
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16150 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-01 18:18:32 +00:00
phamt 36a7a4486c Fixed how MAC address prefix is obtained by using VMCP Q VMLAN instead of using VMCP Q V NIC. VMCP Q VMLAN is more accurate for z/VM 6.2 SSI clusters.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16149 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-01 17:16:28 +00:00
lissav 71b56b9ed3 on updatenode call xcatdsklspost adds NODE with the nodes database name to the /opt/xcat/xcatinfo file
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16148 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-01 16:40:12 +00:00
lissav 0f2a45f436 add export NODE=nodename; to thexdsh precommand so the node knows it's name as defined in the database
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16147 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-01 16:12:32 +00:00
phamt fc05b61ce0 Changed rpower off to use Image_Deactivate with IMMED flag because without the flag, sometimes the VM would not power off correctly.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16146 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-05-01 14:26:45 +00:00
jbjohnso 715e42d86c Actually fix LVM with 6.4
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16144 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-30 19:48:57 +00:00
jbjohnso f8d8231255 Remove senseless indication of primarynic in ubuntu template, this file isn't even read until network is already up
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16142 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-30 19:32:05 +00:00
jbjohnso ac4206007d Fix problem with certain versions of libvirt and lvm storage
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16139 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-30 19:27:58 +00:00
jbjohnso f96b7b59fa Fix problem where ubuntu needlessly mandates noderes.primarynic in one place, one to go
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16137 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-30 19:11:02 +00:00
jbjohnso 5dab441718 Fix problem with esxi detection of image template availability
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16135 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-30 18:52:56 +00:00
mellor 121d3de03b defect 3546 add kit framework info to kit.conf files
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16133 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-30 18:39:19 +00:00
jbjohnso c0fdce99e0 Fix a problem where partition recipe was incorrectly written out
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16130 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-30 17:41:37 +00:00
mellor d2ea7c3b54 defect 3505 - fix manpage typos
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16129 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-30 13:09:30 +00:00
linggao d628976bd4 fixed a defect #3543 running confignics has authority issues on statelite nfs_based cn
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16127 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-29 20:27:22 +00:00
jbjohnso ab25897d4e Fix problem where makedns suddenly required hosts table
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16125 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-29 18:04:21 +00:00
phamt 0bf672f284 Changed nodeset tab to accept osimage argument. Allow z/VM identities to be specified in directory entry. Allow an admin username to log into the main xCAT UI.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16123 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-29 17:13:20 +00:00
phamt 37307c1058 Fixed how broadcast address is calculated using IP and netmask, instead of relying on ifcfg file.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16122 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-29 16:59:46 +00:00
phamt 272b5fb0eb Simplified selection of user types when creating an xCAT user from the UI.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16121 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-29 15:37:23 +00:00
phamt 42fa7a7ef1 Fixed bug in how jQuery dialogs are closed. If you use dialog('close'), it will only hide the dialog. But if you use dialog('destroy').remove(), the entire dialog will be removed from the page.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16120 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-29 15:08:10 +00:00
daniceexi 29af0d1043 change the shift to get the blade server bay from 24 to 18, this may caused by the firmware update
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16119 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-28 09:00:09 +00:00
zhaoertao e3d0fb9c9e fix bug 3536 rscan cmm -z for Blacktip blades has wrong hwtype=xblade and missing cons
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16117 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-28 06:28:55 +00:00
xyye 7839592fbc make dns and dhcp after adding unmanagement node in profilenodes.pm
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16115 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-28 06:07:08 +00:00
qyin 8067ecb0e1 fix 215709 nodeimport can use host info file mixed with switch , switchport and mac address
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16111 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-28 05:49:39 +00:00
sjing 55e71dcde5 fix for bug 3542 - duplicated script name for efibootmgr, so changed it to configefi.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16109 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-28 02:47:58 +00:00
sjing a478ed4eb4 fix for bug 3542 - duplicated script name for efibootmgr, so changed it to configefi.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16107 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-28 02:40:53 +00:00
daniceexi 7b70df4161 run localdisk in stateless
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16106 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-27 08:04:47 +00:00
daniceexi a8a4a10263 move the localdisk mount point creating to genimage
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16105 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-27 08:03:10 +00:00
daniceexi 337c515d02 change the mount point of localdisk
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16104 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-27 08:01:13 +00:00
daniceexi 1ccb22b56a Make localdisk script do mount for stateless node. Add log to node:/.sllocal/log/
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16103 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-27 07:55:28 +00:00
daniceexi c2dcbfc537 create localdisk directories during genimage
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16102 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-27 07:52:30 +00:00
daniceexi 390f7693b9 support localdisk to run on stateless
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16101 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-27 07:50:49 +00:00
daniceexi 52d1725a0c Change the kernel parameter name which passed to localdisk script to indicate the action
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16100 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-27 07:46:54 +00:00
daniceexi d19f601dec Change the kernel parameter name which passed to localdisk script to indicate the action
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16099 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-27 07:44:56 +00:00
ligc eab43f0f39 fix for bug 3533: rnetboot hang for Power5 servers
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16097 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-27 07:23:42 +00:00
sjing 2cd7e5aaa4 Fix for bug 3538 - sometimes stopsrc -s named takes a longer time to take effect.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16095 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-27 06:11:49 +00:00
qyin 8cf5c6de87 #215407 Typo in man page: nodeimport
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16093 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-27 05:46:44 +00:00
zhaoertao 72993ed022 fix bug 3531: New CMM firmware is adding node # ( textid ) wrapper around textd - breaks rscan -u
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16091 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-27 02:38:46 +00:00
willn256 ce0fe877db Make sample kit plugin modules end with 1; and fix buildkit to rename kit plugin files correctly
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16088 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-26 22:28:33 +00:00
phamt a21935e9c7 Enabled multiple volumes to be removed. Allowed delete button to delete using noderm instead of rmvm if checked.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16085 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-26 20:19:37 +00:00
jbjohnso 315a7a3c4a Change nextdestiny to use system context rather than nebulous user context in powershell
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16084 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-26 20:15:27 +00:00
jbjohnso 9e9000d609 Make local system work and also clean out messages
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16082 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-26 19:55:24 +00:00
jbjohnso 30d67b4813 Modify xCAT powershell module to:
-Support it's own per-user cert store
-Use more capable .Net x509 management functions
-Work with lower .net requirement

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16081 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-26 19:55:13 +00:00
phamt 51e03a7c4d Synched up with changes in 2.8 branch.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16078 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-26 19:03:55 +00:00
jbjohnso 90f638f3b2 Fix breakage where recent changes broke nodeset shell and friends
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16076 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-26 14:10:58 +00:00
jbjohnso 248569fa64 Fix issues with bmcsetup
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16075 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-26 14:10:47 +00:00
lissav 1b87913d30 put rsh/rcp deprecated in comments
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16072 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-26 11:28:58 +00:00
jjhua c8a4383e9d fixed bug 3354
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16069 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-26 02:16:18 +00:00
daniceexi feb65fcb64 defect 3520: fixed a typo that using - replace =
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16068 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-26 02:15:52 +00:00
wanghuaz e78b7a27f6 Check if the deploy parameter is used by other kitcomponent that is not in the same kit
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16064 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-25 12:56:34 +00:00
immarvin 775941db70 support for addkcmdline of osimage. According to the design, the linuximage:addkcmdline should be appended to kernel arguments of the nodes after "nodeset osimage=".
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16062 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-25 12:07:48 +00:00
sjing 34a90f1e78 fix for bug 3526 - remove litetree.table from inst_root for the update.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16061 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-25 07:56:59 +00:00
bp-sawyers 59af92bb8f document the --nonodecheck flag of psh
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16059 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-24 20:13:39 +00:00
daniceexi 58f0ffc4f1 defect 3346: support that the argument of nodeset could be multiple actions which separated with ,; e.g. runimage=xxx,osimage=xxx
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16058 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-24 13:03:26 +00:00
immarvin 1d13b5c300 1. fill in the proper value in /etc/sysconfig/clock and set the timezone of the stateless/statelite node with site:timezone
2. copy libnss_files.so.2 from directory lib(for 32bit system) or lib64(for 64 bit system) into initrd 


git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16057 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-24 08:33:48 +00:00
jjhua ca67d14658 fixed bug 3490.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16055 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-24 08:05:01 +00:00
jjhua c362fa3bc7 fixed bug 3490.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16054 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-24 08:02:36 +00:00
jjhua 226c907bbd fixed the bug 3490. put the insserv message into /dev/null
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16052 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-24 07:57:20 +00:00
linggao 6c4ed80d83 added --dryrun flag for genimage
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16049 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-23 19:16:55 +00:00
mellor 0b1d186caf rebuild gpfs kitcomponents to not include gpfs.src and gpfs.libsrc rpms
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16047 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-23 19:09:08 +00:00
lissav 31fc76401d fix defect 3512
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16044 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-23 18:26:50 +00:00
lissav 8421c4bcba fix defect 3517
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16043 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-23 14:35:55 +00:00
lissav f643ea5156 fix defect 3517
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16042 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-23 14:29:48 +00:00
daniceexi a868d2358c defect 3516: fixed the typo to handle the getnextdestiny result
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16039 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-23 08:19:42 +00:00
xq2005 e5a4cc7075 fix the SHA1.pm miss problem on ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16037 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-23 02:30:55 +00:00
mellor 7546f8ab98 rebuild teal kits to only include kitcomponents for base,ib,syslog
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16036 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-22 20:19:06 +00:00
jbjohnso 4f2d1153b1 If lzma is older than gzip genesis, prefer newer
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16033 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-22 19:18:34 +00:00
jbjohnso 6fe6d9d9c8 Have ddns.pm call the code that hosts plugin uses to support extra interfaces
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16031 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-22 19:03:07 +00:00
yinle 2151ea5130 support lsslp -s CMM match hostname with switch table.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16030 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-22 10:13:45 +00:00
jjhua 19a7849178 fixed one minor issue
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16028 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-22 07:11:24 +00:00
jjhua c3e9663bf0 remove the xcat-otherpkgs*repo from ospkgs script
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16027 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-22 06:30:18 +00:00
daniceexi adf9297047 Fixed the method to receive http payload with chunk format
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16024 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-19 14:02:10 +00:00
xq2005 370376f043 start ttyS0 for stateless boot on debian/ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16021 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-19 12:23:49 +00:00
wanghuaz d64e320ce1 remove teal-gpfs and teal-gpfs-sn
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16020 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-19 11:28:13 +00:00
wanghuaz 85f1c3e9b0 remove teal-gpfs and teal-gpfs-sn
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16019 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-19 11:27:00 +00:00
jjhua 27b0f260e6 fixed bug 3513
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16016 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-19 05:56:33 +00:00
nott eacba49833 add clroptionvars
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16015 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-18 15:54:48 +00:00
jbjohnso c40b974182 Fix problem where KMS key not being used as default
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16013 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-17 18:38:22 +00:00
jwsimpson 3375666c53 Update rpower usage with onstandby and sms
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16012 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-17 15:10:41 +00:00
mellor 7b85d31579 defect 3508 - change teal kitcomponent names to avoid conflicts with product rpms
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16009 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-17 14:11:27 +00:00
jbjohnso 6f21c19ba0 Fix openssl template for 'server' to also allowed to be a 'client' to restore hierarchy
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16006 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-17 13:53:38 +00:00
jjhua 75f98c010e fixed the bug when updatenode on ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16004 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-17 08:18:12 +00:00
zhaoertao 7ec6aaf2ee fix bug 3502 rspconfig support for USERID=<password> for CMM in genesis case
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16003 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-17 07:21:28 +00:00
qyin 233b2bf351 solution:215058 enable switch auto discovery for PCM
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15999 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-17 07:06:57 +00:00
jjhua a2247f0170 fixed bug 3506, at the beginning of the ospkgs/otherpkgs, only remove the repos which are created by xCAT.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15998 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-17 07:05:21 +00:00
daniceexi 439985c34d Add the help for flex and iDataplex support for renergy command
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15995 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-17 06:55:47 +00:00
xq2005 0d716b5691 use defined suborutine on hash object import warning message
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15992 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-17 06:38:42 +00:00
phamt 16b23e8045 Fixed bug in event log page, where the wrong option flag is specified for the destination directory.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15991 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-16 19:38:11 +00:00
mellor e61f74a602 set PE env var for kit build
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15990 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-16 18:24:44 +00:00
mellor cf032d05d6 update PE env vars and added other PE kit files to make this dir complete
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15989 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-16 18:19:35 +00:00
phamt 79cf47513e Enabled disk and zFCP pool tables to be generated even if no disk or zFCP pools exit.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15986 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-16 17:49:43 +00:00
mellor d8cf8fa312 defect 3482 - fix find wildcarding
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15985 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-16 15:17:49 +00:00
mellor b3c503a8d0 defect 3503 - remove duplicates and sort output of lskmodules
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15983 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-16 13:20:46 +00:00
jjhua f4acade014 only remove the repositories which were created by xCAT for sles
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15978 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-16 05:36:05 +00:00
ligc e8edeca80c fix for bug 3476: set @::finalTypeList based on both CLI and FILEATTR
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15977 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-16 02:48:38 +00:00
lissav 3f51657eef fix 3477
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15973 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-15 12:28:46 +00:00
xq2005 ac38b17a5a support pgsql on debian/ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15971 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-15 07:10:48 +00:00
ligc 7f60027aa1 fix for bug 3496: disable SELinux on RHEL, check rc problem
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15969 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-15 04:53:04 +00:00
daniceexi 97c4aef241 Change how to get the bmc for a predefined node
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15965 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-12 08:10:25 +00:00
daniceexi 3faab403aa Update the code that get the correct switch infor for the install nic
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15964 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-12 08:09:37 +00:00
daniceexi 9d73e3a4fb Change the collaboration with sequential discovery for the output of nodediscover* message
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15963 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-12 08:08:17 +00:00
linggao 61eacdadad modified puppet kit version
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15961 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-11 20:32:06 +00:00
jbjohnso 34f0ece400 Fix problem where hot takeover failed to completely kill off discovery worker
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15960 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-11 20:15:00 +00:00
jbjohnso 4817dfbe26 Fix unclean shutdown induced by discovery worker
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15959 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-11 19:46:48 +00:00
jbjohnso d3adad02ee Fix discovery in worker
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15958 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-11 19:37:23 +00:00
jbjohnso 7d7bfb00b4 Break discovery out to it's own worker
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15957 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-11 19:36:45 +00:00
jbjohnso f54c5dfb36 Remove debug output from wcons
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15956 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-11 18:01:58 +00:00
jbjohnso 47f73b0569 Have wcons not call nodels as a subprocess
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15955 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-11 18:01:45 +00:00
jbjohnso 39d6a2e0d4 start fixing wcons
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15954 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-11 18:01:37 +00:00
nott 6de92a9ef1 remove use of global variable DELNODE
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15950 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-11 14:18:08 +00:00
daniceexi 08c3c1cefc Add cappingGmin support
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15948 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-11 04:22:34 +00:00
daniceexi 607ef66ea8 Add cappingstatus support and support the capping setting for double wide blade
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15945 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-11 03:15:27 +00:00
jbjohnso 75159bbfea Fix problem where psh -f would go more than requested
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15942 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 21:01:09 +00:00
bp-sawyers eae50e0deb fix syntax errors in nodediscoverls and nodediscoverstart pod pages
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15940 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 20:50:31 +00:00
mellor cf581571a2 add arch and other attrs to full kitname
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15939 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 19:40:11 +00:00
lissav 0eff1909de fix defect 3483
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15937 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 15:55:06 +00:00
amy0701 adbb9d5609 spelling mistake for Script_Post make script_post fail to work
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15932 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 11:34:17 +00:00
jjhua cb445f14ec remove the debug flag
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15930 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 09:33:56 +00:00
jjhua ffe3068f8c add some code to make the config_chef_server work during post boot period
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15928 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 09:32:49 +00:00
jjhua 5b09fc7b4b add the rpm version to the kit version # and the kitcomponet version #
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15926 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 09:29:45 +00:00
jjhua 7b6e031df2 1. modifies some comments 2. add the rpm post scripts
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15925 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 09:28:56 +00:00
sjing ab76120c96 use genesis kernel/initrd for sysclone.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15921 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 06:36:22 +00:00
wanghuaz 40fe923477 Updated lskit to 'SEE ALSO' section in manpage of addkit/rmkit/addkitcomp/rmkitcomp/chkkitcomp
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15920 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 06:36:09 +00:00
sjing 0fd3f77e32 use genesis kernel/initrd for sysclone.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15919 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 06:35:36 +00:00
sjing 87f87fe85f use genesis kernel/initrd for sysclone.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15918 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 06:28:16 +00:00
sjing 996e2e9741 use genesis kernel/initrd for sysclone.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15917 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 06:23:55 +00:00
sjing afdd5ef8a7 use genesis kernel/initrd for sysclone.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15916 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 06:18:46 +00:00
sjing 73c2949cee use genesis kernel/initrd
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15915 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 06:07:38 +00:00
sjing 90ba6dba21 use genesis kernel/initrd
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15914 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 06:00:42 +00:00
yinle 1242f4c912 fix bug 3462 no any output executing lsslp --flexdiscover. Remove man information of --flexdiscover.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15913 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 03:06:33 +00:00
yinle 2740e8a6ec fix bug 3462 no any output executing lsslp --flexdiscover. Remove man information of --flexdiscover.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15912 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 03:03:16 +00:00
mellor ca78a2dc38 defect 3465 ppedev 1.2.0-2 kits
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15908 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-10 02:31:17 +00:00
jbjohnso 876fa7df69 Add support for external DNS and DHCP servers
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15906 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 20:21:02 +00:00
lissav 57cbc0c372 fix defect 3477
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15904 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 18:23:51 +00:00
jbjohnso 9c368aaf55 Add a bash+awk variant of a flow request
stil need powershell and python (esxi)

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15903 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 18:16:38 +00:00
jbjohnso 29efa2321b Add a src file for xcatflowrequest
-Tried bash /dev/udp and read built-in.  This causes single byte read() calls (see zread.c in bash source)
-Tried gawk.  No concept of a timeout and getline never did return the data right...

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15902 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 17:30:51 +00:00
mellor 361c5e5665 defect 3474 - fix parsing of rpm names for kitpkgdeps
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15901 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 13:11:19 +00:00
daniceexi af8cf07ece Update the man page for sequential discovery support
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15897 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 12:00:20 +00:00
wanghuaz ecd3fbc5ba Removed the sample perl modules
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15896 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 11:27:01 +00:00
wanghuaz 869e5948f6 Removed the sample perl modules
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15895 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 11:25:23 +00:00
wanghuaz a94d088a91 Checkin the partial-teal kit source files
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15893 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 09:00:59 +00:00
ligc 6d4cc3f97d fix for bug 3454: handle the object name like fd59::/64
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15892 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 08:20:15 +00:00
jjhua f3fc6a7f25 remove the -vx
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15889 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 08:02:43 +00:00
jjhua a18693ec9f make it work during postboot period
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15888 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 08:02:15 +00:00
yinle ac252f7f83 Continue to fix bug 3428 lsslp -n does not check xCAT DB properly for current objects, support using mtms to match cmm.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15887 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 07:13:18 +00:00
immarvin 21df7c201c replace nfs-utils with nfs-kernel-server in sles11 pkglist
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15885 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 06:45:27 +00:00
ligc 6985f95b28 fix for bug 3353: remove lsvpd and busybox-anaconda
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15883 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-09 06:31:17 +00:00
jbjohnso 033b6706b7 Fix problems with IPv6-ification of the UDP service
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15881 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-08 20:36:14 +00:00
jbjohnso f2de7ef12e Fix problem where tc grants always were sent to the last peer to send traffic
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15880 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-08 17:37:15 +00:00
jbjohnso 27459a2869 Fix issue where TC requests would be remembered not at all and then forever
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15879 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-08 17:37:10 +00:00
jbjohnso 15d0a15364 Fix output to have a newline in packet
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15878 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-08 17:37:05 +00:00
jbjohnso 4204e9070e Implement udp request (but no reply yet)
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15877 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-08 17:36:57 +00:00
jbjohnso b9e587e703 Step one of traffic control, have SSL inform UDP process of current client count
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15876 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2013-04-08 17:36:51 +00:00
821 changed files with 62123 additions and 47016 deletions
-241
View File
@@ -1,241 +0,0 @@
#!/bin/sh
# Update GSA Ubuntu Repositories or create a local repository
#
# Author: Leonardo Tonetto (tonetto@linux.vnet.ibm.com)
# Revisor: Arif Ali (aali@ocf.co.uk)
#
# After running this script, add the following line to
# /etc/apt/sources.list for local repository
# deb file://<core_repo_path>/xcat-core/ maverick main
# deb file://<dep_repo_path>/xcat-dep/ maverick main
#
# For the purpose of getting the distribution name
# Supported distributions
dists="squeeze"
a_flag= # automatic flag - only update if repo was updated
c_flag= # xcat-core (trunk-delvel) path
d_flag= # xcat-dep (trunk) path
local_flag= # build the repository localy
while getopts 'c:d:u:p:l:a' OPTION
do
case $OPTION in
c) c_flag=1
xcat_core_path="$OPTARG"
;;
d) d_flag=1
xcat_dep_path="$OPTARG"
;;
l) local_flag=1
local_repo_path="$OPTARG"
;;
a) a_flag=1
;;
?) printf "Usage: %s -c <core_trunk_path> [-d <dep_trunk_path>] -l <local-repo_path> [-a]\n" $(basename $0) >&2
echo "-a Automatic: update only if there's any update on repo"
exit 2
;;
esac
done
shift $(($OPTIND - 1))
if [ -z "$c_flag" -a -z "$d_flag" ]
then
printf "Usage: %s -c <core_trunk_path> [-d <dep_trunk_path>] { -l <local-repo_path> | [-u <gsa_id> -p <gsa_passwd>] } [-a]\n" $(basename $0) >&2
echo "-a Automatic: update only if there's any update on repo"
exit 2
fi
if [ ! -d $xcat_core_path ]
then
printf "%s: No such directory\n" "$xcat_core_path" >&2
exit 2
fi
if [ "$d_flag" ]
then
if [ ! -d $xcat_dep_path ]
then
printf "%s: No such directory\n" "$xcat_dep_path" >&2
exit 2
fi
fi
if [ "$local_flag" ]
then
repo_xcat_core_path=$local_repo_path"/xcat-core"
repo_xcat_dep_path=$local_repo_path"/xcat-dep"
else
printf "Usage: %s -c <core_trunk_path> [-d <dep_trunk_path>] -l <local-repo_path> [-a]\n" $(basename $0) >&2
echo "-a Automatic: update only if there's any update on repo"
exit 2
fi
if [ "$a_flag" ]
then
touch svcupdate.trace
SVCUP='svcupdate.trace'
svn update $xcat_core_path 1> $SVCUP 2>&1
if ! grep 'Tree is up to date' $SVCUP
then
update_core=1
else
update_core=
fi
rm -f $SVCUP
else
update_core=1
fi
if [ "$c_flag" -a "$update_core" ]
then
echo "###############################"
echo "# Building xcat-core packages #"
echo "###############################"
CMD_PATH=`pwd`
cd $xcat_core_path
./build-debs-all "snap" "Nightly_Builds"
echo "#################################"
echo "# Creating xcat-core repository #"
echo "#################################"
if [ -d $repo_xcat_core_path ]; then
rm -rf $repo_xcat_core_path
fi
mkdir -p $repo_xcat_core_path/conf
find . -iname '*.deb' -exec mv {} $repo_xcat_core_path \;
rm -rf debs/
cd $CMD_PATH
rm -rf $repo_xcat_core_path/conf/distributions
for dist in $dists; do
cat << __EOF__ >> $repo_xcat_core_path/conf/distributions
Origin: xCAT internal repository
Label: xcat-core bazaar repository
Codename: $dist
Architectures: amd64
Components: main
Description: Repository automatically genereted conf
__EOF__
done
cat << __EOF__ > $repo_xcat_core_path/conf/options
verbose
basedir .
__EOF__
for dist in $dists; do
for file in `ls $repo_xcat_core_path/*.deb`; do
reprepro -b $repo_xcat_core_path includedeb $dist $file;
done
done
mv $xcat_core_path/latest_version $repo_xcat_core_path/xcat-core_latest-build
cat << '__EOF__' > $repo_xcat_core_path/mklocalrepo.sh
codename=`lsb_release -a 2>null | grep Codename | awk '{print $2}'`
cd `dirname $0`
echo deb file://"`pwd`" $codename main > /etc/apt/sources.list.d/xcat-core.list
__EOF__
chmod 775 $repo_xcat_core_path/mklocalrepo.sh
rm -rf $repo_xcat_core_path/*.deb
if [ -z "$local_flag" ]
then
echo "###############################"
echo "# Updating GSA xcat-core repo #"
echo "###############################"
lftp -e "mirror -R --delete-first $repo_xcat_core_path /projects/i/ipl-xcat/ubuntu/; exit;" -u $gsa_id,$gsa_passwd -p 22 sftp://ausgsa.ibm.com
fi ### if [ -z "$local_flag" ]
fi ### if [ "$a_flag" ]
if [ "$a_flag" -a "$d_flag" ]
then
touch svcupdate.trace
SVCUP='svcupdate.trace'
svn update $xcat_dep_path 1> $SVCUP 2>&1
if ! grep 'Tree is up to date' $SVCUP
then
update_dep=1
else
update_dep=
fi
rm -f $SVCUP
else
update_dep=1
fi
if [ "$d_flag" -a "$update_dep" ]
then
echo "##############################"
echo "# Building xcat-dep packages #"
echo "##############################"
CMD_PATH=`pwd`
cd $xcat_dep_path
./build-debs-all "snap" "Nightly_Builds"
echo "################################"
echo "# Creating xcat-dep repository #"
echo "################################"
rm -rf $repo_xcat_dep_path
mkdir -p $repo_xcat_dep_path/conf
find $xcat_dep_path -iname '*.deb' -exec cp {} $repo_xcat_dep_path \;
rm -rf $repo_xcat_core_path/conf/distributions
for dist in $dists; do
cat << __EOF__ >> $repo_xcat_dep_path/conf/distributions
Origin: xCAT internal repository
Label: xcat-dep bazaar repository
Codename: $dist
Architectures: i386 amd64
Components: main
Description: Repository automatically genereted conf
__EOF__
done
cat << __EOF__ > $repo_xcat_dep_path/conf/options
verbose
basedir .
__EOF__
for dist in $dists; do
for file in `ls $repo_xcat_dep_path/*.deb`; do
reprepro -b $repo_xcat_dep_path includedeb $dist $file;
done
done
cat << '__EOF__' > $repo_xcat_dep_path/mklocalrepo.sh
codename=`lsb_release -a 2>null | grep Codename | awk '{print $2}'`
cd `dirname $0`
echo deb file://"`pwd`" $codename main > /etc/apt/sources.list.d/xcat-dep.list
__EOF__
chmod 775 $repo_xcat_dep_path/mklocalrepo.sh
rm -rf $repo_xcat_dep_path/*.deb
if [ -z "$local_flag" ]
then
echo "##############################"
echo "# Updating GSA xcat-dep repo #"
echo "##############################"
lftp -e "mirror -R --delete-first $repo_xcat_dep_path /projects/i/ipl-xcat/ubuntu/; exit;" -u $gsa_id,$gsa_passwd -p 22 sftp://ausgsa.ibm.com
fi ### if [ -z "$local_flag" ]
fi ### if [ "$d_flag" -a "$a_flag"]
if [ -z "$local_flag" ] # delete the temp repo after upload is done
then
rm -rf ./gsa-repo_temp
fi
exit 0
-88
View File
@@ -1,88 +0,0 @@
#!/bin/bash
###########
#
# This script call make<package>deb and create the deb packages
# for xCAT
#
# Author: Leonardo Tonetto <tonetto@linux.vnet.ibm.com>
# Revisor: Adalberto Medeiros <adalbas@linux.vnet.ibm.com>
# Revisor2: Arif Ali <aali@ocf.co.uk>
#
# Input:
#
# $1 is the build type/location
# $2 is the string added to the debian/changelog of each package
#
############
##############
# Get input
##############
PKG_LOCATION=$1 # local | snap | alpha
if [ -z $PKG_LOCATION ]; then
PKG_LOCATION="local"
fi
BUILD_STRING=$2
if [ -z $BUILD_STRING ]; then
BUILD_STRING="Personal Build"
fi
XCAT_VERSION=`cat Version`
TRUNK_REVISION=`svnversion | cut -d ":" -f1`
CUR_DATE=`date +%Y%m%d`
VERSION="${XCAT_VERSION}-${PKG_LOCATION}${CUR_DATE}"
function makedeb {
SRC_ROOT=$1
PKG_LOCATION=$2
BUILD_STRING=$3
VERSION=$4
#
# Make DEBs
#
# build perl-xCAT - deps are libsoap-lite-perl, libdigest-sha1-perl, libdbi-perl
#
find $SRC_ROOT -maxdepth 2 -name debian -type d | while read DEBIAN_DIR
do
DIR=`echo ${DEBIAN_DIR} | sed -e 's/[/]debian$//'`
cd ${DIR}
dch -v $VERSION -b -c debian/changelog "$BUILD_STRING"
dpkg-buildpackage
cd -
RC=$?
if [ ${RC} -gt 0 ]
then
echo "Warning: ${DEBIAN_DIR} failed exit code ${RC}"
fi
done
#
# Clean up
#
# Eliminate unnecessary directories and debian/files made by dpkg-buildpackage
find $SRC_ROOT -maxdepth 3 -type d -name "xcat-*" | grep debian | xargs rm -rf
find $SRC_ROOT -maxdepth 3 -type f -name "files" | grep debian | xargs rm -f
}
# build all debian packages
packages="xCAT-client xCAT-nbroot xCAT-nbroot2 perl-xCAT xCAT-server xCAT-UI xCAT xCATsn xCAT-test xCAT-IBMhpc xCAT-rmc"
for file in `echo $packages`
do
makedeb $file $PKG_LOCATION "$BUILD_STRING" $VERSION
done
if [ -d debs ]; then
rm -rf debs
fi
mkdir debs
mv xcat* debs/
mv perl-xcat* debs/
echo $VERSION > latest_version
exit 0
+134 -80
View File
@@ -41,8 +41,19 @@ printusage()
# For the purpose of getting the distribution name
. /etc/lsb-release
# Process cmd line variable assignments, assigning each attr=val pair to a variable of same name
for i in $*; do
echo $i | grep '='
if [ $? != 0 ];then
continue
fi
# upper case the variable name
varstring=`echo "$i"|cut -d '=' -f 1|tr '[a-z]' '[A-Z]'`=`echo "$i"|cut -d '=' -f 2`
export $varstring
done
# Supported distributions
dists="maverick natty oneiric precise"
dists="maverick natty oneiric precise saucy"
c_flag= # xcat-core (trunk-delvel) path
d_flag= # xcat-dep (trunk) path
@@ -91,14 +102,6 @@ local_dep_repo_path="$curdir/../../../xcat-dep/xcat-dep"
sf_repo_url="https://sourceforge.net/projects/xcat/files/ubuntu"
sf_dir="/home/frs/project/x/xc/xcat"
if [ "$PROMOTE" = 1 ]; then
upload_dir="xcat-core"
tar_name="xcat-core-$ver.tar.bz2"
else
upload_dir="core-snap"
tar_name="core-debs-snap.tar.bz2"
fi
#use flock to only one person build at the same time
# Get a lock, so can not do 2 builds at once
exec 8>/var/lock/xcatbld.lock
@@ -128,69 +131,111 @@ then
REL=`basename $t`
fi
#get the version
echo "svn --quiet update Version"
svn --quiet up Version
ver=`cat Version`
short_ver=`cat Version|cut -d. -f 1,2`
short_short_ver=`cat Version|cut -d. -f 1`
#TODO: define the core path and tarball name
tarball_name="core-debs-snap.tar.bz2"
#update the code from svn
svn_up_log="../coresvnup"
echo "svn update > $svn_up_log"
svn update > $svn_up_log
#makesure the code change status
code_change=0
if ! grep -q 'At revision' $svn_up_log;then
code_change=1
fi
if [ $code_change == 0 -a "$UP" != 1 -a "$BUILDALL" != 1 ]; then
echo "Nothing new detected"
exit 0
fi
echo "###############################"
echo "# Building xcat-core packages #"
echo "###############################"
#the package type: local | snap | alpha
#the build introduce stirng
pkg_type="snap"
build_string="Snap_Build"
cur_date=`date +%Y%m%d`
pkg_version="${short_ver}-${pkg_type}${cur_date}"
if [ ! -d ../../debs ];then
mkdir -p "../../debs"
fi
packages="xCAT-client xCAT-genesis-scripts perl-xCAT xCAT-server xCAT-UI xCAT xCATsn xCAT-test"
for file in `echo $packages`
do
file_low=`echo $file | tr '[A-Z]' '[a-z]'`
if grep -q $file $svn_up_log || [ "$BUILDALL" == 1 ]; then
rm -f ../../debs/${file_low}_*.deb
#only for genesis package
rm -f ../../debs/${file_low}-amd64_*.deb
cd $file
dch -v $pkg_version -b -c debian/changelog $build_string
dpkg-buildpackage -uc -us
rc=$?
if [ $rc -gt 0 ]; then
echo "Error: $file build package failed exit code $rc"
if [ "$PROMOTE" != 1 ]; then
code_change=0
update_log=''
#get the version
if [ "$REL" = "xcat-core" ];then
git_flag=1
REL=`git rev-parse --abbrev-ref HEAD`
if [ "$REL" = "master" ]; then
REL="devel"
fi
if [ -z "$GITUP" ];then
update_log=../coregitup
echo "git pull > $update_log"
git pull > $update_log
else
update_log=$GITUP
fi
cd -
find $file -maxdepth 3 -type d -name "${file_low}*" | grep debian | xargs rm -rf
find $file -maxdepth 3 -type f -name "files" | grep debian | xargs rm -rf
mv ${file_low}* ../../debs/
fi
done
find ../../debs/* ! -name *.deb | xargs rm -f
if ! grep -q 'Already up-to-date' $update_log; then
code_change=1
fi
else
git_flag=0
if [ -z "$SVNUP" ]; then
update_log=../coresvnup
echo "svn up > $update_log"
svn up > $update_log
else
update_log=$SVNUP
fi
if ! grep -q 'At revision' $update_log;then
code_change=1
fi
fi
ver=`cat Version`
short_ver=`cat Version|cut -d. -f 1,2`
short_short_ver=`cat Version|cut -d. -f 1`
package_dir_name=debs$REL
#TODO: define the core path and tarball name
tarball_name="core-debs-snap.tar.bz2"
if [ $code_change == 0 -a "$UP" != 1 -a "$BUILDALL" != 1 ]; then
echo "Nothing new detected"
exit 0
fi
echo "###############################"
echo "# Building xcat-core packages #"
echo "###############################"
#the package type: local | snap | alpha
#the build introduce stirng
pkg_type="snap"
build_string="Snap_Build"
cur_date=`date +%Y%m%d`
pkg_version="${short_ver}-${pkg_type}${cur_date}"
if [ ! -d ../../$package_dir_name ];then
mkdir -p "../../$package_dir_name"
fi
packages="xCAT-client xCAT-genesis-scripts perl-xCAT xCAT-server xCAT-UI xCAT xCATsn xCAT-test xCAT-OpenStack xCAT-OpenStack-baremetal"
for file in `echo $packages`
do
file_low=`echo $file | tr '[A-Z]' '[a-z]'`
if grep -q $file $update_log || [ "$BUILDALL" == 1 -o "$file" = "perl-xCAT" ]; then
rm -f ../../$package_dir_name/${file_low}_*.deb
#only for genesis package
rm -f ../../$package_dir_name/${file_low}-amd64_*.deb
cd $file
dch -v $pkg_version -b -c debian/changelog $build_string
dpkg-buildpackage -uc -us
rc=$?
if [ $rc -gt 0 ]; then
echo "Error: $file build package failed exit code $rc"
fi
cd -
find $file -maxdepth 3 -type d -name "${file_low}*" | grep debian | xargs rm -rf
find $file -maxdepth 3 -type f -name "files" | grep debian | xargs rm -rf
mv ${file_low}* ../../$package_dir_name/
fi
done
find ../../$package_dir_name/* ! -name *.deb | xargs rm -f
else
if [ "$REL" = "xcat-core" ];then
git_flag=1
REL=`git rev-parse --abbrev-ref HEAD`
if [ "$REL" = "master" ]; then
REL="devel"
fi
fi
package_dir_name=debs$REL
fi
if [ "$PROMOTE" = 1 ]; then
upload_dir="xcat-core"
tar_name="xcat-core-$ver.tar.bz2"
else
upload_dir="core-snap"
tar_name="core-debs-snap.tar.bz2"
fi
echo "#################################"
echo "# Creating xcat-core repository #"
@@ -209,7 +254,7 @@ then
Origin: xCAT internal repository
Label: xcat-core bazaar repository
Codename: $dist
Architectures: amd64 i386
Architectures: amd64
Components: main
Description: Repository automatically genereted conf
SignWith: yes
@@ -225,13 +270,13 @@ __EOF__
#import the deb packages into the repo
for dist in $dists; do
for file in `ls ../debs/*.deb`; do
for file in `ls ../$package_dir_name/*.deb`; do
reprepro -b ./ includedeb $dist $file;
done
done
#create the mklocalrepo script
cat << __EOF__ > mklocalrepo.sh
cat << '__EOF__' > mklocalrepo.sh
. /etc/lsb-release
cd `dirname $0`
echo deb file://"`pwd`" $DISTRIB_CODENAME main > /etc/apt/sources.list.d/xcat-core.list
@@ -247,12 +292,12 @@ __EOF__
groupadd xcat
fi
chgrp -R xcat xcat-core
chgrp -R root xcat-core
chmod -R g+w xcat-core
#build the tar ball
tar -hjcf $tar_name xcat-core
chgrp xcat $tar_name
chgrp root $tar_name
chmod g+w $tar_name
if [ ! -e core-snap ]; then
@@ -260,7 +305,7 @@ __EOF__
fi
# Decide whether to upload or not
if [ "$UP" != 1 ]; then
if [ -n "$UP" ] && [ "$UP" == 0 ]; then
echo "No need to upload"
cd $old_pwd
exit 0
@@ -275,8 +320,13 @@ __EOF__
fi
#upload the tar ball
#for the GA build, upload to https://sourceforge.net/projects/xcat/files/xcat/<version>.x_Ubuntu/
#for other scenario, upload to https://sourceforge.net/projects/xcat/files/ubuntu/<version>
if [ "$PROMOTE" = 1 -a "$REL" != "devel" -a "$PREGA" != 1 ]; then
echo "";
i=0
echo "Uploading $tar_name to ${sf_dir}/xcat/${REL}.x_Ubuntu/ ..."
while [ $((i+=1)) -le 5 ] && ! rsync -v $tar_name ${uploader},xcat@web.sourceforge.net:${sf_dir}/xcat/${REL}.x_Ubuntu/
do : ; done
else
i=0
echo "Uploading $tar_name to ${sf_dir}/ubuntu/${REL}/ ..."
@@ -307,7 +357,7 @@ then
Origin: xCAT internal repository
Label: xcat-dep bazaar repository
Codename: $dist
Architectures: i386 amd64
Architectures: amd64
Components: main
Description: Repository automatically genereted conf
SignWith: yes
@@ -342,16 +392,16 @@ __EOF__
groupadd xcat
fi
chgrp -R xcat xcat-dep
chgrp -R root xcat-dep
chmod -R g+w xcat-dep
#create the tar ball
dep_tar_name=xcat-dep-ubuntu.tar.bz
tar -hjcf $dep_tar_name xcat-dep
chgrp xcat $dep_tar_name
chgrp root $dep_tar_name
chmod g+w $dep_tar_name
if [ "$UP" != 1 ];then
if [ -n "$UP" ] && [ "$UP" == 0 ];then
echo "No need to upload the dep packages"
cd $old_pwd
exit 0
@@ -363,6 +413,10 @@ __EOF__
while [ $((i+=1)) -le 5 ] && ! rsync -urLv --delete xcat-dep ${uploader},xcat@web.sourceforge.net:${sf_dir}/ubuntu/
do : ; done
#upload the tarball
i=0
echo "Uploading $dep_tar_name to ${sf_dir}/xcat-dep/2.x_Ubuntu/ ..."
while [ $((i+=1)) -le 5 ] && ! rsync -v $dep_tar_name ${uploader},xcat@web.sourceforge.net:${sf_dir}/xcat-dep/2.x_Ubuntu/
do : ; done
cd $old_pwd
fi
exit 0
+101 -60
View File
@@ -19,6 +19,7 @@
# directories that are needed.
# Usage: buildcore.sh [attr=value attr=value ...]
# Before running buildcore.sh, you must change the local git repo to the branch you want built, using: git checkout <branch>
# PROMOTE=1 - if the attribute "PROMOTE" is specified, means an official dot release. This does not
# actually build xcat, just uploads the most recent snap build to https://sourceforge.net/projects/xcat/files/xcat/ .
# If not specified, a snap build is assumed, which uploads to https://sourceforge.net/projects/xcat/files/yum/
@@ -31,7 +32,7 @@
# BUILDALL=1 - build all rpms, whether they changed or not. Should be used for snap builds that are in prep for a release.
# UP=0 or UP=1 - override the default upload behavior
# SVNUP=<filename> - control which rpms get built by specifying a coresvnup file
# FRSYUM=0 - put the yum repo and snap builds in the old project web area instead of the FRS area.
# GITUP=<filename> - control which rpms get built by specifying a coregitup file
# EMBED=<embedded-environment> - the environment for which a minimal version of xcat should be built, e.g. zvm or flex
# VERBOSE=1 - to see lots of verbose output
@@ -40,7 +41,7 @@ UPLOADUSER=bp-sawyers
FRS=/home/frs/project/x/xc/xcat
# These are the rpms that should be built for each kind of xcat build
ALLBUILD="perl-xCAT xCAT-client xCAT-server xCAT-IBMhpc xCAT-rmc xCAT-UI xCAT-test xCAT-buildkit xCAT xCATsn xCAT-genesis-scripts"
ALLBUILD="perl-xCAT xCAT-client xCAT-server xCAT-IBMhpc xCAT-rmc xCAT-UI xCAT-test xCAT-buildkit xCAT xCATsn xCAT-genesis-scripts xCAT-OpenStack xCAT-SoftLayer xCAT-OpenStack-baremetal"
ZVMBUILD="perl-xCAT xCAT-server xCAT-UI"
ZVMLINK="xCAT-client xCAT xCATsn"
PCMBUILD="xCAT"
@@ -84,15 +85,24 @@ if [ "$OSNAME" != "AIX" ]; then
export HOME=/root # This is so rpm and gpg will know home, even in sudo
fi
# this is needed only when we are transitioning the yum over to frs
if [ "$FRSYUM" != 0 ]; then
YUMDIR=$FRS
YUMREPOURL="https://sourceforge.net/projects/xcat/files/yum"
else
YUMDIR=htdocs
YUMREPOURL="http://xcat.sourceforge.net/yum"
# for the git case, query the current branch and set REL (changing master to devel if necessary)
function setbranch {
#git checkout $BRANCH
#REL=`git rev-parse --abbrev-ref HEAD`
REL=`git name-rev --name-only HEAD`
if [ "$REL" = "master" ]; then
REL="devel"
fi
}
if [ "$REL" = "xcat-core" ]; then # using git
GIT=1
setbranch # this changes the REL variable
fi
YUMDIR=$FRS
YUMREPOURL="https://sourceforge.net/projects/xcat/files/yum"
# Set variables based on which type of build we are doing
if [ -n "$EMBED" ]; then
EMBEDDIR="/$EMBED"
@@ -116,38 +126,38 @@ else
fi
XCATCORE="xcat-core" # core-snap is a sym link to xcat-core
echo "svn --quiet up Version"
svn --quiet up Version
VER=`cat Version`
SHORTVER=`cat Version|cut -d. -f 1,2`
SHORTSHORTVER=`cat Version|cut -d. -f 1`
if [ "$PROMOTE" = 1 ]; then
CORE="xcat-core"
if [ "$OSNAME" = "AIX" ]; then
TARNAME=core-aix-$VER.tar.gz
else
TARNAME=xcat-core-$VER.tar.bz2
fi
if [ "$GIT" = "1" ]; then # using git - need to include REL in the path where we put the built rpms
DESTDIR=../../$REL$EMBEDDIR/$XCATCORE
else
CORE="core-snap"
if [ "$OSNAME" = "AIX" ]; then
TARNAME=core-aix-snap.tar.gz
else
TARNAME=core-rpms-snap.tar.bz2
fi
DESTDIR=../..$EMBEDDIR/$XCATCORE
fi
DESTDIR=../..$EMBEDDIR/$XCATCORE
SRCD=core-snap-srpms
# currently aix builds ppc rpms, but someday it should build noarch
if [ "$OSNAME" = "AIX" ]; then
NOARCH=ppc
SYSGRP=system
else
NOARCH=noarch
SYSGRP=root
fi
function setversionvars {
VER=`cat Version`
SHORTVER=`cat Version|cut -d. -f 1,2`
SHORTSHORTVER=`cat Version|cut -d. -f 1`
}
if [ "$PROMOTE" != 1 ]; then # very long if statement to not do builds if we are promoting
# we are doing a snap build
CORE="core-snap"
if [ "$OSNAME" = "AIX" ]; then
TARNAME=core-aix-snap.tar.gz
else
TARNAME=core-rpms-snap.tar.bz2
fi
mkdir -p $DESTDIR
SRCDIR=$DESTDIR/../$SRCD
mkdir -p $SRCDIR
@@ -168,17 +178,38 @@ else
#echo "source=$source"
fi
# If they have not given us a premade update file, do an svn update and capture the results
if [ -z "$SVNUP" ]; then
SVNUP=../coresvnup
echo "svn up > $SVNUP"
svn up > $SVNUP
fi
# If they have not given us a premade update file, do an svn update or git pull and capture the results
SOMETHINGCHANGED=0
if ! $GREP 'At revision' $SVNUP; then
SOMETHINGCHANGED=1
if [ "$GIT" = "1" ]; then # using git
if [ -z "$GITUP" ]; then
GITUP=../coregitup
echo "git pull > $GITUP"
git pull > $GITUP
if [[ $? != 0 ]]; then
# do not continue so we do not build with old files
echo "The 'git pull' command failed. Exiting the build."
exit 3
fi
fi
if ! $GREP 'Already up-to-date' $GITUP; then
SOMETHINGCHANGED=1
fi
else # using svn
GIT=0
if [ -z "$SVNUP" ]; then
SVNUP=../coresvnup
echo "svn up > $SVNUP"
svn up > $SVNUP
fi
if ! $GREP 'At revision' $SVNUP; then
SOMETHINGCHANGED=1
fi
# copy the SVNUP variable to GITUP so the rest of the script doesnt have to worry whether we did svn or git
GITUP=$SVNUP
fi
setversionvars
# Function for making the noarch rpms
function maker {
rpmname="$1"
@@ -194,7 +225,7 @@ function maker {
}
# If anything has changed, we should always rebuild perl-xCAT
if [ $SOMETHINGCHANGED == 1 -o "$BUILDALL" == 1 ]; then # Use to be: $GREP perl-xCAT $SVNUP; then
if [ $SOMETHINGCHANGED == 1 -o "$BUILDALL" == 1 ]; then # Use to be: $GREP perl-xCAT $GITUP; then
if [[ " $EMBEDBUILD " = *\ perl-xCAT\ * ]]; then
UPLOAD=1
maker perl-xCAT
@@ -206,11 +237,11 @@ if [ "$OSNAME" = "AIX" ]; then
fi
# Build the rest of the noarch rpms
for rpmname in xCAT-client xCAT-server xCAT-IBMhpc xCAT-rmc xCAT-UI xCAT-test xCAT-buildkit; do
for rpmname in xCAT-client xCAT-server xCAT-IBMhpc xCAT-rmc xCAT-UI xCAT-test xCAT-buildkit xCAT-SoftLayer; do
#if [ "$EMBED" = "zvm" -a "$rpmname" != "xCAT-server" -a "$rpmname" != "xCAT-UI" ]; then continue; fi # for zvm embedded env only need to build server and UI
if [[ " $EMBEDBUILD " != *\ $rpmname\ * ]]; then continue; fi
if [ "$OSNAME" = "AIX" -a "$rpmname" = "xCAT-buildkit" ]; then continue; fi # do not build xCAT-buildkit on aix
if $GREP $rpmname $SVNUP || [ "$BUILDALL" == 1 ]; then
if $GREP $rpmname $GITUP || [ "$BUILDALL" == 1 ]; then
UPLOAD=1
maker $rpmname
fi
@@ -225,7 +256,7 @@ done
# The mknb cmd combines them at install time.
if [ "$OSNAME" != "AIX" ]; then
if [[ " $EMBEDBUILD " = *\ xCAT-genesis-scripts\ * ]]; then
if $GREP xCAT-genesis-scripts $SVNUP || [ "$BUILDALL" == 1 ]; then
if $GREP xCAT-genesis-scripts $GITUP || [ "$BUILDALL" == 1 ]; then
UPLOAD=1
ORIGFAILEDRPMS="$FAILEDRPMS"
./makerpm xCAT-genesis-scripts x86_64 "$EMBED"
@@ -241,17 +272,19 @@ if [ "$OSNAME" != "AIX" ]; then
fi
# Build the xCAT and xCATsn rpms for all platforms
for rpmname in xCAT xCATsn; do
for rpmname in xCAT xCATsn xCAT-OpenStack xCAT-OpenStack-baremetal; do
#if [ "$EMBED" = "zvm" ]; then break; fi
if [[ " $EMBEDBUILD " != *\ $rpmname\ * ]]; then continue; fi
if [ $SOMETHINGCHANGED == 1 -o "$BUILDALL" == 1 ]; then # used to be: if $GREP -E "^[UAD] +$rpmname/" $SVNUP; then
if [ $SOMETHINGCHANGED == 1 -o "$BUILDALL" == 1 ]; then # used to be: if $GREP -E "^[UAD] +$rpmname/" $GITUP; then
UPLOAD=1
ORIGFAILEDRPMS="$FAILEDRPMS"
if [ "$OSNAME" = "AIX" ]; then
if [ "$rpmname" = "xCAT-OpenStack" ] || [ "$rpmname" = "xCAT-OpenStack-baremetal" ]; then continue; fi # do not bld openstack on aix
./makerpm $rpmname "$EMBED"
if [ $? -ne 0 ]; then FAILEDRPMS="$FAILEDRPMS $rpmname"; fi
else
for arch in x86_64 i386 ppc64 s390x; do
for arch in x86_64 ppc64 s390x; do
if [ "$rpmname" = "xCAT-OpenStack" -a "$arch" != "x86_64" ] || [ "$rpmname" = "xCAT-OpenStack-baremetal" -a "$arch" != "x86_64" ] ; then continue; fi # only bld openstack for x86_64 for now
./makerpm $rpmname $arch "$EMBED"
if [ $? -ne 0 ]; then FAILEDRPMS="$FAILEDRPMS $rpmname-$arch"; fi
done
@@ -322,10 +355,10 @@ if [ "$OSNAME" != "AIX" ]; then
echo '%_gpg_name Jarrod Johnson' >> $MACROS
fi
echo "Signing RPMs..."
build-utils/rpmsign.exp `find $DESTDIR -type f -name '*.rpm'` | grep -v -E '(was already signed|rpm --quiet --resign|WARNING: standard input reopened)'
build-utils/rpmsign.exp $SRCDIR/*rpm | grep -v -E '(was already signed|rpm --quiet --resign|WARNING: standard input reopened)'
createrepo $DESTDIR
createrepo $SRCDIR
build-utils/rpmsign.exp `find $DESTDIR -type f -name '*.rpm'` | grep -v -E '(already contains identical signature|was already signed|rpm --quiet --resign|WARNING: standard input reopened)'
build-utils/rpmsign.exp $SRCDIR/*rpm | grep -v -E '(already contains identical signature|was already signed|rpm --quiet --resign|WARNING: standard input reopened)'
createrepo --checksum sha $DESTDIR # specifying checksum so the repo will work on rhel5
createrepo --checksum sha $SRCDIR
rm -f $SRCDIR/repodata/repomd.xml.asc
rm -f $DESTDIR/repodata/repomd.xml.asc
gpg -a --detach-sign $DESTDIR/repodata/repomd.xml
@@ -338,23 +371,26 @@ if [ "$OSNAME" != "AIX" ]; then
fi
fi
# make everything have a group of xcat, so anyone can manage them once they get on SF
# set group and permissions correctly on the built rpms
if [ "$OSNAME" = "AIX" ]; then
if ! lsgroup xcat >/dev/null 2>&1; then
mkgroup xcat
fi
chmod +x $DESTDIR/instxcat
else # linux
if ! $GREP xcat /etc/group; then
groupadd xcat
fi
fi
chgrp -R xcat $DESTDIR
chgrp -R $SYSGRP $DESTDIR
chmod -R g+w $DESTDIR
chgrp -R xcat $SRCDIR
chgrp -R $SYSGRP $SRCDIR
chmod -R g+w $SRCDIR
fi # end of very long if-not-promote
else # end of very long if-not-promote
# we are only promoting (not building)
setversionvars
setbranch
CORE="xcat-core"
if [ "$OSNAME" = "AIX" ]; then
TARNAME=core-aix-$VER.tar.gz
else
TARNAME=xcat-core-$VER.tar.bz2
fi
fi
cd $DESTDIR
@@ -394,14 +430,17 @@ else
verboseflag=""
fi
echo "Creating $TARNAME ..."
if [[ -e $TARNAME ]]; then
mkdir -p previous
mv -f $TARNAME previous
fi
if [ "$OSNAME" = "AIX" ]; then
tar $verboseflag -hcf ${TARNAME%.gz} $XCATCORE
rm -f $TARNAME
gzip ${TARNAME%.gz}
else
tar $verboseflag -hjcf $TARNAME $XCATCORE
fi
chgrp xcat $TARNAME
chgrp $SYSGRP $TARNAME
chmod g+w $TARNAME
# Decide whether to upload or not
@@ -456,6 +495,8 @@ if [ "$OSNAME" != "AIX" -a "$REL" = "devel" -a "$PROMOTE" != 1 -a -z "$EMBED" ];
rpm2cpio ../$XCATCORE/perl-xCAT-*.$NOARCH.rpm | cpio -id '*.html'
rpm2cpio ../$XCATCORE/xCAT-test-*.$NOARCH.rpm | cpio -id '*.html'
rpm2cpio ../$XCATCORE/xCAT-buildkit-*.$NOARCH.rpm | cpio -id '*.html'
rpm2cpio ../$XCATCORE/xCAT-OpenStack-*.x86_64.rpm | cpio -id '*.html'
rpm2cpio ../$XCATCORE/xCAT-SoftLayer-*.$NOARCH.rpm | cpio -id '*.html'
i=0
while [ $((i+=1)) -le 5 ] && ! rsync $verboseflag -r opt/xcat/share/doc/man1 opt/xcat/share/doc/man3 opt/xcat/share/doc/man5 opt/xcat/share/doc/man7 opt/xcat/share/doc/man8 $UPLOADUSER,xcat@web.sourceforge.net:htdocs/
do : ; done
+41 -29
View File
@@ -97,15 +97,15 @@ if [ "$OSNAME" != "AIX" ]; then
# Sign the rpms that are not already signed. The "standard input reopened" warnings are normal.
echo "Signing RPMs..."
$XCATCOREDIR/build-utils/rpmsign.exp `find . -type f -name '*.rpm'` | grep -v -E '(was already signed|rpm --quiet --resign|WARNING: standard input reopened)'
$XCATCOREDIR/build-utils/rpmsign.exp `find . -type f -name '*.rpm'` | grep -v -E '(already contains identical signature|was already signed|rpm --quiet --resign|WARNING: standard input reopened)'
# Create the repodata dirs
echo "Creating repodata directories..."
for i in `find -mindepth 2 -maxdepth 2 -type d `; do
if [ -n "$VERBOSEMODE" ]; then
createrepo $i
createrepo --checksum sha $i # specifying checksum so the repo will work on rhel5
else
createrepo $i >/dev/null
createrepo --checksum sha $i >/dev/null
fi
rm -f $i/repodata/repomd.xml.asc
gpg -a --detach-sign $i/repodata/repomd.xml
@@ -138,8 +138,21 @@ if [ "$PERLVER" == "v5.8.2" ]; then
OSVER='5.3'
elif [ "$PERLVER" == "v5.8.8" ]; then
OSVER='6.1'
aixver=`lslpp -lc|grep 'bos.rte:'|head -1|cut -d: -f3`
if [[ $aixver < '6.1.9.0' ]]; then
AIX61Y=0
else
AIX61Y=1
fi
elif [ "$PERLVER" == "v5.10.1" ]; then
OSVER='7.1'
aixver=`lslpp -lc|grep 'bos.rte:'|head -1|cut -d: -f3`
if [[ $aixver < '7.1.3.0' ]]; then
AIX71L=0
else
AIX71L=1
fi
else
echo "Error: the perl version of '$PERLVER' is not one that instoss understands. Exiting..."
exit 2
@@ -149,33 +162,37 @@ cd $OSVER
# The only interdependency between the dep rpms so far is that net-snmp requires bash, and
# pyodbc requires unixODBC. (The bash dependency is taken care of automatically because it
# comes earlier in the alphabet.)
# first run /usr/sbin/updtvpkg to make sure any installp software is
# registered with RPM.
echo "Running updtvpkg. This could take a few minutes."
/usr/sbin/updtvpkg
echo "updtvpkg has completed."
# unixODBC is required by pyodbc, so install it first
rpm -Uvh unixODBC*
for i in `ls *.rpm|grep -v -E '^tcl-|^tk-|^expect-|^unixODBC-|^xCAT-UI-deps|^perl-DBD-DB2Lite'`; do
# Now install the bulk of the rpms, one at a time, in case some are already installed
for i in `ls *.rpm|grep -v -E '^tcl-|^tk-|^expect-|^unixODBC-|^xCAT-UI-deps|^perl-DBD-DB2Lite|^net-snmp'`; do
if [ "$i" == "perl-Net-DNS-0.66-1.aix5.3.ppc.rpm" ]; then
opts="--nodeps"
else
opts=""
fi
# just in case we need it sometime, this next if stmt would mean: if it does not start with perl-DBD-DB2
#if [ "${i#perl-DBD-DB2}" == "$i" ]; then
# On 7.1L and 6.1Y we need a newer version of perl-Net_SSLeay.pm
if [[ $AIX71L -eq 1 || $AIX61Y -eq 1 ]]; then
if [[ $i == perl-Net_SSLeay.pm-1.30-* ]]; then continue; fi # skip the old rpm
else
if [[ $i == perl-Net_SSLeay.pm-1.55-* ]]; then continue; fi # skip the new rpm
fi
echo rpm -Uvh $opts $i
rpm -Uvh $opts $i
done
# don't try to install tcl, tk, or expect if they are already installed!
# this section about expect/tcl/tk can be removed once 2.8 releases, because 2.8 no longer requires expect
lslpp -l | grep expect.base > /dev/null 2>&1
if [ $? -gt 0 ]; then
if [ "$OSVER" == "5.3" ]; then
for i in tcl-*.rpm tk-*.rpm expect-*.rpm; do
echo rpm -Uvh $i
rpm -Uvh $i
done
else
echo "The expect.base, tcl.base, and tk.base filesets must also be installed before installing the xCAT RPMs from xcat-core."
fi
fi
# Have to upgrade all of the net-snmp rpms together because they depend on each other.
# Also, they require bash, so do it after the loop, rather than before
rpm -Uvh net-snmp*
EOF
# end of instoss file content ---------------------------------------------
@@ -183,18 +200,13 @@ EOF
chmod +x instoss
fi
# Get the permissions correct. Have to have all dirs/files with a group of xcat
# and have them writeable by group, so any member of the xcat can build.
# Get the permissions and group correct
if [ "$OSNAME" == "AIX" ]; then
if ! lsgroup xcat >/dev/null 2>&1; then
mkgroup xcat
fi
SYSGRP=system
else
if ! $GREP xcat /etc/group; then
groupadd xcat
fi
SYSGRP=root
fi
chgrp -R xcat *
chgrp -R -h $SYSGRP *
chmod -R g+w *
# Build the tarball
Executable
+106
View File
@@ -0,0 +1,106 @@
#######################################################################
#build script for local usage
#used for Linux/AIX/Ubuntu
#
###########################################################################
OSNAME=$(uname)
NAMEALL=$(uname -a)
echo "OSNAME is $OSNAME!"
echo "NAMEALL is $NAMEALL"
ls /code/xcat-core
if [ $? -gt 0 ]; then
echo "Error:no repo exist, exit 1."
exit 1
fi
# Get a lock, so can not do 2 builds at once
exec 8>/var/lock/xcatbld.lock
if ! flock -n 8; then
echo "Can't get lock /var/lock/xcatbld.lock. Someone else must be doing a build right now. Exiting...."
exit 1
fi
#used only for hard code, will change later
cd /code/xcat-core
rm -rf build/
echo "==============================================="
echo $NAMEALL | egrep "Ubuntu"
#Check if it is an Ubuntu system
if [ $? -eq 0 ]; then
echo "This is an Ubuntu system"
pkg_type="snap"
build_string="Snap_Build"
cur_date=`date +%Y%m%d`
short_ver=`cat Version|cut -d. -f 1,2`
pkg_version="${short_ver}-${pkg_type}${cur_date}"
mkdir -p /code/xcat-core/build
for rpmname in xCAT-client xCAT-genesis-scripts perl-xCAT xCAT-server xCAT xCATsn xCAT-test; do
rpmname_low=`echo $rpmname | tr '[A-Z]' '[a-z]'`
echo "============================================"
echo "$rpmname_low"
cd $rpmname
dch -v $pkg_version -b -c debian/changelog $build_string
dpkg-buildpackage -uc -us
rc=$?
if [ $rc -gt 0 ]; then
echo "Error: $rpmname build package failed exit code $rc"
fi
cd -
mv ${rpmname_low}* /code/xcat-core/build
done
#delete all files except .deb file
find /code/xcat-core/build/* ! -name *.deb | xargs rm -f
else
#This is not an Ubuntu system
echo "This is an $OSNAME system"
rm -rf /root/rpmbuild/RPMS/noarch/*
rm -rf /root/rpmbuild/RPMS/x86_64/*
rm -rf /root/rpmbuild/RPMS/ppc64/*
mkdir build/
# Build the rest of the noarch rpms
for rpmname in xCAT-client xCAT-server xCAT-IBMhpc xCAT-rmc xCAT-test xCAT-buildkit; do
if [ "$OSNAME" = "AIX" -a "$rpmname" = "xCAT-buildkit" ]; then continue; fi
./makerpm $rpmname
done
#build xCAT-genesis-scripts if it is x86_64 platform
ARCH=$(uname -p)
if [ "$ARCH" = "x64_64" ]; then
./makerpm xCAT-genesis-scripts x86_64
fi
# Build the xCAT and xCATsn rpms for all platforms
for rpmname in xCAT xCATsn; do
if [ "$OSNAME" = "AIX" ]; then
./makerpm $rpmname
if [ $? -ne 0 ]; then FAILEDRPMS="$FAILEDRPMS $rpmname"; fi
else
for arch in x86_64 ppc64 s390x; do
./makerpm $rpmname $arch
if [ $? -ne 0 ]; then FAILEDRPMS="$FAILEDRPMS $rpmname-$arch"; fi
done
fi
done
cp /root/rpmbuild/RPMS/noarch/* build/
cp /root/rpmbuild/RPMS/x86_64/* build/
cp /root/rpmbuild/RPMS/ppc64/* build/
fi
-3
View File
@@ -10,9 +10,6 @@
<packagereq type="required">xCAT-server</packagereq>
<packagereq type="required">xCAT-client</packagereq>
<packagereq type="required">perl-xCAT</packagereq>
<packagereq type="required">xCAT-nbroot-core-x86_64</packagereq>
<packagereq type="required">xCAT-nbroot-core-x86</packagereq>
<packagereq type="optional">xCAT-nbroot-core-ppc64</packagereq>
</packagelist>
</group>
</comps>
+7 -2
View File
@@ -32,7 +32,7 @@ function makenoarch {
# Make one of the following rpms: xCAT, xCATsn, xCAT-buildkit
# Make one of the following rpms: xCAT, xCATsn, xCAT-buildkit, xCAT-OpenStack
function makexcat {
if [ "$OSNAME" != "AIX" -a "$1" != "xCAT-buildkit" -a -z "$2" ]; then
echo 'Usage: makerpm <RPMname> <arch> [<embedded-system>]'
@@ -53,6 +53,7 @@ function makexcat {
tar -X /tmp/xcat-excludes -cf $RPMROOT/SOURCES/templates.tar templates
gzip -f $RPMROOT/SOURCES/templates.tar
cp xcat.conf $RPMROOT/SOURCES
cp xcat.conf.apach24 $RPMROOT/SOURCES
cp xCATMN $RPMROOT/SOURCES
else # xCATsn
tar -X /tmp/xcat-excludes -cf $RPMROOT/SOURCES/license.tar LICENSE.html
@@ -75,7 +76,9 @@ function makexcat {
tar --exclude .svn --exclude upflag -czf $RPMROOT/SOURCES/postscripts.tar.gz postscripts LICENSE.html
tar --exclude .svn -czf $RPMROOT/SOURCES/prescripts.tar.gz prescripts
tar --exclude .svn -czf $RPMROOT/SOURCES/templates.tar.gz templates
tar --exclude .svn -czf $RPMROOT/SOURCES/winpostscripts.tar.gz winpostscripts
cp xcat.conf $RPMROOT/SOURCES
cp xcat.conf.apach24 $RPMROOT/SOURCES
cp xCATMN $RPMROOT/SOURCES
cd - >/dev/null
elif [ "$RPMNAME" = "xCATsn" ]; then
@@ -88,6 +91,8 @@ function makexcat {
ARCH="noarch"
TARGET=""
tar --exclude .svn --exclude xCAT-buildkit.spec -czf $RPMROOT/SOURCES/$RPMNAME-$VER.tar.gz $RPMNAME
elif [ "$RPMNAME" = "xCAT-OpenStack" ]; then
tar --exclude .svn --exclude xCAT-OpenStack.spec -czf $RPMROOT/SOURCES/$RPMNAME-$VER.tar.gz $RPMNAME
else # do not recognize rpm
echo "Unrecognized rpm: $RPMNAME"
exit 2
@@ -201,7 +206,7 @@ else # linux
fi
if [ "$1" = "xCAT" -o "$1" = "xCATsn" -o "$1" = "xCAT-buildkit" ]; then
if [ "$1" = "xCAT" -o "$1" = "xCATsn" -o "$1" = "xCAT-buildkit" -o "$1" = "xCAT-OpenStack" ]; then
exportEmbed $3
makexcat $1 $2
elif [ "$1" = "xCAT-nbroot" -o "$1" = "xCAT-nbroot-core" ]; then
+6
View File
@@ -262,6 +262,12 @@ expression B<($1-1)%14+1> will evaluate to B<6>.
See http://www.perl.com/doc/manual/html/pod/perlre.html for information on perl regular expressions.
=head2 Easy Regular Expressions
As of xCAT 2.8.1, you can use a modified version of the regular expression support described in the previous section. You do not need to enter the node information (1st part of the expression), it will be derived from the input nodename. You only need to supply the 2nd part of the expression to determine the value to give the attribute. For examples, see
https://sourceforge.net/apps/mediawiki/xcat/index.php?title=Listing_and_Modifying_the_Database#Easy_Regular_expressions
=head1 OBJECT DEFINITIONS
Because it can get confusing what attributes need to go in what tables, the xCAT database can also
+1 -1
View File
@@ -1,7 +1,7 @@
Source: perl-xcat
Section: libs
Priority: extra
Maintainer: Arif Ali <aali@ocf.co.uk>
Maintainer: xCAT <xcat-user@lists.sourceforge.net>
Build-Depends: debhelper (>= 5), libsoap-lite-perl, libdbi-perl
Standards-Version: 3.7.2
+1 -1
View File
@@ -14,7 +14,6 @@ export DH_COMPAT=5
build:
dh_testdir
./modifyUtils `cat ../Version` `svn info | grep Revision | cut -d" " -f 2`
./db2man
clean:
@@ -49,6 +48,7 @@ binary-arch: build install
chmod 644 `pwd`/debian/perl-xcat/opt/xcat/share/doc/man5/*
chmod 644 `pwd`/debian/perl-xcat/opt/xcat/share/man/man7/*
chmod 644 `pwd`/debian/perl-xcat/opt/xcat/share/doc/man7/*
./modifyUtils `cat ../Version` `svn info | grep Revision | cut -d" " -f 2`
# dh_installmenu
# dh_installdebconf
# dh_installlogrotate
+10 -18
View File
@@ -1,34 +1,26 @@
#!/bin/sh
# Put the version, svn revision #, and build date into the Version function in Version.pm
if [ -z "$2" ]
if [ -z "$1" ]
then
echo "modifyUtils: Error: must specify the xCAT version and svn revision number as arguments" >&2
echo "modifyUtils: Error: must specify the xCAT version as an argument" >&2
exit
fi
VER=$1
SVNREF="svn r$2, "
#SVNINFO=`svn info 2>/dev/null|grep Revision`
#/bin/echo -e $SVNINFO
#if [ $? -ne 0 -a -f .svninfo ]; then
# SVNINFO=`cat .svninfo 2>/dev/null|grep Revision`
#fi
#if [ $? -eq 0 ]
# then
# SVNREF="svn r"`echo $SVNINFO|awk '{print $2}'`", "
# else
# SVNREF=""
# fi
BUILDDATE=`date`
#echo ". '(${SVNREF}built $BUILDDATE)'"
#echo ". '(built $BUILDDATE)'"
if [ "$(uname)" = "AIX" ]
then
sed -e s/"#XCATVERSIONSUBHERE"/". '$VER'"/ -e s/"#XCATSVNBUILDSUBHERE"/". ' (${SVNREF}built $BUILDDATE)'"/ xCAT/Version.pm >xCAT/Version.pm.new
sed -e s/"#XCATVERSIONSUBHERE"/". '$VER'"/ -e s/"#XCATSVNBUILDSUBHERE"/". ' (built $BUILDDATE)'"/ xCAT/Version.pm >xCAT/Version.pm.new
mv xCAT/Version.pm.new xCAT/Version.pm
else
sed -i -e s/"#XCATVERSIONSUBHERE"/". '$VER'"/ -e s/"#XCATSVNBUILDSUBHERE"/". ' (${SVNREF}built $BUILDDATE)'"/ xCAT/Version.pm
if [ -f "/etc/debian_version" ];then
FILENAME="debian/perl-xcat/opt/xcat/lib/perl/xCAT/Version.pm"
else
FILENAME="xCAT/Version.pm"
fi
sed -i -e s/"#XCATVERSIONSUBHERE"/". '$VER'"/ -e s/"#XCATSVNBUILDSUBHERE"/". ' (built $BUILDDATE)'"/ $FILENAME
fi
+1 -2
View File
@@ -25,7 +25,6 @@ Includes xCAT::Table, xCAT::NodeRange, among others.
%define zvm %(if [ "$zvm" = "1" ];then echo 1; else echo 0; fi)
%define fsm %(if [ "$fsm" = "1" ];then echo 1; else echo 0; fi)
%define svninfo %(svn info | grep Revision | awk '{print $2}')
%prep
%setup -q -n perl-xCAT
@@ -37,7 +36,7 @@ Includes xCAT::Table, xCAT::NodeRange, among others.
%if %fsm
%else
# Modify the Version() function in xCAT/Utils.pm to automatically have the correct version
./modifyUtils %{version} %{svninfo}
./modifyUtils %{version}
# Build the pod version of the man pages for each DB table. It puts them in the man5 and man7 subdirs.
# Then convert the pods to man pages and html pages.
+13 -18
View File
@@ -191,7 +191,12 @@ sub updateUserInfo {
{
for my $record (@diff)
{
print $fp "$record\n";
# skip to add ROOT relative records into MERGE file
if ($record =~ /^root/)
{
next;
}
print $fp "$record\n";
}
}
close ($fp);
@@ -230,24 +235,13 @@ sub setCFMSynclistFile {
# get the cfmdir and synclists attributes
my $osimage_t = xCAT::Table->new('osimage');
my $records = $osimage_t->getAttribs({imagename=>$img}, 'cfmdir', 'synclists');
if ($records)
if (defined ($records->{'cfmdir'}))
{
if ($records->{'cfmdir'}) {$cfmdir = $records->{'cfmdir'}}
if ($records->{'synclists'}) {$synclists = $records->{'synclists'}}
$cfmdir = $records->{'cfmdir'};
if (defined ($records->{'synclists'})) {$synclists = $records->{'synclists'}}
} else {
if ($::VERBOSE)
{
my $rsp = {};
$rsp->{data}->[0] = "There are no records for cfmdir and synclists attribute in the osimage:$img. There is nothing to process.";
xCAT::MsgUtils->message("I", $rsp, $::CALLBACK);
}
return;
}
# no cfmdir defined, return directly
if (!$cfmdir)
{
return;
# no cfmdir defined, return directly
return 0;
}
my $found = 0;
@@ -369,7 +363,8 @@ sub updateCFMSynclistFile {
# recursively list the files under cfm directory
my @files = ();
find ( sub { push @files, $File::Find::name if (! -d) }, $cfmdir);
find ( { wanted => sub { push @files, $File::Find::name if -f }, follow => 1 }, $cfmdir);
if (!@files) # not files under cfm directory, skip to next loop
{
next;
+112 -12
View File
@@ -8,9 +8,11 @@ BEGIN
# if AIX - make sure we include perl 5.8.2 in INC path.
# Needed to find perl dependencies shipped in deps tarball.
use Storable qw/nstore_fd fd_retrieve/;
if ($^O =~ /^aix/i) {
unshift(@INC, qw(/usr/opt/perl5/lib/5.8.2/aix-thread-multi /usr/opt/perl5/lib/5.8.2 /usr/opt/perl5/lib/site_perl/5.8.2/aix-thread-multi /usr/opt/perl5/lib/site_perl/5.8.2));
}
use IO::Handle;
my $inet6support;
if ($^O =~ /^aix/i) { # disable AIX IPV6 TODO fix
@@ -77,6 +79,23 @@ sub rspclean {
}
return 0;
}
sub send_request {
my $request = shift;
my $sock = shift;
my $encode = shift;
if ($encode eq "xml") {
my $msg=XMLout($request,RootName=>'xcatrequest',NoAttr=>1,KeyAttr=>[]);
if ($ENV{XCATXMLTRACE}) { print $msg; }
if($ENV{XCATXMLWARNING}) {
validateXML($msg);
}
print $sock $msg;
$sock->flush();
} else {
nstore_fd($request,$sock);
$sock->flush();
}
}
#################################
# submit_request will take an xCAT command and pass it to the xCAT
# server for execution.
@@ -179,11 +198,28 @@ if (ref($request) eq 'HASH') { # the request is an array, not pure XML
if ($ENV{XCATHOST}) {
$xcathost=$ENV{XCATHOST};
}
my %connargs=();
if ($xcathost =~ s/%([^\]|:]*)//) {
$connargs{PeerScope} = $1;
}
$connargs{PeerAddr} = $xcathost;
$connargs{Timeout} = 15;
if ($connargs{PeerScope} and $connargs{PeerScope} =~ /[a-zA-Z]/) { #non-numeric, need to translate...
my @ipdata = `ip link`;
@ipdata = grep(/[^@]$connargs{PeerScope}(:|@)/,@ipdata);
if (scalar(@ipdata) != 1) {
print STDERR "Unable to identify scope ".$connargs{PeerScope}."\n";
exit(1);
}
$connargs{PeerScope} = $ipdata[0];
$connargs{PeerScope} =~ s/:.*//;
}
my $pclient;
if ($inet6support) {
$pclient = IO::Socket::INET6->new(
PeerAddr => $xcathost,
Timeout => 15,
%connargs,
);
} else {
$pclient = IO::Socket::INET->new(
@@ -206,6 +242,7 @@ if (ref($request) eq 'HASH') { # the request is an array, not pure XML
SSL_key_file => $keyfile,
SSL_cert_file => $certfile,
SSL_ca_file => $cafile,
SSL_verify_mode => SSL_VERIFY_PEER,
SSL_use_cert => 1,
Timeout => 0,
);
@@ -214,21 +251,37 @@ if (ref($request) eq 'HASH') { # the request is an array, not pure XML
Timeout => 0,
);
}
unless ($client) {
print "Unable to open socket connection to xcatd daemon on $xcathost.\n";
print "Verify that the xcatd daemon is running and that your SSL setup is correct.\n";
if ($@ =~ /SSL Timeout/) {
die "Connection failure: SSL Timeout or incorrect certificates in ~/.xcat";
} else {
die "Connection failure: $@"
}
}
my $msg;
my $encode = "xml";
#storable encoding is unsafe, carry on with the unsafe xml scheme
#perhaps one day will support faster schemes
#my $encode = "storable";
#my $straightprint=0;
#if ($ENV{XCATXMLTRACE} or $ENV{XCATXMLWARNING}) { $encode="xml"; }
if (ref($request) eq 'HASH') { # the request is an array, not pure XML
$msg=XMLout($request,RootName=>'xcatrequest',NoAttr=>1,KeyAttr=>[]);
#print $client "xcatencoding: $encode\n";
#my $encok=<$client>;
send_request($request,$client,$encode);
} else { #XML
$straightprint=1;
$msg=$request;
print $client $msg;
}
if ($ENV{XCATXMLTRACE}) { print $msg; }
if($ENV{XCATXMLWARNING}) {
validateXML($msg);
}
$SIG{TERM} = $SIG{INT} = sub { print $client XMLout({abortcommand=>1},RootName=>'xcatrequest',NoAttr=>1,KeyAttr=>[]); exit 0; };
print $client $msg;
$SIG{TERM} = $SIG{INT} = sub { send_request({abortcommand=>[1]},$client,$encode); exit 0; };
my $response;
my $rsp;
my $cleanexit=0;
if ($encode eq 'xml') {
my $massresponse="<massresponse>";
my $nextcoalescetime=time()+1;
my $coalescenow=0;
@@ -282,9 +335,31 @@ if (ref($request) eq 'HASH') { # the request is an array, not pure XML
$massresponse .= "</massresponse>";
$cleanexit = rspclean($massresponse,$callback);
}
} else { #storable encode
my $rsp;
eval { $rsp = fd_retrieve($client); };
SERVERINPUT: while ($rsp) {
my @rsps;
if (ref $rsp eq 'ARRAY') {
@rsps = @$rsp;
} else {
@rsps = ($rsp);
}
foreach (@rsps) {
$callback->($_);
if ($_->{serverdone}) {
$cleanexit=1;
last SERVERINPUT;
}
}
$rsp = undef;
eval { $rsp = fd_retrieve($client); };
}
}
$massresponse="";
unless ($cleanexit) {
print STDERR "ERROR/WARNING: communication with the xCAT server seems to have been ended prematurely\n";
$xCAT::Client::EXITCODE = 1;
}
sub validateXML {
@@ -597,7 +672,10 @@ sub plugin_command {
no strict "refs";
# eval { #REMOVEEVALFORDEBUG
# if ($dispatch_requests) {
dispatch_request($req,$callback,$modname);
# backup the original req and recover it after the a run
my $org_req = {%$req};
dispatch_request($req,$callback,$modname);
$req = {%$org_req};
# } else {
# $SIG{CHLD}='DEFAULT';
# ${"xCAT_plugin::".$modname."::"}{process_request}->($req,$callback,\&do_request);
@@ -1081,7 +1159,12 @@ sub handle_response {
#print "printing node\n";
my $node;
foreach $node (@$nodes) {
my $desc=$node->{name}->[0];
my $desc;
if (ref($node->{name}) eq 'ARRAY') {
$desc=$node->{name}->[0];
} else {
$desc=$node->{name};
}
if ($node->{errorcode}) {
if (ref($node->{errorcode}) eq 'ARRAY') {
foreach my $ecode (@{$node->{errorcode}}) {
@@ -1101,7 +1184,24 @@ sub handle_response {
$errflg=1;
}
if ($node->{data}) {
if (ref(\($node->{data}->[0])) eq 'SCALAR') {
if (ref(\($node->{data})) eq 'SCALAR') {
$desc=$desc.": ".$node->{data};
} elsif (ref($node->{data}) eq 'HASH') {
if ($node->{data}->{desc}) {
if (ref($node->{data}->{desc}) eq 'ARRAY') {
$desc=$desc.": ".$node->{data}->{desc}->[0];
} else {
$desc=$desc.": ".$node->{data}->{desc};
}
}
if ($node->{data}->{contents}) {
if (ref($node->{data}->{contents}) eq 'ARRAY') {
$desc="$desc: ".$node->{data}->{contents}->[0];
} else {
$desc="$desc: ".$node->{data}->{contents};
}
}
} elsif (ref(\($node->{data}->[0])) eq 'SCALAR') {
$desc=$desc.": ".$node->{data}->[0];
} else {
if ($node->{data}->[0]->{desc}) {
Regular → Executable
+22 -7
View File
@@ -57,7 +57,7 @@ sub getObjectsOfType
# The database may be changed between getObjectsOfType calls
# do not use cache %::saveObjList if --nocache is specified
if ($::saveObjList{$type} && !$::opt_c)
if ($::saveObjList{$type} && !$::opt_nc)
{
@objlist = @{$::saveObjList{$type}};
}
@@ -200,7 +200,8 @@ sub getobjattrs
# list of object names
foreach my $table (keys %tableattrs) {
# open the table
my $thistable = xCAT::Table->new($table, -create => 1, -autocommit => 0);
# with autocommit => 0, it does not work on Ubuntu running mysql
my $thistable = xCAT::Table->new($table, -create => 1, -autocommit => 1);
if (!$thistable) {
my $rsp;
$rsp->{data}->[0] = "Could not open the \'$table\' table.";
@@ -606,7 +607,7 @@ sub getDBtable
# save this table info - in case this subr gets called multiple times
# --nocache flag specifies not to use cahe
if (grep(/^$table$/, @::foundTableList) && !$::opt_c)
if (grep(/^$table$/, @::foundTableList) && !$::opt_nc)
{
# already have this
@@ -617,7 +618,7 @@ sub getDBtable
{
# need to get info from DB
my $thistable = xCAT::Table->new($table, -create => 1, -autocommit => 0);
my $thistable = xCAT::Table->new($table, -create => 1);
if (!$thistable)
{
return undef;
@@ -1679,7 +1680,14 @@ sub readFileInput
$look_for_colon = 0; # ok - we have a colon
($objectname, $junk2) = split(/:/, $l);
# Remove any trailing whitespace
$l =~ s/\s*$//;
# IPv6 network names could be something like fd59::/64
# Use all the characters before the last ":" as the object name
# .* means greedy regular expression
$l =~ /^(.*):(.*?)$/;
($objectname, $junk2) = ($1, $2);
# if $junk2 is defined or there's an =
if ($junk2 || grep(/=/, $objectname))
@@ -1999,7 +2007,14 @@ sub getNetwkInfo
my @nodes = ("$node");
my $sn = xCAT::ServiceNodeUtils->get_ServiceNode(\@nodes,"xcat","Node");
my $snkey = (keys %{$sn})[0];
$nethash{$node}{'gateway'} = xCAT::NetworkUtils->getipaddr($snkey);
my $gw = xCAT::NetworkUtils->getipaddr($snkey);
# two possible cases when this code is run:
# 1. flat cluster: ip forwarding is not enabled on MN
# 2. hw ctrl in hierarchy cluster, in which HCP SN is not set
# in either case, MN itself should not be the gateway
if (xCAT::NetworkUtils->thishostisnot($gw)) {
$nethash{$node}{'gateway'} = $gw;
}
}
}
@@ -2732,7 +2747,7 @@ sub collapsenicsattr()
# e.g nicips.eth0
# do not need to handle nic attributes without the postfix .ethx,
# it will be overwritten by the attributes with the postfix .ethx,
if ($nodeattr =~ /^(nic\w+)\.(\w+)$/)
if ($nodeattr =~ /^(nic\w+)\.(.*)$/)
{
if ($1 && $2)
{
+115 -66
View File
@@ -1019,11 +1019,18 @@ sub fork_fanout_dsh
}
}
}
# save the original exports, we are going to add the unique node name below
while (@$targets_waiting
&& (keys(%$targets_active) < $$options{'fanout'}))
{
my $user_target = shift @$targets_waiting;
# now add export NODE=nodename to the pre-command, if not a device;
my $exportnode;
if (($$options{'devicetype'})) {
$exportnode="";
} else{
$exportnode="export NODE=$user_target; ";
}
my $target_properties = $$resolved_targets{$user_target};
my @commands;
my $localShell =
@@ -1037,7 +1044,6 @@ sub fork_fanout_dsh
$$options{'post-command'} = "";
$dsh_cmd_background = 1;
}
if ($$options{'environment'})
{
# if we are on a servicenode need to get the environment file
@@ -1062,14 +1068,15 @@ sub fork_fanout_dsh
$rsp->{error}->[0] = "File $$options{'environment'} does not exist";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
}
# build the xdsh command
push @dsh_command,
"$$options{'pre-command'} . $$options{'environment'} ; $$options{'command'}$$options{'post-command'}";
"$exportnode$$options{'pre-command'} . $$options{'environment'} ; $$options{'command'}$$options{'post-command'}";
}
else
{
push @dsh_command,
"$$options{'pre-command'}$$options{'command'}$$options{'post-command'}";
"$exportnode$$options{'pre-command'}$$options{'command'}$$options{'post-command'}";
}
if ($$target_properties{'localhost'})
@@ -1137,7 +1144,7 @@ sub fork_fanout_dsh
#eval "require RemoteShell::$rsh_extension";
eval "require xCAT::$rsh_extension";
$rsh_config{'command'} = "$$options{'pre-command'}";
$rsh_config{'command'} = "$exportnode$$options{'pre-command'}";
my $tmp_env_file;
# for the -E flag here we build and copy the -E env variable
# file to the nodes
@@ -2338,10 +2345,14 @@ sub config_dsh
}
}
else
{
# if not Mellanox, it does not need a config file
if (!($$options{'devicetype'} =~ /Mellanox/i)) {
my $rsp = {};
$rsp->{error}->[0] = "EMsgMISSING_DEV_CFG";
xCAT::MsgUtils->message('E', $rsp, $::CALLBACK);
$rsp->{error}->[0] = "The config file: $devicepath is missing";
xCAT::MsgUtils->message('E', $rsp, $::CALLBACK);
}
}
}
@@ -3226,7 +3237,17 @@ sub bld_resolve_nodes_hash
# find out if we have an MN in the list, local cp and sh will be used
# not remote shell
my $mname = xCAT::Utils->noderangecontainsMn(@target_list);
# find out the names for the Management Node
my @MNnodeinfo = xCAT::NetworkUtils->determinehostname;
my $mname = pop @MNnodeinfo; # hostname
my $cmd="hostname";
my $localhostname = xCAT::Utils->runcmd($cmd,0);
if ($::RUNCMD_RC != 0)
{
my $rsp = {};
$rsp->{info}->[0] = "Command: $cmd failed. Continuing...";
xCAT::MsgUtils->message("I", $rsp, $::CALLBACK);
}
foreach my $target (@target_list)
{
@@ -3235,11 +3256,9 @@ sub bld_resolve_nodes_hash
my $localhost;
my $user;
my $context = "XCAT";
# check to see if this node is the Management Node
if ($mname) {
if ($mname eq $target) {
# check to see if this node is the Management Node we are on, can run local commands (sh,cp)
if (($mname eq $target) || ($localhostname eq $target)){
$localhost=$target;
}
}
my %properties = (
'hostname' => $hostname,
@@ -4068,11 +4087,12 @@ sub parse_and_run_dsh
# check if any node in the noderange is the Management Node and exit
# with error, if the Management Node is in the Database and in the
# noderange
my $mname = xCAT::Utils->noderangecontainsMn(@nodelist);
if ($mname) { # MN in the nodelist
my @mname = xCAT::Utils->noderangecontainsMn(@nodelist);
if (@mname) { # MN in the nodelist
my $nodes=join(',', @mname);
my $rsp = {};
$rsp->{error}->[0] =
"You must not run -K option against the Management Node:$mname.";
"You must not run -K option against the Management Node:$nodes.";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK, 1);
return;
}
@@ -4174,7 +4194,7 @@ sub parse_and_run_dsh
#
# setup ssh keys on the nodes or ib switch
#
my $rc = xCAT::TableUtils->setupSSH($options{'nodes'});
my $rc = xCAT::TableUtils->setupSSH($options{'nodes'},$options{'timeout'});
my @results = "return code = $rc";
return (@results);
}
@@ -4686,21 +4706,42 @@ sub parse_and_run_dcp
my $ranpostscripts;
my $ranappendscripts;
my $ranmergescripts;
# if we were called with runxcmd, like by updatenode
# need to save the runxcmd buffer
# $::xcmd_outref
my $save_xcmd_outref;
if ($::xcmd_outref) { # this means we were called with runxcmd
$save_xcmd_outref = $::xcmd_outref;
}
if ((@::postscripts) && ($::SYNCSN == 0)) {
@results2 = &run_rsync_postscripts(\@results,$synfiledir);
@results2 = &run_rsync_postscripts(\@results,$synfiledir,\%options);
$ranpostscripts=1;
}
if ((@::alwayspostscripts) && ($::SYNCSN == 0)) {
@results3 = &run_always_rsync_postscripts(\@nodelist,$synfiledir);
@results3 = &run_always_rsync_postscripts(\@nodelist,$synfiledir,\%options);
}
if (($::appendscript) && ($::SYNCSN == 0)) {
@results4 = &bld_and_run_append(\@nodelist,\@results,$synfiledir,$nodesyncfiledir);
@results4 = &bld_and_run_append(\@nodelist,\@results,$synfiledir,$nodesyncfiledir,\%options);
$ranappendscripts=1;
}
if (($::mergescript) && ($::SYNCSN == 0)) {
@results5 = &bld_and_run_merge(\@nodelist,\@results,$synfiledir,$nodesyncfiledir);
@results5 = &bld_and_run_merge(\@nodelist,\@results,$synfiledir,$nodesyncfiledir,\%options);
$ranmergescripts=1;
}
# restore the runxcmd buffer
if ($save_xcmd_outref) { # this means we were called with runxcmd
$::xcmd_outref = $save_xcmd_outref;
}
# TODO, will we ever need to merge
# if we ran a postscript and we were run
# using runxcmd, and there was previous output in the
# runxcmd buffer and we have output from the postscript
# then we have to merge the outputs
#if (($ranaps == 1) && ($save_xcmd_outref) && ($::xcmd_outref) ) {
# &mergeoutput($save_xcmd_outref);
#}
my @newresults;
if (@results2) {
@newresults = (@results2);
@@ -4715,9 +4756,14 @@ sub parse_and_run_dcp
@newresults = (@newresults,@results3,@results4,@results5);
}
if (@newresults) {
if ($save_xcmd_outref) { # this means we were called with runxcmd
foreach my $line (@newresults) {
push @$::xcmd_outref,$line;
}
}
return (@newresults);
} else {
# don't report results for postscripts,appendscripts,mergescripts because
# don't report other results for postscripts,appendscripts,mergescripts because
# you get all the rsync returned lines
if (($ranpostscripts == 0 ) && ($ranappendscripts == 0)
&& ($ranmergescripts == 0)) {
@@ -5592,7 +5638,7 @@ sub parse_rsync_input_file_on_SN
sub run_rsync_postscripts
{
my ($rsyncoutput,$syncdir) = @_;
my ($rsyncoutput,$syncdir,$options) = @_;
my @rsync_output = @$rsyncoutput;
my @newoutput= ();
my $dshparms;
@@ -5635,27 +5681,26 @@ sub run_rsync_postscripts
# now if we have postscripts to run, run xdsh
my $out;
# if we were called with runxcmd, like by updatenode
# need to save the runxcmd buffer
# $::xcmd_outref
my $save_xcmd_outref;
if ($::xcmd_outref) { # this means we were called with runxcmd
$save_xcmd_outref = $::xcmd_outref;
}
# my $ranaps=0; # did we run a postscript
foreach my $ps ( keys %{$$dshparms{'postscripts'}}) {
my @nodes;
push (@nodes, @{$$dshparms{'postscripts'}{$ps}});
my @args=();
if ($$options{'nodestatus'}) {
push @args,"--nodestatus" ;
}
push @args,"-e";
# if on the service node need to add the $syncdir directory
# to the path
if (xCAT::Utils->isServiceNode()) {
my $tmpp=$syncdir . $ps;
$ps=$tmpp;
}
$out=xCAT::Utils->runxcmd( { command => ['xdsh'],
push @args,$ps;
$out=xCAT::Utils->runxcmd( { command => ['xdsh'],
node => \@nodes,
arg => [ "-e", $ps ]
arg => \@args,
}, $::SUBREQ, 0,1);
foreach my $r (@$out){
push(@newoutput, $r);
@@ -5663,18 +5708,6 @@ sub run_rsync_postscripts
}
# $ranaps=1;
}
# restore the runxcmd buffer
if ($save_xcmd_outref) { # this means we were called with runxcmd
$::xcmd_outref = $save_xcmd_outref;
}
# TODO, will we ever need to merge
# if we ran a postscript and we were run
# using runxcmd, and there was previous output in the
# runxcmd buffer and we have output from the postscript
# then we have to merge the outputs
#if (($ranaps == 1) && ($save_xcmd_outref) && ($::xcmd_outref) ) {
# &mergeoutput($save_xcmd_outref);
#}
return @newoutput;
}
#-------------------------------------------------------------------------------
@@ -5712,7 +5745,7 @@ sub run_rsync_postscripts
sub bld_and_run_append
{
my ($hostnames,$rsyncoutput,$syncdir,$nodesyncfiledir) = @_;
my ($hostnames,$rsyncoutput,$syncdir,$nodesyncfiledir,$options) = @_;
my @hosts = @$hostnames;
my @rsync_output = @$rsyncoutput;
my @newoutput= ();
@@ -5762,8 +5795,10 @@ sub bld_and_run_append
# that were rsyn'd to at least one node
if ($tmpappendfile eq $ps) {
my $parm="$appendfile:$filetoappend ";
$::xdcpappendparms .= $parm;
# check to see if the parameter is already in the list
if (!($::xdcpappendparms =~ /$parm/)) {
$::xdcpappendparms .= $parm;
}
$processappend=1;
}
@@ -5784,10 +5819,16 @@ sub bld_and_run_append
foreach my $ps ( keys %{$$dshparms{'appendscripts'}}) {
my @nodes;
push (@nodes, @{$$dshparms{'appendscripts'}{$ps}});
my @args=();
if ($$options{'nodestatus'}) {
push @args,"--nodestatus" ;
}
push @args,$ps;
push @args,$::xdcpappendparms;
$out=xCAT::Utils->runxcmd( { command => ['xdsh'],
node => \@nodes,
arg => [ $ps , $::xdcpappendparms ]
arg => \@args,
}, $::SUBREQ, 0,1);
foreach my $r (@$out){
push(@newoutput, $r);
@@ -5834,7 +5875,7 @@ sub bld_and_run_append
sub bld_and_run_merge
{
my ($hostnames,$rsyncoutput,$syncdir,$nodesyncfiledir) = @_;
my ($hostnames,$rsyncoutput,$syncdir,$nodesyncfiledir,$options) = @_;
my @hosts = @$hostnames;
my @rsync_output = @$rsyncoutput;
my @newoutput= ();
@@ -5893,8 +5934,10 @@ sub bld_and_run_merge
# that were rsyn'd to at least one node
if ($tmpmergefile eq $ps) {
my $parm="$mergefile:$filetomerge ";
$::xdcpmergeparms .= $parm;
# check to see if the parameter is already in the list
if (!($::xdcpmergeparms =~ /$parm/)) {
$::xdcpmergeparms .= $parm;
}
$processmerge=1;
}
@@ -5916,9 +5959,17 @@ sub bld_and_run_merge
my @nodes;
push (@nodes, @{$$dshparms{'mergescripts'}{$ps}});
# build the argument list
my @args=();
if ($$options{'nodestatus'}) {
push @args,"--nodestatus" ;
}
push @args, $ps;
push @args, $::xdcpmergeparms;
$out=xCAT::Utils->runxcmd( { command => ['xdsh'],
node => \@nodes,
arg => [ $ps , $::xdcpmergeparms ]
arg => \@args,
}, $::SUBREQ, 0,1);
foreach my $r (@$out){
push(@newoutput, $r);
@@ -5944,7 +5995,7 @@ sub bld_and_run_merge
sub run_always_rsync_postscripts
{
my ($hostnames,$syncdir) = @_;
my ($hostnames,$syncdir,$options) = @_;
my @hosts = @$hostnames;
my @newoutput= ();
my $dshparms;
@@ -5966,26 +6017,28 @@ sub run_always_rsync_postscripts
# now if we have postscripts to run, run xdsh
my $out;
# if we were called with runxcmd, like by updatenode
# need to save the runxcmd buffer
# $::xcmd_outref
my $save_xcmd_outref;
if ($::xcmd_outref) { # this means we were called with runxcmd
$save_xcmd_outref = $::xcmd_outref;
}
foreach my $ps ( keys %{$$dshparms{'postscripts'}}) {
my @nodes;
push (@nodes, @{$$dshparms{'postscripts'}{$ps}});
# build the argument list
my @args=();
if ($$options{'nodestatus'}) {
push @args,"--nodestatus" ;
}
push @args,"-e";
# if on the service node need to add the $syncdir directory
# to the path
if (xCAT::Utils->isServiceNode()) {
my $tmpp=$syncdir . $ps;
$ps=$tmpp;
}
push @args, $ps;
push (@nodes, @{$$dshparms{'postscripts'}{$ps}});
$out=xCAT::Utils->runxcmd( { command => ['xdsh'],
$out=xCAT::Utils->runxcmd( { command => ['xdsh'],
node => \@nodes,
arg => [ "-e", $ps ]
arg => \@args,
}, $::SUBREQ, 0,1);
foreach my $r (@$out){
push(@newoutput, $r);
@@ -5993,10 +6046,6 @@ sub run_always_rsync_postscripts
}
}
# restore the runxcmd buffer
if ($save_xcmd_outref) { # this means we were called with runxcmd
$::xcmd_outref = $save_xcmd_outref;
}
return @newoutput;
}
+13 -1
View File
@@ -754,8 +754,20 @@ sub pping_hostnames
my ($class, @hostnames) = @_;
my $hostname_list = join ",", @hostnames;
# read site table, usefping attribute
# if set then run pping -f to use fping
# this fixes a broken nmap in Redhat 6.2 with ip alias (3512)
my $cmd="$::XCATROOT/bin/pping $hostname_list"; # default
my @usefping=xCAT::TableUtils->get_site_attribute("usefping");
if ((defined($usefping[0])) && ($usefping[0] eq "1")) {
$cmd = "$::XCATROOT/bin/pping -f $hostname_list";
}
#my $rsp={};
#$rsp->{data}->[0] = "running command $cmd";
#xCAT::MsgUtils->message("I", $rsp, $::CALLBACK);
my @output =
xCAT::Utils->runcmd("$::XCATROOT/bin/pping $hostname_list", -1);
xCAT::Utils->runcmd($cmd, -1);
if ($::RUNCMD_RC !=0) {
my $rsp={};
$rsp->{error}->[0] = "Error from pping";
+1 -1
View File
@@ -39,7 +39,7 @@ sub update_discovery_data {
$disdata{'discoverytime'} = $currtime;
foreach my $attr (keys %$request) {
if ($attr =~ /^(command|discoverymethod|_xcat|cacheonly|noderange|environment)/) {
if ($attr =~ /^(command|discoverymethod|_xcat|cacheonly|noderange|environment|method|discoverytime|updateswitch)/) {
next;
} elsif ($attr =~ /^(node|uuid|arch|cpucount|cputype|memory|mtm|serial)$/) {
$disdata{$attr} = $request->{$attr}->[0];
+13 -2
View File
@@ -67,7 +67,7 @@ sub getHcpAttribs
}
}
my @ps = $tabs->{ppc}->getAllNodeAttribs(['node','parent','nodetype','hcp']);
my @ps = $tabs->{ppc}->getAllNodeAttribs(['node','parent','nodetype','hcp','id']);
for my $entry ( @ps ) {
my $tmp_parent = $entry->{parent};
my $tmp_node = $entry->{node};
@@ -79,6 +79,9 @@ sub getHcpAttribs
if (defined($tmp_node) && defined($tmp_type) && ($tmp_type eq "blade") && defined($entry->{hcp})) {
push @{$ppchash{$tmp_node}{children}}, $entry->{hcp};
}
if (defined($tmp_node) && defined($entry->{id}) && defined($tmp_parent) && defined($tmp_type) && ($tmp_type eq "lpar")) {
$ppchash{$tmp_parent}{mapping}{$tmp_node} = $entry->{id};
}
#if(exists($ppchash{$tmp_node})) {
# if( defined($tmp_type) ) {
@@ -368,11 +371,19 @@ sub fsp_api_action {
} elsif( $parameter !=0 && $action =~ /^(on|reset)$/ ) {
#powerinterval for lpars power on
$cmd = "$fsp_api -a $action -i $parameter -T $tooltype -t $type:$fsp_ip:$id:$node_name:";
} elsif ($action =~ /^part_set_lpar_def_state$/) {
$cmd = "$fsp_api -a $action -T $tooltype -s $parameter -t $type:$fsp_ip:$id:$node_name:";
} elsif (exists($request->{opt}->{vios})) {
$cmd = "$fsp_api -a $action -T $tooltype -s 1 -t $type:$fsp_ip:$id:$node_name:$parameter";
} else {
$cmd = "$fsp_api -a $action -T $tooltype -t $type:$fsp_ip:$id:$node_name:$parameter";
}
} else {
$cmd = "$fsp_api -a $action -T $tooltype -t $type:$fsp_ip:$id:$node_name:";
if (exists($request->{opt}->{vios})) {
$cmd = "$fsp_api -a $action -T $tooltype -s 1 -t $type:$fsp_ip:$id:$node_name:";
} else {
$cmd = "$fsp_api -a $action -T $tooltype -t $type:$fsp_ip:$id:$node_name:";
}
}
}
xCAT::MsgUtils->verbose_message($request, "fsp_api_action cmd:$cmd.");
+34 -5
View File
@@ -13,6 +13,7 @@ use xCAT::GlobalDef;
use xCAT::Usage;
use xCAT::NetworkUtils;
use xCAT::FSPUtils;
require xCAT::data::ibmhwtypes;
#use Data::Dumper;
##############################################
@@ -259,7 +260,8 @@ sub format_output {
# Strip errors for results
#######################################
my @val = grep( !/^#.*: ERROR /, @$values );
xCAT::PPCdb::add_ppc( $hwtype, \@val );
#xCAT::PPCdb::add_ppc( $hwtype, \@val );
$values = xCAT::PPCdb::update_lpar( $hwtype, \@val, "write");
}
###########################################
@@ -270,7 +272,8 @@ sub format_output {
# Strip errors for results
#######################################
my @val = grep( !/^#.*: ERROR /, @$values );
$values = xCAT::PPCdb::update_ppc( $hwtype, \@val );
#$values = xCAT::PPCdb::update_ppc( $hwtype, \@val );
$values = xCAT::PPCdb::update_lpar( $hwtype, \@val );
if ( exists( $opt->{x} ) or exists( $opt->{z} ))
{
unshift @$values, "hmc";
@@ -391,6 +394,7 @@ sub format_stanza {
#################################
# Add each attribute
#################################
my $mtm = undef;
foreach ( @attribs ) {
my $d = $data[$i++];
@@ -401,7 +405,8 @@ sub format_stanza {
} elsif ( /^hwtype$/ ) {
$d = $globalhwtype{$type};
} elsif ( /^groups$/ ) {
$d = "$type,all";
next;
#$d = "$type,all";
} elsif ( /^mgt$/ ) {
$d = $hwtype;
} elsif ( /^cons$/ ) {
@@ -414,7 +419,9 @@ sub format_stanza {
} elsif ( /^(mtm|serial)$/ ) {
if ( $type eq "lpar" ) {
$d = undef;
}
} elsif (/^mtm$/) {
$mtm = $d;
}
} elsif (/^side$/) {
unless ( $type =~ /^fsp|bpa$/ ) {
next;
@@ -422,6 +429,15 @@ sub format_stanza {
}
$result .= "\t$_=$d\n";
}
my $tmp_groups = "$type,all";
if (defined($mtm)) {
my $tmp_pre = xCAT::data::ibmhwtypes::parse_group($mtm);
if (defined($tmp_pre)) {
$tmp_groups .= ",$tmp_pre";
}
}
$result .= "\tgroups=$tmp_groups\n";
}
return( $result );
}
@@ -464,6 +480,7 @@ sub format_xml {
#################################
# Add each attribute
#################################
my $mtm = undef;
foreach ( @attribs ) {
my $d = $data[$i++];
@@ -472,7 +489,8 @@ sub format_xml {
} elsif ( /^hwtype$/ ) {
$d = $globalhwtype{$type};
} elsif ( /^groups$/ ) {
$d = "$type,all";
next;
#$d = "$type,all";
} elsif ( /^mgt$/ ) {
$d = $hwtype;
} elsif ( /^cons$/ ) {
@@ -484,6 +502,8 @@ sub format_xml {
} elsif ( /^(mtm|serial)$/ ) {
if ( $type eq "lpar" ) {
$d = undef;
} elsif (/^mtm$/) {
$mtm = $d;
}
} elsif (/^side$/) {
unless ( $type =~ /^fsp|bpa$/ ) {
@@ -492,6 +512,15 @@ sub format_xml {
}
$href->{Node}->{$_} = $d;
}
my $tmp_groups = "$type,all";
if (defined($mtm)) {
my $tmp_pre = xCAT::data::ibmhwtypes::parse_group($mtm);
if (defined($tmp_pre)) {
$tmp_groups .= ",$tmp_pre";
}
}
$href->{Node}->{groups}=$tmp_groups;
#print Dumper($href);
#################################
# XML encoding
+906 -53
View File
File diff suppressed because it is too large Load Diff
+3
View File
@@ -37,6 +37,7 @@ $::NODETYPE_MP="mp";
$::STATUS_SYNCING="syncing";
$::STATUS_OUT_OF_SYNC="out-of-sync";
$::STATUS_SYNCED="synced";
$::STATUS_FAILED="failed";
# valid values for nodelist.status columns or other status
@@ -55,6 +56,7 @@ $::STATUS_SHELL="shell";
$::STATUS_DEFINED="defined";
$::STATUS_UNKNOWN="unknown";
$::STATUS_FAILED="failed";
$::STATUS_BMCREADY="bmcready";
%::VALID_STATUS_VALUES = (
$::STATUS_ACTIVE=>1,
$::STATUS_INACTIVE=>1,
@@ -71,6 +73,7 @@ $::STATUS_FAILED="failed";
$::STATUS_DEFINED=>1,
$::STATUS_UNKNOWN=>1,
$::STATUS_FAILED=>1,
$::STATUS_BMCREADY=>1,
$::STATUS_SYNCING=>1,
$::STATUS_OUT_OF_SYNC=>1,
+17 -3
View File
@@ -893,12 +893,12 @@ sub dolitesetup
}
}
if (-e $litetreetab) {
my $rc = xCAT::Utils->runcmd("rm $litetreetab", -1);
if (-e $litetreetable) {
my $rc = xCAT::Utils->runcmd("rm $litetreetable", -1);
if ($::RUNCMD_RC != 0)
{
my $rsp;
push @{$rsp->{data}}, "Could not remove existing $litetreetab file.";
push @{$rsp->{data}}, "Could not remove existing $litetreetable file.";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
@@ -1132,6 +1132,10 @@ sub dolitesetup
# $file could be full path file name or dir name
# ex. /foo/bar/ or /etc/lppcfg
my ($node, $option, $file) = split (/\|/, $line);
if (!$file) {
next;
}
# ex. .../inst_root/foo/bar/ or .../inst_root/etc/lppcfg
my $instrootfile = $instrootloc . $file;
@@ -1349,6 +1353,16 @@ sub dolitesetup
return 1;
}
# also copy $instrootloc/.statelite contents
$ccmd = "/usr/bin/cp -p -r $instrootloc/.statelite $SRloc";
$out = xCAT::Utils->runcmd("$ccmd", -1);
if ($::RUNCMD_RC != 0)
{
my $rsp;
push @{$rsp->{data}}, "Could not copy $instrootloc/.statelite to $SRloc.";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
}
}
}
+89 -18
View File
@@ -827,7 +827,7 @@ sub get_mac_addr {
$done[0] = 0;
$cmd[0] = "\" local-mac-address\" ". $phandle . " get-package-property\r";
$msg[0] = "Status: return code and mac-address now on stack\n";
$pattern[0] = "ok";#"\s*3 >";
$pattern[0] = "local-mac-address.*ok";#"\s*3 >";
$newstate[0] = 1;
# cmd(1) is a dot (.). This is a stack manipulation command that removes one
@@ -1231,8 +1231,8 @@ sub ping_server{
$done[2] = 0;
$cmd[2] = "dev /packages/net\r";
$msg[2] = "Status: selected the /packages/net node as the active package\n";
#$pattern[2] = ".*dev(.*)ok(.*)0 >(.*)";
$pattern[2] = "ok";
$pattern[2] = ".*dev.*packages.*net(.*)ok(.*)0 >(.*)";
#$pattern[2] = "ok";
$newstate[2]= 3;
# state 3, ping the server
@@ -1266,6 +1266,7 @@ sub ping_server{
# state 5, all done
$done[5] = 1;
# for ping, only need to set speed and duplex for ethernet adapters
#
if ( $list_type eq "ent" ) {
@@ -1323,8 +1324,10 @@ sub ping_server{
$timeout = 300;
while ( $done[$state] eq 0 ) {
send_command($verbose, $rconsole, $cmd[$state]);
@result = $rconsole->expect(
$timeout,
[qr/$pattern[$state]/s=>
sub {
@@ -1362,7 +1365,9 @@ sub ping_server{
}
],
);
return 1 if ($rc eq 1);
return 1 if ($rc eq 1);
if ( $state eq 1 ) {
$adap_conn = $adap_conn_list[$j];
$cmd[1] = "\" ethernet,$adap_speed,$adap_conn,$adap_duplex\" encode-string \" chosen-network-type\" property\r";
@@ -1849,6 +1854,14 @@ sub boot_network {
$state = $newstate[$state];
}
],
# For some old firmware, does not output "----"
[qr/BOOTP/=>
sub {
nc_msg ($verbose, $msg[$state]);
$rconsole->clear_accum();
$state = $newstate[$state];
}
],
[qr/]/=>
sub {
nc_msg($verbose, "Unexpected prompt\n");
@@ -1917,7 +1930,28 @@ sub Boot {
#],
[qr/BOOTP/=> #-ex
sub {
nc_msg($verbose, "# Network boot proceeding, exiting.\n");
nc_msg($verbose, "# Network boot proceeding - matched BOOTP, exiting.\n");
$rconsole->clear_accum();
}
],
# Welcome to AIX - some old firmware does not output BOOTP or ----
[qr/Welcome/=> #-ex
sub {
nc_msg($verbose, "# Network boot proceeding - matched Welcome, exiting.\n");
$rconsole->clear_accum();
}
],
# tftp file download - some old firmware does not output BOOTP or ----
[qr/FILE/=> #-ex
sub {
nc_msg($verbose, "# Network boot proceeding - matched FILE.\n");
$rconsole->clear_accum();
}
],
# some old firmware does not output BOOTP or ----
[qr/Elapsed/=> #-ex
sub {
nc_msg($verbose, "# Network boot proceeding - matched Elapsed, exiting.\n");
$rconsole->clear_accum();
}
],
@@ -2021,14 +2055,46 @@ sub multiple_open_dev {
; \r";
send_command($verbose, $rconsole, $command);
$command = "patch new-open-dev open-dev net-ping \r";
send_command($verbose, $rconsole, $command);
$timeout = 30;
$rconsole->expect(
$timeout,
#[qr/patch new-open-dev(.*)>/=>
[qr/>/=>
[qr/new-open-dev(.*)ok/=>
#[qr/>/=>
sub {
nc_msg($verbose, "Status: at End of multiple_open_dev \n");
$rconsole->clear_accum();
}
],
[qr/]/=>
sub {
nc_msg($verbose, "Unexpected prompt\n");
$rconsole->clear_accum();
$rc = 1;
}
],
[timeout =>
sub {
send_user(2, "Timeout\n");
$rconsole->clear_accum();
$rc = 1;
}
],
[eof =>
sub {
send_user(2, "Cannot connect to $node\n");
$rconsole->clear_accum();
$rc = 1;
}
],
);
$command = "patch new-open-dev open-dev net-ping \r";
send_command($verbose, $rconsole, $command);
$rconsole->expect(
$timeout,
[qr/patch new-open-dev(.*)ok/=>
#[qr/>/=>
sub {
nc_msg($verbose, "Status: at End of multiple_open_dev \n");
$rconsole->clear_accum();
@@ -2057,6 +2123,7 @@ sub multiple_open_dev {
}
],
);
return $rc;
}
###################################################################
@@ -2540,7 +2607,7 @@ sub lparnetbootexp
####################################
nc_msg($verbose, "Connecting to the $node.\n");
sleep 3;
$timeout = 2;
$timeout = 10;
$rconsole->expect(
$timeout,
[ qr/Enter.* for help.*/i =>
@@ -2749,6 +2816,8 @@ sub lparnetbootexp
$done = 0;
$retry_count = 0;
$timeout = 10;
while (!$done) {
my @result = $rconsole->expect(
$timeout,
@@ -2856,6 +2925,7 @@ sub lparnetbootexp
}
}
##############################
# Call multiple_open_dev to
# circumvent firmware OPEN-DEV
@@ -2890,6 +2960,7 @@ sub lparnetbootexp
$match_pat = ".*";
}
if($colon) {
nc_msg($verbose, "#Type:Location_Code:MAC_Address:Full_Path_Name:Ping_Result:Device_Type:Size_MB:OS:OS_Version:\n");
$outputarrayindex++; # start from 1, 0 is used to set as 0
@@ -2943,7 +3014,7 @@ sub lparnetbootexp
} else {
for( $i = 0; $i < $adapter_found; $i++) {
if ($adap_type[$i] =~ /$match_pat/) {
if ($adap_type[$i] eq "hfi-ent") {
if (!($adap_type[$i] eq "hfi-ent")) {
$mac_address = get_mac_addr($phandle_array[$i], $rconsole, $node, $verbose);
$loc_code = get_adaptr_loc($phandle_array[$i], $rconsole, $node, $verbose);
}
@@ -3148,12 +3219,12 @@ sub lparnetbootexp
}
],
);
return [1] if ($rc eq 1);
}
nc_msg($verbose, "# bootp sent over network.\n");
$rc = Boot($rconsole, $node, $verbose);#, @expect_out);
unless ($rc eq 0) {
nc_msg($verbose, "Can't boot here. \n");
return [1] if ($rc eq 1);
nc_msg($verbose, "# bootp sent over network.\n");
$rc = Boot($rconsole, $node, $verbose);#, @expect_out);
unless ($rc eq 0) {
nc_msg($verbose, "Can't boot here. \n");
}
}
}
+4 -7
View File
@@ -10,7 +10,7 @@ if ($^O =~ /^aix/i) {
}
use strict;
use Sys::Syslog qw (:DEFAULT setlogsock);
use Sys::Syslog;
use xCAT::Utils;
#use locale;
use Socket;
@@ -456,8 +456,7 @@ sub message
# If they want this msg to also go to syslog, do that now
eval {
openlog("xCAT", '', 'local4');
setlogsock(["tcp", "unix", "stream"]);
openlog("xCAT", "nofatal,pid", "local4");
if ($sev eq 'SE') {
syslog("err", $rsp);
} else {
@@ -503,8 +502,7 @@ sub message
{
print $stdouterrf "Unable to open auditlog\n";
eval {
openlog("xCAT", '', 'local4');
setlogsock(["tcp", "unix", "stream"]);
openlog("xCAT", "nofatal,pid", "local4");
syslog("err", "Unable to write to auditlog");
closelog();
};
@@ -521,8 +519,7 @@ sub message
{ # error
print $stdouterrf "Unable to open auditlog\n";
eval {
openlog("xCAT", '', 'local4');
setlogsock(["tcp", "unix", "stream"]);
openlog("xCAT", "nofatal,pid", "local4");
syslog("err", "Unable to open auditlog");
closelog();
};
-271
View File
@@ -1,271 +0,0 @@
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
package xCAT::NameRange;
require xCAT::Table;
require Exporter;
use strict;
#Perl implementation of namerange
# NOTE: This is identical to xCAT::NodeRange except that no
# database access occurs, no nodes are verified, and
# no nodegroups are expanded.
# Made a new utility since NodeRange is used EVERYWHERE in
# xCAT code and did not want to risk de-stabilizing existing code.
our @ISA = qw(Exporter);
our @EXPORT = qw(namerange);
my $recurselevel=0;
sub subnodes (\@@) {
#Subtract set of nodes from the first list
my $nodes = shift;
my $node;
foreach $node (@_) {
@$nodes = (grep(!/^$node$/,@$nodes));
}
}
sub expandatom {
my $atom = shift;
my @nodes= ();
if ($atom =~ /^\(.*\)$/) { # handle parentheses by recursively calling namerange()
$atom =~ s/^\((.*)\)$/$1/;
$recurselevel++;
return namerange($atom);
}
if ($atom =~ /@/) {
$recurselevel++;
return namerange($atom);
}
if ($atom =~ m/^\//) { # A regular expression - not supported in namerange
return ($atom);
}
if ($atom =~ m/(.*)\[(.*)\](.*)/) { # square bracket range
#for the time being, we are only going to consider one [] per atom
#xcat 1.2 does no better
my @subelems = split(/([\,\-\:])/,$2);
my $subrange="";
while (my $subelem = shift @subelems) {
my $subop=shift @subelems;
$subrange=$subrange."$1$subelem$3$subop";
}
foreach (split /,/,$subrange) {
my @newnodes=expandatom($_);
@nodes=(@nodes,@newnodes);
}
return @nodes;
}
if ($atom =~ m/\+/) { # process the + operator
$atom =~ m/^([^0-9]*)([0-9]+)([^\+]*)\+([0-9]+)/;
my $pref=$1;
my $startnum=$2;
my $suf=$3;
my $end=$4+$startnum;
my $endnum = sprintf("%d",$end);
if (length ($startnum) > length ($endnum)) {
$endnum = sprintf("%0".length($startnum)."d",$end);
}
foreach ("$startnum".."$endnum") {
my @addnodes=expandatom($pref.$_.$suf);
@nodes=(@nodes,@addnodes);
}
return (@nodes);
}
if ($atom =~ m/[-:]/) { # process the minus range operator
my $left;
my $right;
if ($atom =~ m/:/) {
($left,$right)=split /:/,$atom;
} else {
my $count= ($atom =~ tr/-//);
if (($count % 2)==0) { #can't understand even numbers of - in range context
# we might not really be in range context
return ($atom);
}
my $expr="([^-]+?".("-[^-]*"x($count/2)).")-(.*)";
$atom =~ m/$expr/;
$left=$1;
$right=$2;
}
if ($left eq $right) { #if they said node1-node1 for some strange reason
return expandatom($left);
}
my @leftarr=split(/(\d+)/,$left);
my @rightarr=split(/(\d+)/,$right);
if (scalar(@leftarr) != scalar(@rightarr)) { #Mismatch formatting..
# guess it's meant to be a nodename
return ($atom);
}
my $prefix = "";
my $suffix = "";
foreach (0..$#leftarr) {
my $idx = $_;
if ($leftarr[$idx] =~ /^\d+$/ and $rightarr[$idx] =~ /^\d+$/) { #pure numeric component
if ($leftarr[$idx] ne $rightarr[$idx]) { #We have found the iterator (only supporting one for now)
my $prefix = join('',@leftarr[0..($idx-1)]); #Make a prefix of the pre-validated parts
my $luffix; #However, the remainder must still be validated to be the same
my $ruffix;
if ($idx eq $#leftarr) {
$luffix="";
$ruffix="";
} else {
$ruffix = join('',@rightarr[($idx+1)..$#rightarr]);
$luffix = join('',@leftarr[($idx+1)..$#leftarr]);
}
if ($luffix ne $ruffix) { #the suffixes mismatched..
return ($atom);
}
foreach ($leftarr[$idx]..$rightarr[$idx]) {
my @addnodes=expandatom($prefix.$_.$luffix);
@nodes=(@nodes,@addnodes);
}
return (@nodes); #the return has been built, return, exiting loop and all
}
} elsif ($leftarr[$idx] ne $rightarr[$idx]) {
return ($atom);
}
$prefix .= $leftarr[$idx]; #If here, it means that the pieces were the same, but more to come
}
#I cannot conceive how the code could possibly be here, but whatever it is, it must be questionable
return ($atom);
}
return ($atom);
}
sub namerange {
#We for now just do left to right operations
my $range=shift;
my %nodes = ();
my %delnodes = ();
my $op = ",";
my @elems = split(/(,(?![^[]*?])(?![^\(]*?\)))/,$range); # commas outside of [] or ()
if (scalar(@elems)==1) {
@elems = split(/(@(?![^\(]*?\)))/,$range); # only split on @ when no , are present (inner recursion)
}
while (my $atom = shift @elems) {
if ($atom =~ /^-/) { # if this is an exclusion, strip off the minus, but remember it
$atom = substr($atom,1);
$op = $op."-";
}
if ($atom =~ /^\^(.*)$/) { # get a list of nodes from a file
open(NRF,$1);
while (<NRF>) {
my $line=$_;
unless ($line =~ m/^[\^#]/) {
$line =~ m/^([^: ]*)/;
my $newrange = $1;
chomp($newrange);
$recurselevel++;
my @filenodes = namerange($newrange);
foreach (@filenodes) {
$nodes{$_}=1;
}
}
}
close(NRF);
next;
}
my %newset = map { $_ =>1 } expandatom($atom); # expand the atom and make each entry in the resulting array a key in newset
if ($op =~ /@/) { # compute the intersection of the current atom and the node list we have received before this
foreach (keys %nodes) {
unless ($newset{$_}) {
delete $nodes{$_};
}
}
} elsif ($op =~ /,-/) { # add the nodes from this atom to the exclude list
foreach (keys %newset) {
$delnodes{$_}=1; #delay removal to end
}
} else { # add the nodes from this atom to the total node list
foreach (keys %newset) {
$nodes{$_}=1;
}
}
$op = shift @elems;
} # end of main while loop
# Now remove all the exclusion nodes
foreach (keys %nodes) {
if ($delnodes{$_}) {
delete $nodes{$_};
}
}
if ($recurselevel) {
$recurselevel--;
}
return sort (keys %nodes);
}
1;
=head1 NAME
xCAT::NameRange - Perl module for xCAT namerange expansion
=head1 SYNOPSIS
use xCAT::NameRange;
my @nodes=namerange("storage@rack1,node[1-200],^/tmp/nodelist,node300-node400,node401+10,500-550");
=head1 DESCRIPTION
namerange interprets xCAT noderange formatted strings and returns a list of
names. The following two operations are supported on elements, and interpreted
left to right:
, union next element with everything to the left.
@ take intersection of element to the right with everything on the left
(i.e. mask out anything to the left not belonging to what is described to
the right)
Each element can be a number of things:
A node name, i.e.:
=item * node1
A hyphenated node range (only one group of numbers may differ between the left and right hand side, and those numbers will increment in a base 10 fashion):
node1-node200 node1-compute-node200-compute
node1:node200 node1-compute:node200-compute
A namerange denoted by brackets:
node[1-200] node[001-200]
A regular expression describing the namerange:
/d(1.?.?|200)
A node plus offset (this increments the first number found in nodename):
node1+199
And most of the above substituting groupnames.
3C
3C
NameRange tries to be intelligent about detecting padding, so you can:
node001-node200
And it will increment according to the pattern.
=head1 COPYRIGHT
Copyright 2007 IBM Corp. All rights reserved.
=cut
+24 -5
View File
@@ -422,11 +422,6 @@ sub ishostinsubnet {
if ($ip =~ /:/) {#ipv6
$numbits=128;
}
# IPv6 subnet with netmask postfix like /64
if ($subnet && ($subnet =~ /\//))
{
$subnet =~ s/\/.*$//;
}
if ($mask) {
if ($mask =~ /\//) {
$mask =~ s/^\///;
@@ -442,6 +437,10 @@ sub ishostinsubnet {
die "ishostinsubnet must either be called with a netmask or CIDR /bits notation";
}
}
if ($subnet && ($subnet =~ /\//)) #remove CIDR suffix from subnet
{
$subnet =~ s/\/.*$//;
}
$ip = getipaddr($ip,GetNumber=>1);
$subnet = getipaddr($subnet,GetNumber=>1);
$ip &= $mask;
@@ -2254,6 +2253,26 @@ sub int_to_ip
#-------------------------------------------------------------------------------
=head3 getBroadcast
Description : Get the broadcast ips
Arguments : ipstr - the IPv4 string ip.
netmask - the subnet mask of network
Returns : bcipint - the IPv4 string of broadcast ip.
=cut
#-------------------------------------------------------------------------------
sub getBroadcast
{
my ($class, $ipstr, $netmask) = @_;
my $ipint = xCAT::NetworkUtils->ip_to_int($ipstr);
my $maskint = xCAT::NetworkUtils->ip_to_int($netmask);
my $tmp = sprintf("%d", ~$maskint);
my $bcnum = sprintf("%d", ($ipint | $tmp) & hex('0x00000000FFFFFFFF'));
return xCAT::NetworkUtils->int_to_ip($bcnum);
}
#-------------------------------------------------------------------------------
=head3 get_allips_in_range
Description : Get all IPs in a IP range, return in a list.
Arguments : $startip - start IP address
+99 -33
View File
@@ -1,5 +1,6 @@
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
package xCAT::NodeRange;
use Text::Balanced qw/extract_bracketed/;
require xCAT::Table;
require Exporter;
use strict;
@@ -148,7 +149,7 @@ sub nodesbycriteria {
}
if ($neednewcache) {
if ($nodelist) {
$nodelist->_clear_cache();
#$nodelist->_clear_cache();
$nodelist->_build_cache(\@cachedcolumns);
}
}
@@ -180,7 +181,14 @@ sub nodesbycriteria {
return \%critnodes;
}
sub expandatom { #TODO: implement table selection as an atom (nodetype.os==rhels5.3)
# Expand one part of the noderange from the noderange() function. Initially, one part means the
# substring between commas in the noderange. But expandatom also calls itself recursively to
# further expand some parts.
# Input args:
# - atom to expand
# - verify: whether or not to require that the resulting nodenames exist in the nodelist table
# - options: genericrange - a purely syntactical expansion of the range, not using the db at all, e.g not expanding group names
sub expandatom {
my $atom = shift;
if ($recurselevel > 4096) { die "NodeRange seems to be hung on evaluating $atom, recursion limit hit"; }
unless (scalar(@allnodeset) and (($allnodesetstamp+5) > time())) { #Build a cache of all nodes, some corner cases will perform worse, but by and large it will do better. We could do tests to see where the breaking points are, and predict how many atoms we have to evaluate to mitigate, for now, implement the strategy that keeps performance from going completely off the rails
@@ -189,25 +197,28 @@ sub expandatom { #TODO: implement table selection as an atom (nodetype.os==rhels
@allnodeset = $nodelist->getAllAttribs('node','groups');
%allnodehash = map { $_->{node} => 1 } @allnodeset;
}
my $verify = (scalar(@_) == 1 ? shift : 1);
my $verify = (scalar(@_) >= 1 ? shift : 1);
my %options = @_; # additional options
my @nodes= ();
#TODO: these env vars need to get passed by the client to xcatd
my $nprefix=(defined ($ENV{'XCAT_NODE_PREFIX'}) ? $ENV{'XCAT_NODE_PREFIX'} : 'node');
my $nsuffix=(defined ($ENV{'XCAT_NODE_SUFFIX'}) ? $ENV{'XCAT_NODE_SUFFIX'} : '');
if ($allnodehash{$atom}) { #The atom is a plain old nodename
if (not $options{genericrange} and $allnodehash{$atom}) { #The atom is a plain old nodename
return ($atom);
}
if ($atom =~ /^\(.*\)$/) { # handle parentheses by recursively calling noderange()
$atom =~ s/^\((.*)\)$/$1/;
$recurselevel++;
return noderange($atom);
return noderange($atom,$verify,1,%options);
}
if ($atom =~ /@/) {
$recurselevel++;
return noderange($atom);
return noderange($atom,$verify,1,%options);
}
# Try to match groups?
unless ($options{genericrange}) {
unless ($grptab) {
$grptab = xCAT::Table->new('nodegroup');
}
@@ -269,7 +280,9 @@ sub expandatom { #TODO: implement table selection as an atom (nodetype.os==rhels
}
}
}
}
# node selection based on db attribute values (nodetype.os==rhels5.3)
if ($atom =~ m/[=~]/) { #TODO: this is the clunky, slow code path to acheive the goal. It also is the easiest to write, strange coincidence. Aggregating multiples would be nice
my @nodes;
foreach (@allnodeset) {
@@ -287,7 +300,7 @@ sub expandatom { #TODO: implement table selection as an atom (nodetype.os==rhels
}
if ($atom =~ m/^[0-9]+\z/) { # if only numbers, then add the prefix
my $nodename=$nprefix.$atom.$nsuffix;
return expandatom($nodename,$verify);
return expandatom($nodename,$verify,%options);
}
my $nodelen=@nodes;
if ($nodelen > 0) {
@@ -295,7 +308,7 @@ sub expandatom { #TODO: implement table selection as an atom (nodetype.os==rhels
}
if ($atom =~ m/^\//) { # A regular expression
unless ($verify) { # If not in verify mode, regex makes zero possible sense
if ($verify==0 or $options{genericrange}) { # If not in verify mode, regex makes zero possible sense
return ($atom);
}
#TODO: check against all groups
@@ -309,25 +322,29 @@ sub expandatom { #TODO: implement table selection as an atom (nodetype.os==rhels
}
if ($atom =~ m/(.+?)\[(.+?)\](.*)/) { # square bracket range
# if there are more than 1 [], we picked off just the 1st. if there is another, we will process it later
my @subelems = split(/([\,\-\:])/,$2);
# if there is more than 1 set of [], we picked off just the 1st. If there more sets of [], we will expand
# the 1st set and create a new set of atom by concatenating each result in the 1st expandsion with the rest
# of the brackets. Then call expandatom() recursively on each new atom.
my @subelems = split(/([\,\-\:])/,$2); # $2 is the range inside the 1st set of brackets
my $subrange="";
my $subelem;
my $start = $1;
my $ending = $3;
my $morebrackets = $ending =~ /\[.+?\]/; # if there are more brackets, we have to expand just the 1st part, then add the 2nd part later
while (scalar @subelems) {
my $subelem = shift @subelems;
my $subelem;
my $start = $1; # the text before the 1st set of brackets
my $ending = $3; # the text after the 1st set of brackets (could contain more brackets)
my $morebrackets = $ending =~ /\[.+?\]/; # if there are more brackets, we have to expand just the 1st part, then add the 2nd part later
while (scalar @subelems) { # this while loop turns something like a[1-3] into a1-a3 because another section of expand atom knows how to expand that
my $subelem = shift @subelems;
my $subop=shift @subelems;
$subrange=$subrange."$start$subelem" . ($morebrackets?'':$ending) . "$subop";
}
foreach (split /,/,$subrange) {
my @newnodes=expandatom($_, ($morebrackets?0:$verify));
foreach (split /,/,$subrange) { # this foreach is in case there were commas inside the brackets originally, e.g.: a[1,3,5]b[1-2]
# this expandatom just expands the part of the noderange that contains the 1st set of brackets
# e.g. if noderange is a[1-2]b[1-2] it will create newnodes of a1 and a2
my @newnodes=expandatom($_, ($morebrackets?0:$verify), genericrange=>($morebrackets||$options{genericrange}));
if (!$morebrackets) { push @nodes,@newnodes; }
else {
# for each of the new nodes, add the 2nd brackets and then expand
# for each of the new nodes (prefixes), add the rest of the brackets and then expand recursively
foreach my $n (@newnodes) {
push @nodes, expandatom("$n$ending", $verify);
push @nodes, expandatom("$n$ending", $verify, %options);
}
}
}
@@ -349,7 +366,7 @@ sub expandatom { #TODO: implement table selection as an atom (nodetype.os==rhels
$suf=$nsuffix;
}
foreach ("$startnum".."$endnum") {
my @addnodes=expandatom($pref.$_.$suf,$verify);
my @addnodes=expandatom($pref.$_.$suf,$verify,%options);
@nodes=(@nodes,@addnodes);
}
return (@nodes);
@@ -376,7 +393,7 @@ sub expandatom { #TODO: implement table selection as an atom (nodetype.os==rhels
$right=$2;
}
if ($left eq $right) { #if they said node1-node1 for some strange reason
return expandatom($left,$verify);
return expandatom($left,$verify,%options);
}
my @leftarr=split(/(\d+)/,$left);
my @rightarr=split(/(\d+)/,$right);
@@ -413,7 +430,7 @@ sub expandatom { #TODO: implement table selection as an atom (nodetype.os==rhels
}
}
foreach ($leftarr[$idx]..$rightarr[$idx]) {
my @addnodes=expandatom($prefix.$_.$luffix,$verify);
my @addnodes=expandatom($prefix.$_.$luffix,$verify,%options);
push @nodes,@addnodes;
}
return (@nodes); #the return has been built, return, exiting loop and all
@@ -461,7 +478,7 @@ sub retain_cache { #A semi private operation to be used *ONLY* in the interestin
%allgrphash=();
}
}
sub extnoderange { #An extended noderange function. Needed as the more straightforward function return format too simple for this.
sub extnoderange { #An extended noderange function. Needed by the GUI as the more straightforward function return format too simple for this.
my $range = shift;
my $namedopts = shift;
my $verify=1;
@@ -487,7 +504,7 @@ sub extnoderange { #An extended noderange function. Needed as the more straight
return $return;
}
sub abbreviate_noderange {
#takes a list of nodes or a string and abbreviates
#takes a list of nodes or a string and reduces it by replacing a list of nodes that make up a group with the group name itself
my $nodes=shift;
my %grouphash;
my %sizedgroups;
@@ -533,16 +550,40 @@ sub abbreviate_noderange {
return (join ',',keys %targetelems,keys %nodesleft);
}
sub set_arith {
my $operand = shift;
my $op = shift;
my $newset = shift;
if ($op =~ /@/) { # compute the intersection of the current atom and the node list we have received before this
foreach (keys %$operand) {
unless ($newset->{$_}) {
delete $operand->{$_};
}
}
} elsif ($op =~ /,-/) { # add the nodes from this atom to the exclude list
foreach (keys %$newset) {
delete $operand->{$_}
}
} else { # add the nodes from this atom to the total node list
foreach (keys %$newset) {
$operand->{$_}=1;
}
}
}
# Expand the given noderange
# Input args:
# - noderange to expand
# - verify: whether or not to require that the resulting nodenames exist in the nodelist table
# - exsitenode: whether or not to honor site.excludenodes to automatically exclude those nodes from all noderanges
# - options: genericrange - a purely syntactical expansion of the range, not using the db at all, e.g not expanding group names
sub noderange {
$missingnodes=[];
#We for now just do left to right operations
my $range=shift;
$range =~ s/['"]//g;
my $verify = (scalar(@_) >= 1 ? shift : 1);
#excludenodes attribute in site table,
#these nodes should be excluded for any xCAT commands
my $exsitenode = (scalar(@_) >= 1 ? shift : 1);
my $exsitenode = (scalar(@_) >= 1 ? shift : 1); # if 1, honor site.excludenodes
my %options = @_; # additional options
unless ($nodelist) {
$nodelist =xCAT::Table->new('nodelist',-create =>1);
@@ -553,20 +594,45 @@ sub noderange {
}
my %nodes = ();
my %delnodes = ();
if ($range =~ /\(/) {
my ($middle, $end, $start) =
extract_bracketed($range, '()', qr/[^()]*/);
unless ($middle) { die "Unbalanced parentheses in noderange" }
$middle = substr($middle,1,-1);
my $op = ",";
if ($start =~ m/-$/) { #subtract the parenthetical
$op .= "-"
} elsif ($start =~ m/\@$/) {
$op = "@"
}
$start =~ s/,-$//;
$start =~ s/,$//;
$start =~ s/\@$//;
%nodes = map { $_ => 1 } noderange($start,$verify,$exsitenode,%options);
my %innernodes = map { $_ => 1 } noderange($middle,$verify,$exsitenode,%options);
set_arith(\%nodes,$op,\%innernodes);
$range = $end;
}
my $op = ",";
my @elems = split(/(,(?![^[]*?])(?![^\(]*?\)))/,$range); # commas outside of [] or ()
if (scalar(@elems)==1) {
@elems = split(/(@(?![^\(]*?\)))/,$range); # only split on @ when no , are present (inner recursion)
}
while (my $atom = shift @elems) {
while (defined(my $atom = shift @elems)) {
if ($atom eq '') { next; }
if ($atom eq ',') {
next;
}
if ($atom =~ /^-/) { # if this is an exclusion, strip off the minus, but remember it
$atom = substr($atom,1);
$op = $op."-";
} elsif ($atom =~ /^\@/) { # if this is an exclusion, strip off the minus, but remember it
$atom = substr($atom,1);
$op = "@";
}
if ($atom eq '') { next; }
if ($atom =~ /^\^(.*)$/) { # get a list of nodes from a file
open(NRF,$1);
@@ -577,7 +643,7 @@ sub noderange {
my $newrange = $1;
chomp($newrange);
$recurselevel++;
my @filenodes = noderange($newrange);
my @filenodes = noderange($newrange,$verify,$exsitenode,%options);
foreach (@filenodes) {
$nodes{$_}=1;
}
@@ -587,7 +653,7 @@ sub noderange {
next;
}
my %newset = map { $_ =>1 } expandatom($atom,$verify); # expand the atom and make each entry in the resulting array a key in newset
my %newset = map { $_ =>1 } expandatom($atom,$verify,%options); # expand the atom and make each entry in the resulting array a key in newset
if ($op =~ /@/) { # compute the intersection of the current atom and the node list we have received before this
foreach (keys %nodes) {
@@ -614,7 +680,7 @@ sub noderange {
my $badnoderange = 0;
my @badnodes = ();
if ($::XCATSITEVALS{excludenodes}) {
@badnodes = noderange($::XCATSITEVALS{excludenodes}, 1, 0);
@badnodes = noderange($::XCATSITEVALS{excludenodes}, 1, 0, %options);
foreach my $bnode (@badnodes) {
if (!$delnodes{$bnode}) {
$delnodes{$bnode} = 1;
+3 -3
View File
@@ -139,7 +139,7 @@ sub connect {
my $timeout = $req->{ppctimeout};
my $verbose = $req->{verbose};
my $ssh;
my $expect_log;
my $expect_log = "/dev/null";
my $errmsg;
if ($req->{command} eq 'rflash') {
@@ -170,7 +170,7 @@ sub connect {
##################################################
if ( $verbose ) {
close STDERR;
if ( !open( STDERR, '>', \$expect_log )) {
if ( !open( STDERR, '>', $expect_log )) {
return( "Unable to redirect STDERR: $!" );
}
}
@@ -179,7 +179,7 @@ sub connect {
##################################################
if ( $verbose ) {
close STDOUT;
if ( !open( STDOUT, '>', \$expect_log )) {
if ( !open( STDOUT, '>', $expect_log )) {
return( "Unable to redirect STDOUT: $!" );
}
}
+3
View File
@@ -490,6 +490,9 @@ sub mkhwconn
my $ntype = $$d[4];
if ($ntype =~ /^(cec|frame|blade)$/)
{
if ($ntype eq "blade") {
delete $opt->{port};
}
$cnode = xCAT::DBobjUtils::getchildren($node_name, $opt->{port});
} else {
$cnode = $node_name;
+112 -5
View File
@@ -7,6 +7,7 @@ use xCAT::GlobalDef;
use xCAT::Utils;
use xCAT::TableUtils;
use xCAT::NetworkUtils;
require xCAT::data::ibmhwtypes;
###########################################
# Factory defaults
@@ -100,7 +101,6 @@ sub add_ppc {
$parent,
$ips,
$mac ) = split /,/;
###############################
# Update nodetype table
###############################
@@ -168,6 +168,10 @@ sub add_ppc {
# Update nodelist table
###########################
updategroups( $name, $db{nodelist}, $type );
my $tmp_group = xCAT::data::ibmhwtypes::parse_group($model);
if (defined($tmp_group)) {
updategroups($name, $db{nodelist}, $tmp_group);
}
if ( $type =~ /^(fsp|bpa)$/ ) {
$db{nodelist}->setNodeAttribs( $name, {hidden => '1'});
} else {
@@ -236,6 +240,97 @@ sub add_ppc {
}
return undef;
}
##########################################################################
# Update lpar information in the xCAT databases
##########################################################################
sub update_lpar {
my $hwtype = shift;
my $values = shift;
my $write = shift;
my @tabs = qw(ppc vpd nodehm nodelist nodetype ppcdirect hosts mac);
my %db = ();
my @update_list = ();
my @write_list = ();
###################################
# Open database needed
###################################
foreach ( @tabs ) {
$db{$_} = xCAT::Table->new( $_, -create=>1, -autocommit=>0 );
if ( !$db{$_} ) {
return( "Error opening '$_'" );
}
}
my @vpdlist = $db{vpd}->getAllNodeAttribs(['node','serial','mtm','side']);
my @ppclist = $db{ppc}->getAllNodeAttribs(['node','hcp','id',
'pprofile','parent','nodetype',
'comments', 'disable']);
# 'cec,cec1,,8246-L1D,100A9DA,,cec1,,cec1',
# 'lpar,10-0A9DA,1,8246-L1D,100A9DA,,cec1,,cec1'
my %ppchash = ();
my %vpdhash = ();
foreach my $ppcent (@ppclist) {
if ($ppcent->{id} and $ppcent->{nodetype} and $ppcent->{nodetype} eq "lpar") {
my $key = $ppcent->{node};
$ppchash{$key}{id} = $ppcent->{id};
$ppchash{$key}{parent} = $ppcent->{parent};
}
}
foreach my $vpdent (@vpdlist)
{
my $key = $vpdent->{node};
$vpdhash{$key}{mtm} = $vpdent->{mtm};
$vpdhash{$key}{serial} = $vpdent->{serial};
}
my @ppc_lpars = keys %ppchash;
foreach my $value ( @$values ) {
my ($ttype,
$tname,
$tid,
$tmtm,
$tsn,
$tside,
$server,
$pprofile,
$parent) = split /,/, $value;
if ($ttype ne "lpar") {
push @update_list, $value;
next;
}
my $find_node = undef;
foreach my $tmp_node (@ppc_lpars) {
if ($ppchash{$tmp_node}{id} eq $tid) {
if (exists($ppchash{$tmp_node}{parent}) and $ppchash{$tmp_node}{parent} eq $parent) {
$find_node = $tmp_node;
last;
} elsif ($vpdhash{$tmp_node}{mtm} eq $tmtm and $vpdhash{$tmp_node}{serial} eq $tsn) {
$find_node = $tmp_node;
last;
}
}
}
if (defined($find_node)) {
if ( update_node_attribs($hwtype, $ttype, $find_node, $tid, $tmtm, $tsn, $tside,
$server, $pprofile, $parent, "", \%db, $tname, \@ppclist))
{
$value =~ s/^$ttype,$tname,/$ttype,$find_node,/;
push @update_list, $value;
}
} elsif (defined($write)) {
push @write_list, $value;
}
}
if (defined($write)) {
&add_ppc($hwtype, \@write_list);
return ([@update_list,@write_list]);
} else {
foreach ( @tabs ) {
if ( exists( $db{$_}{commit} )) {
$db{$_}->commit;
}
}
return \@update_list;
}
}
##########################################################################
# Update nodes in the xCAT databases
@@ -278,7 +373,6 @@ sub update_ppc {
$pprofile,
$parent,
$ips ) = split /,/, $value;
if ( $ttype eq 'cec' )
{
my $hostname = get_host($tname, "FSP", $tmtm, $tsn, "", "", $tid, "","");
@@ -329,9 +423,7 @@ sub update_ppc {
$pprofile,
$parent,
$ips ) = split /,/, $value;
next if ( $type ne 'cec' );
my $predefined_node = undef;
foreach my $vpdent (@vpdlist)
{
@@ -525,6 +617,10 @@ sub update_node_attribs
if ( $namediff)
{
updategroups( $name, $db->{nodelist}, $type );
my $tmp_group = xCAT::data::ibmhwtypes::parse_group($model);
if (defined($tmp_group)) {
updategroups($name, $db->{nodelist}, $tmp_group);
}
$db->{nodelist}->setNodeAttribs( $name, {status=>$nodelisthash->{status},
appstatus=>$nodelisthash->{appstatus},
primarysn=>$nodelisthash->{primarysn},
@@ -888,6 +984,18 @@ sub get_usr_passwd {
} else {
($ent) = $passwdtab->getNodeAttribs($key, qw(username password));
}
if (!$ent) {
if ($key eq "cec") {
$key = "fsp";
} elsif ($key eq "frame") {
$key = "bpa";
}
if ($user) {
($ent) = $passwdtab->getAttribs({key => $key, username => $user}, qw(password cryptmethod));
} else {
($ent) = $passwdtab->getNodeAttribs($key, qw(username password));
}
}
if (!$ent or !$ent->{password}) {
my $hash = $default_passwd_accounts{$key};
if (!$hash or ($user and !defined($hash->{$user}))) {
@@ -958,7 +1066,6 @@ sub get_host {
# get the information of existed nodes to do the migration
read_from_table() unless (%::OLD_DATA_CACHE);
foreach my $oldnode ( keys %::OLD_DATA_CACHE )
{
my $tmpmtm = @{$::OLD_DATA_CACHE{$oldnode}}[0];
+12 -1
View File
@@ -5,6 +5,8 @@ use strict;
use Getopt::Long;
use xCAT::PPCcli qw(SUCCESS EXPECT_ERROR RC_ERROR NR_ERROR);
use xCAT::Usage;
use xCAT::TableUtils;
require xCAT::data::ibmhwtypes;
##########################################
@@ -59,7 +61,7 @@ sub parse_args {
$Getopt::Long::ignorecase = 0;
Getopt::Long::Configure( "bundling" );
if ( !GetOptions( \%opt, qw(V|verbose) )) {
if ( !GetOptions( \%opt, qw(V|verbose t) )) {
return( usage() );
}
####################################
@@ -75,6 +77,9 @@ sub parse_args {
if ( !defined( $cmd )) {
return(usage( "Invalid command: $ARGV[0]" ));
}
if (exists($opt{t}) and $cmd ne "model") {
return(["Option 't' can only work with 'model'."]);
}
####################################
# Check for an extra argument
####################################
@@ -411,6 +416,12 @@ sub vpd {
#############################
# Output value
#############################
if ($_ eq 'model' and exists($request->{opt}->{t})) {
my $tmp_pre = xCAT::data::ibmhwtypes::parse_args($data->{$_});
if (defined($tmp_pre)) {
xCAT::TableUtils->updatenodegroups($name, $tmp_pre);
}
}
my $value = "@{$prefix{$_}}[0]: $data->{$_}";
push @result, [$name,$value,$Rc];
}
+28 -4
View File
@@ -11,7 +11,7 @@ use xCAT::PPCdb;
use xCAT::GlobalDef;
use xCAT::Usage;
use xCAT::NetworkUtils;
require xCAT::data::ibmhwtypes;
##############################################
# Globals
@@ -545,6 +545,7 @@ sub format_stanza {
#################################
# Add each attribute
#################################
my $mtm = undef;
foreach ( @attribs ) {
my $d = $data[$i++];
@@ -555,7 +556,8 @@ sub format_stanza {
} elsif ( /^hwtype$/ ) {
$d = $globalhwtype{$type};
} elsif ( /^groups$/ ) {
$d = "$type,all";
next;
#$d = "$type,all";
} elsif ( /^mgt$/ ) {
$d = $hwtype;
} elsif ( /^cons$/ ) {
@@ -568,7 +570,9 @@ sub format_stanza {
} elsif ( /^(mtm|serial)$/ ) {
if ( $type eq "lpar" ) {
$d = undef;
}
} elsif (/^mtm$/) {
$mtm = $d;
}
} elsif (/^side$/) {
unless ( $type =~ /^fsp|bpa$/ ) {
next;
@@ -576,6 +580,14 @@ sub format_stanza {
}
$result .= "\t$_=$d\n";
}
my $tmp_groups = "$type,all";
if (defined($mtm)) {
my $tmp_pre = xCAT::data::ibmhwtypes::parse_group($mtm);
if (defined($tmp_pre)) {
$tmp_groups .= ",$tmp_pre";
}
}
$result .= "\tgroups=$tmp_groups\n";
}
return( $result );
}
@@ -623,6 +635,7 @@ sub format_xml {
#################################
# Add each attribute
#################################
my $mtm = undef;
foreach ( @attribs ) {
my $d = $data[$i++];
@@ -631,7 +644,8 @@ sub format_xml {
} elsif ( /^hwtype$/ ) {
$d = $globalhwtype{$type};
} elsif ( /^groups$/ ) {
$d = "$type,all";
next;
#$d = "$type,all";
} elsif ( /^mgt$/ ) {
$d = $hwtype;
} elsif ( /^cons$/ ) {
@@ -643,6 +657,8 @@ sub format_xml {
} elsif ( /^(mtm|serial)$/ ) {
if ( $type eq "lpar" ) {
$d = undef;
} elsif (/^mtm$/){
$mtm = $d;
}
} elsif (/^side$/) {
unless ( $type =~ /^fsp|bpa$/ ) {
@@ -651,6 +667,14 @@ sub format_xml {
}
$href->{Node}->{$_} = $d;
}
my $tmp_groups = "$type,all";
if (defined($mtm)) {
my $tmp_pre = xCAT::data::ibmhwtypes::parse_group($mtm);
if (defined($tmp_pre)) {
$tmp_groups .= ",$tmp_pre";
}
}
$href->{Node}->{groups}=$tmp_groups;
#################################
# XML encoding
#################################
+192 -10
View File
@@ -52,14 +52,21 @@ sub get_allocable_staticips_innet
my $netentry = ($networkstab->getAllAttribsWhere("netname = '$netname'", 'ALL'))[0];
my ($startip, $endip) = split('-', $netentry->{'staticrange'});
my $incremental = $netentry->{'staticrangeincrement'};
my $netmask = $netentry->{'mask'};
my $gateway = $netentry->{'gateway'};
my $validipsref;
if ($incremental and $startip and $endip){
$validipsref = xCAT::NetworkUtils->get_allips_in_range($startip, $endip, $incremental);
}
my $broadcastip = xCAT::NetworkUtils->getBroadcast($startip, $netmask);
foreach (@$validipsref){
if (! exists($iphash{$_})){
push @allocableips, $_;
#Remove ip which is broadcast ip, exclude ip, ips ended with 0, gateway ip
if (exists($iphash{$_}) or $_ eq $broadcastip or $_ eq $gateway
or $_ =~ /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(0)$/){
next;
}
push @allocableips, $_;
}
return \@allocableips;
}
@@ -258,6 +265,7 @@ sub rackformat_to_numricformat{
values are attributes of a specific nic, like:
type : nic type
hostnamesuffix: hostname suffix
hostnameprefix: hostname prefix
customscript: custom script for this nic
network: network name for this nic
ip: ip address of this nic.
@@ -269,7 +277,7 @@ sub get_nodes_nic_attrs{
my $nodes = shift;
my $nicstab = xCAT::Table->new( 'nics');
my $entry = $nicstab->getNodesAttribs($nodes, ['nictypes', 'nichostnamesuffixes', 'niccustomscripts', 'nicnetworks', 'nicips']);
my $entry = $nicstab->getNodesAttribs($nodes, ['nictypes', 'nichostnamesuffixes', 'nichostnameprefixes', 'niccustomscripts', 'nicnetworks', 'nicips']);
my %nicsattrs;
my @nicattrslist;
@@ -301,6 +309,20 @@ sub get_nodes_nic_attrs{
}
}
if($entry->{$node}->[0]->{'nichostnameprefixes'}){
@nicattrslist = split(",", $entry->{$node}->[0]->{'nichostnameprefixes'});
foreach (@nicattrslist){
my @nicattrs;
if ($_ =~ /!/) {
@nicattrs = split("!", $_);
} else {
@nicattrs = split(":", $_);
}
$nicsattrs{$node}{$nicattrs[0]}{'hostnameprefix'} = $nicattrs[1];
}
}
if($entry->{$node}->[0]->{'niccustomscripts'}){
@nicattrslist = split(",", $entry->{$node}->[0]->{'niccustomscripts'});
foreach (@nicattrslist){
@@ -543,6 +565,96 @@ sub get_allnode_singleattrib_hash
#-------------------------------------------------------------------------------
=head3 get_db_swtiches
Description : Get all records of switch config from a table, then return a string list.
Arguments : $tabname - the table name.
Returns : Reference of the records hash.
=cut
#-------------------------------------------------------------------------------
sub get_db_switches
{
my $class = shift;
my $table = xCAT::Table->new("switches");
my @attribs = ("switch");
my @entries = $table->getAllAttribs(@attribs);
$table->close();
my %allrecords;
foreach (@entries)
{
if ($_->{'switch'}){
$allrecords{$_->{'switch'}} = 0;
}
}
return \%allrecords;
}
#-------------------------------------------------------------------------------
=head3 get_db_swtichports
Description : Get all records of switch config from a table, then return a string list.
Arguments : $tabname - the table name.
Returns : Reference of the records hash.
=cut
#-------------------------------------------------------------------------------
sub get_db_switchports
{
my $class = shift;
my $table = xCAT::Table->new("switch");
my @attribs = ("switch", "port");
my @entries = $table->getAllAttribs(@attribs);
$table->close();
my %allrecords;
foreach (@entries)
{
$allrecords{$_->{'switch'} . "_" . $_->{'port'}} = 0;
}
return \%allrecords;
}
#-------------------------------------------------------------------------------
=head3 get_all_cecs
Description : Get all CEC objects name in system.
Arguments : hashref: if not set, return a array ref.
if set, return a hash ref.
Returns : ref for CECs list.
Example :
my $arrayref = xCAT::ProfiledNodeUtils->get_all_cecs();
my $hashref = xCAT::ProfiledNodeUtils->get_all_cecs(1);
=cut
#-------------------------------------------------------------------------------
sub get_all_cecs
{
my $hashref = shift;
my %cecshash;
my @cecslist;
my $ppctab = xCAT::Table->new('ppc');
my @cecs = $ppctab->getAllAttribsWhere("nodetype = 'cec'", 'node');
foreach (@cecs) {
if($_->{'node'}) {
if ($hashref) {
$cecshash{$_->{'node'}} = 1;
} else {
push @cecslist, $_->{'node'};
}
}
}
$ppctab->close();
# Return the ref accordingly
if ($hashref) {
return \%cecshash;
} else {
return \@cecslist;
}
}
#-------------------------------------------------------------------------------
=head3 is_discover_started
Description : Judge whether profiled nodes discovering is running or not.
Arguments : NA
@@ -607,6 +719,28 @@ sub get_nodes_profiles
return \%profile_dict;
}
#-------------------------------------------------------------------------------
=head3 get_imageprofile_prov_osvers
Description : Get A node's provisioning os version and profile from its imageprofile attribute.
Arguments : $imgprofilename - imageprofile name
Returns : node's osversion and profile
=cut
#-------------------------------------------------------------------------------
sub get_imageprofile_prov_osvers
{
my $class = shift;
my $imgprofilename = shift;
my $osimgtab = xCAT::Table->new('osimage');
my $osimgentry = ($osimgtab->getAllAttribsWhere("imagename = '$imgprofilename'", 'ALL' ))[0];
my $osversion = $osimgentry->{'osvers'};
my $profile = $osimgentry->{'profile'};
return ($osversion, $profile);
}
#-------------------------------------------------------------------------------
=head3 get_imageprofile_prov_method
@@ -701,7 +835,14 @@ sub check_profile_consistent{
my $mgt = undef;
$mgt = $mgtentry->{'mgt'} if ($mgtentry->{'mgt'});
$nodehmtab->close();
#Get hardwareprofile nodetype
my $ppctab = xCAT::Table->new('ppc');
my $ntentry = $ppctab->getNodeAttribs($hardwareprofile, ['nodetype']);
my $nodetype = undef;
$nodetype = $ntentry->{'nodetype'} if ($ntentry->{'nodetype'});
$ppctab->close();
# Check if exists provision network
if (not ($installnic and exists $netprofile_nicshash{$installnic}{"network"})){
return 0, "Provisioning network not defined for network profile."
@@ -720,17 +861,24 @@ sub check_profile_consistent{
return 0, "$nictype networkprofile must use with hardwareprofile.";
}
}
if (not $nictype and $mgt) {
# define hardwareprofile, not define fsp or bmc networkprofile
# For nodetype is lpar node, not need to check the nictype as it is not required for lpar node
if (not $nictype and $mgt and $nodetype ne 'lpar' ) {
# define hardwareprofile, not define fsp or bmc networkprofile, and the node type is not lpar
return 0, "$profile_dict{$mgt} hardwareprofile must use with $profile_dict{$mgt} networkprofile.";
}
if ($profile_dict{$mgt} ne $nictype) {
# Networkprofile's nictype is not consistent with hadrwareprofile's mgt
if ($profile_dict{$mgt} ne $nictype and $nodetype ne 'lpar') {
# Networkprofile's nictype is not consistent with hadrwareprofile's mgt, and the node type is not lpar
return 0, "Networkprofile's nictype is not consistent with hardwareprofile's mgt.";
}
if ($nodetype eq 'lpar' and $nictype eq 'FSP')
{
# can not associate FSP network if the node type is lpar
return 0, "The node with hardware type $nodetype can not use with $nictype networkprofile.";
}
return 1, "";
}
@@ -889,6 +1037,40 @@ sub parse_nodeinfo_file
return 1, "";
}
#-------------------------------------------------------
=head3 update the table prodkey, in order to support windows
per node license key
Returns: $retcode.
$retcode = 1. update failed, the value is undef
$retcode = 0. save into db is OK..
=cut
#-------------------------------------------------------
sub update_windows_prodkey
{
my $class = shift;
my $node = shift;
my $product = shift;
my $key = shift;
unless(defined($node) && defined($product) && defined($key))
{
return 1;
}
# please notice this db usage
my %keyhash;
my %updates;
$keyhash{'node'} = $node;
$updates{'product'} = $product;
$updates{'key'} = $key;
my $tab = xCAT::Table->new('prodkey', -create=>1, -autocommit=>0);
$tab->setAttribs( \%keyhash,\%updates );
$tab->commit;
$tab->close;
return 0;
}
#-------------------------------------------------------------------------------
=head3 check_nicips
Description: Check if the nicips defined in MAC file is correct
+43 -31
View File
@@ -35,21 +35,22 @@ package xCAT::RemoteShellExp;
node.
DSH_TO_USERID - The userid on the node where the ssh keys will be updated.
DSH_ENABLE_SSH - Node to node root passwordless ssh will be setup.
DSH_ZONE_SSHKEYS - directory containing the zones root .ssh keys
Usage: remoteshellexp
[-t node list] test ssh connection to the node
[-k] Generates the ssh keys needed , for the user on the MN.
[-s node list] copies the ssh keys to the nodes
optional $timeout = timeout value for the expect. Usually from the xdsh -t flag
default timeout is 10 seconds
exit 0 - good
exit 1 - abort
exit 2 - usage error
Examples:
$rc=xCAT::RemoteShellExp->remoteshellexp("k",$callback,$remoteshellcmd);
$rc=xCAT::RemoteShellExp->remoteshellexp("s",$callback,$remoteshellcmd,$nodes);
$rc=xCAT::RemoteShellExp->remoteshellexp("t",$callback,$remoteshellcmd,$nodes);
$rc=xCAT::RemoteShellExp->remoteshellexp("k",$callback,$remoteshellcmd,$nodes,$timeout);
$rc=xCAT::RemoteShellExp->remoteshellexp("s",$callback,$remoteshellcmd,$nodes,$timeout);
$rc=xCAT::RemoteShellExp->remoteshellexp("t",$callback,$remoteshellcmd,$nodes,$timeout);
=cut
@@ -70,7 +71,7 @@ use strict;
#-----------------------------------------------------------------------------
sub remoteshellexp
{
my ($class, $flag, $callback, $remoteshell, $nodes) = @_;
my ($class, $flag, $callback, $remoteshell, $nodes, $timeout) = @_;
my $rc=0;
$::CALLBACK = $callback;
if (!($flag))
@@ -90,6 +91,10 @@ sub remoteshellexp
return 2;
}
my $expecttimeout=10; # default
if (defined($timeout)) { # value supplied
$expecttimeout=$timeout;
}
# for -s flag must have nodes and a $to_userid password
my $to_user_password;
@@ -139,7 +144,7 @@ sub remoteshellexp
} else {
$from_userid="root";
}
# set User on the node where we will send the keys
# set User on the node where we will send the keys
# this id can be a local id as well as root
if ($ENV{'DSH_TO_USERID'}) {
$to_userid=$ENV{'DSH_TO_USERID'};
@@ -149,18 +154,19 @@ sub remoteshellexp
# set User home directory to find the ssh public key to send
# For non-root ids information may not be in /etc/passwd
# but elsewhere like LDAP
if ($ENV{'DSH_FROM_USERID_HOME'}) {
$home=$ENV{'DSH_FROM_USERID_HOME'};
$home=$ENV{'DSH_FROM_USERID_HOME'};
} else {
$home=xCAT::Utils->getHomeDir($from_userid);
$home=xCAT::Utils->getHomeDir($from_userid);
}
# This indicates we will generate new ssh keys for the user,
# if they are not already there
my $key="$home/.ssh/id_rsa";
my $key2="$home/.ssh/id_rsa.pub";
# Check to see if empty
if (-z $key) {
# unless using zones
my $key="$home/.ssh/id_rsa";
my $key2="$home/.ssh/id_rsa.pub";
# Check to see if empty
if (-z $key) {
my $rsp = {};
$rsp->{error}->[0] =
"The $key file is empty. Remove it and rerun the command.";
@@ -178,9 +184,8 @@ sub remoteshellexp
}
if (($flag eq "k") && (!(-e $key)))
{
# if the file size of the id_rsa key is 0, tell them to remove it
# and run the command again
$rc=xCAT::RemoteShellExp->gensshkeys;
# updating keys and the key file does not exist
$rc=xCAT::RemoteShellExp->gensshkeys($expecttimeout);
}
# send ssh keys to the nodes/devices, to setup passwordless ssh
if ($flag eq "s")
@@ -193,15 +198,18 @@ sub remoteshellexp
return 1;
}
if ($ssh_setup_cmd) { # setup ssh on devices
$rc=xCAT::RemoteShellExp->senddeviceskeys($remoteshell,$remotecopy,$to_userid,$to_user_password,$home,$ssh_setup_cmd,$nodes);
$rc=xCAT::RemoteShellExp->senddeviceskeys($remoteshell,$remotecopy,$to_userid,$to_user_password,$home,$ssh_setup_cmd,$nodes, $expecttimeout);
} else { #setup ssh on nodes
$rc=xCAT::RemoteShellExp->sendnodeskeys($remoteshell,$remotecopy,$to_userid,$to_user_password,$home,$nodes);
if ($ENV{'DSH_ZONE_SSHKEYS'}) { # if using zones the override the location of the keys
$home= $ENV{'DSH_ZONE_SSHKEYS'};
}
$rc=xCAT::RemoteShellExp->sendnodeskeys($remoteshell,$remotecopy,$to_userid,$to_user_password,$home,$nodes, $expecttimeout);
}
}
# test ssh setup on the node
if ($flag eq "t")
{
$rc=xCAT::RemoteShellExp->testkeys($remoteshell,$to_userid,$nodes);
$rc=xCAT::RemoteShellExp->testkeys($remoteshell,$to_userid,$nodes,$expecttimeout);
}
return $rc;
}
@@ -220,9 +228,9 @@ sub remoteshellexp
sub gensshkeys
{
my ($class) = @_;
my ($class, $expecttimeout) = @_;
my $keygen;
my $timeout = 10; # sets Expect default timeout, 0 accepts immediately
my $timeout = $expecttimeout; # sets Expect default timeout, 0 accepts immediately
my $keygen_sent = 0;
my $prompt1 = 'Generating public/private rsa';
my $prompt2 = 'Enter file.*:';
@@ -347,9 +355,9 @@ sub gensshkeys
sub testkeys
{
my ($class,$remoteshell,$to_userid,$nodes) = @_;
my ($class,$remoteshell,$to_userid,$nodes, $expecttimeout) = @_;
my $testkeys;
my $timeout = 10; # sets Expect default timeout, 0 accepts immediately
my $timeout = $expecttimeout; # sets Expect default timeout
my $testkeys_sent = 0;
my $prompt1 = 'Are you sure you want to continue connecting (yes/no)?';
my $prompt2 = 'ssword:';
@@ -469,9 +477,9 @@ sub testkeys
sub sendnodeskeys
{
my ($class,$remoteshell,$remotecopy,$to_userid,$to_userpassword,$home,$nodes) = @_;
my ($class,$remoteshell,$remotecopy,$to_userid,$to_userpassword,$home,$nodes, $expecttimeout) = @_;
my $sendkeys;
my $timeout = 10; # sets Expect default timeout, 0 accepts immediately
my $timeout = $expecttimeout; # sets Expect default timeout, 0 accepts immediately
my $sendkeys_sent = 0;
my $prompt1 = 'Are you sure you want to continue connecting (yes/no)?';
my $prompt2 = 'ssword:';
@@ -490,11 +498,15 @@ sub sendnodeskeys
# in $HOME/.ssh/tmp/authorized_keys
# copy to the node to the temp directory
# scp $HOME/.ssh/tmp/authorized_keys to_userid@<node>:/tmp/$to_userid/.ssh
# scp $HOME/.ssh/id_rsa.pub to_userid@<node>:/tmp/$to_userid/.ssh
# Note if using zones, the keys do not come from ~/.ssh but from the
# zone table, sshkeydir attribute. For zones the userid is always root
# If you are going to enable ssh to ssh between nodes, then
# scp $HOME/.ssh/id_rsa to that temp directory on the node
# copy the script $HOME/.ssh/copy.sh to the node, it will do the
# the work of setting up the user's ssh keys and clean up
# ssh (run) copy.sh on the node
my @nodelist=split(/,/,$nodes);
foreach my $node (@nodelist) {
$sendkeys = new Expect;
@@ -602,11 +614,11 @@ sub sendnodeskeys
my $spawncopyfiles;
if ($ENV{'DSH_ENABLE_SSH'}) { # we will enable node to node ssh
$spawncopyfiles=
"$remotecopy $home/.ssh/id_rsa $home/.ssh/copy.sh $home/.ssh/tmp/authorized_keys $to_userid\@$node:/tmp/$to_userid/.ssh ";
"$remotecopy $home/.ssh/id_rsa $home/.ssh/id_rsa.pub $home/.ssh/copy.sh $home/.ssh/tmp/authorized_keys $to_userid\@$node:/tmp/$to_userid/.ssh ";
} else { # no node to node ssh ( don't send private key)
$spawncopyfiles=
"$remotecopy $home/.ssh/copy.sh $home/.ssh/tmp/authorized_keys $to_userid\@$node:/tmp/$to_userid/.ssh ";
"$remotecopy $home/.ssh/id_rsa.pub $home/.ssh/copy.sh $home/.ssh/tmp/authorized_keys $to_userid\@$node:/tmp/$to_userid/.ssh ";
}
# send copy command
unless ($sendkeys->spawn($spawncopyfiles))
@@ -759,7 +771,7 @@ sub sendnodeskeys
=head3 senddeviceskeys
Setup the ssh keys on the nodes
Setup the ssh keys on the switches
=cut
@@ -768,9 +780,9 @@ sub sendnodeskeys
sub senddeviceskeys
{
my ($class,$remoteshell,$remotecopy,$to_userid,$to_userpassword,$home,$ssh_setup_cmd,$nodes) = @_;
my ($class,$remoteshell,$remotecopy,$to_userid,$to_userpassword,$home,$ssh_setup_cmd,$nodes, $expecttimeout) = @_;
my $sendkeys;
my $timeout = 10; # sets Expect default timeout, 0 accepts immediately
my $timeout = $expecttimeout; # sets Expect default timeout, 0 accepts immediately
my $sendkeys_sent = 0;
my $prompt1 = 'Are you sure you want to continue connecting (yes/no)?';
my $prompt2 = 'ssword:';
+32 -14
View File
@@ -202,9 +202,11 @@ sub parse_and_run_sinv
#
my @nodelist = ();
my @cmdparts = ();
my $devicecommand =0;
if ($options{'devicetype'}) {
# must split different because devices have commands with spaces
@cmdparts = split(' ', $cmd,3);
$devicecommand =1;
} else {
@cmdparts = split(' ', $cmd);
}
@@ -503,7 +505,7 @@ sub parse_and_run_sinv
);
# write the results to the tempfile after running through xdshcoll
$rc = &storeresults($callback);
$rc = &storeresults($callback,$devicecommand);
}
$processflg = "node";
@@ -534,7 +536,7 @@ sub parse_and_run_sinv
# write the results to the tempfile after running through xdshcoll
$rc = &storeresults($callback);
$rc = &storeresults($callback,$devicecommand);
# Build report and write to output file
# if file exist and has something in it
@@ -1451,12 +1453,11 @@ sub rinvoutput
sub storeresults
{
my $callback = shift;
my $devicecommand= shift;
# open file to write results of xdsh or rinv command
my $newtempfile = $tempfile;
$newtempfile .= "temp";
open(FILE, ">$newtempfile");
if ($? > 0)
unless (open(NEWTMPFILE, ">$newtempfile"))
{
my $rsp = {};
$rsp->{data}->[0] = "Could not open $newtempfile\n";
@@ -1465,9 +1466,9 @@ sub storeresults
}
foreach my $line (@cmdresult)
{
print FILE $line;
print NEWTMPFILE $line;
}
close FILE;
close NEWTMPFILE;
my $outputfile;
if ($processflg eq "seednode")
{ # cmd to seednode
@@ -1479,8 +1480,7 @@ sub storeresults
}
# open file to put results of xdshcoll
open(FILE, ">$outputfile");
if ($? > 0)
unless (open(NEWOUTFILE, ">$outputfile"))
{
my $rsp = {};
$rsp->{data}->[0] = "Could not open $outputfile\n";
@@ -1489,8 +1489,7 @@ sub storeresults
}
my $cmd = " $::XCATROOT/sbin/xdshcoll <$newtempfile |";
open(XCOLL, "$cmd");
if ($? > 0)
unless (open(XCOLL, "$cmd"))
{
my $rsp = {};
$rsp->{data}->[0] = "Could not call xdshcoll \n";
@@ -1503,18 +1502,37 @@ sub storeresults
while (<XCOLL>)
{
$line = $_;
print FILE $line
print NEWOUTFILE $line
}
close(XCOLL);
close FILE;
close NEWOUTFILE;
system("/bin/rm $newtempfile");
# is device command, we get false errors from the Switch, check for
# blank error output lines and remove them. If there is nothing left
# then there really were no errors
my @newerrresult=();
my $processerrors =1;
if ($devicecommand==1) {
foreach my $line (@errresult)
{
my @newline = (split(/:/, $line));
if ($newline[1] !~ /^\s*$/) { # Not blank, then save it
push @newerrresult,$line;
}
}
my $arraysize=@newerrresult;
if ($arraysize < 1) {
$processerrors =0;
}
}
# capture errors
#
if (@errresult)
if ((@errresult) && ($processerrors ==1))
{ # if errors
my $rsp = {};
my $i = 0;
Regular → Executable
+589 -428
View File
File diff suppressed because it is too large Load Diff
+16 -2
View File
@@ -667,6 +667,9 @@ sub decode_spd {
1066 => 8500,
1333 => 10600,
1600 => 12800,
1867 => 14900,
2133 => 17000,
2134 => 17000,
);
my %ddr3modcap = (
@@ -707,9 +710,20 @@ sub decode_spd {
}
$rethash->{product}->{name}=$memtypes{$spd[2]};
if ($spd[2] == 11) { #DDR3 spec applies
my $ftbdividend = $spd[9] >> 4;
my $ftbdivisor = $spd[9] & 0xf;
my $ftb = $ftbdividend/$ftbdivisor;
my $fineoffset = $spd[34];
if ($fineoffset & 0b10000000) {
#negative value, twos complement
$fineoffset = 0-(($fineoffset ^ 0xff) + 1);
}
$fineoffset = ($ftb * $fineoffset) * 10**-3;
my $mtb = $spd[10]/$spd[11];
my $speed = $speedfromclock{int(2/($mtb*$spd[12]*10**-3))};
$rethash->{product}->{name}="PC3-".$speed;
my $clock = int(2/(($mtb*$spd[12]+$fineoffset)*10**-3));
my $speed = $speedfromclock{$clock};
unless ($speed) { $speed = "UNKNOWN"; }
$rethash->{product}->{name}="PC3-".$speed." ($clock MT/s)";
if ($spd[8]&0b11000) {
$rethash->{product}->{name} .= " ECC";
}
Regular → Executable
+464 -126
View File
@@ -134,7 +134,7 @@ litetree => {
table_desc => 'Directory hierarchy to traverse to get the initial contents of node files. The files that are specified in the litefile table are searched for in the directories specified in this table.',
descriptions => {
priority => 'This number controls what order the directories are searched. Directories are searched from smallest priority number to largest.',
image => "The name of the image that will use this directory, as specified in the osimage table. If image is not supplied, the default is 'ALL'. 'ALL' means use it for all images.",
image => "The name of the image (as specified in the osimage table) that will use this directory. You can also specify an image group name that is listed in the osimage.groups attribute of some osimages. 'ALL' means use this row for all images.",
directory => 'The location (hostname:path) of a directory that contains files specified in the litefile table. Variables are allowed. E.g: $noderes.nfsserver://xcatmasternode/install/$node/#CMD=uname-r#/',
mntopts => "A comma-separated list of options to use when mounting the litetree directory. (Ex. 'soft') The default is to do a 'hard' mount.",
comments => 'Any user-written notes.',
@@ -148,7 +148,7 @@ litefile => {
required => [qw(image file)], # default type is rw nfsroot
table_desc => 'The litefile table specifies the directories and files on the statelite nodes that should be readwrite, persistent, or readonly overlay. All other files in the statelite nodes come from the readonly statelite image.',
descriptions => {
image => "The name of the image that will use these files, as specified in the osimage table. 'ALL' means use it for all images.",
image => "The name of the image (as specified in the osimage table) that will use these options on this dir/file. You can also specify an image group name that is listed in the osimage.groups attribute of some osimages. 'ALL' means use this row for all images.",
file => "The full pathname of the file. e.g: /etc/hosts. If the path is a directory, then it should be terminated with a '/'. ",
options => "Options for the file:\n\n".
qq{ tmpfs - It is the default option if you leave the options column blank. It provides a file or directory for the node to use when booting, its permission will be the same as the original version on the server. In most cases, it is read-write; however, on the next statelite boot, the original version of the file or directory on the server will be used, it means it is non-persistent. This option can be performed on files and directories..\n\n}.
@@ -191,7 +191,7 @@ vmmaster => {
}
},
vm => {
cols => [qw(node mgr host migrationdest storage storagemodel cfgstore memory cpus nics nicmodel bootorder clockoffset virtflags master vncport textconsole powerstate beacon datacenter cluster guestostype othersettings vidmodel vidproto vidpassword comments disable)],
cols => [qw(node mgr host migrationdest storage storagemodel storagecache storageformat cfgstore memory cpus nics nicmodel bootorder clockoffset virtflags master vncport textconsole powerstate beacon datacenter cluster guestostype othersettings physlots vidmodel vidproto vidpassword comments disable)],
keys => [qw(node)],
tablespace =>'XCATTBS32K',
table_desc => 'Virtualization parameters',
@@ -200,7 +200,7 @@ vm => {
'mgr' => 'The function manager for the virtual machine',
'host' => 'The system that currently hosts the VM',
'migrationdest' => 'A noderange representing candidate destinations for migration (i.e. similar systems, same SAN, or other criteria that xCAT can use',
'storage' => 'A list of storage files or devices to be used. i.e. /cluster/vm/<nodename> or nfs://<server>/path/to/folder/',
'storage' => 'A list of storage files or devices to be used. i.e. dir:///cluster/vm/<nodename> or nfs://<server>/path/to/folder/',
'storagemodel' => 'Model of storage devices to provide to guest',
'cfgstore' => 'Optional location for persistant storage separate of emulated hard drives for virtualization solutions that require persistant store to place configuration data',
'memory' => 'Megabytes of memory the VM currently should be set to.',
@@ -222,14 +222,17 @@ vm => {
'vncport' => 'Tracks the current VNC display port (currently not meant to be set',
'textconsole' => 'Tracks the Psuedo-TTY that maps to the serial port or console of a VM',
'powerstate' => "This flag is used by xCAT to track the last known power state of the VM.",
'othersettings' => "This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware.",
'othersettings' => "This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'.",
'guestostype' => "This allows administrator to specify an identifier for OS to pass through to virtualization stack. Normally this should be ignored as xCAT will translate from nodetype.os rather than requiring this field be used\n",
'beacon' => "This flag is used by xCAT to track the state of the identify LED with respect to the VM.",
'datacenter' => "Optionally specify a datacenter for the VM to exist in (only applicable to VMWare)",
'cluster' => 'Specify to the underlying virtualization infrastructure a cluster membership for the hypervisor.',
'vidproto' => "Request a specific protocol for remote video access be set up. For example, spice in KVM.",
'physlots' => "Specify the physical slots drc index that will assigned to the partition, the delimiter is ',', and the drc index must started with '0x'. For more details, please reference to manpage of 'lsvm'.",
'vidmodel' => "Model of video adapter to provide to guest. For example, qxl in KVM",
'vidpassword' => "Password to use instead of temporary random tokens for VNC and SPICE access",
'storagecache' => "Select caching scheme to employ. E.g. KVM understands 'none', 'writethrough' and 'writeback'",
'storageformat' => "Select disk format to use by default (e.g. raw versus qcow2)",
}
},
hypervisor => {
@@ -264,11 +267,14 @@ virtsd => {
},
storage => {
cols => [qw(node osvolume size state storagepool fcprange volumetag comments disable)],
cols => [qw(node osvolume size state storagepool hypervisor fcprange volumetag type controller comments disable)],
keys => [qw(node)],
table_descr => 'Node storage resources',
descriptions => {
node => 'The node name',
controller => 'The management address to attach/detach new volumes.
In the scenario involving multiple controllers, this data must be
passed as argument rather than by table value',
osvolume => "Specification of what storage to place the node OS image onto. Examples include:
localdisk (Install to first non-FC attached disk)
usbdisk (Install to first USB mass storage device seen)
@@ -276,7 +282,9 @@ storage => {
size => 'Size of the volume. Examples include: 10G, 1024M.',
state => 'State of the volume. The valid values are: free, used, and allocated',
storagepool => 'Name of storage pool where the volume is assigned.',
hypervisor => 'Name of the hypervisor where the volume is configured.',
fcprange => 'A range of acceptable fibre channels that the volume can use. Examples include: 3B00-3C00;4B00-4C00.',
type => 'The plugin used to drive storage configuration (e.g. svc)',
volumetag => 'A specific tag used to identify the volume in the autoyast or kickstart template.',
comments => 'Any user-written notes.',
disable => "Set to 'yes' or '1' to comment out this row.",
@@ -528,14 +536,14 @@ nodegroup => {
},
},
nodehm => {
cols => [qw(node power mgt cons termserver termport conserver serialport serialspeed serialflow getmac cmdmapping comments disable)],
cols => [qw(node power mgt cons termserver termport conserver serialport serialspeed serialflow getmac cmdmapping consoleondemand comments disable)],
keys => [qw(node)],
tablespace =>'XCATTBS16K',
table_desc => "Settings that control how each node's hardware is managed. Typically, an additional table that is specific to the hardware type of the node contains additional info. E.g. the ipmi, mp, and ppc tables.",
descriptions => {
node => 'The node name or group name.',
power => 'The method to use to control the power of the node. If not set, the mgt attribute will be used. Valid values: ipmi, blade, hmc, ivm, fsp. If "ipmi", xCAT will search for this node in the ipmi table for more info. If "blade", xCAT will search for this node in the mp table. If "hmc", "ivm", or "fsp", xCAT will search for this node in the ppc table.',
mgt => 'The method to use to do general hardware management of the node. This attribute is used as the default if power or getmac is not set. Valid values: ipmi, blade, hmc, ivm, fsp, bpa. See the power attribute for more details.',
power => 'The method to use to control the power of the node. If not set, the mgt attribute will be used. Valid values: ipmi, blade, hmc, ivm, fsp, kvm, esx, rhevm. If "ipmi", xCAT will search for this node in the ipmi table for more info. If "blade", xCAT will search for this node in the mp table. If "hmc", "ivm", or "fsp", xCAT will search for this node in the ppc table.',
mgt => 'The method to use to do general hardware management of the node. This attribute is used as the default if power or getmac is not set. Valid values: ipmi, blade, hmc, ivm, fsp, bpa, kvm, esx, rhevm. See the power attribute for more details.',
cons => 'The console method. If nodehm.serialport is set, this will default to the nodehm.mgt setting, otherwise it defaults to unused. Valid values: cyclades, mrv, or the values valid for the mgt attribute.',
termserver => 'The hostname of the terminal server.',
termport => 'The port number on the terminal server that this node is connected to.',
@@ -545,12 +553,13 @@ nodehm => {
serialflow => "The flow control value of the serial port for this node. For SOL this is typically 'hard'.",
getmac => 'The method to use to get MAC address of the node with the getmac command. If not set, the mgt attribute will be used. Valid values: same as values for mgmt attribute.',
cmdmapping => 'The fully qualified name of the file that stores the mapping between PCM hardware management commands and xCAT/third-party hardware management commands for a particular type of hardware device. Only used by PCM.',
consoleondemand => 'This overrides the value from site.consoleondemand; (0=no, 1=yes). Default is the result from site.consoleondemand.',
comments => 'Any user-written notes.',
disable => "Set to 'yes' or '1' to comment out this row.",
},
},
nodelist => {
cols => [qw(node groups status statustime appstatus appstatustime primarysn hidden updatestatus updatestatustime comments disable)],
cols => [qw(node groups status statustime appstatus appstatustime primarysn hidden updatestatus updatestatustime zonename comments disable)],
keys => [qw(node)],
tablespace =>'XCATTBS32K',
table_desc => "The list of all the nodes in the cluster, including each node's current status and what groups it is in.",
@@ -563,8 +572,9 @@ nodelist => {
appstatustime =>'The date and time when appstatus was updated.',
primarysn => 'Not used currently. The primary servicenode, used by this node.',
hidden => "Used to hide fsp and bpa definitions, 1 means not show them when running lsdef and nodels",
updatestatus => "The current node update status. Valid states are synced and out-of-sync.",
updatestatus => "The current node update status. Valid states are synced, out-of-sync,syncing,failed.",
updatestatustime => "The date and time when the updatestatus was updated.",
zonename => "The name of the zone to which the node is currently assigned. If undefined, then it is not assigned to any zone. ",
comments => 'Any user-written notes.',
disable => "Set to 'yes' or '1' to comment out this row.",
},
@@ -587,14 +597,14 @@ nodepos => {
},
},
noderes => {
cols => [qw(node servicenode netboot tftpserver tftpdir nfsserver monserver nfsdir installnic primarynic discoverynics cmdinterface xcatmaster current_osimage next_osimage nimserver routenames nameservers comments disable)],
cols => [qw(node servicenode netboot tftpserver tftpdir nfsserver monserver nfsdir installnic primarynic discoverynics cmdinterface xcatmaster current_osimage next_osimage nimserver routenames nameservers proxydhcp comments disable)],
keys => [qw(node)],
tablespace =>'XCATTBS16K',
table_desc => 'Resources and settings to use when installing nodes.',
descriptions => {
node => 'The node name or group name.',
servicenode => 'A comma separated list of node names (as known by the management node) that provides most services for this node. The first service node on the list that is accessible will be used. The 2nd node on the list is generally considered to be the backup service node for this node when running commands like snmove.',
netboot => 'The type of network booting to use for this node. Valid values: pxe or xnba for x86* architecture, yaboot for POWER architecture.',
netboot => 'The type of network booting to use for this node. Valid values: pxe or xnba for x86* architecture, yaboot for POWER architecture, grub2 for RHEL7 on Power. Notice: yaboot is not supported from rhels7 on Power,use grub2 instead',
tftpserver => 'The TFTP server for this node (as known by this node). If not set, it defaults to networks.tftpserver.',
tftpdir => 'The directory that roots this nodes contents from a tftp and related perspective. Used for NAS offload by using different mountpoints.',
nfsserver => 'The NFS or HTTP server for this node (as known by this node).',
@@ -610,6 +620,7 @@ noderes => {
nimserver => 'Not used for now. The NIM server for this node (as known by this node).',
routenames => 'A comma separated list of route names that refer to rows in the routes table. These are the routes that should be defined on this node when it is deployed.',
nameservers => 'An optional node/group specific override for name server list. Most people want to stick to site or network defined nameserver configuration.',
proxydhcp => 'To specify whether the node supports proxydhcp protocol. Valid values: yes or 1, no or 0. Default value is yes.',
comments => 'Any user-written notes.',
disable => "Set to 'yes' or '1' to comment out this row.",
},
@@ -676,7 +687,7 @@ osimage => {
groups => 'A comma-delimited list of image groups of which this image is a member. Image groups can be used in the litefile and litetree table instead of a single image name. Group names are arbitrary.',
imagetype => 'The type of operating system image this definition represents (linux,AIX).',
description => 'OS Image Description',
provmethod => 'The provisioning method for node deployment. The valid values are install, netboot,statelite,boottarget,dualboot. If boottarget is set, you must set linuximage.boottarget to the name of the boottarget definition. It is not used by AIX.',
provmethod => 'The provisioning method for node deployment. The valid values are install, netboot,statelite,boottarget,dualboot,sysclone. If boottarget is set, you must set linuximage.boottarget to the name of the boottarget definition. It is not used by AIX.',
rootfstype => 'The filesystem type for the rootfs is used when the provmethod is statelite. The valid values are nfs or ramdisk. The default value is nfs',
osdistroname => 'The name of the OS distro definition. This attribute can be used to specify which OS distro to use, instead of using the osname,osvers,and osarch attributes.',
osupdatename => 'A comma-separated list of OS distro updates to apply to this osimage.',
@@ -727,6 +738,21 @@ linuximage => {
disable => "Set to 'yes' or '1' to comment out this row.",
},
},
winimage => {
cols => [qw(imagename template installto partitionfile winpepath comments disable)],
keys => [qw(imagename)],
tablespace =>'XCATTBS32K',
table_desc => 'Information about a Windows operating system image that can be used to deploy cluster nodes.',
descriptions => {
imagename => 'The name of this xCAT OS image definition.',
template => 'The fully qualified name of the template file that is used to create the windows unattend.xml file for diskful installation.',
installto => 'The disk and partition that the Windows will be deployed to. The valid format is <disk>:<partition>. If not set, default value is 0:1 for bios boot mode(legacy) and 0:3 for uefi boot mode; If setting to 1, it means 1:1 for bios boot and 1:3 for uefi boot',
partitionfile => 'The path of partition configuration file. Since the partition configuration for bios boot mode and uefi boot mode are different, this configuration file should include two parts if customer wants to support both bios and uefi mode. If customer just wants to support one of the modes, specify one of them anyway. Example of partition configuration file: [BIOS]xxxxxxx[UEFI]yyyyyyy. To simplify the setting, you also can set installto in partitionfile with section likes [INSTALLTO]0:1',
winpepath => 'The path of winpe which will be used to boot this image. If the real path is /tftpboot/winboot/winpe1/, the value for winpepath should be set to winboot/winpe1',
comments => 'Any user-written notes.',
disable => "Set to 'yes' or '1' to comment out this row.",
}
},
passwd => {
cols => [qw(key username password cryptmethod authdomain comments disable)],
keys => [qw(key username)],
@@ -744,14 +770,14 @@ passwd => {
policy => {
cols => [qw(priority name host commands noderange parameters time rule comments disable)],
keys => [qw(priority)],
table_desc => 'The policy table in the xCAT database controls who has authority to run specific xCAT operations. It is basically the Access Control List (ACL) for xCAT.',
table_desc => 'The policy table in the xCAT database controls who has authority to run specific xCAT operations. It is basically the Access Control List (ACL) for xCAT. It is sorted on the priority field before evaluating.',
descriptions => {
priority => 'The priority value for this rule. This value is used to identify this policy data object (i.e. this rule).',
priority => 'The priority value for this rule. This value is used to identify this policy data object (i.e. this rule) The table is sorted on this field with the lower the number the higher the priority. For example 1.0 is higher priority than 4.1 is higher than 4.9.',
name => 'The username that is allowed to perform the commands specified by this rule. Default is "*" (all users).',
host => 'The host from which users may issue the commands specified by this rule. Default is "*" (all hosts).',
host => 'The host from which users may issue the commands specified by this rule. Default is "*" (all hosts). Only all or one host is supported',
commands => 'The list of commands that this rule applies to. Default is "*" (all commands).',
noderange => 'The Noderange that this rule applies to. Default is "*" (all nodes).',
parameters => 'A regular expression that matches the command parameters (everything except the noderange) that this rule applies to. Default is "*" (all parameters).',
noderange => 'The Noderange that this rule applies to. Default is "*" (all nodes). Not supported with the *def commands.',
parameters => 'A regular expression that matches the command parameters (everything except the noderange) that this rule applies to. Default is "*" (all parameters). Not supported with the *def commands.',
time => 'Time ranges that this command may be executed in. This is not supported.',
rule => 'Specifies how this rule should be applied. Valid values are: allow, accept, trusted. Allow or accept will allow the user to run the commands. Any other value will deny the user access to the commands. Trusted means that once this client has been authenticated via the certificate, all other information that is sent (e.g. the username) is believed without question. This authorization should only be given to the xcatd on the management node at this time.',
comments => 'Any user-written notes.',
@@ -762,11 +788,11 @@ postscripts => {
cols => [qw(node postscripts postbootscripts comments disable)],
keys => [qw(node)],
tablespace =>'XCATTBS16K',
table_desc => ' The scripts that should be run on each node after installation or diskless boot.',
table_desc => 'The scripts that should be run on each node after installation or diskless boot.',
descriptions => {
node => 'The node name or group name.',
postscripts => 'Comma separated list of scripts that should be run on this node after diskfull installation or diskless boot. Each script can take zero or more parameters. For example: "script1 p1 p2,script2,...". xCAT automatically adds the postscripts from the xcatdefaults.postscripts attribute of the table to run first on the nodes after install or diskless boot. For installation of RedHat, CentOS, Fedora, the scripts will be run before the reboot. For installation of SLES, the scripts will be run after the reboot but before the init.d process. For diskless deployment, the scripts will be run at the init.d time, and xCAT will automatically add the list of scripts from the postbootscripts attribute to run after postscripts list. For installation of AIX, the scripts will run after the reboot and acts the same as the postbootscripts attribute. For AIX, use the postbootscripts attribute. Support will be added in the future for the postscripts attribute to run the scripts before the reboot in AIX. ',
postbootscripts => 'Comma separated list of scripts that should be run on thisnode after diskfull installation or diskless boot. Each script can take zero or more parameters. For example: "script1 p1 p2,script2,...". On AIX these scripts are run during the processing of /etc/inittab. On Linux they are run at the init.d time. xCAT automatically adds the scripts in the xcatdefaults.postbootscripts attri bute to run first in the list.',
postbootscripts => 'Comma separated list of scripts that should be run on this node after diskfull installation or diskless boot. Each script can take zero or more parameters. For example: "script1 p1 p2,script2,...". On AIX these scripts are run during the processing of /etc/inittab. On Linux they are run at the init.d time. xCAT automatically adds the scripts in the xcatdefaults.postbootscripts attribute to run first in the list.',
comments => 'Any user-written notes.',
disable => "Set to 'yes' or '1' to comment out this row.",
},
@@ -816,12 +842,13 @@ ppchcp => {
},
},
servicenode => {
cols => [qw(node nameserver dhcpserver tftpserver nfsserver conserver monserver ldapserver ntpserver ftpserver nimserver ipforward dhcpinterfaces comments disable)],
cols => [qw(node nameserver dhcpserver tftpserver nfsserver conserver monserver ldapserver ntpserver ftpserver nimserver ipforward dhcpinterfaces proxydhcp comments disable)],
keys => [qw(node)],
tablespace =>'XCATTBS16K',
table_desc => 'List of all Service Nodes and services that will be set up on the Service Node.',
descriptions => {
node => 'The hostname of the service node as known by the Management Node.',
nameserver => 'Do we set up DNS on this service node? Valid values:yes or 1, no or 0. If yes, creates named.conf file with forwarding to the management node and starts named. If no or 0, it does not change the current state of the service. ',
nameserver => 'Do we set up DNS on this service node? Valid values: 2, 1, no or 0. If 2, creates named.conf as dns slave, using the management node as dns master, and starts named. If 1, creates named.conf file with forwarding to the management node and starts named. If no or 0, it does not change the current state of the service. ',
dhcpserver => 'Do we set up DHCP on this service node? Not supported on AIX. Valid values:yes or 1, no or 0. If yes, runs makedhcp -n. If no or 0, it does not change the current state of the service. ',
tftpserver => 'Do we set up TFTP on this service node? Not supported on AIX. Valid values:yes or 1, no or 0. If yes, configures and starts atftp. If no or 0, it does not change the current state of the service. ',
nfsserver => 'Do we set up file services (HTTP,FTP,or NFS) on this service node? For AIX will only setup NFS, not HTTP or FTP. Valid values:yes or 1, no or 0.If no or 0, it does not change the current state of the service. ',
@@ -833,6 +860,7 @@ servicenode => {
nimserver => 'Not used. Do we set up a NIM server on this service node? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service.',
ipforward => 'Do we set up ip forwarding on this service node? Valid values:yes or 1, no or 0. If no or 0, it does not change the current state of the service.',
dhcpinterfaces => 'The network interfaces DHCP server should listen on for the target node. This attribute can be used for management node and service nodes. If defined, it will override the values defined in site.dhcpinterfaces. This is a comma separated list of device names. !remote! indicates a non-local network for relay DHCP. For example: !remote!,eth0,eth1',
proxydhcp => 'Do we set up proxydhcp service on this node? valid values: yes or 1, no or 0. If yes, the proxydhcp daemon will be enabled on this node.',
comments => 'Any user-written notes.',
disable => "Set to 'yes' or '1' to comment out this row.",
@@ -841,35 +869,44 @@ servicenode => {
site => {
cols => [qw(key value comments disable)],
keys => [qw(key)],
table_desc => "Global settings for the whole cluster. This table is different from the \nother tables in that each attribute is just named in the key column, rather \nthan having a separate column for each attribute. The following is a list of \nthe attributes currently used by xCAT.\n",
table_desc => "Global settings for the whole cluster. This table is different from the \nother tables in that each attribute is just named in the key column, rather \nthan having a separate column for each attribute. The following is a list of \nattributes currently used by xCAT organized into categories.\n",
descriptions => {
# Do not put description text past column 88, so it displays well in a 100 char wide window.
# ----------------------------------------------------------------------------------|----------
key => "Attribute Name: Description\n\n".
" auditskipcmds: List of commands and/or client types that will not be written to the auditlog table.\n".
" ------------\n".
"AIX ATTRIBUTES\n".
" ------------\n".
" nimprime : The name of NIM server, if not set default is the AIX MN.
If Linux MN, then must be set for support of mixed cluster (TBD).\n\n".
" useSSHonAIX: (yes/1 or no/0). Default is yes. The support for rsh/rcp is deprecated.\n".
" useNFSv4onAIX: (yes/1 or no/0). If yes, NFSv4 will be used with NIM. If no,\n".
" NFSv3 will be used with NIM. Default is no.\n\n".
" -----------------\n".
"DATABASE ATTRIBUTES\n".
" -----------------\n".
" auditskipcmds: List of commands and/or client types that will not be\n".
" written to the auditlog table.\n".
" 'ALL' means all cmds will be skipped. If attribute is null, all\n".
" commands will be written.\n".
" clienttype:web would skip all commands from the web client\n".
" For example: tabdump,nodels,clienttype:web \n".
" will not log tabdump,nodels and any web client commands.\n\n".
" blademaxp: The maximum number of concurrent processes for blade hardware control.\n\n".
" cleanupxcatpost: (yes/1 or no/0). Set to 'yes' or '1' to clean up the /xcatpost\n".
" directory on the stateless and statelite nodes after the\n".
" postscripts are run. Default is no.\n\n".
" consoleondemand: When set to 'yes', conserver connects and creates the console\n".
" output only when the user opens the console. Default is no on\n".
" Linux, yes on AIX.\n\n".
" databaseloc: Directory where we create the db instance directory.\n".
" Default is /var/lib. Only DB2 is currently supported.\n".
" Do not use the directory in the site.installloc or\n".
" installdir attribute. This attribute must not be changed\n".
" once db2sqlsetup script has been run and DB2 has been setup.\n\n".
" db2installloc: The location which the service nodes should mount for\n".
" the db2 code to install. Format is hostname:/path. If hostname is\n".
" omitted, it defaults to the management node. Default is /mntdb2.\n\n".
" defserialflow: The default serial flow - currently only used by the mknb command.\n\n".
" defserialport: The default serial port - currently only used by mknb.\n\n".
" defserialspeed: The default serial speed - currently only used by mknb.\n\n".
" excludenodes: A set of comma separated nodes and/or groups that would automatically\n".
" be subtracted from any noderange, it can be used for excluding some\n".
" failed nodes for any xCAT commands. See the 'noderange' manpage for\n".
" details on supported formats.\n\n".
" nodestatus: If set to 'n', the nodelist.status column will not be updated during\n".
" the node deployment, node discovery and power operations. The default is to update.\n\n".
" skiptables: Comma separated list of tables to be skipped by dumpxCATdb\n\n".
" -------------\n".
"DHCP ATTRIBUTES\n".
" -------------\n".
" dhcpinterfaces: The network interfaces DHCP should listen on. If it is the same\n".
" for all nodes, use a simple comma-separated list of NICs. To\n".
" specify different NICs for different nodes:\n".
@@ -882,59 +919,19 @@ site => {
" disjointdhcps: If set to '1', the .leases file on a service node only contains\n".
" the nodes it manages. The default value is '0'.\n".
" '0' value means include all the nodes in the subnet.\n\n".
" pruneservices: Whether to enable service pruning when noderm is run (i.e.\n".
" removing DHCP entries when noderm is executed)\n\n".
" ------------\n".
"DNS ATTRIBUTES\n".
" ------------\n".
" dnshandler: Name of plugin that handles DNS setup for makedns.\n".
" domain: The DNS domain name used for the cluster.\n\n".
" ea_primary_hmc: The hostname of the HMC that the Integrated Switch Network\n".
" Management Event Analysis should send hardware serviceable\n".
" events to for processing and potentially sending to IBM.\n\n".
" ea_backup_hmc: The hostname of the HMC that the Integrated Switch Network\n".
" Management Event Analysis should send hardware serviceable\n".
" events to if the primary HMC is down.\n\n".
" enableASMI: (yes/1 or no/0). If yes, ASMI method will be used after fsp-api. If no,\n".
" when fsp-api is used, ASMI method will not be used. Default is no.\n\n".
" excludenodes: A set of comma separated nodes and/or groups that would automatically\n".
" be subtracted from any noderange, it can be used for excluding some\n".
" failed nodes for any xCAT commands. See the 'noderange' manpage for\n".
" details on supported formats.\n\n".
" forwarders: The DNS servers at your site that can provide names outside of the\n".
" cluster. The makedns command will configure the DNS on the management\n".
" node to forward requests it does not know to these servers.\n".
" Note that the DNS servers on the service nodes will ignore this value\n".
" and always be configured to forward requests to the management node.\n\n".
" fsptimeout: The timeout, in milliseconds, to use when communicating with FSPs.\n\n".
" genmacprefix: When generating mac addresses automatically, use this manufacturing\n".
" prefix (e.g. 00:11:aa)\n\n".
" genpasswords: Automatically generate random passwords for BMCs when configuring\n".
" them.\n\n".
" httpport: The port number that the booting/installing nodes should contact the\n".
" http server on the MN/SN on. It is your responsibility to configure\n".
" the http server to listen on that port - xCAT will not do that.\n\n".
" installdir: The local directory name used to hold the node deployment packages.\n\n".
" installloc: The location from which the service nodes should mount the \n".
" deployment packages in the format hostname:/path. If hostname is\n".
" omitted, it defaults to the management node. The path must\n".
" match the path in the installdir attribute.\n\n".
" ipmidispatch: Whether or not to send ipmi hw control operations to the service\n".
" node of the target compute nodes. Default is 'y'.\n\n".
" hwctrldispatch: Whether or not to send hw control operations to the service\n".
" node of the target nodes. Default is 'y'.(At present, this attribute\n".
" is only used for IBM Flex System)\n\n".
" ipmimaxp: The max # of processes for ipmi hw ctrl. The default is 64. Currently,\n".
" this is only used for HP hw control.\n\n".
" ipmiretries: The # of retries to use when communicating with BMCs. Default is 3.\n\n".
" ipmisdrcache: If set to 'no', then the xCAT IPMI support will not cache locally\n".
" the target node's SDR cache to improve performance.\n\n".
" ipmitimeout: The timeout to use when communicating with BMCs. Default is 2.\n".
" This attribute is currently not used.\n\n".
" iscsidir: The path to put the iscsi disks in on the mgmt node.\n\n".
" master: The hostname of the xCAT management node, as known by the nodes.\n\n".
" maxssh: The max # of SSH connections at any one time to the hw ctrl point for PPC\n".
" This parameter doesn't take effect on the rpower command.\n".
" It takes effects on other PPC hardware control command\n".
" getmacs/rnetboot/rbootseq and so on. Default is 8.\n\n".
" mnroutenames: The name of the routes to be setup on the management node.\n".
" It is a comma separated list of route names that are defined in the\n".
" routes table.\n\n".
" nameservers: A comma delimited list of DNS servers that each node in the cluster\n".
" should use. This value will end up in the nameserver settings of the\n".
" /etc/resolv.conf on each node. It is common (but not required) to set\n".
@@ -944,18 +941,35 @@ site => {
" \"<xcatmaster>\" to mean the DNS server for each node should be the\n".
" node that is managing it (either its service node or the management\n".
" node).\n\n".
" nimprime : The name of NIM server, if not set default is the AIX MN.
If Linux MN, then must be set for support of mixed cluster (TBD).\n\n".
" nodestatus: If set to 'n', the nodelist.status column will not be updated during\n".
" the node deployment, node discovery and power operations. The default is to update.\n\n".
" ntpservers: A comma delimited list of NTP servers for the cluster - often the\n".
" xCAT management node.\n\n".
" runbootscripts: If set to 'yes' the scripts listed in the postbootscripts\n".
" attribute in the osimage and postscripts tables will be run during\n".
" each reboot of stateful (diskful) nodes. This attribute has no\n".
" effect on stateless and statelite nodes. Please run the following\n" .
" command after you change the value of this attribute: \n".
" 'updatenode <nodes> -P setuppostbootscripts'\n\n".
" -------------------------\n".
"HARDWARE CONTROL ATTRIBUTES\n".
" -------------------------\n".
" blademaxp: The maximum number of concurrent processes for blade hardware control.\n\n".
" ea_primary_hmc: The hostname of the HMC that the Integrated Switch Network\n".
" Management Event Analysis should send hardware serviceable\n".
" events to for processing and potentially sending to IBM.\n\n".
" ea_backup_hmc: The hostname of the HMC that the Integrated Switch Network\n".
" Management Event Analysis should send hardware serviceable\n".
" events to if the primary HMC is down.\n\n".
" enableASMI: (yes/1 or no/0). If yes, ASMI method will be used after fsp-api. If no,\n".
" when fsp-api is used, ASMI method will not be used. Default is no.\n\n".
" fsptimeout: The timeout, in milliseconds, to use when communicating with FSPs.\n\n".
" hwctrldispatch: Whether or not to send hw control operations to the service\n".
" node of the target nodes. Default is 'y'.(At present, this attribute\n".
" is only used for IBM Flex System)\n\n".
" ipmidispatch: Whether or not to send ipmi hw control operations to the service\n".
" node of the target compute nodes. Default is 'y'.\n\n".
" ipmimaxp: The max # of processes for ipmi hw ctrl. The default is 64. Currently,\n".
" this is only used for HP hw control.\n\n".
" ipmiretries: The # of retries to use when communicating with BMCs. Default is 3.\n\n".
" ipmisdrcache: If set to 'no', then the xCAT IPMI support will not cache locally\n".
" the target node's SDR cache to improve performance.\n\n".
" ipmitimeout: The timeout to use when communicating with BMCs. Default is 2.\n".
" This attribute is currently not used.\n\n".
" maxssh: The max # of SSH connections at any one time to the hw ctrl point for PPC\n".
" This parameter doesn't take effect on the rpower command.\n".
" It takes effects on other PPC hardware control command\n".
" getmacs/rnetboot/rbootseq and so on. Default is 8.\n\n".
" syspowerinterval: For system p CECs, this is the number of seconds the rpower\n".
" command will wait between performing the action for each CEC.\n".
" For system x IPMI servers, this is the number of seconds the\n".
@@ -982,15 +996,45 @@ site => {
" ppctimeout: The timeout, in milliseconds, to use when communicating with PPC hw\n".
" through HMC. It only takes effect on the hardware control commands\n".
" through HMC. Default is 0.\n\n".
" precreatemypostscripts: (yes/1 or no/0, only for Linux).Default is no. If yes, it will \n".
" snmpc: The snmp community string that xcat should use when communicating with the\n".
" switches.\n\n".
" ---------------------------\n".
"INSTALL/DEPLOYMENT ATTRIBUTES\n".
" ---------------------------\n".
" cleanupxcatpost: (yes/1 or no/0). Set to 'yes' or '1' to clean up the /xcatpost\n".
" directory on the stateless and statelite nodes after the\n".
" postscripts are run. Default is no.\n\n".
" db2installloc: The location which the service nodes should mount for\n".
" the db2 code to install. Format is hostname:/path. If hostname is\n".
" omitted, it defaults to the management node. Default is /mntdb2.\n\n".
" defserialflow: The default serial flow - currently only used by the mknb command.\n\n".
" defserialport: The default serial port - currently only used by mknb.\n\n".
" defserialspeed: The default serial speed - currently only used by mknb.\n\n".
" genmacprefix: When generating mac addresses automatically, use this manufacturing\n".
" prefix (e.g. 00:11:aa)\n\n".
" genpasswords: Automatically generate random passwords for BMCs when configuring\n".
" them.\n\n".
" installdir: The local directory name used to hold the node deployment packages.\n\n".
" installloc: The location from which the service nodes should mount the \n".
" deployment packages in the format hostname:/path. If hostname is\n".
" omitted, it defaults to the management node. The path must\n".
" match the path in the installdir attribute.\n\n".
" iscsidir: The path to put the iscsi disks in on the mgmt node.\n\n".
" mnroutenames: The name of the routes to be setup on the management node.\n".
" It is a comma separated list of route names that are defined in the\n".
" routes table.\n\n".
" runbootscripts: If set to 'yes' the scripts listed in the postbootscripts\n".
" attribute in the osimage and postscripts tables will be run during\n".
" each reboot of stateful (diskful) nodes. This attribute has no\n".
" effect on stateless and statelite nodes. Please run the following\n" .
" command after you change the value of this attribute: \n".
" 'updatenode <nodes> -P setuppostbootscripts'\n\n".
" precreatemypostscripts: (yes/1 or no/0). Default is no. If yes, it will \n".
" instruct xCAT at nodeset and updatenode time to query the db once for\n".
" all of the nodes passed into the cmd and create the mypostscript file\n".
" for each node, and put them in a directory of tftpdir(such as: /tftpboot)\n".
" If no, it will not generate the mypostscript file in the tftpdir.\n\n".
" pruneservices: Whether to enable service pruning when noderm is run (i.e.\n".
" removing DHCP entries when noderm is executed)\n\n".
" rsh: This is no longer used. path to remote shell command for xdsh.\n\n".
" rcp: This is no longer used. path to remote copy command for xdcp.\n\n".
" setinstallnic: Set the network configuration for installnic to be static.\n\n".
" sharedtftp: Set to 0 or no, xCAT should not assume the directory\n".
" in tftpdir is mounted on all on Service Nodes. Default is 1/yes.\n".
" If value is set to a hostname, the directory in tftpdir\n".
@@ -1001,18 +1045,31 @@ site => {
" shared filesystem is being used across all service nodes.\n".
" 'all' means that the management as well as the service nodes\n".
" are all using a common shared filesystem. The default is 'no'.\n".
" skiptables: Comma separated list of tables to be skipped by dumpxCATdb\n".
" xcatconfdir: Where xCAT config data is (default /etc/xcat).\n\n".
" --------------------\n".
"REMOTESHELL ATTRIBUTES\n".
" --------------------\n".
" nodesyncfiledir: The directory on the node, where xdcp will rsync the files\n".
" SNsyncfiledir: The directory on the Service Node, where xdcp will rsync the files\n".
" from the MN that will eventually be rsync'd to the compute nodes.\n\n".
" nodesyncfiledir: The directory on the node, where xdcp will rsync the files\n".
" snmpc: The snmp community string that xcat should use when communicating with the\n".
" switches.\n\n".
" sshbetweennodes: Comma separated list of groups to enable passwordless root \n".
" sshbetweennodes: Comma separated list of groups of compute nodes to enable passwordless root \n".
" ssh during install, or xdsh -K. Default is ALLGROUPS.\n".
" Set to NOGROUPS,if you do not wish to enabled any groups.\n".
" Set to NOGROUPS,if you do not wish to enabled any group of compute nodes.\n".
" Service Nodes are not affected by this attribute\n".
" they are always setup with\n".
" passwordless root access to nodes and other SN.\n\n".
" passwordless root access to nodes and other SN.\n".
" If using the zone table, this attribute in not used.\n\n".
" -----------------\n".
"SERVICES ATTRIBUTES\n".
" -----------------\n".
" consoleondemand: When set to 'yes', conserver connects and creates the console\n".
" output only when the user opens the console. Default is no on\n".
" Linux, yes on AIX.\n\n".
" httpport: The port number that the booting/installing nodes should contact the\n".
" http server on the MN/SN on. It is your responsibility to configure\n".
" the http server to listen on that port - xCAT will not do that.\n\n".
" ntpservers: A comma delimited list of NTP servers for the cluster - often the\n".
" xCAT management node.\n\n".
" svloglocal: if set to 1, syslog on the service node will not get forwarded to the\n".
" mgmt node.\n\n".
" timezone: (e.g. America/New_York)\n\n".
@@ -1022,31 +1079,44 @@ site => {
" useNmapfromMN: When set to yes, nodestat command should obtain the node status\n".
" using nmap (if available) from the management node instead of the\n".
" service node. This will improve the performance in a flat network.\n\n".
" useSSHonAIX: (yes/1 or no/0). If yes, ssh/scp will be setup and used. If no,\n".
" vsftp: Default is 'n'. If set to 'y', the xcatd on the mn will automatically\n".
" bring up vsftpd. (You must manually install vsftpd before this.\n".
" This setting does not apply to the service node. For sn\n".
" you need to set servicenode.ftpserver=1 if you want xcatd to\n".
" bring up vsftpd.\n\n".
" -----------------------\n".
"VIRTUALIZATION ATTRIBUTES\n".
" -----------------------\n".
" usexhrm: Have xCAT run its xHRM script when booting up KVM guests to set the\n".
" virtual network bridge up correctly. See\n".
" https://sourceforge.net/apps/mediawiki/xcat/index.php?title=XCAT_Virtualization_with_KVM#Setting_up_a_network_bridge\n\n".
" rsh/rcp will be setup and used on AIX. Default is yes.\n\n".
" useNFSv4onAIX: (yes/1 or no/0). If yes, NFSv4 will be used with NIM. If no,\n".
" NFSv3 will be used with NIM. Default is no.\n\n".
" vcenterautojoin: When set to no, the VMWare plugin will not attempt to auto remove\n".
" and add hypervisors while trying to perform operations. If users\n".
" or tasks outside of xCAT perform the joining this assures xCAT\n".
" will not interfere.\n\n".
" vmwarereconfigonpower: When set to no, the VMWare plugin will make no effort to\n".
" push vm.cpus/vm.memory updates from xCAT to VMWare.\n\n".
" vsftp: Default is 'n'. If set to 'y', the xcatd on the mn will automatically\n".
" bring up vsftpd. (You must manually install vsftpd before this.\n".
" This setting does not apply to the service node. For sn\n".
" you need to set servicenode.ftpserver=1 if you want xcatd to\n".
" bring up vsftpd.\n\n".
" xcatconfdir: Where xCAT config data is (default /etc/xcat).\n\n".
" --------------------\n".
"XCAT DAEMON ATTRIBUTES\n".
" --------------------\n".
" useflowcontrol: (yes/1 or no/0). If yes, the postscript processing on each node\n".
" contacts xcatd on the MN/SN using a lightweight UDP packet to wait\n".
" until xcatd is ready to handle the requests associated with\n".
" postscripts. This prevents deploying nodes from flooding xcatd and\n".
" locking out admin interactive use. This value works with the\n".
" xcatmaxconnections and xcatmaxbatch attributes. Is not supported on AIX.\n".
" If the value is no, nodes sleep for a random time before contacting\n".
" xcatd, and retry. On a new install of xcat, this value will be set to yes.\n".
" See the following document for details:\n".
" https://sourceforge.net/apps/mediawiki/xcat/index.php?title=Hints_and_Tips_for_Large_Scale_Clusters\n\n".
" xcatmaxconnections: Number of concurrent xCAT protocol requests before requests\n".
" begin queueing. This applies to both client command requests\n".
" and node requests, e.g. to get postscripts. Default is 64.\n\n".
" xcatmaxbatchconnections: Number of concurrent xCAT connections allowed from the nodes.\n".
" Value must be less than xcatmaxconnections. Default is 50.\n\n".
" xcatdport: The port used by the xcatd daemon for client/server communication.\n\n".
" xcatiport: The port used by xcatd to receive install status updates from nodes.\n\n",
" xcatsslversion: The ssl version by xcatd. Default is SSLv3.\n\n",
" xcatiport: The port used by xcatd to receive install status updates from nodes.\n\n".
" xcatsslversion: The ssl version by xcatd. Default is SSLv3.\n\n".
" xcatsslciphers: The ssl cipher by xcatd. Default is 3DES.\n\n",
value => 'The value of the attribute specified in the "key" column.',
comments => 'Any user-written notes.',
@@ -1126,6 +1196,19 @@ performance => {
disable => "Set to 'yes' or '1' to comment out this row.",
},
},
zone => {
cols => [qw(zonename sshkeydir sshbetweennodes defaultzone comments disable)],
keys => [qw(zonename)],
table_desc => 'Defines a cluster zone for nodes that share root ssh key access to each other.',
descriptions => {
zonename => 'The name of the zone.',
sshkeydir => 'Directory containing the shared root ssh RSA keys.',
sshbetweennodes => 'Indicates whether passwordless ssh will be setup between the nodes of this zone. Values are yes/1 or no/0. Default is yes. ',
defaultzone => 'If nodes are not assigned to any other zone, they will default to this zone. If value is set to yes or 1.',
comments => 'Any user-provided notes.',
disable => "Set to 'yes' or '1' to comment out this row.",
},
},
eventlog => {
cols => [qw(recid eventtime eventtype monitor monnode node application component id severity message rawdata comments disable)],
@@ -1262,7 +1345,7 @@ firmware => {
},
nics => {
cols => [qw(node nicips nichostnamesuffixes nictypes niccustomscripts nicnetworks nicaliases comments disable)],
cols => [qw(node nicips nichostnamesuffixes nichostnameprefixes nictypes niccustomscripts nicnetworks nicaliases comments disable)],
keys => [qw(node)],
tablespace =>'XCATTBS16K',
table_desc => 'Stores NIC details.',
@@ -1280,6 +1363,13 @@ nics => {
<nic1>!<ext1>|<ext2>,<nic2>!<ext1>|<ext2>,..., for example, eth0!-eth0|-eth0-ipv6,ib0!-ib0|-ib0-ipv6.
The xCAT object definition commands support to use nichostnamesuffixes.<nicname> as the sub attributes.
Note: According to DNS rules a hostname must be a text string up to 24 characters drawn from the alphabet (A-Z), digits (0-9), minus sign (-),and period (.). When you are specifying "nichostnamesuffixes" or "nicaliases" make sure the resulting hostnames will conform to this naming convention',
nichostnameprefixes => 'Comma-separated list of hostname prefixes per NIC.
If only one ip address is associated with each NIC:
<nic1>!<ext1>,<nic2>!<ext2>,..., for example, eth0!eth0-,ib0!ib-
If multiple ip addresses are associcated with each NIC:
<nic1>!<ext1>|<ext2>,<nic2>!<ext1>|<ext2>,..., for example, eth0!eth0-|eth0-ipv6i-,ib0!ib-|ib-ipv6-.
The xCAT object definition commands support to use nichostnameprefixes.<nicname> as the sub attributes.
Note: According to DNS rules a hostname must be a text string up to 24 characters drawn from the alphabet (A-Z), digits (0-9), minus sign (-),and period (.). When you are specifying "nichostnameprefixes" or "nicaliases" make sure the resulting hostnames will conform to this naming convention',
nictypes => 'Comma-separated list of NIC types per NIC. <nic1>!<type1>,<nic2>!<type2>, e.g. eth0!Ethernet,ib0!Infiniband. The xCAT object definition commands support to use nictypes.<nicname> as the sub attributes.',
niccustomscripts => 'Comma-separated list of custom scripts per NIC. <nic1>!<script1>,<nic2>!<script2>, e.g. eth0!configeth eth0, ib0!configib ib0. The xCAT object definition commands support to use niccustomscripts.<nicname> as the sub attribute
.',
@@ -1375,7 +1465,7 @@ kitrepo => {
},
},
kitcomponent => {
cols => [qw(kitcompname description kitname kitreponame basename version release serverroles kitpkgdeps driverpacks kitcompdeps postbootscripts genimage_postinstall exlist comments disable)],
cols => [qw(kitcompname description kitname kitreponame basename version release serverroles kitpkgdeps prerequisite driverpacks kitcompdeps postbootscripts genimage_postinstall exlist comments disable)],
keys => [qw(kitcompname)],
tablespace =>'XCATTBS16K',
table_desc => 'This table stores all kit components added to the xCAT cluster.',
@@ -1389,6 +1479,7 @@ kitcomponent => {
release => 'Kit Component release.',
serverroles => 'The types of servers that this Kit Component can install on. Valid types are: mgtnode, servicenode, compute',
kitpkgdeps => 'Comma-separated list of packages that this kit component depends on.',
prerequisite => 'Prerequisite for this kit component, the prerequisite includes ospkgdeps,preinstall,preupgrade,preuninstall scripts',
driverpacks => 'Comma-separated List of driver package names. These must be full names like: pkg1-1.0-1.x86_64.rpm.',
kitcompdeps => 'Comma-separated list of kit components that this kit component depends on.',
postbootscripts => 'Comma-separated list of postbootscripts that will run during the node boot.',
@@ -1433,6 +1524,50 @@ discoverydata => {
disable => "Set to 'yes' or '1' to comment out this row.",
},
},
cfgmgt => {
cols => [qw(node cfgmgr cfgserver roles comments disable)],
keys => [qw(node)],
table_desc => 'Configuration management data for nodes used by non-xCAT osimage management services to install and configure software on a node. ',
descriptions => {
node => 'The node being managed by the cfgmgr service',
cfgmgr => 'The name of the configuration manager service. Currently \'chef\' and \'puppet\' are supported services.',
cfgserver => 'The xCAT node name of the chef server or puppet master',
roles => 'The roles associated with this node as recognized by the cfgmgr for the software that is to be installed and configured. These role names map to chef recipes or puppet manifest classes that should be used for this node. For example, chef OpenStack cookbooks have roles such as mysql-master,keystone, glance, nova-controller, nova-conductor, cinder-all. ',
comments => 'Any user-written notes.',
disable => "Set to 'yes' or '1' to comment out this row.",
},
},
mic => {
cols => [qw(node host id nodetype bridge onboot vlog powermgt comments disable)],
keys => [qw(node)],
table_desc => 'The host, slot id and configuraton of the mic (Many Integrated Core).',
descriptions => {
node => 'The node name or group name.',
host => 'The host node which the mic card installed on.',
id => 'The device id of the mic node.',
nodetype => 'The hardware type of the mic node. Generally, it is mic.',
bridge => 'The virtual bridge on the host node which the mic connected to.',
onboot => 'Set mic to autoboot when mpss start. Valid values: yes|no. Default is yes.',
vlog => 'Set the Verbose Log to console. Valid values: yes|no. Default is no.',
powermgt => 'Set the Power Management for mic node. This attribute is used to set the power management state that mic may get into when it is idle. Four states can be set: cpufreq, corec6, pc3 and pc6. The valid value for powermgt attribute should be [cpufreq=<on|off>]![corec6=<on|off>]![pc3=<on|off>]![pc6=<on|off>]. e.g. cpufreq=on!corec6=off!pc3=on!pc6=off. Refer to the doc of mic to get more information for power management.',
comments => 'Any user-provided notes.',
disable => "Do not use. tabprune will not work if set to yes or 1",
},
},
hwinv => {
cols => [qw(node cputype cpucount memory disksize comments disable)],
keys => [qw(node)],
table_desc => 'The hareware inventory for the node.',
descriptions => {
node => 'The node name or group name.',
cputype => 'The cpu model name for the node.',
cpucount => 'The number of cpus for the node.',
memory => 'The size of the memory for the node in MB.',
disksize => 'The size of the disks for the node in GB.',
comments => 'Any user-provided notes.',
disable => "Set to 'yes' or '1' to comment out this row.",
},
},
); # end of tabspec definition
@@ -1510,6 +1645,9 @@ foreach my $tabname (keys(%xCAT::ExtTab::ext_tabspec)) {
kitcomponent => { attrs => [], attrhash => {}, objkey => 'kitcompname' },
rack => { attrs => [], attrhash => {}, objkey => 'rackname' },
osdistro=> { attrs => [], attrhash => {}, objkey => 'osdistroname' },
osdistroupdate=> { attrs => [], attrhash => {}, objkey => 'osupdatename' },
zone=> { attrs => [], attrhash => {}, objkey => 'zonename' },
);
@@ -1577,6 +1715,11 @@ my @nodeattrs = (
tabentry => 'noderes.monserver',
access_tabentry => 'noderes.node=attr:node',
},
{attr_name => 'supportproxydhcp',
tabentry => 'noderes.proxydhcp',
access_tabentry => 'noderes.node=attr:node',
},
{attr_name => 'kernel',
tabentry => 'bootparams.kernel',
access_tabentry => 'bootparams.node=attr:node',
@@ -1645,6 +1788,10 @@ my @nodeattrs = (
{attr_name => 'setupipforward',
tabentry => 'servicenode.ipforward',
access_tabentry => 'servicenode.node=attr:node',
},
{attr_name => 'setupproxydhcp',
tabentry => 'servicenode.proxydhcp',
access_tabentry => 'servicenode.node=attr:node',
},
# - moserver not used yet
# {attr_name => 'setupmonserver',
@@ -1765,6 +1912,10 @@ my @nodeattrs = (
{attr_name => 'serialflow',
tabentry => 'nodehm.serialflow',
access_tabentry => 'nodehm.node=attr:node',
},
{attr_name => 'consoleondemand',
tabentry => 'nodehm.consoleondemand',
access_tabentry => 'nodehm.node=attr:node',
},
##################
# vpd table #
@@ -1930,6 +2081,11 @@ my @nodeattrs = (
tabentry => 'mp.nodetype',
access_tabentry => 'mp.node=attr:node',
},
{attr_name => 'hwtype',
only_if => 'mgt=ipmi',
tabentry => 'mp.nodetype',
access_tabentry => 'mp.node=attr:node',
},
{attr_name => 'supernode',
tabentry => 'ppc.supernode',
access_tabentry => 'ppc.node=attr:node',
@@ -2048,7 +2204,7 @@ my @nodeattrs = (
tabentry => 'mp.id',
access_tabentry => 'mp.node=attr:node',
},
{attr_name => 'id',
{attr_name => 'slotid',
only_if => 'mgt=ipmi',
tabentry => 'mp.id',
access_tabentry => 'mp.node=attr:node',
@@ -2121,6 +2277,10 @@ my @nodeattrs = (
tabentry => 'nics.nichostnamesuffixes',
access_tabentry => 'nics.node=attr:node',
},
{attr_name => 'nichostnameprefixes',
tabentry => 'nics.nichostnameprefixes',
access_tabentry => 'nics.node=attr:node',
},
{attr_name => 'nictypes',
tabentry => 'nics.nictypes',
access_tabentry => 'nics.node=attr:node',
@@ -2174,6 +2334,14 @@ my @nodeattrs = (
tabentry => 'storage.osvolume',
access_tabentry => 'storage.node=attr:node',
},
{attr_name => 'storagcontroller',
tabentry => 'storage.controller',
access_tabentry => 'storage.node=attr:node',
},
{attr_name => 'storagetype',
tabentry => 'storage.type',
access_tabentry => 'storage.node=attr:node',
},
######################
# vm table #
######################
@@ -2193,10 +2361,26 @@ my @nodeattrs = (
tabentry => 'vm.storage',
access_tabentry => 'vm.node=attr:node',
},
{attr_name => 'vmphyslots',
tabentry => 'vm.physlots',
access_tabentry => 'vm.node=attr:node',
},
{attr_name => 'vmothersetting',
tabentry => 'vm.othersettings',
access_tabentry => 'vm.node=attr:node',
},
{attr_name => 'vmstoragemodel',
tabentry => 'vm.storagemodel',
access_tabentry => 'vm.node=attr:node',
},
{attr_name => 'vmstoragecache',
tabentry => 'vm.storagecache',
access_tabentry => 'vm.node=attr:node',
},
{attr_name => 'vmstorageformat',
tabentry => 'vm.storageformat',
access_tabentry => 'vm.node=attr:node',
},
{attr_name => 'vmcfgstore',
tabentry => 'vm.cfgstore',
access_tabentry => 'vm.node=attr:node',
@@ -2327,6 +2511,79 @@ my @nodeattrs = (
tabentry => 'prescripts.end',
access_tabentry => 'prescripts.node=attr:node',
},
#################
# cfgmgt table #
#################
{attr_name => 'cfgmgr',
tabentry => 'cfgmgt.cfgmgr',
access_tabentry => 'cfgmgt.node=attr:node',
},
{attr_name => 'cfgserver',
tabentry => 'cfgmgt.cfgserver',
access_tabentry => 'cfgmgt.node=attr:node',
},
{attr_name => 'cfgmgtroles',
tabentry => 'cfgmgt.roles',
access_tabentry => 'cfgmgt.node=attr:node',
},
#####################
## mic table #
#####################
{attr_name => 'michost',
only_if => 'mgt=mic',
tabentry => 'mic.host',
access_tabentry => 'mic.node=attr:node',
},
{attr_name => 'micid',
only_if => 'mgt=mic',
tabentry => 'mic.id',
access_tabentry => 'mic.node=attr:node',
},
{attr_name => 'hwtype',
only_if => 'mgt=mic',
tabentry => 'mic.nodetype',
access_tabentry => 'mic.node=attr:node',
},
{attr_name => 'micbridge',
only_if => 'mgt=mic',
tabentry => 'mic.bridge',
access_tabentry => 'mic.node=attr:node',
},
{attr_name => 'miconboot',
only_if => 'mgt=mic',
tabentry => 'mic.onboot',
access_tabentry => 'mic.node=attr:node',
},
{attr_name => 'micvlog',
only_if => 'mgt=mic',
tabentry => 'mic.vlog',
access_tabentry => 'mic.node=attr:node',
},
{attr_name => 'micpowermgt',
only_if => 'mgt=mic',
tabentry => 'mic.powermgt',
access_tabentry => 'mic.node=attr:node',
},
#####################
## hwinv table #
#####################
{attr_name => 'cputype',
tabentry => 'hwinv.cputype',
access_tabentry => 'hwinv.node=attr:node',
},
{attr_name => 'cpucount',
tabentry => 'hwinv.cpucount',
access_tabentry => 'hwinv.node=attr:node',
},
{attr_name => 'memory',
tabentry => 'hwinv.memory',
access_tabentry => 'hwinv.node=attr:node',
},
{attr_name => 'disksize',
tabentry => 'hwinv.disksize',
access_tabentry => 'hwinv.node=attr:node',
},
); # end of @nodeattrs that applies to both nodes and groups
@@ -2376,7 +2633,11 @@ my @nodeattrs = (
{attr_name => 'updatestatustime',
tabentry => 'nodelist.updatestatustime',
access_tabentry => 'nodelist.node=attr:node',
},
},
{attr_name => 'zonename',
tabentry => 'nodelist.zonename',
access_tabentry => 'nodelist.node=attr:node',
},
{attr_name => 'usercomment',
tabentry => 'nodelist.comments',
access_tabentry => 'nodelist.node=attr:node',
@@ -2581,6 +2842,29 @@ push(@{$defspec{node}->{'attrs'}}, @nodeattrs);
access_tabentry => 'linuximage.imagename=attr:imagename',
},
####################
# winimage table#
####################
{attr_name => 'template',
only_if => 'imagetype=windows',
tabentry => 'winimage.template',
access_tabentry => 'winimage.imagename=attr:imagename',
},
{attr_name => 'installto',
only_if => 'imagetype=windows',
tabentry => 'winimage.installto',
access_tabentry => 'winimage.imagename=attr:imagename',
},
{attr_name => 'partitionfile',
only_if => 'imagetype=windows',
tabentry => 'winimage.partitionfile',
access_tabentry => 'winimage.imagename=attr:imagename',
},
{attr_name => 'winpepath',
only_if => 'imagetype=windows',
tabentry => 'winimage.winpepath',
access_tabentry => 'winimage.imagename=attr:imagename',
},
####################
# nimimage table#
####################
{attr_name => 'nimtype',
@@ -2807,6 +3091,31 @@ push(@{$defspec{node}->{'attrs'}}, @nodeattrs);
access_tabentry => 'rack.rackname=attr:rackname',
},
);
####################
# zone table #
####################
@{$defspec{zone}->{'attrs'}} = (
{attr_name => 'zonename',
tabentry => 'zone.zonename',
access_tabentry => 'zone.zonename=attr:zonename',
},
{attr_name => 'sshkeydir',
tabentry => 'zone.sshkeydir',
access_tabentry => 'zone.zonename=attr:zonename',
},
{attr_name => 'sshbetweennodes',
tabentry => 'zone.sshbetweennodes',
access_tabentry => 'zone.zonename=attr:zonename',
},
{attr_name => 'defaultzone',
tabentry => 'zone.defaultzone',
access_tabentry => 'zone.zonename=attr:zonename',
},
{attr_name => 'usercomment',
tabentry => 'zone.comments',
access_tabentry => 'zone.zonename=attr:zonename',
},
);
#########################
# route data object #
#########################
@@ -3133,7 +3442,7 @@ push(@{$defspec{group}->{'attrs'}}, @nodeattrs);
access_tabentry => 'firmware.file=attr:cfgfile',
},
{attr_name => 'disable',
tabentry => 'auditlog.disable',
tabentry => 'firmware.disable',
access_tabentry => 'firmware.file=attr:cfgfile',
},
);
@@ -3172,6 +3481,35 @@ push(@{$defspec{group}->{'attrs'}}, @nodeattrs);
},
);
#############################
# osdistroupdate object #
#############################
@{$defspec{osdistroupdate}->{'attrs'}} = (
{attr_name => 'osupdatename',
tabentry => 'osdistroupdate.osupdatename',
access_tabentry => 'osdistroupdate.osupdatename=attr:osupdatename',
},
{attr_name => 'osdistroname',
tabentry => 'osdistroupdate.osdistroname',
access_tabentry => 'osdistroupdate.osupdatename=attr:osupdatename',
},
{attr_name => 'dirpath',
tabentry => 'osdistroupdate.dirpath',
access_tabentry => 'osdistroupdate.osupdatename=attr:osupdatename',
},
{attr_name => 'downloadtime',
tabentry => 'osdistroupdate.downloadtime',
access_tabentry => 'osdistroupdate.osupdatename=attr:osupdatename',
},
{attr_name => 'usercomment',
tabentry => 'osdistroupdate.comments',
access_tabentry => 'osdistroupdate.osupdatename=attr:osupdatename',
},
);
#############################
# kit object #
#############################
#############################
# kit object #
#############################
@@ -3182,8 +3520,8 @@ push(@{$defspec{group}->{'attrs'}}, @nodeattrs);
tabentry => 'kit.kitname',
access_tabentry => 'kit.kitname=attr:kitname',
},
{attr_name => 'name',
tabentry => 'kit.name',
{attr_name => 'basename',
tabentry => 'kit.basename',
access_tabentry => 'kit.kitname=attr:kitname',
},
{attr_name => 'description',
+25 -18
View File
@@ -30,7 +30,6 @@ use strict;
Example:
my $retdata = xCAT::ServiceNodeUtils->readSNInfo;
=cut
#-----------------------------------------------------------------------------
sub readSNInfo
{
@@ -102,13 +101,17 @@ sub isServiceReq
require xCAT::Table;
my ($class, $servicenodename, $serviceip) = @_;
# list of all services from service node table
# note this must be updated if more services added
my @services = (
"nameserver", "dhcpserver", "tftpserver", "nfsserver",
"conserver", "monserver", "ldapserver", "ntpserver",
"ftpserver", "ipforward"
);
# get list of all services from service node table ( actually all defined attributes)
# read the schema
my $schema = xCAT::Table->getTableSchema("servicenode");
my @services; # list of only the actual service attributes from the servicenode table
my @servicesattrs; # building second copy for call to getAllNodeAttribs, which modifies the array
foreach my $c (@{$schema->{cols}}) {
if (($c ne "node") && ($c ne "comments") && ($c ne "disable")) {
push @servicesattrs,$c;
push @services,$c;
}
}
my @ips = @$serviceip; # list of service node ip addresses and names
my $rc = 0;
@@ -139,10 +142,11 @@ sub isServiceReq
}
my $servicehash;
# read all the nodes from the table, for each service
foreach my $service (@services)
# read all the nodes from the table, all the service attributes
my @snodelist= $servicenodetab->getAllNodeAttribs(\@servicesattrs);
foreach my $service (@services) # check list of services
{
my @snodelist = $servicenodetab->getAllNodeAttribs([$service]);
foreach $serviceip (@ips) # check the table for this servicenode
{
@@ -159,6 +163,8 @@ sub isServiceReq
if (($value eq "1") || ($value eq "YES"))
{
$servicehash->{$service} = "1";
} elsif ($value eq "2") {
$servicehash->{$service} = "2";
} else {
$servicehash->{$service} = "0";
}
@@ -238,12 +244,13 @@ sub getAllSN
# if did not input "ALL" and there is a MN, remove it
my @newservicenodes;
if ((!defined($options)) || ($options ne "ALL")) {
my $mname = xCAT::Utils->noderangecontainsMn(@servicenodes);
if ($mname) { # if there is a MN
foreach my $nodes (@servicenodes) {
if ($mname ne ($nodes)){
push @newservicenodes, $nodes;
}
my @mname = xCAT::Utils->noderangecontainsMn(@servicenodes);
if (@mname) { # if there is a MN
foreach my $node (@servicenodes) {
# check to see if node in MN list
if (!(grep(/^$node$/, @mname))) { # if node not in the MN array
push @newservicenodes, $node;
}
}
$servicenodetab->close;
return @newservicenodes; # return without the MN in the array
@@ -351,7 +358,7 @@ sub getSNList
$servicenodetab->close;
foreach my $node (@nodes)
{
if ($service eq "") # want all the service nodes
if (! defined ($service) || ($service eq "")) # want all the service nodes
{
push @servicenodes, $node->{node};
}
+106 -72
View File
@@ -70,7 +70,7 @@ require xCAT::NotifHandler;
my $dbworkerpid; #The process id of the database worker
my $dbworkersocket;
my $dbsockpath = "/tmp/xcat/dbworker.sock.".$$;
my $dbsockpath = "/var/run/xcat/dbworker.sock.".$$;
my $exitdbthread;
my $dbobjsforhandle;
my $intendedpid;
@@ -159,7 +159,7 @@ sub init_dbworker {
#This process is the database worker, it's job is to manage database queries to reduce required handles and to permit cross-process caching
$0 = "xcatd: DB Access";
use File::Path;
mkpath('/tmp/xcat/');
mkpath('/var/run/xcat/');
use IO::Socket;
$SIG{TERM} = $SIG{INT} = sub {
$exitdbthread=1;
@@ -323,6 +323,8 @@ sub handle_dbc_request {
return $opentables{$tablename}->{$autocommit}->getAllNodeAttribs(@args);
} elsif ($functionname eq 'getAllEntries') {
return $opentables{$tablename}->{$autocommit}->getAllEntries(@args);
} elsif ($functionname eq 'getMAXMINEntries') {
return $opentables{$tablename}->{$autocommit}->getMAXMINEntries(@args);
} elsif ($functionname eq 'writeAllEntries') {
return $opentables{$tablename}->{$autocommit}->writeAllEntries(@args);
} elsif ($functionname eq 'getAllAttribsWhere') {
@@ -1603,7 +1605,7 @@ sub setAttribs
# delimit the columns of the table
my $delimitedcol = &delimitcol($col);
$cols = $cols . $delimitedcol . " = ?,";
push @bind, (($$elems{$col} =~ /NULL/) ? undef: $$elems{$col});
push @bind, (($$elems{$col} eq "NULL") ? undef: $$elems{$col});
}
chop($cols);
my $cmd ;
@@ -1786,7 +1788,7 @@ sub setAttribsWhere
# delimit the columns of the table
my $delimitedcol = &delimitcol($col);
$cols = $cols . $delimitedcol . " = ?,";
push @bind, (($$elems{$col} =~ /NULL/) ? undef: $$elems{$col});
push @bind, (($$elems{$col} eq "NULL") ? undef: $$elems{$col});
}
chop($cols);
my $cmd = "UPDATE " . $self->{tabname} . " set $cols where " . $where_clause;
@@ -2349,71 +2351,6 @@ sub getNodeAttribs
#--------------------------------------------------------------------------
=head3 getNodeSpecAttribs
Description: Retrieves the requested attributes which matching the specified options for a node
Arguments:
Noderange
The specified options
List of attributes
Return:
Attribute hash
Example:
my $tab = xCAT::Table->new('ppcdirect');
my $ent = $tab->getNodeSpecAttribs($node, {username=>'HMC'}, qw/password/);
Comments:
The keys of the specified options can be given in the list of attributes or not,
this routine will deal with them.
=cut
#--------------------------------------------------------------------------
#sub getNodeSpecAttribs {
# my $self = shift;
# my $node = shift;
# my %options = ();
# my @attribs = ();
# my @keys = ();
# if (ref $_[0] eq 'HASH') {
# %options = %{shift()};
# @attribs = @_;
# foreach my $key (keys %options) {
# if (!grep(/^$key$/, @attribs)) {
# push @attribs, $key;
# }
# }
# } else {
# @attribs = @_;
# }
# if ((keys (%options)) == 0) {
# my $ent = $self->getNodeAttribs($node, \@attribs);
# return $ent;
# } else {
# my $nodekey = "node";
# if (defined $xCAT::Schema::tabspec{$self->{tabname}}->{nodecol}) {
# $nodekey = $xCAT::Schema::tabspec{$self->{tabname}}->{nodecol};
# }
# $options{$nodekey} = $node;
# my $ent = $self->getAttribs(\%options, \@attribs);
# if ($ent) {
# return $ent;
# }
# my ($nodeghash) = $self->{nodelist}->getAttribs({node=>$node}, "groups");
# unless(defined($nodeghash) && defined($nodeghash->{groups})) {
# return undef;
# }
# my @nodegroups = split(/,/, $nodeghash->{groups});
# foreach my $group (@nodegroups) {
# $options{$nodekey} = $group;
# my $g_ret = $self->getAttribs(\%options, \@attribs);
# if ($g_ret) {
# return $g_ret;
# }
# }
# }
# return undef;
#}
#--------------------------------------------------------------------------
=head3 getNodeAttribs_nosub
Description:
@@ -2967,10 +2904,14 @@ sub getAllNodeAttribs
$self->{nrcache}->{$data->{$nodekey}}->{tstamp} = time();
}
@nodes = @{$self->{nrcache}->{$data->{$nodekey}}->{value}}; #expand node entry, to make groups expand
unless (@nodes) { #in the event of an entry not in nodelist, use entry value verbatim
@nodes = ($data->{$nodekey});
}
#If node not in nodelist do not add to the hash (SF 3580)
#unless (@nodes) { #in the event of an entry not in nodelist, use entry value verbatim
# @nodes = ($data->{$nodekey});
#} end SF 3580
#my $localhash = $self->getNodesAttribs(\@nodes,$attribq); #NOTE: This is stupid, rebuilds the cache for every entry, FIXME
foreach (@nodes)
{
if ($donenodes{$_}) { next; }
@@ -4049,5 +3990,98 @@ sub output_table {
print $fh "\n";
return 0;
}
#--------------------------------------------------------------------------
=head3 getMAXMINEntries
Description: Select the rows in the Table which has the MAX and the row with the
Min value for the input attribute.
Currently only the auditlog and evenlog are setup to have such an attribute (recid).
Arguments:
Table handle
attribute name ( e.g. recid)
Returns:
HASH
max=> max value
min=> min value
Globals:
Error:
Example:
my $tabh = xCAT::Table->new($table);
my $recs=$tabh->getEntries("recid"); # returns row with recid max value in database
# and the row with the min value.
Comments:
none
=cut
#--------------------------------------------------------------------------------
sub getMAXMINEntries
{
my $self = shift;
if ($dbworkerpid) {
return dbc_call($self,'getMAXMINEntries',@_);
}
my $attr = shift;
my $rets;
my $query;
my $xcatcfg=get_xcatcfg();
# delimit the disable column based on the DB
my $disable= &delimitcol("disable");
my $qstring;
if ($xcatcfg =~ /^DB2:/) { # for DB2
$qstring = "SELECT MAX (\"$attr\") FROM " . $self->{tabname} . " WHERE " . $disable . " is NULL or " . $disable . " in ('0','no','NO','No','nO')";
} else {
$qstring = "SELECT MAX($attr) FROM " . $self->{tabname} . " WHERE " . $disable . " is NULL or " . $disable . " in ('0','no','NO','No','nO')";
}
$query = $self->{dbh}->prepare($qstring);
$query->execute();
while (my $data = $query->fetchrow_hashref())
{
foreach (keys %$data)
{
if ($data->{$_} =~ /^$/)
{
$rets->{"max"} = undef;
} else {
$rets->{"max"} = $data->{$_};
}
last; # better only be one value for max
}
}
$query->finish();
if ($xcatcfg =~ /^DB2:/) { # for DB2
$qstring = "SELECT MIN (\"$attr\") FROM " . $self->{tabname} . " WHERE " . $disable . " is NULL or " . $disable . " in ('0','no','NO','No','nO')";
} else {
$qstring = "SELECT MIN($attr) FROM " . $self->{tabname} . " WHERE " . $disable . " is NULL or " . $disable . " in ('0','no','NO','No','nO')";
}
$query = $self->{dbh}->prepare($qstring);
$query->execute();
while (my $data = $query->fetchrow_hashref())
{
foreach (keys %$data)
{
if ($data->{$_} =~ /^$/)
{
$rets->{"min"} = undef;
} else {
$rets->{"min"} = $data->{$_};
}
last; # better be only one value for min
}
}
return $rets;
}
1;
+457 -56
View File
@@ -19,6 +19,7 @@ if ($^O =~ /^aix/i) {
use lib "$::XCATROOT/lib/perl";
use strict;
require xCAT::Table;
require xCAT::Zone;
use File::Path;
#-----------------------------------------------------------------------
@@ -257,6 +258,7 @@ sub bldnonrootSSHFiles
Arguments:
Array of nodes
Timeout for expect call (optional)
Returns:
Env Variables: $DSH_FROM_USERID, $DSH_TO_USERID, $DSH_REMOTE_PASSWORD
@@ -270,7 +272,7 @@ sub bldnonrootSSHFiles
Error:
0=good, 1=error
Example:
xCAT::TableUtils->setupSSH(@target_nodes);
xCAT::TableUtils->setupSSH(@target_nodes,$expecttimeout);
Comments:
Does not setup known_hosts. Assumes automatically
setup by SSH ( ssh config option StrictHostKeyChecking no should
@@ -281,7 +283,7 @@ sub bldnonrootSSHFiles
#--------------------------------------------------------------------------------
sub setupSSH
{
my ($class, $ref_nodes) = @_;
my ($class, $ref_nodes,$expecttimeout) = @_;
my @nodes = $ref_nodes;
my @badnodes = ();
my $n_str = $nodes[0];
@@ -334,23 +336,24 @@ sub setupSSH
$::REMOTE_SHELL = "/usr/bin/ssh";
my $rsp = {};
# Get the home directory
my $home = xCAT::Utils->getHomeDir($from_userid);
$ENV{'DSH_FROM_USERID_HOME'} = $home;
if ($from_userid eq "root")
{
# make the directory to hold keys to transfer to the nodes
if (!-d $SSHdir)
{
mkpath("$SSHdir", { mode => 0755 });
}
# generates new keys for root, if they do not already exist
# generates new keys for root, if they do not already exist ~/.ssh
# nodes not used on this option but in there to preserve the interface
my $rc=
xCAT::RemoteShellExp->remoteshellexp("k",$::CALLBACK,$::REMOTE_SHELL);
xCAT::RemoteShellExp->remoteshellexp("k",$::CALLBACK,$::REMOTE_SHELL,$n_str,$expecttimeout);
if ($rc != 0) {
$rsp->{data}->[0] = "remoteshellexp failed generating keys.";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
@@ -372,7 +375,10 @@ else
fi
mkdir -p \$dest_dir
cat /tmp/$to_userid/.ssh/authorized_keys >> \$home/.ssh/authorized_keys 2>&1
cat /tmp/$to_userid/.ssh/id_rsa.pub >> \$home/.ssh/authorized_keys 2>&1
rm -f \$home/.ssh/id_rsa 2>&1
cp /tmp/$to_userid/.ssh/id_rsa \$home/.ssh/id_rsa 2>&1
cp /tmp/$to_userid/.ssh/id_rsa.pub \$home/.ssh/id_rsa.pub 2>&1
chmod 0600 \$home/.ssh/id_* 2>&1
rm -f /tmp/$to_userid/.ssh/* 2>&1
rmdir \"/tmp/$to_userid/.ssh\"
@@ -384,6 +390,7 @@ rmdir \"/tmp/$to_userid\" \n";
my $auth_key2=0;
if ($from_userid eq "root")
{
# this will put the root/.ssh/id_rsa.pub key in the authorized keys file to put on the node
my $rc = xCAT::TableUtils->cpSSHFiles($SSHdir);
if ($rc != 0)
{ # error
@@ -416,53 +423,50 @@ rmdir \"/tmp/$to_userid\" \n";
xCAT::TableUtils->bldnonrootSSHFiles($from_userid);
}
# send the keys to the nodes for root or some other id
#
# This environment variable determines whether to setup
# node to node ssh
# The nodes must be checked against the site.sshbetweennodes attribute
# send the keys
# For root user and not to devices only to nodes
if (($from_userid eq "root") && (!($ENV{'DEVICETYPE'}))) {
my $enablenodes;
my $disablenodes;
my @nodelist= split(",", $n_str);
foreach my $n (@nodelist)
# Need to check if nodes are in a zone.
my @zones;
my $tab = xCAT::Table->new("zone");
my @zones;
if ($tab)
{
my $enablessh=xCAT::TableUtils->enablessh($n);
if ($enablessh == 1) {
$enablenodes .= $n;
$enablenodes .= ",";
} else {
$disablenodes .= $n;
$disablenodes .= ",";
# if we have zones, need to send the zone keys to each node in the zone
my @attribs = ("zonename");
@zones = $tab->getAllAttribs(@attribs);
$tab->close();
} else {
$rsp->{data}->[0] = "Could not open zone table.\n";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
return 1;
}
# check for zones, key send is different if zones defined or not
if (@zones) { # we have zones defined
my $rc = xCAT::TableUtils->sendkeysTOzones($ref_nodes,$expecttimeout);
if ($rc != 0)
{
$rsp->{data}->[0] = "Error sending ssh keys to the zones.\n";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
exit 1;
}
}
my $cmd;
if ($enablenodes) { # node on list to setup nodetonodessh
chop $enablenodes; # remove last comma
$ENV{'DSH_ENABLE_SSH'} = "YES";
my $rc=xCAT::RemoteShellExp->remoteshellexp("s",$::CALLBACK,"/usr/bin/ssh",$enablenodes);
} else { # no zones
# if no zone table defined, do it the old way , keys are in ~/.ssh
my $rc = xCAT::TableUtils->sendkeysNOzones($ref_nodes,$expecttimeout);
if ($rc != 0)
{
$rsp->{data}->[0] = "remoteshellexp failed sending keys to enablenodes.";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
}
}
if ($disablenodes) { # node on list to setup nodetonodessh
chop $disablenodes; # remove last comma
my $rc=xCAT::RemoteShellExp->remoteshellexp("s",$::CALLBACK,"/usr/bin/ssh",$disablenodes);
if ($rc != 0)
{
$rsp->{data}->[0] = "remoteshellexp failed sending keys to disablenodes.";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
{
$rsp->{data}->[0] = "Error sending ssh keys to the nodes.\n";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
}
}
} else { # from user is not root or it is a device , always send private key
$ENV{'DSH_ENABLE_SSH'} = "YES";
my $rc=xCAT::RemoteShellExp->remoteshellexp("s",$::CALLBACK,"/usr/bin/ssh",$n_str);
my $rc=xCAT::RemoteShellExp->remoteshellexp("s",$::CALLBACK,"/usr/bin/ssh",$n_str,$expecttimeout);
if ($rc != 0)
{
$rsp->{data}->[0] = "remoteshellexp failed sending keys.";
@@ -476,7 +480,7 @@ rmdir \"/tmp/$to_userid\" \n";
foreach my $n (@testnodes)
{
my $rc=
xCAT::RemoteShellExp->remoteshellexp("t",$::CALLBACK,"/usr/bin/ssh",$n);
xCAT::RemoteShellExp->remoteshellexp("t",$::CALLBACK,"/usr/bin/ssh",$n,$expecttimeout);
if ($rc != 0)
{
push @badnodes, $n;
@@ -501,6 +505,235 @@ rmdir \"/tmp/$to_userid\" \n";
#--------------------------------------------------------------------------------
=head3 sendkeysNOzones
Transfers the ssh keys
for the root id on the nodes no zones
key from ~/.ssh site.sshbetweennodes honored
Arguments:
Array of nodes
Timeout for expect call (optional)
Returns:
Env Variables: $DSH_FROM_USERID, $DSH_TO_USERID, $DSH_REMOTE_PASSWORD
the ssh keys are transferred from the $DSH_FROM_USERID to the $DSH_TO_USERID
on the node(s). The DSH_REMOTE_PASSWORD and the DSH_FROM_USERID
must be obtained by
the calling script or from the xdsh client
Globals:
$::XCATROOT , $::CALLBACK
Error:
0=good, 1=error
Example:
xCAT::TableUtils->sendkeysNOzones($ref_nodes,$expecttimeout);
Comments:
Does not setup known_hosts. Assumes automatically
setup by SSH ( ssh config option StrictHostKeyChecking no should
be set in the ssh config file).
=cut
#--------------------------------------------------------------------------------
sub sendkeysNOzones
{
my ($class, $ref_nodes,$expecttimeout) = @_;
my @nodes=$ref_nodes;
my $enablenodes;
my $disablenodes;
my $n_str = $nodes[0];
my @nodelist= split(",", $n_str);
my $rsp = ();
foreach my $n (@nodelist)
{
my $enablessh=xCAT::TableUtils->enablessh($n);
if ($enablessh == 1) {
$enablenodes .= $n;
$enablenodes .= ",";
} else {
$disablenodes .= $n;
$disablenodes .= ",";
}
}
if ($enablenodes) { # node on list to setup nodetonodessh
chop $enablenodes; # remove last comma
$ENV{'DSH_ENABLE_SSH'} = "YES";
# send the keys to the nodes
my $rc=xCAT::RemoteShellExp->remoteshellexp("s",$::CALLBACK,"/usr/bin/ssh",$enablenodes,$expecttimeout);
if ($rc != 0)
{
$rsp->{data}->[0] = "remoteshellexp failed sending keys to enablenodes.";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
}
}
if ($disablenodes) { # node on list to disable nodetonodessh
chop $disablenodes; # remove last comma
# send the keys to the nodes
my $rc=xCAT::RemoteShellExp->remoteshellexp("s",$::CALLBACK,"/usr/bin/ssh",$disablenodes,$expecttimeout);
if ($rc != 0)
{
$rsp->{data}->[0] = "remoteshellexp failed sending keys to disablenodes.";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
}
}
}
#--------------------------------------------------------------------------------
=head3 sendkeysTOzones
Transfers the ssh keys
for the root id on the nodes using the zone table.
If in a zone, then root ssh keys for the node will be taken from the zones ssh keys not ~/.ssh
zones are only supported on nodes that are not a service node.
Also for the call to RemoteShellExp, we must group the nodes that are in the same zone
Arguments:
Array of nodes
Timeout for expect call (optional)
Returns:
Env Variables: $DSH_FROM_USERID, $DSH_TO_USERID, $DSH_REMOTE_PASSWORD
the ssh keys are transferred from the $DSH_FROM_USERID to the $DSH_TO_USERID
on the node(s). The DSH_REMOTE_PASSWORD and the DSH_FROM_USERID
must be obtained by
the calling script or from the xdsh client
Globals:
$::XCATROOT , $::CALLBACK
Error:
0=good, 1=error
Example:
xCAT::TableUtils->sendkeysTOzones($ref_nodes,$expecttimeout);
Comments:
Does not setup known_hosts. Assumes automatically
setup by SSH ( ssh config option StrictHostKeyChecking no should
be set in the ssh config file).
=cut
#--------------------------------------------------------------------------------
sub sendkeysTOzones
{
my ($class, $ref_nodes,$expecttimeout) = @_;
my @nodes=$ref_nodes;
my $n_str = $nodes[0];
my @nodes= split(",", $n_str);
my $rsp = ();
my $cmd;
my $roothome = xCAT::Utils->getHomeDir("root");
my $zonehash =xCAT::Zone->getzoneinfo($::CALLBACK,\@nodes);
foreach my $zonename (keys %$zonehash) {
# build list of nodes
my $zonenodelist="";
foreach my $node (@{$zonehash->{$zonename}->{nodes}}) {
$zonenodelist .= $node;
$zonenodelist .= ",";
}
$zonenodelist =~ s/,$//; # remove last comma
# if any nodes defined for the zone
if ($zonenodelist) {
# check to see if we enable passwordless ssh between the nodes
if (!(defined($zonehash->{$zonename}->{sshbetweennodes}))||
(($zonehash->{$zonename}->{sshbetweennodes} =~ /^yes$/i )
|| ($zonehash->{$zonename}->{sshbetweennodes} eq "1"))) {
$ENV{'DSH_ENABLE_SSH'} = "YES";
} else {
delete $ENV{'DSH_ENABLE_SSH'}; # do not enable passwordless ssh
}
# point to the ssh keys to send for this zone
my $keydir = $zonehash->{$zonename}->{sshkeydir} ;
# check to see if the id_rsa and id_rsa.pub key is in the directory
my $key="$keydir/id_rsa";
my $key2="$keydir/id_rsa.pub";
# Check to see if empty
if (!(-e $key)) {
my $rsp = {};
$rsp->{error}->[0] =
"The $key file does not exist for $zonename. Need to use chzone to regenerate the keys.";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK, 1);
return 1;
}
if (!(-e $key2)) {
my $rsp = {};
$rsp->{error}->[0] =
"The $key2 file does not exist for $zonename. Need to use chzone to regenerate the keys.";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK, 1);
return 1;
}
# now put copy.sh in the zone directory from ~/.ssh
my $rootkeydir="$roothome/.ssh";
if ($rootkeydir ne $keydir) { # the zone keydir is not the same as ~/.ssh.
$cmd="cp $rootkeydir/copy.sh $keydir";
xCAT::Utils->runcmd($cmd, 0);
if ($::RUNCMD_RC != 0)
{
my $rsp = {};
$rsp->{error}->[0] =
"Could not copy copy.sh to the zone key dir";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
return 1;
}
}
# Also create $keydir/tmp and put root's id_rsa.pub (in authorized_keys) for the transfer
$cmd="mkdir -p $keydir/tmp";
xCAT::Utils->runcmd($cmd, 0);
if ($::RUNCMD_RC != 0)
{
my $rsp = {};
$rsp->{error}->[0] =
"Could not mkdir the zone $keydir/tmp";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
return 1;
}
# create authorized_keys file
if (xCAT::Utils->isMN()) { # if on Management Node
$cmd = " cp $roothome/.ssh/id_rsa.pub $keydir/tmp/authorized_keys";
} else { # SN
$cmd = " cp $roothome/.ssh/authorized_keys $keydir/tmp/authorized_keys";
}
xCAT::Utils->runcmd($cmd, 0);
if ($::RUNCMD_RC != 0)
{
$rsp->{data}->[0] = "$cmd failed.\n";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
return (1);
}
else
{
chmod 0600, "$keydir/.ssh/tmp/authorized_keys";
}
# strip off .ssh
my ($newkeydir,$ssh) = (split(/\.ssh/, $keydir));
$ENV{'DSH_ZONE_SSHKEYS'} =$newkeydir ;
# send the keys to the nodes
my $rc=xCAT::RemoteShellExp->remoteshellexp("s",$::CALLBACK,"/usr/bin/ssh",
$zonenodelist,$expecttimeout);
if ($rc != 0)
{
$rsp = {};
$rsp->{data}->[0] = "remoteshellexp failed sending keys to $zonename.";
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
}
} # end nodes in the zone
} # end for each zone
return (0);
}
#--------------------------------------------------------------------------------
=head3 cpSSHFiles
Builds authorized_keyfiles for root
@@ -1498,19 +1731,10 @@ sub enablessh
my ($class, $node) = @_;
my $enablessh=1;
if( %::GLOBAL_SN_HASH ) {
if ($::GLOBAL_SN_HASH{$node} == 1) {
if( xCAT::Utils->isSN($node) ) {
$enablessh=1; # service nodes always enabled
}
} else {
if (xCAT::Utils->isSN($node))
{
$enablessh=1; # service nodes always enabled
}
else
{
# if not a service node we need to check, before enabling
my $values;
my @vals = xCAT::TableUtils->get_site_attribute("sshbetweennodes");
@@ -1554,12 +1778,93 @@ sub enablessh
$enablessh=1;
}
}
}
return $enablessh;
}
#-------------------------------------------------------------------------------
=head3 enableSSH
Description:
The function is same as enablessh() above. Before using this function,
the $sn_hash for noderange, and $groups_hash for site.sshbetweennodes should be
got. This is performance improvement.
Arguments:
$node -- node name
$sn_hash -- if the node is one sn, key is the node name, and value is 1.
if the node is not a sn, the key isn't in this hash
$groups_hash -- there are two keys:
1. Each group in the value of site.sshbetweennodes could be the key
2. Each node in the groups from the value of site.sshbetweennodes , if the
value isn't ALLGROUPS or NOGROUPS.
Returns:
1 = enable ssh
0 = do not enable ssh
Globals:
none
Error:
none
Example:
my $enable = xCAT::TableUtils->enableSSH($node);
Comments:
=cut
#-----------------------------------------------------------------------------
sub enableSSH
{
my ($class, $node, $sn_hash, $groups_hash) = @_;
my $enablessh=1;
if( defined($sn_hash) && defined($sn_hash->{node}) && $sn_hash->{$node} == 1 ) {
$enablessh=1; # service nodes always enabled
} else {
# if not a service node we need to check, before enabling
if (keys %$groups_hash) { # not empty
if ($groups_hash->{ALLGROUPS} == 1)
{
$enablessh=1;
}
else
{
if ($groups_hash->{NOGROUPS} == 1)
{
$enablessh=0;
}
else
{ # check to see if the node is a member of a group
my $ismember = 0;
$ismember = $groups_hash->{$node};
if ($ismember == 1)
{
$enablessh=1;
}
else
{
$enablessh=0;
}
}
}
}
else
{ # does not exist, set default
$enablessh=1;
}
}
return $enablessh;
}
#-----------------------------------------------------------------------------
@@ -1663,4 +1968,100 @@ sub getimagenames()
$nodetab->close;
return @imagenames;
}
#-----------------------------------------------------------------------------
=head3 updatenodegroups
Update groups attribute for the specified node
Arguments:
node
tabhd: the handler of 'nodelist' table,
groups: the groups attribute need to be merged.
Can be an array or string.
Globals:
none
Error:
Example:
xCAT::TableUtils->updatenodegroups($node, $tab, $groups);
=cut
#-----------------------------------------------------------------------------
sub updatenodegroups {
my ($class, $node, $tabhd, $groups) = @_;
if (!$groups) {
$groups = $tabhd;
$tabhd = xCAT::Table->new('nodelist');
unless ($tabhd) {
xCAT::MsgUtils->message("E", " Could not read the nodelist table\n");
return;
}
}
my ($ent) = $tabhd->getNodeAttribs($node, ['groups']);
my @list = ();
if (defined($ent) and $ent->{groups}) {
push @list, split(/,/,$ent->{groups});
}
if (ref($groups) eq 'ARRAY') {
push @list, @$groups;
} else {
push @list, split(/,/,$groups);
}
my %saw;
@saw{@list} = ();
@list = keys %saw;
$tabhd->setNodeAttribs($node, {groups=>join(",",@list)});
}
#-----------------------------------------------------------------------------
=head3 rmnodegroups
remove groups from the group attribute for the specified node
Arguments:
node
tabhd: the handler of 'nodelist' table,
groups: the groups that need to be removed.
Can be an array or string.
Globals:
none
Error:
Example:
xCAT::TableUtils->rmnodegroups($node, $tab, $groups);
=cut
#-----------------------------------------------------------------------------
sub rmnodegroups {
my ($class, $node, $tabhd, $groups) = @_;
my ($ent) = $tabhd->getNodeAttribs($node, ['groups']);
my @definedgroups;
my @removegroups;
my @newgroups;
if (defined($ent) and $ent->{groups}) {
push @definedgroups, split(/,/,$ent->{groups});
}
if (ref($groups) eq 'ARRAY') {
push @removegroups, @$groups;
} else {
push @removegroups, split(/,/,$groups);
}
# take out any groups that match the input list of groups to remove
foreach my $dgrp (@definedgroups){
if (grep(/^$dgrp$/, @removegroups)) { # is the group to be removed
next;
} else { # keep this group
push @newgroups,$dgrp;
}
}
my %saw;
@saw{@newgroups} = ();
@newgroups = keys %saw;
$tabhd->setNodeAttribs($node, {groups=>join(",",@newgroups)});
}
1;
+58 -20
View File
@@ -36,11 +36,13 @@ my %usage = (
LPAR(using Direct FSP Management) specific:
rpower <noderange> [on|off|reset|stat|state|boot|of|sms]
Blade(using Direct FSP Management) specific:
rpower <noderange> [on|off|cycle|state]
rpower <noderange> [on|onstandby|off|cycle|state|sms]
Blade(using AMM) specific:
rpower <noderange> [cycle|softoff] [-V|--verbose]
zVM specific:
rpower noderange [on|off|reset|stat|softoff]
MIC specific:
rpower noderange [stat|state|on|off|reset|boot]
",
"rbeacon" =>
"Usage: rbeacon <noderange> [on|off|stat] [-V|--verbose]
@@ -58,7 +60,9 @@ my %usage = (
Blade specific:
rvitals noderange {temp|wattage|fanspeed|leds|summary|all}
BMC specific:
rvitals noderange {temp|voltage|wattage|fanspeed|power|leds|lcds|summary|all}",
rvitals noderange {temp|voltage|wattage|fanspeed|power|leds|lcds|summary|all}
MIC specific:
rvitals noderange {thermal|all}",
"reventlog" =>
"Usage: reventlog <noderange> [all [-s]|clear|<number of entries to retrieve> [-s]] [-V|--verbose]
reventlog [-h|--help|-v|--version]",
@@ -68,22 +72,24 @@ my %usage = (
rinv <noderange> [all|model|serial] [-V|--verbose]
rinv [-h|--help|-v|--version]
BMC specific:
rinv <noderange> [vpd|mprom|deviceid|uuid|guid]
rinv <noderange> [mprom|deviceid|uuid|guid|vpd [-t]|all [-t]]
MPA specific:
rinv <noderange> [firm|bios|diag|mprom|sprom|mparom|mac|mtm]
rinv <noderange> [firm|bios|diag|mprom|sprom|mparom|mac|mtm [-t]]
PPC specific(with HMC):
rinv <noderange> [bus|config|serial|model|firm|all]
rinv <noderange> [all|bus|config|serial|model|firm [-t]]
PPC specific(using Direct FSP Management):
rinv <noderange> [firm]
rinv <noderange> [deconfig [-x]]
Blade specific:
rinv <noderange> [mtm|serial|mac|bios|diag|mprom|mparom|firm|all]
rinv <noderange> [all|serial|mac|bios|diag|mprom|mparom|firm|mtm [-t]]
IBM Flex System Compute Node specific:
rinv <noderange> [firm]
VMware specific:
rinv <noderange>
zVM specific:
rinv noderange [all|config]",
rinv noderange [all|config]
MIC specific:
rinv noderange [system|ver|board|core|gddr|all]",
"rsetboot" =>
"Usage: rsetboot <noderange> [net|hd|cd|floppy|def|stat] [-V|--verbose]
rsetboot [-h|--help|-v|--version]",
@@ -193,10 +199,15 @@ my %usage = (
"Usage:
Common:
mkvm [-h|--help|-v|--version]
For PPC(with HMC):
For PPC(with HMC) specific:
mkvm noderange -i id -l singlenode [-V|--verbose]
mkvm noderange -c destcec -p profile [-V|--verbose]
mkvm noderange --full [-V|--verbose]
PPC (using Direct FSP Management) specific:
mkvm noderange [--full]
mkvm noderange [vmcpus=min/req/max] [vmmemory=min/req/max]
[vmphyslots=drc_index1,drc_index2...] [vmothersetting=hugepage:N,bsr:N]
[vmnics=vlan1,vlan2] [vmstorage=<N|viosnode:slotid>] [--vios]
For KVM
mkvm noderange -m|--master mastername -s|--size disksize -f|--force
For zVM
@@ -210,7 +221,8 @@ my %usage = (
PPC (with HMC) specific:
lsvm <noderange> [-a|--all]
PPC (using Direct FSP Management) specific:
lsvm <noderange> [-l|--long]
lsvm <noderange> [-l|--long] --p775
lsvm <noderange>
zVM specific:
lsvm noderange
lsvm noderange --getnetworknames
@@ -225,9 +237,13 @@ my %usage = (
chvm <noderange> [-p profile][-V|--verbose]
chvm <noderange> <attr>=<val> [<attr>=<val>...]
PPC (using Direct FSP Management) specific:
chvm <noderange> [-p <profile>]
chvm <noderange> --p775 [-p <profile>]
chvm <noderange> --p775 -i <id> [-m <memory_interleaving>] -r <partition_rule>
chvm <noderange> [lparname=<*|name>]
chvm <noderange> -i <id> [-m <memory_interleaving>] -r <partition_rule>
chvm <noderange> [vmcpus=min/req/max] [vmmemory=min/req/max]
[vmphyslots=drc_index1,drc_index2...] [vmothersetting=hugepage:N,bsr:N]
[vmnics=vlan1,vlan2] [vmstorage=<N|viosnode:slotid>] [--vios]
chvm <noderange> [del_vadapter=slotid]
VMware specific:
chvm <noderange> [-a size][-d disk][-p disk][--resize disk=size][--cpus count][--mem memory]
zVM specific:
@@ -258,11 +274,13 @@ my %usage = (
"rmvm" =>
"Usage: rmvm <noderange> [--service][-V|--verbose]
rmvm [-h|--help|-v|--version],
rmvm [-p] [-f]",
rmvm [-p] [-f]
PPC (using Direct FSP Management) specific:
rmvm <noderange>",
"lsslp" =>
"Usage: lsslp [-h|--help|-v|--version]
lsslp [<noderange>][-V|--verbose][-i ip[,ip..]][-w][-r|-x|-z][-n][-I][-s FRAME|CEC|MM|IVM|RSA|HMC|CMM|IMM2|FSP]
[-t tries][--vpdtable][-C counts][-T timeout][--flexdiscover]",
[-u] [--range IPranges][-t tries][--vpdtable][-C counts][-T timeout]",
"rflash" =>
"Usage:
rflash [ -h|--help|-v|--version]
@@ -317,17 +335,31 @@ my %usage = (
renergy noderange [-V] { all | { [savingstatus] [dsavingstatus] [cappingstatus] [cappingmaxmin] [cappingvalue] [cappingsoftmin] [averageAC] [averageDC] [ambienttemp] [exhausttemp] [CPUspeed] [syssbpower] [sysIPLtime] [fsavingstatus] [ffoMin] [ffoVmin] [ffoTurbo] [ffoNorm] [ffovalue] } }
renergy noderange [-V] { {savingstatus}={on | off} | {dsavingstatus}={on-norm | on-maxp | off} | {fsavingstatus}={on | off} | {ffovalue}=MHZ | {cappingstatus}={on | off} | {cappingwatt}=watt | {cappingperc}=percentage }
Blade specific :
renergy noderange [-V] { all | pd1all | pd2all | { [pd1status] [pd2status] [pd1policy] [pd2policy] [pd1powermodule1] [pd1powermodule2] [pd2powermodule1] [pd2powermodule2] [pd1avaiablepower] [pd2avaiablepower] [pd1reservedpower] [pd2reservedpower] [pd1remainpower] [pd2remainpower] [pd1inusedpower] [pd2inusedpower] [availableDC] [averageAC] [thermaloutput] [ambienttemp] [mmtemp] } }
renergy noderange [-V] { all | { [averageDC] [capability] [cappingvalue] [CPUspeed] [maxCPUspeed] [savingstatus] [dsavingstatus] } }
renergy noderange [-V] { {savingstatus}={on | off} | {dsavingstatus}={on-norm | on-maxp | off} }",
BladeCenter specific :
For Management Modules:
renergy noderange [-V] { all | pd1all | pd2all | [pd1status] [pd2status] [pd1policy] [pd2policy] [pd1powermodule1] [pd1powermodule2] [pd2powermodule1] [pd2powermodule2] [pd1avaiablepower] [pd2avaiablepower] [pd1reservedpower] [pd2reservedpower] [pd1remainpower] [pd2remainpower] [pd1inusedpower] [pd2inusedpower] [availableDC] [averageAC] [thermaloutput] [ambienttemp] [mmtemp] }
For a blade server nodes:
renergy noderange [-V] { all | [averageDC] [capability] [cappingvalue] [CPUspeed] [maxCPUspeed] [savingstatus] [dsavingstatus] }
renergy noderange [-V] { savingstatus={on | off} | dsavingstatus={on-norm | on-maxp | off} }
Flex specific :
For Flex Management Modules:
renergy noderange [-V] { all | [powerstatus] [powerpolicy] [powermodule] [avaiablepower] [reservedpower] [remainpower] [inusedpower] [availableDC] [averageAC] [thermaloutput] [ambienttemp] [mmtemp] }
For Flex node (power and x86):
renergy noderange [-V] { all | [averageDC] [capability] [cappingvalue] [cappingmaxmin] [cappingmax] [cappingmin] [cappingGmin] [CPUspeed] [maxCPUspeed] [savingstatus] [dsavingstatus] }
renergy noderange [-V] { cappingstatus={on | off} | cappingwatt=watt | cappingperc=percentage | savingstatus={on | off} | dsavingstatus={on-norm | on-maxp | off} }
iDataPlex specific :
renergy noderange [-V] [ { cappingmaxmin | cappingmax | cappingmin } ] [cappingstatus] [cappingvalue] [relhistogram]
renergy noderange [-V] { cappingstatus={on | enable | off | disable} | {cappingwatt|cappingvalue}=watt }",
"updatenode" =>
"Usage:
updatenode [-h|--help|-v|--version]
updatenode [-h|--help|-v|--version | -g|--genmypost]
or
updatenode <noderange> [-V|--verbose] [-k|--security] [-s|--sn]
updatenode <noderange> [-V|--verbose] [-k|--security] [-s|--sn] [-t <timeout>]
or
updatenode <noderange> [-V|--verbose] [-F|--sync | -f|--snsync] [-l|--user[username]] [--fanout=[fanout value]] [-S|--sw]
updatenode <noderange> [-V|--verbose] [-F|--sync | -f|--snsync] [-l|--user[username]] [--fanout=[fanout value]] [-S|--sw] [-t <timeout>]
[-P|--scripts [script1,script2,...]] [-s|--sn]
[-A|--updateallsw] [-c|--cmdlineonly] [-d alt_source_dir]
[attr=val [attr=val...]]
@@ -348,6 +380,9 @@ Options:
[-f|--snsync] Performs File Syncing to the service nodes that service
the nodes in the noderange.
[-g|--genmypost] Will generate a new mypostscript file for the
the nodes in the noderange, if site precreatemypostscripts is 1 or YES.
[-l|--user] User name to run the updatenode command. It overrides the
current user which is the default.
@@ -361,6 +396,9 @@ Options:
[-s|--sn] Set the server information stored on the nodes.
[-t|--timeout] Time out in seconds to allow the command to run. Default is no timeout,
except for updatenode -k which has a 10 second default timeout.
[-A|--updateallsw] Install or update all software contained in the source
directory. (AIX only)
+238 -26
View File
@@ -21,10 +21,13 @@ use File::Path;
use Socket;
use strict;
use Symbol;
my $sha1support = eval {
require Digest::SHA1;
1;
};
my $sha1support;
if ( -f "/etc/debian_version" ){
$sha1support = eval {require Digest::SHA; 1;};
}
else {
$sha1support = eval { require Digest::SHA1; 1;};
}
use IPC::Open3;
use IO::Select;
use xCAT::GlobalDef;
@@ -117,6 +120,38 @@ This program module file, is a set of utilities used by xCAT commands.
#-------------------------------------------------------------
=head3 clroptionvars
- use this routine to clear GetOptions global option variables
before calling GetOptions.
- this may be needed because a "command" may be called twice
from the same process - and global options may have been
set the first time through. (ex. from a plugin using runxcmd() )
- should really avoid global vars but this provides a quick fix
for now
ex. my $rc = xCAT::Utils->clroptionvars($::opt1, $::opt2 ...)
=cut
#-------------------------------------------------------
sub clroptionvars
{
# skip the class arg and set the rest to undef
my $skippedclass=0;
foreach (@_) {
if ($skippedclass) {
$_ = undef;
}
$skippedclass=1;
}
return 0;
}
#-------------------------------------------------------------
=head3 genUUID
Returns an RFC 4122 compliant UUIDv4 or UUIDv1
Arguments:
@@ -176,7 +211,13 @@ sub genUUID
return $uuid;
} elsif ($args{url} and $sha1support) { #generate a UUIDv5 from URL
#6ba7b810-9dad-11d1-80b4-00c04fd430c8 is the uuid for URL namespace
my $sum = Digest::SHA1::sha1('6ba7b810-9dad-11d1-80b4-00c04fd430c8'.$args{url});
my $sum = '';
if ( -f "/etc/debian_version" ){
$sum = Digest::SHA::sha1('6ba7b810-9dad-11d1-80b4-00c04fd430c8'.$args{url});
}
else{
$sum = Digest::SHA1::sha1('6ba7b810-9dad-11d1-80b4-00c04fd430c8'.$args{url});
}
my @data = unpack("C*",$sum);
splice @data,16;
$data[6] = $data[6] & 0xf;
@@ -936,13 +977,9 @@ sub runcmd
if ($::VERBOSE)
{
# get this systems name as known by xCAT management node
my $Sname = xCAT::InstUtils->myxCATname();
my $msg;
if ($Sname) {
$msg = "Running command on $Sname: $cmd";
} else {
$msg="Running command: $cmd";
}
my $hostname = `/bin/hostname`;
chomp $hostname;
my $msg="Running command on $hostname: $cmd";
if ($::CALLBACK){
my $rsp = {};
@@ -1307,6 +1344,10 @@ sub runxcmd_output
{
push @$::xcmd_outref, @{$resp->{data}};
}
if (defined($resp->{status}))
{
push @$::xcmd_outref, @{$resp->{status}};
}
if (defined($resp->{node}))
{
my $node = $resp->{node}->[0];
@@ -1378,6 +1419,10 @@ sub runxcmd_output2
{
push @{$::xcmd_outref_hash->{data}}, @{$resp->{data}};
}
if (defined($resp->{status}))
{
push @{$::xcmd_outref_hash->{status}}, @{$resp->{status}};
}
if (defined($resp->{node}))
{
push @{$::xcmd_outref_hash->{node}}, @{$resp->{node}};
@@ -3125,7 +3170,7 @@ sub isSELINUX
Input:
array of nodes in the noderange
Example:
my $mn=xCAT::Utils->noderangecontainsMN($noderange);
my @mn=xCAT::Utils->noderangecontainsMN($noderange);
Comments:
=cut
@@ -3134,26 +3179,30 @@ sub noderangecontainsMn
{
my ($class, @noderange)=@_;
# check if any node in the noderange is the Management Node return the
# name
my $mname;
# name
my @mnames; # management node names in the database, members of __mgmtnode
my $tab = xCAT::Table->new('nodelist');
my @nodelist=$tab->getAllNodeAttribs(['node','groups']);
foreach my $n (@nodelist) {
if (defined($n->{'groups'})) {
my @groups=split(",",$n->{'groups'});
if ((grep (/__mgmtnode/,@groups))) { # this is the MN
$mname=$n->{'node'};
last;
push @mnames,$n->{'node'};
}
}
}
if ($mname) { # if Management Node defined in the database
if (grep(/$mname/, @noderange)) { # if MN in the noderange
return $mname;
} else {
return ;
my @MNs; # management node names found the noderange
if (@mnames) { # if any Management Node defined in the database
foreach my $mn (@mnames) {
if (grep(/^$mn$/, @noderange)) { # if MN in the noderange
push @MNs, $mn;
}
}
if (@MNs) { # management nodes in the noderange
return @MNs;
}
}
return; # if no MN in the noderange, return nothing
}
=head3 filter_nodes
@@ -3204,6 +3253,11 @@ sub filter_nodes{
if ($ipmitab) {
$ipmitabhash = $ipmitab->getNodesAttribs(\@nodes,['bmc']);
}
my $nodehmhash;
my $nodehmtab = xCAT::Table->new("nodehm");
if ($nodehmtab) {
$nodehmhash = $nodehmtab->getNodesAttribs(\@nodes,['mgt']);
}
my (@mp, @ngpfsp, @ngpbmc, @commonfsp, @commonbmc, @unknow);
@@ -3213,6 +3267,15 @@ sub filter_nodes{
# if only in 'ipmi', a common x86 node
foreach (@nodes) {
if (defined ($mptabhash->{$_}->[0]) && defined ($mptabhash->{$_}->[0]->{'mpa'})) {
if ($mptabhash->{$_}->[0]->{'mpa'} eq $_) {
if (defined($nodehmhash->{$_}->[0]) && defined($nodehmhash->{$_}->[0]->{'mgt'}) &&
$nodehmhash->{$_}->[0]->{'mgt'} eq "blade") {
push @mp, $_;
} else {
push @unknow, $_;
}
next;
}
if (defined ($ppctabhash->{$_}->[0]) && defined ($ppctabhash->{$_}->[0]->{'hcp'})) {
# flex power node
push @ngpfsp, $_;
@@ -3244,18 +3307,21 @@ sub filter_nodes{
if (@args && ($cmd eq "rspconfig")) {
if (!(grep /^(cec_off_policy|pending_power_on_side)/, @args)) {
push @{$mpnodes}, @ngpfsp;
if (grep /^(network=)/, @args) {
push @{$mpnodes}, @ngpbmc;
}
} else {
push @{$fspnodes}, @ngpfsp;
}
if (grep /^(network|textid)/, @args) {
push @{$mpnodes}, @ngpbmc;
} else {
push @{$bmcnodes}, @ngpbmc;
}
} elsif($cmd eq "getmacs") {
if (@args && (grep /^-D$/,@args)) {
push @{$fspnodes}, @ngpfsp;
} else {
push @{$mpnodes}, @ngpfsp;
}
push @{$mpnodes}, @ngpbmc;
} elsif ($cmd eq "rvitals") {
if (@args && (grep /^lcds$/,@args)) {
push @{$fspnodes},@ngpfsp;
@@ -3263,7 +3329,11 @@ sub filter_nodes{
push @{$mpnodes}, @ngpfsp;
}
} elsif ($cmd eq "renergy") {
push @{$mpnodes}, @ngpbmc;
if (grep /^(relhistogram)/, @args) {
push @{$bmcnodes}, @ngpbmc;
} else {
push @{$mpnodes}, @ngpbmc;
}
push @{$mpnodes}, @ngpfsp;
} else {
push @{$fspnodes}, @ngpfsp;
@@ -3275,4 +3345,146 @@ sub filter_nodes{
return 0;
}
#-------------------------------------------------------------------------------
=head3 filter_nostatusupdate()
filter out the nodes which support provision status feedback from the status-nodes hash
Returns:
returns the filtered status-nodes hash
Globals:
none
Error:
none
Input:
the ref of status-nodes hash to filter
Example:
my $mn=xCAT::Utils->filter_nostatusupdate(\%statusnodehash);
Comments:
=cut
#-------------------------------------------------------------------------------
sub filter_nostatusupdate{
my ($class,$inref)=@_;
my $nttabdata;
my @allnodes=();
#read "nodetype" table to get the "os" attribs for all the nodes with status "installing" or "netbooting"
if(exists $inref->{$::STATUS_INSTALLING}){
push @allnodes, @{$inref->{$::STATUS_INSTALLING}};
}
if(exists $inref->{$::STATUS_NETBOOTING}){
push @allnodes, @{$inref->{$::STATUS_NETBOOTING}};
}
my $nodetypetab = xCAT::Table->new('nodetype');
if ($nodetypetab) {
$nttabdata = $nodetypetab->getNodesAttribs(\@allnodes, ['node', 'os']);
$nodetypetab->close();
}
#filter out the nodes which support the node provision status feedback
my @nodesfiltered=();
if(exists $inref->{$::STATUS_INSTALLING}){
map{ if($nttabdata->{$_}->[0]->{os} !~ /(fedora|rh|centos|sles|ubuntu)/) {push @nodesfiltered,$_;} } @{$inref->{$::STATUS_INSTALLING}};
delete $inref->{$::STATUS_INSTALLING};
if(@nodesfiltered){
@{$inref->{$::STATUS_INSTALLING}}=@nodesfiltered;
}
}
@nodesfiltered=();
if(exists $inref->{$::STATUS_NETBOOTING}){
map{ if($nttabdata->{$_}->[0]->{os} !~ /(fedora|rh|centos|sles|ubuntu)/) {push @nodesfiltered,$_;} } @{$inref->{$::STATUS_NETBOOTING}};
delete $inref->{$::STATUS_NETBOOTING};
if(@nodesfiltered){
@{$inref->{$::STATUS_NETBOOTING}}=@nodesfiltered;
}
}
}
sub version_cmp {
my $ver_a = shift;
if ($ver_a =~ /xCAT::Utils/)
{
$ver_a = shift;
}
my $ver_b = shift;
my @array_a = ($ver_a =~ /([-.]|\d+|[^-.\d]+)/g);
my @array_b = ($ver_b =~ /([-.]|\d+|[^-.\d]+)/g);
my ($a, $b);
my $len_a = @array_a;
my $len_b = @array_b;
my $len = $len_a;
if ( $len_b < $len_a ) {
$len = $len_b;
}
for ( my $i = 0; $i < $len; $i++ ) {
$a = $array_a[$i];
$b = $array_b[$i];
if ($a eq $b) {
next;
} elsif ( $a eq '-' ) {
return -1;
} elsif ( $b eq '-') {
return 1;
} elsif ( $a eq '.' ) {
return -1;
} elsif ( $b eq '.' ) {
return 1;
} elsif ($a =~ /^\d+$/ and $b =~ /^\d+$/) {
if ($a =~ /^0/ || $b =~ /^0/) {
return ($a cmp $b);
} else {
return ($a <=> $b);
}
} else {
$a = uc $a;
$b = uc $b;
return ($a cmp $b);
}
}
return ( $len_a <=> $len_b )
}
#--------------------------------------------------------------------------------
=head3 fullpathbin
returns the full path of a specified binary executable file
Arguments:
string of the bin file name
Returns:
string of the full path name of the binary executable file
Globals:
none
Error:
string of the bin file name in the argument
Example:
my $CHKCONFIG = xCAT::Utils->fullpathbin("chkconfig");
Comments:
none
=cut
#--------------------------------------------------------------------------------
sub fullpathbin
{
my $bin=shift;
if( $bin =~ /xCAT::Utils/)
{
$bin=shift;
}
my @paths= ("/bin","/usr/bin","/sbin","/usr/sbin");
my $fullpath=$bin;
foreach my $path (@paths)
{
if (-x $path.'/'.$bin)
{
$fullpath= $path.'/'.$bin;
last;
}
}
return $fullpath;
}
1;
+1 -1
View File
@@ -26,7 +26,7 @@ sub grab_table_data{ #grab table data relevent to VM guest nodes
if ($vpdtab) {
$cfghash->{vpd} = $vpdtab->getNodesAttribs($noderange,['uuid']);
}
$cfghash->{vm} = $vmtab->getNodesAttribs($noderange,['node','host','migrationdest','cfgstore','storage','vidmodel','vidproto','vidpassword','storagemodel','memory','cpus','nics','nicmodel','bootorder','virtflags','datacenter','guestostype','othersettings','master']);
$cfghash->{vm} = $vmtab->getNodesAttribs($noderange,['node','host','migrationdest','cfgstore','storage','storagecache','storageformat','vidmodel','vidproto','vidpassword','storagemodel','memory','cpus','nics','nicmodel','bootorder','virtflags','datacenter','guestostype','othersettings','master']);
my $mactab = xCAT::Table->new("mac",-create=>1);
my $nrtab= xCAT::Table->new("noderes",-create=>1);
$cfghash->{mac} = $mactab->getAllNodeAttribs(['mac'],1);
+452
View File
@@ -0,0 +1,452 @@
#!/usr/bin/env perl
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
package xCAT::Zone;
BEGIN
{
$::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
}
# if AIX - make sure we include perl 5.8.2 in INC path.
# Needed to find perl dependencies shipped in deps tarball.
if ($^O =~ /^aix/i) {
unshift(@INC, qw(/usr/opt/perl5/lib/5.8.2/aix-thread-multi /usr/opt/perl5/lib/5.8.2 /usr/opt/perl5/lib/site_perl/5.8.2/aix-thread-multi /usr/opt/perl5/lib/site_perl/5.8.2));
}
use lib "$::XCATROOT/lib/perl";
# do not put a use or require for xCAT::Table here. Add to each new routine
# needing it to avoid reprocessing of user tables ( ExtTab.pm) for each command call
use POSIX qw(ceil);
use File::Path;
use Socket;
use strict;
use Symbol;
use warnings "all";
#--------------------------------------------------------------------------------
=head1 xCAT::Zone
=head2 Package Description
This program module file, is a set of Zone utilities used by xCAT *zone commands.
=cut
#--------------------------------------------------------------------------------
=head3 genSSHRootKeys
Arguments:
callback for error messages
directory in which to put the ssh RSA keys
zonename
rsa private key to use for generation ( optional)
Returns:
Error: 1 - key generation failure.
Example:
$rc =xCAT::Zone->genSSHRootKeys($callback,$keydir,$rsakey);
=cut
#--------------------------------------------------------------------------------
sub genSSHRootKeys
{
my ($class, $callback, $keydir,$zonename,$rsakey) = @_;
#
# create /keydir if needed
#
if (!-d $keydir)
{
my $cmd = "/bin/mkdir -m 700 -p $keydir";
my $output = xCAT::Utils->runcmd("$cmd", 0);
if ($::RUNCMD_RC != 0)
{
my $rsp = {};
$rsp->{error}->[0] =
"Could not create $keydir directory";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
}
#need to gen a new rsa key for root for the zone
my $pubfile = "$keydir/id_rsa.pub";
my $pvtfile = "$keydir/id_rsa";
# if exists, remove the old files
if (-r $pubfile)
{
my $cmd = "/bin/rm $keydir/id_rsa*";
my $output = xCAT::Utils->runcmd("$cmd", 0);
if ($::RUNCMD_RC != 0)
{
my $rsp = {};
$rsp->{error}->[0] = "Could not remove id_rsa files from $keydir directory.";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
}
# gen new RSA keys
my $cmd;
my $output;
# if private key was input use it
if (defined ($rsakey)) {
$cmd="/usr/bin/ssh-keygen -y -f $rsakey > $pubfile";
$output = xCAT::Utils->runcmd("$cmd", 0);
if ($::RUNCMD_RC != 0)
{
my $rsp = {};
$rsp->{error}->[0] = "Could not generate $pubfile from $rsakey";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
# now copy the private key into the directory
$cmd="cp $rsakey $keydir";
$output = xCAT::Utils->runcmd("$cmd", 0);
if ($::RUNCMD_RC != 0)
{
my $rsp = {};
$rsp->{error}->[0] = "Could not run $cmd";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
} else { # generate all new keys
$cmd = "/usr/bin/ssh-keygen -t rsa -q -b 2048 -N '' -f $pvtfile";
$output = xCAT::Utils->runcmd("$cmd", 0);
if ($::RUNCMD_RC != 0)
{
my $rsp = {};
$rsp->{error}->[0] = "Could not generate $pubfile";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
}
#make sure permissions are correct
$cmd = "chmod 644 $pubfile;chown root $pubfile";
$output = xCAT::Utils->runcmd("$cmd", 0);
if ($::RUNCMD_RC != 0)
{
my $rsp = {};
$rsp->{error}->[0] = "Could set permission and owner on $pubfile";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
}
#--------------------------------------------------------------------------------
=head3 getdefaultzone
Arguments:
None
Returns:
Name of the current default zone from the zone table
Example:
my $defaultzone =xCAT::Zone->getdefaultzone($callback);
=cut
#--------------------------------------------------------------------------------
sub getdefaultzone
{
my ($class, $callback) = @_;
my $defaultzone;
# read all the zone table and find the defaultzone, if it exists
my $tab = xCAT::Table->new("zone");
if ($tab){
my @zones = $tab->getAllAttribs('zonename','defaultzone');
foreach my $zone (@zones) {
# Look for the defaultzone=yes/1 entry
if ((defined($zone->{defaultzone})) &&
(($zone->{defaultzone} =~ /^yes$/i )
|| ($zone->{defaultzone} eq "1"))) {
$defaultzone = $zone->{zonename};
}
$tab->close();
}
} else {
my $rsp = {};
$rsp->{error}->[0] =
"Error reading the zone table. ";
xCAT::MsgUtils->message("E", $rsp, $callback);
}
return $defaultzone;
}
#--------------------------------------------------------------------------------
=head3 iszonedefined
Arguments:
zonename
Returns:
1 if the zone is already in the zone table.
Example:
xCAT::Zone->iszonedefined($zonename);
=cut
#--------------------------------------------------------------------------------
sub iszonedefined
{
my ($class,$zonename) = @_;
# checks the zone table to see if input zonename already in the table
my $tab = xCAT::Table->new("zone");
$tab->close();
my $zonehash = $tab->getAttribs({zonename => $zonename},'sshkeydir');
if ( keys %$zonehash) {
return 1;
}else{
return 0;
}
}
#--------------------------------------------------------------------------------
=head3 getzonekeydir
Arguments:
zonename
Returns:
path to the root ssh keys for the zone /etc/xcat/sshkeys/<zonename>/.ssh
1 - zone not defined
Example:
xCAT::Zone->getzonekeydir($zonename);
=cut
#--------------------------------------------------------------------------------
sub getzonekeydir
{
my ($class,$zonename) = @_;
my $tab = xCAT::Table->new("zone");
$tab->close();
my $zonehash = $tab->getAttribs({zonename => $zonename},'sshkeydir');
if ( keys %$zonehash) {
my $zonesshkeydir=$zonehash->{sshkeydir};
return $zonesshkeydir;
}else{
return 1; # this is a bad error zone not defined
}
}
#--------------------------------------------------------------------------------
=head3 getmyzonename
Arguments:
$node -one nodename
Returns:
$zonename
Example:
my $zonename=xCAT::Zone->getmyzonename($node);
=cut
#--------------------------------------------------------------------------------
sub getmyzonename
{
my ($class,$node,$callback) = @_;
my @node;
push @node,$node;
my $zonename;
my $nodelisttab = xCAT::Table->new("nodelist");
my $nodehash = $nodelisttab->getNodesAttribs(\@node, ['zonename']);
$nodelisttab->close();
if ( defined ($nodehash->{$node}->[0]->{zonename})) { # it was defined in the nodelist table
$zonename=$nodehash->{$node}->[0]->{zonename};
} else { # get the default zone
$zonename =xCAT::Zone->getdefaultzone($callback);
}
return $zonename;
}
#--------------------------------------------------------------------------------
=head3 enableSSHbetweennodes
Arguments:
zonename
Returns:
1 if the sshbetweennodes attribute is yes/1 or undefined
0 if the sshbetweennodes attribute is no/0
Example:
xCAT::Zone->enableSSHbetweennodes($zonename);
=cut
#--------------------------------------------------------------------------------
sub enableSSHbetweennodes
{
my ($class,$node,$callback) = @_;
# finds the zone of the node
my $enablessh = 1; # default
my $zonename=xCAT::Zone->getmyzonename($node);
# reads the zone table
my $tab = xCAT::Table->new("zone");
$tab->close();
# read both keys, want to know zone is in the zone table. If sshkeydir is not there
# it is either missing or invalid anyway
my $zonehash = $tab->getAttribs({zonename => $zonename},'sshbetweennodes','sshkeydir');
if (! ( keys %$zonehash)) {
my $rsp = {};
$rsp->{error}->[0] =
"$node has a zonename: $zonename that is not define in the zone table. Remove the zonename from the node, or create the zone using mkzone. The generated mypostscript may not reflect the correct setting for ENABLESSHBETWEENNODES";
xCAT::MsgUtils->message("E", $rsp, $callback);
return $enablessh;
}
my $sshbetweennodes=$zonehash->{sshbetweennodes};
if (defined ($sshbetweennodes)) {
if (($sshbetweennodes =~ /^no$/i) || ($sshbetweennodes eq "0")) {
$enablessh = 0;
} else {
$enablessh = 1;
}
} else { # not defined default yes
$enablessh = 1 ; # default
}
return $enablessh;
}
#--------------------------------------------------------------------------------
=head3 usingzones
Arguments:
none
Returns:
1 if the zone table is not empty
0 if empty
Example:
xCAT::Zone->usingzones;
=cut
#--------------------------------------------------------------------------------
sub usingzones
{
my ($class) = @_;
# reads the zonetable
my $tab = xCAT::Table->new("zone");
my @zone = $tab->getAllAttribs('zonename');
$tab->close();
if (@zone) {
return 1;
}else{
return 0;
}
}
#--------------------------------------------------------------------------------
=head3 getzoneinfo
Arguments:
callback
An array of nodes
Returns:
Hash array by zonename point to the nodes in that zonename and sshkeydir
<zonename1> -> {nodelist} -> array of nodes in the zone
-> {sshkeydir} -> directory containing ssh RSA keys
-> {defaultzone} -> is it the default zone
Example:
my %zonehash =xCAT::Zone->getzoneinfo($callback,@nodearray);
Rules:
If the nodes nodelist.zonename attribute is a zonename, it is assigned to that zone
If the nodes nodelist.zonename attribute is undefined:
If there is a defaultzone in the zone table, the node is assigned to that zone
If there is no defaultzone in the zone table, the node is assigned to the ~.ssh keydir
$::GETZONEINFO_RC
0 = good return
1 = error occured
=cut
#--------------------------------------------------------------------------------
sub getzoneinfo
{
my ($class, $callback,$nodes) = @_;
$::GETZONEINFO_RC=0;
my $zonehash;
my $defaultzone;
# read all the zone table
my $zonetab = xCAT::Table->new("zone");
my @zones;
if ($zonetab){
@zones = $zonetab->getAllAttribs('zonename','sshkeydir','sshbetweennodes','defaultzone');
$zonetab->close();
if (@zones) {
foreach my $zone (@zones) {
my $zonename=$zone->{zonename};
$zonehash->{$zonename}->{sshkeydir}= $zone->{sshkeydir};
$zonehash->{$zonename}->{defaultzone}= $zone->{defaultzone};
$zonehash->{$zonename}->{sshbetweennodes}= $zone->{sshbetweennodes};
# find the defaultzone
if ((defined($zone->{defaultzone})) &&
(($zone->{defaultzone} =~ /^yes$/i )
|| ($zone->{defaultzone} eq "1"))) {
$defaultzone = $zone->{zonename};
}
}
}
} else {
my $rsp = {};
$rsp->{error}->[0] =
"Error reading the zone table. ";
xCAT::MsgUtils->message("E", $rsp, $callback);
$::GETZONEINFO_RC =1;
return;
}
my $nodelisttab = xCAT::Table->new("nodelist");
my $nodehash = $nodelisttab->getNodesAttribs(\@$nodes, ['zonename']);
# for each of the nodes, look up it's zone name and assign to the zonehash
# If the nodes nodelist.zonename attribute is a zonename, it is assigned to that zone
# If the nodes nodelist.zonename attribute is undefined:
# If there is a defaultzone in the zone table, the node is assigned to that zone
# If there is no defaultzone error out
foreach my $node (@$nodes) {
my $zonename;
$zonename=$nodehash->{$node}->[0]->{zonename};
if (defined($zonename)) { # zonename explicitly defined in nodelist.zonename
# check to see if defined in the zone table
unless ( xCAT::Zone->iszonedefined($zonename)) {
my $rsp = {};
$rsp->{error}->[0] =
"$node has a zonename: $zonename that is not define in the zone table. Remove the zonename from the node, or create the zone using mkzone.";
xCAT::MsgUtils->message("E", $rsp, $callback);
$::GETZONEINFO_RC =1;
return;
}
push @{$zonehash->{$zonename}->{nodes}},$node;
} else { # no explict zonename
if (defined ($defaultzone)) { # there is a default zone in the zone table, use it
push @{$zonehash->{$defaultzone}->{nodes}},$node;
} else { # if no default, this is an error
my $rsp = {};
$rsp->{error}->[0] =
"There is no default zone defined in the zone table. There must be exactly one default zone. ";
xCAT::MsgUtils->message("E", $rsp, $callback);
$::GETZONEINFO_RC =1;
return;
}
}
}
return $zonehash;
}
#--------------------------------------------------------------------------------
=head3 getnodesinzone
Arguments:
callback
zonename
Returns:
Array of nodes
Example:
my @nodes =xCAT::Zone->getnodesinzone($callback,$zonename);
=cut
#--------------------------------------------------------------------------------
sub getnodesinzone
{
my ($class, $callback,$zonename) = @_;
my @nodes;
my $nodelisttab = xCAT::Table->new("nodelist");
my @nodelist=$nodelisttab->getAllAttribs('node','zonename');
# build the array of nodes in this zone
foreach my $nodename (@nodelist) {
if ((defined($nodename->{'zonename'})) && ($nodename->{'zonename'} eq $zonename)) {
push @nodes,$nodename->{'node'};
}
}
return @nodes;
}
1;
Regular → Executable
+14 -4
View File
@@ -14,9 +14,10 @@ require Exporter;
%distnames = (
"1310229985.226287" => "centos6",
"1323560292.885204" => "centos6.2",
"1341569670.539525" => "centos6.3",#x86
"1362445555.957609" => "centos6.4",#x86_64
"1323560292.885204" => "centos6.2",
"1341569670.539525" => "centos6.3",#x86
"1362445555.957609" => "centos6.4",#x86_64
"1385726732.061157" => "centos6.5",#x86_64
"1176234647.982657" => "centos5",
"1156364963.862322" => "centos4.4",
"1178480581.024704" => "centos4.5",
@@ -27,6 +28,7 @@ require Exporter;
"1237641529.260981" => "centos5.3",
"1272326751.405938" => "centos5.5",
"1330913492.861127" => "centos5.8",#x86_64
"1357930415.252042" => "centos5.9",#x86_64
"1195488871.805863" => "centos4.6",
"1195487524.127458" => "centos4.6",
"1301444731.448392" => "centos5.6",
@@ -48,6 +50,8 @@ require Exporter;
"1328205744.315196" => "rhels5.8", #x86_64
"1354216429.587870" => "rhels5.9", #x86_64
"1354214009.518521" => "rhels5.9", #ppc64
"1378846702.129847" => "rhels5.10", #x86_64
"1378845049.643372" => "rhels5.10", #ppc64
"1285193176.460470" => "rhels6", #x86_64
"1285192093.430930" => "rhels6", #ppc64
"1305068199.328169" => "rhels6.1", #x86_64
@@ -59,10 +63,13 @@ require Exporter;
"1339638991.532890" => "rhels6.3", #i386
"1359576752.435900" => "rhels6.4", #x86_64
"1359576196.686790" => "rhels6.4", #ppc64
"1384196515.415715" => "rhels6.5", #x86_64
"1384198011.520581" => "rhels6.5", #ppc64
"1285193176.593806" => "rhelhpc6", #x86_64
"1305067719.718814" => "rhelhpc6.1",#x86_64
"1321545261.599847" => "rhelhpc6.2",#x86_64
"1339640148.070971" => "rhelhpc6.3",#x86_64
"1359576195.413831" => "rhelhpc6.4",#x86_64, RHEL ComputeNode
"1194015916.783841" => "fedora8",
"1194015385.299901" => "fedora8",
"1210112435.291709" => "fedora9",
@@ -74,13 +81,16 @@ require Exporter;
"1273712675.937554" => "fedora13", #x86_64 DVD ISO
"1287685820.403779" => "fedora14", #x86_64 DVD ISO
"1305315870.828212" => "fedora15", #x86_64 DVD ISO
"1372355769.065812" => "fedora19", #x86_64 DVD ISO
"1372402928.663653" => "fedora19", #ppc64 DVD ISO
"1386856788.124593" => "fedora20", #x86_64 DVD ISO
"1194512200.047708" => "rhas4.6",
"1194512327.501046" => "rhas4.6",
"1241464993.830723" => "rhas4.8", #x86-64
"1273608367.051780" => "SL5.5", #x86_64 DVD ISO
"1299104542.844706" => "SL6", #x86_64 DVD ISO
"1394111947.452332" => "pkvm2.1", # ppc64
);
my %numdiscs = (
"1156364963.862322" => 4,
+43
View File
@@ -0,0 +1,43 @@
#!/usr/bin/env perl
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
package xCAT::data::ibmhwtypes;
require Exporter;
@EXPORT_OK=qw(parse_group mt2group);
use Data::Dumper;
my %groups2mtm = (
"x3250" => ["2583","4251","4252"],
"x3550" => ["7914","7944","7946"],
"x3650" => ["7915","7945"],
"dx360" => [],
"x220" => ["7906"],
"x240" => ["8737","7863"],
"x440" => ["7917"],
"p260" => ["7895"], #789522X, 789523X
"p460" => [], #789542X
"p470" => ["7954"],
);
%mt2group = ();
foreach my $group (keys %groups2mtm) {
foreach my $mtm (@{$groups2mtm{$group}}) {
$mt2group{$mtm} = $group;
}
}
sub parse_group {
my $mtm = shift;
if ($mtm =~ /xCAT::data/) {
$mtm = shift;
}
if ($mtm =~ /^(\w{4})/) {
$mt = $1;
if ($mt eq "7895" and $mtm =~ /789542X/i) {
return "p460";
}
return $mt2group{$mt};
}
return undef;
}
1;
+2 -2
View File
@@ -208,7 +208,7 @@ sub getNic {
Arguments : User (root or non-root)
Node
Returns : Network names
Example : my $lans = xCAT::zvmCPUtils->getNetworkNames($node);
Example : my $lans = xCAT::zvmCPUtils->getNetworkNames($user, $node);
=cut
@@ -260,7 +260,7 @@ sub getNetworkNames {
Arguments : User (root or non-root)
Node
Returns : Array of networks names
Example : my @networks = xCAT::zvmCPUtils->getNetworkNamesArray($node);
Example : my @networks = xCAT::zvmCPUtils->getNetworkNamesArray($user, $node);
=cut
+793 -42
View File
@@ -12,6 +12,8 @@ package xCAT::zvmUtils;
use xCAT::MsgUtils;
use xCAT::Utils;
use xCAT::Table;
use xCAT::NetworkUtils;
use File::Basename;
use strict;
use warnings;
1;
@@ -288,7 +290,7 @@ sub printLn {
my $rsp;
my $type = "I";
if ($str =~ m/error/i) { # Set to print error if the string contains error
$type = "E";
$type = "E";
}
$rsp->{data}->[0] = "$str";
@@ -870,6 +872,36 @@ sub checkOutput {
#-------------------------------------------------------
=head3 checkOutputExtractReason
Description : Check the return of given output. If bad, extract the reason.
Arguments : Output string
Reason (passed as a reference)
Returns : 0 Good output
-1 Bad output
Example : my $rtn = xCAT::zvmUtils->checkOutput($callback, $out, \$reason);
=cut
#-------------------------------------------------------
sub checkOutputExtractReason {
my ( $class, $callback, $out, $reason ) = @_;
# Check output string
my @outLn = split("\n", $out);
foreach (@outLn) {
# If output contains 'ERROR: ', return -1 and pass back the reason.
if ($_ =~ /(.*?ERROR: )/) {
$$reason = substr($_, index($_, "ERROR: ") + length("ERROR: "));
return -1;
}
}
return 0;
}
#-------------------------------------------------------
=head3 getDeviceNode
Description : Get the device node for a given address
@@ -892,14 +924,14 @@ sub getDeviceNode {
# Determine device node
my $out = `ssh $user\@$node "$sudo cat /proc/dasd/devices" | grep ".$tgtAddr("`;
my @words = split( ' ', $out );
my @words = split(' ', $out);
my $tgtDevNode;
# /proc/dasd/devices look similar to this:
# 0.0.0100(ECKD) at ( 94: 0) is dasda : active at blocksize: 4096, 1802880 blocks, 7042 MB
# Look for the string 'is'
my $i = 0;
while ( $tgtDevNode ne 'is' ) {
while ($tgtDevNode ne 'is') {
$tgtDevNode = $words[$i];
$i++;
}
@@ -909,6 +941,39 @@ sub getDeviceNode {
#-------------------------------------------------------
=head3 getDeviceNodeAddr
Description : Get the virtual device address for a given device node
Arguments : User (root or non-root)
Node
Device node
Returns : Virtual device address
Example : my $addr = xCAT::zvmUtils->getDeviceNodeAddr($user, $node, $deviceNode);
=cut
#-------------------------------------------------------
sub getDeviceNodeAddr {
my ( $class, $user, $node, $deviceNode ) = @_;
my $sudo = "sudo";
if ($user eq "root") {
$sudo = "";
}
# Find device node and determine virtual address
# /proc/dasd/devices look similar to this:
# 0.0.0100(ECKD) at ( 94: 0) is dasda : active at blocksize: 4096, 1802880 blocks, 7042 MB
my $addr = `ssh $user\@$node "$sudo cat /proc/dasd/devices" | grep -i "is $deviceNode"`;
$addr =~ s/ +/ /g;
$addr =~ s/^0.0.([0-9a-f]*).*/$1/;
chomp($addr);
return $addr;
}
#-------------------------------------------------------
=head3 isAddressUsed
Description : Check if a given address is used
@@ -1090,16 +1155,23 @@ sub createMacAddr {
return -1;
}
# Get HCP MAC address
# Get the first MAC address found
my $out = `ssh -o ConnectTimeout=5 $user\@$hcp "$sudo /sbin/vmcp q v nic" | grep "MAC:"`;
my @lines = split( "\n", $out );
my @vars = split( " ", $lines[0] );
# Extract MAC prefix
my $prefix = $vars[1];
$prefix = xCAT::zvmUtils->replaceStr( $prefix, "-", "" );
$prefix = substr( $prefix, 0, 6 );
# Get USER Prefix
my $prefix = `ssh -o ConnectTimeout=5 $user\@$hcp "$sudo /sbin/vmcp q vmlan" | egrep -i "USER Prefix:"`;
$prefix =~ s/(.*?)USER Prefix:(.*)/$2/;
$prefix =~ s/^\s+//;
$prefix =~ s/\s+$//;
# Get MACADDR Prefix instead if USER Prefix is not defined
if (!$prefix) {
$prefix = `ssh -o ConnectTimeout=5 $user\@$hcp "$sudo /sbin/vmcp q vmlan" | egrep -i "MACADDR Prefix:"`;
$prefix =~ s/(.*?)MACADDR Prefix:(.*)/$2/;
$prefix =~ s/^\s+//;
$prefix =~ s/\s+$//;
if (!$prefix) {
return -1;
}
}
# Generate MAC address of source node
my $mac = $prefix . $suffix;
@@ -1500,7 +1572,7 @@ sub getFreeAddress {
} else {
# When the node is down, use zHCP to get its user directory entry
# Get HCP
my @propNames = ( 'hcp', 'userid' );
my @propNames = ('hcp', 'userid');
my $propVals = xCAT::zvmUtils->getNodeProps( 'zvm', $node, @propNames );
my $hcp = $propVals->{'hcp'};
@@ -1518,9 +1590,9 @@ sub getFreeAddress {
}
# Get all defined device address
$allUsedAddr = `cat $allUsedAddr | awk '$1 ~/^($deviceTypesUserDir)/ {print $2}' | sort`;
$allUsedAddr = `cat $userDirEntry | awk '$1 ~/^($deviceTypesUserDir)/ {print $2}' | sort`;
# Get all linked device address
$allUsedAddr .= `cat $allUsedAddr | awk '$1 ~/^(LINK)/ {print $4}' | sort`;
$allUsedAddr .= `cat $userDirEntry | awk '$1 ~/^(LINK)/ {print $4}' | sort`;
}
# Loop to get the lowest free address
@@ -1570,7 +1642,7 @@ sub getUsedCpuTime {
$time =~ s/^\s+//;
$time =~ s/\s+$//;
if (!$time) {
$time = 0;
$time = 0;
}
# Not found, return 0
@@ -2064,7 +2136,7 @@ sub smapi4xcat {
my $out = `ssh $user\@$hcp "$sudo $dir/smcli Query_API_Functional_Level -T $hcpUserId"`;
$out = xCAT::zvmUtils->trimStr($out);
if ( !($out =~ m/V6.2/i || $out =~ m/V6.1/i || $out =~ m/V5.4/i) ) {
return 1;
return 1;
}
# Check if SMAPI EXEC exists
@@ -2165,20 +2237,20 @@ sub querySSI {
#-------------------------------------------------------
sub rExecute {
my ( $class, $user, $node, $cmd ) = @_;
my $out;
my $sudo = "sudo";
my ( $class, $user, $node, $cmd ) = @_;
my $out;
my $sudo = "sudo";
if ($user eq "root") {
# Just execute the command if root
# Just execute the command if root
$out = `ssh $user\@$node "$cmd"`;
return $out;
}
# Encapsulate command in single quotes
$cmd = "'" . $cmd . "'";
$out = `ssh $user\@$node "$sudo sh -c $cmd"`;
return $out;
# Encapsulate command in single quotes
$cmd = "'" . $cmd . "'";
$out = `ssh $user\@$node "$sudo sh -c $cmd"`;
return $out;
}
#-------------------------------------------------------
@@ -2195,8 +2267,8 @@ sub rExecute {
#-------------------------------------------------------
sub getUsedFcpDevices {
my ( $class, $user, $hcp ) = @_;
my ( $class, $user, $hcp ) = @_;
# Directory where zFCP pools are
my $pool = "/var/opt/zhcp/zfcp";
@@ -2204,15 +2276,15 @@ sub getUsedFcpDevices {
if ($user eq "root") {
$sudo = "";
}
# Grep the pools for used or allocated zFCP devices
my %usedDevices;
my @args;
my @devices = split("\n", `ssh $user\@$hcp "$sudo cat $pool/*.conf" | egrep -i "used|allocated"`);
foreach (@devices) {
@args = split(",", $_);
# Sample pool configuration file:
# Grep the pools for used or allocated zFCP devices
my %usedDevices;
my @args;
my @devices = split("\n", `ssh $user\@$hcp "$sudo cat $pool/*.conf" | egrep -i "used|allocated"`);
foreach (@devices) {
@args = split(",", $_);
# Sample pool configuration file:
# #status,wwpn,lun,size,range,owner,channel,tag
# used,1000000000000000,2000000000000110,8g,3B00-3B3F,ihost1,1a23,$root_device$
# free,1000000000000000,2000000000000111,,3B00-3B3F,,,
@@ -2221,9 +2293,688 @@ sub getUsedFcpDevices {
# Push used or allocated devices into hash
if ($args[6]) {
$usedDevices{uc($args[6])} = 1;
$usedDevices{uc($args[6])} = 1;
}
}
return %usedDevices;
}
return %usedDevices;
}
#-------------------------------------------------------
=head3 establishMount
Description : Establish an NFS mount point on a zHCP system.
Arguments : Sudoer user name
Sudo keyword
zHCP hostname
Local directory to remotely mount
Mount access ('ro' for read only, 'rw' for read write)
Directory as known to zHCP (out)
Returns : 0 - Mounted, or zHCP and MN are on the same system
1 - Mount failed
Example : establishMount( $callback, $::SUDOER, $::SUDO, $hcp, "$installRoot/$provMethod", "ro", \$remoteDeployDir );
=cut
#-------------------------------------------------------
sub establishMount {
# Get inputs
my ($class, $callback, $sudoer, $sudo, $hcp, $localDir, $access, $mountedPt) = @_;
my $out;
# If the target system is not on this system then establish the NFS mount point.
my $hcpIP = xCAT::NetworkUtils->getipaddr( $hcp );
if (! defined $hcpIP) {
xCAT::zvmUtils->printLn( $callback, "(Error) Unable to obtain the IP address of the hcp node" );
return 1;
}
my $masterIp = xCAT::TableUtils->get_site_Master();
if (! defined $masterIp) {
xCAT::zvmUtils->printLn( $callback, "$hcp: (Error) Unable to obtain the management node IP address from the site table" );
return 1;
}
if ($masterIp eq $hcpIP) {
# xCAT MN and zHCP are on the same box and will use the same directory without the need for an NFS mount.
$$mountedPt = $localDir;
} else {
# Determine the hostname for this management node
my $masterHostname = Sys::Hostname::hostname();
if (! defined $masterHostname) {
# For some reason, the xCAT MN's hostname is not known. We pass along the IP address instead.
$masterHostname = $masterIp;
}
xCAT::zvmUtils->printSyslog( "establishMount() Preparing the NFS mount point on zHCP ($hcpIP) to xCAT MN $masterHostname($masterIp) for $localDir" );
# Prepare the staging mount point on zHCP, if they need to be established
$$mountedPt = "/mnt/$masterHostname$localDir";
my $rc = `ssh $sudoer\@$hcp "$sudo mkdir -p $$mountedPt && mount -t nfs -o $access $masterIp:$localDir $$mountedPt; echo \\\$?"`;
# Return code = 0 (mount succeeded) or 32 (mount already exists)
if ($rc != '0' && $rc != '32') {
xCAT::zvmUtils->printLn( $callback, "$hcp: (Error) Unable to establish zHCP mount point: $$mountedPt" );
return 1;
}
}
return 0;
}
#-------------------------------------------------------
=head3 getFreeRepoSpace
Description : Get the free space of image repository under /install
Arguments : Node
Returns : The available space for /install
Example : my $free = getFreeRepoSpace($callback, $node);
=cut
#-------------------------------------------------------
sub getFreeRepoSpace {
# Get inputs
my ($class, $user, $node) = @_;
my $sudo = "sudo";
if ($user eq "root") {
$sudo = "";
}
# Check if node is the management node
my @entries = xCAT::TableUtils->get_site_attribute("master");
my $master = xCAT::zvmUtils->trimStr($entries[0]);
my $ip = xCAT::NetworkUtils->getipaddr($node);
$ip = xCAT::zvmUtils->trimStr($ip);
my $mn = 0;
if ($master eq $ip) {
# If the master IP and node IP match, then it is the management node
my $out = `$sudo /bin/df -h /install | sed 1d`;
$out =~ s/\h+/ /g;
my @results = split(' ', $out);
return ($results[3]);
}
return;
}
#-------------------------------------------------------
=head3 findAndUpdatezFcpPool
Description : Find and update a SCSI/FCP device in a given storage pool.
xCAT will find and update the SCSI/FCP device in all known pools based on the unique WWPN/LUN combo.
Arguments : Message header
User (root or non-root)
zHCP
Storage pool
Criteria hash including:
- Status (free, reserved, or used)
- zFCP channel
- WWPN
- LUN
- Size requested
- Owner
- Tag
Returns : Results hash including:
- Return code (0 = Success, -1 = Failure)
- zFCP device (if one is requested)
- WWPN
- LUN
Example : my $resultsRef = xCAT::zvmUtils->findAndUpdatezFcpPool($callback, $header, $user, $hcp, $pool, $criteriaRef);
=cut
#-------------------------------------------------------
sub findAndUpdatezFcpPool {
# Get inputs
my ($class, $callback, $header, $user, $hcp, $pool, $criteriaRef) = @_;
# Determine if sudo is used
my $sudo = "sudo";
if ($user eq "root") {
$sudo = "";
}
# Directory where executables are on zHCP
my $dir = "/opt/zhcp/bin";
# Directory where FCP disk pools are on zHCP
my $zfcpDir = "/var/opt/zhcp/zfcp";
my %results = ('rc' => -1); # Default to error
# Extract criteria
my %criteria = %$criteriaRef;
my $status = defined($criteria{status}) ? $criteria{status} : "";
my $fcpDevice = defined($criteria{fcp}) ? $criteria{fcp} : "";
my $wwpn = defined($criteria{wwpn}) ? $criteria{wwpn} : "";
my $lun = defined($criteria{lun}) ? $criteria{lun} : "";
my $size = defined($criteria{size}) ? $criteria{size} : "";
my $owner = defined($criteria{owner}) ? $criteria{owner} : "";
my $tag = defined($criteria{tag}) ? $criteria{tag} : "";
# Check required arguments: pool, status
# If you do not know what to update, why update!
if (!$pool && !$status) {
return \%results;
}
# Check status
if ($status !~ m/^(free|used|reserved)$/i) {
xCAT::zvmUtils->printLn($callback, "$header: (Error) Status not recognized. Status can be free, used, or reserved.");
return \%results;
}
# Check FCP device syntax
if ($fcpDevice && ($fcpDevice !~ /^auto/i) && ($fcpDevice =~ /[^0-9a-f]/i)) {
xCAT::zvmUtils->printLn($callback, "$header: (Error) Invalid FCP channel address $fcpDevice.");
return \%results;
}
# Check WWPN and LUN syntax
if ( $wwpn && ($wwpn =~ /[^0-9a-f;"]/i) ) {
xCAT::zvmUtils->printLn( $callback, "$header: (Error) Invalid world wide portname $wwpn." );
return \%results;
} if ( $lun && ($lun =~ /[^0-9a-f]/i) ) {
xCAT::zvmUtils->printLn( $callback, "$header: (Error) Invalid logical unit number $lun." );
return \%results;
}
# Size can be M(egabytes) or G(igabytes). Convert size into MB.
my $originSize = $size;
if ($size) {
if ($size =~ m/G/i) {
# Convert to MegaBytes
$size =~ s/\D//g;
$size = int($size) * 1024
} elsif ($size =~ m/M/i || !$size) {
# Do nothing
} else {
xCAT::zvmUtils->printLn( $callback, "$header: (Error) Size not recognized. Size can be M(egabytes) or G(igabytes)." );
return \%results;
}
}
# Check if WWPN and LUN are given
# WWPN can be given as a semi-colon separated list (multipathing)
my $useWwpnLun = 0;
if ($wwpn && $lun) {
xCAT::zvmUtils->printLn($callback, "$header: Using given WWPN and LUN");
$useWwpnLun = 1;
# Make sure WWPN and LUN do not have 0x prefix
$wwpn = xCAT::zvmUtils->replaceStr($wwpn, "0x", "");
$lun = xCAT::zvmUtils->replaceStr($lun, "0x", "");
}
# Find disk pool (create one if non-existent)
my $out;
if (!(`ssh $user\@$hcp "$sudo test -d $zfcpDir && echo Exists"`)) {
# Create pool directory
$out = `ssh $user\@$hcp "$sudo mkdir -p $zfcpDir"`;
}
# Find if disk pool exists
if (!(`ssh $user\@$hcp "$sudo test -e $zfcpDir/$pool.conf && echo Exists"`)) {
# Return if xCAT is expected to find a FCP device, but no disk pool exists.
xCAT::zvmUtils->printLn($callback, "$header: (Error) FCP storage pool does not exist");
return \%results;
}
# Find a free disk in the pool
# FCP devices are contained in /var/opt/zhcp/zfcp/<pool-name>.conf
my $range = "";
my $sizeFound = "*";
my @info;
if (!$useWwpnLun) {
# Find a suitable pair of WWPN and LUN in device pool based on requested size
# Sample pool configuration file:
# #status,wwpn,lun,size,range,owner,channel,tag
# used,1000000000000000,2000000000000110,8g,3B00-3B3F,ihost1,1a23,$root_device$
# free,1000000000000000,2000000000000111,,3B00-3B3F,,,
# free,1230000000000000;4560000000000000,2000000000000112,,3B00-3B3F,,,
my @devices = split("\n", `ssh $user\@$hcp "$sudo cat $zfcpDir/$pool.conf" | egrep -i ^free`);
$sizeFound = 0;
foreach (@devices) {
@info = split(',', $_);
# Check if the size is sufficient. Convert size into MB.
if ($info[3] =~ m/G/i) {
# Convert to MegaBytes
$info[3] =~ s/\D//g;
$info[3] = int($info[3]) * 1024
} elsif ($info[3] =~ m/M/i) {
# Do nothing
$info[3] =~ s/\D//g;
} else {
next;
}
# Find optimal disk based on requested size
if ($sizeFound && $info[3] >= $size && $info[3] < $sizeFound) {
$sizeFound = $info[3];
$wwpn = $info[1];
$lun = $info[2];
$range = $info[4];
} elsif (!$sizeFound && $info[3] >= $size) {
$sizeFound = $info[3];
$wwpn = $info[1];
$lun = $info[2];
$range = $info[4];
}
}
# Do not continue if no devices can be found
if (!$wwpn && !$lun) {
xCAT::zvmUtils->printLn($callback, "$header: (Error) A suitable device of $size" . "M or larger could not be found");
return \%results;
}
} else {
# Find given WWPN and LUN. Do not continue if device is used
my $select = `ssh $user\@$hcp "$sudo cat $zfcpDir/$pool.conf" | grep -i "$wwpn,$lun"`;
chomp($select);
@info = split(',', $select);
if ($size) {
if ($info[3] =~ m/G/i) {
# Convert to MegaBytes
$info[3] =~ s/\D//g;
$info[3] = int($info[3]) * 1024
} elsif ($info[3] =~ m/M/i) {
# Do nothing
$info[3] =~ s/\D//g;
} else {
next;
}
# Do not continue if specified device does not have enough capacity
if ($info[3] < $size) {
xCAT::zvmUtils->printLn($callback, "$header: (Error) FCP device $wwpn/$lun is not large enough");
return \%results;
}
}
# Find range of the specified disk
$range = $info[4];
}
# If there are multiple paths, take the 1st one
# Handle multi-pathing in postscript because autoyast/kickstart does not support it.
my $origWwpn = $wwpn;
if ($wwpn =~ m/;/i) {
@info = split(';', $wwpn);
$wwpn = xCAT::zvmUtils->trimStr($info[0]);
}
xCAT::zvmUtils->printLn($callback, "$header: Found FCP device 0x$wwpn/0x$lun");
# Find a free FCP device based on the given range
if ($fcpDevice =~ m/^auto/i) {
my @ranges;
my $min;
my $max;
my $found = 0;
if ($range =~ m/;/i) {
@ranges = split(';', $range);
} else {
push(@ranges, $range);
}
if (!$found) {
# If the node has an eligible FCP device, use it
my @deviceList = xCAT::zvmUtils->getDedicates($callback, $user, $owner);
foreach (@deviceList) {
# Check if this devide is eligible (among the range specified for disk $lun)
@info = split(' ', $_);
my $candidate = $info[2];
foreach (@ranges) {
($min, $max) = split('-', $_);
if (hex($candidate) >= hex($min) && hex($candidate) <= hex($max)) {
$found = 1;
$fcpDevice = uc($candidate);
last;
}
}
if ($found) {
xCAT::zvmUtils->printLn($callback, "$header: Found eligible FCP channel $fcpDevice");
last;
}
}
}
if (!$found) {
# If the node has no eligible FCP device, find a free one for it.
my %usedDevices = xCAT::zvmUtils->getUsedFcpDevices($user, $hcp);
my $hcpUserId = xCAT::zvmCPUtils->getUserId($user, $hcp);
$hcpUserId =~ tr/a-z/A-Z/;
# Find a free FCP channel
$out = `ssh $user\@$hcp "$sudo $dir/smcli System_WWPN_Query -T $hcpUserId" | egrep -i "FCP device number|Status"`;
my @devices = split( "\n", $out );
for (my $i = 0; $i < @devices; $i++) {
# Extract the device number and status
$fcpDevice = $devices[$i];
$fcpDevice =~ s/^FCP device number:(.*)/$1/;
$fcpDevice =~ s/^\s+//;
$fcpDevice =~ s/\s+$//;
$i++;
my $fcpStatus = $devices[$i];
$fcpStatus =~ s/^Status:(.*)/$1/;
$fcpStatus =~ s/^\s+//;
$fcpStatus =~ s/\s+$//;
# Only look at free FCP devices
if ($fcpStatus =~ m/free/i) {
# If the device number is within the specified range, exit out of loop
# Range: 3B00-3C00;4B00-4C00;5E12-5E12
foreach (@ranges) {
($min, $max) = split('-', $_);
if (hex($fcpDevice) >= hex($min) && hex($fcpDevice) <= hex($max)) {
$fcpDevice = uc($fcpDevice);
# Used found FCP channel if not in use or allocated
if (!$usedDevices{$fcpDevice}) {
$found = 1;
last;
}
}
}
}
# Break out of loop if FCP channel is found
if ($found) {
xCAT::zvmUtils->printLn($callback, "$header: Found FCP channel within acceptable range $fcpDevice");
last;
}
}
}
# Do not continue if no FCP channel is found
if (!$found) {
xCAT::zvmUtils->printLn($callback, "$header: (Error) A suitable FCP channel could not be found");
return \%results;
}
}
# If there are multiple devices (multipathing), take the 1st one
if ($fcpDevice) {
if ($fcpDevice =~ m/;/i) {
@info = split(';', $fcpDevice);
$fcpDevice = xCAT::zvmUtils->trimStr($info[0]);
}
# Make sure channel has a length of 4
while (length($fcpDevice) < 4) {
$fcpDevice = "0" . $fcpDevice;
}
}
# Mark WWPN and LUN as used, free, or reserved and set the owner/channel appropriately
# This config file keeps track of the owner of each device, which is useful in nodeset
$size = $size . "M";
my $select = `ssh $user\@$hcp "$sudo cat $zfcpDir/$pool.conf" | grep -i "$lun" | grep -i "$wwpn"`;
chomp($select);
if ($select) {
@info = split(',', $select);
if (!$info[3]) {
$info[3] = $size;
}
# Do not update if WWPN/LUN pair is specified but the pair does not exist
if (!($info[1] =~ m/$wwpn/i)) {
xCAT::zvmUtils->printLn($callback, "$header: (Error) FCP device $wwpn/$lun does not exists");
return \%results;
}
# Entry order: status,wwpn,lun,size,range,owner,channel,tag
# The following are never updated: wwpn, lun, size, and range
my $update = "$status,$info[1],$info[2],$info[3],$info[4],$owner,$fcpDevice,$tag";
my $expression = "'s#" . $select . "#" .$update . "#i'";
$out = `ssh $user\@$hcp "$sudo sed --in-place -e $expression $zfcpDir/$pool.conf"`;
} else {
# Insert device entry into file
$out = `ssh $user\@$hcp "$sudo echo \"$status,$origWwpn,$lun,$size,,$owner,$fcpDevice,$tag\" >> $zfcpDir/$pool.conf"`;
}
# Generate results hash
%results = (
'rc' => 0,
'fcp' => $fcpDevice,
'wwpn' => $wwpn,
'lun' => $lun
);
return \%results;
}
#-------------------------------------------------------
=head3 findzFcpDevicePool
Description : Find the zFCP storage pool that contains the given zFCP device
Arguments : User (root or non-root)
zHCP
WWPN
LUN
Returns : Storage pool where zFCP device resides
Example : my $pool = xCAT::zvmUtils->findzFcpDevicePool($user, $hcp, $wwpn, $lun);
=cut
#-------------------------------------------------------
sub findzFcpDevicePool {
# Get inputs
my ( $class, $user, $hcp, $wwpn, $lun ) = @_;
my $sudo = "sudo";
if ($user eq "root") {
$sudo = "";
}
# Directory where FCP disk pools are on zHCP
my $zfcpDir = "/var/opt/zhcp/zfcp";
# Find the pool that contains the SCSI/FCP device
my @pools = split("\n", `ssh $user\@$hcp "$sudo grep -i -l \"$wwpn,$lun\" $zfcpDir/*.conf"`);
my $pool = "";
if (scalar(@pools)) {
$pool = basename($pools[0]);
$pool =~ s/\.[^.]+$//; # Do not use extension
}
return $pool;
}
#-------------------------------------------------------
=head3 findzFcpDeviceAttr
Description : Find the zFCP device attributes
Arguments : User (root or non-root)
zHCP
Storage pool
WWPN
LUN
Returns : Architecture of node
Example : my $deviceRef = xCAT::zvmUtils->findzFcpDeviceAttr($user, $hcp, $wwpn, $lun);
=cut
#-------------------------------------------------------
sub findzFcpDeviceAttr {
# Get inputs
my ( $class, $user, $hcp, $pool, $wwpn, $lun ) = @_;
my $sudo = "sudo";
if ($user eq "root") {
$sudo = "";
}
# Directory where FCP disk pools are on zHCP
my $zfcpDir = "/var/opt/zhcp/zfcp";
# Find the SCSI/FCP device
# Entry order: status,wwpn,lun,size,range,owner,channel,tag
my @info = split("\n", `ssh $user\@$hcp "$sudo grep \"$wwpn,$lun\" $zfcpDir/$pool.conf"`);
my $entry = $info[0];
chomp($entry);
# Do not continue if no device is found
my %attrs = ();
if (!$entry) {
return \%attrs;
}
@info = split(',', $entry);
%attrs = (
'status' => $info[0],
'wwpn' => $info[1],
'lun' => $info[2],
'size' => $info[3],
'range' => $info[4],
'owner' => $info[5],
'fcp' => $info[6],
'tag' => $info[7]
);
return \%attrs;
}
#-------------------------------------------------------
=head3 findUsablezHcpNetwork
Description : Find a useable NIC shared with the zHCP for a given user Id
Arguments : User (root or non-root)
zHCP
User Id to find a useable NIC on
DHCP is used or not (0 or 1)
Returns : NIC, device channel, and layer (2 or 3)
Example : my ($nic, $channel, $layer) = xCAT::zvmUtils->findUsablezHcpNetwork($user, $hcp, $userId, $dhcp);
=cut
#-------------------------------------------------------
sub findUsablezHcpNetwork {
# Get inputs
my ( $class, $user, $hcp, $userId, $dhcp ) = @_;
my $sudo = "sudo";
if ($user eq "root") {
$sudo = "";
}
my $nic = ''; # Usuable NIC on zHCP
my $channel = ''; # Device channel where NIC is attached
my $layer;
my $i;
my @words;
# Get the networks used by the zHCP
my @hcpNetworks = xCAT::zvmCPUtils->getNetworkNamesArray($user, $hcp);
# Search directory entry for network name
my $userEntry = `ssh $user\@$hcp "$sudo $::DIR/smcli Image_Query_DM -T $userId" | sed '\$d'`;
xCAT::zvmUtils->printSyslog("findUsablezHcpNetwork() smcli Image_Query_DM -T $userId");
xCAT::zvmUtils->printSyslog("findUsablezHcpNetwork() $userEntry");
my $out = `echo "$userEntry" | grep "NICDEF"`;
my @lines = split('\n', $out);
# Go through each line
for ($i = 0; $i < @lines; $i++) {
# Go through each network device attached to zHCP
foreach (@hcpNetworks) {
# If network device is found
if ($lines[$i] =~ m/ $_/i) {
# Get network layer
$layer = xCAT::zvmCPUtils->getNetworkLayer($user, $hcp, $_);
xCAT::zvmUtils->printSyslog("findUsablezHcpNetwork() NIC:$_ layer:$layer");
# If template using DHCP, layer must be 2
if ((!$dhcp && $layer != 2) || (!$dhcp && $layer == 2) || ($dhcp && $layer == 2)) {
# Save network name
$nic = $_;
# Get network virtual address
@words = split(' ', $lines[$i]);
# Get virtual address (channel)
# Convert subchannel to decimal
$channel = sprintf('%d', hex($words[1]));
xCAT::zvmUtils->printSyslog("findUsablezHcpNetwork() Candidate found NIC:$nic channel:$channel layer:$layer");
return ($nic, $channel, $layer);
} else {
# Go to next network available
$nic = '';
}
}
}
}
# If network device is not found
if (!$nic) {
# Check for user profile
my $profileName = `echo "$userEntry" | grep "INCLUDE"`;
if ($profileName) {
@words = split(' ', xCAT::zvmUtils->trimStr($profileName));
# Get user profile
my $userProfile = xCAT::zvmUtils->getUserProfile($user, $hcp, $words[1]);
xCAT::zvmUtils->printSyslog("findUsablezHcpNetwork() $userProfile");
# Get the NICDEF statement containing the HCP network
$out = `echo "$userProfile" | grep "NICDEF"`;
@lines = split('\n', $out);
# Go through each line
for ($i = 0; $i < @lines; $i++) {
# Go through each network device attached to zHCP
foreach (@hcpNetworks) {
# If network device is found
if ($lines[$i] =~ m/ $_/i) {
# Get network layer
$layer = xCAT::zvmCPUtils->getNetworkLayer($user, $hcp, $_);
xCAT::zvmUtils->printSyslog("findUsablezHcpNetwork() NIC:$_ layer:$layer");
# If template using DHCP, layer must be 2
if ((!$dhcp && $layer != 2) || (!$dhcp && $layer == 2) || ($dhcp && $layer == 2)) {
# Save network name
$nic = $_;
# Get network virtual address
@words = split(' ', $lines[$i]);
# Get virtual address (channel)
# Convert subchannel to decimal
$channel = sprintf('%d', hex($words[1]));
xCAT::zvmUtils->printSyslog("findUsablezHcpNetwork() Candidate found NIC:$nic channel:$channel layer:$layer");
return ($nic, $channel, $layer);
} else {
# Go to next network available
$nic = '';
}
}
} # End of foreach
} # End of for
} # End of if
}
return;
}
+269 -78
View File
@@ -6,84 +6,275 @@
#include <stdlib.h>
#include <errno.h>
#include <netinet/in.h>
int main() {
int serverfd,port;
int getpktinfo = 1;
struct addrinfo hint, *res;
char cmsg[CMSG_SPACE(sizeof(struct in_pktinfo))];
char clientpacket[1024];
struct sockaddr_in clientaddr;
struct msghdr msg;
struct cmsghdr *cmsgptr;
struct iovec iov[1];
unsigned int myip;
char *txtptr;
iov[0].iov_base = clientpacket;
iov[0].iov_len = 1024;
memset(&msg,0,sizeof(msg));
memset(&clientaddr,0,sizeof(clientaddr));
msg.msg_name=&clientaddr;
msg.msg_namelen = sizeof(clientaddr);
msg.msg_iov = iov;
msg.msg_iovlen = 1;
msg.msg_control=&cmsg;
msg.msg_controllen = sizeof(cmsg);
char bootpmagic[4] = {0x63,0x82,0x53,0x63};
int pktsize;
int doexit=0;
port = 4011;
memset(&hint,0,sizeof(hint));
hint.ai_family = PF_INET; /* Would've done UNSPEC, but it doesn't work right and this is heavily v4 specific anyway */
hint.ai_socktype = SOCK_DGRAM;
hint.ai_flags = AI_PASSIVE;
getaddrinfo(NULL,"4011",&hint,&res);
serverfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (!serverfd) { fprintf(stderr,"That's odd...\n"); }
setsockopt(serverfd,IPPROTO_IP,IP_PKTINFO,&getpktinfo,sizeof(getpktinfo));
if (bind(serverfd,res->ai_addr ,res->ai_addrlen) < 0) {
fprintf(stderr,"Unable to bind 4011");
exit(1);
}
while (!doexit) {
pktsize = recvmsg(serverfd,&msg,0);
if (pktsize < 320) {
continue;
}
if (clientpacket[0] != 1 || memcmp(clientpacket+0xec,bootpmagic,4)) {
continue;
}
for (cmsgptr = CMSG_FIRSTHDR(&msg); cmsgptr != NULL; cmsgptr = CMSG_NXTHDR(&msg,cmsgptr)) {
if (cmsgptr->cmsg_level == IPPROTO_IP && cmsgptr->cmsg_type == IP_PKTINFO) {
myip = ((struct in_pktinfo*)(CMSG_DATA(cmsgptr)))->ipi_addr.s_addr;
}
}
clientpacket[0] = 2; //change to a reply
myip = htonl(myip); //endian neutral change
clientpacket[0x14] = (myip>>24)&0xff; //maybe don't need to do this, maybe assigning the whole int would be better
clientpacket[0x15] = (myip>>16)&0xff;
clientpacket[0x16] = (myip>>8)&0xff;
clientpacket[0x17] = (myip)&0xff;
txtptr = clientpacket+0x6c;
strncpy(txtptr,"Boot/bootmgfw.efi",128); // keeping 128 in there just in case someone changes the string
clientpacket[0xf0]=0x35; //DHCP MSG type
clientpacket[0xf1]=0x1; // LEN of 1
clientpacket[0xf2]=0x5; //DHCP ACK
clientpacket[0xf3]=0x36; //DHCP server identifier
clientpacket[0xf4]=0x4; //DHCP server identifier length
clientpacket[0xf5] = (myip>>24)&0xff; //maybe don't need to do this, maybe assigning the whole int would be better
clientpacket[0xf6] = (myip>>16)&0xff;
clientpacket[0xf7] = (myip>>8)&0xff;
clientpacket[0xf8] = (myip)&0xff;
clientpacket[0xf9] = 0xfc; // dhcp 252 'proxy', but coopeted by bootmgfw, it's actually suggesting the boot config file
clientpacket[0xfa] = 9; //length of 9
txtptr = clientpacket+0xfb;
strncpy(txtptr,"Boot/BCD",8);
clientpacket[0x103]=0;
clientpacket[0x104]=0xff;
sendto(serverfd,clientpacket,pktsize,0,(struct sockaddr*)&clientaddr,sizeof(clientaddr));
}
#include <signal.h>
#include <syslog.h>
// the chunk size for each alloc
int chunknum = 200;
int doreload = 0;
int verbose = 0;
char logmsg[50];
// the struct to store the winpe configuration for each node
struct nodecfg {
char node[50];
char data[150];
};
char *data = NULL; // the ptr to the array of all node config
int nodenum = 0;
// trigger the main program to reload configuration file
void reload(int sig) {
doreload = 1;
}
// the subroutine which is used to load configuration from
// /var/lib/xcat/proxydhcp.cfg to *data
void loadcfg () {
nodenum = 0;
free(data);
data = NULL;
doreload = 0;
char *dp = NULL;
FILE *fp;
fp = fopen("/var/lib/xcat/proxydhcp.cfg", "r");
if (fp) {
int num = chunknum;
int rtime = 1;
while (num == chunknum) {
// realloc the chunknum size of memory each to save memory usage
data = realloc(data, sizeof(struct nodecfg) * chunknum * rtime);
if (NULL == data) {
fprintf (stderr, "Cannot get enough memory.\n");
free (data);
return;
}
dp = data + sizeof(struct nodecfg) * chunknum * (rtime - 1);
memset(dp, 0, sizeof(struct nodecfg) * chunknum);
num = fread(dp, sizeof (struct nodecfg), chunknum, fp);
nodenum += num;
rtime++;
}
fclose(fp);
}
}
// get the path of winpe from configuration file which is stored in *data
char *getwinpepath(char *node) {
int i;
struct nodecfg *nc = (struct nodecfg *)data;
for (i=0; i<nodenum;i++) {
if (0 == strcmp(nc->node, node)) {
return nc->data;
}
nc++;
}
return NULL;
}
int main(int argc, char *argv[]) {
int i;
for(i = 0; i < argc; i++)
{
if (strcmp(argv[i], "-V") == 0) {
verbose = 1;
setlogmask(LOG_UPTO(LOG_DEBUG));
openlog("proxydhcp", LOG_NDELAY, LOG_LOCAL0);
}
}
// regist my pid to /var/run/xcat/proxydhcp.pid
int pid = getpid();
FILE *pidf = fopen ("/var/run/xcat/proxydhcp.pid", "w");
if (pidf) {
fprintf(pidf, "%d", pid);
fclose (pidf);
} else {
fprintf (stderr, "Cannot open /var/run/xcat/proxydhcp.pid\n");
return 1;
}
// load configuration at first start
loadcfg();
// regist signal SIGUSR1 for triggering reload configuration from outside
struct sigaction sigact;
sigact.sa_handler = &reload;
sigaction(SIGUSR1, &sigact, NULL);
int serverfd,port;
int getpktinfo = 1;
struct addrinfo hint, *res;
char cmsg[CMSG_SPACE(sizeof(struct in_pktinfo))];
char clientpacket[1024];
struct sockaddr_in clientaddr;
struct msghdr msg;
struct cmsghdr *cmsgptr;
struct iovec iov[1];
unsigned int myip, clientip;
char *txtptr;
iov[0].iov_base = clientpacket;
iov[0].iov_len = 1024;
memset(&msg,0,sizeof(msg));
memset(&clientaddr,0,sizeof(clientaddr));
msg.msg_name=&clientaddr;
msg.msg_namelen = sizeof(clientaddr);
msg.msg_iov = iov;
msg.msg_iovlen = 1;
msg.msg_control=&cmsg;
msg.msg_controllen = sizeof(cmsg);
char defaultwinpe[20] = "Boot/bootmgfw.efi";
char bootpmagic[4] = {0x63,0x82,0x53,0x63};
int pktsize;
int doexit=0;
port = 4011;
memset(&hint,0,sizeof(hint));
hint.ai_family = PF_INET; /* Would've done UNSPEC, but it doesn't work right and this is heavily v4 specific anyway */
hint.ai_socktype = SOCK_DGRAM;
hint.ai_flags = AI_PASSIVE;
getaddrinfo(NULL,"4011",&hint,&res);
serverfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (!serverfd) { fprintf(stderr,"That's odd...\n"); }
setsockopt(serverfd,IPPROTO_IP,IP_PKTINFO,&getpktinfo,sizeof(getpktinfo));
if (bind(serverfd,res->ai_addr ,res->ai_addrlen) < 0) {
fprintf(stderr,"Unable to bind 4011");
exit(1);
}
while (!doexit) {
// use select to wait for the 4011 request packages coming
fd_set fds;
FD_ZERO(&fds);
FD_SET(serverfd, &fds);
struct timeval timeout;
timeout.tv_sec = 30;
timeout.tv_usec = 0;
int rc;
if ((rc = select(serverfd+1,&fds,0,0, &timeout)) <= 0) {
if (doreload) {
loadcfg();
fprintf(stderr, "load in select\n");
}
if (verbose) {syslog(LOG_DEBUG, "reload /var/lib/xcat/proxydhcp.cfg\n");}
continue;
}
if (doreload) {
loadcfg();
if (verbose) {syslog(LOG_DEBUG, "reload /var/lib/xcat/proxydhcp.cfg\n");}
}
pktsize = recvmsg(serverfd,&msg,0);
if (pktsize < 320) {
continue;
}
if (clientpacket[0] != 1 || memcmp(clientpacket+0xec,bootpmagic,4)) {
continue;
}
for (cmsgptr = CMSG_FIRSTHDR(&msg); cmsgptr != NULL; cmsgptr = CMSG_NXTHDR(&msg,cmsgptr)) {
if (cmsgptr->cmsg_level == IPPROTO_IP && cmsgptr->cmsg_type == IP_PKTINFO) {
myip = ((struct in_pktinfo*)(CMSG_DATA(cmsgptr)))->ipi_addr.s_addr;
}
}
// get the ip of dhcp client
clientip = 0;
int i;
for (i = 0; i< 4; i++) {
clientip = clientip << 8;
clientip += (unsigned char)clientpacket[15-i];
}
// get the winpe path
struct hostent *host = gethostbyaddr(&clientip, sizeof(clientip), AF_INET);
char *winpepath = defaultwinpe;
if (host) {
if (host->h_name) {
// remove the domain part from hostname
char *place = strstr(host->h_name, ".");
if (place) {
*place = '\0';
}
winpepath = getwinpepath(host->h_name);
if (winpepath == NULL) {
winpepath = defaultwinpe;
}
if (verbose) {
sprintf(logmsg, "Received proxydhcp request from %s\n", host->h_name);
syslog(LOG_DEBUG, logmsg);
}
}
} else {
winpepath = defaultwinpe;
}
// get the Vendor class identifier
char *arch = NULL;
unsigned char *p = clientpacket + 0xf0;
while (*p != 0xff && p < (unsigned char *)clientpacket + pktsize) {
if (*p == 60) {
arch = p + 0x11;
break;
} else {
p += *(p+1) + 2;
}
}
char winboot[50]; // the bootload of winpe
memset(winboot, 0, 50);
if (0 == memcmp(arch, "00000", 5)) { // bios boot mode
strcpy(winboot, winpepath);
strcat(winboot, "Boot/pxeboot.0");
} else if (0 == memcmp(arch, "00007", 5)) { // uefi boot mode
strcpy(winboot, winpepath);
strcat(winboot, "Boot/bootmgfw.efi");
}
clientpacket[0] = 2; //change to a reply
myip = htonl(myip); //endian neutral change
clientpacket[0x14] = (myip>>24)&0xff; //maybe don't need to do this, maybe assigning the whole int would be better
clientpacket[0x15] = (myip>>16)&0xff;
clientpacket[0x16] = (myip>>8)&0xff;
clientpacket[0x17] = (myip)&0xff;
txtptr = clientpacket+0x6c;
strncpy(txtptr, winboot ,128); // keeping 128 in there just in case someone changes the string
//strncpy(txtptr,"winboot/new/Boot/bootmgfw.efi",128); // keeping 128 in there just in case someone changes the string
//strncpy(txtptr,"Boot/pxeboot.0",128); // keeping 128 in there just in case someone changes the string
clientpacket[0xf0]=0x35; //DHCP MSG type
clientpacket[0xf1]=0x1; // LEN of 1
clientpacket[0xf2]=0x5; //DHCP ACK
clientpacket[0xf3]=0x36; //DHCP server identifier
clientpacket[0xf4]=0x4; //DHCP server identifier length
clientpacket[0xf5] = (myip>>24)&0xff; //maybe don't need to do this, maybe assigning the whole int would be better
clientpacket[0xf6] = (myip>>16)&0xff;
clientpacket[0xf7] = (myip>>8)&0xff;
clientpacket[0xf8] = (myip)&0xff;
char winBCD[50];
strcpy(winBCD, winpepath);
strcat(winBCD, "Boot/BCD");
clientpacket[0xf9] = 0xfc; // dhcp 252 'proxy', but coopeted by bootmgfw, it's actually suggesting the boot config file
clientpacket[0xfa] = strlen(winBCD) + 1; //length of 9
txtptr = clientpacket+0xfb;
strncpy(txtptr, winBCD, strlen(winBCD));
clientpacket[0xfa + strlen(winBCD) + 1] = 0;
clientpacket[0xfa + strlen(winBCD) + 2] = 0xff;
sendto(serverfd,clientpacket,pktsize,0,(struct sockaddr*)&clientaddr,sizeof(clientaddr));
if (verbose) {
sprintf(logmsg, "Path of bootloader:%s. Path of BCD:%s\n", winboot, winBCD);
syslog(LOG_DEBUG, logmsg);
}
}
if (verbose) { closelog();}
}
+48
View File
@@ -0,0 +1,48 @@
/* IBM(c) 2013 EPL licens http://www.eclipse.org/legal/epl-v10.html
* Jarrod Johnson - jbjohnso@us.ibm.com
* This program periodically transmits a udp packet to designated xCAT server
* It waits for an 'ok' and then exits
*/
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[]) {
int server;
struct addrinfo hints;
struct addrinfo *results,*cur;
struct timeval timeout;
int canread=0;
char buffer[128];
srand(time(NULL));
memset(&hints,0,sizeof(struct addrinfo));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_DGRAM;
hints.ai_protocol = IPPROTO_UDP;
fd_set selectset;
getaddrinfo(argv[1],argv[2],&hints,&results);
server = socket(AF_UNSPEC,SOCK_DGRAM,17);
for (cur=results; cur != NULL; cur = cur->ai_next) {
server = socket(cur->ai_family,cur->ai_socktype,cur->ai_protocol);
if (server == -1) continue;
if (connect(server,cur->ai_addr,cur->ai_addrlen) != -1) break;
close(server);
}
FD_ZERO(&selectset);
FD_SET(server,&selectset);
while (1) {
timeout.tv_sec = rand() % 120+60;
timeout.tv_usec = rand() % 10000;
write(server,"resourcerequest: xcatd\n",strlen("resourcerequest: xcatd\n"));
canread = select(FD_SETSIZE,&selectset,NULL,NULL,&timeout);
if (canread) {
read(server,buffer,sizeof(buffer));
if (strncmp(buffer,"resourcerequest: ok",strlen("resourcerequest: ok"))==0) {
exit(0);
}
}
}
}
@@ -14,7 +14,7 @@
# postscript (stateful install) or with the otherpkgs processing of
# genimage (stateless/statelite install). This script will install any
# gpfs update rpms that exist on the xCAT management node in the
# /install/post/gpfs_updates directory.
# /install/post/otherpkgs/gpfs_updates directory.
# This is necessary because the GPFS updates can ONLY be installed
# after the base rpms have been installed, and the update rpms cannot
# exist in any rpm repositories used by xCAT otherpkgs processing
@@ -0,0 +1,6 @@
xcat-openstack-baremetal for Debian
-----------------------------------
<possible notes regarding this package - if none, delete this file>
-- root <root@unknown> Wed, 12 Mar 2014 01:47:54 -0700
@@ -0,0 +1,9 @@
xcat-openstack-baremetal for Debian
-----------------------------------
<this file describes information about the source package, see Debian policy
manual section 4.14. You WILL either need to modify or delete this file>
@@ -0,0 +1,5 @@
xcat-openstack-baremetal (2.8.4-1) unstable; urgency=low
* Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP>
-- root <root@unknown> Wed, 12 Mar 2014 01:47:54 -0700
+1
View File
@@ -0,0 +1 @@
8
+14
View File
@@ -0,0 +1,14 @@
Source: xcat-openstack-baremetal
Section: admin
Priority: extra
Maintainer: xCAT <xcat-user@lists.sourceforge.net>
Build-Depends: debhelper (>= 8.0.0)
Standards-Version: 3.9.4
Homepage: http://xcat.sourceforge.net/
#Vcs-Git: git://git.debian.org/collab-maint/xcat-openstack-baremetal.git
#Vcs-Browser: http://git.debian.org/?p=collab-maint/xcat-openstack-baremetal.git;a=summary
Package: xcat-openstack-baremetal
Architecture: all
Depends: xCAT-client
Description: Executables and data of the xCAT baremetal driver for OpenStack
+38
View File
@@ -0,0 +1,38 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: xcat-openstack-baremetal
Source: <url://example.com>
Files: *
Copyright: <years> <put author's name and email here>
<years> <likewise for another author>
License: <special license>
<Put the license of the package here indented by 1 space>
<This follows the format of Description: lines in control file>
.
<Including paragraphs>
# If you want to use GPL v2 or later for the /debian/* files use
# the following clauses, or change it to suit. Delete these two lines
Files: debian/*
Copyright: 2014 root <root@unknown>
License: GPL-2+
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>
.
On Debian systems, the complete text of the GNU General
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
# Please also look if there are files or directories which have a
# different copyright/license attached and list them here.
# Please avoid to pick license terms that are more restrictive than the
# packaged work, as it may make Debian's contributions unacceptable upstream.
+7
View File
@@ -0,0 +1,7 @@
opt/xcat/bin
opt/xcat/sbin
opt/xcat/lib/perl/xCAT_plugin
opt/xcat/lib/python/xcat/openstack/baremetal
opt/xcat/share/xcat/openstack/postscripts
opt/xcat/share/man/man1
opt/xcat/share/doc/man1
+2
View File
@@ -0,0 +1,2 @@
xcat-openstack-baremetal_2.8.4-1_all.deb admin extra
xcat-openstack-baremetal_2.8.4-1_all.deb admin extra
+6
View File
@@ -0,0 +1,6 @@
lib/* opt/xcat/lib/
share/xcat/openstack/postscripts/* opt/xcat/share/xcat/openstack/postscripts/
share/man/man1/* opt/xcat/share/man/man1/
share/doc/man1/* opt/xcat/share/doc/man1/
+43
View File
@@ -0,0 +1,43 @@
#!/bin/sh
# postinst script for xcat-openstack-baremetal
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
configure)
#copy the postscripts under /installl/postscripts directory on MN only
if [ -f "/etc/xCATMN" ]; then
cp /opt/xcat/share/xcat/openstack/postscripts/* /install/postscripts/
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0
+46
View File
@@ -0,0 +1,46 @@
#!/bin/sh
# prerm script for xcat-openstack-baremetal
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <prerm> `remove'
# * <old-prerm> `upgrade' <new-version>
# * <new-prerm> `failed-upgrade' <old-version>
# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
# * <deconfigured's-prerm> `deconfigure' `in-favour'
# <package-being-installed> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
remove|upgrade|deconfigure)
#remove postscripts under /installl/postscripts directory on MN only
if [ -f "/etc/xCATMN" ]; then
for fn in /opt/xcat/share/xcat/openstack/postscripts/*
do
bn=`basename $fn`
rm /install/postscripts/$bn
done
fi
;;
failed-upgrade)
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0
+44
View File
@@ -0,0 +1,44 @@
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
build:
pwd
`pwd`/xpod2man
clean:
dh_testdir
dh_testroot
dh_clean -d
install:
pwd
dh_testdir
dh_testroot
dh_installdirs
dh_install -X".svn"
chmod 444 `pwd`/debian/xcat-openstack-baremetal/opt/xcat/share/man/man1/*
chmod 644 `pwd`/debian/xcat-openstack-baremetal/opt/xcat/share/doc/man1/*
dh_link
binary-indep: build install
pwd
export
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
binary-arch:
pwd
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure
@@ -0,0 +1 @@
1.0
@@ -0,0 +1,201 @@
dh_installdirs
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_installdirs
dh_install
dh_link
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
@@ -0,0 +1,4 @@
opt/xcat/bin/xcatclient opt/xcat/sbin/deploy_ops_bm_node
opt/xcat/bin/xcatclient opt/xcat/sbin/cleanup_ops_bm_node
opt/xcat/bin/xcatclient opt/xcat/bin/opsaddbmnode
opt/xcat/bin/xcatclientnnr opt/xcat/bin/opsaddimage
@@ -0,0 +1 @@
misc:Depends=
@@ -0,0 +1,904 @@
# IBM(c) 2013 EPL license http://www.eclipse.org/legal/epl-v10.html
package xCAT_plugin::openstack;
BEGIN
{
$::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
}
use lib "$::XCATROOT/lib/perl";
use xCAT::Utils;
use xCAT::TableUtils;
use xCAT::SvrUtils;
use xCAT::NetworkUtils;
use xCAT::Table;
use Data::Dumper;
use File::Path;
use File::Copy;
use Getopt::Long;
Getopt::Long::Configure("bundling");
Getopt::Long::Configure("pass_through");
sub handled_commands {
return {
opsaddbmnode => "openstack", #external command
opsaddimage => "openstack", #external command
deploy_ops_bm_node => "openstack", #internal command called from the baremetal driver
cleanup_ops_bm_node => "openstack", #internal command called from the baremetal driver
}
}
sub process_request {
my $request = shift;
my $callback = shift;
my $doreq = shift;
my $command = $request->{command}->[0];
if ($command eq "opsaddbmnode") {
return opsaddbmnode($request, $callback, $doreq);
} elsif ($command eq "opsaddimage") {
return opsaddimage($request, $callback, $doreq);
} elsif ($command eq "deploy_ops_bm_node") {
return deploy_ops_bm_node($request, $callback, $doreq);
} elsif ($command eq "cleanup_ops_bm_node") {
return cleanup_ops_bm_node($request, $callback, $doreq);
} else {
$callback->({error=>["Unsupported command: $command."],errorcode=>[1]});
return 1;
}
}
#-------------------------------------------------------------------------------
=head3 opsaddbmnode
This function takes the xCAT nodes and register them
as the OpenStack baremetal nodes
=cut
#-------------------------------------------------------------------------------
sub opsaddbmnode {
my $request = shift;
my $callback = shift;
my $doreq = shift;
@ARGV = @{$request->{arg}};
Getopt::Long::Configure("bundling");
Getopt::Long::Configure("no_pass_through");
my $help;
my $version;
my $host;
if(!GetOptions(
'h|help' => \$help,
'v|version' => \$version,
's=s' => \$host,
))
{
&opsaddbmnode_usage($callback);
return 1;
}
# display the usage if -h or --help is specified
if ($help) {
&opsaddbmnode_usage($callback);
return 0;
}
# display the version statement if -v or --verison is specified
if ($version)
{
my $rsp={};
$rsp->{data}->[0]= xCAT::Utils->Version();
$callback->($rsp);
return 0;
}
if (!$request->{node}) {
$callback->({error=>["Please specify at least one node."],errorcode=>[1]});
return 1;
}
if (!$host) {
$callback->({error=>["Please specify the OpenStack compute host name with -s flag."],errorcode=>[1]});
return 1;
}
my $nodes = $request->{node};
#get node mgt
my $nodehmhash;
my $nodehmtab = xCAT::Table->new("nodehm");
if ($nodehmtab) {
$nodehmhash = $nodehmtab->getNodesAttribs($nodes,['power', 'mgt']);
}
#get bmc info for the nodes
my $ipmitab = xCAT::Table->new("ipmi", -create => 0);
my $tmp_ipmi;
if ($ipmitab) {
$tmp_ipmi = $ipmitab->getNodesAttribs($nodes, ['bmc','username', 'password'], prefetchcache=>1);
#print Dumper($tmp_ipmi);
} else {
$callback->({error=>["Cannot open the ipmi table."],errorcode=>[1]});
return 1;
}
#get mac for the nodes
my $mactab = xCAT::Table->new("mac", -create => 0);
my $tmp_mac;
if ($mactab) {
$tmp_mac = $mactab->getNodesAttribs($nodes, ['mac'], prefetchcache=>1);
#print Dumper($tmp_mac);
} else {
$callback->({error=>["Cannot open the mac table."],errorcode=>[1]});
return 1;
}
#get cpu, memory and disk info for the nodes
my $hwinvtab = xCAT::Table->new("hwinv", -create => 0);
my $tmp_hwinv;
if ($hwinvtab) {
$tmp_hwinv = $hwinvtab->getNodesAttribs($nodes, ['cpucount', 'memory', 'disksize'], prefetchcache=>1);
#print Dumper($tmp_hwinv);
} else {
$callback->({error=>["Cannot open the hwinv table."],errorcode=>[1]});
return 1;
}
#get default username and password for bmc
my $d_bmcuser;
my $d_bmcpasswd;
my $passtab = xCAT::Table->new('passwd');
if ($passtab) {
($tmp_passwd)=$passtab->getAttribs({'key'=>'ipmi'},'username','password');
if (defined($tmp_passwd)) {
$d_bmcuser = $tmp_passwd->{username};
$d_bmcpasswd = $tmp_passwd->{password};
}
}
#print "d_bmcuser=$d_bmcuser, d_bmcpasswd=$d_bmcpasswd \n";
foreach my $node (@$nodes) {
#collect the node infomation needed for each node, some info
my $mgt;
my $ref_nodehm = $nodehmhash->{$node}->[0];
if ($ref_nodehm) {
if ($ref_nodehm->{'power'}) {
$mgt = $ref_nodehm->{'power'};
} elsif ($ref_nodehm->{'mgt'}) {
$mgt = $ref_nodehm->{'mgt'};
}
}
my ($bmc, $bmc_user, $bmc_password, $mac, $cpu, $memory, $disk);
if (($mgt) && ($mgt eq 'ipmi')) {
my $ref_ipmi = $tmp_ipmi->{$node}->[0];
if ($ref_ipmi) {
if (exists($ref_ipmi->{bmc})) {
$bmc = $ref_ipmi->{bmc};
}
if (exists($ref_ipmi->{username})) {
$bmc_user = $ref_ipmi->{username};
if (exists($ref_ipmi->{password})) {
$bmc_password = $ref_ipmi->{password};
}
} else { #take the default if they cannot be found on ipmi table
if ($d_bmcuser) { $bmc_user = $d_bmcuser; }
if ($d_bmcpasswd) { $bmc_password = $d_bmcpasswd; }
}
}
} # else { # for hardware control point other than ipmi, just fake it in OpenStack.
#$bmc = "0.0.0.0";
#$bmc_user = "xCAT";
#$bmc_password = "xCAT";
#}
my $ref_mac = $tmp_mac->{$node}->[0];
if ($ref_mac) {
if (exists($ref_mac->{mac})) {
$mac = $ref_mac->{mac};
}
}
$ref_hwinv = $tmp_hwinv->{$node}->[0];
if ($ref_hwinv) {
if (exists($ref_hwinv->{cpucount})) {
$cpu = $ref_hwinv->{cpucount};
}
if (exists($ref_hwinv->{memory})) {
$memory = $ref_hwinv->{memory};
#TODO: what if the unit is not in MB? We need to convert it to MB
$memory =~ s/MB|mb//g;
}
if (exists($ref_hwinv->{disksize})) {
#The format of the the disk size is: sda:250GB,sdb:250GB or just 250GB
#We need to get the size of the first one
$disk = $ref_hwinv->{disksize};
my @a = split(',', $disk);
my @b = split(':', $a[0]);
if (@b > 1) {
$disk = $b[1];
} else {
$disk = $b[0];
}
#print "a=@a, b=@b\n";
#TODO: what if the unit is not in GB? We need to convert it to MB
$disk =~ s/GB|gb//g;
}
}
#some info are mendatory
if (!$mac) {
$callback->({error=>["Mac address is not defined in the mac table for node $node."],errorcode=>[1]});
next;
}
if (!$cpu) {
#default cpu count is 1
$cpu = 1;
}
if (!$memory) {
#default memory size is 1024MB=1GB
$memory = 1024;
}
if (!$disk) {
#default disk size is 1GB
$disk = 1;
}
#print "$bmc, $bmc_user, $bmc_password, $mac, $cpu, $memory, $disk\n";
#call OpenStack command to add the node into the OpenStack as
#a baremetal node.
my $cmd_tmp = "nova baremetal-node-create";
if ($bmc) {
#make sure it is an ip address
if (($bmc !~ /\d+\.\d+\.\d+\.\d+/) && ($bmc !~ /:/)) {
$bmc = xCAT::NetworkUtils->getipaddr($bmc);
}
$cmd_tmp .= " --pm_address=$bmc";
}
if ($bmc_user) {
$cmd_tmp .= " --pm_user=$bmc_user";
}
if ($bmc_password) {
$cmd_tmp .= " --pm_password=$bmc_password";
}
$cmd_tmp .= " $host $cpu $memory $disk $mac";
my $cmd = qq~source \~/openrc;$cmd_tmp~;
#print "cmd=$cmd\n";
my $output =
xCAT::InstUtils->xcmd($callback, $doreq, "xdsh", [$host], $cmd, 0);
if ($::RUNCMD_RC != 0) {
my $rsp;
push @{$rsp->{data}}, "OpenStack creating baremetal node $node:";
push @{$rsp->{data}}, "$output";
xCAT::MsgUtils->message("E", $rsp, $callback);
}
}
}
#-------------------------------------------------------------------------------
=head3 opsaddimage
This function takes the xCAT nodes and register them
as the OpenStack baremetal nodes
=cut
#-------------------------------------------------------------------------------
sub opsaddimage {
my $request = shift;
my $callback = shift;
my $doreq = shift;
@ARGV = @{$request->{arg}};
Getopt::Long::Configure("bundling");
Getopt::Long::Configure("no_pass_through");
my $help;
my $version;
#my $cloud;
my $ops_img_names;
my $controller;
if(!GetOptions(
'h|help' => \$help,
'v|version' => \$version,
'c=s' => \$controller,
'n=s' => \$ops_img_names,
))
{
&opsaddimage_usage($callback);
return 1;
}
# display the usage if -h or --help is specified
if ($help) {
&opsaddimage_usage($callback);
return 0;
}
# display the version statement if -v or --verison is specified
if ($version)
{
my $rsp={};
$rsp->{data}->[0]= xCAT::Utils->Version();
$callback->($rsp);
return 0;
}
if (@ARGV ==0) {
$callback->({error=>["Please specify an image name or a list of image names."],errorcode=>[1]});
return 1;
}
#make sure the input cloud name is valid.
#if (!$cloud) {
# $callback->({error=>["Please specify the name of the cloud with -c flag."],errorcode=>[1]});
# return 1;
#} else {
# my $cloudstab = xCAT::Table->new('clouds', -create => 0);
# my @et = $cloudstab->getAllAttribs('name', 'controller');
# if(@et) {
# foreach my $tmp_et (@et) {
# if ($tmp_et->{name} eq $cloud) {
# if ($tmp_et->{controller}) {
# $controller = $tmp_et->{controller};
# last;
# } else {
# $callback->({error=>["Please specify the controller in the clouds table for the cloud: $cloud."],errorcode=>[1]});
# return 1;
# }
# }
# }
# }
if (!$controller) {
$callback->({error=>["Please specify the OpenStack controller node name with -c."],errorcode=>[1]});
return 1;
}
#}
#make sure that the images from the command are valid image names
@images = split(',', $ARGV[0]);
@new_names = ();
if ($ops_img_names) {
@new_names = split(',', $ops_img_names);
}
#print "images=@images, new image names=@new_names, controller=$controller\n";
my $image_hash = {};
my $osimgtab = xCAT::Table->new('osimage', -create => 0);
my @et = $osimgtab->getAllAttribs('imagename');
if(@et) {
foreach my $tmp_et (@et) {
$image_hash->{$tmp_et->{imagename}}{'xCAT'} = 1;
}
}
my @bad_images;
foreach my $image (@images) {
if (!exists($image_hash->{$image})) {
push @bad_images, $image;
}
}
if (@bad_images > 0) {
$callback->({error=>["The following images cannot be found in xCAT osimage table:\n " . join("\n ", @bad_images) . "\n"],errorcode=>[1]});
return 1;
}
my $index=0;
foreach my $image (@images) {
my $new_name = shift(@new_names);
if (!$new_name) {
$new_name = $image; #the default new name is xCAT image name
}
my $cmd_tmp = "glance image-create --name $new_name --public --disk-format qcow2 --container-format bare --property xcat_image_name=\'$image\' < /tmp/$image.qcow2";
my $cmd = qq~touch /tmp/$image.qcow2;source \~/openrc;$cmd_tmp;rm /tmp/$image.qcow2~;
#print "cmd=$cmd\ncontroller=$controller\n";
my $output =
xCAT::InstUtils->xcmd($callback, $doreq, "xdsh", [$controller], $cmd, 0);
if ($::RUNCMD_RC != 0) {
my $rsp;
push @{$rsp->{data}}, "OpenStack creating image $new_name:";
push @{$rsp->{data}}, "$output";
xCAT::MsgUtils->message("E", $rsp, $callback);
}
}
}
#-------------------------------------------------------------------------------
=head3 deploy_ops_bm_node
This is a internel command called by OpenStack xCAT-baremetal driver.
It prepares the node by adding the config_ops_bm_node postbootscript
to the postscript table for the node, then call nodeset and then boot
the node up.
=cut
#-------------------------------------------------------------------------------
sub deploy_ops_bm_node {
my $request = shift;
my $callback = shift;
my $doreq = shift;
@ARGV = @{$request->{arg}};
Getopt::Long::Configure("bundling");
Getopt::Long::Configure("no_pass_through");
my $node = $request->{node}->[0];
my $help;
my $version;
my $img_name;
my $hostname;
my $fixed_ip;
my $netmask;
if(!GetOptions(
'h|help' => \$help,
'v|version' => \$version,
'image=s' => \$img_name,
'host=s' => \$hostname,
'ip=s' => \$fixed_ip,
'mask=s' => \$netmask,
))
{
&deploy_ops_bm_node_usage($callback);
return 1;
}
# display the usage if -h or --help is specified
if ($help) {
&deploy_ops_bm_node_usage($callback);
return 0;
}
# display the version statement if -v or --verison is specified
if ($version)
{
my $rsp={};
$rsp->{data}->[0]= xCAT::Utils->Version();
$callback->($rsp);
return 0;
}
#print "node=$node, image=$img_name, host=$hostname, ip=$fixed_ip, mask=$netmask\n";
#validate the image name
my $osimagetab = xCAT::Table->new('osimage', -create=>1);
my $ref = $osimagetab->getAttribs({imagename => $img_name}, 'imagename');
if (!$ref) {
$callback->({error=>["Invalid image name: $img_name."],errorcode=>[1]});
return 1;
}
#check if the fixed ip is within the xCAT management network.
#get the master ip address for the node then check if the master ip and
#the OpenStack fixed_ip are on the same subnet.
#my $same_nw = 0;
#my $master = xCAT::TableUtils->GetMasterNodeName($node);
#my $master_ip = xCAT::NetworkUtils->toIP($master);
#if (xCAT::NetworkUtils::isInSameSubnet($master_ip, $fixed_ip, $netmask, 0)) {
# $same_nw = 1;
#}
#add config_ops_bm_node to the node's postbootscript
my $script = "config_ops_bm_node $hostname $fixed_ip $netmask";
add_postscript($callback, $node, $script);
#run nodeset
my $cmd = qq~osimage=$img_name~;
my $output = xCAT::Utils->runxcmd(
{command => ["nodeset"],
node => [$node],
arg => [$cmd]},
$doreq, -1, 1);
if ($::RUNCMD_RC != 0) {
my $rsp;
push @{$rsp->{data}}, "nodeset:";
push @{$rsp->{data}}, "$output";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
#deploy the node now, supported nodehm.mgt values: ipmi, blade,fsp, hmc.
my $hmtab = xCAT::Table->new('nodehm');
my $hment = $hmtab->getNodeAttribs($node,['mgt']);
if ($hment && $hment->{'mgt'}) {
my $mgt = $hment->{'mgt'};
if ($mgt eq 'ipmi') {
deploy_bmc_node($callback, $doreq, $node);
} elsif (($mgt eq 'blade') || ($mgt eq 'fsp')) {
deploy_blade($callback, $doreq, $node);
} elsif ($mgt eq 'hmc') {
deploy_hmc_node($callback, $doreq, $node);
} else {
my $rsp;
push @{$rsp->{data}}, "Node $node: nodehm.mgt=$mgt is not supported in the OpenStack cloud.";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
} else {
#nodehm.mgt must setup for node
my $rsp;
push @{$rsp->{data}}, "Node $node: nodehm.mgt cannot be empty in order to deploy.";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
}
# Deploy a rack-mounted node
sub deploy_bmc_node {
my $callback = shift;
my $doreq = shift;
my $node = shift;
#set boot order
my $cmd = qq~net~;
my $output = xCAT::Utils->runxcmd(
{command => ["rsetboot"],
node => [$node],
arg => [$cmd]},
$doreq, -1, 1);
if ($::RUNCMD_RC != 0) {
my $rsp;
push @{$rsp->{data}}, "rsetboot:";
push @{$rsp->{data}}, "$output";
xCAT::MsgUtils->message("E", $rsp, $callback);
}
#reboot the node
my $cmd = qq~boot~;
my $output = xCAT::Utils->runxcmd(
{command => ["rpower"],
node => [$node],
arg => [$cmd]},
$doreq, -1, 1);
if ($::RUNCMD_RC != 0) {
my $rsp;
push @{$rsp->{data}}, "rpower:";
push @{$rsp->{data}}, "$output";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
}
# Deploy a blade or fsp controlled node
sub deploy_blade {
my $callback = shift;
my $doreq = shift;
my $node = shift;
#set boot order
my $cmd = qq~net~;
my $output = xCAT::Utils->runxcmd(
{command => ["rbootseq"],
node => [$node],
arg => [$cmd]},
$doreq, -1, 1);
if ($::RUNCMD_RC != 0) {
my $rsp;
push @{$rsp->{data}}, "rbootseq:";
push @{$rsp->{data}}, "$output";
xCAT::MsgUtils->message("E", $rsp, $callback);
}
#reboot the node
my $cmd = qq~boot~;
my $output = xCAT::Utils->runxcmd(
{command => ["rpower"],
node => [$node],
arg => [$cmd]},
$doreq, -1, 1);
if ($::RUNCMD_RC != 0) {
my $rsp;
push @{$rsp->{data}}, "rpower:";
push @{$rsp->{data}}, "$output";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
}
# Deploy a node controlled by HMC
sub deploy_hmc_node {
my $callback = shift;
my $doreq = shift;
my $node = shift;
my $output = xCAT::Utils->runxcmd(
{command => ["rnetboot"],
node => [$node]},
$doreq, -1, 1);
if ($::RUNCMD_RC != 0) {
my $rsp;
push @{$rsp->{data}}, "rnetboot:";
push @{$rsp->{data}}, "$output";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
}
#-------------------------------------------------------------------------------
=head3 cleanup_ops_bm_node
This is a internel command called by OpenStack xCAT-baremetal driver.
It undoes all the changes made by deploy_ops_bm_node command. It removes
the config_ops_bmn_ode postbootscript from the postscript table for the
node, removes the alias ip and then power off the node.
=cut
#-------------------------------------------------------------------------------
sub cleanup_ops_bm_node {
my $request = shift;
my $callback = shift;
my $doreq = shift;
@ARGV = @{$request->{arg}};
Getopt::Long::Configure("bundling");
Getopt::Long::Configure("no_pass_through");
my $node = $request->{node}->[0];
my $help;
my $version;
my $fixed_ip;
if(!GetOptions(
'h|help' => \$help,
'v|version' => \$version,
'ip=s' => \$fixed_ip,
))
{
&cleanup_ops_bm_node_usage($callback);
return 1;
}
# display the usage if -h or --help is specified
if ($help) {
&cleanup_ops_bm_node_usage($callback);
return 0;
}
# display the version statement if -v or --verison is specified
if ($version)
{
my $rsp={};
$rsp->{data}->[0]= xCAT::Utils->Version();
$callback->($rsp);
return 0;
}
#print "node=$node, ip=$fixed_ip\n";
#removes the config_ops_bm_node postbootscript from the postscripts table
remove_postscript($callback, $node, "config_ops_bm_node");
#run updatenode to remove the ip alias
my $cmd = qq~-P deconfig_ops_bm_node $fixed_ip~;
my $output = xCAT::Utils->runxcmd(
{command => ["updatenode"],
node => [$node],
arg => [$cmd]},
$doreq, -1, 1);
if ($::RUNCMD_RC != 0) {
my $rsp;
push @{$rsp->{data}}, "updatenode:";
push @{$rsp->{data}}, "$output";
xCAT::MsgUtils->message("E", $rsp, $callback);
}
#turn the node power off
$ssh_ok = 0;
my $cmd = qq~stat~;
my $output = xCAT::Utils->runxcmd(
{command => ["rpower"],
node => [$node],
arg => [$cmd]},
$doreq, -1, 1);
if ($::RUNCMD_RC != 0) {
my $rsp;
push @{$rsp->{data}}, "rpower:";
push @{$rsp->{data}}, "$output";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
} else {
if ($output !~ /: off/) {
#power off the node
my $cmd = qq~off~;
my $output = xCAT::Utils->runxcmd(
{command => ["rpower"],
node => [$node],
arg => [$cmd]},
$doreq, -1, 1);
if ($::RUNCMD_RC != 0) {
my $rsp;
push @{$rsp->{data}}, "rpower:";
push @{$rsp->{data}}, "$output";
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
}
}
}
#-------------------------------------------------------
=head3 add_postscript
It adds the 'config_ops_bm_node' postbootscript to the
postscript table for the given node.
=cut
#-------------------------------------------------------
sub add_postscript {
my $callback=shift;
my $node=shift;
my $script=shift;
#print "script=$script\n";
my $posttab=xCAT::Table->new("postscripts", -create =>1);
my %setup_hash;
my $ref = $posttab->getNodeAttribs($node,[qw(postscripts postbootscripts)]);
my $found=0;
if ($ref) {
if (exists($ref->{postscripts})) {
my @a = split(/,/, $ref->{postscripts});
if (grep(/^config_ops_bm_node/, @a)) {
$found = 1;
if (!grep(/^$script$/, @a)) {
#not exact match, must replace it with the new script
for (@a) {
s/^config_ops_bm_node.*$/$script/;
}
my $new_post = join(',', @a);
$setup_hash{$node}={postscripts=>"$new_post"};
}
}
}
if (exists($ref->{postbootscripts})) {
my $post=$ref->{postbootscripts};
my @old_a=split(',', $post);
if (grep(/^config_ops_bm_node/, @old_a)) {
if (!grep(/^$script$/, @old_a)) {
#not exact match, will replace it with new script
for (@old_a) {
s/^config_ops_bm_node.*$/$script/;
}
my $new_postboot = join(',', @old_a);
$setup_hash{$node}={postbootscripts=>"$new_postboot"};
}
} else {
if (! $found) {
$setup_hash{$node}={postbootscripts=>"$post,$script"};
}
}
} else {
if (! $found) {
$setup_hash{$node}={postbootscripts=>"$script"};
}
}
} else {
$setup_hash{$node}={postbootscripts=>"$script"};
}
if (keys(%setup_hash) > 0) {
$posttab->setNodesAttribs(\%setup_hash);
}
return 0;
}
#-------------------------------------------------------
=head3 remove_postscript
It removes the 'config_ops_bm_node' postbootscript from
the postscript table for the given node.
=cut
#-------------------------------------------------------
sub remove_postscript {
my $callback=shift;
my $node=shift;
my $script=shift;
my $posttab=xCAT::Table->new("postscripts", -create =>1);
my %setup_hash;
my $ref = $posttab->getNodeAttribs($node,[qw(postscripts postbootscripts)]);
my $found=0;
if ($ref) {
if (exists($ref->{postscripts})) {
my @old_a = split(/,/, $ref->{postscripts});
my @new_a = grep(!/^$script/, @old_a);
if (scalar(@new_a) != scalar(@old_a)) {
my $new_post = join(',', @new_a);
$setup_hash{$node}={postscripts=>"$new_post"};
}
}
if (exists($ref->{postbootscripts})) {
my @old_b = split(/,/, $ref->{postbootscripts});
my @new_b = grep(!/^$script/, @old_b);
if (scalar(@new_b) != scalar(@old_b)) {
my $new_post = join(',', @new_b);
$setup_hash{$node}={postbootscripts=>"$new_post"};
}
}
}
if (keys(%setup_hash) > 0) {
$posttab->setNodesAttribs(\%setup_hash);
}
return 0;
}
#-------------------------------------------------------------------------------
=head3 opsaddbmnode_usage
The usage text for opsaddbmnode command.
=cut
#-------------------------------------------------------------------------------
sub opsaddbmnode_usage {
my $cb=shift;
my $rsp={};
$rsp->{data}->[0]= "Usage: opsaddbmnode -h";
$rsp->{data}->[1]= " opsaddbmnode -v";
$rsp->{data}->[2]= " opsaddbmnode <noderange> -s <service_host>";
$cb->($rsp);
}
#-------------------------------------------------------------------------------
=head3 opsaddimage_usage
The usage text for opsaddimage command.
=cut
#-------------------------------------------------------------------------------
sub opsaddimage_usage {
my $cb=shift;
my $rsp={};
$rsp->{data}->[0]= "Usage: opsaddimage -h";
$rsp->{data}->[1]= " opsaddimage -v";
$rsp->{data}->[2]= " opsaddimage <image1,image2...> [-n <new_name1,new_name2...> -c <controller>";
$cb->($rsp);
}
#-------------------------------------------------------------------------------
=head3 deploy_ops_bm_node_usage
The usage text for deploy_ops_bm_node command.
=cut
#-------------------------------------------------------------------------------
sub deploy_ops_bm_node_usage {
my $cb=shift;
my $rsp={};
$rsp->{data}->[0]= "Usage: deploy_ops_bm_node -h";
$rsp->{data}->[1]= " deploy_ops_bm_node -v";
$rsp->{data}->[2]= " deploy_ops_bm_node <node> --image <image_name> --host <ops_hostname> --ip <ops_fixed_ip> --mask <netmask>";
$cb->($rsp);
}
#-------------------------------------------------------------------------------
=head3 cleanup_ops_bm_node_usage
The usage text cleanup_ops_bm_node command.
=cut
#-------------------------------------------------------------------------------
sub cleanup_ops_bm_node_usage {
my $cb=shift;
my $rsp={};
$rsp->{data}->[0]= "Usage: cleanup_ops_bm_node -h";
$rsp->{data}->[1]= " cleanup_ops_bm_node -v";
$rsp->{data}->[2]= " cleanup_ops_bm_node <node> [--ip <ops_fixed_ip>]";
$cb->($rsp);
}
1;
@@ -0,0 +1,17 @@
# Copyright (c) 2012 NTT DOCOMO, INC.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from xcat.openstack.baremetal import driver
BareMetalDriver = driver.xCATBareMetalDriver
@@ -0,0 +1,256 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# coding=utf-8
"""
A driver for Bare-metal platform.
"""
from oslo.config import cfg
from nova.compute import power_state
from nova import context as nova_context
from nova import exception
from nova.openstack.common import excutils
from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.virt.baremetal import baremetal_states
from nova.virt.baremetal import db
from nova.virt.baremetal import driver as bm_driver
from nova.virt.baremetal import utils as bm_utils
from nova.virt import driver
from nova.virt import firewall
from nova.virt.libvirt import imagecache
from xcat.openstack.baremetal import xcat_driver
from xcat.openstack.baremetal import exception as xcat_exception
from xcat.openstack.baremetal import power_states
LOG = logging.getLogger(__name__)
CONF = cfg.CONF
CONF.import_opt('use_ipv6', 'nova.netconf')
class xCATBareMetalDriver(bm_driver.BareMetalDriver):
"""BareMetal hypervisor driver."""
def __init__(self, virtapi, read_only=False):
super(xCATBareMetalDriver, self).__init__(virtapi)
self.xcat = xcat_driver.xCAT()
def _get_xCAT_image_name(self, image_meta):
prop = image_meta.get('properties')
xcat_image_name = prop.get('xcat_image_name')
if xcat_image_name:
return xcat_image_name
else:
raise xcat_exception.xCATInvalidImageError(image=image_meta.get('name'))
def spawn(self, context, instance, image_meta, injected_files,
admin_password, network_info=None, block_device_info=None):
"""
Create a new instance/VM/domain on the virtualization platform.
Once this successfully completes, the instance should be
running (power_state.RUNNING).
If this fails, any partial instance should be completely
cleaned up, and the virtualization platform should be in the state
that it was before this call began.
:param context: security context
:param instance: Instance object as returned by DB layer.
This function should use the data there to guide
the creation of the new instance.
:param image_meta: image object returned by nova.image.glance that
defines the image from which to boot this instance
:param injected_files: User files to inject into instance.
:param admin_password: Administrator password to set in instance.
:param network_info:
:py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info`
:param block_device_info: Information about block devices to be
attached to the instance.
"""
#import pdb
#pdb.set_trace()
node_uuid = self._require_node(instance)
node = db.bm_node_associate_and_update(context, node_uuid,
{'instance_uuid': instance['uuid'],
'instance_name': instance['hostname'],
'task_state': baremetal_states.BUILDING})
try:
self._plug_vifs(instance, network_info, context=context)
self._attach_block_devices(instance, block_device_info)
self._start_firewall(instance, network_info)
macs = self.macs_for_instance(instance)
nodename = self.xcat.get_xcat_node_name(macs)
imagename = self._get_xCAT_image_name(image_meta)
hostname = instance.get('hostname')
#get the network information for the new node
interfaces = bm_utils.map_network_interfaces(network_info, CONF.use_ipv6)
if CONF.use_ipv6:
fixed_ip = interfaces[0].get('address_v6')
netmask = interfaces[0].get('netmask_v6')
gateway = interfaces[0].get('gateway_v6')
else:
fixed_ip = interfaces[0].get('address')
netmask = interfaces[0].get('netmask')
gateway = interfaces[0].get('gateway')
#convert netmask from IPAddress to unicode string
if netmask:
netmask = unicode(netmask)
#let xCAT install it
bm_driver._update_state(context, node, instance, baremetal_states.DEPLOYING)
self.xcat.deploy_node(nodename, imagename, hostname, fixed_ip, netmask, gateway)
bm_driver._update_state(context, node, instance, baremetal_states.ACTIVE)
except Exception as e:
with excutils.save_and_reraise_exception():
LOG.error(_("Error occured while deploying instance %(instance)s "
"on baremetal node %(node)s: %(error)s") %
{'instance': instance['uuid'],
'node': node['uuid'],
'error':str(e)})
bm_driver._update_state(context, node, instance, baremetal_states.ERROR)
def reboot(self, context, instance, network_info, reboot_type,
block_device_info=None, bad_volumes_callback=None):
"""Reboot the specified instance.
After this is called successfully, the instance's state
goes back to power_state.RUNNING. The virtualization
platform should ensure that the reboot action has completed
successfully even in cases in which the underlying domain/vm
is paused or halted/stopped.
:param instance: Instance object as returned by DB layer.
:param network_info:
:py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info`
:param reboot_type: Either a HARD or SOFT reboot
:param block_device_info: Info pertaining to attached volumes
:param bad_volumes_callback: Function to handle any bad volumes
encountered
"""
try:
node = bm_driver._get_baremetal_node_by_instance_uuid(instance['uuid'])
macs = self.macs_for_instance(instance)
nodename = self.xcat.get_xcat_node_name(macs)
self.xcat.reboot_node(nodename)
bm_driver._update_state(context, node, instance, baremetal_states.RUNNING)
except xcat_exception.xCATCommandError as e:
with excutils.save_and_reraise_exception():
LOG.error(_("Error occured while rebooting instance %(instance)s "
"on baremetal node %(node)s: %(error)s") %
{'instance': instance['uuid'],
'node': node['uuid'],
'error':str(e)})
bm_driver._update_state(context, node, instance, baremetal_states.ERROR)
def destroy(self, instance, network_info, block_device_info=None,
context=None):
"""Destroy (shutdown and delete) the specified instance.
If the instance is not found (for example if networking failed), this
function should still succeed. It's probably a good idea to log a
warning in that case.
:param context: security context
:param instance: Instance object as returned by DB layer.
:param network_info:
:py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info`
:param block_device_info: Information about block devices that should
be detached from the instance.
:param destroy_disks: Indicates if disks should be destroyed
"""
#import pdb
#pdb.set_trace()
context = nova_context.get_admin_context()
try:
node = bm_driver._get_baremetal_node_by_instance_uuid(instance['uuid'])
except exception.InstanceNotFound:
LOG.warning(_("Destroy function called on a non-existing instance %s")
% instance['uuid'])
return
try:
macs = self.macs_for_instance(instance)
nodename = self.xcat.get_xcat_node_name(macs)
interfaces = bm_utils.map_network_interfaces(network_info, CONF.use_ipv6)
fixed_ip=None
if interfaces and interfaces[0]:
if CONF.use_ipv6:
fixed_ip = interfaces[0].get('address_v6')
else:
fixed_ip = interfaces[0].get('address')
if fixed_ip:
self.xcat.cleanup_node(nodename, fixed_ip)
else:
self.xcat.cleanup_node(nodename)
except Exception as e:
#just log it and move on
LOG.warning(_("Destroy called with xCAT error:" + str(e)))
try:
self._detach_block_devices(instance, block_device_info)
self._stop_firewall(instance, network_info)
self._unplug_vifs(instance, network_info)
bm_driver._update_state(context, node, None, baremetal_states.DELETED)
except Exception as e:
with excutils.save_and_reraise_exception():
LOG.error(_("Error occurred while destroying instance %s: %s")
% (instance['uuid'], str(e)))
bm_driver._update_state(context, node, instance,
baremetal_states.ERROR)
def power_off(self, instance, node=None):
"""Power off the specified instance."""
macs = self.macs_for_instance(instance)
nodename = self.xcat.get_xcat_node_name(macs)
self.xcat.power_off_node(nodename)
def power_on(self, context, instance, network_info, block_device_info=None,
node=None):
"""Power on the specified instance."""
macs = self.macs_for_instance(instance)
nodename = self.xcat.get_xcat_node_name(macs)
self.xcat.power_on_node(nodename)
def get_console_output(self, instance):
pass
def get_info(self, instance):
"""Get the current status of an instance, by name (not ID!)
Returns a dict containing:
:state: the running state, one of the power_state codes
:max_mem: (int) the maximum memory in KBytes allowed
:mem: (int) the memory in KBytes used by the domain
:num_cpu: (int) the number of virtual CPUs for the domain
:cpu_time: (int) the CPU time used in nanoseconds
"""
node = bm_driver._get_baremetal_node_by_instance_uuid(instance['uuid'])
macs = self.macs_for_instance(instance)
nodename = self.xcat.get_xcat_node_name(macs)
ps = self.xcat.get_node_power_state(nodename)
if ps == power_states.ON:
pstate = power_state.RUNNING
elif ps == power_states.OFF:
pstate = power_state.SHUTDOWN
else:
pstate = power_state.NOSTATE
return {'state': pstate,
'max_mem': node['memory_mb'],
'mem': node['memory_mb'],
'num_cpu': node['cpus'],
'cpu_time': 0}
@@ -0,0 +1,41 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
"""xCAT baremtal exceptions.
"""
import functools
import sys
from oslo.config import cfg
import webob.exc
from nova.openstack.common import excutils
from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova import safe_utils
from nova import exception as nova_exception
LOG = logging.getLogger(__name__)
class xCATException(Exception):
errmsg = _("xCAT general exception")
def __init__(self, errmsg=None, **kwargs):
if not errmsg:
errmsg = self.errmsg
errmsg = errmsg % kwargs
super(xCATException, self).__init__(errmsg)
class xCATCommandError(xCATException):
errmsg = _("Error returned when calling xCAT command %(cmd)s"
" for node %(node)s:%(error)s")
class xCATInvalidImageError(xCATException):
errmsg = _("The image %(image)s is not an xCAT image")
class xCATDeploymentFailure(xCATException):
errmsg = _("xCAT node deployment failed for node %(node)s:%(error)s")
class xCATRebootFailure(xCATException):
errmsg = _("xCAT node rebooting failed for node %(node)s:%(error)s")
@@ -0,0 +1,9 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
"""
Possible xCAT node power states.
"""
OFF = 'off'
ON = 'on'
ERROR = 'error'
@@ -0,0 +1,260 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# coding=utf-8
"""
Baremetal xCAT power manager.
"""
import os
import sys
import stat
from oslo.config import cfg
import datetime
from nova import context as nova_context
from nova.virt.baremetal import baremetal_states
from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import loopingcall
from nova.openstack.common import timeutils
from nova import paths
from nova import utils
from xcat.openstack.baremetal import exception
from xcat.openstack.baremetal import power_states
LOG = logging.getLogger(__name__)
# register configuration options
xcat_opts = [
cfg.IntOpt('deploy_timeout',
help='Timeout for node deployment. Default: 0 second (unlimited)',
default=0),
cfg.IntOpt('reboot_timeout',
help='Timeout for rebooting a node. Default: 0 second (unlimited)',
default=0),
cfg.IntOpt('deploy_checking_interval',
help='Checking interval for node deployment. Default: 10 seconds',
default=10),
cfg.IntOpt('reboot_checking_interval',
help='Checking interval for rebooting a node. Default: 5 seconds',
default=5),
]
xcat_group = cfg.OptGroup(name='xcat',
title='xCAT Options')
CONF = cfg.CONF
CONF.register_group(xcat_group)
CONF.register_opts(xcat_opts, xcat_group)
class xCAT(object):
"""A driver that calls xCAT funcions"""
def __init__(self):
#setup the path for xCAT commands
#xcatroot = os.getenv('XCATROOT', '/opt/xcat/')
#sys.path.append("%s/bin" % xcatroot)
#sys.path.append("%s/sbin" % xcatroot)
pass
def _exec_xcat_command(self, command):
"""Calls xCAT command."""
args = command.split(" ")
out, err = utils.execute(*args, run_as_root=True)
LOG.debug(_("xCAT command stdout: '%(out)s', stderr: '%(err)s'"),
{'out': out, 'err': err})
return out, err
def get_xcat_node_name(self, macs):
"""Get the xcat node name given mac addressed.
It uses the mac address to search for the node name in xCAT.
"""
for mac in macs:
out, err = self._exec_xcat_command("lsdef -w mac=%s" % mac)
if out:
return out.split(" ")[0]
errstr='No node found in xCAT with the following mac address: ' \
+ ','.join(macs)
LOG.warning(errstr)
raise exception.xCATCommandError(errstr)
def deploy_node(self, nodename, imagename, hostname, fixed_ip, netmask, gateway):
"""
Install the node.
It calls xCAT command deploy_ops_bmnode which prepares the node
by adding the config_ops_bm_node postbootscript to the postscript
table for the node, then call nodeset and then boot the node up.
"""
out, err = self._exec_xcat_command(
"deploy_ops_bm_node %(node)s --image %(image)s"
" --host %(host)s --ip %(ip)s --mask %(mask)s"
% {'node': nodename,
'image': imagename,
'host': hostname,
'ip': fixed_ip,
'mask': netmask,
})
if err:
errstr = _("Error returned when calling xCAT deploy_ops_bm_node"
" command for node %s:%s") % (nodename, err)
LOG.warning(errstr)
raise exception.xCATCommandError(errstr)
self._wait_for_node_deploy(nodename)
def cleanup_node(self, nodename, fixed_ip=None):
"""
Undo all the changes made to the node by deploy_node function.
It calls xCAT command cleanup_ops_bm_node which removes the
config_ops_bm_node postbootscript from the postscript table
for the node, removes the alias ip and then power the node off.
"""
cmd = "cleanup_ops_bm_node %s" % nodename
if fixed_ip:
cmd += " --ip %s" % fixed_ip
out, err = self._exec_xcat_command(cmd)
if err:
errstr = _("Error returned when calling xCAT cleanup_ops_bm_node"
" command for node %s:%s") % (nodename, err)
LOG.warning(errstr)
raise exception.xCATCommandError(errstr)
def power_on_node(self, nodename):
"""Power on the node."""
state = self.get_node_power_state(nodename)
if state == power_states.ON:
LOG.warning(_("Powring on node called, but the node %s "
"is already on") % nodename)
out, err = self._exec_xcat_command("rpower %s on" % nodename)
if err:
errstr = _("Error returned when calling xCAT rpower on"
" for node %s:%s") % (nodename, err)
LOG.warning(errstr)
raise exception.xCATCommandError(errstr)
else:
self._wait_for_node_reboot(nodename)
return power_states.ON
def power_off_node(self, nodename):
"""Power off the node."""
state = self.get_node_power_state(nodename)
if state == power_states.OFF:
LOG.warning(_("Powring off node called, but the node %s "
"is already off") % nodename)
out, err = self._exec_xcat_command("rpower %s off" % nodename)
if err:
errstr = _("Error returned when calling xCAT rpower off"
" for node %s:%s") % (nodename, err)
LOG.warning(errstr)
raise exception.xCATCommandError(errstr)
else:
return power_states.OFF
def reboot_node(self, nodename):
"""Reboot the node."""
out, err = self._exec_xcat_command("rpower %s boot" % nodename)
if err:
errstr = _("Error returned when calling xCAT rpower boot"
" for node %s:%s") % (nodename, err)
LOG.warning(errstr)
raise exception.xCATCommandError(errstr)
self._wait_for_node_reboot(nodename)
return power_states.ON
def get_node_power_state(self, nodename):
out, err = self._exec_xcat_command("rpower %s stat" % nodename)
if err:
errstr = _("Error returned when calling xCAT rpower stat"
" for node %s:%s") % (nodename, err)
LOG.warning(errstr)
raise exception.xCATCommandError(errstr)
else:
state = out.split(":")[1]
if state:
state = state.strip()
if state == 'on':
return power_states.ON
elif state == 'off':
return power_states.OFF
return power_states.ERROR
def _wait_for_node_deploy(self, nodename):
"""Wait for xCAT node deployment to complete."""
locals = {'errstr':''}
def _wait_for_deploy():
out,err = self._exec_xcat_command("nodels %s nodelist.status" % nodename)
if err:
locals['errstr'] = _("Error returned when quering node status"
" for node %s:%s") % (nodename, err)
LOG.warning(locals['errstr'])
raise loopingcall.LoopingCallDone()
if out:
node,status = out.split(": ")
status = status.strip()
if status == "booted":
LOG.info(_("Deployment for node %s completed.")
% nodename)
raise loopingcall.LoopingCallDone()
if (CONF.xcat.deploy_timeout and
timeutils.utcnow() > expiration):
locals['errstr'] = _("Timeout while waiting for"
" deployment of node %s.") % nodename
LOG.warning(locals['errstr'])
raise loopingcall.LoopingCallDone()
expiration = timeutils.utcnow() + datetime.timedelta(
seconds=CONF.xcat.deploy_timeout)
timer = loopingcall.FixedIntervalLoopingCall(_wait_for_deploy)
# default check every 10 seconds
timer.start(interval=CONF.xcat.deploy_checking_interval).wait()
if locals['errstr']:
raise exception.xCATDeploymentFailure(locals['errstr'])
def _wait_for_node_reboot(self, nodename):
"""Wait for xCAT node boot to complete."""
locals = {'errstr':''}
def _wait_for_reboot():
out,err = self._exec_xcat_command("nodestat %s" % nodename)
if err:
locals['errstr'] = _("Error returned when quering node status"
" for node %s:%s") % (nodename, err)
LOG.warning(locals['errstr'])
raise loopingcall.LoopingCallDone()
if out:
node,status = out.split(": ")
status = status.strip()
if status == "sshd":
LOG.info(_("Rebooting node %s completed.")
% nodename)
raise loopingcall.LoopingCallDone()
if (CONF.xcat.reboot_timeout and
timeutils.utcnow() > expiration):
locals['errstr'] = _("Timeout while waiting for"
" rebooting node %s.") % nodename
LOG.warning(locals['errstr'])
raise loopingcall.LoopingCallDone()
expiration = timeutils.utcnow() + datetime.timedelta(
seconds=CONF.xcat.reboot_timeout)
timer = loopingcall.FixedIntervalLoopingCall(_wait_for_reboot)
# default check every 5 seconds
timer.start(interval=CONF.xcat.reboot_checking_interval).wait()
if locals['errstr']:
raise exception.xCATRebootFailure(locals['errstr'])
@@ -0,0 +1,90 @@
=head1 NAME
B<opsaddbmnode> - It adds xCAT baremetal nodes to an OpenStack cloud.
=head1 SYNOPSIS
B<opsaddbmnode> I<noderange> B<-s> I<service_host>
B<opsaddbmnode> [B<-h>|B<--help>]
B<opsaddbmnode> [B<-v>|B<--version>]
=head1 DESCRIPTION
The B<opsaddbmnode> command registers xCAT nodes to an OpenStack cloud. An OpenStack nova baremetal node registration command takes several node attributes:
=over
=item BMC ip addresss, user id and password
=item Name of nova compute host which will control this baremetal node
=item Number of CPUs in the node
=item Memory in the node (MB)
=item Local hard disk in the node (GB)
=item MAC address to provision the node
=back
The opsaddbmnode command pulls the above baremetal node information from xCAT tables and calls "nova baremetal-node-create" to register the baremetal node with the OpenStack cloud.
Please make sure the following xCAT tables are filled with correct information for the given nodes before calling this command.
=over
=item ipmi (for BMC ip addresss, user id and password)
=item mac (for MAC address)
=item hwinv (for CPU, memory and disk info.)
=back
=head1 Parameters
I<noderage> is a comma separated node or node group names.
=head1 OPTIONS
=over 10
=item B<-s> The node name of the OpenStack compute host that hosts the baremetal nodes.
=item B<-h|--help> Display usage message.
=item B<-v|--version> The Command Version.
=back
=head1 RETURN VALUE
0 The command completed successfully.
1 An error has occurred.
=head1 EXAMPLES
=over 3
=item 1
To register node1, node2 and node3 to OpenStack, sv1 is the compute host.
opsassbmnode node1,node2,node3 -s sv1
=back
=head1 FILES
/opt/xcat/bin/opadddbmnode
=head1 SEE ALSO
L<opsaddimage(1)|opsaddimage.1>
@@ -0,0 +1,65 @@
=head1 NAME
B<opsaddimage> - It adds or removes nodes for the vlan.
=head1 SYNOPSIS
B<opsaddimage> I<image1,image2,...> B<-n> I<new_name1,new_name2,...> [B<-c> I<controller>]
B<opsaddimage> [B<-h>|B<--help>]
B<opsaddimage> [B<-v>|B<--version>]
=head1 DESCRIPTION
The B<opsaddimage> command adds a list of xCAT images into the OpenStack cloud.
Under the cover, it creates a fake image and registers the fake image into OpenStack with command B<glance image-create>. It sets the property in the image to indicate that this is an xCAT image and also stores the original xCAT image name in the property for further reference.
The xCAT image names can be listed using B<lsdef -t osimage> command.
=head1 Parameters
I<image1,image1...> a comma separated xCAT images names.
=head1 OPTIONS
=over 10
=item B<-n> a comma separated new image names in the OpenStack. If omitted, the default is the original xCAT image nanme.
=item B<-c> the node name of the OpenStack controller. This node must be an xCAT managed node.
=item B<-h|--help> Display usage message.
=item B<-v|--version> The Command Version.
=back
=head1 RETURN VALUE
0 The command completed successfully.
1 An error has occurred.
=head1 EXAMPLES
=over 3
=item 1.
To register xCAT image rhels6.3-x86_64-install-compute into OpenStack.
opsaddimage rhels6.3-x86_64-install-compute -c sv2
=back
=head1 FILES
/opt/xcat/bin/opsaddimage
=head1 SEE ALSO
L<opsaddbmnode(1)|opsaddbmnode.1>
@@ -0,0 +1,215 @@
#!/bin/sh
# IBM(c) 2014 EPL license http://www.eclipse.org/legal/epl-v10.html
# xCAT post script for configuring the openstack baremetal node.
# The format is:
# config_ops_bm_node ops_hostname ops_ip ops_netmask
get_os_type()
{
#get os type
str_os_type=`uname | tr 'A-Z' 'a-z'`
str_temp=''
if [ "$str_os_type" = "linux" ];then
str_temp=`echo $OSVER | grep -E '(sles|suse)'`
if [ -f "/etc/debian_version" ];then
str_os_type="debian"
elif [ -f "/etc/SuSE-release" -o -n "$str_temp" ];then
str_os_type="sles"
else
str_os_type="redhat"
fi
else
str_os_type="aix"
fi
echo "$str_os_type"
}
setup_ip()
{
str_os_type=$1
str_if_name=$2
str_v4ip=$3
str_v4mask=$4
ret=`ifconfig $str_if_name |grep "inet addr" 2>&1`
if [ $? -eq 0 ]; then
old_ip=`echo $ret|cut -d':' -f2 |cut -d' ' -f1`
old_mask=`echo $ret|cut -d':' -f4`
#echo "old ip = $old_ip, old mask=$old_mask"
if [ "$old_ip" == "$str_v4ip" -a "$old_mask" == "$str_v4mask" ]; then
#if nic is up and the address is the same, then donothing
#echo "do nothing"
exit 0
else
#bring down the nic and reconstruct it.
#echo "bring down the old nic"
ifconfig $str_if_name del $old_ip
fi
fi
if [ "$str_os_type" = "sles" ];then
str_conf_file="/etc/sysconfig/network/ifcfg-${str_if_name}"
if [ -f $str_conf_file ]; then
rm $str_conf_file
fi
echo "DEVICE=${str_if_name}" > $str_conf_file
echo "BOOTPROTO=static" >> $str_conf_file
echo "IPADDR=${str_v4ip}" >> $str_conf_file
echo "NETMASK=${str_v4mask}" >> $str_conf_file
echo "NETWORK=''" >> $str_conf_file
echo "STARTMODE=onboot" >> $str_conf_file
echo "USERCONTROL=no" >> $str_conf_file
ifup $str_if_name
#debian ubuntu
elif [ "$str_os_type" = "debian" ];then
str_conf_file="/etc/network/interfaces.d/${str_if_name}"
if [ -f $str_conf_file ]; then
rm $str_conf_file
fi
echo "auto ${str_if_name}" > $str_conf_file
echo "iface ${str_if_name} inet static" >> $str_conf_file
echo " address ${str_v4ip}" >> $str_conf_file
echo " netmask ${str_v4mask}" >> $str_conf_file
ifconfig $str_if_name up
else
# Write the info to the ifcfg file for redhat
str_conf_file="/etc/sysconfig/network-scripts/ifcfg-${str_if_name}"
if [ -f $str_conf_file ]; then
rm $str_conf_file
fi
echo "DEVICE=${str_if_name}" > $str_conf_file
echo "BOOTPROTO=static" >> $str_conf_file
echo "NM_CONTROLLED=no" >> $str_conf_file
echo "IPADDR=${str_v4ip}" >> $str_conf_file
echo "NETMASK=${str_v4mask}" >> $str_conf_file
echo "ONBOOT=yes" >> $str_conf_file
ifup $str_if_name
fi
}
#change hostname permanently
change_host_name()
{
str_os_type=$1
str_hostname=$2
hostname $str_hostname
if [ "$str_os_type" = "sles" ];then
echo "Persistently changing the hostname not implemented yet."
#debian ubuntu
elif [ "$str_os_type" = "debian" ];then
conf_file="/etc/hostname"
echo "$str_hostname" > $conf_file
else
conf_file="/etc/sysconfig/network"
if [ ! -f $conf_file ]; then
touch $conf_file
fi
grep 'HOSTNAME' $conf_file 2>&1 > /dev/null
if [ $? -eq 0 ]; then
sed -i "s/HOSTNAME=.*/HOSTNAME=$str_hostname/" $conf_file
else
echo "HOSTNAME=$str_hostname" >> $conf_file
fi
fi
}
str_os_type=$(get_os_type)
echo "os_type=$str_os_type"
if [ "$str_os_type" = "aix" ]; then
logger -t xcat "config_ops_bm_node dose not support AIX."
echo "config_ops_bm_node dose not support AIX."
exit 0
fi
#change the hostname
if [[ -n "$1" ]]; then
change_host_name $str_os_type $1
fi
#Add the openstack ip to the node
if [[ -n $2 ]]; then
ops_ip=$2
if [[ -z $3 ]]; then
logger -t xcat "config_ops_bm_node: Please specify the netmask."
echo "config_ops_bm_node: Please specify the netmask."
exit 1
else
ops_mask=$3
fi
#figure out the install nic
if [[ -n $MACADDRESS ]]; then
pos=0
#mac has the following format: 01:02:03:04:05:0E!node5|01:02:03:05:0F!node6-eth1
for x in `echo "$MACADDRESS" | tr "|" "\n"`
do
node=""
mac=""
pos=$((pos+1))
i=`expr index $x !`
if [[ $i -gt 0 ]]; then
node=`echo ${x##*!}`
mac_tmp=`echo ${x%%!*}`
else
mac_tmp=$x
fi
if [[ $pos -eq 1 ]]; then
mac1=$mac_tmp
fi
if [[ "$PRIMARYNIC" = "$mac_tmp" ]]; then
mac=$mac_tmp
break
fi
if [[ -z "$PRIMARYNIC" ]] || [[ "$PRIMARYNIC" = "mac" ]]; then
if [[ -z $node ]] || [[ "$node" = "$NODE" ]]; then
mac=$mac_tmp
break
fi
fi
done
if [[ -z $mac ]]; then
if [[ -z "$PRIMARYNIC" ]] || [[ "$PRIMARYNIC" = "mac" ]]; then
mac=$mac1 #if nothing mathes, take the first mac
else
nic=$PRIMARYNIC #or the primary nic itself is the nic
fi
fi
else
logger -t xcat "config_ops_bm_node: no mac addresses are defined in the mac table for the node $NODE"
echo "config_ops_bm_node: no mac addresses are defined in the mac table for the node $NODE"
index=$((index+1))
continue
fi
echo "mac=$mac"
#find the nic that has the mac
if [[ -z $nic ]]; then
#go to each nic to match the mac address
ret=`ifconfig |grep -i $mac 2>&1`;
if [ $? -eq 0 ]; then
nic=`echo $ret |head -n1|cut -d' ' -f 1`
else
logger -t xcat "config_ops_bm_node: The mac address for the network for $NODE is not defined."
echo "config_ops_bm_node: The mac address for the network for $NODE is not defined."
fi
fi
echo "nic=$nic"
#now setup the ip alias
setup_ip $str_os_type $nic:0 $ops_ip $ops_mask
fi
@@ -0,0 +1,94 @@
#!/bin/sh
# IBM(c) 2014 EPL license http://www.eclipse.org/legal/epl-v10.html
# xCAT post script for deconfiguring the openstack baremetal node.
# The format is:
# deconfig_ops_bm_node ops_ip
get_os_type()
{
#get os type
str_os_type=`uname | tr 'A-Z' 'a-z'`
str_temp=''
if [ "$str_os_type" = "linux" ];then
str_temp=`echo $OSVER | grep -E '(sles|suse)'`
if [ -f "/etc/debian_version" ];then
str_os_type="debian"
elif [ -f "/etc/SuSE-release" -o -n "$str_temp" ];then
str_os_type="sles"
else
str_os_type="redhat"
fi
else
str_os_type="aix"
fi
echo "$str_os_type"
}
#change hostname permanently
change_host_name()
{
str_os_type=$1
str_hostname=$2
hostname $str_hostname
if [ "$str_os_type" = "sles" ];then
echo "Persistently changing the hostname not implemented yet."
#debian ubuntu
elif [ "$str_os_type" = "debian" ];then
conf_file="/etc/hostname"
echo "$str_hostname" > $conf_file
else
conf_file="/etc/sysconfig/network"
if [ ! -f $conf_file ]; then
touch $conf_file
fi
grep 'HOSTNAME' $conf_file 2>&1 > /dev/null
if [ $? -eq 0 ]; then
sed -i "s/HOSTNAME=.*/HOSTNAME=$str_hostname/" $conf_file
else
echo "HOSTNAME=$str_hostname" >> $conf_file
fi
fi
}
str_os_type=$(get_os_type)
echo "os_type=$str_os_type"
if [ $str_os_type == "aix" ]; then
logger -t xcat "deconfig_ops_bm_node dose not support AIX."
echo "deconfig_ops_bm_node dose not support AIX."
exit 0
fi
#change the hostname
#hostname $NODE
change_host_name $str_os_type $NODE
#remove the openstack ip from the node
if [[ -n $1 ]]; then
ops_ip=$1
nic=$(ip addr | grep $ops_ip | awk '{print $NF}')
echo "nic=$nic, ops_ip=$ops_ip"
ifconfig $nic del $ops_ip
#delete the configuration file
if [ "$str_os_type" = "sles" ]; then
str_conf_file="/etc/sysconfig/network/ifcfg-$nic"
elif [ "$str_os_type" = "debian" ]; then #debian ubuntu
str_conf_file="/etc/network/interfaces.d/$nic"
else #redhat
str_conf_file="/etc/sysconfig/network-scripts/ifcfg-$nic"
fi
if [ -f $str_conf_file ]; then
rm $str_conf_file
fi
fi
@@ -0,0 +1,102 @@
Summary: Executables and data of the xCAT baremetal driver for OpenStack
Name: xCAT-OpenStack-baremetal
Version: %(cat Version)
Release: snap%(date +"%Y%m%d%H%M")
Epoch: 4
License: IBM
Group: Applications/System
Source: xCAT-OpenStack-baremetal-%{version}.tar.gz
Packager: IBM Corp.
Vendor: IBM Corp.
Distribution: %{?_distribution:%{_distribution}}%{!?_distribution:%{_vendor}}
Prefix: /opt/xcat
BuildRoot: /var/tmp/%{name}-%{version}-%{release}-root
%ifos linux
BuildArch: noarch
%endif
Provides: xCAT-OpenStack-baremetal = %{epoch}:%{version}
Requires: xCAT-client
%description
xCAT-OpenStack-baremetal provides the baremetal driver for OpenStack.
%prep
%setup -q -n xCAT-OpenStack-baremetal
%build
# Convert pods to man pages and html pages
./xpod2man
%install
# The install phase puts all of the files in the paths they should be in when the rpm is
# installed on a system. The RPM_BUILD_ROOT is a simulated root file system and usually
# has a value like: /var/tmp/xCAT-OpenStack-baremetal-2.0-snap200802270932-root
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/%{prefix}/bin
mkdir -p $RPM_BUILD_ROOT/%{prefix}/sbin
mkdir -p $RPM_BUILD_ROOT/%{prefix}/lib/perl/xCAT_plugin
mkdir -p $RPM_BUILD_ROOT/%{prefix}/lib/python/xcat/openstack/baremetal
mkdir -p $RPM_BUILD_ROOT/%{prefix}/share/xcat/openstack/postscripts
mkdir -p $RPM_BUILD_ROOT/%{prefix}/share/man/man1
mkdir -p $RPM_BUILD_ROOT/%{prefix}/share/doc/man1
set +x
cp -R lib/* $RPM_BUILD_ROOT/%{prefix}/lib
cp share/xcat/openstack/postscripts/* $RPM_BUILD_ROOT/%{prefix}/share/xcat/openstack/postscripts
# These were built dynamically in the build phase
cp share/man/man1/* $RPM_BUILD_ROOT/%{prefix}/share/man/man1
chmod 444 $RPM_BUILD_ROOT/%{prefix}/share/man/man1/*
# These were built dynamically during the build phase
cp share/doc/man1/* $RPM_BUILD_ROOT/%{prefix}/share/doc/man1
chmod 644 $RPM_BUILD_ROOT/%{prefix}/share/doc/man1/*
# These links get made in the RPM_BUILD_ROOT/prefix area
ln -sf ../bin/xcatclient $RPM_BUILD_ROOT/%{prefix}/sbin/deploy_ops_bm_node
ln -sf ../bin/xcatclient $RPM_BUILD_ROOT/%{prefix}/sbin/cleanup_ops_bm_node
ln -sf ../bin/xcatclient $RPM_BUILD_ROOT/%{prefix}/bin/opsaddbmnode
ln -sf ../bin/xcatclientnnr $RPM_BUILD_ROOT/%{prefix}/bin/opsaddimage
set -x
%clean
# This step does not happen until *after* the %files packaging below
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
#%doc LICENSE.html
# Just package everything that has been copied into RPM_BUILD_ROOT
%{prefix}
%changelog
%post
#copy the postscripts under /installl/postscripts directory on MN only
if [ -f "/etc/xCATMN" ]; then
cp $RPM_INSTALL_PREFIX0/share/xcat/openstack/postscripts/* /install/postscripts/
fi
%preun
#remove postscripts under /installl/postscripts directory on MN only
if [ -f "/etc/xCATMN" ]; then
for fn in $RPM_INSTALL_PREFIX0/share/xcat/openstack/postscripts/*
do
bn=`basename $fn`
rm /install/postscripts/$bn
done
fi
exit 0
+214
View File
@@ -0,0 +1,214 @@
#!/usr/bin/perl
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
# First builds the xCAT summary man page from Synopsis of each man page.
# Then converts all of the pod man pages into html (including links to each other)
# We assume that this script is run in the xCAT-vlan-2.0 dir, so everything is
# done relative to that.
use strict;
#use lib '.';
use Pod::Man;
use Pod::Html;
my $poddir = 'pods';
my $mandir = 'share/man';
my $htmldir = 'share/doc';
my $cachedir = '/tmp';
my @pods = getPodList($poddir);
#foreach (@pods) { print "$_\n"; } exit;
# Build the cmd overview page.
#writesummarypage("$poddir/man1/xcat.1.pod", @pods);
# Build the man page for each pod.
#mkdir($mandir) or die "Error: could not create $mandir.\n";
print "Converting PODs to man pages...\n";
foreach my $podfile (@pods) {
my $manfile = $podfile;
$manfile =~ s/^$poddir/$mandir/; # change the beginning of the path
$manfile =~ s/\.pod$//; # change the ending
my $mdir = $manfile;
$mdir =~ s|/[^/]*$||; # get rid of the basename part
if (system("mkdir -p $mdir")) { die "Error: could not create $mdir.\n"; }
my ($section) = $podfile =~ /\.(\d+)\.pod$/;
convertpod2man($podfile, $manfile, $section);
}
my @dummyPods = createDummyPods($poddir, \@pods);
# Build the html page for each pod.
#mkdir($htmldir) or die "Error: could not create $htmldir.\n";
print "Converting PODs to HTML pages...\n";
# have to clear the cache, because old entries can cause a problem
unlink("$cachedir/pod2htmd.tmp", "$cachedir/pod2htmi.tmp");
foreach my $podfile (@pods) {
my $htmlfile = $podfile;
$htmlfile =~ s/^$poddir/$htmldir/; # change the beginning of the path
$htmlfile =~ s/\.pod$/\.html/; # change the ending
my $hdir = $htmlfile;
$hdir =~ s|/[^/]*$||; # get rid of the basename part
if (system("mkdir -p $hdir")) { die "Error: could not create $hdir.\n"; }
#print "$podfile, $htmlfile, $poddir, $htmldir\n";
convertpod2html($podfile, $htmlfile, $poddir, $htmldir);
}
# Remove the dummy pods
unlink @dummyPods;
rmdir "$poddir/man7";
exit;
# To enable linking between the cmd man pages and the db man pages, need to:
# grep thru the cmd pods searching for references (L<>) to any section 5 man page
# if that pod does not exist, create an empty one that will satisfy pod2html
# keep track of all dummy pods created, so they can be removed later
sub createDummyPods {
my ($poddir, $pods) = @_;
my $cmd = "grep -r -E 'L<.+\\([57]\\)\\|.+\\.[57]>' " . $poddir;
#print "Running cmd: ", $cmd, "\n";
my @lines = `$cmd`;
if ($?) { print "Error running: $cmd\n"; print join('', @lines); }
#my @lines;
#system($cmd);
my @dummyPods;
foreach my $l (@lines) {
#print "$l\n";
my @matches = $l =~ /L<([^\(]+)\(([57])\)\|\1\.[57]>/g; # get all the matches in the line
# The above line should create the array with every other entry being the man page name
# and every other entry is the section # (5 or 7)
my $cmd;
while ($cmd=shift @matches) {
#foreach my $m (@matches) {
my $section = shift @matches;
my $filename = "$poddir/man$section/$cmd.$section.pod";
#print "$filename\n";
if (!(grep /^$filename$/, @$pods) && !(grep /^$filename$/, @dummyPods)) { push @dummyPods, $filename; }
}
}
# Create these empty files
print "Creating empty linked-to files: ", join(', ', @dummyPods), "\n";
mkdir "$poddir/man7";
foreach my $d (@dummyPods) {
if (!open(TMP, ">>$d")) { warn "Could not create dummy pod file $d ($!)\n"; }
else { close TMP; }
}
return @dummyPods;
}
# Recursively get the list of pod man page files.
sub getPodList {
my $poddir = shift;
my @files;
# 1st get toplevel dir listing
opendir(DIR, $poddir) or die "Error: could not read $poddir.\n";
my @topdir = grep !/^\./, readdir(DIR); # /
close(DIR);
# Now go thru each subdir (these are man1, man3, etc.)
foreach my $mandir (@topdir) {
opendir(DIR, "$poddir/$mandir") or die "Error: could not read $poddir/$mandir.\n";
my @dir = grep !/^\./, readdir(DIR); # /
close(DIR);
foreach my $file (@dir) {
push @files, "$poddir/$mandir/$file";
}
}
return sort @files;
}
# Create the xcat man page that gives a summary description of each xcat cmd.
# Not used
sub writesummarypage {
my $file = shift; # relative path file name of the man page
# the rest of @_ contains the pod files that describe each cmd
open(FILE, ">$file") or die "Error: could not open $file for writing.\n";
print FILE <<'EOS1';
=head1 NAME
B<xcat> - extreme Cluster Administration Tool.
=head1 DESCRIPTION
Extreme Cluster Administration Toolkit (xCAT). xCAT is a scalable distributed computing management
and provisioning tool that provides a unified interface for hardware control, discovery, and
OS diskful/diskfree deployment.
=head1 XCAT DATABASE
All of the cluster configuration information is in the xCAT database. See L<xcatdb(5)|xcatdb.5> for
descriptions of every table in the database.
=head1 XCAT COMMANDS
What follows is a short description of each xCAT command. To get more information about a particular
command, see its man page. Note that the commands are listed in alphabetical order B<within each section>,
i.e. all the commands in section 1, then the commands in section 3, etc.
=over 12
EOS1
# extract the summary for each cmd from its man page
foreach my $manpage (@_) {
my ($sectionnum) = $manpage =~ /\.(\d+)\.pod$/;
# Suck in the whole file, then we will parse it.
open(MANPAGE, "$manpage") or die "Error: could not open $manpage for reading.\n";
my @contents = <MANPAGE>;
my $wholemanpage = join('', @contents);
close(MANPAGE);
# This regex matches: optional space, =head1, space, title, space, cmd, space, description, newline
my ($cmd, $description) = $wholemanpage =~ /^\s*=head1\s+\S+\s+(\S+)\s+(.+?)\n/si;
if (!defined($cmd)) { print "Warning: $manpage is not in a recognized structure. It will be ignored.\n"; next; }
if (!defined($description)) { print "Warning: $manpage does not have a description for $cmd. It will be ignored.\n"; next; }
$cmd =~ s/^.<(.+)>$/$1/; # if the cmd name has pod formatting around it, strip it off
$description =~ s/^-\s*//; # if the description has a leading hypen, strip it off
print FILE "\n=item L<$cmd($sectionnum)|$cmd.$sectionnum>\n\n".$description."\n";
}
# Artificially add the xcattest cmd, because the xCAT-test rpm will add this
print FILE "\n=item L<xcattest(1)|xcattest.1>\n\nRun automated xCAT test cases.\n";
print FILE <<"EOS3";
=back
EOS3
close FILE;
}
# Create the html page for one pod.
sub convertpod2html {
my ($podfile, $htmlfile, $poddir, $htmldir) = @_;
#TODO: use --css=<stylesheet> and --title=<pagetitle> to make the pages look better
pod2html($podfile,
"--outfile=$htmlfile",
"--podpath=man1",
"--podroot=$poddir",
"--htmldir=$htmldir",
"--recurse",
"--cachedir=$cachedir",
);
}
# Create the man page for one pod.
sub convertpod2man {
my ($podfile, $manfile, $section) = @_;
my $parser = Pod::Man->new(section => $section);
$parser->parse_from_file($podfile, $manfile);
}
+326
View File
@@ -0,0 +1,326 @@
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 9">
<meta name=Originator content="Microsoft Word 9">
<title>Eclipse Public License - Version 1.0</title>
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Revision>2</o:Revision>
<o:TotalTime>3</o:TotalTime>
<o:Created>2004-03-05T23:03:00Z</o:Created>
<o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
<o:Pages>4</o:Pages>
<o:Words>1626</o:Words>
<o:Characters>9270</o:Characters>
<o:Lines>77</o:Lines>
<o:Paragraphs>18</o:Paragraphs>
<o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
<o:Version>9.4402</o:Version>
</o:DocumentProperties>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:TrackRevisions/>
</w:WordDocument>
</xml><![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:553679495 -2147483648 8 0 66047 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
p
{margin-right:0in;
mso-margin-top-alt:auto;
mso-margin-bottom-alt:auto;
margin-left:0in;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
p.BalloonText, li.BalloonText, div.BalloonText
{mso-style-name:"Balloon Text";
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:8.0pt;
font-family:Tahoma;
mso-fareast-font-family:"Times New Roman";}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style>
</head>
<body lang=EN-US style='tab-interval:.5in'>
<div class=Section1>
<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
</p>
<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
OF THIS AGREEMENT.</span> </p>
<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
in the case of the initial Contributor, the initial code and documentation
distributed under this Agreement, and<br clear=left>
b) in the case of each subsequent Contributor:</span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
changes to the Program, and</span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
additions to the Program;</span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
such changes and/or additions to the Program originate from and are distributed
by that particular Contributor. A Contribution 'originates' from a Contributor
if it was added to the Program by such Contributor itself or anyone acting on
such Contributor's behalf. Contributions do not include additions to the
Program which: (i) are separate modules of software distributed in conjunction
with the Program under their own license agreement, and (ii) are not derivative
works of the Program. </span></p>
<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
entity that distributes the Program.</span> </p>
<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
claims licensable by a Contributor which are necessarily infringed by the use
or sale of its Contribution alone or when combined with the Program. </span></p>
<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
distributed in accordance with this Agreement.</span> </p>
<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
receives the Program under this Agreement, including all Contributors.</span> </p>
<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
Subject to the terms of this Agreement, each Contributor hereby grants Recipient
a non-exclusive, worldwide, royalty-free copyright license to<span
style='color:red'> </span>reproduce, prepare derivative works of, publicly
display, publicly perform, distribute and sublicense the Contribution of such
Contributor, if any, and such derivative works, in source code and object code
form.</span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
Subject to the terms of this Agreement, each Contributor hereby grants
Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
patent license under Licensed Patents to make, use, sell, offer to sell, import
and otherwise transfer the Contribution of such Contributor, if any, in source
code and object code form. This patent license shall apply to the combination
of the Contribution and the Program if, at the time the Contribution is added
by the Contributor, such addition of the Contribution causes such combination
to be covered by the Licensed Patents. The patent license shall not apply to
any other combinations which include the Contribution. No hardware per se is
licensed hereunder. </span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
Recipient understands that although each Contributor grants the licenses to its
Contributions set forth herein, no assurances are provided by any Contributor
that the Program does not infringe the patent or other intellectual property
rights of any other entity. Each Contributor disclaims any liability to Recipient
for claims brought by any other entity based on infringement of intellectual
property rights or otherwise. As a condition to exercising the rights and
licenses granted hereunder, each Recipient hereby assumes sole responsibility
to secure any other intellectual property rights needed, if any. For example,
if a third party patent license is required to allow Recipient to distribute
the Program, it is Recipient's responsibility to acquire that license before
distributing the Program.</span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
Each Contributor represents that to its knowledge it has sufficient copyright
rights in its Contribution, if any, to grant the copyright license set forth in
this Agreement. </span></p>
<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
Program in object code form under its own license agreement, provided that:</span>
</p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
it complies with the terms and conditions of this Agreement; and</span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
its license agreement:</span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
effectively disclaims on behalf of all Contributors all warranties and
conditions, express and implied, including warranties or conditions of title
and non-infringement, and implied warranties or conditions of merchantability
and fitness for a particular purpose; </span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
effectively excludes on behalf of all Contributors all liability for damages,
including direct, indirect, special, incidental and consequential damages, such
as lost profits; </span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
states that any provisions which differ from this Agreement are offered by that
Contributor alone and not by any other party; and</span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
states that source code for the Program is available from such Contributor, and
informs licensees how to obtain it in a reasonable manner on or through a
medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
<p><span style='font-size:10.0pt'>When the Program is made available in source
code form:</span> </p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
it must be made available under this Agreement; and </span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
copy of this Agreement must be included with each copy of the Program. </span></p>
<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
copyright notices contained within the Program. </span></p>
<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
originator of its Contribution, if any, in a manner that reasonably allows
subsequent Recipients to identify the originator of the Contribution. </span></p>
<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
<p><span style='font-size:10.0pt'>Commercial distributors of software may
accept certain responsibilities with respect to end users, business partners
and the like. While this license is intended to facilitate the commercial use
of the Program, the Contributor who includes the Program in a commercial
product offering should do so in a manner which does not create potential
liability for other Contributors. Therefore, if a Contributor includes the
Program in a commercial product offering, such Contributor (&quot;Commercial
Contributor&quot;) hereby agrees to defend and indemnify every other
Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
legal actions brought by a third party against the Indemnified Contributor to
the extent caused by the acts or omissions of such Commercial Contributor in
connection with its distribution of the Program in a commercial product
offering. The obligations in this section do not apply to any claims or Losses
relating to any actual or alleged intellectual property infringement. In order
to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
Contributor in writing of such claim, and b) allow the Commercial Contributor
to control, and cooperate with the Commercial Contributor in, the defense and
any related settlement negotiations. The Indemnified Contributor may participate
in any such claim at its own expense.</span> </p>
<p><span style='font-size:10.0pt'>For example, a Contributor might include the
Program in a commercial product offering, Product X. That Contributor is then a
Commercial Contributor. If that Commercial Contributor then makes performance
claims, or offers warranties related to Product X, those performance claims and
warranties are such Commercial Contributor's responsibility alone. Under this
section, the Commercial Contributor would have to defend claims against the
other Contributors related to those performance claims and warranties, and if a
court requires any other Contributor to pay any damages as a result, the
Commercial Contributor must pay those damages.</span> </p>
<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
responsible for determining the appropriateness of using and distributing the
Program and assumes all risks associated with its exercise of rights under this
Agreement , including but not limited to the risks and costs of program errors,
compliance with applicable laws, damage to or loss of data, programs or
equipment, and unavailability or interruption of operations. </span></p>
<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
or unenforceable under applicable law, it shall not affect the validity or
enforceability of the remainder of the terms of this Agreement, and without
further action by the parties hereto, such provision shall be reformed to the
minimum extent necessary to make such provision valid and enforceable.</span> </p>
<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
against any entity (including a cross-claim or counterclaim in a lawsuit)
alleging that the Program itself (excluding combinations of the Program with
other software or hardware) infringes such Recipient's patent(s), then such
Recipient's rights granted under Section 2(b) shall terminate as of the date
such litigation is filed. </span></p>
<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
shall terminate if it fails to comply with any of the material terms or
conditions of this Agreement and does not cure such failure in a reasonable
period of time after becoming aware of such noncompliance. If all Recipient's
rights under this Agreement terminate, Recipient agrees to cease use and
distribution of the Program as soon as reasonably practicable. However,
Recipient's obligations under this Agreement and any licenses granted by
Recipient relating to the Program shall continue and survive. </span></p>
<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
copies of this Agreement, but in order to avoid inconsistency the Agreement is
copyrighted and may only be modified in the following manner. The Agreement
Steward reserves the right to publish new versions (including revisions) of
this Agreement from time to time. No one other than the Agreement Steward has
the right to modify this Agreement. The Eclipse Foundation is the initial
Agreement Steward. The Eclipse Foundation may assign the responsibility to
serve as the Agreement Steward to a suitable separate entity. Each new version
of the Agreement will be given a distinguishing version number. The Program
(including Contributions) may always be distributed subject to the version of
the Agreement under which it was received. In addition, after a new version of
the Agreement is published, Contributor may elect to distribute the Program
(including its Contributions) under the new version. Except as expressly stated
in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
the intellectual property of any Contributor under this Agreement, whether
expressly, by implication, estoppel or otherwise. All rights in the Program not
expressly granted under this Agreement are reserved.</span> </p>
<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
State of New York and the intellectual property laws of the United States of
America. No party to this Agreement will bring a legal action under this
Agreement more than one year after the cause of action arose. Each party waives
its rights to a jury trial in any resulting litigation.</span> </p>
<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
</div>
</body>
</html>
+411
View File
@@ -0,0 +1,411 @@
#!/usr/bin/perl
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
# Builds the xCAT-OpenStack database table man pages from the descriptions that are contained
# in the Cloud.pm schema plugin. This script is run during the build of the xCAT-OpenStack rpm, but
# is not packaged in the binary form of that rpm.
# This script is run in the xCAT-OpenStack subdir of the rpm build directory, so everything is
# done relative to that.
# The overview of what this script does is:
# - get the table descriptions from lib/perl/xCAT_schema/Clouds.pm and create a summary man page
# - iterate thru the tables in lib/perl/xCAT_schema/Clouds.pm and create pods for each
# - use the pod2man to convert them to man pages
# - use the pod2html to convert them to html pages
use strict;
use lib 'lib/perl';
use xCAT_schema::Clouds;
#use xCAT::Table;
use Pod::Man;
use Pod::Html;
my $VERBOSE = 1; # set this to 1 for debugging
my $poddir = 'pods';
my $mandir = 'share/man';
my $htmldir = 'share/doc';
my $cachedir = '/tmp';
my $poddir5 = 'pods/man5';
my $poddir7 = 'pods/man7';
if (system("mkdir -p $poddir5")) { die "Error: could not create $poddir5.\n"; }
if (system("mkdir -p $poddir7")) { die "Error: could not create $poddir7.\n"; }
# Build the DB overview page.
print "Building PODs pages for the database tables...\n";
writesummarypage("$poddir5/xcat-openstack-db.5.pod", getTableDescriptions(), getDefRef());
# Build the pod man page for each object definition
my $defspecref = getDefRef();
foreach my $defkey (keys %$defspecref) {
my $def = $defspecref->{$defkey};
my $attrs = $def->{'attrs'};
my $podfile = "$poddir7/$defkey.7.pod";
verbose("Writing pod file for $defkey");
writedefmanpage($podfile, $defkey, $attrs);
}
# Build the pod man page for each table.
my $tabspecref = getTableRef();
foreach my $tablekey (keys %$tabspecref) {
my $table = $tabspecref->{$tablekey};
my $summary = $table->{table_desc};
my $colorder = $table->{cols};
my $descriptions = $table->{descriptions};
verbose("Writing pod file for $tablekey");
writepodmanpage("$poddir5/$tablekey.5.pod", $tablekey, $summary, $colorder, $descriptions);
}
my @pods = getPodList($poddir);
verbose('Pod list:' . "@pods");
# Build the man page for each pod.
print "Converting PODs to man pages...\n";
foreach my $podfile (@pods) {
my $manfile = $podfile;
$manfile =~ s/^$poddir/$mandir/; # change the beginning of the path
$manfile =~ s/\.pod$//; # change the ending
my $mdir = $manfile;
$mdir =~ s|/[^/]*$||; # get rid of the basename part
if (system("mkdir -p $mdir")) { die "Error: could not create $mdir.\n"; }
my ($section) = $podfile =~ /\.(\d+)\.pod$/;
verbose("Converting $podfile to $manfile");
convertpod2man($podfile, $manfile, $section);
}
my @dummyPods = createDummyPods($poddir);
# Build the html page for each pod.
print "Converting PODs to HTML pages...\n";
# have to clear the cache, because old entries can cause a problem
unlink("$cachedir/pod2htmd.tmp", "$cachedir/pod2htmi.tmp");
foreach my $podfile (@pods) {
my $htmlfile = $podfile;
$htmlfile =~ s/^$poddir/$htmldir/; # change the beginning of the path
$htmlfile =~ s/\.pod$/\.html/; # change the ending
my $hdir = $htmlfile;
$hdir =~ s|/[^/]*$||; # get rid of the basename part
if (system("mkdir -p $hdir")) { die "Error: could not create $hdir.\n"; }
verbose("Converting $podfile to $htmlfile");
convertpod2html($podfile, $htmlfile, $poddir, $htmldir);
}
unlink @dummyPods;
exit;
# if VERBOSE is on, print out the given string
sub verbose { if ($VERBOSE) { print $_[0], "\n"; } }
sub getDefRef { return \%xCAT_schema::Clouds::defspec; }
sub getTableRef { return \%xCAT_schema::Clouds::tabspec; }
# Returns a list of the table names in the xCAT database.
sub getTableList { return keys %xCAT_schema::Clouds::tabspec; }
# Returns a reference to the db schema hash for the specified table.
sub getTableSchema { return $xCAT_schema::Clouds::tabspec{$_[0]}; }
# Return a reference to a hash where each key is the table name and each value is the table description.
sub getTableDescriptions {
# List each table name and the value for table_desc.
my $ret = {};
#my @a = keys %{$xCAT_schema::Clouds::tabspec{nodelist}}; print 'a=', @a, "\n";
foreach my $t (getTableList()) { $ret->{$t} = getTableSchema($t)->{table_desc}; }
return $ret;
}
# Recursively get the list of pod man page files.
sub getPodList {
my $poddir = shift;
my @files;
# 1st get toplevel dir listing
opendir(DIR, $poddir) or die "Error: could not read $poddir.\n";
my @topdir = grep !/^\./, readdir(DIR); # /
close(DIR);
# Now go thru each subdir (these are man1, man3, etc.)
foreach my $mandir (@topdir) {
opendir(DIR, "$poddir/$mandir") or die "Error: could not read $poddir/$mandir.\n";
my @dir = grep !/^\./, readdir(DIR); # /
close(DIR);
foreach my $file (@dir) {
push @files, "$poddir/$mandir/$file";
}
}
return sort @files;
}
# Create the html page for one pod.
sub convertpod2html {
my ($podfile, $htmlfile, $poddir, $htmldir) = @_;
#TODO: use --css=<stylesheet> and --title=<pagetitle> to make the pages look better
pod2html($podfile,
"--outfile=$htmlfile",
"--podpath=man5:man7",
"--podroot=$poddir",
"--htmldir=$htmldir",
"--recurse",
"--cachedir=$cachedir",
);
}
# Create the man page for one pod.
sub convertpod2man {
my ($podfile, $manfile, $section) = @_;
my $parser = Pod::Man->new(section => $section);
$parser->parse_from_file($podfile, $manfile);
}
# Create the xcat-openstack-db man page that gives a summary description of each table.
sub writesummarypage {
my $file = shift; # relative path file name of the man page
my $descriptions = shift; # a hash containing the description of each table
my $defdescriptions = shift; # a hash containing the description of each object definition
open(FILE, ">$file") or die "Error: could not open $file for writing.\n";
print FILE <<'EOS1';
=head1 NAME
An overview of the xCAT OpenStack database objects and tables.
=head1 DESCRIPTION
The xCAT OpenStack database objects and tables contain user settings for the OpenStack cloud being set up by xCAT.
To get more information about a particular table, run man for that table name.
The tables and objects can be viewed using B<tabdump>, B<nodels>, or B<lsdef>.
The tables and objects can be manipulated directly using B<tabedit>, B<nodech>, or B<chdef>.
For more information about the xCAT database and the base tables and objects, see the L<xcatdb(5)|xcatdb.5> man page.
=head1 XCAT OPENSTACK OBJECT DEFINITIONS
Because it can get confusing what attributes need to go in what tables, the xCAT database can also
be viewed and edited as logical objects, instead of flat tables. Use B<mkdef>, B<chdef>, B<lsdef>,
and B<rmdef> to create, change, list, and delete objects.
When using these commands, the object attributes will be stored in the same tables, as if you edited
the tables by hand. The only difference is that the object commands take care of knowing which tables
all of the information should go in.
To run man for any of the object definitions below, use section 7. For example: B<man 7 node>
The object types are:
=over 2
EOS1
foreach my $def (sort keys %$defdescriptions) {
if ($def eq 'node') { print FILE "\n=item L<$def(7)|node-openstack.7>\n"; } # can not overwrite the node man page in xcat-core
else { print FILE "\n=item L<$def(7)|$def.7>\n"; }
}
print FILE <<"EOS2";
=back
=head1 TABLES
To manipulate the tables directly, use B<nodels(1)>, B<chtab(8)>, B<tabdump(8)>, B<tabedit(8)>,
B<nodeadd(8)>, B<nodech(1)>.
To run man for any of the table descriptions below, use section 5. For example: B<man 5 nodehm>
The tables are:
=over 2
EOS2
foreach my $table (sort keys %$descriptions) {
print FILE "\n=item L<$table(5)|$table.5>\n\n".$descriptions->{$table}."\n";
}
print FILE <<"EOS3";
=back
=head1 SEE ALSO
B<nodels(1)>, B<chtab(8)>, B<tabdump(8)>, B<tabedit(8)>, B<lsdef(1)>, B<mkdef(1)>, B<chdef(1)>, B<rmdef(1)>
EOS3
close FILE;
}
# Create the man page for one object definition.
sub writedefmanpage {
my $file = shift; # relative path file name of the man page
my $defname = shift; # name of object
my $attrs = shift; # reference to the array of attributes
# Make exception for the node object, because we can not overwrite the node man page from xcat-core
if ($defname eq 'node') { $file = "$poddir7/node-openstack.7.pod"; }
# Go thru the attributes, collecting the descriptions
# Note: this logic is loosely taken from DBobjectdefs.pm
my %attrlist; # holds the attr name as the key, and the description & tables as value
foreach my $this_attr (@$attrs) {
my $attr = $this_attr->{attr_name};
my $desc = $this_attr->{description};
my ($table, $at) = split(/\./, $this_attr->{tabentry});
if (!defined($desc)) {
# description key not there, so go to the corresponding
# entry in tabspec to get the description
my $schema = getTableSchema($table);
$desc = $schema->{descriptions}->{$at};
}
# Attr names can appear more than once, if they are in multiple tables.
# We will keep track of that based on the table attribute, because that can be duplicated too
if (!defined($attrlist{$attr})) {
$attrlist{$attr}->{'tables'} = []; # initialize the array, so we can check it below
}
my $tableattr = "$table.$at";
if (!grep(/^$tableattr$/, @{$attrlist{$attr}->{'tables'}})) {
# there can be multiple entries that refer to the same table attribute
# if this is a new table attribute, then save the attr name and description
push @{$attrlist{$attr}->{'tables'}}, $tableattr;
push @{$attrlist{$attr}->{'descriptions'}}, $desc;
}
}
open(FILE, ">$file") or die "Error: could not open $file for writing.\n";
print FILE <<"EOS1";
=head1 NAME
B<$defname> - a logical object definition in the xCAT database.
=head1 SYNOPSIS
EOS1
print FILE "B<$defname Attributes:> I<" . join('>, I<',sort(keys(%attrlist))) . ">\n";
print FILE <<"EOS2";
=head1 DESCRIPTION
Logical objects of this type are stored in the xCAT database in one or more tables. Use the following commands
to manipulate the objects: B<mkdef>, B<chdef>, B<lsdef>, and B<rmdef>. These commands will take care of
knowing which tables the object attributes should be stored in. The attribute list below shows, in
parentheses, what tables each attribute is stored in.
=head1 $defname Attributes:
=over 6
EOS2
foreach my $a (sort keys %attrlist) {
my $d = join("\nor\n", @{$attrlist{$a}->{'descriptions'}});
$d =~ s/\n/\n\n/sg; # if there are newlines, double them so pod sees a blank line, otherwise pod will ignore them
my $t = '(' . join(', ',@{$attrlist{$a}->{'tables'}}) . ')';
#print FILE "\nB<$a> - $d\n";
print FILE "\n=item B<$a> $t\n\n$d\n";
}
print FILE <<"EOS3";
=back
EOS3
if ($defname eq 'node') {
print FILE "B<The node attributes listed above are just the ones that the xCAT-OpenStack RPM adds to the node object definition. For the rest of the node attributes from xcat-core, see the L<node(7)|node.7> man page.>\n\n";
}
print FILE <<"EOS4";
=head1 SEE ALSO
B<mkdef(1)>, B<chdef(1)>, B<lsdef(1)>, B<rmdef(1)>
EOS4
close FILE;
}
# Create the man page for one table.
sub writepodmanpage {
my $file = shift; # relative path file name of the man page
my $tablename = shift; # name of table
my $summary = shift; # description of table
my $colorder = shift; # the order in which the table attributes should be presented in
my $descriptions = shift; # a hash containing the description of each attribute
open(FILE, ">$file") or die "Error: could not open $file for writing.\n";
print FILE <<"EOS1";
=head1 NAME
B<$tablename> - a table in the xCAT database.
=head1 SYNOPSIS
EOS1
print FILE "B<$tablename Attributes:> I<" . join('>, I<',@$colorder) . ">\n";
print FILE <<"EOS2";
=head1 DESCRIPTION
$summary
=head1 $tablename Attributes:
=over 10
EOS2
foreach my $a (@$colorder) {
my $d = $descriptions->{$a};
#$d =~ s/\n/\n\n/sg; # if there are newlines, double them so pod sees a blank line, otherwise pod will ignore them
#print FILE "\nB<$a> - $d\n";
print FILE "\n=item B<$a>\n\n$d\n";
}
print FILE <<"EOS3";
=back
=head1 SEE ALSO
B<nodels(1)>, B<chtab(8)>, B<tabdump(8)>, B<tabedit(8)>
EOS3
close FILE;
}
# To enable linking between the man pages in xCAT-OpenStack and the xcat-core man pages
# we need to create an empty one that will satisfy pod2html.
# Returns all dummy pods created, so they can be removed later
sub createDummyPods {
my $poddir = shift @_;
# Also add xcattest.1.pod and buildkit.1.pod, because the xcat.1.pod summary page refers to it
push @dummyPods, "$poddir/man7/node.7.pod";
push @dummyPods, "$poddir/man5/xcatdb.5.pod";
# Create these empty files
print "Creating empty linked-to files: ", join(', ', @dummyPods), "\n";
#mkdir "$poddir/man7";
foreach my $d (@dummyPods) {
if (!open(TMP, ">>$d")) { warn "Could not create dummy pod file $d ($!)\n"; }
else { close TMP; }
}
return @dummyPods;
}
+5
View File
@@ -0,0 +1,5 @@
xcat-openstack (2.9) unstable; urgency=low
* Initial release
-- root <root@unknown> Mon, 01 Jul 2013 15:04:41 +0800
+1
View File
@@ -0,0 +1 @@
8
+14
View File
@@ -0,0 +1,14 @@
Source: xcat-openstack
Section: admin
Priority: extra
Maintainer: xCAT <xcat-user@lists.sourceforge.net>
Build-Depends: debhelper (>= 8.0.0)
Standards-Version: 3.9.2
#Vcs-Git: git://git.debian.org/collab-maint/xcat-openstack.git
#Vcs-Browser: http://git.debian.org/?p=collab-maint/xcat-openstack.git;a=summary
Package: xcat-openstack
Architecture: all
Depends: xcat
Description: Meta-Metapackage for a common, default xCAT management node setup with OpenStack
xCAT-OpenStack is an xCAT management node package intended for at-scale management with OpenStack, including hardware management and software management.
+88
View File
@@ -0,0 +1,88 @@
Eclipse Public License - v 1.0
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
1. DEFINITIONS
"Contribution" means:
a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
b) in the case of each subsequent Contributor:
i) changes to the Program, and
ii) additions to the Program;
where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
"Contributor" means any person or entity that distributes the Program.
"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
"Program" means the Contributions distributed in accordance with this Agreement.
"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
2. GRANT OF RIGHTS
a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
3. REQUIREMENTS
A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
a) it complies with the terms and conditions of this Agreement; and
b) its license agreement:
i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
When the Program is made available in source code form:
a) it must be made available under this Agreement; and
b) a copy of this Agreement must be included with each copy of the Program.
Contributors may not remove or alter any copyright notices contained within the Program.
Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
4. COMMERCIAL DISTRIBUTION
Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
5. NO WARRANTY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
6. DISCLAIMER OF LIABILITY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. GENERAL
If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+11
View File
@@ -0,0 +1,11 @@
opt/xcat/lib/perl/xCAT_schema
opt/xcat/lib/perl/xCAT_plugin
opt/xcat/lib/perl/xCAT
opt/xcat/share/xcat/mypostscript
opt/xcat/share/xcat/templates
opt/xcat/sbin
opt/xcat/share/man/man5
opt/xcat/share/doc/man5
opt/xcat/share/man/man7
opt/xcat/share/doc/man7
install/postscripts
+10
View File
@@ -0,0 +1,10 @@
lib/perl/xCAT_schema/* opt/xcat/lib/perl/xCAT_schema/
lib/perl/xCAT_plugin/* opt/xcat/lib/perl/xCAT_plugin/
lib/perl/xCAT/* opt/xcat/lib/perl/xCAT/
sbin/* opt/xcat/sbin/
share/man/man5/* opt/xcat/share/man/man5/
share/doc/man5/* opt/xcat/share/doc/man5/
share/man/man7/* opt/xcat/share/man/man7/
share/doc/man7/* opt/xcat/share/doc/man7/
postscripts/* install/postscripts/
share/xcat/* opt/xcat/share/xcat/
+44
View File
@@ -0,0 +1,44 @@
#!/bin/sh
# postinst script for xCAT
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
configure)
if [ -f "/proc/cmdline" ];then
if [ -f "/opt/xcat/sbin/xcatd" ];then
/etc/init.d/xcatd reload
fi
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0
+53
View File
@@ -0,0 +1,53 @@
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
build:
pwd
clean:
dh_testdir
dh_testroot
dh_clean -d
install:
pwd
dh_testdir
dh_testroot
dh_installdirs
`pwd`/db2man
dh_install -X".svn"
chmod 755 `pwd`/debian/xcat-openstack/opt/xcat/lib/perl/xCAT_schema
chmod 644 `pwd`/debian/xcat-openstack/opt/xcat/lib/perl/xCAT_schema/*
chmod 644 `pwd`/debian/xcat-openstack/opt/xcat/lib/perl/xCAT_plugin/*
chmod 644 `pwd`/debian/xcat-openstack/opt/xcat/lib/perl/xCAT/*
chmod 755 `pwd`/debian/xcat-openstack/opt/xcat/sbin/*
chmod 644 `pwd`/debian/xcat-openstack/opt/xcat/share/man/man5/*
chmod 644 `pwd`/debian/xcat-openstack/opt/xcat/share/doc/man5/*
chmod 644 `pwd`/debian/xcat-openstack/opt/xcat/share/man/man7/*
chmod 644 `pwd`/debian/xcat-openstack/opt/xcat/share/doc/man7/*
chmod 755 `pwd`/debian/xcat-openstack/install/postscripts/*
chmod 644 `pwd`/debian/xcat-openstack/opt/xcat/share/xcat/*
dh_link
binary-indep: build install
pwd
export
dh_installman
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
binary-arch:
pwd
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure
+1
View File
@@ -0,0 +1 @@
1.0
+168
View File
@@ -0,0 +1,168 @@
# IBM(c) 2013 EPL license http://www.eclipse.org/legal/epl-v10.html
package xCAT::Cloud;
BEGIN
{
$::XCATROOT =
$ENV{'XCATROOT'} ? $ENV{'XCATROOT'}
: -d '/opt/xcat' ? '/opt/xcat'
: '/usr';
}
use lib "$::XCATROOT/lib/perl";
use xCAT::Table;
use xCAT::MsgUtils;
use xCAT::NodeRange;
use xCAT::Utils;
use xCAT::TableUtils;
#use Data::Dumper;
use strict;
#-----------------------------------------------------------------------------
=head3 getcloudinfo
This function will be invoked by Postage.pm.
get the chef cookbook repository for each cloud from the clouds table, and
then get all the node --> cloud from the cloud table. The two type information
will be stored in the %info
If success, return the \%info.
Arguments:
none
Returns:
\%info
Error:
none
Example:
Comments:
none
=cut
#-----------------------------------------------------------------------------
sub getcloudinfo
{
my %info = ();
my $tab = "clouds";
my $ptab = xCAT::Table->new($tab);
unless ($ptab) {
xCAT::MsgUtils->message("E", "Unable to open $tab table");
return undef;
}
my @rs = $ptab->getAllAttribs('name','repository', 'pubinterface');
foreach my $r ( @rs ) {
my $cloud = $r->{'name'};
my $repos = $r->{'repository'};
my $pubinterface = $r->{'pubinterface'};
$info{ $cloud }{repository} = $repos;
$info{ $cloud }{pubinterface} = $pubinterface;
}
$tab = "cloud";
$ptab = xCAT::Table->new($tab);
unless ($ptab) {
xCAT::MsgUtils->message("E", "Unable to open $tab table");
return undef;
}
@rs = $ptab->getAllAttribs('node','cloudname');
my $pre;
my $curr;
foreach my $r ( @rs ) {
my $node = $r->{'node'};
my $cloud = $r->{'cloudname'};
$info{ $node }{cloud} = $cloud;
}
return \%info;
}
#-----------------------------------------------------------------------------
=head3 getcloudres
This function will be invoked by Postage.pm. And it's only for one chef-server.
1. get the chef cookbook repository for the clouds on one chef-server.
All the clouds's repositoryies on one chef-server should be the same one.
2. get the cloud list for one chef-server
3. get the cloud name for each node on the same chef-server
Arguments:
$cloudinfo_hash -- This is from the getcloudinfo function.
$clients -- an array which stores different cloud nodes(chef-client)
Returns:
$cloudres -- a string including cloud information
Error:
none
Example:
Comments:
none
=cut
#-----------------------------------------------------------------------------
sub getcloudres
{
my $cloudinfo_hash = shift;
my $node = shift;
my $clients = shift;
my $cloudres;
my $cloudlist;
my $repos;
if( @$clients == 0 ) {
#This should not be a chef-server, and it's a chef-client
if( defined($cloudinfo_hash) && defined($cloudinfo_hash->{$node}) ) {
my $cloud=$cloudinfo_hash->{$node}->{cloud};
my $pubinterface=$cloudinfo_hash->{$cloud}->{pubinterface};
$cloudres="PUBINTERFACE='$pubinterface'\nexport PUBINTERFACE\n";
}
return $cloudres;
}
foreach my $client (@$clients) {
my $cloud;
if( defined($cloudinfo_hash) && defined($cloudinfo_hash->{$client}) ) {
$cloud = $cloudinfo_hash->{$client}->{cloud};
}
#$cloudres .= "hput $client cloud $cloud\n";
$cloudres .= "HASH".$client."cloud='$cloud'\nexport HASH".$client."cloud\n";
if( defined($cloud) ) {
if ( $cloudlist !~ $cloud ) {
$cloudlist .="$cloud,";
}
}
my $t = $cloudinfo_hash->{$cloud}->{repository};
if( !defined($repos) && defined($t) ) {
$repos = $t;
}
if( defined($repos) && ( $repos != $t && "$repos/" != $t && $repos != "$t/" ) ) {
xCAT::MsgUtils->message("E", "Two cloud repositories: $repos and $t.\n There should be only one cloud repository one ont chef-server.");
return undef;
}
}
chop $cloudlist;
$cloudres = "REPOSITORY='$repos'\nexport REPOSITORY\nCLOUDLIST='$cloudlist'\nexport CLOUDLIST\n$cloudres";
return $cloudres;
}
1;
@@ -0,0 +1,198 @@
# IBM(c) 2010 EPL license http://www.eclipse.org/legal/epl-v10.html
package xCAT_plugin::cloud;
BEGIN
{
$::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
}
use lib "$::XCATROOT/lib/perl";
use strict;
use xCAT::Table;
use Getopt::Long;
Getopt::Long::Configure("bundling");
Getopt::Long::Configure("pass_through");
#use xCAT::Utils;
#use xCAT::TableUtils;
use xCAT::Template;
sub handled_commands
{
return {makeclouddata => "cloud",};
}
############################################################
# check_options will process the options for makeclouddata and
# give a usage error for any invalid options
############################################################
sub check_options
{
my $req = shift;
my $callback = shift;
my $rc = 0;
Getopt::Long::Configure("bundling");
$Getopt::Long::ignorecase = 0;
Getopt::Long::Configure("no_pass_through");
# Exit if the packet has been preprocessed
if ($req->{_xcatpreprocessed}->[0] == 1) { return [$req]; }
# Save the arguements in ARGV for GetOptions
if ($req && $req->{arg}) { @ARGV = @{$req->{arg}}; }
else { @ARGV = (); }
# Parse the options for makedhcp
if (!GetOptions(
'h|help' => \$::opt_h,
))
{
# If the arguements do not pass GetOptions then issue error message and return
return -1;
}
# display the usage if -h
if ($::opt_h)
{
return 1;
}
my $cloudlist =shift( @ARGV );
if( defined($cloudlist) ) {
my @clouds = split(",", $cloudlist);
$req->{clouds} = \@clouds;
}
return 0;
}
sub cloudvars {
my $inf = shift;
my $outf = shift;
my $cloud = shift;
my $callback = shift;
my $outh;
my $inh;
open($inh,"<",$inf);
unless ($inh) {
my $rsp;
$rsp->{errorcode}->[0]=1;
$rsp->{error}->[0]="Unable to open $inf, aborting\n";
$callback->($rsp);
return;
}
my $inc;
#First load input into memory..
while (<$inh>) {
$inc.=$_;
}
close($inh);
$inc =~ s/\$CLOUD/$cloud/eg;
$inc =~ s/#TABLE:([^:]+):([^:]+):([^#]+)#/xCAT::Template::tabdb($1,$2,$3)/eg;
open($outh,">",$outf);
unless($outh) {
my $rsp;
$rsp->{errorcode}->[0]=1;
$rsp->{error}->[0]="Unable to open $inf, aborting\n";
$callback->($rsp);
return;
}
print $outh $inc;
close($outh);
return 0;
}
sub process_request
{
my $req = shift;
my $callback = shift;
my $rc = 0;
# define usage statement
my $usage="Usage: \n\tmkcloudata\n\tmakeclouddata <cloudname>\n\tmakeclouddata [-h|--help]";
$rc = check_options($req,$callback);
if ($rc == -1) {
my $rsp = {};
$rsp->{data}->[0] = $usage;
xCAT::MsgUtils->message("E", $rsp, $callback, 1);
return;
} elsif ($rc == 1) {
my $rsp = {};
$rsp->{data}->[0] = $usage;
xCAT::MsgUtils->message("I", $rsp, $callback, 0);
return;
}
my $tab = "clouds";
my $ptab = xCAT::Table->new("$tab");
unless ($ptab) {
my $rsp;
$rsp->{errorcode}->[0]=1;
$rsp->{error}->[0]="Unable to open $tab table";
$callback->($rsp);
return;
}
my $t = $req->{clouds};
my %h;
if( defined(@$t) ) {
%h = map { $_ => 1} @$t;
}
my @cloudentries = $ptab->getAllAttribs('name', 'template', 'repository');
foreach my $cloudentry (@cloudentries) {
my $cloud = $cloudentry->{name};
if( %h ) {
# if makeclouddata <cloudA>, and
if( $h{$cloud} != 1) {
next;
}
}
my $tmplfile = $cloudentry->{template};
my $repos = $cloudentry->{repository};
unless ( -r "$tmplfile") {
my $rsp;
$rsp->{errorcode}->[0]=1;
$rsp->{error}->[0]="The environment template for the cloud $cloud doesn't exist. Please check the clouds table";
$callback->($rsp);
next;
}
unless ( -r "$repos") {
my $rsp;
$rsp->{errorcode}->[0]=1;
$rsp->{error}->[0]="The repository $repos for the cloud $cloud doesn't exist. Pleae check the clouds table.";
$callback->($rsp);
next;
}
unless ( -d "$repos/environments") {
mkdir("$repos/environments", 0777);
}
my $tmperr = cloudvars(
$tmplfile,
"$repos/environments/$cloud.rb",
$cloud,
$callback
);
}
return;
}
1;
+111
View File
@@ -0,0 +1,111 @@
# IBM(c) 2013 EPL license http://www.eclipse.org/legal/epl-v10.html
package xCAT_schema::Clouds;
################################################################################
#
# xCAT database Schema for representing OpenStack clouds in an xCAT cluster
#
################################################################################
%tabspec = (
clouds => {
cols => [qw(name controller hostip pubinterface mgtinterface datainterface template repository virttype comments disable)], #do not change 'disable' and 'comments', it is required by xCAT
keys => [qw(name)],
required => [qw(name)],
table_desc => 'OpenStack clouds managed by this xCAT cluster',
descriptions => {
name => 'The name of the cloud. This is referred to by the nodes in the cloud table.',
controller => 'The xCAT node name of the controller node',
hostip => 'The host IP is in openstack management network on the controller node. It is always the rabbitmq host IP and nova_metadata_ip.',
pubinterface => 'Interface to use for external bridge. The default value is eth1.',
mgtinterface => 'Interface to use for openstack management. It is supposed that the mgtinterface for all the nodes are the same, and in the same network.',
datainterface => 'Interface to use for OpenStack nova vm communication. It is supposed that the datainterface for all the nodes are the same, and in the same network.',
template => 'Every cloud should be related to one environment template file. The absolute path is required.',
repository => 'Every could should be related to the openstack-chef-cookbooks. The absolute path is required. In the repository, there are cookbooks, environments, roles and on on.',
virttype => 'What hypervisor software layer to use with libvirt (e.g., kvm, qemu).',
comments => 'Any user-written notes.',
disable => "Set to 'yes' or '1' to comment out this row.",
},
},
cloud => {
cols => [qw(node cloudname comments disable)],
keys => [qw(node)],
required => [qw(node cloudname)],
table_desc => 'xCAT nodes that are used in OpenStack clouds',
descriptions => {
node=> 'The xCAT node name',
cloudname => 'The name of the cloud in the xCAT clouds table that is using this node',
comments => 'Any user-written notes.',
disable => "Set to 'yes' or '1' to comment out this row.",
},
},
); # end of tabspec definition
##################################################################
#
# Cloud object and attributes for *def commands
#
##################################################################
# cloud object
%defspec = (
cloud => { attrs => [], attrhash => {}, objkey => 'name' },
);
# cloud attributes
@{$defspec{cloud}->{'attrs'}} =
(
{ attr_name => 'name',
tabentry => 'clouds.name',
access_tabentry => 'clouds.name=attr:name',
},
{ attr_name => 'controller',
tabentry => 'clouds.controller',
access_tabentry => 'clouds.name=attr:name',
},
{ attr_name => 'hostip',
tabentry => 'clouds.hostip',
access_tabentry => 'clouds.name=attr:name',
},
{ attr_name => 'pubinterface',
tabentry => 'clouds.pubinterface',
access_tabentry => 'clouds.name=attr:name',
},
{ attr_name => 'mgtinterface',
tabentry => 'clouds.mgtinterface',
access_tabentry => 'clouds.name=attr:name',
},
{ attr_name => 'datainterface',
tabentry => 'clouds.datainterface',
access_tabentry => 'clouds.name=attr:name',
},
{ attr_name => 'template',
tabentry => 'clouds.template',
access_tabentry => 'clouds.name=attr:name',
},
{ attr_name => 'repository',
tabentry => 'clouds.repository',
access_tabentry => 'clouds.name=attr:name',
},
{ attr_name => 'virttype',
tabentry => 'clouds.virttype',
access_tabentry => 'clouds.name=attr:name',
}
);
# node attributes for clouds
@{$defspec{node}->{'attrs'}} =
(
{ attr_name => 'cloud',
tabentry => 'cloud.cloudname',
access_tabentry => 'cloud.node=attr:node',
},
);
1;
+61
View File
@@ -0,0 +1,61 @@
#!/bin/sh
bridge_name="br-ex"
pubinterface=$PUBINTERFACE
#pubinterface="eth0"
if [ -z "pubinterface" ]
then
errmsg="no pubinterface setting for the $NODE's cloudname in clouds table"
logger -t xcat -p local4.err $errmsg
echo $errmsg
exit -1
fi
ifconfig $pubinterface 0
pubinterface=`echo $pubinterface | sed 's/^ \+//' | sed 's/ \+$//'`
str_value=$(hashget hash_defined_nics $pubinterface)
old_ifs=$IFS
IFS=$','
array_temp=($str_value)
IFS=$old_ifs
if [ -n "${array_temp[1]}" ];then
str_nic_type=`echo ${array_temp[1]} | tr "[A-Z]" "[a-z]"`
else
if [ `echo $pubinterface | grep -E '(eth|en)[0-9]+'` ];then
str_nic_type="ethernet"
else
errmsg="currently, it only supports eth|en, instead of $pubinterface."
logger -t xcat -p local4.err $errmsg
echo $errmsg
exit -1;
fi
fi
str_network=$(checknetwork ${array_temp[0]})
if [ -z "$str_network" ];then
logger -t xcat -p local4.info "configbr-ex: could not find the network for $bridge_name which is based on $pubinterface. Please check the networks and nics tables."
echo "configbr-ex: could not find the network for $bridge_name which is based on $pubinterface. Please check the networks and nics tables."
exit -1
fi
#configeth $bridge_name ${array_temp[0]} ${array_temp[2]}
configeth $bridge_name ${array_temp[0]} $str_network
if [ $? -ne 0 ];then
logger -t xcat -p local4.info "configbr-ex failed to configure $bridge_name : configeth $bridge_name ${array_temp[0]} $str_network"
echo "confignics: configbr-ex failed to configure $bridge_name : configeth $bridge_name ${array_temp[0]} $str_network"
exit -1
fi
. ./configgw $bridge_name
if [ $? -ne 0 ];then
logger -t xcat -p local4.info "configgw failed to configure gateway for $bridge_name."
echo "configgw failed to configure gateway for $bridge_name."
exit -1
fi
exit 0

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