From 30d43bd38083e9d5866ff7794757cdb80ddff674 Mon Sep 17 00:00:00 2001 From: wanghuaz Date: Wed, 6 Feb 2013 16:02:45 +0000 Subject: [PATCH] Backup the kit source files, don't need to rebuild xcat. git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15076 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- .../pessl/partial_pessl/buildkit.conf | 287 ++++++++++++++++ .../other_files/min-pessl.exlist | 5 + .../pessl/partial_pessl/other_files/pessl.env | 1 + .../partial_pessl/other_files/pessl.exlist | 5 + .../plugins/sample/imageprofile.pm | 175 ++++++++++ .../partial_pessl/plugins/sample/nodemgmt.pm | 251 ++++++++++++++ .../kits/kit_build/pessl/pessl/buildkit.conf | 286 ++++++++++++++++ .../pessl/pessl/other_files/min-pessl.exlist | 5 + .../pessl/pessl/other_files/pessl.env | 1 + .../pessl/pessl/other_files/pessl.exlist | 5 + .../pessl/plugins/sample/imageprofile.pm | 175 ++++++++++ .../pessl/pessl/plugins/sample/nodemgmt.pm | 251 ++++++++++++++ .../teal/partial-teal-ppc64/buildkit.conf | 307 +++++++++++++++++ .../plugins/sample/imageprofile.pm | 175 ++++++++++ .../plugins/sample/nodemgmt.pm | 251 ++++++++++++++ .../teal/partial-teal-x86_64/buildkit.conf | 307 +++++++++++++++++ .../plugins/sample/imageprofile.pm | 175 ++++++++++ .../plugins/sample/nodemgmt.pm | 251 ++++++++++++++ .../kit_build/teal/teal-ppc64/buildkit.conf | 308 ++++++++++++++++++ .../teal-ppc64/plugins/sample/imageprofile.pm | 175 ++++++++++ .../teal-ppc64/plugins/sample/nodemgmt.pm | 251 ++++++++++++++ .../kit_build/teal/teal-x86_64/buildkit.conf | 307 +++++++++++++++++ .../plugins/sample/imageprofile.pm | 175 ++++++++++ .../teal-x86_64/plugins/sample/nodemgmt.pm | 251 ++++++++++++++ 24 files changed, 4380 insertions(+) create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/buildkit.conf create mode 100755 xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/other_files/min-pessl.exlist create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/other_files/pessl.env create mode 100755 xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/other_files/pessl.exlist create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/plugins/sample/imageprofile.pm create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/plugins/sample/nodemgmt.pm create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/pessl/pessl/buildkit.conf create mode 100755 xCAT-buildkit/share/xcat/kits/kit_build/pessl/pessl/other_files/min-pessl.exlist create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/pessl/pessl/other_files/pessl.env create mode 100755 xCAT-buildkit/share/xcat/kits/kit_build/pessl/pessl/other_files/pessl.exlist create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/pessl/pessl/plugins/sample/imageprofile.pm create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/pessl/pessl/plugins/sample/nodemgmt.pm create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/teal/partial-teal-ppc64/buildkit.conf create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/teal/partial-teal-ppc64/plugins/sample/imageprofile.pm create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/teal/partial-teal-ppc64/plugins/sample/nodemgmt.pm create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/teal/partial-teal-x86_64/buildkit.conf create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/teal/partial-teal-x86_64/plugins/sample/imageprofile.pm create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/teal/partial-teal-x86_64/plugins/sample/nodemgmt.pm create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/teal/teal-ppc64/buildkit.conf create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/teal/teal-ppc64/plugins/sample/imageprofile.pm create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/teal/teal-ppc64/plugins/sample/nodemgmt.pm create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/teal/teal-x86_64/buildkit.conf create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/teal/teal-x86_64/plugins/sample/imageprofile.pm create mode 100644 xCAT-buildkit/share/xcat/kits/kit_build/teal/teal-x86_64/plugins/sample/nodemgmt.pm diff --git a/xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/buildkit.conf b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/buildkit.conf new file mode 100644 index 000000000..5ae5c15b1 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/buildkit.conf @@ -0,0 +1,287 @@ +# 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 + kitlicense=IPLA + 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 + 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 + 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 + 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 + 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 + 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 + 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-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/other_files/min-pessl.exlist b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/other_files/min-pessl.exlist new file mode 100755 index 000000000..903c93802 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/other_files/pessl.env b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/other_files/pessl.env new file mode 100644 index 000000000..90146f379 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/other_files/pessl.env @@ -0,0 +1 @@ +#ENV:IBM_PESSL_LICENSE_ACCEPT=yes# diff --git a/xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/other_files/pessl.exlist b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/other_files/pessl.exlist new file mode 100755 index 000000000..4ef49f9c7 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/plugins/sample/imageprofile.pm b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/plugins/sample/nodemgmt.pm b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/partial_pessl/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/pessl/pessl/buildkit.conf b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/pessl/buildkit.conf new file mode 100644 index 000000000..d776e8b17 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/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 + kitlicense=IPLA + 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 + 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 + 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 + 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 + 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 + 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 + 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-buildkit/share/xcat/kits/kit_build/pessl/pessl/other_files/min-pessl.exlist b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/pessl/other_files/min-pessl.exlist new file mode 100755 index 000000000..903c93802 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/pessl/pessl/other_files/pessl.env b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/pessl/other_files/pessl.env new file mode 100644 index 000000000..90146f379 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/pessl/other_files/pessl.env @@ -0,0 +1 @@ +#ENV:IBM_PESSL_LICENSE_ACCEPT=yes# diff --git a/xCAT-buildkit/share/xcat/kits/kit_build/pessl/pessl/other_files/pessl.exlist b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/pessl/other_files/pessl.exlist new file mode 100755 index 000000000..4ef49f9c7 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/pessl/pessl/plugins/sample/imageprofile.pm b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/pessl/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/pessl/pessl/plugins/sample/nodemgmt.pm b/xCAT-buildkit/share/xcat/kits/kit_build/pessl/pessl/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/teal/partial-teal-ppc64/buildkit.conf b/xCAT-buildkit/share/xcat/kits/kit_build/teal/partial-teal-ppc64/buildkit.conf new file mode 100644 index 000000000..e36c22938 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/kit_build/teal/partial-teal-ppc64/buildkit.conf @@ -0,0 +1,307 @@ +# 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 + kitlicense=IPLA +# 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-buildkit/share/xcat/kits/kit_build/teal/partial-teal-ppc64/plugins/sample/imageprofile.pm b/xCAT-buildkit/share/xcat/kits/kit_build/teal/partial-teal-ppc64/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/teal/partial-teal-ppc64/plugins/sample/nodemgmt.pm b/xCAT-buildkit/share/xcat/kits/kit_build/teal/partial-teal-ppc64/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/teal/partial-teal-x86_64/buildkit.conf b/xCAT-buildkit/share/xcat/kits/kit_build/teal/partial-teal-x86_64/buildkit.conf new file mode 100644 index 000000000..632df495b --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/kit_build/teal/partial-teal-x86_64/buildkit.conf @@ -0,0 +1,307 @@ +# 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 + kitlicense=IPLA +# 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-buildkit/share/xcat/kits/kit_build/teal/partial-teal-x86_64/plugins/sample/imageprofile.pm b/xCAT-buildkit/share/xcat/kits/kit_build/teal/partial-teal-x86_64/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/teal/partial-teal-x86_64/plugins/sample/nodemgmt.pm b/xCAT-buildkit/share/xcat/kits/kit_build/teal/partial-teal-x86_64/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/teal/teal-ppc64/buildkit.conf b/xCAT-buildkit/share/xcat/kits/kit_build/teal/teal-ppc64/buildkit.conf new file mode 100644 index 000000000..7b698ca92 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/kit_build/teal/teal-ppc64/buildkit.conf @@ -0,0 +1,308 @@ +# 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 + kitlicense=IPLA +# 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_mgtnode + description=teal for management nodes + version=1.2.0.2 + release=1 + serverroles=mgtnode + kitrepoid=rhels6_ppc64 + ospkgdeps=pyodbc >= 2.1.7,xCAT >= 2.6.6 + kitpkgdeps=teal-base >= 1.2.0.2 + +kitcomponent: + basename=teal-isnm_mgtnode + 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_mgtnode + 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_mgtnode + 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_mgtnode + 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_mgtnode + 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_mgtnode + 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_mgtnode + 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_mgtnode + 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_mgtnode + 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_mgtnode + 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_mgtnode + 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-buildkit/share/xcat/kits/kit_build/teal/teal-ppc64/plugins/sample/imageprofile.pm b/xCAT-buildkit/share/xcat/kits/kit_build/teal/teal-ppc64/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/teal/teal-ppc64/plugins/sample/nodemgmt.pm b/xCAT-buildkit/share/xcat/kits/kit_build/teal/teal-ppc64/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/teal/teal-x86_64/buildkit.conf b/xCAT-buildkit/share/xcat/kits/kit_build/teal/teal-x86_64/buildkit.conf new file mode 100644 index 000000000..73db35bf0 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/kit_build/teal/teal-x86_64/buildkit.conf @@ -0,0 +1,307 @@ +# 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 + kitlicense=IPLA +# 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-buildkit/share/xcat/kits/kit_build/teal/teal-x86_64/plugins/sample/imageprofile.pm b/xCAT-buildkit/share/xcat/kits/kit_build/teal/teal-x86_64/plugins/sample/imageprofile.pm new file mode 100644 index 000000000..f42b70e7f --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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-buildkit/share/xcat/kits/kit_build/teal/teal-x86_64/plugins/sample/nodemgmt.pm b/xCAT-buildkit/share/xcat/kits/kit_build/teal/teal-x86_64/plugins/sample/nodemgmt.pm new file mode 100644 index 000000000..1eb766eb7 --- /dev/null +++ b/xCAT-buildkit/share/xcat/kits/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 +} +