diff --git a/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/buildkit.conf b/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/buildkit.conf new file mode 100644 index 000000000..94a5bff70 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/buildkit.conf @@ -0,0 +1,300 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=vacpp + description=VACPP12 for Linux + version=12.1.0.0 + ostype=Linux +# kitdeployparams=sample/kitdeployparams.lst + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 ppc64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., ppc64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + +kitrepo: + kitrepoid=sles11_ppc64 + osbasename=sles + osmajorversion=11 + osarch=ppc64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdpes=libstdc++(ppc-32),libstdc++(ppc-64),libstdc++-devel(ppc-32),libstdc++-devel(ppc-64),glibc-devel(ppc-32),glibc-devel(ppc-64) (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=vacpp_compute + description=VACPP12 for compute nodes + version=12.1.0.0 + release=120323 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdpes=libstdc++(ppc-32),libstdc++(ppc-64),libstdc++-devel(ppc-32),libstdc++-devel(ppc-64),glibc-devel(ppc-32),glibc-devel(ppc-64)libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=vac.cmp >= 12.1.0.0,vac.lib >= 12.1.0.0,vac.lic >= 12.1.0.0,vacpp.cmp >= 12.1.0.0,vacpp.help.pdf >= 12.1.0.0,vacpp.lib >= 12.1.0.0,vacpp.man >= 12.1.0.0,vacpp.rte >= 12.1.0.0,vacpp.rte.lnk >= 12.1.0.0,vacpp.samples >= 12.1.0.0 + exlist=vacpp.exlist + postbootscripts=vacpp_license + +kitcomponent: + basename=vacpp_loginnode + description=VACPP12 for login nodes + version=12.1.0.0 + release=120323 + serverroles=loginnode + kitrepoid=rhels6_ppc64 + ospkgdpes=libstdc++(ppc-32),libstdc++(ppc-64),libstdc++-devel(ppc-32),libstdc++-devel(ppc-64),glibc-devel(ppc-32),glibc-devel(ppc-64)libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=vac.cmp >= 12.1.0.0,vac.lib >= 12.1.0.0,vac.lic >= 12.1.0.0,vacpp.cmp >= 12.1.0.0,vacpp.help.pdf >= 12.1.0.0,vacpp.lib >= 12.1.0.0,vacpp.man >= 12.1.0.0,vacpp.rte >= 12.1.0.0,vacpp.rte.lnk >= 12.1.0.0,vacpp.samples >= 12.1.0.0 + exlist=vacpp.exlist + postbootscripts=vacpp_license + +kitcomponent: + basename=min_vacpp_compute + description=Minimal VACPP12 packages for compute nodes + version=12.1.0.0 + release=120323 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdpes=libstdc++(ppc-32),libstdc++(ppc-64),libstdc++-devel(ppc-32),libstdc++-devel(ppc-64),glibc-devel(ppc-32),glibc-devel(ppc-64)libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=vacpp.rte >= 12.1.0.0,vacpp.rte.lnk >= 12.1.0.0 + exlist=vacpp.exlist + postbootscripts=vacpp_license + +kitcomponent: + basename=vacpp_compute + description=VACPP12 for compute nodes + version=12.1.0.0 + release=120323 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdpes=libstdc++(ppc-32),libstdc++(ppc-64),libstdc++-devel(ppc-32),libstdc++-devel(ppc-64),glibc-devel(ppc-32),glibc-devel(ppc-64)libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=vac.cmp >= 12.1.0.0,vac.lib >= 12.1.0.0,vac.lic >= 12.1.0.0,vacpp.cmp >= 12.1.0.0,vacpp.help.pdf >= 12.1.0.0,vacpp.lib >= 12.1.0.0,vacpp.man >= 12.1.0.0,vacpp.rte >= 12.1.0.0,vacpp.rte.lnk >= 12.1.0.0,vacpp.samples >= 12.1.0.0 + exlist=vacpp.exlist + postbootscripts=vacpp_license + +kitcomponent: + basename=vacpp_loginnode + description=VACPP12 for login nodes + version=12.1.0.0 + release=120323 + serverroles=loginnode + kitrepoid=sles11_ppc64 + ospkgdpes=libstdc++(ppc-32),libstdc++(ppc-64),libstdc++-devel(ppc-32),libstdc++-devel(ppc-64),glibc-devel(ppc-32),glibc-devel(ppc-64)libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=vac.cmp >= 12.1.0.0,vac.lib >= 12.1.0.0,vac.lic >= 12.1.0.0,vacpp.cmp >= 12.1.0.0,vacpp.help.pdf >= 12.1.0.0,vacpp.lib >= 12.1.0.0,vacpp.man >= 12.1.0.0,vacpp.rte >= 12.1.0.0,vacpp.rte.lnk >= 12.1.0.0,vacpp.samples >= 12.1.0.0 + exlist=vacpp.exlist + postbootscripts=vacpp_license + +kitcomponent: + basename=min_vacpp_compute + description=Minimal VACPP12 packages for compute nodes + version=12.1.0.0 + release=120323 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdpes=libstdc++(ppc-32),libstdc++(ppc-64),libstdc++-devel(ppc-32),libstdc++-devel(ppc-64),glibc-devel(ppc-32),glibc-devel(ppc-64)libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=vacpp.rte >= 12.1.0.0,vacpp.rte.lnk >= 12.1.0.0 + exlist=vacpp.exlist + postbootscripts=vacpp_license + + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=yes, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=vac.cmp-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=vac.lib-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=vac.lic-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=vacpp.cmp-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=vacpp.help.pdf-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=vacpp.lib-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=vacpp.man-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=vacpp.rte-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=vacpp.rte.lnk-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=vacpp.samples-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + diff --git a/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/other_files/vacpp.exlist b/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/other_files/vacpp.exlist new file mode 100755 index 000000000..18b4e5c98 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/other_files/vacpp.exlist @@ -0,0 +1,14 @@ +./opt/ibmcmp/msg/* ++./opt/ibmcmp/msg/en_US* + +./opt/ibmcmp/vac/*/crt/include* +./opt/ibmcmp/vac/*/include* +./opt/ibmcmp/vac/*/msg/* ++./opt/ibmcmp/vac/*/msg/en_US* +./opt/ibmcmp/vac/*/lap/LI_* +./opt/ibmcmp/vac/*/lap/LA_* +./opt/ibmcmp/vac/*/lap/license/*.txt + +./opt/ibmcmp/vacpp/*/include* +./opt/ibmcmp/vacpp/*/msg/* ++./opt/ibmcmp/vacpp/*/msg/en_US* diff --git a/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/scripts/vacpp_license b/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/scripts/vacpp_license new file mode 100755 index 000000000..fe59c8ba4 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/partial_vacpp12-Linux/scripts/vacpp_license @@ -0,0 +1,21 @@ +#!/bin/sh + +# +# Sample script to accept licenses for the IBM vacpp and xlf compilers +# For AIX: +# do nothing, license accepted with installp -Y flag +# For Linux: +# Assumes all compiler software has been installed + + +OS=`uname` +if [ $OS != "AIX" ]; then + vacpp_script=`find /opt/ibmcmp/vacpp -name new_install -print` + + if [ -n "$vacpp_script" ] ; then + echo 1 | $vacpp_script + fi + +fi + + diff --git a/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/buildkit.conf b/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/buildkit.conf new file mode 100644 index 000000000..28c895326 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/buildkit.conf @@ -0,0 +1,321 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=xlf + description=XLF14 for Linux + version=14.1.0.0 + ostype=Linux +# kitdeployparams=sample/kitdeployparams.lst + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 ppc64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., ppc64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + +kitrepo: + kitrepoid=sles11_ppc64 + osbasename=sles + osmajorversion=11 + osarch=ppc64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=xlf_compute + description=XLF14 for compute nodes + version=14.1.0.0 + release=120323 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdeps=libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=xlmass.lib >= 7.1.0.0,xlsmp.msg.rte >= 3.1.0.0,xlsmp.rte >= 3.1.0.0,xlsmp.lib >= 3.1.0.0,xlf.msg.rte >= 14.1.0.0,xlf.rte >= 14.1.0.0,xlf.rte.lnk >= 14.1.0.0,xlf.lib >= 14.1.0.0,xlf.cmp >= 14.1.0.0,xlf.help.pdf >= 14.1.0.0,xlf.samples >= 14.1.0.0,xlf.man >= 14.1.0.0,xlf.lic >= 14.1.0.0 + exlist=xlf.exlist + postbootscripts=xlf_license + +kitcomponent: + basename=xlf_loginnode + description=XLF14 for login nodes + version=14.1.0.0 + release=120323 + serverroles=loginnode + kitrepoid=rhels6_ppc64 + ospkgdeps=libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=xlmass.lib >= 7.1.0.0,xlsmp.msg.rte >= 3.1.0.0,xlsmp.rte >= 3.1.0.0,xlsmp.lib >= 3.1.0.0,xlf.msg.rte >= 14.1.0.0,xlf.rte >= 14.1.0.0,xlf.rte.lnk >= 14.1.0.0,xlf.lib >= 14.1.0.0,xlf.cmp >= 14.1.0.0,xlf.help.pdf >= 14.1.0.0,xlf.samples >= 14.1.0.0,xlf.man >= 14.1.0.0,xlf.lic >= 14.1.0.0 + exlist=xlf.exlist + postbootscripts=xlf_license + +kitcomponent: + basename=min_xlf_compute + description=Minimal XLF14 packages for compute nodes + version=14.1.0.0 + release=120323 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdeps=libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=xlsmp.msg.rte >= 3.1.0.0,xlsmp.rte >= 3.1.0.0,xlf.msg.rte >= 14.1.0.0,xlf.rte >= 14.1.0.0,xlf.rte.lnk >= 14.1.0.00 + exlist=xlf.exlist + postbootscripts=xlf_license + + +kitcomponent: + basename=xlf_compute + description=XLF14 for compute nodes + version=14.1.0.0 + release=120323 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdeps=libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=xlmass.lib >= 7.1.0.0,xlsmp.msg.rte >= 3.1.0.0,xlsmp.rte >= 3.1.0.0,xlsmp.lib >= 3.1.0.0,xlf.msg.rte >= 14.1.0.0,xlf.rte >= 14.1.0.0,xlf.rte.lnk >= 14.1.0.0,xlf.lib >= 14.1.0.0,xlf.cmp >= 14.1.0.0,xlf.help.pdf >= 14.1.0.0,xlf.samples >= 14.1.0.0,xlf.man >= 14.1.0.0,xlf.lic >= 14.1.0.0 + exlist=xlf.exlist + postbootscripts=xlf_license + +kitcomponent: + basename=xlf_loginnode + description=XLF14 for login nodes + version=14.1.0.0 + release=120323 + serverroles=loginnode + kitrepoid=sles11_ppc64 + ospkgdeps=libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=xlmass.lib >= 7.1.0.0,xlsmp.msg.rte >= 3.1.0.0,xlsmp.rte >= 3.1.0.0,xlsmp.lib >= 3.1.0.0,xlf.msg.rte >= 14.1.0.0,xlf.rte >= 14.1.0.0,xlf.rte.lnk >= 14.1.0.0,xlf.lib >= 14.1.0.0,xlf.cmp >= 14.1.0.0,xlf.help.pdf >= 14.1.0.0,xlf.samples >= 14.1.0.0,xlf.man >= 14.1.0.0,xlf.lic >= 14.1.0.0 + exlist=xlf.exlist + postbootscripts=xlf_license + +kitcomponent: + basename=min_xlf_compute + description=Minimal XLF14 packages for compute nodes + version=14.1.0.0 + release=120323 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdeps=libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=xlsmp.msg.rte >= 3.1.0.0,xlsmp.rte >= 3.1.0.0,xlf.msg.rte >= 14.1.0.0,xlf.rte >= 14.1.0.0,xlf.rte.lnk >= 14.1.0.00 + exlist=xlf.exlist + postbootscripts=xlf_license + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=yes, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=xlf.cmp-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=xlf.help.pdf-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=xlf.lib-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=xlf.lic-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=xlf.man-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=xlf.msg.rte-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=xlf.rte-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=xlf.rte.lnk-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=xlf.samples-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=xlmass.lib-7.1.0.0-120322.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=xlsmp.lib-3.1.0.0-120315a.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=xlsmp.msg.rte-3.1.0.0-120315a.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=xlsmp.rte-3.1.0.0-120315a.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + diff --git a/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/other_files/xlf.exlist b/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/other_files/xlf.exlist new file mode 100755 index 000000000..e5cfe3931 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/other_files/xlf.exlist @@ -0,0 +1,14 @@ +./opt/ibmcmp/msg/* ++./opt/ibmcmp/msg/en_US* + +./opt/ibmcmp/xlmass/*/include* +./opt/ibmcmp/xlsmp/*/include* +./opt/ibmcmp/xlhelp* + +./opt/ibmcmp/xlf/*/include* +./opt/ibmcmp/xlf/*/msg/* ++./opt/ibmcmp/xlf/*/msg/en_US* +./opt/ibmcmp/xlf/*/lap/LA_* +./opt/ibmcmp/xlf/*/lap/LI_* +./opt/ibmcmp/xlf/*/lap/license/*.txt + diff --git a/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/scripts/xlf_license b/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/scripts/xlf_license new file mode 100755 index 000000000..9711ed972 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/partial_xlf14-Linux/scripts/xlf_license @@ -0,0 +1,19 @@ +#!/bin/sh + +# +# Sample script to accept licenses for the IBM vacpp and xlf compilers +# For Linux: +# Assumes all compiler software has been installed + +OS=`uname` +if [ $OS != "AIX" ]; then + xlf_script=`find /opt/ibmcmp/xlf -name new_install -print` + + # Being run from a stateful install postscript or stateless postbootscript. + if [ -n "$xlf_script" ] ; then + echo 1 | $xlf_script + fi + +fi + + diff --git a/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/buildkit.conf b/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/buildkit.conf new file mode 100644 index 000000000..328fc0fd2 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/buildkit.conf @@ -0,0 +1,299 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=vacpp + description=VACPP12 for Linux + version=12.1.0.0 + ostype=Linux +# kitdeployparams=sample/kitdeployparams.lst + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 ppc64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., ppc64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + +kitrepo: + kitrepoid=sles11_ppc64 + osbasename=sles + osmajorversion=11 + osarch=ppc64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=vacpp_compute + description=VACPP12 for compute nodes + version=12.1.0.0 + release=120323 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdeps=libstdc++(ppc-32),libstdc++(ppc-64),libstdc++-devel(ppc-32),libstdc++-devel(ppc-64),glibc-devel(ppc-32),glibc-devel(ppc-64) + kitpkgdeps=vac.cmp >= 12.1.0.0,vac.lib >= 12.1.0.0,vac.lic >= 12.1.0.0,vacpp.cmp >= 12.1.0.0,vacpp.help.pdf >= 12.1.0.0,vacpp.lib >= 12.1.0.0,vacpp.man >= 12.1.0.0,vacpp.rte >= 12.1.0.0,vacpp.rte.lnk >= 12.1.0.0,vacpp.samples >= 12.1.0.0 + exlist=vacpp.exlist + postbootscripts=vacpp_license + +kitcomponent: + basename=vacpp_loginnode + description=VACPP12 for login nodes + version=12.1.0.0 + release=120323 + serverroles=loginnode + kitrepoid=rhels6_ppc64 + ospkgdeps=libstdc++(ppc-32),libstdc++(ppc-64),libstdc++-devel(ppc-32),libstdc++-devel(ppc-64),glibc-devel(ppc-32),glibc-devel(ppc-64) + kitpkgdeps=vac.cmp >= 12.1.0.0,vac.lib >= 12.1.0.0,vac.lic >= 12.1.0.0,vacpp.cmp >= 12.1.0.0,vacpp.help.pdf >= 12.1.0.0,vacpp.lib >= 12.1.0.0,vacpp.man >= 12.1.0.0,vacpp.rte >= 12.1.0.0,vacpp.rte.lnk >= 12.1.0.0,vacpp.samples >= 12.1.0.0 + exlist=vacpp.exlist + postbootscripts=vacpp_license + +kitcomponent: + basename=min_vacpp_compute + description=Minimal VACPP12 packages for compute nodes + version=12.1.0.0 + release=120323 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdeps=libstdc++(ppc-32),libstdc++(ppc-64),libstdc++-devel(ppc-32),libstdc++-devel(ppc-64),glibc-devel(ppc-32),glibc-devel(ppc-64) + kitpkgdeps=vacpp.rte >= 12.1.0.0,vacpp.rte.lnk >= 12.1.0.0 + exlist=vacpp.exlist + postbootscripts=vacpp_license + +kitcomponent: + basename=vacpp_compute + description=VACPP12 for compute nodes + version=12.1.0.0 + release=120323 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdeps=libstdc++(ppc-32),libstdc++(ppc-64),libstdc++-devel(ppc-32),libstdc++-devel(ppc-64),glibc-devel(ppc-32),glibc-devel(ppc-64) + kitpkgdeps=vac.cmp >= 12.1.0.0,vac.lib >= 12.1.0.0,vac.lic >= 12.1.0.0,vacpp.cmp >= 12.1.0.0,vacpp.help.pdf >= 12.1.0.0,vacpp.lib >= 12.1.0.0,vacpp.man >= 12.1.0.0,vacpp.rte >= 12.1.0.0,vacpp.rte.lnk >= 12.1.0.0,vacpp.samples >= 12.1.0.0 + exlist=vacpp.exlist + postbootscripts=vacpp_license + +kitcomponent: + basename=vacpp_loginnode + description=VACPP12 for login nodes + version=12.1.0.0 + release=120323 + serverroles=loginnode + kitrepoid=sles11_ppc64 + ospkgdeps=libstdc++(ppc-32),libstdc++(ppc-64),libstdc++-devel(ppc-32),libstdc++-devel(ppc-64),glibc-devel(ppc-32),glibc-devel(ppc-64) + kitpkgdeps=vac.cmp >= 12.1.0.0,vac.lib >= 12.1.0.0,vac.lic >= 12.1.0.0,vacpp.cmp >= 12.1.0.0,vacpp.help.pdf >= 12.1.0.0,vacpp.lib >= 12.1.0.0,vacpp.man >= 12.1.0.0,vacpp.rte >= 12.1.0.0,vacpp.rte.lnk >= 12.1.0.0,vacpp.samples >= 12.1.0.0 + exlist=vacpp.exlist + postbootscripts=vacpp_license + +kitcomponent: + basename=min_vacpp_compute + description=Minimal VACPP12 packages for compute nodes + version=12.1.0.0 + release=120323 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdeps=libstdc++(ppc-32),libstdc++(ppc-64),libstdc++-devel(ppc-32),libstdc++-devel(ppc-64),glibc-devel(ppc-32),glibc-devel(ppc-64) + kitpkgdeps=vacpp.rte >= 12.1.0.0,vacpp.rte.lnk >= 12.1.0.0 + exlist=vacpp.exlist + postbootscripts=vacpp_license + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=vac.cmp-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=vac.lib-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=vac.lic-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=vacpp.cmp-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=vacpp.help.pdf-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=vacpp.lib-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=vacpp.man-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=vacpp.rte-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=vacpp.rte.lnk-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=vacpp.samples-12.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= diff --git a/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/other_files/vacpp.exlist b/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/other_files/vacpp.exlist new file mode 100755 index 000000000..18b4e5c98 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/other_files/vacpp.exlist @@ -0,0 +1,14 @@ +./opt/ibmcmp/msg/* ++./opt/ibmcmp/msg/en_US* + +./opt/ibmcmp/vac/*/crt/include* +./opt/ibmcmp/vac/*/include* +./opt/ibmcmp/vac/*/msg/* ++./opt/ibmcmp/vac/*/msg/en_US* +./opt/ibmcmp/vac/*/lap/LI_* +./opt/ibmcmp/vac/*/lap/LA_* +./opt/ibmcmp/vac/*/lap/license/*.txt + +./opt/ibmcmp/vacpp/*/include* +./opt/ibmcmp/vacpp/*/msg/* ++./opt/ibmcmp/vacpp/*/msg/en_US* diff --git a/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/scripts/vacpp_license b/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/scripts/vacpp_license new file mode 100755 index 000000000..fe59c8ba4 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/vacpp12-Linux/scripts/vacpp_license @@ -0,0 +1,21 @@ +#!/bin/sh + +# +# Sample script to accept licenses for the IBM vacpp and xlf compilers +# For AIX: +# do nothing, license accepted with installp -Y flag +# For Linux: +# Assumes all compiler software has been installed + + +OS=`uname` +if [ $OS != "AIX" ]; then + vacpp_script=`find /opt/ibmcmp/vacpp -name new_install -print` + + if [ -n "$vacpp_script" ] ; then + echo 1 | $vacpp_script + fi + +fi + + diff --git a/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/buildkit.conf b/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/buildkit.conf new file mode 100644 index 000000000..6a244ffad --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/buildkit.conf @@ -0,0 +1,321 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=xlf + description=XLF14 for Linux + version=14.1.0.0 + ostype=Linux +# kitdeployparams=sample/kitdeployparams.lst + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 ppc64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., ppc64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + +kitrepo: + kitrepoid=sles11_ppc64 + osbasename=sles + osmajorversion=11 + osarch=ppc64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=xlf_compute + description=XLF14 for compute nodes + version=14.1.0.0 + release=120323 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdeps=libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=xlmass.lib >= 7.1.0.0,xlsmp.msg.rte >= 3.1.0.0,xlsmp.rte >= 3.1.0.0,xlsmp.lib >= 3.1.0.0,xlf.msg.rte >= 14.1.0.0,xlf.rte >= 14.1.0.0,xlf.rte.lnk >= 14.1.0.0,xlf.lib >= 14.1.0.0,xlf.cmp >= 14.1.0.0,xlf.help.pdf >= 14.1.0.0,xlf.samples >= 14.1.0.0,xlf.man >= 14.1.0.0,xlf.lic >= 14.1.0.0 + exlist=xlf.exlist + postbootscripts=xlf_license + +kitcomponent: + basename=xlf_loginnode + description=XLF14 for login nodes + version=14.1.0.0 + release=120323 + serverroles=loginnode + kitrepoid=rhels6_ppc64 + ospkgdeps=libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=xlmass.lib >= 7.1.0.0,xlsmp.msg.rte >= 3.1.0.0,xlsmp.rte >= 3.1.0.0,xlsmp.lib >= 3.1.0.0,xlf.msg.rte >= 14.1.0.0,xlf.rte >= 14.1.0.0,xlf.rte.lnk >= 14.1.0.0,xlf.lib >= 14.1.0.0,xlf.cmp >= 14.1.0.0,xlf.help.pdf >= 14.1.0.0,xlf.samples >= 14.1.0.0,xlf.man >= 14.1.0.0,xlf.lic >= 14.1.0.0 + exlist=xlf.exlist + postbootscripts=xlf_license + +kitcomponent: + basename=min_xlf_compute + description=Minimal XLF14 packages for compute nodes + version=14.1.0.0 + release=120323 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdeps=libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=xlsmp.msg.rte >= 3.1.0.0,xlsmp.rte >= 3.1.0.0,xlf.msg.rte >= 14.1.0.0,xlf.rte >= 14.1.0.0,xlf.rte.lnk >= 14.1.0.00 + exlist=xlf.exlist + postbootscripts=xlf_license + + +kitcomponent: + basename=xlf_compute + description=XLF14 for compute nodes + version=14.1.0.0 + release=120323 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdeps=libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=xlmass.lib >= 7.1.0.0,xlsmp.msg.rte >= 3.1.0.0,xlsmp.rte >= 3.1.0.0,xlsmp.lib >= 3.1.0.0,xlf.msg.rte >= 14.1.0.0,xlf.rte >= 14.1.0.0,xlf.rte.lnk >= 14.1.0.0,xlf.lib >= 14.1.0.0,xlf.cmp >= 14.1.0.0,xlf.help.pdf >= 14.1.0.0,xlf.samples >= 14.1.0.0,xlf.man >= 14.1.0.0,xlf.lic >= 14.1.0.0 + exlist=xlf.exlist + postbootscripts=xlf_license + +kitcomponent: + basename=xlf_loginnode + description=XLF14 for login nodes + version=14.1.0.0 + release=120323 + serverroles=loginnode + kitrepoid=sles11_ppc64 + ospkgdeps=libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=xlmass.lib >= 7.1.0.0,xlsmp.msg.rte >= 3.1.0.0,xlsmp.rte >= 3.1.0.0,xlsmp.lib >= 3.1.0.0,xlf.msg.rte >= 14.1.0.0,xlf.rte >= 14.1.0.0,xlf.rte.lnk >= 14.1.0.0,xlf.lib >= 14.1.0.0,xlf.cmp >= 14.1.0.0,xlf.help.pdf >= 14.1.0.0,xlf.samples >= 14.1.0.0,xlf.man >= 14.1.0.0,xlf.lic >= 14.1.0.0 + exlist=xlf.exlist + postbootscripts=xlf_license + +kitcomponent: + basename=min_xlf_compute + description=Minimal XLF14 packages for compute nodes + version=14.1.0.0 + release=120323 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdeps=libstdc++.ppc,libstdc++.ppc64,libstdc++-devel.ppc,libstdc++-devel.ppc64 + kitpkgdeps=xlsmp.msg.rte >= 3.1.0.0,xlsmp.rte >= 3.1.0.0,xlf.msg.rte >= 14.1.0.0,xlf.rte >= 14.1.0.0,xlf.rte.lnk >= 14.1.0.00 + exlist=xlf.exlist + postbootscripts=xlf_license + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=xlf.cmp-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=xlf.help.pdf-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=xlf.lib-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=xlf.lic-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=xlf.man-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=xlf.msg.rte-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=xlf.rte-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=xlf.rte.lnk-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=xlf.samples-14.1.0.0-120323.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=xlmass.lib-7.1.0.0-120322.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=xlsmp.lib-3.1.0.0-120315a.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=xlsmp.msg.rte-3.1.0.0-120315a.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=xlsmp.rte-3.1.0.0-120315a.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= diff --git a/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/other_files/xlf.exlist b/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/other_files/xlf.exlist new file mode 100755 index 000000000..e5cfe3931 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/other_files/xlf.exlist @@ -0,0 +1,14 @@ +./opt/ibmcmp/msg/* ++./opt/ibmcmp/msg/en_US* + +./opt/ibmcmp/xlmass/*/include* +./opt/ibmcmp/xlsmp/*/include* +./opt/ibmcmp/xlhelp* + +./opt/ibmcmp/xlf/*/include* +./opt/ibmcmp/xlf/*/msg/* ++./opt/ibmcmp/xlf/*/msg/en_US* +./opt/ibmcmp/xlf/*/lap/LA_* +./opt/ibmcmp/xlf/*/lap/LI_* +./opt/ibmcmp/xlf/*/lap/license/*.txt + diff --git a/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/scripts/xlf_license b/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/scripts/xlf_license new file mode 100755 index 000000000..9711ed972 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/compiler/xlf14-Linux/scripts/xlf_license @@ -0,0 +1,19 @@ +#!/bin/sh + +# +# Sample script to accept licenses for the IBM vacpp and xlf compilers +# For Linux: +# Assumes all compiler software has been installed + +OS=`uname` +if [ $OS != "AIX" ]; then + xlf_script=`find /opt/ibmcmp/xlf -name new_install -print` + + # Being run from a stateful install postscript or stateless postbootscript. + if [ -n "$xlf_script" ] ; then + echo 1 | $xlf_script + fi + +fi + + diff --git a/xCAT-server/share/xcat/kit_build/essl/essl/buildkit.conf b/xCAT-server/share/xcat/kit_build/essl/essl/buildkit.conf new file mode 100644 index 000000000..2209e6f58 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/essl/essl/buildkit.conf @@ -0,0 +1,293 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=essl + description=essl for Linux + version=5.1.1 + ostype=Linux + kitdeployparams=essl.env + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 ppc64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., ppc64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + +kitrepo: + kitrepoid=sles11_ppc64 + osbasename=sles + osmajorversion=11 + osarch=ppc64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=essl_compute + description=essl for compute nodes + version=5.1.1 + release=0 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=essl.3232.rte >= 5.1.1,essl.3264.rte >= 5.1.1,essl.6464.rte >= 5.1.1,essl.bg.rte >= 5.1.1,essl.common >= 5.1.1,essl.license >= 5.1.1,essl.man >= 5.1.1,essl.msg >= 5.1.1,essl.rte >= 5.1.1,essl.rte.common >= 5.1.1 + exlist=essl.exlist + +kitcomponent: + basename=essl_loginnode + description=essl for login nodes + version=5.1.1 + release=0 + serverroles=loginnode + kitrepoid=rhels6_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=essl.3232.rte >= 5.1.1,essl.3264.rte >= 5.1.1,essl.6464.rte >= 5.1.1,essl.bg.rte >= 5.1.1,essl.common >= 5.1.1,essl.license >= 5.1.1,essl.man >= 5.1.1,essl.msg >= 5.1.1,essl.rte >= 5.1.1,essl.rte.common >= 5.1.1 + exlist=essl.exlist + +kitcomponent: + basename=min_essl_compute + description=Minimal essl packages for compute nodes + version=5.1.1 + release=0 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=essl.3232.rte >= 5.1.1,essl.3264.rte >= 5.1.1,essl.6464.rte >= 5.1.1,essl.bg.rte >= 5.1.1,essl.common >= 5.1.1,essl.license >= 5.1.1,essl.rte >= 5.1.1,essl.rte.common >= 5.1.1 + exlist=essl.exlist + +kitcomponent: + basename=essl_compute + description=essl for compute nodes + version=5.1.1 + release=0 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=essl.3232.rte >= 5.1.1,essl.3264.rte >= 5.1.1,essl.6464.rte >= 5.1.1,essl.bg.rte >= 5.1.1,essl.common >= 5.1.1,essl.license >= 5.1.1,essl.man >= 5.1.1,essl.msg >= 5.1.1,essl.rte >= 5.1.1,essl.rte.common >= 5.1.1 + exlist=essl.exlist + +kitcomponent: + basename=essl_loginnode + description=essl for compute nodes + version=5.1.1 + release=0 + serverroles=loginnode + kitrepoid=sles11_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=essl.3232.rte >= 5.1.1,essl.3264.rte >= 5.1.1,essl.6464.rte >= 5.1.1,essl.bg.rte >= 5.1.1,essl.common >= 5.1.1,essl.license >= 5.1.1,essl.man >= 5.1.1,essl.msg >= 5.1.1,essl.rte >= 5.1.1,essl.rte.common >= 5.1.1 + exlist=essl.exlist + +kitcomponent: + basename=min_essl_compute + description=Minimal essl packages for compute nodes + version=5.1.1 + release=0 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=essl.3232.rte >= 5.1.1,essl.3264.rte >= 5.1.1,essl.6464.rte >= 5.1.1,essl.bg.rte >= 5.1.1,essl.common >= 5.1.1,essl.license >= 5.1.1,essl.rte >= 5.1.1,essl.rte.common >= 5.1.1 + exlist=essl.exlist + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=essl.3232.rte-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=essl.3264.rte-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=essl.6464.rte-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=essl.bg.rte-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=essl.common-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=essl.license-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=essl.man-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=essl.msg-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=essl.rte-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=essl.rte.common-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= diff --git a/xCAT-server/share/xcat/kit_build/essl/essl/other_files/essl.env b/xCAT-server/share/xcat/kit_build/essl/essl/other_files/essl.env new file mode 100644 index 000000000..c7198f9a0 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/essl/essl/other_files/essl.env @@ -0,0 +1 @@ +#ENV:IBM_ESSL_LICENSE_ACCEPT=yes# diff --git a/xCAT-server/share/xcat/kit_build/essl/essl/other_files/essl.exlist b/xCAT-server/share/xcat/kit_build/essl/essl/other_files/essl.exlist new file mode 100755 index 000000000..71d38cfb9 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/essl/essl/other_files/essl.exlist @@ -0,0 +1,6 @@ +./opt/ibmmath/essl/*/FFTW3/include* +./opt/ibmmath/essl/*/include* +./opt/ibmmath/essl/*/lap/license/*.txt +./opt/ibmmath/essl/*/lap/LI_* +./opt/ibmmath/essl/*/lap/LA_* + diff --git a/xCAT-server/share/xcat/kit_build/essl/essl/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/essl/essl/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/essl/essl/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/essl/essl/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/essl/essl/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/essl/essl/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/essl/partial_essl/buildkit.conf b/xCAT-server/share/xcat/kit_build/essl/partial_essl/buildkit.conf new file mode 100644 index 000000000..ac5153909 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/essl/partial_essl/buildkit.conf @@ -0,0 +1,293 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=essl + description=essl for Linux + version=5.1.1 + ostype=Linux + kitdeployparams=essl.env + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 ppc64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., ppc64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + +kitrepo: + kitrepoid=sles11_ppc64 + osbasename=sles + osmajorversion=11 + osarch=ppc64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=essl_compute + description=essl for compute nodes + version=5.1.1 + release=0 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=essl.3232.rte >= 5.1.1,essl.3264.rte >= 5.1.1,essl.6464.rte >= 5.1.1,essl.bg.rte >= 5.1.1,essl.common >= 5.1.1,essl.license >= 5.1.1,essl.man >= 5.1.1,essl.msg >= 5.1.1,essl.rte >= 5.1.1,essl.rte.common >= 5.1.1 + exlist=essl.exlist + +kitcomponent: + basename=essl_loginnode + description=essl for login nodes + version=5.1.1 + release=0 + serverroles=loginnode + kitrepoid=rhels6_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=essl.3232.rte >= 5.1.1,essl.3264.rte >= 5.1.1,essl.6464.rte >= 5.1.1,essl.bg.rte >= 5.1.1,essl.common >= 5.1.1,essl.license >= 5.1.1,essl.man >= 5.1.1,essl.msg >= 5.1.1,essl.rte >= 5.1.1,essl.rte.common >= 5.1.1 + exlist=essl.exlist + +kitcomponent: + basename=min_essl_compute + description=Minimal essl packages for compute nodes + version=5.1.1 + release=0 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=essl.3232.rte >= 5.1.1,essl.3264.rte >= 5.1.1,essl.6464.rte >= 5.1.1,essl.bg.rte >= 5.1.1,essl.common >= 5.1.1,essl.license >= 5.1.1,essl.rte >= 5.1.1,essl.rte.common >= 5.1.1 + exlist=essl.exlist + +kitcomponent: + basename=essl_compute + description=essl for compute nodes + version=5.1.1 + release=0 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=essl.3232.rte >= 5.1.1,essl.3264.rte >= 5.1.1,essl.6464.rte >= 5.1.1,essl.bg.rte >= 5.1.1,essl.common >= 5.1.1,essl.license >= 5.1.1,essl.man >= 5.1.1,essl.msg >= 5.1.1,essl.rte >= 5.1.1,essl.rte.common >= 5.1.1 + exlist=essl.exlist + +kitcomponent: + basename=essl_loginnode + description=essl for login nodes + version=5.1.1 + release=0 + serverroles=loginnode + kitrepoid=sles11_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=essl.3232.rte >= 5.1.1,essl.3264.rte >= 5.1.1,essl.6464.rte >= 5.1.1,essl.bg.rte >= 5.1.1,essl.common >= 5.1.1,essl.license >= 5.1.1,essl.man >= 5.1.1,essl.msg >= 5.1.1,essl.rte >= 5.1.1,essl.rte.common >= 5.1.1 + exlist=essl.exlist + +kitcomponent: + basename=min_essl_compute + description=Minimal essl packages for compute nodes + version=5.1.1 + release=0 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=essl.3232.rte >= 5.1.1,essl.3264.rte >= 5.1.1,essl.6464.rte >= 5.1.1,essl.bg.rte >= 5.1.1,essl.common >= 5.1.1,essl.license >= 5.1.1,essl.rte >= 5.1.1,essl.rte.common >= 5.1.1 + exlist=essl.exlist + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=yes, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=essl.3232.rte-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=essl.3264.rte-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=essl.6464.rte-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=essl.bg.rte-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=essl.common-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=essl.license-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=essl.man-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=essl.msg-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=essl.rte-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=essl.rte.common-5.1.1-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + diff --git a/xCAT-server/share/xcat/kit_build/essl/partial_essl/other_files/essl.env b/xCAT-server/share/xcat/kit_build/essl/partial_essl/other_files/essl.env new file mode 100644 index 000000000..c7198f9a0 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/essl/partial_essl/other_files/essl.env @@ -0,0 +1 @@ +#ENV:IBM_ESSL_LICENSE_ACCEPT=yes# diff --git a/xCAT-server/share/xcat/kit_build/essl/partial_essl/other_files/essl.exlist b/xCAT-server/share/xcat/kit_build/essl/partial_essl/other_files/essl.exlist new file mode 100755 index 000000000..5d25e2fae --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/essl/partial_essl/other_files/essl.exlist @@ -0,0 +1,11 @@ +./opt/ibmmath/essl/*/FFTW3/include* +./opt/ibmmath/essl/*/include* +./opt/ibmmath/essl/*/lap/license/*.txt +./opt/ibmmath/essl/*/lap/LI_* +./opt/ibmmath/essl/*/lap/LA_* + +./opt/ibmmath/pessl/*/lap/LA_* +./opt/ibmmath/pessl/*/lap/LI_* +./opt/ibmmath/pessl/*/lap/*.jar + + diff --git a/xCAT-server/share/xcat/kit_build/essl/partial_essl/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/essl/partial_essl/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/essl/partial_essl/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/essl/partial_essl/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/essl/partial_essl/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/essl/partial_essl/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/buildkit.conf b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/buildkit.conf new file mode 100644 index 000000000..a7a793398 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/buildkit.conf @@ -0,0 +1,313 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=gpfs + description=General Parallel File System + version=3.5.0 + ostype=Linux + #kitdeployparams= + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 ppc64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., ppc64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + + #compat_osbasenames= + +kitrepo: + kitrepoid=sles11_ppc64 + osbasename=sles + osmajorversion=11 + osarch=ppc64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=gpfs_compute + description=GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=rhels6_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0,gpfs.docs >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=min_gpfs_compute + description=Minimal GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=rhels6_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=min-gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_loginnode + description=GPFS for login nodes + version=3.5.0 + release=s009 + serverroles=loginnode + kitrepoid=rhels6_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0,gpfs.docs >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_storagenode + description=GPFS for storage nodes + version=3.5.0 + release=s009 + serverroles=storagenode + kitrepoid=rhels6_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0,gpfs.docs >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates_storage + +kitcomponent: + basename=gpfs_compute + description=GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=sles11_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0,gpfs.docs >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=min_gpfs_compute + description=Minimal GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=sles11_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=min-gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_loginnode + description=GPFS for login nodes + version=3.5.0 + release=s009 + serverroles=loginnode + kitrepoid=sles11_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0,gpfs.docs >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_storagenode + description=GPFS for storage nodes + version=3.5.0 + release=s009 + serverroles=storagenode + kitrepoid=sles11_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0,gpfs.docs >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates_storage + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=gpfs.base-3.5.0-6.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=base + +kitpackage: + filename=gpfs.gpl-3.5.0-6.noarch.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=base + +kitpackage: + filename=gpfs.docs-3.5.0-6.noarch.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=base + +kitpackage: + filename=gpfs.msg.en_US-3.5.0-6.noarch.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=base + +kitpackage: + filename=gpfs.gplbin-3.5.0-6.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + isexternalpkg=yes + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/other_files/gpfs.exlist b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/other_files/gpfs.exlist new file mode 100755 index 000000000..e019951c7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/other_files/gpfs.exlist @@ -0,0 +1,3 @@ +./usr/lpp/mmfs/include* +./usr/lpp/mmfs/samples* + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/other_files/min-gpfs.exlist b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/other_files/min-gpfs.exlist new file mode 100755 index 000000000..ccb5ebe96 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/other_files/min-gpfs.exlist @@ -0,0 +1,5 @@ +# Exclude list for building a minimal diskless image + +./usr/lpp/mmfs/include* +./usr/lpp/mmfs/samples* +./usr/lpp/mmfs/src* diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/other_files/sample/exclude.lst b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/other_files/sample/exclude.lst new file mode 100644 index 000000000..e69de29bb diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/other_files/sample/kitdeployparams.lst b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/other_files/sample/kitdeployparams.lst new file mode 100644 index 000000000..e69de29bb diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_mmsdrfs b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_mmsdrfs new file mode 100755 index 000000000..fa4dab455 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_mmsdrfs @@ -0,0 +1,15 @@ +#!/bin/sh +# xCAT postscript to configure GPFS on a stateless node. +# Before booting nodes with this postscript, gpfs must be up and configured correctly on the node +# pointed to by the -p flag below. The $MASTER environment variable will be set by xCAT to +# the service node or management node of this booting node. If you want the nodes to get their +# GPFS configuration from a different node, replace $MASTER with that IP address. +cmd="/usr/lpp/mmfs/bin/mmsdrrestore -p $MASTER -R /usr/bin/scp" +$cmd > /dev/null 2>&1 +if [[ $? != 0 ]] +then + echo "mmsdrrestore failed!" + exit 2 +else + echo "mmsdrrestore succeeded" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_start b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_start new file mode 100755 index 000000000..21f50dd00 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_start @@ -0,0 +1,12 @@ +#!/bin/sh + +# Run this script as a postscript on any node (stateless, statefull, +# full-disk install, AIX, Linux) to start the GPFS daemon +# + +# If you have any special network dependencies, you may want to add code +# to check them first + +/usr/lpp/mmfs/bin/mmsdrrestore +/usr/lpp/mmfs/bin/mmstartup + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_updates b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_updates new file mode 100755 index 000000000..382a9fd25 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_updates @@ -0,0 +1,84 @@ +#!/bin/sh + +# +# Sample script to install and configure GPFS +# For AIX: +# Assumes the GPFS filesets and updates were installed using +# xCAT bundle files or some other mechanism. This script does not +# install additional software. +# It will do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile +# For Linux: +# Assumes the base GPFS rpms were installed with the xCAT 'otherpkgs' +# 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. +# 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 +# since they will confuse rpm tools such as zypper and yum. +# This script will also do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile + +OS=`uname` +INSTALL_DIR='/install' +UPDATES_DIR='post/otherpkgs/gpfs_updates' + +if [ $OS != "AIX" ]; then + if [ -f "/proc/cmdline" ]; then + # Being run from a stateful install postscript + # Copy rpms directly from the xCAT management node and install + mkdir -p /tmp/gpfs_updates + rm -f -R /tmp/gpfs_updates/* + cd /tmp/gpfs_updates +# wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=3 ftp://$SITEMASTER/$UPDATES_DIR/*.rpm 2> /tmp/wget.log + wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=4 --reject "index.html*" --no-parent http://$SITEMASTER$INSTALL_DIR/$UPDATES_DIR/ 2> /tmp/wget.log + if [ -n "`ls *.rpm 2> /dev/null`" ] ; then + rpm -Uvh *.rpm + fi + cd / + rm -f -R /tmp/gpfs_updates + fi +fi + +# Create an empty nsddevices script for GPFS +# This assumes that the node is NOT an NSD server +if [ $OS != "AIX" ]; then + # Create the script on the node + mkdir -p /var/mmfs/etc + echo 'return 0' > /var/mmfs/etc/nsddevices + chmod 744 /var/mmfs/etc/nsddevices +fi + + +# Add GPFS path to profile +if [ $OS != "AIX" ]; then + gpfsprofile=/etc/profile.d/gpfs + if [ ! -f "/proc/cmdline" ]; then + gpfsprofile=$gpfsprofile + fi + if [ ! -e $gpfsprofile.sh ]; then + echo 'export PATH=$PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.sh + echo 'setenv PATH $PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.csh + # Turn off LANG support since we did not install other msg catalogs + echo 'export LC_CTYPE=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_CTYPE POSIX' >> $gpfsprofile.csh + echo 'export LC_ALL=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_ALL POSIX' >> $gpfsprofile.csh + chmod 744 $gpfsprofile.sh + chmod 744 $gpfsprofile.csh + fi +fi + +# If you are using a shared home directory stored in GPFS, +# create the symbolic link +# +# GPFSHOME=/gpfs/home +# HOMEDIR=/u +# ln -s $GPFSHOME $HOMEDIR + + + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_updates_storage b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_updates_storage new file mode 100755 index 000000000..94b7891cd --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_updates_storage @@ -0,0 +1,84 @@ +#!/bin/sh + +# +# Sample script to install and configure GPFS +# For AIX: +# Assumes the GPFS filesets and updates were installed using +# xCAT bundle files or some other mechanism. This script does not +# install additional software. +# It will do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile +# For Linux: +# Assumes the base GPFS rpms were installed with the xCAT 'otherpkgs' +# 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. +# 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 +# since they will confuse rpm tools such as zypper and yum. +# This script will also do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile + +OS=`uname` +INSTALL_DIR='/install' +UPDATES_DIR='post/otherpkgs/gpfs_updates' + +if [ $OS != "AIX" ]; then + if [ -f "/proc/cmdline" ]; then + # Being run from a stateful install postscript + # Copy rpms directly from the xCAT management node and install + mkdir -p /tmp/gpfs_updates + rm -f -R /tmp/gpfs_updates/* + cd /tmp/gpfs_updates +# wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=3 ftp://$SITEMASTER/$UPDATES_DIR/*.rpm 2> /tmp/wget.log + wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=4 --reject "index.html*" --no-parent http://$SITEMASTER$INSTALL_DIR/$UPDATES_DIR/ 2> /tmp/wget.log + if [ -n "`ls *.rpm 2> /dev/null`" ] ; then + rpm -Uvh *.rpm + fi + cd / + rm -f -R /tmp/gpfs_updates + fi +fi + +## Create an empty nsddevices script for GPFS +## This assumes that the node is NOT an NSD server +#if [ $OS != "AIX" ]; then +# # Create the script on the node +# mkdir -p /var/mmfs/etc +# echo 'return 0' > /var/mmfs/etc/nsddevices +# chmod 744 /var/mmfs/etc/nsddevices +#fi + + +# Add GPFS path to profile +if [ $OS != "AIX" ]; then + gpfsprofile=/etc/profile.d/gpfs + if [ ! -f "/proc/cmdline" ]; then + gpfsprofile=$gpfsprofile + fi + if [ ! -e $gpfsprofile.sh ]; then + echo 'export PATH=$PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.sh + echo 'setenv PATH $PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.csh + # Turn off LANG support since we did not install other msg catalogs + echo 'export LC_CTYPE=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_CTYPE POSIX' >> $gpfsprofile.csh + echo 'export LC_ALL=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_ALL POSIX' >> $gpfsprofile.csh + chmod 744 $gpfsprofile.sh + chmod 744 $gpfsprofile.csh + fi +fi + +# If you are using a shared home directory stored in GPFS, +# create the symbolic link +# +# GPFSHOME=/gpfs/home +# HOMEDIR=/u +# ln -s $GPFSHOME $HOMEDIR + + + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/post.sh b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/post.sh new file mode 100644 index 000000000..2fa3d84e1 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/post.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 post script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postboot.sh b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postboot.sh new file mode 100644 index 000000000..abbcb3e56 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postboot.sh @@ -0,0 +1,3 @@ +#!/bin/sh +echo "running sample-comp1 postboot script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postun.sh b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postun.sh new file mode 100644 index 000000000..a5596e931 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postun.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 postun script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postup.sh b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postup.sh new file mode 100644 index 000000000..a4ad3c500 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postup.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 postup script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/pre.sh b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/pre.sh new file mode 100644 index 000000000..36a88c970 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/pre.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 pre script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/preun.sh b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/preun.sh new file mode 100644 index 000000000..e94c3aa8e --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/preun.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 preun script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/preup.sh b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/preup.sh new file mode 100644 index 000000000..bf2248496 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-ppc64/scripts/sample/preup.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 preup script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/buildkit.conf b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/buildkit.conf new file mode 100644 index 000000000..33d186f81 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/buildkit.conf @@ -0,0 +1,313 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=gpfs + description=General Parallel File System + version=3.5.0 + ostype=Linux + #kitdeployparams= + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 x86_64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., x86_64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_x86_64 + osbasename=rhels + osmajorversion=6 + osarch=x86_64 + + #compat_osbasenames= + +kitrepo: + kitrepoid=sles11_x86_64 + osbasename=sles + osmajorversion=11 + osarch=x86_64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=gpfs_compute + description=GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=rhels6_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0,gpfs.docs >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=min_gpfs_compute + description=Minimal GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=rhels6_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=min-gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_loginnode + description=GPFS for login nodes + version=3.5.0 + release=s009 + serverroles=loginnode + kitrepoid=rhels6_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0,gpfs.docs >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_storagenode + description=GPFS for storage nodes + version=3.5.0 + release=s009 + serverroles=storagenode + kitrepoid=rhels6_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0,gpfs.docs >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates_storage + +kitcomponent: + basename=gpfs_compute + description=GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=sles11_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0,gpfs.docs >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=min_gpfs_compute + description=Minimal GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=sles11_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=min-gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_loginnode + description=GPFS for login nodes + version=3.5.0 + release=s009 + serverroles=loginnode + kitrepoid=sles11_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0,gpfs.docs >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_storagenode + description=GPFS for storage nodes + version=3.5.0 + release=s009 + serverroles=storagenode + kitrepoid=sles11_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=min-gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates_storage + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=gpfs.base-3.5.0-6.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=base + +kitpackage: + filename=gpfs.gpl-3.5.0-6.noarch.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=base + +kitpackage: + filename=gpfs.docs-3.5.0-6.noarch.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=base + +kitpackage: + filename=gpfs.msg.en_US-3.5.0-6.noarch.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=base + +kitpackage: + filename=gpfs.gplbin-3.5.0-6.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + isexternalpkg=yes + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/other_files/gpfs.exlist b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/other_files/gpfs.exlist new file mode 100755 index 000000000..e019951c7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/other_files/gpfs.exlist @@ -0,0 +1,3 @@ +./usr/lpp/mmfs/include* +./usr/lpp/mmfs/samples* + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/other_files/min-gpfs.exlist b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/other_files/min-gpfs.exlist new file mode 100755 index 000000000..ccb5ebe96 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/other_files/min-gpfs.exlist @@ -0,0 +1,5 @@ +# Exclude list for building a minimal diskless image + +./usr/lpp/mmfs/include* +./usr/lpp/mmfs/samples* +./usr/lpp/mmfs/src* diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/other_files/sample/exclude.lst b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/other_files/sample/exclude.lst new file mode 100644 index 000000000..e69de29bb diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/other_files/sample/kitdeployparams.lst b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/other_files/sample/kitdeployparams.lst new file mode 100644 index 000000000..e69de29bb diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_mmsdrfs b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_mmsdrfs new file mode 100755 index 000000000..fa4dab455 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_mmsdrfs @@ -0,0 +1,15 @@ +#!/bin/sh +# xCAT postscript to configure GPFS on a stateless node. +# Before booting nodes with this postscript, gpfs must be up and configured correctly on the node +# pointed to by the -p flag below. The $MASTER environment variable will be set by xCAT to +# the service node or management node of this booting node. If you want the nodes to get their +# GPFS configuration from a different node, replace $MASTER with that IP address. +cmd="/usr/lpp/mmfs/bin/mmsdrrestore -p $MASTER -R /usr/bin/scp" +$cmd > /dev/null 2>&1 +if [[ $? != 0 ]] +then + echo "mmsdrrestore failed!" + exit 2 +else + echo "mmsdrrestore succeeded" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_start b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_start new file mode 100755 index 000000000..21f50dd00 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_start @@ -0,0 +1,12 @@ +#!/bin/sh + +# Run this script as a postscript on any node (stateless, statefull, +# full-disk install, AIX, Linux) to start the GPFS daemon +# + +# If you have any special network dependencies, you may want to add code +# to check them first + +/usr/lpp/mmfs/bin/mmsdrrestore +/usr/lpp/mmfs/bin/mmstartup + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_updates b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_updates new file mode 100755 index 000000000..382a9fd25 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_updates @@ -0,0 +1,84 @@ +#!/bin/sh + +# +# Sample script to install and configure GPFS +# For AIX: +# Assumes the GPFS filesets and updates were installed using +# xCAT bundle files or some other mechanism. This script does not +# install additional software. +# It will do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile +# For Linux: +# Assumes the base GPFS rpms were installed with the xCAT 'otherpkgs' +# 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. +# 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 +# since they will confuse rpm tools such as zypper and yum. +# This script will also do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile + +OS=`uname` +INSTALL_DIR='/install' +UPDATES_DIR='post/otherpkgs/gpfs_updates' + +if [ $OS != "AIX" ]; then + if [ -f "/proc/cmdline" ]; then + # Being run from a stateful install postscript + # Copy rpms directly from the xCAT management node and install + mkdir -p /tmp/gpfs_updates + rm -f -R /tmp/gpfs_updates/* + cd /tmp/gpfs_updates +# wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=3 ftp://$SITEMASTER/$UPDATES_DIR/*.rpm 2> /tmp/wget.log + wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=4 --reject "index.html*" --no-parent http://$SITEMASTER$INSTALL_DIR/$UPDATES_DIR/ 2> /tmp/wget.log + if [ -n "`ls *.rpm 2> /dev/null`" ] ; then + rpm -Uvh *.rpm + fi + cd / + rm -f -R /tmp/gpfs_updates + fi +fi + +# Create an empty nsddevices script for GPFS +# This assumes that the node is NOT an NSD server +if [ $OS != "AIX" ]; then + # Create the script on the node + mkdir -p /var/mmfs/etc + echo 'return 0' > /var/mmfs/etc/nsddevices + chmod 744 /var/mmfs/etc/nsddevices +fi + + +# Add GPFS path to profile +if [ $OS != "AIX" ]; then + gpfsprofile=/etc/profile.d/gpfs + if [ ! -f "/proc/cmdline" ]; then + gpfsprofile=$gpfsprofile + fi + if [ ! -e $gpfsprofile.sh ]; then + echo 'export PATH=$PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.sh + echo 'setenv PATH $PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.csh + # Turn off LANG support since we did not install other msg catalogs + echo 'export LC_CTYPE=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_CTYPE POSIX' >> $gpfsprofile.csh + echo 'export LC_ALL=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_ALL POSIX' >> $gpfsprofile.csh + chmod 744 $gpfsprofile.sh + chmod 744 $gpfsprofile.csh + fi +fi + +# If you are using a shared home directory stored in GPFS, +# create the symbolic link +# +# GPFSHOME=/gpfs/home +# HOMEDIR=/u +# ln -s $GPFSHOME $HOMEDIR + + + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_updates_storage b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_updates_storage new file mode 100755 index 000000000..94b7891cd --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_updates_storage @@ -0,0 +1,84 @@ +#!/bin/sh + +# +# Sample script to install and configure GPFS +# For AIX: +# Assumes the GPFS filesets and updates were installed using +# xCAT bundle files or some other mechanism. This script does not +# install additional software. +# It will do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile +# For Linux: +# Assumes the base GPFS rpms were installed with the xCAT 'otherpkgs' +# 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. +# 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 +# since they will confuse rpm tools such as zypper and yum. +# This script will also do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile + +OS=`uname` +INSTALL_DIR='/install' +UPDATES_DIR='post/otherpkgs/gpfs_updates' + +if [ $OS != "AIX" ]; then + if [ -f "/proc/cmdline" ]; then + # Being run from a stateful install postscript + # Copy rpms directly from the xCAT management node and install + mkdir -p /tmp/gpfs_updates + rm -f -R /tmp/gpfs_updates/* + cd /tmp/gpfs_updates +# wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=3 ftp://$SITEMASTER/$UPDATES_DIR/*.rpm 2> /tmp/wget.log + wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=4 --reject "index.html*" --no-parent http://$SITEMASTER$INSTALL_DIR/$UPDATES_DIR/ 2> /tmp/wget.log + if [ -n "`ls *.rpm 2> /dev/null`" ] ; then + rpm -Uvh *.rpm + fi + cd / + rm -f -R /tmp/gpfs_updates + fi +fi + +## Create an empty nsddevices script for GPFS +## This assumes that the node is NOT an NSD server +#if [ $OS != "AIX" ]; then +# # Create the script on the node +# mkdir -p /var/mmfs/etc +# echo 'return 0' > /var/mmfs/etc/nsddevices +# chmod 744 /var/mmfs/etc/nsddevices +#fi + + +# Add GPFS path to profile +if [ $OS != "AIX" ]; then + gpfsprofile=/etc/profile.d/gpfs + if [ ! -f "/proc/cmdline" ]; then + gpfsprofile=$gpfsprofile + fi + if [ ! -e $gpfsprofile.sh ]; then + echo 'export PATH=$PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.sh + echo 'setenv PATH $PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.csh + # Turn off LANG support since we did not install other msg catalogs + echo 'export LC_CTYPE=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_CTYPE POSIX' >> $gpfsprofile.csh + echo 'export LC_ALL=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_ALL POSIX' >> $gpfsprofile.csh + chmod 744 $gpfsprofile.sh + chmod 744 $gpfsprofile.csh + fi +fi + +# If you are using a shared home directory stored in GPFS, +# create the symbolic link +# +# GPFSHOME=/gpfs/home +# HOMEDIR=/u +# ln -s $GPFSHOME $HOMEDIR + + + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/post.sh b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/post.sh new file mode 100644 index 000000000..2fa3d84e1 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/post.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 post script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postboot.sh b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postboot.sh new file mode 100644 index 000000000..abbcb3e56 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postboot.sh @@ -0,0 +1,3 @@ +#!/bin/sh +echo "running sample-comp1 postboot script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postun.sh b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postun.sh new file mode 100644 index 000000000..a5596e931 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postun.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 postun script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postup.sh b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postup.sh new file mode 100644 index 000000000..a4ad3c500 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postup.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 postup script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/pre.sh b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/pre.sh new file mode 100644 index 000000000..36a88c970 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/pre.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 pre script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/preun.sh b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/preun.sh new file mode 100644 index 000000000..e94c3aa8e --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/preun.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 preun script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/preup.sh b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/preup.sh new file mode 100644 index 000000000..bf2248496 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/gpfs-3.5.0-6-Linux-x86_64/scripts/sample/preup.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 preup script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/buildkit.conf b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/buildkit.conf new file mode 100644 index 000000000..cb5dfd038 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/buildkit.conf @@ -0,0 +1,305 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=gpfs + description=General Parallel File System + version=3.5.0 + ostype=Linux + #kitdeployparams= + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 ppc64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., ppc64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + + #compat_osbasenames= + +kitrepo: + kitrepoid=sles11_ppc64 + osbasename=sles + osmajorversion=11 + osarch=ppc64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=gpfs_compute + description=GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=rhels6_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0,gpfs.docs >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=min_gpfs_compute + description=Minimal GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=rhels6_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=min-gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_loginnode + description=GPFS for login nodes + version=3.5.0 + release=s009 + serverroles=loginnode + kitrepoid=rhels6_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0,gpfs.docs >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_storagenode + description=GPFS for storage nodes + version=3.5.0 + release=s009 + serverroles=storagenode + kitrepoid=rhels6_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0,gpfs.docs >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates_storage + +kitcomponent: + basename=gpfs_compute + description=GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=sles11_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0,gpfs.docs >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=min_gpfs_compute + description=Minimal GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=sles11_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=min-gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + + +kitcomponent: + basename=gpfs_loginnode + description=GPFS for login nodes + version=3.5.0 + release=s009 + serverroles=loginnode + kitrepoid=sles11_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0,gpfs.docs >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_storagenode + description=GPFS for storage nodes + version=3.5.0 + release=s009 + serverroles=storagenode + kitrepoid=sles11_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0,gpfs.docs >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates_storage + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=gpfs.base-3.5.0-6.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + isexternalpkg=yes + +kitpackage: + filename=gpfs.gpl-3.5.0-6.noarch.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + isexternalpkg=yes + +kitpackage: + filename=gpfs.docs-3.5.0-6.noarch.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + isexternalpkg=yes + +kitpackage: + filename=gpfs.msg.en_US-3.5.0-6.noarch.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + isexternalpkg=yes + +kitpackage: + filename=gpfs.gplbin-3.5.0-6.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + isexternalpkg=yes + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/other_files/gpfs.exlist b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/other_files/gpfs.exlist new file mode 100755 index 000000000..e019951c7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/other_files/gpfs.exlist @@ -0,0 +1,3 @@ +./usr/lpp/mmfs/include* +./usr/lpp/mmfs/samples* + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/other_files/min-gpfs.exlist b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/other_files/min-gpfs.exlist new file mode 100755 index 000000000..ccb5ebe96 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/other_files/min-gpfs.exlist @@ -0,0 +1,5 @@ +# Exclude list for building a minimal diskless image + +./usr/lpp/mmfs/include* +./usr/lpp/mmfs/samples* +./usr/lpp/mmfs/src* diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/other_files/sample/exclude.lst b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/other_files/sample/exclude.lst new file mode 100644 index 000000000..e69de29bb diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/other_files/sample/kitdeployparams.lst b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/other_files/sample/kitdeployparams.lst new file mode 100644 index 000000000..e69de29bb diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_mmsdrfs b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_mmsdrfs new file mode 100755 index 000000000..fa4dab455 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_mmsdrfs @@ -0,0 +1,15 @@ +#!/bin/sh +# xCAT postscript to configure GPFS on a stateless node. +# Before booting nodes with this postscript, gpfs must be up and configured correctly on the node +# pointed to by the -p flag below. The $MASTER environment variable will be set by xCAT to +# the service node or management node of this booting node. If you want the nodes to get their +# GPFS configuration from a different node, replace $MASTER with that IP address. +cmd="/usr/lpp/mmfs/bin/mmsdrrestore -p $MASTER -R /usr/bin/scp" +$cmd > /dev/null 2>&1 +if [[ $? != 0 ]] +then + echo "mmsdrrestore failed!" + exit 2 +else + echo "mmsdrrestore succeeded" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_start b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_start new file mode 100755 index 000000000..21f50dd00 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_start @@ -0,0 +1,12 @@ +#!/bin/sh + +# Run this script as a postscript on any node (stateless, statefull, +# full-disk install, AIX, Linux) to start the GPFS daemon +# + +# If you have any special network dependencies, you may want to add code +# to check them first + +/usr/lpp/mmfs/bin/mmsdrrestore +/usr/lpp/mmfs/bin/mmstartup + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_updates b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_updates new file mode 100755 index 000000000..382a9fd25 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_updates @@ -0,0 +1,84 @@ +#!/bin/sh + +# +# Sample script to install and configure GPFS +# For AIX: +# Assumes the GPFS filesets and updates were installed using +# xCAT bundle files or some other mechanism. This script does not +# install additional software. +# It will do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile +# For Linux: +# Assumes the base GPFS rpms were installed with the xCAT 'otherpkgs' +# 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. +# 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 +# since they will confuse rpm tools such as zypper and yum. +# This script will also do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile + +OS=`uname` +INSTALL_DIR='/install' +UPDATES_DIR='post/otherpkgs/gpfs_updates' + +if [ $OS != "AIX" ]; then + if [ -f "/proc/cmdline" ]; then + # Being run from a stateful install postscript + # Copy rpms directly from the xCAT management node and install + mkdir -p /tmp/gpfs_updates + rm -f -R /tmp/gpfs_updates/* + cd /tmp/gpfs_updates +# wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=3 ftp://$SITEMASTER/$UPDATES_DIR/*.rpm 2> /tmp/wget.log + wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=4 --reject "index.html*" --no-parent http://$SITEMASTER$INSTALL_DIR/$UPDATES_DIR/ 2> /tmp/wget.log + if [ -n "`ls *.rpm 2> /dev/null`" ] ; then + rpm -Uvh *.rpm + fi + cd / + rm -f -R /tmp/gpfs_updates + fi +fi + +# Create an empty nsddevices script for GPFS +# This assumes that the node is NOT an NSD server +if [ $OS != "AIX" ]; then + # Create the script on the node + mkdir -p /var/mmfs/etc + echo 'return 0' > /var/mmfs/etc/nsddevices + chmod 744 /var/mmfs/etc/nsddevices +fi + + +# Add GPFS path to profile +if [ $OS != "AIX" ]; then + gpfsprofile=/etc/profile.d/gpfs + if [ ! -f "/proc/cmdline" ]; then + gpfsprofile=$gpfsprofile + fi + if [ ! -e $gpfsprofile.sh ]; then + echo 'export PATH=$PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.sh + echo 'setenv PATH $PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.csh + # Turn off LANG support since we did not install other msg catalogs + echo 'export LC_CTYPE=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_CTYPE POSIX' >> $gpfsprofile.csh + echo 'export LC_ALL=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_ALL POSIX' >> $gpfsprofile.csh + chmod 744 $gpfsprofile.sh + chmod 744 $gpfsprofile.csh + fi +fi + +# If you are using a shared home directory stored in GPFS, +# create the symbolic link +# +# GPFSHOME=/gpfs/home +# HOMEDIR=/u +# ln -s $GPFSHOME $HOMEDIR + + + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_updates_storage b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_updates_storage new file mode 100755 index 000000000..94b7891cd --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/gpfs_updates_storage @@ -0,0 +1,84 @@ +#!/bin/sh + +# +# Sample script to install and configure GPFS +# For AIX: +# Assumes the GPFS filesets and updates were installed using +# xCAT bundle files or some other mechanism. This script does not +# install additional software. +# It will do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile +# For Linux: +# Assumes the base GPFS rpms were installed with the xCAT 'otherpkgs' +# 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. +# 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 +# since they will confuse rpm tools such as zypper and yum. +# This script will also do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile + +OS=`uname` +INSTALL_DIR='/install' +UPDATES_DIR='post/otherpkgs/gpfs_updates' + +if [ $OS != "AIX" ]; then + if [ -f "/proc/cmdline" ]; then + # Being run from a stateful install postscript + # Copy rpms directly from the xCAT management node and install + mkdir -p /tmp/gpfs_updates + rm -f -R /tmp/gpfs_updates/* + cd /tmp/gpfs_updates +# wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=3 ftp://$SITEMASTER/$UPDATES_DIR/*.rpm 2> /tmp/wget.log + wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=4 --reject "index.html*" --no-parent http://$SITEMASTER$INSTALL_DIR/$UPDATES_DIR/ 2> /tmp/wget.log + if [ -n "`ls *.rpm 2> /dev/null`" ] ; then + rpm -Uvh *.rpm + fi + cd / + rm -f -R /tmp/gpfs_updates + fi +fi + +## Create an empty nsddevices script for GPFS +## This assumes that the node is NOT an NSD server +#if [ $OS != "AIX" ]; then +# # Create the script on the node +# mkdir -p /var/mmfs/etc +# echo 'return 0' > /var/mmfs/etc/nsddevices +# chmod 744 /var/mmfs/etc/nsddevices +#fi + + +# Add GPFS path to profile +if [ $OS != "AIX" ]; then + gpfsprofile=/etc/profile.d/gpfs + if [ ! -f "/proc/cmdline" ]; then + gpfsprofile=$gpfsprofile + fi + if [ ! -e $gpfsprofile.sh ]; then + echo 'export PATH=$PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.sh + echo 'setenv PATH $PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.csh + # Turn off LANG support since we did not install other msg catalogs + echo 'export LC_CTYPE=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_CTYPE POSIX' >> $gpfsprofile.csh + echo 'export LC_ALL=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_ALL POSIX' >> $gpfsprofile.csh + chmod 744 $gpfsprofile.sh + chmod 744 $gpfsprofile.csh + fi +fi + +# If you are using a shared home directory stored in GPFS, +# create the symbolic link +# +# GPFSHOME=/gpfs/home +# HOMEDIR=/u +# ln -s $GPFSHOME $HOMEDIR + + + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/post.sh b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/post.sh new file mode 100644 index 000000000..2fa3d84e1 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/post.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 post script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postboot.sh b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postboot.sh new file mode 100644 index 000000000..abbcb3e56 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postboot.sh @@ -0,0 +1,3 @@ +#!/bin/sh +echo "running sample-comp1 postboot script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postun.sh b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postun.sh new file mode 100644 index 000000000..a5596e931 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postun.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 postun script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postup.sh b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postup.sh new file mode 100644 index 000000000..a4ad3c500 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/postup.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 postup script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/pre.sh b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/pre.sh new file mode 100644 index 000000000..36a88c970 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/pre.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 pre script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/preun.sh b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/preun.sh new file mode 100644 index 000000000..e94c3aa8e --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/preun.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 preun script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/preup.sh b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/preup.sh new file mode 100644 index 000000000..bf2248496 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-ppc64/scripts/sample/preup.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 preup script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/buildkit.conf b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/buildkit.conf new file mode 100644 index 000000000..d4169ddc7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/buildkit.conf @@ -0,0 +1,305 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=gpfs + description=General Parallel File System + version=3.5.0 + ostype=Linux + #kitdeployparams= + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 x86_64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., x86_64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_x86_64 + osbasename=rhels + osmajorversion=6 + osarch=x86_64 + + #compat_osbasenames= + +kitrepo: + kitrepoid=sles11_x86_64 + osbasename=sles + osmajorversion=11 + osarch=x86_64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=gpfs_compute + description=GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=rhels6_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0,gpfs.docs >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=min_gpfs_compute + description=Minimal GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=rhels6_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=min-gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_loginnode + description=GPFS for login nodes + version=3.5.0 + release=s009 + serverroles=loginnode + kitrepoid=rhels6_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0,gpfs.docs >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_storagenode + description=GPFS for storage nodes + version=3.5.0 + release=s009 + serverroles=storagenode + kitrepoid=rhels6_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0,gpfs.docs >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates_storage + +kitcomponent: + basename=gpfs_compute + description=GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=sles11_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0,gpfs.docs >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=min_gpfs_compute + description=Minimal GPFS for compute nodes + version=3.5.0 + release=s009 + serverroles=compute + kitrepoid=sles11_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=min-gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_loginnode + description=GPFS for login nodes + version=3.5.0 + release=s009 + serverroles=loginnode + kitrepoid=sles11_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.5.0,gpfs.gpl >= 3.5.0,gpfs.msg.en_US >= 3.5.0,gpfs.gplbin >= 3.5.0,gpfs.docs >= 3.5.0 + #non_native_pkgs= + #driverpacks= + exlist=gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates + +kitcomponent: + basename=gpfs_storagenode + description=GPFS for storage nodes + version=3.5.0 + release=s009 + serverroles=storagenode + kitrepoid=sles11_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=gpfs.base >= 3.4.0,gpfs.gpl >= 3.4.0,gpfs.msg.en_US >= 3.4.0,gpfs.gplbin >= 3.4.0 + #non_native_pkgs= + #driverpacks= + exlist=min-gpfs.exlist + postbootscripts=gpfs_mmsdrfs,gpfs_start,gpfs_updates_storage + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=gpfs.base-3.5.0-6.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + isexternalpkg=yes + +kitpackage: + filename=gpfs.gpl-3.5.0-6.noarch.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + isexternalpkg=yes + +kitpackage: + filename=gpfs.docs-3.5.0-6.noarch.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + isexternalpkg=yes + +kitpackage: + filename=gpfs.msg.en_US-3.5.0-6.noarch.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + isexternalpkg=yes + +kitpackage: + filename=gpfs.gplbin-3.5.0-6.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + isexternalpkg=yes + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/other_files/gpfs.exlist b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/other_files/gpfs.exlist new file mode 100755 index 000000000..e019951c7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/other_files/gpfs.exlist @@ -0,0 +1,3 @@ +./usr/lpp/mmfs/include* +./usr/lpp/mmfs/samples* + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/other_files/min-gpfs.exlist b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/other_files/min-gpfs.exlist new file mode 100755 index 000000000..ccb5ebe96 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/other_files/min-gpfs.exlist @@ -0,0 +1,5 @@ +# Exclude list for building a minimal diskless image + +./usr/lpp/mmfs/include* +./usr/lpp/mmfs/samples* +./usr/lpp/mmfs/src* diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/other_files/sample/exclude.lst b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/other_files/sample/exclude.lst new file mode 100644 index 000000000..e69de29bb diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/other_files/sample/kitdeployparams.lst b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/other_files/sample/kitdeployparams.lst new file mode 100644 index 000000000..e69de29bb diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_mmsdrfs b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_mmsdrfs new file mode 100755 index 000000000..fa4dab455 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_mmsdrfs @@ -0,0 +1,15 @@ +#!/bin/sh +# xCAT postscript to configure GPFS on a stateless node. +# Before booting nodes with this postscript, gpfs must be up and configured correctly on the node +# pointed to by the -p flag below. The $MASTER environment variable will be set by xCAT to +# the service node or management node of this booting node. If you want the nodes to get their +# GPFS configuration from a different node, replace $MASTER with that IP address. +cmd="/usr/lpp/mmfs/bin/mmsdrrestore -p $MASTER -R /usr/bin/scp" +$cmd > /dev/null 2>&1 +if [[ $? != 0 ]] +then + echo "mmsdrrestore failed!" + exit 2 +else + echo "mmsdrrestore succeeded" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_start b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_start new file mode 100755 index 000000000..21f50dd00 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_start @@ -0,0 +1,12 @@ +#!/bin/sh + +# Run this script as a postscript on any node (stateless, statefull, +# full-disk install, AIX, Linux) to start the GPFS daemon +# + +# If you have any special network dependencies, you may want to add code +# to check them first + +/usr/lpp/mmfs/bin/mmsdrrestore +/usr/lpp/mmfs/bin/mmstartup + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_updates b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_updates new file mode 100755 index 000000000..382a9fd25 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_updates @@ -0,0 +1,84 @@ +#!/bin/sh + +# +# Sample script to install and configure GPFS +# For AIX: +# Assumes the GPFS filesets and updates were installed using +# xCAT bundle files or some other mechanism. This script does not +# install additional software. +# It will do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile +# For Linux: +# Assumes the base GPFS rpms were installed with the xCAT 'otherpkgs' +# 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. +# 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 +# since they will confuse rpm tools such as zypper and yum. +# This script will also do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile + +OS=`uname` +INSTALL_DIR='/install' +UPDATES_DIR='post/otherpkgs/gpfs_updates' + +if [ $OS != "AIX" ]; then + if [ -f "/proc/cmdline" ]; then + # Being run from a stateful install postscript + # Copy rpms directly from the xCAT management node and install + mkdir -p /tmp/gpfs_updates + rm -f -R /tmp/gpfs_updates/* + cd /tmp/gpfs_updates +# wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=3 ftp://$SITEMASTER/$UPDATES_DIR/*.rpm 2> /tmp/wget.log + wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=4 --reject "index.html*" --no-parent http://$SITEMASTER$INSTALL_DIR/$UPDATES_DIR/ 2> /tmp/wget.log + if [ -n "`ls *.rpm 2> /dev/null`" ] ; then + rpm -Uvh *.rpm + fi + cd / + rm -f -R /tmp/gpfs_updates + fi +fi + +# Create an empty nsddevices script for GPFS +# This assumes that the node is NOT an NSD server +if [ $OS != "AIX" ]; then + # Create the script on the node + mkdir -p /var/mmfs/etc + echo 'return 0' > /var/mmfs/etc/nsddevices + chmod 744 /var/mmfs/etc/nsddevices +fi + + +# Add GPFS path to profile +if [ $OS != "AIX" ]; then + gpfsprofile=/etc/profile.d/gpfs + if [ ! -f "/proc/cmdline" ]; then + gpfsprofile=$gpfsprofile + fi + if [ ! -e $gpfsprofile.sh ]; then + echo 'export PATH=$PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.sh + echo 'setenv PATH $PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.csh + # Turn off LANG support since we did not install other msg catalogs + echo 'export LC_CTYPE=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_CTYPE POSIX' >> $gpfsprofile.csh + echo 'export LC_ALL=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_ALL POSIX' >> $gpfsprofile.csh + chmod 744 $gpfsprofile.sh + chmod 744 $gpfsprofile.csh + fi +fi + +# If you are using a shared home directory stored in GPFS, +# create the symbolic link +# +# GPFSHOME=/gpfs/home +# HOMEDIR=/u +# ln -s $GPFSHOME $HOMEDIR + + + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_updates_storage b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_updates_storage new file mode 100755 index 000000000..94b7891cd --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/gpfs_updates_storage @@ -0,0 +1,84 @@ +#!/bin/sh + +# +# Sample script to install and configure GPFS +# For AIX: +# Assumes the GPFS filesets and updates were installed using +# xCAT bundle files or some other mechanism. This script does not +# install additional software. +# It will do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile +# For Linux: +# Assumes the base GPFS rpms were installed with the xCAT 'otherpkgs' +# 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. +# 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 +# since they will confuse rpm tools such as zypper and yum. +# This script will also do the following: +# - create /var/mmfs/etc/nsddevices that simply returns 0 +# - add GPFS paths to profile + +OS=`uname` +INSTALL_DIR='/install' +UPDATES_DIR='post/otherpkgs/gpfs_updates' + +if [ $OS != "AIX" ]; then + if [ -f "/proc/cmdline" ]; then + # Being run from a stateful install postscript + # Copy rpms directly from the xCAT management node and install + mkdir -p /tmp/gpfs_updates + rm -f -R /tmp/gpfs_updates/* + cd /tmp/gpfs_updates +# wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=3 ftp://$SITEMASTER/$UPDATES_DIR/*.rpm 2> /tmp/wget.log + wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 10 -T 60 -nH --cut-dirs=4 --reject "index.html*" --no-parent http://$SITEMASTER$INSTALL_DIR/$UPDATES_DIR/ 2> /tmp/wget.log + if [ -n "`ls *.rpm 2> /dev/null`" ] ; then + rpm -Uvh *.rpm + fi + cd / + rm -f -R /tmp/gpfs_updates + fi +fi + +## Create an empty nsddevices script for GPFS +## This assumes that the node is NOT an NSD server +#if [ $OS != "AIX" ]; then +# # Create the script on the node +# mkdir -p /var/mmfs/etc +# echo 'return 0' > /var/mmfs/etc/nsddevices +# chmod 744 /var/mmfs/etc/nsddevices +#fi + + +# Add GPFS path to profile +if [ $OS != "AIX" ]; then + gpfsprofile=/etc/profile.d/gpfs + if [ ! -f "/proc/cmdline" ]; then + gpfsprofile=$gpfsprofile + fi + if [ ! -e $gpfsprofile.sh ]; then + echo 'export PATH=$PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.sh + echo 'setenv PATH $PATH:/usr/lpp/mmfs/bin' > $gpfsprofile.csh + # Turn off LANG support since we did not install other msg catalogs + echo 'export LC_CTYPE=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_CTYPE POSIX' >> $gpfsprofile.csh + echo 'export LC_ALL=POSIX' >> $gpfsprofile.sh + echo 'setenv LC_ALL POSIX' >> $gpfsprofile.csh + chmod 744 $gpfsprofile.sh + chmod 744 $gpfsprofile.csh + fi +fi + +# If you are using a shared home directory stored in GPFS, +# create the symbolic link +# +# GPFSHOME=/gpfs/home +# HOMEDIR=/u +# ln -s $GPFSHOME $HOMEDIR + + + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/post.sh b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/post.sh new file mode 100644 index 000000000..2fa3d84e1 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/post.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 post script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postboot.sh b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postboot.sh new file mode 100644 index 000000000..abbcb3e56 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postboot.sh @@ -0,0 +1,3 @@ +#!/bin/sh +echo "running sample-comp1 postboot script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postun.sh b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postun.sh new file mode 100644 index 000000000..a5596e931 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postun.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 postun script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postup.sh b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postup.sh new file mode 100644 index 000000000..a4ad3c500 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/postup.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 postup script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/pre.sh b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/pre.sh new file mode 100644 index 000000000..36a88c970 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/pre.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 pre script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/preun.sh b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/preun.sh new file mode 100644 index 000000000..e94c3aa8e --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/preun.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 preun script" + diff --git a/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/preup.sh b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/preup.sh new file mode 100644 index 000000000..bf2248496 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/gpfs/partial-gpfs-3.5.0-6-Linux-x86_64/scripts/sample/preup.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 preup script" + diff --git a/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/buildkit.conf b/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/buildkit.conf new file mode 100644 index 000000000..5f980187c --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/buildkit.conf @@ -0,0 +1,286 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=pessl + description=pessl for Linux + version=4.2.0 + ostype=Linux + kitdeployparams=pessl.env + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 ppc64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., ppc64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + +kitrepo: + kitrepoid=sles11_ppc64 + osbasename=sles + osmajorversion=11 + osarch=ppc64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=pessl_compute + description=pessl for compute nodes + version=4.2.0 + release=0 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=pessl.3232.rte.mpich >= 4.2.0,pessl.3232.rte.ppe >= 4.2.0,pessl.3264.rte.mpich >= 4.2.0,pessl.3264.rte.ppe >= 4.2.0,pessl.common >= 4.2.0,pessl.license >= 4.2.0,pessl.man >= 4.2.0,pessl.msg >= 4.2.0,pessl.rte.common >= 4.2.0 + exlist=pessl.exlist + +kitcomponent: + basename=pessl_loginnode + description=pessl for login nodes + version=4.2.0 + release=0 + serverroles=loginnode + kitrepoid=rhels6_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=pessl.3232.rte.mpich >= 4.2.0,pessl.3232.rte.ppe >= 4.2.0,pessl.3264.rte.mpich >= 4.2.0,pessl.3264.rte.ppe >= 4.2.0,pessl.common >= 4.2.0,pessl.license >= 4.2.0,pessl.man >= 4.2.0,pessl.msg >= 4.2.0,pessl.rte.common >= 4.2.0 + exlist=pessl.exlist + +kitcomponent: + basename=min_pessl_compute + description=Minimal pessl for compute nodes + version=4.2.0 + release=0 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=pessl.3232.rte.mpich >= 4.2.0,pessl.3232.rte.ppe >= 4.2.0,pessl.3264.rte.mpich >= 4.2.0,pessl.3264.rte.ppe >= 4.2.0,pessl.common >= 4.2.0,pessl.license >= 4.2.0,pessl.rte.common >= 4.2.0 + exlist=min-pessl.exlist + + +kitcomponent: + basename=pessl_compute + description=pessl for compute nodes + version=4.2.0 + release=0 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=pessl.3232.rte.mpich >= 4.2.0,pessl.3232.rte.ppe >= 4.2.0,pessl.3264.rte.mpich >= 4.2.0,pessl.3264.rte.ppe >= 4.2.0,pessl.common >= 4.2.0,pessl.license >= 4.2.0,pessl.man >= 4.2.0,pessl.msg >= 4.2.0,pessl.rte.common >= 4.2.0 + exlist=pessl.exlist + +kitcomponent: + basename=essl_loginnode + description=pessl for login nodes + version=4.2.0 + release=0 + serverroles=loginnode + kitrepoid=sles11_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=pessl.3232.rte.mpich >= 4.2.0,pessl.3232.rte.ppe >= 4.2.0,pessl.3264.rte.mpich >= 4.2.0,pessl.3264.rte.ppe >= 4.2.0,pessl.common >= 4.2.0,pessl.license >= 4.2.0,pessl.man >= 4.2.0,pessl.msg >= 4.2.0,pessl.rte.common >= 4.2.0 + exlist=pessl.exlist + +kitcomponent: + basename=min_pessl_compute + description=Minimal pessl for compute nodes + version=4.2.0 + release=0 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=pessl.3232.rte.mpich >= 4.2.0,pessl.3232.rte.ppe >= 4.2.0,pessl.3264.rte.mpich >= 4.2.0,pessl.3264.rte.ppe >= 4.2.0,pessl.common >= 4.2.0,pessl.license >= 4.2.0,pessl.rte.common >= 4.2.0 + exlist=min-pessl.exlist + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=yes, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=pessl.3232.rte.mpich-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=pessl.3232.rte.ppe-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=pessl.3264.rte.mpich-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=pessl.3264.rte.ppe-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=pessl.common-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=pessl.license-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=pessl.man-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=pessl.msg-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=pessl.rte.common-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + diff --git a/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/other_files/min-pessl.exlist b/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/other_files/min-pessl.exlist new file mode 100755 index 000000000..903c93802 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/other_files/min-pessl.exlist @@ -0,0 +1,5 @@ +./opt/ibmmath/pessl/*/lap/LA_* +./opt/ibmmath/pessl/*/lap/LI_* +./opt/ibmmath/pessl/*/lap/*.jar +./opt/ibmmath/pessl/*/example* + diff --git a/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/other_files/pessl.env b/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/other_files/pessl.env new file mode 100644 index 000000000..90146f379 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/other_files/pessl.env @@ -0,0 +1 @@ +#ENV:IBM_PESSL_LICENSE_ACCEPT=yes# diff --git a/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/other_files/pessl.exlist b/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/other_files/pessl.exlist new file mode 100755 index 000000000..4ef49f9c7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/other_files/pessl.exlist @@ -0,0 +1,5 @@ +./opt/ibmmath/pessl/*/lap/LA_* +./opt/ibmmath/pessl/*/lap/LI_* +./opt/ibmmath/pessl/*/lap/*.jar + + diff --git a/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/pessl/partial-pessl/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/pessl/pessl/buildkit.conf b/xCAT-server/share/xcat/kit_build/pessl/pessl/buildkit.conf new file mode 100644 index 000000000..05eec2328 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/pessl/pessl/buildkit.conf @@ -0,0 +1,285 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=pessl + description=pessl for Linux + version=4.2.0 + ostype=Linux + kitdeployparams=pessl.env + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 ppc64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., ppc64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + +kitrepo: + kitrepoid=sles11_ppc64 + osbasename=sles + osmajorversion=11 + osarch=ppc64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=pessl_compute + description=pessl for compute nodes + version=4.2.0 + release=0 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=pessl.3232.rte.mpich >= 4.2.0,pessl.3232.rte.ppe >= 4.2.0,pessl.3264.rte.mpich >= 4.2.0,pessl.3264.rte.ppe >= 4.2.0,pessl.common >= 4.2.0,pessl.license >= 4.2.0,pessl.man >= 4.2.0,pessl.msg >= 4.2.0,pessl.rte.common >= 4.2.0 + exlist=pessl.exlist + +kitcomponent: + basename=pessl_loginnode + description=pessl for login nodes + version=4.2.0 + release=0 + serverroles=loginnode + kitrepoid=rhels6_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=pessl.3232.rte.mpich >= 4.2.0,pessl.3232.rte.ppe >= 4.2.0,pessl.3264.rte.mpich >= 4.2.0,pessl.3264.rte.ppe >= 4.2.0,pessl.common >= 4.2.0,pessl.license >= 4.2.0,pessl.man >= 4.2.0,pessl.msg >= 4.2.0,pessl.rte.common >= 4.2.0 + exlist=pessl.exlist + +kitcomponent: + basename=min_pessl_compute + description=Minimal pessl for compute nodes + version=4.2.0 + release=0 + serverroles=compute + kitrepoid=rhels6_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=pessl.3232.rte.mpich >= 4.2.0,pessl.3232.rte.ppe >= 4.2.0,pessl.3264.rte.mpich >= 4.2.0,pessl.3264.rte.ppe >= 4.2.0,pessl.common >= 4.2.0,pessl.license >= 4.2.0,pessl.rte.common >= 4.2.0 + exlist=min-pessl.exlist + +kitcomponent: + basename=essl_compute + description=pessl for compute nodes + version=4.2.0 + release=0 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=pessl.3232.rte.mpich >= 4.2.0,pessl.3232.rte.ppe >= 4.2.0,pessl.3264.rte.mpich >= 4.2.0,pessl.3264.rte.ppe >= 4.2.0,pessl.common >= 4.2.0,pessl.license >= 4.2.0,pessl.man >= 4.2.0,pessl.msg >= 4.2.0,pessl.rte.common >= 4.2.0 + exlist=pessl.exlist + +kitcomponent: + basename=essl_loginnode + description=pessl for login nodes + version=4.2.0 + release=0 + serverroles=loginnode + kitrepoid=sles11_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=pessl.3232.rte.mpich >= 4.2.0,pessl.3232.rte.ppe >= 4.2.0,pessl.3264.rte.mpich >= 4.2.0,pessl.3264.rte.ppe >= 4.2.0,pessl.common >= 4.2.0,pessl.license >= 4.2.0,pessl.man >= 4.2.0,pessl.msg >= 4.2.0,pessl.rte.common >= 4.2.0 + exlist=pessl.exlist + +kitcomponent: + basename=min_essl_compute + description=Minimal pessl for compute nodes + version=4.2.0 + release=0 + serverroles=compute + kitrepoid=sles11_ppc64 + ospkgdeps=bc,xorg-x11-libXp-32bit + kitpkgdeps=pessl.3232.rte.mpich >= 4.2.0,pessl.3232.rte.ppe >= 4.2.0,pessl.3264.rte.mpich >= 4.2.0,pessl.3264.rte.ppe >= 4.2.0,pessl.common >= 4.2.0,pessl.license >= 4.2.0,pessl.rte.common >= 4.2.0 + exlist=min-pessl.exlist + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=pessl.3232.rte.mpich-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= +kitpackage: + filename=pessl.3232.rte.ppe-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=pessl.3264.rte.mpich-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=pessl.3264.rte.ppe-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=pessl.common-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=pessl.license-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=pessl.man-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=pessl.msg-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=pessl.rte.common-4.2.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= diff --git a/xCAT-server/share/xcat/kit_build/pessl/pessl/other_files/min-pessl.exlist b/xCAT-server/share/xcat/kit_build/pessl/pessl/other_files/min-pessl.exlist new file mode 100755 index 000000000..903c93802 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/pessl/pessl/other_files/min-pessl.exlist @@ -0,0 +1,5 @@ +./opt/ibmmath/pessl/*/lap/LA_* +./opt/ibmmath/pessl/*/lap/LI_* +./opt/ibmmath/pessl/*/lap/*.jar +./opt/ibmmath/pessl/*/example* + diff --git a/xCAT-server/share/xcat/kit_build/pessl/pessl/other_files/pessl.env b/xCAT-server/share/xcat/kit_build/pessl/pessl/other_files/pessl.env new file mode 100644 index 000000000..90146f379 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/pessl/pessl/other_files/pessl.env @@ -0,0 +1 @@ +#ENV:IBM_PESSL_LICENSE_ACCEPT=yes# diff --git a/xCAT-server/share/xcat/kit_build/pessl/pessl/other_files/pessl.exlist b/xCAT-server/share/xcat/kit_build/pessl/pessl/other_files/pessl.exlist new file mode 100755 index 000000000..4ef49f9c7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/pessl/pessl/other_files/pessl.exlist @@ -0,0 +1,5 @@ +./opt/ibmmath/pessl/*/lap/LA_* +./opt/ibmmath/pessl/*/lap/LI_* +./opt/ibmmath/pessl/*/lap/*.jar + + diff --git a/xCAT-server/share/xcat/kit_build/pessl/pessl/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/pessl/pessl/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/pessl/pessl/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/pessl/pessl/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/pessl/pessl/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/pessl/pessl/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/buildkit.conf b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/buildkit.conf new file mode 100644 index 000000000..adba774c7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/buildkit.conf @@ -0,0 +1,329 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=pperte + description=Parallel Environment Runtime Edition + version=1.2.0.10 + ostype=Linux + kitdeployparams=pe.env + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 ppc64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., ppc64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + +kitrepo: + kitrepoid=sles11_ppc64 + osbasename=sles + osmajorversion=11 + osarch=ppc64 + + #compat_osbasenames= + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=pperte_compute + description=PE RTE for compute nodes + version=1.2.0.10 + release=s010a + serverroles=compute + kitrepoid=rhels6_ppc64 + #kitcompdeps= + ospkgdeps=libibverbs(ppc-32),libibverbs(ppc-64) + kitpkgdeps=ppe_rte_license,pperterh6x >= 1.2.0.10,pperteman >= 1.2.0.10,ppertesamples >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=min_pperte_compute + description=Minimal PE RTE for compute nodes + version=1.2.0.10 + release=s010a + serverroles=compute + kitrepoid=rhels6_ppc64 + #kitcompdeps= + ospkgdeps=libibverbs(ppc-32),libibverbs(ppc-64) + kitpkgdeps=ppe_rte_license,pperterh6x >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=pperte_loginnode + description=PE RTE for login nodes + version=1.2.0.10 + release=s010a + serverroles=loginnode + kitrepoid=rhels6_ppc64 + #kitcompdeps= + ospkgdeps=libibverbs(ppc-32),libibverbs(ppc-64) + kitpkgdeps=ppe_rte_license,pperterh6x >= 1.2.0.10,pperteman >= 1.2.0.10,ppertesamples >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=pperte_compute + description=PE RTE for compute nodes + version=1.2.0.10 + release=s010a + serverroles=compute + kitrepoid=sles11_ppc64 + #kitcompdeps= + ospkgdeps=libibverbs(ppc-32),libibverbs(ppc-64) + kitpkgdeps=ppe_rte_license,ppertesles11x >= 1.2.0.10,pperteman >= 1.2.0.10,ppertesamples >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=min_pperte_compute + description=Minimal PE RTE for compute nodes + version=1.2.0.10 + release=s010a + serverroles=compute + kitrepoid=sles11_ppc64 + #kitcompdeps= + ospkgdeps=libibverbs(ppc-32),libibverbs(ppc-64) + kitpkgdeps=ppe_rte_license,ppertesles11x >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=pperte_loginnode + description=PE RTE for login nodes + version=1.2.0.10 + release=s010a + serverroles=loginnode + kitrepoid=sles11_ppc64 + #kitcompdeps= + ospkgdeps=libibverbs(ppc-32),libibverbs(ppc-64) + kitpkgdeps=ppe_rte_license,ppertesles11x >= 1.2.0.10,pperteman >= 1.2.0.10,ppertesamples >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=yes, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. + +### RH6 ppc64 rpms +kitpackage: + filename=pperterh6x-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=pperteman-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=ppertesamples-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=ppe_rte_rh6x_12010-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=ppe_rte_man-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=ppe_rte_samples-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +### SLES11 ppc64 rpms +#kitpackage: +# filename=ppertesles11x-1.2.0.10-s010a.ppc64.rpm +# kitrepoid=sles11_ppc64 +# # Method 1: Use pre-built RPM package +# isexternalpkg=yes + +kitpackage: + filename=pperteman-1.2.0.10-s010a.ppc64.rpm + kitrepoid=sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=ppertesamples-1.2.0.10-s010a.ppc64.rpm + kitrepoid=sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +#kitpackage: +# filename=ppe_rte_sles11x_12010-1.2.0.10-s010a.ppc64.rpm +# kitrepoid=sles11_ppc64 +# # Method 1: Use pre-built RPM package +# isexternalpkg=yes + +kitpackage: + filename=ppe_rte_man-1.2.0.10-s010a.ppc64.rpm + kitrepoid=sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=ppe_rte_samples-1.2.0.10-s010a.ppc64.rpm + kitrepoid=sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=src-1.3.1.1-12080.ppc.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +### License rpm gets placed in all repos +kitpackage: + filename=ppe_rte_license-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes diff --git a/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/other_files/pe.env b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/other_files/pe.env new file mode 100644 index 000000000..f2d982d78 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/other_files/pe.env @@ -0,0 +1,2 @@ +#ENV:IBM_PPE_RTE_LICENSE_ACCEPT=yes# + diff --git a/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/other_files/pe.exlist b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/other_files/pe.exlist new file mode 100755 index 000000000..847caaab1 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/other_files/pe.exlist @@ -0,0 +1,11 @@ +./opt/ibmhpc/lapi/include* +./opt/ibmhpc/lapi/pnsd/include* +./opt/ibmhpc/lapi/samples* + +./opt/ibmhpc/ppe.poe/include* +./opt/ibmhpc/ppe.poe/man/* +./opt/ibmhpc/ppe.poe/samples* +./opt/ibmhpc/hal/include* +./etc/opt/ibmhpc/license/*.txt + + diff --git a/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/scripts/pperte_postboot b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/scripts/pperte_postboot new file mode 100755 index 000000000..1895a26e9 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/scripts/pperte_postboot @@ -0,0 +1,32 @@ +#!/bin/sh +# +# +# For Linux: +# - Generate mpi modules +# - Generate and store checkpoint key +# - BSR support configuration + +# Generate mpi modules + gen_xlf=`grep PE_LATEST_LEVEL /etc/ppe.cfg | cut -f2 -d ' ' `/mpich2/sbin/xlf_gen_mpimod + if [ -x $gen_xlf ] ; then + $gen_xlf + fi + +#Generate checkpoint key and store it into the image, ckpt script could ust it after boot. + KEY=$(dd if=/dev/random count=1 2>/dev/null | sha1sum | awk '{print $1}') + echo $KEY > /root/.ckpt.key + chmod 400 /root/.ckpt.key + + +# BSR configuration, uncomment the following lines to enable BSR configuration on Power Linux cluster. +# groupadd bsr +# mkdir -p /var/lib/bsr +# chown root:bsr /var/lib/bsr +# chmod g+sw /var/lib/bsr + + +# pelinks script support, uncomment the following lines and change to the correct pe version that you intend to use. +#PE_VERSION=1202 +# if [ -f "/proc/cmdline" ]; then +# MP_CONFIG=$PE_VERSION /opt/ibmhpc/pe$PE_VERSION/ppe.poe/bin/pelinks +# fi diff --git a/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/scripts/pperte_postinstall b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/scripts/pperte_postinstall new file mode 100755 index 000000000..541bd3ad1 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-ppc64/scripts/pperte_postinstall @@ -0,0 +1,37 @@ +#!/bin/sh +# +# +# For Linux: +# - Create a smaller PNSD log file in /tmp +# - Configure poe.limits file +# - Generate and store checkpoint key +# - BSR support configuration + +# Configure the PNSD.cfg to use a smaller log so it doesn't use so much memory +# for a stateless image. Normally, pnsd creates this file if it does not +# exist, but it will not fill it in if it does exist. +if [ ! -f /etc/PNSD.cfg ]; then + echo "log_file = /tmp/serverlog" > /etc/PNSD.cfg + echo "log_file_size = 2097152" >> /etc/PNSD.cfg + echo "socket_file = /tmp/PNSD" >> /etc/PNSD.cfg +else + /bin/sed -i 's/log_file_size = .*/log_file_size = 2097152/g' /etc/PNSD.cfg + if [ -f "/proc/cmdline" ]; then + stopsrc -s pnsd + startsrc -s pnsd + fi +fi + +# Configure the poe.limits file +if [ ! -f /etc/poe.limits ]; then + echo "MP_POE_LAUNCH=all" > /etc/poe.limits +else + /bin/sed -i 's/MP_POE_LAUNCH=.*/MP_POE_LAUNCH=all/g' /etc/poe.limits +fi + + +# POE requires rsh to be running + /bin/sed -i 's/disable.*/disable = no/g' /etc/xinetd.d/rsh + if [ -f "/proc/cmdline" ]; then + service xinetd restart + fi diff --git a/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/buildkit.conf b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/buildkit.conf new file mode 100644 index 000000000..7a5500d37 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/buildkit.conf @@ -0,0 +1,331 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=pperte + description=Parallel Environment Runtime Edition + version=1.2.0.10 + ostype=Linux + kitdeployparams=pe.env + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 x86_64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., x86_64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_x86_64 + osbasename=rhels + osmajorversion=6 + osarch=x86_64 + +kitrepo: + kitrepoid=sles11_x86_64 + osbasename=sles + osmajorversion=11 + osarch=x86_64 + + #compat_osbasenames= + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=pperte_compute + description=PE RTE for compute nodes + version=1.2.0.10 + release=s010a + serverroles=compute + kitrepoid=rhels6_x86_64 + #kitcompdeps= + ospkgdeps=libibverbs(x86-32),libibverbs(x86-64) + kitpkgdeps=ppe_rte_license,pperterh6x >= 1.2.0.10,pperteman >= 1.2.0.10,ppertesamples >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=min_pperte_compute + description=Minimal PE RTE for compute nodes + version=1.2.0.10 + release=s010a + serverroles=compute + kitrepoid=rhels6_x86_64 + #kitcompdeps= + ospkgdeps=libibverbs(x86-32),libibverbs(x86-64) + kitpkgdeps=ppe_rte_license,pperterh6x >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=pperte_loginnode + description=PE RTE for login nodes + version=1.2.0.10 + release=s010a + serverroles=loginnode + kitrepoid=rhels6_x86_64 + #kitcompdeps= + ospkgdeps=libibverbs(x86-32),libibverbs(x86-64) + kitpkgdeps=ppe_rte_license,pperterh6x >= 1.2.0.10,pperteman >= 1.2.0.10,ppertesamples >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=pperte_compute + description=PE RTE for compute nodes + version=1.2.0.10 + release=s010a + serverroles=compute + kitrepoid=sles11_x86_64 + #kitcompdeps= + ospkgdeps=libibverbs(x86-32),libibverbs(x86-64) + kitpkgdeps=ppe_rte_license,ppertesles11x >= 1.2.0.10,pperteman >= 1.2.0.10,ppertesamples >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=min_pperte_compute + description=Minimal PE RTE for compute nodes + version=1.2.0.10 + release=s010a + serverroles=compute + kitrepoid=sles11_x86_64 + #kitcompdeps= + ospkgdeps=libibverbs(x86-32),libibverbs(x86-64) + kitpkgdeps=ppe_rte_license,ppertesles11x >= 1.2.0.10 + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=pperte_loginnode + description=PE RTE for login nodes + version=1.2.0.10 + release=s010a + serverroles=loginnode + kitrepoid=sles11_x86_64 + #kitcompdeps= + ospkgdeps=libibverbs(x86-32),libibverbs(x86-64) + kitpkgdeps=ppe_rte_license,ppertesles11x >= 1.2.0.10,pperteman >= 1.2.0.10,ppertesamples >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=yes, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. + +### RH6 x86_64 rpms +kitpackage: + filename=pperterh6x-1.2.0.10-s010a.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=pperteman-1.2.0.10-s010a.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=ppertesamples-1.2.0.10-s010a.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=ppe_rte_rh6x_12010-1.2.0.10-s010a.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=ppe_rte_man-1.2.0.10-s010a.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=ppe_rte_samples-1.2.0.10-s010a.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +### SLES11 x86_64 rpms +kitpackage: + filename=ppertesles11x-1.2.0.10-s010a.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=pperteman-1.2.0.10-s010a.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=ppertesamples-1.2.0.10-s010a.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=ppe_rte_sles11x_12010-1.2.0.10-s010a.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=ppe_rte_man-1.2.0.10-s010a.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=ppe_rte_samples-1.2.0.10-s010a.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + +kitpackage: + filename=src-1.3.1.1-12080.i386.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +### License rpm gets placed in all repos +kitpackage: + filename=ppe_rte_license-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + diff --git a/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/other_files/pe.env b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/other_files/pe.env new file mode 100644 index 000000000..f2d982d78 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/other_files/pe.env @@ -0,0 +1,2 @@ +#ENV:IBM_PPE_RTE_LICENSE_ACCEPT=yes# + diff --git a/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/other_files/pe.exlist b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/other_files/pe.exlist new file mode 100755 index 000000000..847caaab1 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/other_files/pe.exlist @@ -0,0 +1,11 @@ +./opt/ibmhpc/lapi/include* +./opt/ibmhpc/lapi/pnsd/include* +./opt/ibmhpc/lapi/samples* + +./opt/ibmhpc/ppe.poe/include* +./opt/ibmhpc/ppe.poe/man/* +./opt/ibmhpc/ppe.poe/samples* +./opt/ibmhpc/hal/include* +./etc/opt/ibmhpc/license/*.txt + + diff --git a/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/scripts/pperte_postboot b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/scripts/pperte_postboot new file mode 100755 index 000000000..1895a26e9 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/scripts/pperte_postboot @@ -0,0 +1,32 @@ +#!/bin/sh +# +# +# For Linux: +# - Generate mpi modules +# - Generate and store checkpoint key +# - BSR support configuration + +# Generate mpi modules + gen_xlf=`grep PE_LATEST_LEVEL /etc/ppe.cfg | cut -f2 -d ' ' `/mpich2/sbin/xlf_gen_mpimod + if [ -x $gen_xlf ] ; then + $gen_xlf + fi + +#Generate checkpoint key and store it into the image, ckpt script could ust it after boot. + KEY=$(dd if=/dev/random count=1 2>/dev/null | sha1sum | awk '{print $1}') + echo $KEY > /root/.ckpt.key + chmod 400 /root/.ckpt.key + + +# BSR configuration, uncomment the following lines to enable BSR configuration on Power Linux cluster. +# groupadd bsr +# mkdir -p /var/lib/bsr +# chown root:bsr /var/lib/bsr +# chmod g+sw /var/lib/bsr + + +# pelinks script support, uncomment the following lines and change to the correct pe version that you intend to use. +#PE_VERSION=1202 +# if [ -f "/proc/cmdline" ]; then +# MP_CONFIG=$PE_VERSION /opt/ibmhpc/pe$PE_VERSION/ppe.poe/bin/pelinks +# fi diff --git a/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/scripts/pperte_postinstall b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/scripts/pperte_postinstall new file mode 100755 index 000000000..541bd3ad1 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/partial-pperte-x86_64/scripts/pperte_postinstall @@ -0,0 +1,37 @@ +#!/bin/sh +# +# +# For Linux: +# - Create a smaller PNSD log file in /tmp +# - Configure poe.limits file +# - Generate and store checkpoint key +# - BSR support configuration + +# Configure the PNSD.cfg to use a smaller log so it doesn't use so much memory +# for a stateless image. Normally, pnsd creates this file if it does not +# exist, but it will not fill it in if it does exist. +if [ ! -f /etc/PNSD.cfg ]; then + echo "log_file = /tmp/serverlog" > /etc/PNSD.cfg + echo "log_file_size = 2097152" >> /etc/PNSD.cfg + echo "socket_file = /tmp/PNSD" >> /etc/PNSD.cfg +else + /bin/sed -i 's/log_file_size = .*/log_file_size = 2097152/g' /etc/PNSD.cfg + if [ -f "/proc/cmdline" ]; then + stopsrc -s pnsd + startsrc -s pnsd + fi +fi + +# Configure the poe.limits file +if [ ! -f /etc/poe.limits ]; then + echo "MP_POE_LAUNCH=all" > /etc/poe.limits +else + /bin/sed -i 's/MP_POE_LAUNCH=.*/MP_POE_LAUNCH=all/g' /etc/poe.limits +fi + + +# POE requires rsh to be running + /bin/sed -i 's/disable.*/disable = no/g' /etc/xinetd.d/rsh + if [ -f "/proc/cmdline" ]; then + service xinetd restart + fi diff --git a/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/buildkit.conf b/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/buildkit.conf new file mode 100644 index 000000000..7456909c0 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/buildkit.conf @@ -0,0 +1,343 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=pperte + description=Parallel Environment Runtime Edition + version=1.2.0.10 + ostype=Linux + kitdeployparams=pe.env + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 ppc64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., ppc64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + +kitrepo: + kitrepoid=sles11_ppc64 + osbasename=sles + osmajorversion=11 + osarch=ppc64 + + #compat_osbasenames= + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=pperte_compute + description=PE RTE for compute nodes + version=1.2.0.10 + release=s010a + serverroles=compute + kitrepoid=rhels6_ppc64 + #kitcompdeps= + ospkgdeps=libibverbs(ppc-32),libibverbs(ppc-64) + kitpkgdeps=ppe_rte_license,pperterh6p >= 1.2.0.10,pperteman >= 1.2.0.10,ppertesamples >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=min_pperte_compute + description=Minimal PE RTE for compute nodes + version=1.2.0.10 + release=s010a + serverroles=compute + kitrepoid=rhels6_ppc64 + #kitcompdeps= + ospkgdeps=libibverbs(ppc-32),libibverbs(ppc-64) + kitpkgdeps=ppe_rte_license,pperterh6p >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=pperte_loginnode + description=PE RTE for login nodes + version=1.2.0.10 + release=s010a + serverroles=loginnode + kitrepoid=rhels6_ppc64 + #kitcompdeps= + ospkgdeps=libibverbs(ppc-32),libibverbs(ppc-64) + kitpkgdeps=ppe_rte_license,pperterh6p >= 1.2.0.10,pperteman >= 1.2.0.10,ppertesamples >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +#kitcomponent: +# basename=pperte_compute +# description=PE RTE for compute nodes +# version=1.2.0.10 +# release=s010a +# serverroles=compute +# kitrepoid=sles11_ppc64 +# #kitcompdeps= +# ospkgdeps=libibverbs(ppc-32),libibverbs(ppc-64) +# kitpkgdeps=ppe_rte_license,ppertesles11p >= 1.2.0.10,ppe_rte_man >= 1.2.0.10,ppe_rte_samples >= 1.2.0.10,src +# exlist=pe.exlist +# postinstall=pperte_postinstall +# postupgrade=pperte_postinstall +# postbootscripts=pperte_postboot + +#kitcomponent: +# basename=pperte_min-compute +# description=Minimal PE RTE for compute nodes +# version=1.2.0.10 +# release=s010a +# serverroles=compute +# kitrepoid=sles11_ppc64 +# #kitcompdeps= +# ospkgdeps=libibverbs(ppc-32),libibverbs(ppc-64) +# kitpkgdeps=ppe_rte_license,ppertesles11p >= 1.2.0.10,ppe_rte_man >= 1.2.0.10,ppe_rte_samples >= 1.2.0.10,src +# exlist=pe.exlist +# postinstall=pperte_postinstall +# postupgrade=pperte_postinstall +# postbootscripts=pperte_postboot + +#kitcomponent: +# basename=pperte_loginnode +# description=PE RTE for login nodes +# version=1.2.0.10 +# release=s010a +# serverroles=loginnode +# kitrepoid=sles11_ppc64 +# #kitcompdeps= +# ospkgdeps=libibverbs(ppc-32),libibverbs(ppc-64) +# kitpkgdeps=ppe_rte_license,ppertesles11p >= 1.2.0.10,ppe_rte_man >= 1.2.0.10,ppe_rte_samples >= 1.2.0.10,src +# exlist=pe.exlist +# postinstall=pperte_postinstall +# postupgrade=pperte_postinstall +# postbootscripts=pperte_postboot + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. + +### RH6 ppc64 rpms +kitpackage: + filename=pperterh6p-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=pperteman-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=ppertesamples-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=ppe_rte_rh6p_12010-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=ppe_rte_man-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=ppe_rte_samples-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +### SLES11 ppc64 rpms +#kitpackage: +# filename=ppertesles11p-1.2.0.10-s010a.ppc64.rpm +# kitrepoid=sles11_ppc64 +# # Method 1: Use pre-built RPM package +# isexternalpkg=no +# rpm_prebuiltdir=amd64_sles_11.0.0 + +kitpackage: + filename=pperteman-1.2.0.10-s010a.ppc64.rpm + kitrepoid=sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 + +kitpackage: + filename=ppertesamples-1.2.0.10-s010a.ppc64.rpm + kitrepoid=sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 + +#kitpackage: +# filename=ppe_rte_sles11p_12010-1.2.0.10-s010a.ppc64.rpm +# kitrepoid=sles11_ppc64 +# # Method 1: Use pre-built RPM package +# isexternalpkg=no +# rpm_prebuiltdir=amd64_sles_11.0.0 + +kitpackage: + filename=ppe_rte_man-1.2.0.10-s010a.ppc64.rpm + kitrepoid=sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 + +kitpackage: + filename=ppe_rte_samples-1.2.0.10-s010a.ppc64.rpm + kitrepoid=sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 +kitpackage: + filename=src-1.3.1.1-12080.ppc.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + + +### License rpm gets placed in all repos +kitpackage: + filename=ppe_rte_license-1.2.0.10-s010a.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 diff --git a/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/other_files/pe.env b/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/other_files/pe.env new file mode 100644 index 000000000..f2d982d78 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/other_files/pe.env @@ -0,0 +1,2 @@ +#ENV:IBM_PPE_RTE_LICENSE_ACCEPT=yes# + diff --git a/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/other_files/pe.exlist b/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/other_files/pe.exlist new file mode 100755 index 000000000..847caaab1 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/other_files/pe.exlist @@ -0,0 +1,11 @@ +./opt/ibmhpc/lapi/include* +./opt/ibmhpc/lapi/pnsd/include* +./opt/ibmhpc/lapi/samples* + +./opt/ibmhpc/ppe.poe/include* +./opt/ibmhpc/ppe.poe/man/* +./opt/ibmhpc/ppe.poe/samples* +./opt/ibmhpc/hal/include* +./etc/opt/ibmhpc/license/*.txt + + diff --git a/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/scripts/pperte_postboot b/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/scripts/pperte_postboot new file mode 100755 index 000000000..1895a26e9 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/scripts/pperte_postboot @@ -0,0 +1,32 @@ +#!/bin/sh +# +# +# For Linux: +# - Generate mpi modules +# - Generate and store checkpoint key +# - BSR support configuration + +# Generate mpi modules + gen_xlf=`grep PE_LATEST_LEVEL /etc/ppe.cfg | cut -f2 -d ' ' `/mpich2/sbin/xlf_gen_mpimod + if [ -x $gen_xlf ] ; then + $gen_xlf + fi + +#Generate checkpoint key and store it into the image, ckpt script could ust it after boot. + KEY=$(dd if=/dev/random count=1 2>/dev/null | sha1sum | awk '{print $1}') + echo $KEY > /root/.ckpt.key + chmod 400 /root/.ckpt.key + + +# BSR configuration, uncomment the following lines to enable BSR configuration on Power Linux cluster. +# groupadd bsr +# mkdir -p /var/lib/bsr +# chown root:bsr /var/lib/bsr +# chmod g+sw /var/lib/bsr + + +# pelinks script support, uncomment the following lines and change to the correct pe version that you intend to use. +#PE_VERSION=1202 +# if [ -f "/proc/cmdline" ]; then +# MP_CONFIG=$PE_VERSION /opt/ibmhpc/pe$PE_VERSION/ppe.poe/bin/pelinks +# fi diff --git a/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/scripts/pperte_postinstall b/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/scripts/pperte_postinstall new file mode 100755 index 000000000..541bd3ad1 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/pperte-ppc64/scripts/pperte_postinstall @@ -0,0 +1,37 @@ +#!/bin/sh +# +# +# For Linux: +# - Create a smaller PNSD log file in /tmp +# - Configure poe.limits file +# - Generate and store checkpoint key +# - BSR support configuration + +# Configure the PNSD.cfg to use a smaller log so it doesn't use so much memory +# for a stateless image. Normally, pnsd creates this file if it does not +# exist, but it will not fill it in if it does exist. +if [ ! -f /etc/PNSD.cfg ]; then + echo "log_file = /tmp/serverlog" > /etc/PNSD.cfg + echo "log_file_size = 2097152" >> /etc/PNSD.cfg + echo "socket_file = /tmp/PNSD" >> /etc/PNSD.cfg +else + /bin/sed -i 's/log_file_size = .*/log_file_size = 2097152/g' /etc/PNSD.cfg + if [ -f "/proc/cmdline" ]; then + stopsrc -s pnsd + startsrc -s pnsd + fi +fi + +# Configure the poe.limits file +if [ ! -f /etc/poe.limits ]; then + echo "MP_POE_LAUNCH=all" > /etc/poe.limits +else + /bin/sed -i 's/MP_POE_LAUNCH=.*/MP_POE_LAUNCH=all/g' /etc/poe.limits +fi + + +# POE requires rsh to be running + /bin/sed -i 's/disable.*/disable = no/g' /etc/xinetd.d/rsh + if [ -f "/proc/cmdline" ]; then + service xinetd restart + fi diff --git a/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/buildkit.conf b/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/buildkit.conf new file mode 100644 index 000000000..601de986e --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/buildkit.conf @@ -0,0 +1,343 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=pperte + description=Parallel Environment Runtime Edition + version=1.2.0.10 + ostype=Linux + kitdeployparams=pe.env + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 x86_64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., x86_64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_x86_64 + osbasename=rhels + osmajorversion=6 + osarch=x86_64 + +kitrepo: + kitrepoid=sles11_x86_64 + osbasename=sles + osmajorversion=11 + osarch=x86_64 + + #compat_osbasenames= + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=pperte_compute + description=PE RTE for compute nodes + version=1.2.0.10 + release=s010a + serverroles=compute + kitrepoid=rhels6_x86_64 + #kitcompdeps= + ospkgdeps=libibverbs(x86-32),libibverbs(x86-64) + kitpkgdeps=ppe_rte_license,pperterh6x >= 1.2.0.10,pperteman >= 1.2.0.10,ppertesamples >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot,pperte_postinstall + +kitcomponent: + basename=min_pperte_compute + description=Minimal PE RTE for compute nodes + version=1.2.0.10 + release=s010a + serverroles=compute + kitrepoid=rhels6_x86_64 + #kitcompdeps= + ospkgdeps=libibverbs(x86-32),libibverbs(x86-64) + kitpkgdeps=ppe_rte_license,pperterh6x >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=pperte_loginnode + description=PE RTE for login nodes + version=1.2.0.10 + release=s010a + serverroles=loginnode + kitrepoid=rhels6_x86_64 + #kitcompdeps= + ospkgdeps=libibverbs(x86-32),libibverbs(x86-64) + kitpkgdeps=ppe_rte_license,pperterh6x >= 1.2.0.10,ppe_rte_man >= 1.2.0.10,ppertesamples >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=pperte_compute + description=PE RTE for compute nodes + version=1.2.0.10 + release=s010a + serverroles=compute + kitrepoid=sles11_x86_64 + #kitcompdeps= + ospkgdeps=libibverbs(x86-32),libibverbs(x86-64) + kitpkgdeps=ppe_rte_license,ppertesles11x >= 1.2.0.10,pperteman >= 1.2.0.10,ppertesamples >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=min_pperte_compute + description=Minimal PE RTE for compute nodes + version=1.2.0.10 + release=s010a + serverroles=compute + kitrepoid=sles11_x86_64 + #kitcompdeps= + ospkgdeps=libibverbs(x86-32),libibverbs(x86-64) + kitpkgdeps=ppe_rte_license,ppertesles11x >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +kitcomponent: + basename=pperte_loginnode + description=PE RTE for login nodes + version=1.2.0.10 + release=s010a + serverroles=loginnode + kitrepoid=sles11_x86_64 + #kitcompdeps= + ospkgdeps=libibverbs(x86-32),libibverbs(x86-64) + kitpkgdeps=ppe_rte_license,ppertesles11x >= 1.2.0.10,pperteman >= 1.2.0.10,ppertesamples >= 1.2.0.10,src + exlist=pe.exlist + postinstall=pperte_postinstall + postupgrade=pperte_postinstall + postbootscripts=pperte_postboot + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. + +### RH6 x86_64 rpms +kitpackage: + filename=pperterh6x-1.2.0.10-s010a.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=pperteman-1.2.0.10-s010a.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=ppertesamples-1.2.0.10-s010a.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=ppe_rte_rh6x_12010-1.2.0.10-s010a.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=ppe_rte_man-1.2.0.10-s010a.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=ppe_rte_samples-1.2.0.10-s010a.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +### SLES11 x86_64 rpms +kitpackage: + filename=ppertesles11x-1.2.0.10-s010a.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 + +kitpackage: + filename=pperteman-1.2.0.10-s010a.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 + +kitpackage: + filename=ppertesamples-1.2.0.10-s010a.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 + +kitpackage: + filename=ppe_rte_sles11x_12010-1.2.0.10-s010a.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 + +kitpackage: + filename=ppe_rte_man-1.2.0.10-s010a.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 + +kitpackage: + filename=ppe_rte_samples-1.2.0.10-s010a.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 + +kitpackage: + filename=src-1.3.1.1-12080.i386.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +### License rpm gets placed in all repos +kitpackage: + filename=ppe_rte_license-1.2.0.0-1208e.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 diff --git a/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/other_files/pe.env b/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/other_files/pe.env new file mode 100644 index 000000000..f2d982d78 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/other_files/pe.env @@ -0,0 +1,2 @@ +#ENV:IBM_PPE_RTE_LICENSE_ACCEPT=yes# + diff --git a/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/other_files/pe.exlist b/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/other_files/pe.exlist new file mode 100644 index 000000000..847caaab1 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/other_files/pe.exlist @@ -0,0 +1,11 @@ +./opt/ibmhpc/lapi/include* +./opt/ibmhpc/lapi/pnsd/include* +./opt/ibmhpc/lapi/samples* + +./opt/ibmhpc/ppe.poe/include* +./opt/ibmhpc/ppe.poe/man/* +./opt/ibmhpc/ppe.poe/samples* +./opt/ibmhpc/hal/include* +./etc/opt/ibmhpc/license/*.txt + + diff --git a/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/scripts/pperte_postboot b/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/scripts/pperte_postboot new file mode 100755 index 000000000..1895a26e9 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/scripts/pperte_postboot @@ -0,0 +1,32 @@ +#!/bin/sh +# +# +# For Linux: +# - Generate mpi modules +# - Generate and store checkpoint key +# - BSR support configuration + +# Generate mpi modules + gen_xlf=`grep PE_LATEST_LEVEL /etc/ppe.cfg | cut -f2 -d ' ' `/mpich2/sbin/xlf_gen_mpimod + if [ -x $gen_xlf ] ; then + $gen_xlf + fi + +#Generate checkpoint key and store it into the image, ckpt script could ust it after boot. + KEY=$(dd if=/dev/random count=1 2>/dev/null | sha1sum | awk '{print $1}') + echo $KEY > /root/.ckpt.key + chmod 400 /root/.ckpt.key + + +# BSR configuration, uncomment the following lines to enable BSR configuration on Power Linux cluster. +# groupadd bsr +# mkdir -p /var/lib/bsr +# chown root:bsr /var/lib/bsr +# chmod g+sw /var/lib/bsr + + +# pelinks script support, uncomment the following lines and change to the correct pe version that you intend to use. +#PE_VERSION=1202 +# if [ -f "/proc/cmdline" ]; then +# MP_CONFIG=$PE_VERSION /opt/ibmhpc/pe$PE_VERSION/ppe.poe/bin/pelinks +# fi diff --git a/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/scripts/pperte_postinstall b/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/scripts/pperte_postinstall new file mode 100755 index 000000000..541bd3ad1 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppe/pperte-x86_64/scripts/pperte_postinstall @@ -0,0 +1,37 @@ +#!/bin/sh +# +# +# For Linux: +# - Create a smaller PNSD log file in /tmp +# - Configure poe.limits file +# - Generate and store checkpoint key +# - BSR support configuration + +# Configure the PNSD.cfg to use a smaller log so it doesn't use so much memory +# for a stateless image. Normally, pnsd creates this file if it does not +# exist, but it will not fill it in if it does exist. +if [ ! -f /etc/PNSD.cfg ]; then + echo "log_file = /tmp/serverlog" > /etc/PNSD.cfg + echo "log_file_size = 2097152" >> /etc/PNSD.cfg + echo "socket_file = /tmp/PNSD" >> /etc/PNSD.cfg +else + /bin/sed -i 's/log_file_size = .*/log_file_size = 2097152/g' /etc/PNSD.cfg + if [ -f "/proc/cmdline" ]; then + stopsrc -s pnsd + startsrc -s pnsd + fi +fi + +# Configure the poe.limits file +if [ ! -f /etc/poe.limits ]; then + echo "MP_POE_LAUNCH=all" > /etc/poe.limits +else + /bin/sed -i 's/MP_POE_LAUNCH=.*/MP_POE_LAUNCH=all/g' /etc/poe.limits +fi + + +# POE requires rsh to be running + /bin/sed -i 's/disable.*/disable = no/g' /etc/xinetd.d/rsh + if [ -f "/proc/cmdline" ]; then + service xinetd restart + fi diff --git a/xCAT-server/share/xcat/kit_build/ppedev/partial-ppedev-ppc64/buildkit.conf b/xCAT-server/share/xcat/kit_build/ppedev/partial-ppedev-ppc64/buildkit.conf new file mode 100644 index 000000000..0b459d33e --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppedev/partial-ppedev-ppc64/buildkit.conf @@ -0,0 +1,209 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=ppedev + description=Parallel Environment Developer Edition + version=1.3.0 + ostype=Linux + kitdeployparams=ppedev.env + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 x86_64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., x86_64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=ppedev_compute + description=ppe developer edition for compute node + version=1.3.0 + release=0 + serverroles=compute + kitrepoid=rhels6_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=ppedev_hpct_rh6p >= 1.3.0-0,ppedev_ptp_rte_rh6p >= 1.3.0-0,ppedev_runtime_rh6p >= 1.3.0-0,ppedev_license >= 1.3.0-0,ppedev_ptp_rh6p >= 1.3.0-0 + +kitcomponent: + basename=ppedev_loginnode + description=ppe developer edition for compute node + version=1.3.0 + release=0 + serverroles=compute + kitrepoid=rhels6_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=ppedev_hpct_rh6p >= 1.3.0-0,ppedev_ptp_rte_rh6p >= 1.3.0-0,ppedev_runtime_rh6p >= 1.3.0-0,ppedev_license >= 1.3.0-0,ppedev_ptp_rh6p >= 1.3.0-0 + + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=yes, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. + +kitpackage: + filename=ppedev_hpct_rh6p-1.3.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=ppedev_license-1.3.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=ppedev_ptp_rh6p-1.3.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=ppedev_ptp_rte_rh6p-1.3.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=ppedev_runtime_rh6p-1.3.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + diff --git a/xCAT-server/share/xcat/kit_build/ppedev/partial-ppedev-ppc64/other_files/ppedev.env b/xCAT-server/share/xcat/kit_build/ppedev/partial-ppedev-ppc64/other_files/ppedev.env new file mode 100644 index 000000000..524c8af4a --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppedev/partial-ppedev-ppc64/other_files/ppedev.env @@ -0,0 +1 @@ +#ENV:IBM_PPEDEV_LICENSE_ACCEPT=yes# diff --git a/xCAT-server/share/xcat/kit_build/ppedev/partial-ppedev-x86_64/buildkit.conf b/xCAT-server/share/xcat/kit_build/ppedev/partial-ppedev-x86_64/buildkit.conf new file mode 100644 index 000000000..a92db692c --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppedev/partial-ppedev-x86_64/buildkit.conf @@ -0,0 +1,281 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=ppedev + description=Parallel Environment Developer Edition + version=1.3.0 + ostype=Linux + kitdeployparams=ppedev.env + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 x86_64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., x86_64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_x86_64 + osbasename=rhels + osmajorversion=6 + osarch=x86_64 + +kitrepo: + kitrepoid=sles11_x86_64 + osbasename=sles + osmajorversion=11 + osarch=x86_64 + + + #compat_osbasenames= + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=ppedev_compute + description=ppe developer edition for compute node + version=1.3.0 + release=0 + serverroles=compute + kitrepoid=rhels6_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=ppedev_hpct_rh6x >= 1.3.0-0,ppedev_ptp_rte_rh6x >= 1.3.0-0,ppedev_runtime_rh6x >= 1.3.0-0,ppedev_license >= 1.3.0-0,ppedev_ptp_rh6x >= 1.3.0-0 + +kitcomponent: + basename=ppedev_loginnode + description=ppe developer edition for login node + version=1.3.0 + release=0 + serverroles=loginnode + kitrepoid=rhels6_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=ppedev_hpct_rh6x >= 1.3.0-0,ppedev_ptp_rte_rh6x >= 1.3.0-0,ppedev_runtime_rh6x >= 1.3.0-0,ppedev_license >= 1.3.0-0,ppedev_ptp_rh6x >= 1.3.0-0 + +kitcomponent: + basename=ppedev_compute + description=ppe developer edition for compute node + version=1.3.0 + release=0 + serverroles=compute + kitrepoid=sles11_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=ppedev_hpct_sles11x >= 1.3.0-0,ppedev_ptp_rte_sles11x >= 1.3.0-0,ppedev_runtime_sles11x >= 1.3.0-0,ppedev_license >= 1.3.0-0,ppedev_ptp_sles11x >= 1.3.0-0 + +kitcomponent: + basename=ppedev_loginnode + description=ppe developer edition for login node + version=1.3.0 + release=0 + serverroles=loginnode + kitrepoid=sles11_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=ppedev_hpct_sles11x >= 1.3.0-0,ppedev_ptp_rte_sles11x >= 1.3.0-0,ppedev_runtime_sles11x >= 1.3.0-0,ppedev_license >= 1.3.0-0,ppedev_ptp_sles11x >= 1.3.0-0 + + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=yes, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. + +kitpackage: + filename=ppedev_hpct_rh6x-1.3.0-0.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=ppedev_license-1.3.0-0.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=ppedev_ptp_rh6x-1.3.0-0.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=ppedev_ptp_rte_rh6x-1.3.0-0.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=ppedev_runtime_rh6x-1.3.0-0.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=ppedev_license-1.3.0-0.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=ppedev_ptp_rte_sles11x-1.3.0-0.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + + +kitpackage: + filename=ppedev_ptp_sles11x-1.3.0-0.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + + +kitpackage: + filename=ppedev_hpct_sles11x-1.3.0-0.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + + +kitpackage: + filename=ppedev_runtime_sles11x-1.3.0-0.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + + diff --git a/xCAT-server/share/xcat/kit_build/ppedev/partial-ppedev-x86_64/other_files/ppedev.env b/xCAT-server/share/xcat/kit_build/ppedev/partial-ppedev-x86_64/other_files/ppedev.env new file mode 100644 index 000000000..524c8af4a --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppedev/partial-ppedev-x86_64/other_files/ppedev.env @@ -0,0 +1 @@ +#ENV:IBM_PPEDEV_LICENSE_ACCEPT=yes# diff --git a/xCAT-server/share/xcat/kit_build/ppedev/ppedev-ppc64/buildkit.conf b/xCAT-server/share/xcat/kit_build/ppedev/ppedev-ppc64/buildkit.conf new file mode 100644 index 000000000..06ce830af --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppedev/ppedev-ppc64/buildkit.conf @@ -0,0 +1,211 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=ppedev + description=Parallel Environment Developer Edition + version=1.3.0 + ostype=Linux + kitdeployparams=ppedev.env + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 x86_64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., x86_64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + #compat_osbasenames= + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=ppedev_compute + description=ppe developer edition for compute node + version=1.3.0 + release=0 + serverroles=compute + kitrepoid=rhels6_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=ppedev_hpct_rh6p >= 1.3.0-0,ppedev_ptp_rte_rh6p >= 1.3.0-0,ppedev_runtime_rh6p >= 1.3.0-0,ppedev_license >= 1.3.0-0,ppedev_ptp_rh6p >= 1.3.0-0 + +kitcomponent: + basename=ppedev_loginnode + description=ppe developer edition for compute node + version=1.3.0 + release=0 + serverroles=compute + kitrepoid=rhels6_ppc64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=ppedev_hpct_rh6p >= 1.3.0-0,ppedev_ptp_rte_rh6p >= 1.3.0-0,ppedev_runtime_rh6p >= 1.3.0-0,ppedev_license >= 1.3.0-0,ppedev_ptp_rh6p >= 1.3.0-0 + + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. + +kitpackage: + filename=ppedev_hpct_rh6p-1.3.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=pwr64_redhat_6.0.0 + +kitpackage: + filename=ppedev_license-1.3.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=pwr64_redhat_6.0.0 + +kitpackage: + filename=ppedev_ptp_rh6p-1.3.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=pwr64_redhat_6.0.0 + +kitpackage: + filename=ppedev_ptp_rte_rh6p-1.3.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=pwr64_redhat_6.0.0 + +kitpackage: + filename=ppedev_runtime_rh6p-1.3.0-0.ppc64.rpm + kitrepoid=rhels6_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=pwr64_redhat_6.0.0 diff --git a/xCAT-server/share/xcat/kit_build/ppedev/ppedev-ppc64/other_files/ppedev.env b/xCAT-server/share/xcat/kit_build/ppedev/ppedev-ppc64/other_files/ppedev.env new file mode 100644 index 000000000..524c8af4a --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppedev/ppedev-ppc64/other_files/ppedev.env @@ -0,0 +1 @@ +#ENV:IBM_PPEDEV_LICENSE_ACCEPT=yes# diff --git a/xCAT-server/share/xcat/kit_build/ppedev/ppedev-x86_64/buildkit.conf b/xCAT-server/share/xcat/kit_build/ppedev/ppedev-x86_64/buildkit.conf new file mode 100644 index 000000000..05d714d95 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppedev/ppedev-x86_64/buildkit.conf @@ -0,0 +1,281 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=ppedev + description=Parallel Environment Developer Edition + version=1.3.0 + ostype=Linux + kitdeployparams=ppedev.env + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 x86_64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., x86_64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_x86_64 + osbasename=rhels + osmajorversion=6 + osarch=x86_64 + +kitrepo: + kitrepoid=sles11_x86_64 + osbasename=sles + osmajorversion=11 + osarch=x86_64 + + + #compat_osbasenames= + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=ppedev_compute + description=ppe developer edition for compute node + version=1.3.0 + release=0 + serverroles=compute + kitrepoid=rhels6_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=ppedev_hpct_rh6x >= 1.3.0-0,ppedev_ptp_rte_rh6x >= 1.3.0-0,ppedev_runtime_rh6x >= 1.3.0-0,ppedev_license >= 1.3.0-0,ppedev_ptp_rh6x >= 1.3.0-0 + +kitcomponent: + basename=ppedev_loginnode + description=ppe developer edition for login node + version=1.3.0 + release=0 + serverroles=loginnode + kitrepoid=rhels6_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=ppedev_hpct_rh6x >= 1.3.0-0,ppedev_ptp_rte_rh6x >= 1.3.0-0,ppedev_runtime_rh6x >= 1.3.0-0,ppedev_license >= 1.3.0-0,ppedev_ptp_rh6x >= 1.3.0-0 + +kitcomponent: + basename=ppedev_compute + description=ppe developer edition for compute node + version=1.3.0 + release=0 + serverroles=compute + kitrepoid=sles11_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=ppedev_hpct_sles11x >= 1.3.0-0,ppedev_ptp_rte_sles11x >= 1.3.0-0,ppedev_runtime_sles11x >= 1.3.0-0,ppedev_license >= 1.3.0-0,ppedev_ptp_sles11x >= 1.3.0-0 + +kitcomponent: + basename=ppedev_loginnode + description=ppe developer edition for login node + version=1.3.0 + release=0 + serverroles=loginnode + kitrepoid=sles11_x86_64 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=ppedev_hpct_sles11x >= 1.3.0-0,ppedev_ptp_rte_sles11x >= 1.3.0-0,ppedev_runtime_sles11x >= 1.3.0-0,ppedev_license >= 1.3.0-0,ppedev_ptp_sles11x >= 1.3.0-0 + + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. + +kitpackage: + filename=ppedev_hpct_rh6x-1.3.0-0.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=ppedev_license-1.3.0-0.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=ppedev_ptp_rh6x-1.3.0-0.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=ppedev_ptp_rte_rh6x-1.3.0-0.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=ppedev_runtime_rh6x-1.3.0-0.x86_64.rpm + kitrepoid=rhels6_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_redhat_6.0.0 + +kitpackage: + filename=ppedev_license-1.3.0-0.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 + +kitpackage: + filename=ppedev_ptp_rte_sles11x-1.3.0-0.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 + + +kitpackage: + filename=ppedev_ptp_sles11x-1.3.0-0.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 + + +kitpackage: + filename=ppedev_hpct_sles11x-1.3.0-0.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 + + +kitpackage: + filename=ppedev_runtime_sles11x-1.3.0-0.x86_64.rpm + kitrepoid=sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=amd64_sles_11.0.0 + + diff --git a/xCAT-server/share/xcat/kit_build/ppedev/ppedev-x86_64/other_files/ppedev.env b/xCAT-server/share/xcat/kit_build/ppedev/ppedev-x86_64/other_files/ppedev.env new file mode 100644 index 000000000..524c8af4a --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/ppedev/ppedev-x86_64/other_files/ppedev.env @@ -0,0 +1 @@ +#ENV:IBM_PPEDEV_LICENSE_ACCEPT=yes# diff --git a/xCAT-server/share/xcat/kit_build/teal/partial-teal-ppc64/buildkit.conf b/xCAT-server/share/xcat/kit_build/teal/partial-teal-ppc64/buildkit.conf new file mode 100644 index 000000000..cdc58e78f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/teal/partial-teal-ppc64/buildkit.conf @@ -0,0 +1,306 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=teal + description=teal for Linux + version=1.2.0.2 + ostype=Linux +# kitdeployparams= + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 ppc64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., ppc64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + +kitrepo: + kitrepoid=sles11_ppc64 + osbasename=sles + osmajorversion=11 + osarch=ppc64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,mgtnode,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=teal-base + description=teal for management nodes + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_ppc64 + kitpkgdeps=teal-base >= 1.2.0.2 + +kitcomponent: + basename=teal-isnm + description=teal for isnm + version=1.2.0.1 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_ppc64 + kitpkgdeps=teal-isnm >= 1.2.0.1 + +kitcomponent: + basename=teal-ll + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_ppc64 + kitpkgdeps=teal-isnm >= 1.2.0.0 + +kitcomponent: + basename=teal-pnsd + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_ppc64 + kitpkgdeps=teal-pnsd >= 1.2.0.0 + +kitcomponent: + basename=teal-sfp + description=teal for sfp + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_ppc64 + kitpkgdeps=teal-sfp >= 1.2.0.0 + +kitcomponent: + basename=teal-test + description=teal test + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_ppc64 + kitpkgdeps=teal-test >= 1.2.0.2 + +kitcomponent: + basename=teal-base + description=teal for management nodes + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=sles11_ppc64 + kitpkgdeps=teal-base >= 1.2.0.2 + +kitcomponent: + basename=teal-isnm + description=teal for isnm + version=1.2.0.1 + release=1 + serverroles=mgtnode + kitrepoid=sles11_ppc64 + kitpkgdeps=teal-isnm >= 1.2.0.1 + +kitcomponent: + basename=teal-ll + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=sles11_ppc64 + kitpkgdeps=teal-isnm >= 1.2.0.0 + +kitcomponent: + basename=teal-pnsd + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=sles11_ppc64 + kitpkgdeps=teal-pnsd >= 1.2.0.0 + +kitcomponent: + basename=teal-sfp + description=teal for sfp + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=sles11_ppc64 + kitpkgdeps=teal-sfp >= 1.2.0.0 + +kitcomponent: + basename=teal-test + description=teal test + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=sles11_ppc64 + kitpkgdeps=teal-test >= 1.2.0.2 + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=yes, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=teal-base-1.2.0.2-1.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=teal-isnm-1.2.0.1-1.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=teal-ll-1.2.0.0-1.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=teal-pnsd-1.2.0.0-1.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=teal-sfp-1.2.0.0-1.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=teal-test-1.2.0.2-1.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + diff --git a/xCAT-server/share/xcat/kit_build/teal/partial-teal-ppc64/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/teal/partial-teal-ppc64/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/teal/partial-teal-ppc64/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/teal/partial-teal-ppc64/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/teal/partial-teal-ppc64/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/teal/partial-teal-ppc64/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/teal/partial-teal-x86_64/buildkit.conf b/xCAT-server/share/xcat/kit_build/teal/partial-teal-x86_64/buildkit.conf new file mode 100644 index 000000000..30f47a85b --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/teal/partial-teal-x86_64/buildkit.conf @@ -0,0 +1,306 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=teal + description=teal for Linux + version=1.2.0.2 + ostype=Linux +# kitdeployparams= + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 x86_64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., x86_64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_x86_64 + osbasename=rhels + osmajorversion=6 + osarch=x86_64 + +kitrepo: + kitrepoid=sles11_x86_64 + osbasename=sles + osmajorversion=11 + osarch=x86_64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,mgtnode,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=teal-base + description=teal for management nodes + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_x86_64 + kitpkgdeps=teal-base >= 1.2.0.2 + +kitcomponent: + basename=teal-isnm + description=teal for isnm + version=1.2.0.1 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_x86_64 + kitpkgdeps=teal-isnm >= 1.2.0.1 + +kitcomponent: + basename=teal-ll + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_x86_64 + kitpkgdeps=teal-isnm >= 1.2.0.0 + +kitcomponent: + basename=teal-pnsd + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_x86_64 + kitpkgdeps=teal-pnsd >= 1.2.0.0 + +kitcomponent: + basename=teal-sfp + description=teal for sfp + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_x86_64 + kitpkgdeps=teal-sfp >= 1.2.0.0 + +kitcomponent: + basename=teal-test + description=teal test + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_x86_64 + kitpkgdeps=teal-test >= 1.2.0.2 + +kitcomponent: + basename=teal-base + description=teal for management nodes + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=sles11_x86_64 + kitpkgdeps=teal-base >= 1.2.0.2 + +kitcomponent: + basename=teal-isnm + description=teal for isnm + version=1.2.0.1 + release=1 + serverroles=mgtnode + kitrepoid=sles11_x86_64 + kitpkgdeps=teal-isnm >= 1.2.0.1 + +kitcomponent: + basename=teal-ll + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=sles11_x86_64 + kitpkgdeps=teal-isnm >= 1.2.0.0 + +kitcomponent: + basename=teal-pnsd + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=sles11_x86_64 + kitpkgdeps=teal-pnsd >= 1.2.0.0 + +kitcomponent: + basename=teal-sfp + description=teal for sfp + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=sles11_x86_64 + kitpkgdeps=teal-sfp >= 1.2.0.0 + +kitcomponent: + basename=teal-test + description=teal test + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=sles11_x86_64 + kitpkgdeps=teal-test >= 1.2.0.2 + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=yes, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=teal-base-1.2.0.2-1.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=teal-isnm-1.2.0.1-1.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=teal-ll-1.2.0.0-1.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=teal-pnsd-1.2.0.0-1.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=teal-sfp-1.2.0.0-1.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + + +kitpackage: + filename=teal-test-1.2.0.2-1.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=yes + diff --git a/xCAT-server/share/xcat/kit_build/teal/partial-teal-x86_64/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/teal/partial-teal-x86_64/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/teal/partial-teal-x86_64/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/teal/partial-teal-x86_64/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/teal/partial-teal-x86_64/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/teal/partial-teal-x86_64/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/teal/teal-ppc64/buildkit.conf b/xCAT-server/share/xcat/kit_build/teal/teal-ppc64/buildkit.conf new file mode 100644 index 000000000..c3a11b39b --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/teal/teal-ppc64/buildkit.conf @@ -0,0 +1,306 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=teal + description=teal for Linux + version=1.2.0.2 + ostype=Linux +# kitdeployparams= + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 ppc64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., ppc64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_ppc64 + osbasename=rhels + osmajorversion=6 + osarch=ppc64 + +kitrepo: + kitrepoid=sles11_ppc64 + osbasename=sles + osmajorversion=11 + osarch=ppc64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,mgtnode,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=teal-base + description=teal for management nodes + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_ppc64 + kitpkgdeps=teal-base >= 1.2.0.2 + +kitcomponent: + basename=teal-isnm + description=teal for isnm + version=1.2.0.1 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_ppc64 + kitpkgdeps=teal-isnm >= 1.2.0.1 + +kitcomponent: + basename=teal-ll + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_ppc64 + kitpkgdeps=teal-isnm >= 1.2.0.0 + +kitcomponent: + basename=teal-pnsd + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_ppc64 + kitpkgdeps=teal-pnsd >= 1.2.0.0 + +kitcomponent: + basename=teal-sfp + description=teal for sfp + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_ppc64 + kitpkgdeps=teal-sfp >= 1.2.0.0 + +kitcomponent: + basename=teal-test + description=teal test + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_ppc64 + kitpkgdeps=teal-test >= 1.2.0.2 + +kitcomponent: + basename=teal-base + description=teal for management nodes + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=sles11_ppc64 + kitpkgdeps=teal-base >= 1.2.0.2 + +kitcomponent: + basename=teal-isnm + description=teal for isnm + version=1.2.0.1 + release=1 + serverroles=mgtnode + kitrepoid=sles11_ppc64 + kitpkgdeps=teal-isnm >= 1.2.0.1 + +kitcomponent: + basename=teal-ll + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=sles11_ppc64 + kitpkgdeps=teal-isnm >= 1.2.0.0 + +kitcomponent: + basename=teal-pnsd + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=sles11_ppc64 + kitpkgdeps=teal-pnsd >= 1.2.0.0 + +kitcomponent: + basename=teal-sfp + description=teal for sfp + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=sles11_ppc64 + kitpkgdeps=teal-sfp >= 1.2.0.0 + +kitcomponent: + basename=teal-test + description=teal test + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=sles11_ppc64 + kitpkgdeps=teal-test >= 1.2.0.2 + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=teal-base-1.2.0.2-1.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=teal-isnm-1.2.0.1-1.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=teal-ll-1.2.0.0-1.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=teal-pnsd-1.2.0.0-1.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=teal-sfp-1.2.0.0-1.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=teal-test-1.2.0.2-1.ppc64.rpm + kitrepoid=rhels6_ppc64,sles11_ppc64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= diff --git a/xCAT-server/share/xcat/kit_build/teal/teal-ppc64/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/teal/teal-ppc64/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/teal/teal-ppc64/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/teal/teal-ppc64/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/teal/teal-ppc64/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/teal/teal-ppc64/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/teal/teal-x86_64/buildkit.conf b/xCAT-server/share/xcat/kit_build/teal/teal-x86_64/buildkit.conf new file mode 100644 index 000000000..75807ca61 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/teal/teal-x86_64/buildkit.conf @@ -0,0 +1,306 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=teal + description=teal for Linux + version=1.2.0.2 + ostype=Linux +# kitdeployparams= + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 x86_64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., x86_64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6_x86_64 + osbasename=rhels + osmajorversion=6 + osarch=x86_64 + +kitrepo: + kitrepoid=sles11_x86_64 + osbasename=sles + osmajorversion=11 + osarch=x86_64 + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,mgtnode,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=teal-base + description=teal for management nodes + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_x86_64 + kitpkgdeps=teal-base >= 1.2.0.2 + +kitcomponent: + basename=teal-isnm + description=teal for isnm + version=1.2.0.1 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_x86_64 + kitpkgdeps=teal-isnm >= 1.2.0.1 + +kitcomponent: + basename=teal-ll + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_x86_64 + kitpkgdeps=teal-isnm >= 1.2.0.0 + +kitcomponent: + basename=teal-pnsd + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_x86_64 + kitpkgdeps=teal-pnsd >= 1.2.0.0 + +kitcomponent: + basename=teal-sfp + description=teal for sfp + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_x86_64 + kitpkgdeps=teal-sfp >= 1.2.0.0 + +kitcomponent: + basename=teal-test + description=teal test + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_x86_64 + kitpkgdeps=teal-test >= 1.2.0.2 + +kitcomponent: + basename=teal-base + description=teal for management nodes + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=sles11_x86_64 + kitpkgdeps=teal-base >= 1.2.0.2 + +kitcomponent: + basename=teal-isnm + description=teal for isnm + version=1.2.0.1 + release=1 + serverroles=mgtnode + kitrepoid=sles11_x86_64 + kitpkgdeps=teal-isnm >= 1.2.0.1 + +kitcomponent: + basename=teal-ll + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=sles11_x86_64 + kitpkgdeps=teal-isnm >= 1.2.0.0 + +kitcomponent: + basename=teal-pnsd + description=teal for pnsd + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=sles11_x86_64 + kitpkgdeps=teal-pnsd >= 1.2.0.0 + +kitcomponent: + basename=teal-sfp + description=teal for sfp + version=1.2.0.0 + release=1 + serverroles=mgtnode + kitrepoid=sles11_x86_64 + kitpkgdeps=teal-sfp >= 1.2.0.0 + +kitcomponent: + basename=teal-test + description=teal test + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=sles11_x86_64 + kitpkgdeps=teal-test >= 1.2.0.2 + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=teal-base-1.2.0.2-1.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=teal-isnm-1.2.0.1-1.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=teal-ll-1.2.0.0-1.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=teal-pnsd-1.2.0.0-1.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=teal-sfp-1.2.0.0-1.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= + +kitpackage: + filename=teal-test-1.2.0.2-1.x86_64.rpm + kitrepoid=rhels6_x86_64,sles11_x86_64 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir= diff --git a/xCAT-server/share/xcat/kit_build/teal/teal-x86_64/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/teal/teal-x86_64/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/teal/teal-x86_64/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/teal/teal-x86_64/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/teal/teal-x86_64/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/teal/teal-x86_64/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/template/buildkit.conf b/xCAT-server/share/xcat/kit_build/template/buildkit.conf new file mode 100644 index 000000000..55d29e4c3 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/buildkit.conf @@ -0,0 +1,204 @@ +# Kit Build File +# +# This file was initially auto-generated by the buildkit CLI command. +# To create a new kit, the user should modify this file accordingly. +# Refer to the buildkit manpage for further details. +# + +# kit: This section defines general info for the Kit. +# There must be exactly one kit section in a kit build file. +# +# kit attributes: +# basename (mandatory) Kit base name. e.g., kit-lsf +# description (optional) Kit description. +# version (mandatory) Kit version. e.g., 1.0 +# ostype (mandatory) Kit OS type. Must be Linux. +# AIX is currently not supported. +# isinternal (optional) PCM use only. +# Indicate if Kit is for internal use. +# Use 1 for yes, 0 for no. Default: 0 +# kitdeployparams (optional) Filename containing a list of kit deployment +# parameters, relative to +# /other_files +kit: + basename=template + description=description for template + version=1.0 + ostype=Linux + kitdeployparams=sample/kitdeployparams.lst + + +# kitrepo: This section defines a Kit Package Repository. +# There must be at least one kitrepo section in a kit build file. +# If you want to support multiple OSes, you should create a separate +# repo for each OS. Also, no two repos can be defined with the same +# OS name, major/minor version and arch. For example, you cannot have +# two repos for RHEL 6.2 x86_64 in the same kit. +# +# kitrepo attributes: +# kitrepoid (mandatory) Kit package repository ID. +# Must be unique within this file. +# osbasename (mandatory) OS distro base name. e.g., rhels. +# osmajorversion (mandatory) OS major version. e.g., 6 +# osminorversion (optional) OS minor version. +# osarch (mandatory) OS architecture. e.g., x86_64 +# compat_osbasenames (optional) Comma-separated list of compatible +# OS distro base names. e.g., centos + +kitrepo: + kitrepoid=rhels6.3 + osbasename=rhels + osmajorversion=6 + osminorversion=3 + osarch=x86_64 + + #compat_osbasenames= + + +# kitcomponent: This section defines one Kit Component. +# There can be zero or more kitcomponent sections. +# If you want to build a component which supports multiple OSes, +# you should create one kitcomponent section for each OS. +# Also, no two components in a kit can be defined with the same +# base name. +# You can define multiple kit components with the same base name +# only if each kit component using this base name meets these +# requirements: +# - Each kit component must be defined with the same version +# and release number +# - Each kit component must be defined with a unique kitrepoid + +# +# kitcomponent attributes: +# basename (mandatory) Kit component base name +# description (optional) Kit component description +# version (mandatory) Kit component version +# release (mandatory) Kit component release +# serverroles (mandatory) Comma-separated list of servers that this +# component can install on. Valid values: +# mgtnode,servicenode,compute,loginnode,storagenode +# kitrepoid (mandatory) The ID of the kit package repository this +# component belongs to +# kitcompdeps (optional) Comma-separated list of kit component +# dependencies. These kit components can be included in +# this kit or in other kits. +# ospkgdeps (optional) Comma-separated list of OS package dependencies +# These packages must be shipped with the OS distro. +# kitpkgdeps (optional) Comma-separated list of kit package names that +# will be listed as "REQUIRES" when building this kit +# component. Each package must be defined in a separate +# kitpackage section. Each package must be in the same +# kitrepo as this kit component. +# non_native_pkgs (optional) TBD -- NOT SUPPORTED YET! +# Comma-separated list of non-native package +# paths that will be included as files in this kit +# component. All filenames are relative to +# /source_packages +# Kit component deployment scripts must be specified +# to manage these files. +# driverpacks (optional) Comma-separated list of driver package filenames +# Each driverpack must be defined in a separate kitpackage +# section. +# exlist (optional) Exclude list file for stateless image, relative +# to /other_files +# Kit component deployment scripts (optional) Each attribute specifies +# script path relative to /scripts +# Script attributes: +# preinstall, postinstall, preuninstall, postuninstall, +# preupgrade, postupgrade, postbootscripts +kitcomponent: + basename=template_compute + description=description for component template_compute + version=1.0 + release=1 + serverroles=compute + kitrepoid=rhels6.3 + #kitcompdeps= + #ospkgdeps= + kitpkgdeps=pkg1 + #kitpkgdeps=pkg1,pkg2,pkg2,pkg4 + #non_native_pkgs= + #driverpacks= + exlist=sample/exclude.lst + preinstall=sample/pre.sh + postinstall=sample/post.sh + preuninstall=sample/preun.sh + postuninstall=sample/postun.sh + preupgrade=sample/preup.sh + postupgrade=sample/postup.sh + postbootscripts=sample/postboot.sh + + +# kitpackage: This section defines one Kit Package, and how to build it. +# There can be zero or more kitpackage sections. +# All filenames should be relative paths to +# /source_packages +# If you want to build a package which can run on multiple OSes, +# you have two options: +# 1. Build a separate package for each OS you want to support. +# For this option, you need to define one kitpackage section +# per supported OS. +# 2. Build one package that can run on multiple OSes. +# If you are building an RPM package, you are responsible for +# creating an RPM spec file that can run on multiple OSes. +# For this option, you need to define one kitpackage section +# which contains multiple kitrepoid lines. +# +# kitpackage attributes: +# filename (mandatory) Package filename +# kitrepoid (mandatory) The repo(s) this package belongs to. +# If multiple repos are defined, the package will be built for +# the first repo only. For the other repos, a symlink is created +# to the package built for the first repo. +# Package build methods (optional) +# Define how to build the packages. +# If you don't specify a build method, the default behavior is +# to assume the package is pre-built under +# /source_packages +# All files in this section are relative to +# /source_packages +# There are four methods to build packages. +# 1. Use pre-built RPM package +# isexternalpkg: 'no'|'0', 'yes'|'1' (default: 'no') +# Indicates whether the RPM package will be added to the +# the kit tar file now as part of the kit build process, +# or whether the customer will need to separately +# obtain the RPM pacakage and add it to the kit tar file +# using 'buildkit addpkgs' +# rpm_prebuiltdir: If isexternalpkg=no, path to directory +# containing pre-built RPM package +# 2. Build RPM from spec + src dir +# rpm_spec: Path to spec file. +# rpm_srcdir: Path to source directory. +# 3. Build RPM from spec + src tarball +# rpm_spec: Path to spec file. +# rpm_srctarball: Path to source tarball. +# 4. Build RPM from source RPM +# rpm_srpm: Path to source RPM package. +kitpackage: + filename=pkg1-1-1.noarch.rpm + kitrepoid=rhels6.3 + # Method 1: Use pre-built RPM package + isexternalpkg=no + rpm_prebuiltdir=sample/pkg1 + +#kitpackage: +# filename=pkg2-1-1.noarch.rpm +# kitrepoid=rhels6.3 +# # Method 2: Build RPM from spec + src dir +# rpm_spec=sample/pkg2/pkg2.spec +# rpm_srcdir=sample/pkg2/pkg2 +# +#kitpackage: +# filename=pkg3-1-1.noarch.rpm +# kitrepoid=rhels6.3 +# # Method 3: Build RPM from spec + src tarball +# rpm_spec=sample/pkg3/pkg3.spec +# rpm_srctarball=sample/pkg3/pkg3.tar.gz +# +#kitpackage: +# filename=pkg4-1-1.noarch.rpm +# kitrepoid=rhels6.3 +# # Method 4: Build RPM from source RPM +# rpm_srpm=sample/pkg4/pkg4-1-1.src.rpm +# diff --git a/xCAT-server/share/xcat/kit_build/template/other_files/sample/exclude.lst b/xCAT-server/share/xcat/kit_build/template/other_files/sample/exclude.lst new file mode 100644 index 000000000..e69de29bb diff --git a/xCAT-server/share/xcat/kit_build/template/other_files/sample/kitdeployparams.lst b/xCAT-server/share/xcat/kit_build/template/other_files/sample/kitdeployparams.lst new file mode 100644 index 000000000..e69de29bb diff --git a/xCAT-server/share/xcat/kit_build/template/plugins/sample/imageprofile.pm b/xCAT-server/share/xcat/kit_build/template/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/plugins/sample/imageprofile.pm @@ -0,0 +1,175 @@ +package xCAT_plugin::<<>>_imageprofile; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Image Profile Kit Plugin + This plugin contains commands to run custom actions + during image profile operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitimagevalidatecomps => '<<>>_imageprofile', + kitimageimport => '<<>>_imageprofile', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # This kit plugin is passed the name of an image profile. + # We need to determine which kits is used by this + # image profile to decide if this plugin should run or not. + + my $imgprofilename = $request->{arg}->[0]; + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_image_profiles([$imgprofilename]); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Name of command and node list + my $command = $request->{command}->[0]; + my $args = $request->{arg}; + + if($command eq 'kitimagevalidatecomps') { + kitimagevalidatecomps($callback, $args); + } + elsif ($command eq 'kitimageimport') { + kitimageimport($callback, $args); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitimagevalidatecomps + + This command is called to validate new changes to an + image profile's kit component list before the changes + are committed. + +=cut + +#------------------------------------------------------- + +sub kitimagevalidatecomps { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + my $newcomplist = $args->[1]; + my @newcomplist = (); + if (defined($newcomplist)) { + @newcomplist = split(/,/, $newcomplist); + } + my $newosdistro = $args->[2]; + my $newosdistroupdate = $args->[3]; + + $rsp->{data}->[0] = "Running kitimagevalidatecomps"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitimageimport + + This command is called after changes to an image profile + have been committed. + +=cut + +#------------------------------------------------------- + +sub kitimageimport { + my $callback = shift; + my $args = shift; + my $rsp; + + # Parameters + my $imgprofilename = $args->[0]; + + $rsp->{data}->[0] = "Running kitimageimport"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + diff --git a/xCAT-server/share/xcat/kit_build/template/plugins/sample/nodemgmt.pm b/xCAT-server/share/xcat/kit_build/template/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/plugins/sample/nodemgmt.pm @@ -0,0 +1,251 @@ +package xCAT_plugin::<<>>_nodemgmt; + +use strict; +use warnings; + +require xCAT::Utils; +require xCAT::Table; +require xCAT::KitPluginUtils; + +# buildkit Processing +# In order to avoid collisions with other plugins, the package +# name for this plugin must contain the full kit name. +# The buildkit buildtar command will copy this file from your plugins +# directory to the the kit build directory, renaming the file with the +# correct kit name. All strings in this file of the form +# <<>> +# will be replaced with the full kit name. In order for buildkit to +# correctly edit this file, do not remove these strings. + +# Global Variables + +# This is the full name of the kit which this plugin belongs +# to. The kit name is used by some code in process_request() +# to determine if the plugin should run. When you are testing +# your plugin the kit name should be set to "TESTMODE" to +# bypass the plugin check in process_request(). + +our ($PLUGIN_KITNAME); +#$PLUGIN_KITNAME = "TESTMODE"; +$PLUGIN_KITNAME = "<<>>"; + + +#------------------------------------------------------- + +=head1 + + Node Management Kit Plugin + This plugin contains commands to run custom actions + during node management operations. + +=cut + +#------------------------------------------------------- + + +#------------------------------------------------------- + +=head3 handled_commands + + Return list of kit plugin commands handled by this plugin + +=cut + +#------------------------------------------------------- + +sub handled_commands { + return { + kitnodeadd => '<<>>_nodemgmt', + kitnoderemove => '<<>>_nodemgmt', + kitnodeupdate => '<<>>_nodemgmt', + kitnoderefresh => '<<>>_nodemgmt', + kitnodefinished => '<<>>_nodemgmt', + }; +} + + +#------------------------------------------------------- + +=head3 process_request + + Process the kit plugin command. + +=cut + +#------------------------------------------------------- + +sub process_request { + my $request = shift; + my $callback = shift; + + # Name of command and node list + my $command = $request->{command}->[0]; + my $nodes = $request->{node}; + + # This kit plugin is passed a list of node names. + # We need to determine which kits are used by these + # nodes to decide if this plugin should run or not. + + my $kitdata = $request->{kitdata}; + if (! defined($kitdata)) { + $kitdata = xCAT::KitPluginUtils->get_kits_used_by_nodes($nodes); + $request->{kitdata} = $kitdata; + } + + if ($PLUGIN_KITNAME ne "TESTMODE" && ! exists($kitdata->{$PLUGIN_KITNAME})) { + return; + } + + # Get the nodes using this plugin's kit + $nodes = $kitdata->{$PLUGIN_KITNAME}; + + + if($command eq 'kitnodeadd') { + kitnodeadd($callback, $nodes); + } + elsif ($command eq 'kitnoderemove') { + kitnoderemove($callback, $nodes); + } + elsif ($command eq 'kitnodeupdate') { + kitnodeupdate($callback, $nodes); + } + elsif ($command eq 'kitnoderefresh') { + kitnoderefresh($callback, $nodes); + } + elsif ($command eq 'kitnodefinished') { + kitnodefinished($callback); + + } else { + my $rsp; + $rsp->{data}->[0] = "Command is not supported"; + xCAT::MsgUtils->message("E", $rsp, $callback); + } +} + + +#------------------------------------------------------- + +=head3 kitnodeadd + + This command is called when one or more nodes are added + to the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnodeadd { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeadd"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderemove + + This command is called when one or more nodes are + removed from the cluster. + +=cut + +#------------------------------------------------------- + +sub kitnoderemove { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderemove"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodeupdate + + This command is called when the configuration of one + or more nodes are updated. + +=cut + +#------------------------------------------------------- + +sub kitnodeupdate { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnodeupdate"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnoderefresh + + This command is called when node-related configuration + files are updated. + +=cut + +#------------------------------------------------------- + +sub kitnoderefresh { + my $callback = shift; + my $rsp; + + # Parameters + my $nodes = shift; + + $rsp->{data}->[0] = "Running kitnoderefresh"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + + +#------------------------------------------------------- + +=head3 kitnodefinished + + This command is called at the end of a node management + operation. + +=cut + +#------------------------------------------------------- + +sub kitnodefinished { + my $callback = shift; + my $rsp; + + $rsp->{data}->[0] = "Running kitnodefinished"; + xCAT::MsgUtils->message("I", $rsp, $callback); + + # TODO + # ... ADD YOUR CODE HERE +} + diff --git a/xCAT-server/share/xcat/kit_build/template/scripts/sample/post.sh b/xCAT-server/share/xcat/kit_build/template/scripts/sample/post.sh new file mode 100644 index 000000000..2fa3d84e1 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/scripts/sample/post.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 post script" + diff --git a/xCAT-server/share/xcat/kit_build/template/scripts/sample/postboot.sh b/xCAT-server/share/xcat/kit_build/template/scripts/sample/postboot.sh new file mode 100644 index 000000000..abbcb3e56 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/scripts/sample/postboot.sh @@ -0,0 +1,3 @@ +#!/bin/sh +echo "running sample-comp1 postboot script" + diff --git a/xCAT-server/share/xcat/kit_build/template/scripts/sample/postun.sh b/xCAT-server/share/xcat/kit_build/template/scripts/sample/postun.sh new file mode 100644 index 000000000..a5596e931 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/scripts/sample/postun.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 postun script" + diff --git a/xCAT-server/share/xcat/kit_build/template/scripts/sample/postup.sh b/xCAT-server/share/xcat/kit_build/template/scripts/sample/postup.sh new file mode 100644 index 000000000..a4ad3c500 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/scripts/sample/postup.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 postup script" + diff --git a/xCAT-server/share/xcat/kit_build/template/scripts/sample/pre.sh b/xCAT-server/share/xcat/kit_build/template/scripts/sample/pre.sh new file mode 100644 index 000000000..36a88c970 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/scripts/sample/pre.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 pre script" + diff --git a/xCAT-server/share/xcat/kit_build/template/scripts/sample/preun.sh b/xCAT-server/share/xcat/kit_build/template/scripts/sample/preun.sh new file mode 100644 index 000000000..e94c3aa8e --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/scripts/sample/preun.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 preun script" + diff --git a/xCAT-server/share/xcat/kit_build/template/scripts/sample/preup.sh b/xCAT-server/share/xcat/kit_build/template/scripts/sample/preup.sh new file mode 100644 index 000000000..bf2248496 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/scripts/sample/preup.sh @@ -0,0 +1,3 @@ + +echo "running sample-comp1 preup script" + diff --git a/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg1/pkg1-1-1.noarch.rpm b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg1/pkg1-1-1.noarch.rpm new file mode 100644 index 000000000..8bffe202d Binary files /dev/null and b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg1/pkg1-1-1.noarch.rpm differ diff --git a/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg2/pkg2.spec b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg2/pkg2.spec new file mode 100644 index 000000000..d513149d9 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg2/pkg2.spec @@ -0,0 +1,76 @@ +Summary: Pkg2 for Sample Kit +Name: pkg2 +Version: 1 +Release: 1 +Epoch: 1 +License: EPL +Group: Applications/System +Source: pkg2.tar.gz +Packager: IBM Corp. +Vendor: IBM Corp. +Distribution: %{?_distribution:%{_distribution}}%{!?_distribution:%{_vendor}} +Prefix: /opt/xcat-kitsample +BuildRoot: /var/tmp/%{name}-%{version}-%{release}-root + +%ifos linux +BuildArch: noarch +#Requires: +%endif + +Provides: pkg2 = %{epoch}:%{version} + +%description +Testing package builds for xCAT Sample Kit + +%prep +%setup -q -n pkg2 +%build +%install +rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/%{prefix}/%{name}/files +mkdir -p $RPM_BUILD_ROOT/etc/%{name} + + +set +x + +%ifos linux +cp -a files/* $RPM_BUILD_ROOT/%{prefix}/%{name}/files/ +chmod -R 755 $RPM_BUILD_ROOT/%{prefix}/%{name}/files/* +cp -a cfg/* $RPM_BUILD_ROOT/etc/%{name}/ +chmod -R 644 $RPM_BUILD_ROOT/etc/%{name}/* +%endif + +set -x + + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root) +%{prefix} +/etc/%{name} + +%changelog + +%pre +if [ "$1" = "1" ] ; then + echo "running pkg2 rpm pre section" +elif [ "$1" = "2" ] ; then + echo "running pkg2 rpm preup section" +fi + +%post +if [ "$1" = "1" ] ; then + echo "running pkg2 rpm post section" +elif [ "$1" = "2" ] ; then + echo "running pkg2 rpm postup section" +fi + +%preun +echo "running pkg2 rpm preun section" + +%postun +echo "running pkg2 rpm postun section" + + diff --git a/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg2/pkg2/cfg/pkg2.cfg b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg2/pkg2/cfg/pkg2.cfg new file mode 100644 index 000000000..cb5c4c3e6 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg2/pkg2/cfg/pkg2.cfg @@ -0,0 +1,3 @@ +# +# +# a config file for pkg2 diff --git a/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg2/pkg2/files/pkg2.file1 b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg2/pkg2/files/pkg2.file1 new file mode 100644 index 000000000..dc75e0788 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg2/pkg2/files/pkg2.file1 @@ -0,0 +1 @@ +file 1 in pkg2 diff --git a/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg2/pkg2/files/pkg2.file2 b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg2/pkg2/files/pkg2.file2 new file mode 100644 index 000000000..d5bcb4d69 --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg2/pkg2/files/pkg2.file2 @@ -0,0 +1,2 @@ +file 2 in pkg2 + diff --git a/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg3/pkg3.spec b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg3/pkg3.spec new file mode 100644 index 000000000..17270eeaf --- /dev/null +++ b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg3/pkg3.spec @@ -0,0 +1,76 @@ +Summary: Pkg3 for Sample Kit +Name: pkg3 +Version: 1 +Release: 1 +Epoch: 1 +License: EPL +Group: Applications/System +Source: pkg3.tar.gz +Packager: IBM Corp. +Vendor: IBM Corp. +Distribution: %{?_distribution:%{_distribution}}%{!?_distribution:%{_vendor}} +Prefix: /opt/xcat-kitsample +BuildRoot: /var/tmp/%{name}-%{version}-%{release}-root + +%ifos linux +BuildArch: noarch +#Requires: +%endif + +Provides: pkg3 = %{epoch}:%{version} + +%description +Testing package builds for xCAT Sample Kit + +%prep +%setup -q -n pkg3 +%build +%install +rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/%{prefix}/%{name}/files +mkdir -p $RPM_BUILD_ROOT/etc/%{name} + +set +x + +%ifos linux +cp -a files/* $RPM_BUILD_ROOT/%{prefix}/%{name}/files/ +chmod -R 755 $RPM_BUILD_ROOT/%{prefix}/%{name}/files/* +cp -a cfg/* $RPM_BUILD_ROOT/etc/%{name}/ +chmod -R 644 $RPM_BUILD_ROOT/etc/%{name}/* +%endif + +set -x + + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root) +%{prefix} +/etc/%{name} + +%changelog + +%pre +if [ "$1" = "1" ] ; then + echo "running pkg3 rpm pre section" +elif [ "$1" = "2" ] ; then + echo "running pkg3 rpm preup section" +fi + +%post +if [ "$1" = "1" ] ; then + echo "running pkg3 rpm post section" +elif [ "$1" = "2" ] ; then + echo "running pkg3 rpm postup section" +fi + +%preun +echo "running pkg3 rpm preun section" + +%postun +echo "running pkg3 rpm postun section" + + + diff --git a/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg3/pkg3.tar.gz b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg3/pkg3.tar.gz new file mode 100644 index 000000000..af7442d05 Binary files /dev/null and b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg3/pkg3.tar.gz differ diff --git a/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg4/pkg4-1-1.src.rpm b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg4/pkg4-1-1.src.rpm new file mode 100644 index 000000000..8833a5c55 Binary files /dev/null and b/xCAT-server/share/xcat/kit_build/template/source_packages/sample/pkg4/pkg4-1-1.src.rpm differ