From 9f6de1b3c480fbbae1f75b42b139c18a14d5162c Mon Sep 17 00:00:00 2001 From: James Adams Date: Wed, 6 Nov 2024 14:48:20 +0000 Subject: [PATCH] Component templates (grid) for tag configuration-modules-grid-24.10.0-rc3 --- components/condorconfig/config-common.pan | 31 ++ components/condorconfig/config-rpm.pan | 30 ++ components/condorconfig/config.pan | 22 ++ components/condorconfig/schema.pan | 193 ++++++++++ components/dcache/config-common.pan | 31 ++ components/dcache/config-rpm.pan | 30 ++ components/dcache/config.pan | 22 ++ components/dcache/schema.pan | 243 +++++++++++++ components/dpmlfc/config.pan | 34 ++ components/dpmlfc/schema.pan | 254 +++++++++++++ components/gacl/config-common.pan | 31 ++ components/gacl/config-rpm.pan | 30 ++ components/gacl/config.pan | 22 ++ components/gacl/schema.pan | 35 ++ components/gip2/config.pan | 33 ++ components/gip2/schema.pan | 62 ++++ components/glitestartup/config-common.pan | 32 ++ components/glitestartup/config-rpm.pan | 30 ++ components/glitestartup/config.pan | 22 ++ components/glitestartup/functions.pan | 97 +++++ components/glitestartup/schema.pan | 51 +++ components/globuscfg/config-common.pan | 31 ++ components/globuscfg/config-rpm.pan | 30 ++ components/globuscfg/config.pan | 22 ++ components/globuscfg/schema.pan | 128 +++++++ components/gridmapdir/config-common.pan | 31 ++ components/gridmapdir/config-rpm.pan | 30 ++ components/gridmapdir/config.pan | 22 ++ components/gridmapdir/schema.pan | 35 ++ components/gsissh/config-common.pan | 31 ++ components/gsissh/config-rpm.pan | 30 ++ components/gsissh/config.pan | 22 ++ components/gsissh/schema.pan | 44 +++ components/lbconfig/config-common.pan | 31 ++ components/lbconfig/config-rpm.pan | 30 ++ components/lbconfig/config.pan | 22 ++ components/lbconfig/schema.pan | 33 ++ components/lcas/config-common.pan | 31 ++ components/lcas/config-rpm.pan | 30 ++ components/lcas/config.pan | 22 ++ components/lcas/schema.pan | 72 ++++ components/lcgbdii/config-common.pan | 31 ++ components/lcgbdii/config-rpm.pan | 30 ++ components/lcgbdii/config.pan | 22 ++ components/lcgbdii/schema.pan | 98 +++++ components/lcgmonjob/config-common.pan | 31 ++ components/lcgmonjob/config-rpm.pan | 30 ++ components/lcgmonjob/config.pan | 22 ++ components/lcgmonjob/schema.pan | 33 ++ components/lcmaps/config-common.pan | 31 ++ components/lcmaps/config-rpm.pan | 30 ++ components/lcmaps/config.pan | 22 ++ components/lcmaps/schema.pan | 82 +++++ components/maui/config.pan | 31 ++ components/maui/schema.pan | 26 ++ components/mkgridmap/config-common.pan | 31 ++ components/mkgridmap/config-rpm.pan | 30 ++ components/mkgridmap/config.pan | 22 ++ components/mkgridmap/schema.pan | 57 +++ components/myproxy/config-common.pan | 31 ++ components/myproxy/config-rpm.pan | 30 ++ components/myproxy/config.pan | 22 ++ components/myproxy/schema.pan | 54 +++ components/pbsclient/config-common.pan | 31 ++ components/pbsclient/config-rpm.pan | 30 ++ components/pbsclient/config.pan | 22 ++ components/pbsclient/schema.pan | 176 +++++++++ components/pbsknownhosts/config-common.pan | 31 ++ components/pbsknownhosts/config-rpm.pan | 30 ++ components/pbsknownhosts/config.pan | 22 ++ components/pbsknownhosts/schema.pan | 39 ++ components/pbsserver/config.pan | 32 ++ components/pbsserver/schema.pan | 277 ++++++++++++++ components/vomsclient/config-common.pan | 31 ++ components/vomsclient/config-rpm.pan | 30 ++ components/vomsclient/config.pan | 22 ++ components/vomsclient/schema.pan | 64 ++++ components/wlconfig/config-common.pan | 31 ++ components/wlconfig/config-rpm.pan | 30 ++ components/wlconfig/config.pan | 22 ++ components/wlconfig/schema.pan | 103 ++++++ components/wmsclient/config-common.pan | 31 ++ components/wmsclient/config-rpm.pan | 30 ++ components/wmsclient/config.pan | 22 ++ components/wmsclient/schema.pan | 64 ++++ components/wmslb/config-common.pan | 31 ++ components/wmslb/config-rpm.pan | 30 ++ components/wmslb/config.pan | 22 ++ components/wmslb/schema.pan | 397 +++++++++++++++++++++ components/xrootd/config.pan | 35 ++ components/xrootd/schema.pan | 276 ++++++++++++++ 91 files changed, 4819 insertions(+) create mode 100644 components/condorconfig/config-common.pan create mode 100644 components/condorconfig/config-rpm.pan create mode 100644 components/condorconfig/config.pan create mode 100644 components/condorconfig/schema.pan create mode 100644 components/dcache/config-common.pan create mode 100644 components/dcache/config-rpm.pan create mode 100644 components/dcache/config.pan create mode 100644 components/dcache/schema.pan create mode 100644 components/dpmlfc/config.pan create mode 100644 components/dpmlfc/schema.pan create mode 100644 components/gacl/config-common.pan create mode 100644 components/gacl/config-rpm.pan create mode 100644 components/gacl/config.pan create mode 100644 components/gacl/schema.pan create mode 100644 components/gip2/config.pan create mode 100644 components/gip2/schema.pan create mode 100644 components/glitestartup/config-common.pan create mode 100644 components/glitestartup/config-rpm.pan create mode 100644 components/glitestartup/config.pan create mode 100644 components/glitestartup/functions.pan create mode 100644 components/glitestartup/schema.pan create mode 100644 components/globuscfg/config-common.pan create mode 100644 components/globuscfg/config-rpm.pan create mode 100644 components/globuscfg/config.pan create mode 100644 components/globuscfg/schema.pan create mode 100644 components/gridmapdir/config-common.pan create mode 100644 components/gridmapdir/config-rpm.pan create mode 100644 components/gridmapdir/config.pan create mode 100644 components/gridmapdir/schema.pan create mode 100644 components/gsissh/config-common.pan create mode 100644 components/gsissh/config-rpm.pan create mode 100644 components/gsissh/config.pan create mode 100644 components/gsissh/schema.pan create mode 100644 components/lbconfig/config-common.pan create mode 100644 components/lbconfig/config-rpm.pan create mode 100644 components/lbconfig/config.pan create mode 100644 components/lbconfig/schema.pan create mode 100644 components/lcas/config-common.pan create mode 100644 components/lcas/config-rpm.pan create mode 100644 components/lcas/config.pan create mode 100644 components/lcas/schema.pan create mode 100644 components/lcgbdii/config-common.pan create mode 100644 components/lcgbdii/config-rpm.pan create mode 100644 components/lcgbdii/config.pan create mode 100644 components/lcgbdii/schema.pan create mode 100644 components/lcgmonjob/config-common.pan create mode 100644 components/lcgmonjob/config-rpm.pan create mode 100644 components/lcgmonjob/config.pan create mode 100644 components/lcgmonjob/schema.pan create mode 100644 components/lcmaps/config-common.pan create mode 100644 components/lcmaps/config-rpm.pan create mode 100644 components/lcmaps/config.pan create mode 100644 components/lcmaps/schema.pan create mode 100644 components/maui/config.pan create mode 100644 components/maui/schema.pan create mode 100644 components/mkgridmap/config-common.pan create mode 100644 components/mkgridmap/config-rpm.pan create mode 100644 components/mkgridmap/config.pan create mode 100644 components/mkgridmap/schema.pan create mode 100644 components/myproxy/config-common.pan create mode 100644 components/myproxy/config-rpm.pan create mode 100644 components/myproxy/config.pan create mode 100644 components/myproxy/schema.pan create mode 100644 components/pbsclient/config-common.pan create mode 100644 components/pbsclient/config-rpm.pan create mode 100644 components/pbsclient/config.pan create mode 100644 components/pbsclient/schema.pan create mode 100644 components/pbsknownhosts/config-common.pan create mode 100644 components/pbsknownhosts/config-rpm.pan create mode 100644 components/pbsknownhosts/config.pan create mode 100644 components/pbsknownhosts/schema.pan create mode 100644 components/pbsserver/config.pan create mode 100644 components/pbsserver/schema.pan create mode 100644 components/vomsclient/config-common.pan create mode 100644 components/vomsclient/config-rpm.pan create mode 100644 components/vomsclient/config.pan create mode 100644 components/vomsclient/schema.pan create mode 100644 components/wlconfig/config-common.pan create mode 100644 components/wlconfig/config-rpm.pan create mode 100644 components/wlconfig/config.pan create mode 100644 components/wlconfig/schema.pan create mode 100644 components/wmsclient/config-common.pan create mode 100644 components/wmsclient/config-rpm.pan create mode 100644 components/wmsclient/config.pan create mode 100644 components/wmsclient/schema.pan create mode 100644 components/wmslb/config-common.pan create mode 100644 components/wmslb/config-rpm.pan create mode 100644 components/wmslb/config.pan create mode 100644 components/wmslb/schema.pan create mode 100644 components/xrootd/config.pan create mode 100644 components/xrootd/schema.pan diff --git a/components/condorconfig/config-common.pan b/components/condorconfig/config-common.pan new file mode 100644 index 000000000..eae15a9d3 --- /dev/null +++ b/components/condorconfig/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# condorconfig, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/condorconfig/config-common; + +include 'components/condorconfig/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/condorconfig'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/condorconfig/config-rpm.pan b/components/condorconfig/config-rpm.pan new file mode 100644 index 000000000..832fe3b83 --- /dev/null +++ b/components/condorconfig/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# condorconfig, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/condorconfig/config-rpm; + +include 'components/condorconfig/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/condorconfig'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-condorconfig', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/condorconfig/config.pan b/components/condorconfig/config.pan new file mode 100644 index 000000000..b4589e956 --- /dev/null +++ b/components/condorconfig/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# condorconfig, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/condorconfig/config; + +include 'components/condorconfig/config-rpm'; diff --git a/components/condorconfig/schema.pan b/components/condorconfig/schema.pan new file mode 100644 index 000000000..e40c05cd4 --- /dev/null +++ b/components/condorconfig/schema.pan @@ -0,0 +1,193 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# condorconfig, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/condorconfig/schema; + +include 'quattor/schema'; + +type condorconfig_component = { + include structure_component + 'configFile' : string = '/opt/condor-c/etc/condor_config' + 'localConfigFile' : string = '/opt/condor-c/local.localhost/condor_config.local' + 'user' : string = 'glite' + 'RELEASE_DIR' ? string + 'LOCAL_DIR' ? string + 'CONDOR_ADMIN' ? string + 'MAIL' ? string + 'CONDOR_HOST' ? string + 'UID_DOMAIN' ? string + 'FILESYSTEM_DOMAIN' ? string + 'COLLECTOR_NAME' ? string + 'USERNAME' ? string + 'LOCK' ? string + 'FLOCK_FROM' ? string + 'FLOCK_TO' ? string + 'FLOCK_NEGOTIATOR_HOSTS' ? string + 'FLOCK_COLLECTOR_HOSTS' ? string + 'ALLOW_ADMINISTRATOR' ? string + 'ALLOW_OWNER' ? string + 'ALLOW_READ' ? string + 'ALLOW_WRITE' ? string + 'ALLOW_NEGOTIATOR' ? string + 'ALLOW_NEGOTIATOR_SCHEDD' ? string + 'ALLOW_WRITE_COLLECTOR' ? string + 'ALLOW_WRITE_STARTD' ? string + 'ALLOW_READ_COLLECTOR' ? string + 'ALLOW_READ_STARTD' ? string + 'GLIDEIN_SITES' ? string + 'NEGOTIATOR_IGNORE_USER_PRIORITIES' ? string + 'CONDOR_IDS' ? string + 'MAX_COLLECTOR_LOG' ? string + 'COLLECTOR_DEBUG' ? string + 'MAX_NEGOTIATOR_LOG' ? string + 'NEGOTIATOR_DEBUG' ? string + 'MAX_NEGOTIATOR_MATCH_LOG' ? string + 'MAX_SCHEDD_LOG' ? string + 'SCHEDD_DEBUG' ? string + 'MAX_SHADOW_LOG' ? string + 'SHADOW_DEBUG' ? string + 'MAX_STARTD_LOG' ? string + 'STARTD_DEBUG' ? string + 'MINUTE' ? string + 'HOUR' ? string + 'StateTimer' ? string + 'ActivityTimer' ? string + 'ActivationTimer' ? string + 'LastCkpt' ? string + 'STANDARD' ? string + 'VANILLA' ? string + 'IsVanilla' ? string + 'IsStandard' ? string + 'NonCondorLoadAvg' ? string + 'BackgroundLoad' ? string + 'HighLoad' ? string + 'StartIdleTime' ? string + 'ContinueIdleTime' ? string + 'MaxSuspendTime' ? string + 'MaxVacateTime' ? string + 'KeyboardBusy' ? string + 'ConsoleBusy' ? string + 'CPUIdle' ? string + 'CPUBusy' ? string + 'BigJob' ? string + 'MediumJob' ? string + 'SmallJob' ? string + 'JustCPU' ? string + 'MachineBusy' ? string + 'WANT_SUSPEND' ? string + 'WANT_VACATE' ? string + 'START' ? string + 'SUSPEND' ? string + 'CONTINUE' ? string + 'PREEMPT' ? string + 'KILL' ? string + 'LOG' ? string + 'SPOOL' ? string + 'EXECUTE' ? string + 'BIN' ? string + 'LIB' ? string + 'SBIN' ? string + 'HISTORY' ? string + 'COLLECTOR_LOG' ? string + 'MASTER_LOG' ? string + 'NEGOTIATOR_LOG' ? string + 'NEGOTIATOR_MATCH_LOG' ? string + 'SCHEDD_LOG' ? string + 'SHADOW_LOG' ? string + 'STARTD_LOG' ? string + 'SHADOW_LOCK' ? string + 'COLLECTOR_HOST' ? string + 'RESERVED_DISK' ? string + 'HIGHPORT' ? string + 'LOWPORT' ? string + 'DAEMON_LIST' ? string + 'MASTER' ? string + 'STARTD' ? string + 'SCHEDD' ? string + 'NEGOTIATOR' ? string + 'COLLECTOR' ? string + 'MASTER_ADDRESS_FILE' ? string + 'PREEN' ? string + 'PREEN_ARGS' ? string + 'MASTER_UPDATE_INTERVAL' ? string + 'STARTER_LIST' ? string + 'STARTER' ? string + 'STARTER_STANDARD' ? string + 'STARTER_LOCAL' ? string + 'STARTD_ADDRESS_FILE' ? string + 'UPDATE_INTERVAL' ? string + 'STARTD_JOB_EXPRS' ? string + 'SHADOW' ? string + 'SCHEDD_ADDRESS_FILE' ? string + 'SCHEDD_INTERVAL' ? string + 'SHADOW_SIZE_ESTIMATE' ? string + 'SHADOW_RENICE_INCREMENT' ? string + 'QUEUE_SUPER_USERS' ? string + 'VALID_SPOOL_FILES' ? string + 'INVALID_LOG_FILES' ? string + 'JAVA_MAXHEAP_ARGUMENT' ? string + 'GRIDMANAGER' ? string + 'GT2_GAHP' ? string + 'GRID_MONITOR' ? string + 'GRIDMANAGER_DEBUG' ? string + 'GRIDMANAGER_LOG' ? string + 'MAX_GRIDMANAGER_LOG' ? string + 'GRIDSHELL' ? string + 'GRIDMANAGER_MAX_JOBMANAGERS_PER_RESOURCE' ? string + 'GRIDMANAGER_CHECKPROXY_INTERVAL' ? string + 'GRIDMANAGER_MINIMUM_PROXY_TIME' ? string + 'DEFAULT_UNIVERSE' ? string + 'CRED_MIN_TIME_LEFT' ? string + 'ENABLE_GRID_MONITOR' ? string + 'CONDOR_GAHP' ? string + 'MAX_C_GAHP_LOG' ? string + 'C_GAHP_LOG' ? string + 'C_GAHP_WORKER_THREAD_LOG' ? string + 'NORDUGRID_GAHP' ? string + 'C_GAHP_TIMEOUT_MULTIPLIER' ? string + 'C_GAHP_WORKER_THREAD_TIMEOUT_MULTIPLIER' ? string + 'CLASSAD_LIFETIME' ? string + 'CONDOR_JOB_POLL_INTERVAL' ? string + 'COLLECTOR_TIMEOUT_MULTIPLIER' ? string + 'DAGMAN_ALLOW_EVENTS' ? string + 'GLITE_CONDORC_DEBUG_LEVEL' ? string + 'GLITE_CONDORC_LOG_DIR' ? string + 'GLOBUS_GATEKEEPER_TIMEOUT' ? string + 'GRID_MONITOR_HEARTBEAT_TIMEOUT' ? string + 'GRID_MONITOR_RETRY_DURATION' ? string + 'GRIDMANAGER_GLOBUS_COMMIT_TIMEOUT' ? string + 'GRIDMANAGER_MAX_PENDING_SUBMITS_PER_RESOURCE' ? string + 'GRIDMANAGER_MAX_SUBMITTED_JOBS_PER_RESOURCE' ? string + 'GRIDMANAGER_TIMEOUT_MULTIPLIER' ? string + 'GSI_DAEMON_CERT' ? string + 'GSI_DAEMON_KEY' ? string + 'HOLD_JOB_IF_CREDENTIAL_EXPIRES' ? string + 'HOSTALLOW_WRITE' ? string + 'NEGOTIATOR_INTERVAL' ? string + 'NEGOTIATOR_MATCHLIST_CACHING' ? string + 'NEGOTIATOR_UPDATE_INTERVAL' ? string + 'SEC_DEFAULT_NEGOTIATION' ? string + 'SEC_DEFAULT_AUTHENTICATION' ? string + 'SEC_DEFAULT_AUTHENTICATION_METHODS' ? string + 'SCHEDD_TIMEOUT_MULTIPLIER' ? string + 'TOOL_TIMEOUT_MULTIPLIER' ? string +}; + +bind '/software/components/condorconfig' = condorconfig_component; diff --git a/components/dcache/config-common.pan b/components/dcache/config-common.pan new file mode 100644 index 000000000..0fa7bcaa4 --- /dev/null +++ b/components/dcache/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Stijn.De.Weirdt@cern.ch +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# dcache, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/dcache/config-common; + +include 'components/dcache/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/dcache'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/dcache/config-rpm.pan b/components/dcache/config-rpm.pan new file mode 100644 index 000000000..bd1874937 --- /dev/null +++ b/components/dcache/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Stijn.De.Weirdt@cern.ch +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# dcache, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/dcache/config-rpm; + +include 'components/dcache/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/dcache'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-dcache', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/dcache/config.pan b/components/dcache/config.pan new file mode 100644 index 000000000..319858e77 --- /dev/null +++ b/components/dcache/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Stijn.De.Weirdt@cern.ch +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# dcache, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/dcache/config; + +include 'components/dcache/config-rpm'; diff --git a/components/dcache/schema.pan b/components/dcache/schema.pan new file mode 100644 index 000000000..c3556f277 --- /dev/null +++ b/components/dcache/schema.pan @@ -0,0 +1,243 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Stijn.De.Weirdt@cern.ch +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# dcache, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/dcache/schema; + +include 'quattor/schema'; + +type structure_dcache_unit_units = { + "cond" : string + "ugroup" : string[] +}; + +type structure_dcache_unit = { + "units" : structure_dcache_unit_units[]{} + "ignore_ugroup" ? string[] +}; + +type structure_dcache_link_preference = { + "read" ? long with (self >= 0) + "write" ? long with (self >= 0) + "cache" ? long with (self >= 0) + "p2p" ? long with (self >= 0) +}; + +type structure_dcache_link_default_preference = { + include structure_dcache_link_preference + "default" ? long with (self >= 0) +}; + +type structure_dcache_link_policy = { + "nearline" ? boolean + "online" ? boolean + "custodial" ? boolean + "output" ? boolean + "replica" ? boolean +}; + +type structure_dcache_link_default_policy = { + include structure_dcache_link_policy + "default" ? boolean +}; + +type structure_dcache_link_linkgroups = { + include structure_dcache_link_policy + "links" ? string[] +}; + +type structure_dcache_link_links = { + include structure_dcache_link_preference + "ugroup" : string[] + "pgroup" : string[] + "lgroup" ? string +}; + +type structure_dcache_link = { + "links" : structure_dcache_link_links{} + "ignore_link" ? string[] + "def_preference" ? structure_dcache_link_default_preference + "def_policy" ? structure_dcache_link_default_policy + "ignore_linkgroup" ? string[] + "linkgroups" ? structure_dcache_link_linkgroups{} +}; + +type structure_dcache_pool_pools = { + "path" : string + "size" ? long with (self >= 0) + "opt" ? string + "pgroup" ? string[] + "mover_max" ? long with (self >= 0) + "ulimit_n" ? long with (self >= 0) +}; + + +type structure_dcache_pool = { + "pools" ? structure_dcache_pool_pools[]{} + "ignore_pgroup" ? string[] + "default_mover_max" ? long with (self >= 0) + "default_ulimit_n" ? long with (self >= 0) + "max_true_pool_size_prom" ? long with (self >= 0) +}; + +type structure_dcache_dcachesetup = { + "serviceLocatorHost" : type_fqdn + "cacheInfo" ? string + "java" ? string + "pnfs" ? string + "ftpBase" ? string + "portBase" ? long with (self >= 0) + "logArea" ? string + "parallelStreams" ? long with (self >= 0) + "bufferSize" ? long with (self >= 0) + "tcpBufferSize" ? long with (self >= 0) + "billingToDb" ? string + "infoProviderStaticFile" ? string + "metaDataRepository" ? string + "metaDataRepositoryImport" ? string + "PermissionHandlerDataSource" ? string +}; + +type structure_dcache_node_config = { + "node_type" : string + # dcache_base_dir is deprecated for dcache_home + #"dcache_base_dir" ? string + + "dcache_home" ? string + + "pnfs_root" ? string + "pnfs_install_dir" ? string + "pnfs_start" ? boolean + "pnfs_overwrite" ? boolean + + "pool_path" ? string + "number_of_movers" ? long with (self >= 0) + "server_id" ? string + "admin_node" ? type_fqdn + + "gsidcap" ? boolean + "gridftp" ? boolean + "srm" ? boolean + "xrootd" ? boolean + "dcap" ? boolean + "replicaManager" ? boolean + "pnfsManager" ? boolean + "lmDomain" ? boolean + "httpDomain" ? boolean + "adminDoor" ? boolean + "poolManager" ? boolean + "utilityDomain" ? boolean + "dirDomain" ? boolean + "gPlazmaService" ? boolean + "infoProvider" ? boolean + + "namespace" ? string + "namespace_node" ? string +}; + +type structure_dcache_pnfs_setup = { + "shmservers" ? long with (self >= 0) +}; + +type structure_dcache_pnfs_config = { + "pnfs_install_dir" ? string + "pnfs_root" ? string + "pnfs_db" ? string + "pnfs_log" ? string + "pnfs_overwrite" ? boolean + "pnfs_psql_user" ? string +}; + +type structure_dcache_pnfs_db = { + "path" : string + "name" : string + "user" ? string + "group" ? string + "perm" ? string +}; + +type structure_dcache_pnfs_exports_rule = { + "mount" : string + "path" : string + "perm" : string + "opt" ? string +}; + +type structure_dcache_pnfs_exports = { + "ip" : type_ip + "netmask" ? type_ip + "rule" : structure_dcache_pnfs_exports_rule[] +}; + +type structure_dcache_pnfs = { + "pnfs_config" ? structure_dcache_pnfs_config + "pnfs_config_def" ? string[] + "databases" ? structure_dcache_pnfs_db[] + "exports" : structure_dcache_pnfs_exports[] + "pnfs_setup" ? structure_dcache_pnfs_setup + "pnfs_setup_def" ? string[] +}; + +type structure_dcache_create = { + 'batchname' : string + 'name' : string + 'cell' : string + 'context' ? string{} + 'opt' ? string{} +}; + +type structure_dcache_batch = { + 'create' : structure_dcache_create[] + 'batch_read' ? string + 'batch_write' ? string + 'batch_template' ? boolean +}; + +type structure_dcache_config = { + "dc_dir" ? string + "node_config_def" ? string[] + "node_config" : structure_dcache_node_config + "dCacheSetup_def" ? string[] + "dCacheSetup" : structure_dcache_dcachesetup + "admin_passwd" ? string + "debug_print" ? long with (self > 0) + "jythonjavahome" : string +}; + +type structure_dcache_chimera = { + "paths" ? string[] + "exports" ? string[] + "default_dcap" ? string +}; + +type dcache_component = { + include structure_component + include structure_component_dependency + "pool" ? structure_dcache_pool + "config": structure_dcache_config + "pnfs" ? structure_dcache_pnfs + "chimera" ? structure_dcache_chimera + "unit" ? structure_dcache_unit + "link" ? structure_dcache_link + "batch" ? structure_dcache_batch + "postgresql" ? string +}; + +bind '/software/components/dcache' = dcache_component; + diff --git a/components/dpmlfc/config.pan b/components/dpmlfc/config.pan new file mode 100644 index 000000000..96c7daab0 --- /dev/null +++ b/components/dpmlfc/config.pan @@ -0,0 +1,34 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# dpmlfc, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/dpmlfc/config; + +include 'components/dpmlfc/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/dpmlfc'; + +'version' = '24.10.0'; +'active' ?= true; +'dispatch' ?= true; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-dpmlfc', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/dpmlfc/schema.pan b/components/dpmlfc/schema.pan new file mode 100644 index 000000000..7a0c6c02b --- /dev/null +++ b/components/dpmlfc/schema.pan @@ -0,0 +1,254 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# dpmlfc, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/dpmlfc/schema; + +include 'quattor/schema'; + +function component_dpmlfc_number_string_valid = { + if ( !match(ARGV[0], '^\d+$') ) { + error(format("String '%s' is not a valid number", ARGV[0])); + }; + true; +}; + +function component_dpmlfc_global_options_valid = { + if ( !is_defined(ARGV[0]) ) { + error('Internal error: DPM/LFC global options undefined in validation function'); + }; + + if ( exists(ARGV[0]['accessProtocols']) && is_defined(ARGV[0]['accessProtocols']) ) { + if ( !is_list(ARGV[0]['accessProtocols']) ) { + error("Global option 'accessProtocols' must be a list"); + }; + foreach (i;protocol;ARGV[0]['accessProtocols']) { + if ( !match(protocol, '^https|gsiftp|rfio|xroot$') ) { + error('Invalid DPM access protocol specified (' + protocol + '). Must be https, gsiftp, rfio or xroot'); + }; + }; + }; + + if ( exists(ARGV[0]['controlProtocols']) && is_defined(ARGV[0]['controlProtocols']) ) { + if ( !is_list(ARGV[0]['controlProtocols']) ) { + error("Global option 'controlProtocols' must be a list"); + }; + foreach (i;protocol;ARGV[0]['controlProtocols']) { + if ( !match(protocol, '^srmv1|srmv2|srmv2.2$') ) { + error('Invalid DPM control protocol specified (' + protocol + '). Must be srmv1, srmv2 or srmv2.2'); + }; + }; + }; + + true; +}; + +# Validation of xroot access rules +function component_dpmlfc_xroot_access_rules_valid = { + if ( !is_defined(ARGV[0]) ) { + error('Internal error: DPM xroot access rules undefined in validation function'); + }; + + foreach (i;operation_type;list('authenticated', 'unauthenticated')) { + if ( is_defined(ARGV[0][operation_type]) ) { + foreach (j;operation;ARGV[0][operation_type]) { + if ( !match(operation, '^delete|read|write|write-once$') ) { + error('Invalid operation (' + operation + ') specified in xroot access rules for ' + operation_type + ' operations'); + }; + }; + }; + }; + true; +}; + +# Validation of node parameters +function component_dpmlfc_node_config_valid = { + # Check 'requestMaxAge is a valid value. See man dpm. + if ( is_defined(ARGV[0]['requestMaxAge']) ) { + if ( !match(ARGV[0]['requestMaxAge'], '^[0-9]+[ymdh]*$') ) { + error("'requestMaxAge' must be a number optionally followed by 'y' (year), 'm' (month), 'd' (day) or 'h' (hour)."); + } + }; + true; +}; + +# Validation of dav parameters +function component_dpmlfc_dav_config_valid = { + valid_disk_ns_flags = '^Write|RemoteCopy|NoAuthn$'; + if ( is_defined(ARGV[0]['DiskFlags']) ) { + foreach (i;flag;ARGV[0]['DiskFlags']) { + if ( !match(flag, valid_disk_ns_flags) ) error(format("DiskFlags invalid value (must match '%s')", valid_disk_ns_flags)); + }; + }; + if ( is_defined(ARGV[0]['NSFlags']) ) { + foreach (i;flag;ARGV[0]['NSFlags']) { + if ( !match(flag, valid_disk_ns_flags) ) error(format("NSFlags invalid value (must match '%s')", valid_disk_ns_flags)); + }; + }; + true; +}; + +type dpmlfc_component_fs_entry = { + "host" ? string + "name" ? string + "status" ? string +}; + +type dpmlfc_component_pool_entry = { + "def_filesize" ? string + "gc_start_thresh" ? long(0..) + "gc_stop_thresh" ? long(0..) + "def_pintime" ? long(0..) + "gid" ? long(1..) + "group" ? string + "put_retenp" ? long(0..) + "s_type" ? string with match (SELF, '^-|D|P|V$') + "fs" ? dpmlfc_component_fs_entry[] +}; + +type dpmlfc_component_vo_entry = { + "gid" ? long = -1 +}; + +type dpmlfc_component_node_config = { + "logfile" ? string + "port" ? type_port + "allowCoreDump" ? boolean + "threads" ? long + "maxOpenFiles" ? long + "globusThreadModel" : string = "pthread" +} with component_dpmlfc_node_config_valid(SELF); + +type dpmlfc_component_dpm_node_config = { + include dpmlfc_component_node_config + "requestMaxAge" ? string + "fastThreads" ? long + "slowThreads" ? long + "useSyncGet" ? boolean +}; + +type dpmlfc_component_rfio_gsiftp_node_config = { + include dpmlfc_component_node_config + "portRange" ? string +}; + +type dpmlfc_component_dpns_node_config = { + include dpmlfc_component_node_config + "readonly" ? boolean +}; + +# DAV related parameters: see zlcgdm-dav.conf for parameter documentation +type dpmlfc_component_dav_node_config = { + "DiskAnonUser" ? string + "DiskFlags" ? string[] + "NSAnonUser" ? string + "NSFlags" ? string[] + "NSMaxReplicas" ? long + "NSRedirectPort" ? long[] with length(SELF) == 2 + "NSSecureRedirect" ? string with match(to_lowercase(SELF), '^on|off$') + "NSServer" ? string[] with length(SELF) == 2 && component_dpmlfc_number_string_valid(SELF[1]) + "NSTrustedDNs" ? string[] + "NSType" ? string with match(SELF, '^DPM|LFC$') + "SSLCertFile" ? string + "SSLCertKey" ? string + "SSLCACertPath" ? string + "SSLCARevocationPath" ? string + "SSLCipherSuite" ? string[] + "SSLHonorCipherOrder" ? string + "SSLOptions" ? string[] + "SSLProtocol" ? string[] + "SSLSessionCache" ? string + "SSLSessionCacheTimeout" ? long + "SSLVerifyClient" ? string with match(to_lowercase(SELF), '^none|optional|require$') + "SSLVerifyDepth" ? long +} with component_dpmlfc_dav_config_valid(SELF); + +type dpmlfc_component_lfc_node_config = { + include dpmlfc_component_dpns_node_config + "disableAutoVirtualIDs" ? boolean +}; + +# Protocol options acts as default values for node specific options. +# Using protocol options rather than node specific options helps to +# maintain a consistent configuration across nodes. +type dpmlfc_component_protocol_options = { + "dav" ? dpmlfc_component_dav_node_config + "dpm" ? dpmlfc_component_dpm_node_config + "dpns" ? dpmlfc_component_dpns_node_config + "gsiftp" ? dpmlfc_component_rfio_gsiftp_node_config + "rfio" ? dpmlfc_component_rfio_gsiftp_node_config + "srmv1" ? dpmlfc_component_node_config + "srmv2" ? dpmlfc_component_node_config + "srmv22" ? dpmlfc_component_node_config + "xroot" ? dpmlfc_component_node_config + "copyd" ? dpmlfc_component_node_config +}; + +type dpmlfc_component_db_conn_options = { + "configfile" ? string + "configmode" ? string = '600' + "server" ? string + "user" : string = "dpmmgr" + "password" : string + "infoFile" ? string + "infoUser" ? string + "infoPwd" ? string +}; + +type dpmlfc_component_global_options = { + "user" ? string + "group" ? string + "db" ? dpmlfc_component_db_conn_options + "installDir" ? string = '/' + "gridmapfile" ? string + "gridmapdir" ? string + "accessProtocols" ? string[] + "controlProtocols" ? string[] +} with component_dpmlfc_global_options_valid(SELF); + +type dpmlfc_component_global_options_tree = { + "dpm" ? dpmlfc_component_global_options + "lfc" ? dpmlfc_component_global_options +}; + +type dpmlfc_component = { + include structure_component + + "dav" ? dpmlfc_component_dav_node_config{} + "dpm" ? dpmlfc_component_dpm_node_config{} + "dpns" ? dpmlfc_component_dpns_node_config{} + "gsiftp" ? dpmlfc_component_rfio_gsiftp_node_config{} + "rfio" ? dpmlfc_component_rfio_gsiftp_node_config{} + "srmv1" ? dpmlfc_component_node_config{} + "srmv2" ? dpmlfc_component_node_config{} + "srmv22" ? dpmlfc_component_node_config{} + "xroot" ? dpmlfc_component_node_config{} + "copyd" ? dpmlfc_component_node_config{} + + "pools" ? dpmlfc_component_pool_entry{} + "vos" ? dpmlfc_component_vo_entry{} + + "lfc" ? dpmlfc_component_lfc_node_config{} + "lfc-dli" ? dpmlfc_component_node_config{} + + "options" ? dpmlfc_component_global_options_tree + "protocols" ? dpmlfc_component_protocol_options +}; + +bind "/software/components/dpmlfc" = dpmlfc_component; diff --git a/components/gacl/config-common.pan b/components/gacl/config-common.pan new file mode 100644 index 000000000..fb7924439 --- /dev/null +++ b/components/gacl/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# gacl, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/gacl/config-common; + +include 'components/gacl/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/gacl'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/gacl/config-rpm.pan b/components/gacl/config-rpm.pan new file mode 100644 index 000000000..bc3fff8c5 --- /dev/null +++ b/components/gacl/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# gacl, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/gacl/config-rpm; + +include 'components/gacl/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/gacl'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-gacl', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/gacl/config.pan b/components/gacl/config.pan new file mode 100644 index 000000000..5c86f112b --- /dev/null +++ b/components/gacl/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# gacl, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/gacl/config; + +include 'components/gacl/config-rpm'; diff --git a/components/gacl/schema.pan b/components/gacl/schema.pan new file mode 100644 index 000000000..171ea9372 --- /dev/null +++ b/components/gacl/schema.pan @@ -0,0 +1,35 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# gacl, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# +# Coding style: emulate characters with 4 spaces, thanks! +################################################################################ + + +declaration template components/gacl/schema; + +include 'quattor/schema'; + +type gacl_component = { + include structure_component + + 'aclFile' : string = '/opt/glite/etc/glite_wms_wmproxy.gacl' +}; + +bind "/software/components/gacl" = gacl_component; + diff --git a/components/gip2/config.pan b/components/gip2/config.pan new file mode 100644 index 000000000..0ecc3c2d2 --- /dev/null +++ b/components/gip2/config.pan @@ -0,0 +1,33 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# gip2, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/gip2/config; + +include 'components/gip2/schema'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-gip2', '24.10.0-rc3_1', 'noarch'); + +# Set prefix to root of component configuration. +prefix '/software/components/gip2'; +'version' = '24.10.0'; +'active' ?= true; +'dispatch' ?= true; +'dependencies/pre' ?= list('spma'); + diff --git a/components/gip2/schema.pan b/components/gip2/schema.pan new file mode 100644 index 000000000..8858eeffd --- /dev/null +++ b/components/gip2/schema.pan @@ -0,0 +1,62 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# gip2, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/gip2/schema; + +include 'quattor/schema'; +include 'pan/types'; + +type structure_gip2_attribute = string[]; + +type structure_gip2_ldif = { + 'confFile' ? string + 'template' ? string + 'ldifFile' : string + 'entries' ? structure_gip2_attribute{}{} + 'staticInfoCmd' ? string +}; + +type gip2_component = { + include structure_component + 'user' : string + 'group' : string = 'root' + 'flavor' : string = 'lcg' with match(SELF, 'lcg|glite') + 'basedir' : string + 'etcDir' ? string + 'ldifDir' ? string + 'pluginDir' ? string + 'providerDir' ? string + 'workDirs' ? string[] + 'staticInfoCmd' ? string + 'bdiiRestartAllowed' : boolean = true + + 'confFiles' ? string{} + 'ldif' ? structure_gip2_ldif{} + # ldifConfEntries must be a dict of structure_gip2_ldif 'entries' property. + # See pod documentation. + 'ldifConfEntries' ? structure_gip2_attribute{}{}{} + 'plugin' ? string{} + 'provider' ? string{} + 'scripts' ? string{} + 'stubs' ? structure_gip2_attribute{}{}{} + 'external' ? string[] +}; + +bind '/software/components/gip2' = gip2_component; diff --git a/components/glitestartup/config-common.pan b/components/glitestartup/config-common.pan new file mode 100644 index 000000000..b8c680615 --- /dev/null +++ b/components/glitestartup/config-common.pan @@ -0,0 +1,32 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# glitestartup, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/glitestartup/config-common; + +include 'components/glitestartup/schema'; +include 'components/glitestartup/functions'; + +# Set prefix to root of component configuration. +prefix '/software/components/glitestartup'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/glitestartup/config-rpm.pan b/components/glitestartup/config-rpm.pan new file mode 100644 index 000000000..20582243b --- /dev/null +++ b/components/glitestartup/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# glitestartup, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/glitestartup/config-rpm; + +include 'components/glitestartup/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/glitestartup'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-glitestartup', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/glitestartup/config.pan b/components/glitestartup/config.pan new file mode 100644 index 000000000..3bdc7ceba --- /dev/null +++ b/components/glitestartup/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# glitestartup, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/glitestartup/config; + +include 'components/glitestartup/config-rpm'; diff --git a/components/glitestartup/functions.pan b/components/glitestartup/functions.pan new file mode 100644 index 000000000..dfcf265b3 --- /dev/null +++ b/components/glitestartup/functions.pan @@ -0,0 +1,97 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# glitestartup, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +unique template components/glitestartup/functions; + +# Function to add a gLite service with optional attributes. +# If the service already exists, its attributes are modified. +# +# Return value : dict of gLite services +# +# Expect to be called as : +# '/software/components/glitestartup/services' = glitestartup_mod_service(service_name[,service_attrs]); +# +# where : +# - service_name is the name of the gLite service +# - service_attrs is a dict of valid attributes (see schema.tpl) + +function glitestartup_mod_service = { + function_name = 'glitestartup_mod_service'; + if ( ARGC < 1 ) { + error(function_name + ': missing required argument (service name)'); + } else if ( ARGC > 2 ){ + error(function_name + ': too many arguments (' + to_string(ARGC) + ')'); + }; + + if ( ARGC == 2 ) { + SELF[ARGV[0]] = ARGV[1]; + } else { + SELF[ARGV[0]] = dict(); + }; + + SELF; +}; + + +# Function to add a new dependency to ncm-glitestartup. +# This function allows to avoid duplicating dependencies as this component may be used by many others. +# May be a candidate for inclusion in component core included into each component... Nothing component specific there. +# +# Calling sequence : +# '/software/components/glitestartup/dependencies/pre' (or post) = glitestartup_add_dependency(dependency_list); +# +# with dependency_list a list of dependency. + +function glitestartup_add_dependency = { + function_name = 'glitestartup_add_dependency'; + deps = SELF; + tmpdeps = dict(); + + if ( (ARGC != 1) || !is_list(ARGV[0]) ) { + error(function_name + ': argument must be list of dependencies'); + }; + + if ( !is_defined(deps) ) { + deps = list(); + } else if ( !is_list(deps) ) { + error('component dependencies must be a list'); + } else { + foreach (i;dep;deps) { + tmpdeps[dep] = ''; + }; + }; + + foreach (i;dep;ARGV[0]) { + if ( !exists(tmpdeps[dep]) ) { + tmpdeps[dep] = ''; + } + }; + + deps = list(); + foreach (dep;v;tmpdeps) { + deps[length(deps)] = dep; + }; + + if ( length(deps) > 0 ) { + deps; + } else { + null; + }; +}; diff --git a/components/glitestartup/schema.pan b/components/glitestartup/schema.pan new file mode 100644 index 000000000..63611729d --- /dev/null +++ b/components/glitestartup/schema.pan @@ -0,0 +1,51 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# glitestartup, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/glitestartup/schema; + +include 'quattor/schema'; + +include 'pan/types'; + +type glitestartup_component_service = { + 'args' ? string = '' +}; + +type glitestartup_component_post_restart = { + 'cmd' : string + 'expectedStatus' ? long +}; + +type glitestartup_component = { + include structure_component + + 'configFile' : string = '/opt/glite/etc/gLiteservices' + 'initScript' : string = '/etc/rc.d/init.d/gLite' + 'disableOutput' ? boolean + 'disableError' ? boolean + 'restartEnv' ? string[] + 'postRestart' ? glitestartup_component_post_restart[] + 'restartServices' ? boolean + 'createProxy' : boolean = true + 'scriptPaths' : string[] = list('/opt/glite/etc/init.d') + 'services' : glitestartup_component_service{} +}; + +bind '/software/components/glitestartup' = glitestartup_component; diff --git a/components/globuscfg/config-common.pan b/components/globuscfg/config-common.pan new file mode 100644 index 000000000..e0b61fb38 --- /dev/null +++ b/components/globuscfg/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Novak Judit +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# globuscfg, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/globuscfg/config-common; + +include 'components/globuscfg/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/globuscfg'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/globuscfg/config-rpm.pan b/components/globuscfg/config-rpm.pan new file mode 100644 index 000000000..60e307d59 --- /dev/null +++ b/components/globuscfg/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Novak Judit +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# globuscfg, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/globuscfg/config-rpm; + +include 'components/globuscfg/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/globuscfg'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-globuscfg', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/globuscfg/config.pan b/components/globuscfg/config.pan new file mode 100644 index 000000000..d0c8109b3 --- /dev/null +++ b/components/globuscfg/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Novak Judit +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# globuscfg, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/globuscfg/config; + +include 'components/globuscfg/config-rpm'; diff --git a/components/globuscfg/schema.pan b/components/globuscfg/schema.pan new file mode 100644 index 000000000..a68ec0bcb --- /dev/null +++ b/components/globuscfg/schema.pan @@ -0,0 +1,128 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Novak Judit +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# globuscfg, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + + +declaration template components/globuscfg/schema; + +include 'quattor/schema'; + +type reg_type = { + "recordname" : string + "regname" ? string + "reghn" ? string + "regport" ? type_port + "regperiod" ? long + "ttl" ? long +}; + +type globus_mds_gris_type = { + "suffix" ? string + "provider" ? string{} + "registration" ? reg_type[] +}; + +type globus_mds_giis_allowedregs_type = { + "recordname" : string + "name" ? string + "allowreg" ? string[] +}; + +type globus_mds_giis_reg_type = { + "regname" : string + "reghn" : string + "regport" ? type_port + "regperiod" ? long + "ttl" ? long + "name" ? string +}; + +type globus_mds_giis_type = { + "allowedregs" ? globus_mds_giis_allowedregs_type[] + "registration" ? globus_mds_giis_reg_type{} +}; + +type globus_mds_type = { + "globus_flavor_name" ? string + "user" ? string + "x509_user_cert" ? string + "x509_user_key" ? string + "gris" ? globus_mds_gris_type + "giis" ? globus_mds_giis_type +}; + +type globus_gridftp_type = { + "globus_flavor_name" ? string + "X509_USER_CERT" ? string + "X509_USER_KEY" ? string + "ftpd" ? string + "port" ? type_port + "umask" ? string + "log" ? string + "user" ? string + "maxConnections" ? long + "options" ? string +}; + +type globus_gatekeeper_jobmanager_type = { + "recordname" : string + "type" ? string + "job_manager" ? string + "extra_config" ? string +}; + +type globus_gatekeeper_type = { + "globus_flavor_name" ? string + "job_manager_path" ? string[] + "globus_gatekeeper" ? string + "extra_options" ? string + "user" ? string + "port" ? type_port + "logfile" ? string + "jobmanagers" ? globus_gatekeeper_jobmanager_type[] +}; + +type globus_global_type = { + "services" ? string[] + "paths" ? string[] + "globus_flavor_name" : string + "GLOBUS_LOCATION" : string = '/opt/globus' + "GPT_LOCATION" : string = '/opt/gpt' + "GLOBUS_CONFIG" : string = '/etc/globus.conf' + "GLOBUS_TCP_PORT_RANGE" ? string + "GLOBUS_UDP_PORT_RANGE" ? string + "LD_LIBRARY_PATH" ? string # "appended to existing LD_LIBRARY_PATH" + "x509_user_cert" ? string + "x509_user_key" ? string + "x509_cert_dir" : string = '/etc/grid-security/certificates' + "gridmap" ? string + "gridmapdir" ? string + "mds" ? globus_mds_type + "gridftp" ? globus_gridftp_type + "gatekeeper" ? globus_gatekeeper_type + "sysconfigUpdate" ? boolean = true # "if false, don't update /etc/sysconfig/globus" +}; + +type globuscfg_component_type = { + include structure_component + include globus_global_type +}; + + +bind "/software/components/globuscfg" = globuscfg_component_type; diff --git a/components/gridmapdir/config-common.pan b/components/gridmapdir/config-common.pan new file mode 100644 index 000000000..ba48269bf --- /dev/null +++ b/components/gridmapdir/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# gridmapdir, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/gridmapdir/config-common; + +include 'components/gridmapdir/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/gridmapdir'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/gridmapdir/config-rpm.pan b/components/gridmapdir/config-rpm.pan new file mode 100644 index 000000000..7fb04a6c0 --- /dev/null +++ b/components/gridmapdir/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# gridmapdir, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/gridmapdir/config-rpm; + +include 'components/gridmapdir/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/gridmapdir'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-gridmapdir', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/gridmapdir/config.pan b/components/gridmapdir/config.pan new file mode 100644 index 000000000..cb8d8cc3b --- /dev/null +++ b/components/gridmapdir/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# gridmapdir, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/gridmapdir/config; + +include 'components/gridmapdir/config-rpm'; diff --git a/components/gridmapdir/schema.pan b/components/gridmapdir/schema.pan new file mode 100644 index 000000000..1c2fe8625 --- /dev/null +++ b/components/gridmapdir/schema.pan @@ -0,0 +1,35 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# gridmapdir, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/gridmapdir/schema; + +include 'quattor/schema'; + +type gridmapdir_component = { + include structure_component + 'gridmapdir' : string + 'poolaccounts' : long(0..0){} + 'sharedGridmapdir' ? string + 'owner' : string = 'root' + 'group' : string = 'root' + 'perms' : string = '0755' +}; + +bind '/software/components/gridmapdir' = gridmapdir_component; diff --git a/components/gsissh/config-common.pan b/components/gsissh/config-common.pan new file mode 100644 index 000000000..385ef98f7 --- /dev/null +++ b/components/gsissh/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# gsissh, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/gsissh/config-common; + +include 'components/gsissh/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/gsissh'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/gsissh/config-rpm.pan b/components/gsissh/config-rpm.pan new file mode 100644 index 000000000..2d17cd342 --- /dev/null +++ b/components/gsissh/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# gsissh, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/gsissh/config-rpm; + +include 'components/gsissh/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/gsissh'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-gsissh', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/gsissh/config.pan b/components/gsissh/config.pan new file mode 100644 index 000000000..f0b3d0732 --- /dev/null +++ b/components/gsissh/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# gsissh, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/gsissh/config; + +include 'components/gsissh/config-rpm'; diff --git a/components/gsissh/schema.pan b/components/gsissh/schema.pan new file mode 100644 index 000000000..591064bfe --- /dev/null +++ b/components/gsissh/schema.pan @@ -0,0 +1,44 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# gsissh, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/gsissh/schema; + +include 'quattor/schema'; +include 'pan/types'; + +type structure_gsissh_server = { + 'port' : type_port + 'options' ? string{} +}; + +type structure_gsissh_client = { + 'options' ? string{} +}; + +type gsissh_component = { + include structure_component + 'globus_location' ? string + 'gpt_location' ? string + 'server' ? structure_gsissh_server + 'client' ? structure_gsissh_client +}; + +bind '/software/components/gsissh' = gsissh_component; + diff --git a/components/lbconfig/config-common.pan b/components/lbconfig/config-common.pan new file mode 100644 index 000000000..fa9610e9e --- /dev/null +++ b/components/lbconfig/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lbconfig, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lbconfig/config-common; + +include 'components/lbconfig/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/lbconfig'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/lbconfig/config-rpm.pan b/components/lbconfig/config-rpm.pan new file mode 100644 index 000000000..0e40f6cf6 --- /dev/null +++ b/components/lbconfig/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lbconfig, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lbconfig/config-rpm; + +include 'components/lbconfig/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/lbconfig'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-lbconfig', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/lbconfig/config.pan b/components/lbconfig/config.pan new file mode 100644 index 000000000..b9b5ba2fb --- /dev/null +++ b/components/lbconfig/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lbconfig, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lbconfig/config; + +include 'components/lbconfig/config-rpm'; diff --git a/components/lbconfig/schema.pan b/components/lbconfig/schema.pan new file mode 100644 index 000000000..b5130d03e --- /dev/null +++ b/components/lbconfig/schema.pan @@ -0,0 +1,33 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lbconfig, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/lbconfig/schema; + +include 'quattor/schema'; + +type structure_index_list = string[]; + +type lbconfig_component = { + include structure_component + 'configFile' : string = 'edg_wl_query_index.conf' + 'indicies' : structure_index_list{} = dict('system', list('owner', 'location', 'destination')) +}; + +bind '/software/components/lbconfig' = lbconfig_component; diff --git a/components/lcas/config-common.pan b/components/lcas/config-common.pan new file mode 100644 index 000000000..a6254cc76 --- /dev/null +++ b/components/lcas/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# David Groep +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcas, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lcas/config-common; + +include 'components/lcas/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/lcas'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/lcas/config-rpm.pan b/components/lcas/config-rpm.pan new file mode 100644 index 000000000..f45485112 --- /dev/null +++ b/components/lcas/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# David Groep +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcas, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lcas/config-rpm; + +include 'components/lcas/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/lcas'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-lcas', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/lcas/config.pan b/components/lcas/config.pan new file mode 100644 index 000000000..a8ae6b845 --- /dev/null +++ b/components/lcas/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# David Groep +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcas, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lcas/config; + +include 'components/lcas/config-rpm'; diff --git a/components/lcas/schema.pan b/components/lcas/schema.pan new file mode 100644 index 000000000..63df0c3b7 --- /dev/null +++ b/components/lcas/schema.pan @@ -0,0 +1,72 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# David Groep +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcas, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# +# Coding style: emulate characters with 4 spaces, thanks! +################################################################################ + + +declaration template components/lcas/schema; + +include 'quattor/schema'; + +# Validation function to ensure that legacy schema properties for describing +#databases ('dbpath', 'module') are not used with the new ones (under 'db'). +function component_lcas_valid = { + if ( (ARGC != 1) && !is_dict(ARGV[0]) ) { + error('Invalid argument list in validation function component_lcas_valid'); + }; + + if ( is_defined(SELF['db']) && is_defined(SELF['dbpath']) ) { + error('Single database and multiple database configuration are mutually exclusive'); + return(false); + } else if ( !is_defined(SELF['db']) && !is_defined(SELF['dbpath']) ) { + error('Neither multiple database configuration nor valid single database configuration present'); + return(false); + }; + + return(true); +}; + + +type lcas_component_plainfile_content = { + "path" : string + "noheader" : boolean = false + "content" ? string[] +}; + +type lcas_component_modulespec = { + "path" : string + "args" ? string + "conf" ? lcas_component_plainfile_content +}; + +type lcas_component_db = { + "path" : string + "module" ? lcas_component_modulespec[] +}; + +type lcas_component = { + include structure_component + "db" ? lcas_component_db[] + # Deprecated: use 'db' instead. + "dbpath" ? string + "module" ? lcas_component_modulespec[] +} with component_lcas_valid(SELF); + +bind "/software/components/lcas" = lcas_component; diff --git a/components/lcgbdii/config-common.pan b/components/lcgbdii/config-common.pan new file mode 100644 index 000000000..177c70cbc --- /dev/null +++ b/components/lcgbdii/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcgbdii, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lcgbdii/config-common; + +include 'components/lcgbdii/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/lcgbdii'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/lcgbdii/config-rpm.pan b/components/lcgbdii/config-rpm.pan new file mode 100644 index 000000000..c939f1e0b --- /dev/null +++ b/components/lcgbdii/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcgbdii, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lcgbdii/config-rpm; + +include 'components/lcgbdii/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/lcgbdii'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-lcgbdii', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/lcgbdii/config.pan b/components/lcgbdii/config.pan new file mode 100644 index 000000000..c6aec5198 --- /dev/null +++ b/components/lcgbdii/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcgbdii, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lcgbdii/config; + +include 'components/lcgbdii/config-rpm'; diff --git a/components/lcgbdii/schema.pan b/components/lcgbdii/schema.pan new file mode 100644 index 000000000..19347d748 --- /dev/null +++ b/components/lcgbdii/schema.pan @@ -0,0 +1,98 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcgbdii, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/lcgbdii/schema; + +include 'quattor/schema'; + +include 'pan/types'; + +# Function to check that some optional properties are present in context they +# are requireed +function lcgbdii_check_params = { + if ( ARGC != 1 ) { + error('lcgbdii_check_params must receive exactly one argument of type component_lcgbdii'); + }; + + if ( is_defined(SELF['autoUpdate']) && (SELF['autoUpdate'] == 'yes') && !exists(SELF['updateUrl']) ) { + error('Property updateUrl required when autoUpdate=yes'); + }; + + if ( is_defined(SELF['autoModify']) && (SELF['autoModify'] == 'yes') && !exists(SELF['updateLdif']) ) { + error('Property updateLdif required when autoModify=yes'); + }; + + if ( !is_defined(SELF['port']) && (!is_defined(SELF['portRead']) || !is_defined(SELF['portsWrite'])) ) { + error('Either port or portRead/portsWrite must be specified'); + }; + + true; +}; + + +type lcgbdii_component = { + include structure_component + + 'dir' ? string = '/opt/bdii/' + 'varDir' : string = '/opt/bdii/var' + 'configFile' : string = '/opt/bdii/bdii.conf' + 'logFile' ? string + 'logLevel' : string = "ERROR" with match(SELF, '^(ERROR|WARNING|INFO|DEBUG)$') + + 'schemaFile' ? string = '/opt/bdii/etc/schemas' + 'schemas' ? string[] + + 'port' ? type_port + 'portRead' ? type_port + 'portsWrite' ? type_port[] + 'user' : string = 'edguser' + 'bind' ? string = 'mds-vo-name=local,o=grid' + 'passwd' ? string + 'searchFilter' ? string + 'searchTimeout' ? long(1..) + 'readTimeout' ? long(1..) + 'breatheTime' ? long(1..) = 60 + 'archiveSize' ? long + 'autoUpdate' ? string = 'no' with match (SELF, '^(yes|no)$') + 'autoModify' ? string = 'no' with match (SELF, '^(yes|no)$') + 'isCache' ? string = 'no' with match (SELF, '^(yes|no)$') + 'modifyDN' ? string = 'no' with match (SELF, '^(yes|no)$') + 'RAMDisk' ? string with match (SELF, '^(yes|no)$') + 'deleteDelay' ? long + 'fixGlue' ? string with match (SELF, '^(yes|no)$') + + 'updateUrl' ? type_absoluteURI + 'updateLdif' ? type_absoluteURI + 'defaultLdif' ? string = '/opt/bdii/etc/default.ldif' + + 'slapd' ? string + 'slapadd' ? string + 'slapdConf' ? string = '/opt/bdii/etc/glue-slapd.conf' + 'slapdDebugLevel' ? long(0..5) + + 'urls' ? type_absoluteURI{} + + 'ldifDir' ? string + 'pluginDir' ? string + 'providerDir' ? string + +} with lcgbdii_check_params(SELF); + +bind '/software/components/lcgbdii' = lcgbdii_component; diff --git a/components/lcgmonjob/config-common.pan b/components/lcgmonjob/config-common.pan new file mode 100644 index 000000000..774b9670b --- /dev/null +++ b/components/lcgmonjob/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcgmonjob, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lcgmonjob/config-common; + +include 'components/lcgmonjob/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/lcgmonjob'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/lcgmonjob/config-rpm.pan b/components/lcgmonjob/config-rpm.pan new file mode 100644 index 000000000..8270ed83c --- /dev/null +++ b/components/lcgmonjob/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcgmonjob, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lcgmonjob/config-rpm; + +include 'components/lcgmonjob/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/lcgmonjob'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-lcgmonjob', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/lcgmonjob/config.pan b/components/lcgmonjob/config.pan new file mode 100644 index 000000000..0642909c9 --- /dev/null +++ b/components/lcgmonjob/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcgmonjob, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lcgmonjob/config; + +include 'components/lcgmonjob/config-rpm'; diff --git a/components/lcgmonjob/schema.pan b/components/lcgmonjob/schema.pan new file mode 100644 index 000000000..ba1f06cdd --- /dev/null +++ b/components/lcgmonjob/schema.pan @@ -0,0 +1,33 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcgmonjob, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/lcgmonjob/schema; + +include 'quattor/schema'; + +type lcgmonjob_component = { + include structure_component + 'EDG_LOCATION' : string + 'LCG_LOCATION' : string +}; + +bind '/software/components/lcgmonjob' = lcgmonjob_component; + + diff --git a/components/lcmaps/config-common.pan b/components/lcmaps/config-common.pan new file mode 100644 index 000000000..4a6f85f56 --- /dev/null +++ b/components/lcmaps/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# David Groep +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcmaps, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lcmaps/config-common; + +include 'components/lcmaps/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/lcmaps'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/lcmaps/config-rpm.pan b/components/lcmaps/config-rpm.pan new file mode 100644 index 000000000..3a24a75c1 --- /dev/null +++ b/components/lcmaps/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# David Groep +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcmaps, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lcmaps/config-rpm; + +include 'components/lcmaps/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/lcmaps'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-lcmaps', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/lcmaps/config.pan b/components/lcmaps/config.pan new file mode 100644 index 000000000..00e405bca --- /dev/null +++ b/components/lcmaps/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# David Groep +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcmaps, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/lcmaps/config; + +include 'components/lcmaps/config-rpm'; diff --git a/components/lcmaps/schema.pan b/components/lcmaps/schema.pan new file mode 100644 index 000000000..5f1b77280 --- /dev/null +++ b/components/lcmaps/schema.pan @@ -0,0 +1,82 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# David Groep +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# lcmaps, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# +# Coding style: emulate characters with 4 spaces, thanks! +################################################################################ + + +declaration template components/lcmaps/schema; + +include 'quattor/schema'; + +function component_lcmaps_valid = { + if ( (ARGC != 1) && !is_dict(ARGV[0]) ) { + error('Invalid argument list in validation function component_lcmaps_valid'); + }; + + if ( + exists(SELF['config']) && is_defined(SELF['config']) && + exists(SELF['dbpath']) && is_defined(SELF['dbpath']) && + exists(SELF['module']) && is_defined(SELF['module']) && + exists(SELF['modulepath']) && is_defined(SELF['modulepath']) && + exists(SELF['policies']) && is_defined(SELF['policies']) ) { + error('Single file and multifile configuration be used togheter'); + return(false); + } else if ( !exists(SELF['config']) || !is_defined(SELF['config']) ) { + if ( + !exists(SELF['dbpath']) || !is_defined(SELF['dbpath']) || + !exists(SELF['modulepath']) || !is_defined(SELF['modulepath']) ) { + error('Neiter multifile configuration nor valid single file configuration present'); + return(false); + }; + }; + return(true); +}; + +type lcmaps_modulespec_type = { + "path" : string + "args" ? string +}; + +type lcmaps_policy_type = { + "name" : string + "ruleset" : string[] +}; + +type lcmaps_file_type = { + "dbpath" : string + "modulepath" : string + "module" ? lcmaps_modulespec_type{} + "policies" ? lcmaps_policy_type[] +}; + +type lcmaps_component = { + include structure_component + "flavor" ? string with match(SELF, 'edg|glite') + "dbpath" ? string + "modulepath" ? string + "multifile" ? boolean + "module" ? lcmaps_modulespec_type{} + "policies" ? lcmaps_policy_type[] + "config" ? lcmaps_file_type[] + # 'multifile' is deprecated and ignored. Kept for backward compatibility. + "multifile" ? boolean +} with component_lcmaps_valid(SELF); + +bind "/software/components/lcmaps" = lcmaps_component; diff --git a/components/maui/config.pan b/components/maui/config.pan new file mode 100644 index 000000000..c96e42341 --- /dev/null +++ b/components/maui/config.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + + +unique template components/maui/config; + +include 'components/maui/schema'; + +bind '/software/components/maui' = maui_component; + +# Set prefix to root of component configuration. +prefix '/software/components/maui'; +'version' = '24.10.0'; +'active' ?= true; +'dispatch' ?= true; +'dependencies/pre' ?= list('spma'); + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-maui', '24.10.0-rc3_1', 'noarch'); diff --git a/components/maui/schema.pan b/components/maui/schema.pan new file mode 100644 index 000000000..df18e9c90 --- /dev/null +++ b/components/maui/schema.pan @@ -0,0 +1,26 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + + +declaration template components/maui/schema; + +include 'quattor/types/component'; + +type maui_component = { + include structure_component + 'configPath' ? string + 'configFile' ? string + 'contents' ? string +}; diff --git a/components/mkgridmap/config-common.pan b/components/mkgridmap/config-common.pan new file mode 100644 index 000000000..81f8bd3ed --- /dev/null +++ b/components/mkgridmap/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# mkgridmap, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/mkgridmap/config-common; + +include 'components/mkgridmap/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/mkgridmap'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/mkgridmap/config-rpm.pan b/components/mkgridmap/config-rpm.pan new file mode 100644 index 000000000..c7dad4fa3 --- /dev/null +++ b/components/mkgridmap/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# mkgridmap, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/mkgridmap/config-rpm; + +include 'components/mkgridmap/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/mkgridmap'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-mkgridmap', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/mkgridmap/config.pan b/components/mkgridmap/config.pan new file mode 100644 index 000000000..04da50d51 --- /dev/null +++ b/components/mkgridmap/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# mkgridmap, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/mkgridmap/config; + +include 'components/mkgridmap/config-rpm'; diff --git a/components/mkgridmap/schema.pan b/components/mkgridmap/schema.pan new file mode 100644 index 000000000..f63a2c42a --- /dev/null +++ b/components/mkgridmap/schema.pan @@ -0,0 +1,57 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# mkgridmap, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/mkgridmap/schema; + +include 'quattor/schema'; + +type structure_mkgridmap_local = { + 'cert' : string + 'user' : string +}; + +type structure_mkgridmap_lcmaps = { + 'flavor' : string = 'glite' with match(SELF, 'edg|glite') + 'gridmapfile' : string = '/opt/edg/etc/lcmaps/gridmapfile' + 'groupmapfile' : string = '/opt/edg/etc/lcmaps/groupmapfile' +}; + +type mkgridmap_component_entry = extensible { + 'mkgridmapconf' : string + 'format' : string with (match(SELF, 'edg|lcgdm')) + 'command' ? string + # 'gmflocal' ? string # can have either string or list (hence "extensible") + # 'gmflocal' ? string[] # if you need a list, explicitly set to "null" before to remove default + 'lcuser' ? string + 'allow' ? string + 'deny' ? string + 'overwrite' : boolean + 'authURIs' ? type_hostURI[] + 'locals' ? structure_mkgridmap_local[] +}; + +type mkgridmap_component = { + include structure_component + 'entries' : mkgridmap_component_entry{} + 'lcmaps' ? structure_mkgridmap_lcmaps + 'voList' ? string[] +}; + +bind '/software/components/mkgridmap' = mkgridmap_component; diff --git a/components/myproxy/config-common.pan b/components/myproxy/config-common.pan new file mode 100644 index 000000000..7558e32d7 --- /dev/null +++ b/components/myproxy/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# myproxy, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/myproxy/config-common; + +include 'components/myproxy/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/myproxy'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/myproxy/config-rpm.pan b/components/myproxy/config-rpm.pan new file mode 100644 index 000000000..9b2d4d6e2 --- /dev/null +++ b/components/myproxy/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# myproxy, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/myproxy/config-rpm; + +include 'components/myproxy/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/myproxy'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-myproxy', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/myproxy/config.pan b/components/myproxy/config.pan new file mode 100644 index 000000000..ea464f153 --- /dev/null +++ b/components/myproxy/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# myproxy, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/myproxy/config; + +include 'components/myproxy/config-rpm'; diff --git a/components/myproxy/schema.pan b/components/myproxy/schema.pan new file mode 100644 index 000000000..db1757817 --- /dev/null +++ b/components/myproxy/schema.pan @@ -0,0 +1,54 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# myproxy, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/myproxy/schema; + +include 'quattor/schema'; + +# Function to validate component configuration, in particular +# ensure than obsolete trustedDNs is not specified as the same +# time as new authorizedDNs and defaultDNs. + +function component_myproxy_options_valid = { + if ( is_defined(SELF['trustedDNs']) && (is_defined(SELF['authorizedDNs']) || is_defined(SELF['defaultDNs'])) ) { + error('trustedDNs is obsolete and cannot be mixed with authorizedDNs and defaultDNs'); + }; + true; +}; + + +type myproxy_component_policies = { + 'renewers' ? string[] + 'retrievers' ? string[] + 'keyRetrievers' ? string[] + 'trustedRetrievers' ? string[] +}; + +type myproxy_component = { + include structure_component + 'flavor' : string = 'edg' with match(SELF, '^(edg|glite)$') + 'confFile' ? string = 'opt/edg/etc/edg-myproxy.conf' + 'daemonName' : string = 'myproxy' with match(SELF, '^(myproxy|myproxy-server)$') + 'trustedDNs' ? string[] + 'authorizedDNs' ? myproxy_component_policies + 'defaultDNs' ? myproxy_component_policies +} with component_myproxy_options_valid(SELF); + +bind '/software/components/myproxy' = myproxy_component; diff --git a/components/pbsclient/config-common.pan b/components/pbsclient/config-common.pan new file mode 100644 index 000000000..1f53262e6 --- /dev/null +++ b/components/pbsclient/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# David Groep +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# pbsclient, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/pbsclient/config-common; + +include 'components/pbsclient/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/pbsclient'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/pbsclient/config-rpm.pan b/components/pbsclient/config-rpm.pan new file mode 100644 index 000000000..ef3cbdef4 --- /dev/null +++ b/components/pbsclient/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# David Groep +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# pbsclient, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/pbsclient/config-rpm; + +include 'components/pbsclient/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/pbsclient'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-pbsclient', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/pbsclient/config.pan b/components/pbsclient/config.pan new file mode 100644 index 000000000..9e141f855 --- /dev/null +++ b/components/pbsclient/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# David Groep +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# pbsclient, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/pbsclient/config; + +include 'components/pbsclient/config-rpm'; diff --git a/components/pbsclient/schema.pan b/components/pbsclient/schema.pan new file mode 100644 index 000000000..452ab8646 --- /dev/null +++ b/components/pbsclient/schema.pan @@ -0,0 +1,176 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# David Groep +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# pbsclient, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# +# Coding style: emulate characters with 4 spaces, thanks! +################################################################################ + + +declaration template components/pbsclient/schema; + +include 'quattor/schema'; + +type pbsclient_component_pathmapping_type = { + "locations" : string + "path" : string +}; + +type pbsclient_component_scripts_type = { + "epilogue" ? string + "epilogue.user" ? string + "epilogue.parallel" ? string + "prologue" ? string + "prologue.user" ? string + "prologue.parallel" ? string +}; + +type pbsclient_component_structure_initialisation = { + ## initialisation values + ## regular (see PBSINITIALISATIONVALUES) + ## The expressions start with the variable t (total assigned CPUs) or c (existing CPUs), an operator (+ - / *), and followed by a float constant + "auto_ideal_load" ? string with match (SELF, '^[tc][+-/*]\d+(\.\d+)?') + "auto_max_load" ? string with match (SELF, '^[tc][+-/*]\d+(\.\d+)?') + + "check_poll_time" ? long(0..) + + "checkpoint_interval" ? long + "checkpoint_script" ? string + "checkpoint_run_exe" ? string + + "configversion" ? string + + "cputmult" ? double + + "down_on_error" ? boolean + + "enablemomrestart" ? boolean + + "ideal_load" ? double + + "igncput" ? boolean + "ignmem" ? boolean + "ignvmem" ? boolean + "ignwalltime" ? boolean + + ## octal, hex, or "userdefault" + "job_output_file_mask" ? string + + "log_directory" ? string + "logevent" ? long + "log_file_suffix" ? string + "log_keep_days" ? long(0..) + "loglevel" ? long(0..7) + "log_file_max_size" ? long(0..) + "log_file_roll_depth" ? long(1..) + + "max_conn_timeout_micro_sec" ? long + + "max_load" ? double + + "memory_pressure_threshold" ? double + "memory_pressure_duration" ? long(0..) + + "node_check_script" ? string + "node_check_interval" ? string[] + + "nodefile_suffix" ? string + + "nospool_dir_list" ? string[] + + "job_oom_score_adjust" ? long + + "prologalarm" ? long + + "rcpcmd" ? string + + "remote_checkpoint_dirs" ? string + + "remote_reconfig" ? boolean + + "restart_script" ? string + + "source_login_batch" ? boolean + "source_login_interactive" ? boolean + + "spool_as_final_name" ? boolean + + "status_update_time" ? long + + "tmpdir" ? string + + "timeout" ? long + + "use_smt" ? boolean + + "wallmult" ? double + + ## camelCase style (legacy) (see PBSINITIALISATIONVALUESMAP) + "cpuTimeMultFactor" ? double + "idealLoad" ? double + "logEvent" ? long + "maxLoad" ? double + "nodeCheckScriptPath" ? string + "nodeCheckIntervalSec" ? long + "prologAlarmSec" ? long + "wallTimeMultFactor" ? double +}; + +type pbsclient_component_structure_options = { + ## other options + 'mom_host' ? string + 'xauthpath' ? string +}; + + +type pbsclient_component_type = { + include structure_component + + "pbsroot" ? string + "configPath" ? string + "initScriptPath" ? string + + ## if behaviour = Torque, first entry of the masters is the $pbsmastername (which is old torque option?) + ## Torque3 uses $pbsserver instead of $clienthost + ## default is ok + "behaviour" ? string = 'OpenPBS' with match (SELF, 'OpenPBS|Torque|Torque3') + + "masters" : string[] + "pbsclient" ? string[] + "aliases" ? string[] + "restricted" ? string[] + "cpuinfo" ? string[] + "varattr" ? string[] + + ## Static Resources / Shell Commands / size[fs=] + "resources" ? string[] + + ## $usecp directives + "directPaths" ? pbsclient_component_pathmapping_type[] + + ## prologue and epilogue + "scripts" ? pbsclient_component_scripts_type + + include pbsclient_component_structure_initialisation + + include pbsclient_component_structure_options + + "submitonly" ? boolean +}; + + +bind "/software/components/pbsclient" = pbsclient_component_type; diff --git a/components/pbsknownhosts/config-common.pan b/components/pbsknownhosts/config-common.pan new file mode 100644 index 000000000..cfcb5bafd --- /dev/null +++ b/components/pbsknownhosts/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# pbsknownhosts, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/pbsknownhosts/config-common; + +include 'components/pbsknownhosts/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/pbsknownhosts'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/pbsknownhosts/config-rpm.pan b/components/pbsknownhosts/config-rpm.pan new file mode 100644 index 000000000..11f9c1739 --- /dev/null +++ b/components/pbsknownhosts/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# pbsknownhosts, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/pbsknownhosts/config-rpm; + +include 'components/pbsknownhosts/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/pbsknownhosts'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-pbsknownhosts', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/pbsknownhosts/config.pan b/components/pbsknownhosts/config.pan new file mode 100644 index 000000000..4999adc80 --- /dev/null +++ b/components/pbsknownhosts/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# pbsknownhosts, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/pbsknownhosts/config; + +include 'components/pbsknownhosts/config-rpm'; diff --git a/components/pbsknownhosts/schema.pan b/components/pbsknownhosts/schema.pan new file mode 100644 index 000000000..9a0fcfdc5 --- /dev/null +++ b/components/pbsknownhosts/schema.pan @@ -0,0 +1,39 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# pbsknownhosts, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/pbsknownhosts/schema; + +include 'quattor/schema'; + +type pbsknownhosts_component = { + include structure_component + 'configFile' : string = '/opt/edg/etc/edg-pbs-knownhosts.conf' + 'pbsbin' : string = '/usr/bin' + 'nodes' : string = '' + 'keytypes' : string = 'rsa1,rsa,dsa' + 'knownhosts' : string = '/etc/ssh/ssh_known_hosts' + 'knownhostsscript' ? string + 'targets' ? string[] + 'shostsConfigFile' ? string + 'shosts' ? string + 'shostsscript' ? string +}; + +bind '/software/components/pbsknownhosts' = pbsknownhosts_component; diff --git a/components/pbsserver/config.pan b/components/pbsserver/config.pan new file mode 100644 index 000000000..b0a8fc381 --- /dev/null +++ b/components/pbsserver/config.pan @@ -0,0 +1,32 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + + +unique template components/pbsserver/config; + +include 'components/pbsserver/schema'; + +bind '/software/components/pbsserver' = pbsserver_component; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-pbsserver', '24.10.0-rc3_1', 'noarch'); + +# Set prefix to root of component configuration. +prefix '/software/components/pbsserver'; + +'version' = '24.10.0'; +'active' ?= true; +'dispatch' ?= true; +'dependencies/pre' ?= list('spma'); diff --git a/components/pbsserver/schema.pan b/components/pbsserver/schema.pan new file mode 100644 index 000000000..153fbcd11 --- /dev/null +++ b/components/pbsserver/schema.pan @@ -0,0 +1,277 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + + +declaration template components/pbsserver/schema; + +include 'pan/types'; +include 'quattor/types/component'; + +type pbs_server_extended_att = { + 'attribute' : string + 'operator' : string with match(SELF, '^(\+\=|\=|\-\=)$') + 'value' : string +}; + +# from man pbs_server_attributes (NOT the read only ones!) +type pbs_server_attlist = { + 'accounting_keep_days'? long(0..) + + 'acl_group_sloppy' ? boolean + 'acl_host_enable' ? boolean = false + 'acl_hosts' ? string + 'acl_logic_or' ? boolean = false + 'acl_user_enable' ? boolean = false + 'acl_roots' ? string + + 'allow_node_submit' ? boolean = false + 'allow_proxy_user' ? boolean = false + + 'auto_node_np' ? boolean + + 'clone_batch_delay' ? long(0..) + 'clone_batch_size' ? long(1..) + + 'credential_lifetime' ? long(1..) + + 'comment' ? string + + 'default_node' ? string + 'default_queue' ? string + + 'down_on_error' ? boolean + + 'disable_server_id_check' ? boolean + + 'extra_resc' ? string + + 'job_force_cancel_time' ? long(0..) + + 'job_nanny' ? boolean = false + + 'job_start_timeout' ? long(1..) + + 'job_stat_rate' ? long(1..) = 150 + + 'keep_completed' ? long(0..) + + 'kill_delay' ? long(0..) + + 'lock_file' ? string + 'lock_file_check_time' ? long(0..) + 'lock_file_update_time' ? long(0..) + + 'log_events' ? long(0..) + 'log_file_max_size' ? long(0..) = 0 + 'log_file_roll_depth' ? long(1..) = 10 + 'log_keep_days' ? long(0..) + 'log_level' ? long(0..) = 0 + + 'mail_body_fmt' ? string + 'mail_domain' ? string + 'mail_from' ? string + 'mail_subject_fmt' ? string + 'mail_uid' ? long(0..) + + 'managers' ? string + + 'max_job_array_size' ? long(0..) + 'max_slot_limit' ? long(0..) + 'max_running' ? long(0..) + 'max_user_run' ? long(0..) + 'max_user_queuable' ? long(1..) + 'max_group_run' ? long(0..) + + 'mom_job_sync' ? boolean = true + + 'next_job_number' ? long(0..) + + 'no_mail_force' ? boolean + + 'node_check_rate' ? long(10..) = 600 + 'node_pack' ? boolean + 'node_ping_rate' ? long(10..) = 300 + 'node_suffix' ? string + + 'np_default' ? long(0..) + + 'operators' ? string + + 'owner_purge' ? boolean + + 'poll_jobs' ? boolean = true + + 'query_other_jobs' ? boolean = false + + # following does not exist in 3.0.X (should all be like resources_available.) + 'resources_available' ? string + 'resources_available.nodect' ? long(1..) = 2048 + + # following 2 are actually a list of + 'resources_default' ? string + 'resources_default.nodect' ? long(1..) + 'resources_default.nodes' ? long(1..) + 'resources_max' ? string + + 'sched_version' ? string + 'scheduler_iteration' ? long(1..) + 'scheduling' ? boolean + + 'server_name' ? type_hostname + + 'submit_hosts' ? string + + 'tcp_timeout' ? long(1..) = 8 + + 'checkpoint_dir' ? string + + 'moab_array_compatible' ? boolean + + 'authorized_users' ? string + + 'record_job_info' ? boolean + 'record_job_script' ? boolean + + 'use_jobs_subdirs' ? boolean + + 'thread_idle_seconds' ? long(-1..) + 'max_threads' ? long(0..) + 'min_threads' ? long(0..) + + 'legacy_vmem' ? boolean +}; + +type pbs_server = { + 'manualconfig' : boolean + 'attlist' ? pbs_server_attlist + 'extended_att' ? pbs_server_extended_att[0..] +}; + +type pbs_queue_attlist = { + 'acl_group_enable' ? boolean + 'acl_group_sloppy' ? boolean + 'acl_groups' ? string + 'acl_host_enable' ? boolean + 'acl_hosts' ? string + 'acl_logic_or' ? boolean + 'acl_user_enable' ? boolean + 'acl_users' ? string + + 'alter_router' ? boolean + + 'checkpoint_defaults' ? string + 'checkpoint_min' ? long(0..) + + ## comma-separated list + 'disallowed' ? string + + 'enabled' ? boolean + + 'from_route_only' ? boolean + + 'is_transit' ? boolean + + 'keep_completed' ? long(0..) + + 'kill_delay' ? long(0..) + + 'max_queuable' ? long(1..) + 'max_group_run' ? long(0..) + 'max_user_run' ? long(0..) + 'max_user_queuable' ? long(1..) + 'max_running' ? long(1..) + + 'Priority' ? long(0..) + + 'queue_type' ? string + + 'resources_available.nodect' ? long(1..) = 2048 + 'resources_default.mem' ? string + 'resources_default.ncpus' ? long(0..) + 'resources_default.neednodes' ? string + 'resources_default.nice' ? long(0..) + 'resources_default.nodect' ? long(1..) + 'resources_default.nodes' ? long(1..) + 'resources_default.pmem' ? string + 'resources_default.procct' ? long(1..) + 'resources_default.pvmem' ? string + 'resources_default.vmem' ? string + 'resources_default.walltime' ? string + 'resources_max.cput' ? string + 'resources_max.file' ? string + 'resources_max.mem' ? string + 'resources_max.nice' ? long(1..) + 'resources_max.nodect' ? long(1..) + 'resources_max.nodes' ? long(1..) + 'resources_max.pcput' ? string + 'resources_max.pmem' ? string + 'resources_max.procct' ? long(1..) + 'resources_max.pvmem' ? string + 'resources_max.vmem' ? string + 'resources_max.walltime' ? string + 'resources_min.mem' ? string + 'resources_min.nice' ? long(1..) + 'resources_min.pmem' ? string + 'resources_min.pvmem' ? string + 'resources_min.vmem' ? string + 'resources_min.walltime' ? string + + 'started' ? boolean + + 'route_destinations' ? string + 'route_held_jobs' ? boolean + 'route_lifetime' ? long(0..) + 'route_retry_time' ? long(0..) + 'route_waiting_jobs' ? boolean +}; + +type pbs_queue = { + 'manualconfig' : boolean + 'attlist' ? pbs_queue_attlist +}; + +type pbs_queuelist = { + 'manualconfig' : boolean + 'queuelist' ? pbs_queue{} +}; + +type pbs_node_attlist = { + 'np' ? long(1..) + 'properties' ? string + 'state' ? string with match(SELF, 'free|down|offline') + 'ntype' ? string +}; + +type pbs_node = { + 'manualconfig' : boolean + 'attlist' ? pbs_node_attlist +}; + +type pbs_nodelist = { + 'manualconfig' : boolean + 'nodelist' ? pbs_node{} +}; + +type pbsserver_component = { + include structure_component + 'pbsroot' ? string + 'binpath' ? string + 'submitfilter' ? string + 'env' ? string{} + 'server' ? pbs_server + 'queue' ? pbs_queuelist + 'node' ? pbs_nodelist + 'ignoretorquecfg' ? boolean = false +}; diff --git a/components/vomsclient/config-common.pan b/components/vomsclient/config-common.pan new file mode 100644 index 000000000..5fc8f8b11 --- /dev/null +++ b/components/vomsclient/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# vomsclient, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/vomsclient/config-common; + +include 'components/vomsclient/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/vomsclient'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/vomsclient/config-rpm.pan b/components/vomsclient/config-rpm.pan new file mode 100644 index 000000000..70eec9923 --- /dev/null +++ b/components/vomsclient/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# vomsclient, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/vomsclient/config-rpm; + +include 'components/vomsclient/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/vomsclient'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-vomsclient', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/vomsclient/config.pan b/components/vomsclient/config.pan new file mode 100644 index 000000000..f711e6810 --- /dev/null +++ b/components/vomsclient/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# vomsclient, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/vomsclient/config; + +include 'components/vomsclient/config-rpm'; diff --git a/components/vomsclient/schema.pan b/components/vomsclient/schema.pan new file mode 100644 index 000000000..a3f11812f --- /dev/null +++ b/components/vomsclient/schema.pan @@ -0,0 +1,64 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# vomsclient, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/vomsclient/schema; + +include 'quattor/schema'; +include 'pan/types'; + +type structure_vomsclient_voms_info = { + @{The complete name of the VO, if the 'vos' key is an alias name. This + property is deprecated : it is recommended to use the complete name of the + VO as 'vos' key.} + 'name' ? string + @{The complete hostname of the VOMS server.} + 'host' : type_fqdn + @{The port number of the VOMS server.} + 'port' : type_port + @{The certificate for the server.} + 'cert' : string + @{The expiring certificate for the server. This allows smooth transition + between 2 certificates.} + 'oldcert' ? string + @{DN of VOMS server certificate.} + 'DN' ? string + @{DN of VOMS server certificate issuer.} + 'issuer' ? string +}; + +type vomsclient_component = { + include structure_component + @{Use LSC format instead of certificate to configure vomsCertsDir.} + 'lscfile' ? boolean + @{The directory to write the VOMS server certificates into. If the + directory doesn't exist, it is created. It will remove all managed + files and create new ones each time the configuration is done.} + 'vomsCertsDir' ? string + @{The directory to write the VOMS server parameters into. If the + directory doesn't exist, it is created. It will remove all managed + file and create new ones each time the configuration is done.} + 'vomsServersDir' ? string + @{This is a named list of VOMS VO information. Each key should be the + VO name. The value is a list of dict: each dict describes one VOMS server + supporting the VO.} + 'vos' ? structure_vomsclient_voms_info[]{} +}; + +bind '/software/components/vomsclient' = vomsclient_component; diff --git a/components/wlconfig/config-common.pan b/components/wlconfig/config-common.pan new file mode 100644 index 000000000..c9f0563c8 --- /dev/null +++ b/components/wlconfig/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# wlconfig, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/wlconfig/config-common; + +include 'components/wlconfig/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/wlconfig'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/wlconfig/config-rpm.pan b/components/wlconfig/config-rpm.pan new file mode 100644 index 000000000..65318c832 --- /dev/null +++ b/components/wlconfig/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# wlconfig, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/wlconfig/config-rpm; + +include 'components/wlconfig/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/wlconfig'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-wlconfig', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/wlconfig/config.pan b/components/wlconfig/config.pan new file mode 100644 index 000000000..b049e6167 --- /dev/null +++ b/components/wlconfig/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# wlconfig, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/wlconfig/config; + +include 'components/wlconfig/config-rpm'; diff --git a/components/wlconfig/schema.pan b/components/wlconfig/schema.pan new file mode 100644 index 000000000..bd656aa7b --- /dev/null +++ b/components/wlconfig/schema.pan @@ -0,0 +1,103 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Charles Loomis +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# wlconfig, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/wlconfig/schema; + +include 'quattor/schema'; + +type structure_wl_log = { + 'file' : string + 'level' : long(1..) +}; + +type structure_wl_jobcontroller = { + 'condorSubmit' : string = '${CONDORG_INSTALL_PATH}/bin/condor_submit' + 'condorRemove' : string = '${CONDORG_INSTALL_PATH}/bin/condor_rm' + 'condorQuery' : string = '${CONDORG_INSTALL_PATH}/bin/condor_q' + 'condorSubmitDAG' : string = '${CONDORG_INSTALL_PATH}/bin/condor_submit_dag' + 'condorRelease' : string = '${CONDORG_INSTALL_PATH}/bin/condor_release' + 'container' : long = 1000 + 'submitFile' : string = '${EDG_WL_TMP}/jobcontrol/submit' + 'outputFile' : string = '${EDG_WL_TMP}/jobcontrol/cond' + 'queueFile' : string = '${EDG_WL_TMP}/jobcontrol/queue.fl' + 'lockFile' : string = '${EDG_WL_TMP}/jobcontrol/lock' + 'log' : structure_wl_log = dict('file', '${EDG_WL_TMP}/jobcontrol/log/events.log', 'level', 5) +}; + +type structure_wl_logmonitor = { + 'jobsPerCondorLog' : long(1..) = 1000 + 'mainLoopDuration' : long(1..) = 10 + 'condorLogDir' : string = '${EDG_WL_TMP}/logmonitor/CondorG.log' + 'condorRecycleDir' : string = '${EDG_WL_TMP}/logmonitor/CondorG.log/recycle' + 'monitorInternalDir' : string = '${EDG_WL_TMP}/logmonitor/internal' + 'idRepositoryName' : string = 'irepository.dat' + 'abortedJobsTimeout' : long(1..) = 600 + 'externalLogFile' : string = '${EDG_WL_TMP}/logmonitor/log/external.log' + 'lockFile' : string = '${EDG_WL_TMP}/logmonitor/lock' + 'log' : structure_wl_log = dict('file', '${EDG_WL_TMP}/logmonitor/log/events.log', 'level', 5) +}; + +type structure_wl_networkserver = { + 'iiPort' : type_port = 2135 + 'iiTimeout' : long(1..) = 60 + 'iiDN' : string = 'mds-vo-name=local, o=grid' + 'iiHost' : type_hostname + 'grisPort' : type_port = 2135 + 'grisTimeout' : long(1..) = 20 + 'grisDN' : string = 'mds-vo-name=local, o=grid' + 'backLogSize' : long(0..) = 16 + 'listeningPort' : type_port = 7772 + 'masterThreads' : long(0..) = 8 + 'dispatcherThreads' : long(0..) = 8 + 'sandboxStagingPath' : string = '${EDG_WL_TMP}/SandboxDir' + 'quotaManagement' : boolean = false + 'quotaSandboxSize' : long(0..) = 10000000 + 'quotaAdjustment' : boolean = false + 'quotaAdjustmentAmount' : long(0..) = 2000 + 'reservedDiskPercentage' : double = 2.0 with (SELF >= 0.0 && SELF <= 100.0) + 'log' : structure_wl_log = dict('file', '${EDG_WL_TMP}/networkserver/log/events.log', 'level', 5) + 'DLICatalog' ? string[] + 'RLSCatalog' ? string[] +}; + +type structure_wl_workloadmanager = { + 'pipeDepth' : long(0..) = 1 + 'workerThreads' : long(0..) = 1 + 'dispatcherType' : string = 'filelist' + 'inputFile' : string = '${EDG_WL_TMP}/workload_manager/input.fl' + 'maxRetryCount' : long(1..) = 10 + 'log' : structure_wl_log = dict('file', '${EDG_WL_TMP}/workload_manager/log/events.log', 'level', 5) +}; + + +type wlconfig_component = { + include structure_component + 'configFile' : string = 'edg_wl.conf' + 'user' : string = '${EDG_WL_USER}' + 'hostProxyFile' : string = '${EDG_WL_TMP}/networkserver/ns.proxy' + 'grisCache' : long(1..) = 1 + 'useCachedResourceInfo' : boolean = true + 'jobController' : structure_wl_jobcontroller = dict() + 'logMonitor' : structure_wl_logmonitor = dict() + 'networkServer' : structure_wl_networkserver = dict() + 'workloadManager' : structure_wl_workloadmanager = dict() +}; + +bind '/software/components/wlconfig' = wlconfig_component; diff --git a/components/wmsclient/config-common.pan b/components/wmsclient/config-common.pan new file mode 100644 index 000000000..42e37a496 --- /dev/null +++ b/components/wmsclient/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# wmsclient, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/wmsclient/config-common; + +include 'components/wmsclient/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/wmsclient'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/wmsclient/config-rpm.pan b/components/wmsclient/config-rpm.pan new file mode 100644 index 000000000..0781eb14a --- /dev/null +++ b/components/wmsclient/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# wmsclient, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/wmsclient/config-rpm; + +include 'components/wmsclient/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/wmsclient'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-wmsclient', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/wmsclient/config.pan b/components/wmsclient/config.pan new file mode 100644 index 000000000..16969373e --- /dev/null +++ b/components/wmsclient/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# wmsclient, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/wmsclient/config; + +include 'components/wmsclient/config-rpm'; diff --git a/components/wmsclient/schema.pan b/components/wmsclient/schema.pan new file mode 100644 index 000000000..e1cf3a5c9 --- /dev/null +++ b/components/wmsclient/schema.pan @@ -0,0 +1,64 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# wmsclient, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/wmsclient/schema; + +include 'quattor/schema'; + +type wmsclient_component_mw_ce_attrs = { + 'rank' ? string + 'rankMPI' ? string + 'requirements' ? string +}; + +type wmsclient_component_mw_def_attrs = { + 'defaultSchema' ? string = 'Glue' + 'CEAttrs' ? wmsclient_component_mw_ce_attrs{} + 'defaultVO' ? string = 'unspecified' + 'errorStorage' ? string = '/tmp' + 'loggingDestination' ? string + 'listenerPort' ? type_port = 44000 + 'listenerStorage' ? string = '/tmp' + 'loggingLevel' ? long = 0 + 'loggingSyncTimeout' ? long = 30 + 'loggingTimeout' ? long = 30 + 'NSLoggerLevel' ? long = 0 + 'outputStorage' ? string = '${HOME}/JobOutput' + 'retryCount' ? long = 3 + 'statusLevel' ? long = 0 +}; + +type wmsclient_component_mw_entry = { + 'active' : boolean = true + 'configDir' ? string + 'classAdsHelper' ? string + 'defaultAttrs' ? wmsclient_component_mw_def_attrs +}; + +type wmsclient_component = { + include structure_component + 'edg' ? wmsclient_component_mw_entry + 'glite' ? wmsclient_component_mw_entry + 'wmproxy' ? wmsclient_component_mw_entry +}; + +bind '/software/components/wmsclient' = wmsclient_component; + + diff --git a/components/wmslb/config-common.pan b/components/wmslb/config-common.pan new file mode 100644 index 000000000..132e837b7 --- /dev/null +++ b/components/wmslb/config-common.pan @@ -0,0 +1,31 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Quattor Project +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jerome Pansanel +# + +# # +# wmslb, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/wmslb/config-common; + +include 'components/wmslb/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/wmslb'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; + +'active' ?= true; +'dispatch' ?= true; diff --git a/components/wmslb/config-rpm.pan b/components/wmslb/config-rpm.pan new file mode 100644 index 000000000..14332abb0 --- /dev/null +++ b/components/wmslb/config-rpm.pan @@ -0,0 +1,30 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Quattor Project +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jerome Pansanel +# + +# # +# wmslb, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/wmslb/config-rpm; + +include 'components/wmslb/config-common'; + +# Set prefix to root of component configuration. +prefix '/software/components/wmslb'; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-wmslb', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/wmslb/config.pan b/components/wmslb/config.pan new file mode 100644 index 000000000..63914223f --- /dev/null +++ b/components/wmslb/config.pan @@ -0,0 +1,22 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Quattor Project +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jerome Pansanel +# + +# # +# wmslb, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/wmslb/config; + +include 'components/wmslb/config-rpm'; diff --git a/components/wmslb/schema.pan b/components/wmslb/schema.pan new file mode 100644 index 000000000..4e01f74b5 --- /dev/null +++ b/components/wmslb/schema.pan @@ -0,0 +1,397 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Quattor Project +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jerome Pansanel +# + +# # +# wmslb, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/wmslb/schema; + +include 'quattor/schema'; + +include 'pan/types'; + +type wmslb_component_env = { + 'GLITE_LOCATION' ? string + 'GLITE_LOCATION_LOG' ? string + 'GLITE_LOCATION_TMP' ? string + 'GLITE_LOCATION_VAR' ? string + 'GLITE_LB_TYPE' ? string + 'GLITE_WMS_LOCATION_VAR' ? string + 'GLITE_WMS_TMP' ? string + 'GLITE_WMS_USER' ? string + 'GLITE_WMS_GROUP' ? string + 'GLITE_HOST_CERT' ? string + 'GLITE_HOST_KEY' ? string + 'GLITE_WMS_QUERY_TIMEOUT' : long = 300 + 'GLITE_WMS_WMPROXY_MAX_SERVED_REQUESTS' : long = 50 + 'GLITE_PR_TIMEOUT' : long = 300 + 'GLITE_SD_PLUGIN' : string = 'bdii,rgma' + 'GLITE_HOST_KEY' ? string + 'GLITE_HOST_CERT' ? string + 'GLOBUS_LOCATION' ? string + 'CONDORG_INSTALL_PATH' ? string + 'CONDOR_CONFIG' ? string + 'GLITE_USER' ? string = 'glite' + 'X509_CERT_DIR' ? string = '/opt/grid-security/certificates' + 'X509_VOMS_DIR' ? string = '/opt/grid-security/vomses' + 'MYPROXY_TCP_PORT_RANGE' ? string + 'HOSTNAME' ? string + 'WMS_JOBWRAPPER_TEMPLATE' ? string + 'WMS_LOCATION_USR' ? string + 'WMS_LOCATION_BIN' ? string + 'WMS_LOCATION_ETC' ? string + 'WMS_LOCATION_LIBEXEC' ? string + 'WMS_LOCATION_LOG' ? string + 'WMS_LOCATION_SBIN' ? string + 'WMS_LOCATION_TMP' ? string + 'WMS_LOCATION_VAR' ? string + 'GLITE_WMS_CONFIG_DIR' ? string + 'LCG_GFAL_INFOSYS' ? string + 'LD_LIBRARY_PATH' ? string +}; + +type wmslb_component_service_special_dirs = { + 'perms' : string +}; + +# Used to describe optional service specific configruation files +# built from a template. +type wmslb_component_service_conf_file = { + 'template' : string +}; + +type wmslb_component_service_common = { + 'name' : string + 'workDirs' : string[] = list() + 'specialDirs' ? wmslb_component_service_special_dirs{} + 'confFiles' ? wmslb_component_service_conf_file{} +}; + +type wmslb_component_service_ice_opts = { + 'log_on_file' ? boolean + 'log_on_console' ? boolean + 'listener_port' ? long + 'Input' ? string + 'InputType' ? string + 'logfile' ? string + 'start_poller' ? boolean + 'purge_jobs' ? boolean + 'start_listener' ? boolean + 'start_subscription_updater' ? boolean + 'subscription_update_threshold_time' ? long + 'subscription_duration' ? long + 'poller_delay' ? long + 'poller_status_threshold_time' ? long + 'start_job_killer' ? boolean + 'job_cancellation_threshold_time' ? long + 'start_proxy_renewer' ? boolean + 'start_lease_updater' ? boolean + 'ice_host_cert' ? string + 'ice_host_key' ? string + 'cream_url_prefix' ? string + 'cream_url_postfix' ? string + 'creamdelegation_url_prefix' ? string + 'creamdelegation_url_postfix' ? string + 'cemon_url_prefix' ? string + 'cemon_url_postfix' ? string + 'ice_topic' ? string + 'lease_delta_time' ? long + 'notification_frequency' ? long + 'ice_log_level' ? long + 'listener_enable_authn' ? boolean + 'listener_enable_authz' ? boolean + 'max_logfile_size' ? long + 'max_logfile_rotations' ? long + 'max_ice_threads' ? long + 'persist_dir' ? string + 'soap_timeout' ? long + 'proxy_renewal_frequency' ? long + 'bulk_query_size' ? long + 'lease_update_frequency' ? long + 'max_ice_mem' ? long + 'ice_empty_threshold' ? long +}; + +type wmslb_component_service_ice = { + include wmslb_component_service_common + + 'options' : wmslb_component_service_ice_opts +}; + +type wmslb_component_service_jc_opts = { + 'CondorSubmit' ? string + 'CondorRemove' ? string + 'CondorQuery' ? string + 'CondorRelease' ? string + 'CondorDagman' ? string + + 'SubmitFileDir' ? string + 'OutputFileDir' ? string + 'Input' ? string + 'InputType' ? string + + 'MaximumTimeAllowedForCondorMatch' ? long + 'DagmanMaxPre' ? long + 'LockFile' ? string + 'LogFile' ? string + 'LogLevel' ? long(1..6) + + 'ContainerRefreshThreshold' ? long +}; + +type wmslb_component_service_jc = { + include wmslb_component_service_common + + 'options' : wmslb_component_service_jc_opts +}; + +type wmslb_component_service_lbproxy_opts = { +}; + +type wmslb_component_service_lbproxy = { + include wmslb_component_service_common + + 'options' ? wmslb_component_service_lbproxy_opts +}; + +type wmslb_component_service_lm_opts = { + 'JobsPerCondorLog' ? string + + 'LockFile' ? string + 'LogFile' ? string + 'LogLevel' ? long(1..6) + 'ExternalLogFile' ? string + + 'MainLoopDuration' ? long + + 'CondorLogDir' ? string + 'CondorLogRecycleDir' ? string + 'MonitorInternalDir' ? string + 'IdRepositoryName' ? string + + 'AbortedJobsTimeout' ? long + 'RemoveJobFiles' ? boolean +}; + +type wmslb_component_service_lm = { + include wmslb_component_service_common + + 'options' : wmslb_component_service_lm_opts +}; + +type wmslb_component_service_logger_opts = { +}; + +type wmslb_component_service_logger = { + include wmslb_component_service_common + + 'options' ? wmslb_component_service_logger_opts +}; + +type wmslb_component_service_ns_opts = { + 'II_Port' ? string + 'Gris_Port' ? long + 'II_Timeout' ? long + 'Gris_Timeout' ? long + 'II_DN' ? string + 'Gris_DN' ? string + 'II_Contact' ? string + + 'BacklogSize' ? long + 'ListeningPort' ? long + 'MasterThreads' ? long + 'DispatcherThreads' ? long + 'SandboxStagingPath' ? string + + 'LogFile' ? string + 'LogLevel' ? long(1..6) + + 'EnableQuotaManagement' ? boolean + 'MaxInputSandboxSize' ? long + 'EnableDynamicQuotaAdjustment' ? boolean + 'QuotaAdjustmentAmount' ? long + 'QuotaInsensibleDiskPortion' ? long +}; + +type wmslb_component_service_ns = { + include wmslb_component_service_common + + 'options' : wmslb_component_service_ns_opts +}; + +type wmslb_component_service_wm_opts = { + 'CeMonitorAsyncPort' ? long + 'CeMonitorServices' ? string{} + 'DispatcherType' ? string + 'EnableBulkMM' ? boolean + 'EnableIsmIiGlue13Purchasing' ? boolean + 'EnableIsmIiGlue20Purchasing' ? boolean + 'EnableRecovery' ? boolean + 'ExpiryPeriod' ? long + 'Input' ? string + 'IsmBlackList' ? string + 'IsmDump' ? string + 'IsmIiG2LDAPCEFilterExt' ? string + 'IsmIiG2LDAPSEFilterExt' ? string + 'IsmIiLDAPCEFilterExt' ? string + 'IsmIiPurchasingRate' ? long + 'IsmThreads' ? boolean + 'IsmUpdateRate' ? long + 'JobWrapperTemplateDir' ? string + 'LogFile' ? string + 'LogLevel' ? long(1..6) + 'MaxReplansCount' ? long + 'MatchRetryPeriod' ? long + 'MaxOutputSandboxSize' ? long + 'MaxRetryCount' ? long + 'PropagateToLRMS' ? string + 'QueueSize' ? long + 'ReplanGracePeriod' ? long + 'RuntimeMalloc' ? string + 'SbRetryDifferentProtocols' ? boolean + 'WmsRequirements' ? string + 'WorkerThreads' ? long +}; + +type wmslb_component_service_wm_jw = { + 'file' : string + 'contents' : string +}; + +type wmslb_component_service_wm = { + include wmslb_component_service_common + + 'jobWrapper' ? wmslb_component_service_wm_jw + 'options' : wmslb_component_service_wm_opts +}; + +type wmslb_component_service_wmproxy_loadmonitor_script = { + 'name' : string = '/usr/sbin/glite_wms_wmproxy_load_monitor' +}; + +type wmslb_component_service_wmproxy_loadmonitor_opts = { + 'ThresholdCPULoad1' : long + 'ThresholdCPULoad5' : long + 'ThresholdCPULoad15' : long + 'ThresholdMemUsage' : long + 'ThresholdSwapUsage' : long + 'ThresholdFDNum' : long + 'ThresholdDiskUsage' : long + 'ThresholdFLSize' : long + 'ThresholdFLNum' : long + 'ThresholdJDSize' : long + 'ThresholdJDNum' : long + 'ThresholdFTPConn' : long +}; + +#type component_wmslb_service_wmproxy_operationsloadscripts_opts = { +# 'load1' ? long +# 'load5' ? long +# 'load15' ? long +# 'memusage' ? long +# 'diskusage' ? long +# 'fdnum' ? long +#}; + +type wmslb_component_service_wmproxy_opts = { + 'ApacheLogLevel' ? string with match(SELF, 'emerg|alert|crit|error|warn|notice|info|debug') + 'ArgusAuthz' ? boolean + 'ArgusPepEndpoints' ? string{} + 'AsyncJobStart' ? boolean +# 'DefaultProtocol' ? string + 'EnableServiceDiscovery' ? boolean + 'GridFTPPort' ? long +# 'HTTPSPort' ? long + 'LBLocalLogger' ? string + 'LBServer' ? string + 'LBServiceDiscoveryType' ? string + 'ListMatchRootPath' ? string +# 'ListMatchTimeout' ? long + 'LoadMonitor' : wmslb_component_service_wmproxy_loadmonitor_opts + 'LogFile' ? string + 'LogLevel' ? long(1..6) +# 'LBProxy' ? boolean +# 'MaxInputSandboxSize' ? long + 'MaxServedRequests' ? long + 'MinPerusalTimeInterval' ? long +# 'OperationLoadScripts' ? wmslb_component_service_wmproxy_operationsloadscripts_opts + 'SandboxStagingPath' ? string +# 'SDJRequirements' ? string + 'ServiceDiscoveryInfoValidity' ? long + 'WeightsCacheValidity' ? long +}; + +type wmslb_component_service_wmproxy = { + include wmslb_component_service_common + + 'LoadMonitorScript' : wmslb_component_service_wmproxy_loadmonitor_script + 'options' : wmslb_component_service_wmproxy_opts +}; + +type wmslb_component_service_wmsclient_opts = { + 'ErrorStorage' ? string + 'OutputStorage' ? string + 'ListenerStorage' ? string + 'virtualorganisation' ? string + 'rank' ? string + 'requirements' ? string + 'RetryCount' ? long + 'ShallowRetryCount' ? long + 'WMProxyEndPoints' ? string + 'LBAddress' ? string + 'MyProxyServer' ? string + 'JobProvenance' ? string + 'PerusalFileEnable' ? boolean + 'AllowZippedISB' ? boolean + 'LBServiceDiscoveryType' ? string + 'WMProxyServiceDiscoveryType' ? string +}; + +type wmslb_component_service_wmsclient = { + include wmslb_component_service_common + + 'options' ? wmslb_component_service_wmsclient_opts +}; + +type wmslb_component_common_opts = { + 'LBProxy' ? boolean +}; + +type wmslb_component_services = { + 'ice' ? wmslb_component_service_ice + 'jc' ? wmslb_component_service_jc + 'lbproxy' ? wmslb_component_service_lbproxy + 'logger' ? wmslb_component_service_logger + 'lm' ? wmslb_component_service_lm + 'ns' ? wmslb_component_service_ns + 'wm' ? wmslb_component_service_wm + 'wmproxy' ? wmslb_component_service_wmproxy + 'wmsclient' ? wmslb_component_service_wmsclient +}; + +type wmslb_component = { + include structure_component + + 'confFile' : string = '/opt/glite/etc/glite_wms.conf' + 'env' ? wmslb_component_env + 'envScript' ? string = '/etc/profile.d/glite-wms.sh' + 'services' ? wmslb_component_services + 'common' ? wmslb_component_common_opts + 'workDirDefaultParent' ? string +}; + +bind '/software/components/wmslb' = wmslb_component; diff --git a/components/xrootd/config.pan b/components/xrootd/config.pan new file mode 100644 index 000000000..9521b6207 --- /dev/null +++ b/components/xrootd/config.pan @@ -0,0 +1,35 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# xrootd, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# + +unique template components/xrootd/config; + +include 'components/xrootd/schema'; + +# Set prefix to root of component configuration. +prefix '/software/components/xrootd'; + +'version' = '24.10.0'; +#'package' = 'NCM::Component'; +'active' ?= true; +'dispatch' ?= true; + +# Install Quattor configuration module via RPM package. +'/software/packages' = pkg_repl('ncm-xrootd', '24.10.0-rc3_1', 'noarch'); +'dependencies/pre' ?= list('spma'); + diff --git a/components/xrootd/schema.pan b/components/xrootd/schema.pan new file mode 100644 index 000000000..a451c20bc --- /dev/null +++ b/components/xrootd/schema.pan @@ -0,0 +1,276 @@ +# # +# Software subject to following license(s): +# Apache 2 License (http://www.opensource.org/licenses/apache2.0) +# Copyright (c) Responsible Organization +# + +# # +# Current developer(s): +# Michel Jouvin +# + +# # +# Author(s): Jane SMITH, Joe DOE +# + +# # +# xrootd, 24.10.0-rc3, rc3_1, Wed Nov 06 2024 +# +# + +declaration template components/xrootd/schema; + +include 'quattor/schema'; + +# Validation of host configiguration (hosts resource) +function xrootd_component_node_config_valid = { + if ( !is_defined(SELF) ) { + error('Internal error: Xroot host configuration undefined in validation function'); + return(false); + }; + valid_roles = 'disk|redir|fedredir'; + foreach (host;params;SELF) { + foreach (k;v;params) { + if ( k == 'roles' ) { + foreach (i;role;v) { + if ( !match(role, '^(' + valid_roles + ')$') ) { + error('Invalid role (' + role + ') specified for host ' + host + ' (valid roles=' + valid_roles + ')'); + return(false); + }; + }; + }; + }; + }; + true; +}; + +# Validation of options +function xrootd_component_options_valid = { + # If token-based authentication is enabled and DPM/Xrootd plugin is + # used, must check that Authz librarie is specified and that + # DPM/Xrootd options principal and authorizedPaths are also present. + if ( is_defined(SELF['tokenAuthz']) ) { + if ( !is_defined(SELF['authzLibraries']) || + !is_defined(SELF['dpm']['principal']) || + !is_defined(SELF['dpm']['authorizedPaths']) ) { + error( + "DPM/Xrootd plugin with token-based authz enabled requires 'authzLibraries',\n"+ + "'dpm/principal' and 'dpm/authorizedPaths'" + ); + return(false); + }; + }; + + # Check that federation information is present if a 'fedredir' instance has been + # configured. + if ( is_defined(SELF['xrootdInstances']) ) { + foreach (instance;params;SELF['xrootdInstances']) { + if ( params['type'] == 'fedredir' ) { + if ( !is_defined(SELF['cmsdInstances'][instance]) ) { + error("Missing cmsd instance matching xrootd 'fedredir' instance '" + instance + "'"); + false; + } else if ( !is_defined(params['federation']) ) { + error("'federation' parameter missing for xrootd instance '" + instance + "'"); + false; + } else if ( !is_defined(SELF['federations'][params['federation']]) ) { + error("No information provided for federation '" + params['federation'] + "'"); + false; + }; + } else if ( is_defined(params['federation']) ) { + error("'federation' parameter specified for xrootd instance '" + instance + "' (type '" + params['type'] + "')"); + false; + }; + }; + }; + if ( is_defined(SELF['cmsdInstances']) ) { + foreach (instance;params;SELF['cmsdInstances']) { + if ( !is_defined(SELF['xrootdInstances'][instance]) ) { + error("Missing xrootd instance matching cmsd instance '" + instance + "'"); + false; + } else if ( !is_defined(params['federation']) ) { + error("'federation' parameter missing for cmsd instance '" + instance + "'"); + false; + }; + }; + }; + + # For federations, check that either n2nLibrary and namePrefix are specified or that + # both are absent. + if ( is_defined(SELF['federations']) ) { + foreach(federation;params;SELF['federations']) { + if ( (is_defined(params['n2nLibrary']) && !is_defined(params['namePrefix'])) || + (!is_defined(params['n2nLibrary']) && is_defined(params['namePrefix'])) ) { + error("Federation '" + federation + "': n2nLibrary and namePrefix must be both specified or absent"); + false; + }; + }; + }; + + # securityProtocol: only gsi is supported + if ( is_defined(SELF['securityProtocol']) ) { + foreach (protocol;params;SELF['securityProtocol']) { + if ( !match(protocol, '^gsi$') ) { + error(format("Invalid security protocol '%s' defined", protocol)); + }; + }; + }; + + true; +}; + + +# Validation of xroot access rules +function xrootd_component_access_rules_valid = { + if ( !is_defined(SELF) ) { + error('Internal error: Xroot access rules undefined in validation function'); + return(false); + }; + + foreach (i;operation_type;list('authenticated', 'unauthenticated')) { + if ( is_defined(SELF[operation_type]) ) { + foreach (j;operation;SELF[operation_type]) { + if ( !match(operation, '^(delete|read|write|write-once)$') ) { + error('Invalid operation (' + operation + ') specified in xroot access rules for ' + operation_type + ' operations'); + return(false); + }; + }; + }; + }; + true; +}; + +# xrootd authentication plug-in allow to specify operations requiring +# authentication and those allowed without authentication (authentication will be +# used if present). + +type xrootd_component_exported_path = { + # Path is optional: if absent the VO name (dict key will be used). + # If the path is not starting with '/', will be appended to exportedPathRoot. + 'path' ? string +}; + +type xrootd_component_access_rules = { + 'path' : string + 'authenticated' : string[] + 'unauthenticated' : string[] + 'vo' : string = '*' + 'cert' : string = '*' +} with xrootd_component_access_rules_valid(SELF); + +type xrootd_component_token_authz_options = { + "authzConf" : string = '/etc/grid-security/xrootd/TkAuthz.Authorization' + "tokenPrivateKey" ? string = '/etc/grid-security/xrootd/pvkey.pem' + "tokenPublicKey" ? string = '/etc/grid-security/xrootd/pubkey.pem' + "accessRules" : xrootd_component_access_rules[] + "exportedVOs" : xrootd_component_exported_path{} + "exportedPathRoot" : string +}; + + +# DPM/Xrootd plugin configuration + +type xrootd_component_dpm_options = { + "alternateNames" ? string + "coreMaxSize" ? long + "dpmConnectionRetry" ? long + "dpmHost" : string + "dpnsConnectionRetry" ? long + "dpnsHost" : string + "defaultPrefix" ? string + "replacementPrefix" ? string{} + "mappedFQANs" ? string[] + "authorizedPaths" ? string[] + "principal" ? string +}; + +type xrootd_component_fed_options = { + 'federationCmsdManager' : string + 'federationXrdManager' : string + 'n2nLibrary' ? string + 'namePrefix' ? string + 'localPort' : long + 'localRedirector' : string + 'lfcHost' ? string + 'lfcConnectionRetry' ? long + 'lfcSecurityMechanism' ? string + 'validPathPrefix' ? string + 'redirectParams' ? string + 'localRedirectParams' ? string + "monitoringOptions" ? string + "reportingOptions" ? string + "siteName" ? string +}; + +function is_xrootd_logKeep = { + match(ARGV[0], '^([0-9]+[k|m|g]?|fifo|hup|rtmin(\+[12])?|ttou|winch|xfsz)$'); +}; + +type xrootd_logKeep = string with is_xrootd_logKeep(SELF); + +type xrootd_component_instances = { + "configFile" : string + "federation" ? string + "logFile" : string + "logKeep" : xrootd_logKeep = '90' + "type" : string with match(SELF, '(disk|redir|fedredir)') +}; + +type xrootd_component_security_protocols = { + "authzfun" ? string + "authzfunparams" ? string + "authzto" ? long + "authzpxy" ? long + "ca" ? long + "cert" ? string + "certdir" ? string + "cipher" ? string + "crl" ? long + "crldir" ? string + "crlext" ? string + "crlrefresh" ? long + "digpxy" ? long + "exppxy" ? string + "gmapopt" ? long + "gmapto" ? long + "gmapfun" ? string + "gmapfunparams" ? string + "gridmap" ? string + "key" ? string + "md" ? string + "vomsat" ? long + "vomsfun" ? string + "vomsfunparams" ? string +}; + +type xrootd_component_global_options = { + "installDir" ? string + "configDir" : string = 'xrootd' + "authzLibraries" : string[] + "daemonUser" : string + "daemonGroup" : string + "restartServices" : boolean = true + "mallocArenaMax" ? long + "MonALISAHost" ? string + "monitoringOptions" ? string + "reportingOptions" ? string + "siteName" ? string + "cmsdInstances" ? xrootd_component_instances{} + "xrootdInstances" ? xrootd_component_instances{} + "federations" ? xrootd_component_fed_options{} + "tokenAuthz" ? xrootd_component_token_authz_options + "dpm" ? xrootd_component_dpm_options + "securityProtocol" ? xrootd_component_security_protocols{} +} with xrootd_component_options_valid(SELF); + +type xrootd_component_node_config = { + "roles" : string[] +}; + +type xrootd_component = { + include structure_component + + "hosts" : xrootd_component_node_config{} with xrootd_component_node_config_valid(SELF) + "options" : xrootd_component_global_options +}; + +bind "/software/components/xrootd" = xrootd_component;