diff --git a/bin/commands/.errors b/bin/commands/.errors
index 89b56b008f..b41af191c9 100644
--- a/bin/commands/.errors
+++ b/bin/commands/.errors
@@ -32,4 +32,5 @@ ZWEL0200E||Failed to copy USS file %s to MVS data set %s.
ZWEL0201E||File %s does not exist.
ZWEL0202E||Unable to find samplib key for %s.
ZWEL0203E||Env value in key-value pair %s has not been defined.
-ZWEL0316E||Command requires zowe.useConfigmgr=true to use.
\ No newline at end of file
+ZWEL0316E||Command requires zowe.useConfigmgr=true to use.
+ZWEL0319E||NodeJS required but not found. Errors such as ZWEL0157E may occur as a result. The value 'node.home' in the Zowe YAML is not correct.
diff --git a/bin/commands/components/install/extract/.errors b/bin/commands/components/install/extract/.errors
index 6d8180c649..cad360418d 100644
--- a/bin/commands/components/install/extract/.errors
+++ b/bin/commands/components/install/extract/.errors
@@ -4,4 +4,5 @@ ZWEL0154E|154|Temporary directory is empty.
ZWEL0155E|155|Component %s already exists in %s. If you meant to upgrade this component, run the command 'zwe components upgrade' instead.
ZWEL0167E|167|Cannot find component name from %s package manifest.
ZWEL0204E|204|Symlink creation failure, error=%s
-ZWEL0313E|313|Cannot file component file %s.
+ZWEL0313E|313|Cannot find component file %s.
+ZWEL0318E|318|File extension invalid. Supported file extensions: .pax, .tar, .zip
diff --git a/bin/commands/components/install/extract/index.ts b/bin/commands/components/install/extract/index.ts
index 9a7685904d..5da6d0b660 100644
--- a/bin/commands/components/install/extract/index.ts
+++ b/bin/commands/components/install/extract/index.ts
@@ -98,6 +98,8 @@ export function execute(componentFile: string, autoEncoding?: string, upgrade?:
result = shell.execSync('sh', '-c', `cd ${tmpDir} && jar xf ${componentFile}`);
} else if (componentFile.endsWith('.tar')) {
result = shell.execSync('sh', '-c', `_CEE_RUNOPTS="FILETAG() POSIX(ON)" cd ${tmpDir} && pax -x tar -rf "${componentFile}"`);
+ } else {
+ common.printErrorAndExit(`Error ZWEL0318E File extension invalid. Supported file extensions: .pax, .tar, .zip`, undefined, 318);
}
if (result.rc) {
common.printError(`Extract completed with rc=${result.rc}`);
@@ -106,7 +108,7 @@ export function execute(componentFile: string, autoEncoding?: string, upgrade?:
result = shell.execOutSync('sh', '-c', `cd ${tmpDir} && ls -la 2>&1`);
common.printTrace(stringlib.paddingLeft(result.out, " "));
} else {
- common.printErrorAndExit(`Error ZWEL0313E: Cannot file component file ${componentFile}.`, undefined, 313);
+ common.printErrorAndExit(`Error ZWEL0313E: Cannot find component file ${componentFile}.`, undefined, 313);
}
// automatically tag files
diff --git a/bin/commands/internal/start/prepare/index.sh b/bin/commands/internal/start/prepare/index.sh
index 85ca4ad100..464ae53205 100644
--- a/bin/commands/internal/start/prepare/index.sh
+++ b/bin/commands/internal/start/prepare/index.sh
@@ -142,8 +142,11 @@ global_validate() {
if [[ ${ZWE_ENABLED_COMPONENTS} == *"discovery"* || ${ZWE_ENABLED_COMPONENTS} == *"files-api"* || ${ZWE_ENABLED_COMPONENTS} == *"jobs-api"* ]]; then
validate_this "validate_zosmf_host_and_port \"${ZOSMF_HOST}\" \"${ZOSMF_PORT}\" 2>&1" "zwe-internal-start-prepare,global_validate:${LINENO}"
fi
- elif [ "${ZWE_components_gateway_apiml_security_auth_provider}" = "zosmf" ]; then
- validate_this "validate_zosmf_as_auth_provider \"${ZOSMF_HOST}\" \"${ZOSMF_PORT}\" \"${ZWE_components_gateway_apiml_security_auth_provider}\" 2>&1" "zwe-internal-start-prepare,global_validate:${LINENO}"
+ if [ "${ZWE_components_discovery_enabled}" = "false" -a "${ZWE_components_gateway_apiml_security_auth_provider}" = "zosmf" ]; then
+ let "ZWE_PRIVATE_ERRORS_FOUND=${ZWE_PRIVATE_OLD_ERRORS_FOUND}+1"
+ print_error "Using z/OSMF as 'components.gateway.apiml.security.auth.provider' is not possible: discovery is disabled."
+ print_formatted_info "ZWELS" "zwe-internal-start-prepare,global_validate:${LINENO}" "Zosmf validation failed"
+ fi
fi
check_runtime_validation_result "zwe-internal-start-prepare,global_validate:${LINENO}"
diff --git a/bin/commands/internal/start/prepare/index.ts b/bin/commands/internal/start/prepare/index.ts
index cf9463fbdc..30c67135f2 100644
--- a/bin/commands/internal/start/prepare/index.ts
+++ b/bin/commands/internal/start/prepare/index.ts
@@ -75,7 +75,7 @@ function prepareLogDirectory() {
if (logDir) {
os.mkdir(logDir, 0o750);
if (!fs.isDirectoryWritable(logDir)) {
- common.printFormattedError("ZWELS", "zwe-internal-start-prepare,prepare_log_directory", `ZWEL0141E: User $(get_user_id) does not have write permission on ${logDir}.`);
+ common.printFormattedError("ZWELS", "zwe-internal-start-prepare,prepare_log_directory", `ZWEL0141E: User ${user} does not have write permission on ${logDir}.`);
std.exit(141);
}
}
@@ -172,12 +172,11 @@ function globalValidate(enabledComponents:string[]): void {
privateErrors++;
common.printFormattedError('ZWELS', "zwe-internal-start-prepare,global_validate", "Zosmf validation failed");
}
- } else if (std.getenv('ZWE_components_gateway_apiml_security_auth_provider') == "zosmf") {
- let zosmfOk = zosmf.validateZosmfAsAuthProvider(zosmfHost, zosmfPort, 'zosmf');
- if (!zosmfOk) {
- privateErrors++;
- common.printFormattedError('ZWELS', "zwe-internal-start-prepare,global_validate", "Zosmf validation failed");
- }
+ }
+ if (!enabledComponents.includes('discovery') && std.getenv('ZWE_components_gateway_apiml_security_auth_provider') == "zosmf") {
+ privateErrors++;
+ common.printError("Using z/OSMF as 'components.gateway.apiml.security.auth.provider' is not possible: discovery is disabled.");
+ common.printFormattedError('ZWELS', "zwe-internal-start-prepare,global_validate", "Zosmf validation failed");
}
}
diff --git a/bin/libs/common.ts b/bin/libs/common.ts
index 7eabf33f5f..23bca323be 100644
--- a/bin/libs/common.ts
+++ b/bin/libs/common.ts
@@ -128,36 +128,21 @@ export function date(...args: string[]): string|undefined {
let logExists = false;
-let logFile:std.File|null = null;
function writeLog(message: string): boolean {
+ const filename = std.getenv('ZWE_PRIVATE_LOG_FILE');
+ if (!filename) {
+ return false;
+ }
+ logExists = fs.fileExists(filename);
if (!logExists) {
- const filename = std.getenv('ZWE_PRIVATE_LOG_FILE');
- if (filename) {
+ fs.createFile(filename, 0o640, message);
logExists = fs.fileExists(filename);
- if (!logExists) {
- fs.createFile(filename, 0o640, message);
- logExists = fs.fileExists(filename);
- }
- if (logExists) {
- let errObj = {errno:undefined};
- logFile = std.open(filename, 'w', errObj);
- if (errObj.errno) {
- printError(`Error opening file ${filename}, errno=${errObj.errno}`);
- logFile=null;
- logExists=false;
- return false;
- }
- }
- }
- }
- if (logFile===undefined || logFile===null) {
- return false;
} else {
- //TODO this does utf8. should we flip it to 1047 on zos?
- logFile.puts(message);
- return true;
+ xplatform.appendFileUTF8(filename, xplatform.AUTO_DETECT, message);
+ return true;
}
+ return logExists;
}
@@ -345,7 +330,7 @@ export function getZoweRuntimeManifest(): any|undefined {
if (!runtimeManifest) {
const manifestFileName = `${std.getenv('ZWE_zowe_runtimeDirectory')}/manifest.json`;
const result = xplatform.loadFileUTF8(manifestFileName,xplatform.AUTO_DETECT);
- if (result){
+ if (!result){
printError('Could not read runtime manifest in '+manifestFileName);
} else {
runtimeManifest=JSON.parse(result);
diff --git a/bin/libs/component.ts b/bin/libs/component.ts
index 457a12364c..39f2de2176 100644
--- a/bin/libs/component.ts
+++ b/bin/libs/component.ts
@@ -387,6 +387,32 @@ export function findAllLaunchComponents2(): string[] {
});
}
+function getBooleanEnv(variableName) {
+ const value = std.getenv(`${variableName}`);
+ if (value === "true") {
+ return true
+ }
+ if (value === "false") {
+ return false
+ }
+ return undefined
+}
+
+
+function isClientAttls() {
+ const clientGlobalAttls = getBooleanEnv('ZWE_zowe_network_client_tls_attls');
+ const serverGlobalAttls = getBooleanEnv('ZWE_zowe_network_server_tls_attls');
+ const clientLocalAttls = getBooleanEnv('ZWE_components_zaas_zowe_network_client_tls_attls');
+ const serverLocalAttls = getBooleanEnv('ZWE_components_zaas_zowe_network_server_tls_attls');
+ const clientAttls = clientGlobalAttls || clientLocalAttls;
+ if ((clientGlobalAttls !== false) && (clientLocalAttls !== false) && (!clientAttls)) {
+ // If client attls not explicitly false OR truthy, have client follow server attls variable. it simplifies common case in which users want both.
+ return serverGlobalAttls || serverLocalAttls;
+ } else {
+ return clientAttls;
+ }
+}
+
export function processComponentApimlStaticDefinitions(componentDir: string): boolean {
const STATIC_DEF_DIR=std.getenv('ZWE_STATIC_DEFINITIONS_DIR');
if (!STATIC_DEF_DIR) {
@@ -418,6 +444,22 @@ export function processComponentApimlStaticDefinitions(componentDir: string): bo
const contents = xplatform.loadFileUTF8(path,xplatform.AUTO_DETECT);
if (contents) {
+ const zosmfScheme = std.getenv("ZOSMF_SCHEME");
+ const attls = isClientAttls()
+ const schemeEnv = std.getenv("ZWE_zOSMF_scheme");
+
+ let scheme = "https";
+
+ if (zosmfScheme) {
+ scheme = zosmfScheme;
+ } else if (schemeEnv) {
+ scheme = schemeEnv;
+ } else if (attls) {
+ scheme = "http";
+ }
+
+ std.setenv('ZOSMF_SCHEME', scheme);
+
const resolvedContents = varlib.resolveShellTemplate(contents);
const zweCliParameterHaInstance=std.getenv("ZWE_CLI_PARAMETER_HA_INSTANCE");
diff --git a/bin/libs/json.sh b/bin/libs/json.sh
index 5b5342a4a3..bf41777c1a 100644
--- a/bin/libs/json.sh
+++ b/bin/libs/json.sh
@@ -83,6 +83,13 @@ read_yaml() {
code=$?
print_trace " * Exit code: ${code}"
if [ ${code} -ne 0 ]; then
+ # Check for "node ... FSUM7351 not found". Common user error that we can solve more quickly by providing advice below.
+ missing_id_check=$(echo "${ZWE_PRIVATE_YAML_CACHE}" | grep "FSUM7351" 2>&1)
+ if [ -n "${missing_id_check}" ]; then
+ print_error "Error ZWEL0319E: NodeJS required but not found. Errors such as ZWEL0157E may occur as a result."
+ print_error "The value 'node.home' in the Zowe YAML is not correct. Set it to the parent directory of 'bin/node'."
+ print_error "For example, if NodeJS is at '/opt/nodejs/bin/node', then set 'node.home' to '/opt/nodejs'."
+ fi
print_error " * Output:"
print_error "$(padding_left "${ZWE_PRIVATE_YAML_CACHE}" " ")"
return ${code}
diff --git a/bin/libs/logging.sh b/bin/libs/logging.sh
index 6e41778aca..787c4fe7a4 100755
--- a/bin/libs/logging.sh
+++ b/bin/libs/logging.sh
@@ -14,6 +14,9 @@
export ZWE_PRIVATE_LOG_FILE=
prepare_log_file() {
+ if [ -f "${1}" ]; then
+ print_error_and_exit "Error ZWEL0102E: Invalid parameter --log-dir=${1} (not a directory)" "" 102
+ fi
# use absolute path to make sure we can always write to correct location even
# if other scripts changed current working directory
log_dir=$(convert_to_absolute_path "${1}" | remove_trailing_slash)
diff --git a/bin/libs/node.sh b/bin/libs/node.sh
index d457c76b2f..4782864d7d 100644
--- a/bin/libs/node.sh
+++ b/bin/libs/node.sh
@@ -22,7 +22,7 @@ export NODE_STDIN_CCSID=1047
# Workaround Fix for node 8.16.1 that requires compatibility mode for untagged files
export __UNTAGGED_READ_MODE=V6
-NODE_MIN=16
+NODE_MIN=18
ensure_node_is_on_path() {
if [[ ":${PATH}:" != *":${NODE_HOME}/bin:"* ]]; then
diff --git a/bin/libs/node.ts b/bin/libs/node.ts
index 3b20ccfd76..40880f5665 100644
--- a/bin/libs/node.ts
+++ b/bin/libs/node.ts
@@ -18,7 +18,7 @@ import * as shell from './shell';
import * as config from './config';
import { PathAPI as pathoid } from './pathoid';
-const NODE_MIN_VERSION=16;
+const NODE_MIN_VERSION=18;
// enforce encoding of stdio/stdout/stderr
// sometimes /dev/tty* ($SSH_TTY) are not configured properly, for example tagged as binary or wrong encoding
diff --git a/bin/libs/zosmf.sh b/bin/libs/zosmf.sh
index 116f66c65e..84477c3699 100644
--- a/bin/libs/zosmf.sh
+++ b/bin/libs/zosmf.sh
@@ -49,16 +49,3 @@ validate_zosmf_host_and_port() {
print_message "Successfully checked z/OS MF is available on 'https://${zosmf_host}:${zosmf_port}/zosmf/info'"
fi
}
-
-validate_zosmf_as_auth_provider() {
- zosmf_host="${1}"
- zosmf_port="${2}"
- auth_provider="${3}"
-
- if [ -n "${zosmf_host}" -a -n "${zosmf_port}" ]; then
- if [ "${auth_provider}" = "zosmf" ]; then
- print_error "z/OSMF is not configured. Using z/OSMF as authentication provider is not supported."
- return 1
- fi
- fi
-}
diff --git a/bin/libs/zosmf.ts b/bin/libs/zosmf.ts
index 949c0eddf6..9e05a98be0 100644
--- a/bin/libs/zosmf.ts
+++ b/bin/libs/zosmf.ts
@@ -47,14 +47,3 @@ export function validateZosmfHostAndPort(zosmfHost: string, zosmfPort: number):
}
return zosmfCheckPassed;
}
-
-//TODO isnt this completely backwards?
-export function validateZosmfAsAuthProvider(zosmfHost: string, zosmfPort: number, authProvider: string): boolean {
- if (zosmfHost && zosmfPort) {
- if (authProvider == 'zosmf') {
- common.printError("z/OSMF is not configured. Using z/OSMF as authentication provider is not supported.");
- return true;
- }
- }
- return false;
-}
diff --git a/build/zwe/types/@qjstypes/xplatform.d.ts b/build/zwe/types/@qjstypes/xplatform.d.ts
index f139e1ac00..6d4572936e 100644
--- a/build/zwe/types/@qjstypes/xplatform.d.ts
+++ b/build/zwe/types/@qjstypes/xplatform.d.ts
@@ -27,6 +27,7 @@ export function stringFromBytes(data:ArrayBuffer, offset:number, length:number,
*/
export function loadFileUTF8(path:string, sourceCCSID:number):string;
export function storeFileUTF8(path:string, targetCCSID:number, content:string):number;
+export function appendFileUTF8(path: string, targetCCSID:number, content:string):number;
export var AUTO_DETECT:number;
export var NO_CONVERT:number;
diff --git a/containers/base-jdk/ubi/Dockerfile b/containers/base-jdk/ubi/Dockerfile
index b87b254888..e4618a38bb 100644
--- a/containers/base-jdk/ubi/Dockerfile
+++ b/containers/base-jdk/ubi/Dockerfile
@@ -9,7 +9,7 @@
# Copyright Contributors to the Zowe Project.
#######################################################################
-FROM zowe-docker-release.jfrog.io/ompzowe/base:latest-ubi
+FROM zowe-docker-release.jfrog.io/ompzowe/base:2-ubi
##################################
# labels
diff --git a/containers/base-jdk/ubuntu/Dockerfile b/containers/base-jdk/ubuntu/Dockerfile
index 3ce76a688a..bdb950bbc6 100644
--- a/containers/base-jdk/ubuntu/Dockerfile
+++ b/containers/base-jdk/ubuntu/Dockerfile
@@ -9,7 +9,7 @@
# Copyright Contributors to the Zowe Project.
#######################################################################
-FROM zowe-docker-release.jfrog.io/ompzowe/base:latest-ubuntu
+FROM zowe-docker-release.jfrog.io/ompzowe/base:2-ubuntu
##################################
# labels
diff --git a/containers/base-node/Dockerfile b/containers/base-node/Dockerfile
index e3cd778ccd..345a3a3118 100644
--- a/containers/base-node/Dockerfile
+++ b/containers/base-node/Dockerfile
@@ -10,7 +10,7 @@
#######################################################################
# base image tag
-ARG ZOWE_BASE_IMAGE=latest-ubuntu
+ARG ZOWE_BASE_IMAGE=2-ubuntu
FROM zowe-docker-release.jfrog.io/ompzowe/base:${ZOWE_BASE_IMAGE}
diff --git a/containers/zowe-launch-scripts/Dockerfile b/containers/zowe-launch-scripts/Dockerfile
index 4c969ce1d7..4334923c61 100644
--- a/containers/zowe-launch-scripts/Dockerfile
+++ b/containers/zowe-launch-scripts/Dockerfile
@@ -10,7 +10,7 @@
#######################################################################
# base image tag
-ARG ZOWE_BASE_IMAGE=latest-ubuntu
+ARG ZOWE_BASE_IMAGE=2-ubuntu
FROM zowe-docker-release.jfrog.io/ompzowe/base-node:${ZOWE_BASE_IMAGE}
diff --git a/example-zowe.yaml b/example-zowe.yaml
index 1f8a36c801..11444cd9d6 100644
--- a/example-zowe.yaml
+++ b/example-zowe.yaml
@@ -469,17 +469,17 @@ java:
#-------------------------------------------------------------------------------
-# node.js configuration
+# Node.js configuration
#
-# Some Zowe components requires node.js. Define the path where you have your
-# node.js is installed.
+# Some Zowe components requires Node.js. Define the path where you have your
+# Node.js is installed.
#
# **NOTE**: this field can be updated automatically if you pass `--update-config`
# to `zwe init` command.
#-------------------------------------------------------------------------------
node:
# **COMMONLY_CUSTOMIZED**
- # Path to your node.js home directory
+ # Path to your Node.js home directory
home: ""
@@ -667,7 +667,7 @@ components:
# # for this HA instance, we did not customize "components", so it will use default value.
# # HA instance ID, we will start 2 instances on LPAR2
-# # **NOTE**, we can only start one gateway in same LPAR.
+# # **NOTE**, we can only start one Gateway in same LPAR.
# lpar2a:
# # hostname where this instance will be started
# hostname: lpar2.my-company.com
diff --git a/files/SZWESAMP/ZWEIMVS b/files/SZWESAMP/ZWEIMVS
index e8e4b6caef..500c060492 100644
--- a/files/SZWESAMP/ZWEIMVS
+++ b/files/SZWESAMP/ZWEIMVS
@@ -15,9 +15,9 @@
//* Instances represent a configuration of Zowe, different from the
//* "runtime" datasets that are created upon install of Zowe / SMPE.
//*
-//* If your choosen value of 'zowe.setup.dataset.authLoadlib' is not
-//* Equal to 'zowe.setup.prefix' + 'SZWELOAD',
-//* Then you must also run "ZWEIMVS2".
+//* If your chosen value of 'zowe.setup.dataset.authLoadlib' is not
+//* equal to 'zowe.setup.dataset.prefix' + 'SZWEAUTH',
+//* then you must also run "ZWEIMVS2".
//*
//*********************************************************************
//MKPDSE EXEC PGM=IKJEFT01
diff --git a/files/SZWESAMP/ZWEIMVS2 b/files/SZWESAMP/ZWEIMVS2
index 93a3213a62..a4bb428c72 100644
--- a/files/SZWESAMP/ZWEIMVS2
+++ b/files/SZWESAMP/ZWEIMVS2
@@ -12,9 +12,9 @@
//*********************************************************************
//*
//* This job is used to create the APF load library for an instance
-//* Of Zowe. It is not needed if your choosen value of
+//* of Zowe. It is not needed if your chosen value of
//* 'zowe.setup.dataset.authLoadlib' is equal to
-//* 'zowe.setup.prefix' + 'SZWELOAD'.
+//* 'zowe.setup.dataset.prefix' + 'SZWEAUTH'.
//*
//* When running this job, you should also run ZWEIMVS
//*
diff --git a/files/SZWESAMP/ZWERMVS b/files/SZWESAMP/ZWERMVS
index 844e027dcf..8aa58885d7 100644
--- a/files/SZWESAMP/ZWERMVS
+++ b/files/SZWESAMP/ZWERMVS
@@ -15,9 +15,9 @@
//* Instances represent a configuration of Zowe, different from the
//* "runtime" datasets that are created upon install of Zowe / SMPE.
//*
-//* If your choosen value of 'zowe.setup.dataset.authLoadlib' is not
-//* Equal to 'zowe.setup.prefix' + 'SZWELOAD',
-//* Then you must also run "ZWERMVS2".
+//* If your chosen value of 'zowe.setup.dataset.authLoadlib' is not
+//* equal to 'zowe.setup.dataset.prefix' + 'SZWEAUTH',
+//* then you must also run "ZWERMVS2".
//*
//*********************************************************************
//RMPDSE EXEC PGM=IKJEFT01
diff --git a/files/SZWESAMP/ZWERMVS2 b/files/SZWESAMP/ZWERMVS2
index 266f60099a..5848ec5933 100644
--- a/files/SZWESAMP/ZWERMVS2
+++ b/files/SZWESAMP/ZWERMVS2
@@ -12,9 +12,9 @@
//*********************************************************************
//*
//* This job is used to remove the APF load library for an instance
-//* Of Zowe. It is not needed if your choosen value of
+//* of Zowe. It is not needed if your chosen value of
//* 'zowe.setup.dataset.authLoadlib' is equal to
-//* 'zowe.setup.prefix' + 'SZWELOAD'.
+//* 'zowe.setup.dataset.prefix' + 'SZWEAUTH'.
//*
//* When running this job, you should also run ZWERMVS
//*
diff --git a/manifest.json.template b/manifest.json.template
index 36b17b84eb..5b212433a4 100644
--- a/manifest.json.template
+++ b/manifest.json.template
@@ -1,6 +1,6 @@
{
"name": "Zowe",
- "version": "2.18.0",
+ "version": "2.18.1",
"description": "Zowe is an open source project created to host technologies that benefit the Z platform from all members of the Z community (Integrated Software Vendors, System Integrators and z/OS consumers). Zowe, like Mac or Windows, comes with a set of APIs and OS capabilities that applications build on and also includes some applications out of the box. Zowe offers modern interfaces to interact with z/OS and allows you to work with z/OS in a way that is similar to what you experience on cloud platforms today. You can use these interfaces as delivered or through plug-ins and extensions that are created by clients or third-party vendors.",
"license": "EPL-2.0",
"homepage": "https://zowe.org",
@@ -391,6 +391,14 @@
"tag": "configmgr-v2.18.0-RC1",
"destinations": ["Zowe PAX"]
}]
+ }, {
+ "componentGroup": "Zowe Client Python SDK",
+ "entries": [{
+ "repository": "zowe-client-python-sdk",
+ "core": false,
+ "tag": "main",
+ "destinations": ["Zowe Client Python SDK"]
+ }]
}
],
"imageDependencies": {
diff --git a/playbooks/group_vars/marist.yml b/playbooks/group_vars/marist.yml
index d6eed7dbfc..92ff54eb00 100644
--- a/playbooks/group_vars/marist.yml
+++ b/playbooks/group_vars/marist.yml
@@ -9,6 +9,7 @@ zowe_keystore_dir: /ZOWE/tmp/keystore
zowe_install_logs_dir: /ZOWE/tmp/logs
zowe_dataset_prefix: ZOWEAD3.ZWE
zowe_apiml_verify_certficates_of_services: false
+zos_java_home: /ZOWE/node/J8.0_64
# enable Non-Strict verify certificates by default
zowe_apiml_nonstrict_verify_certficates_of_services: true
zowe_jcllib: ZOWEAD3.ZWE.JCLLIB
diff --git a/playbooks/host_vars/marist-7.yml b/playbooks/host_vars/marist-10.yml
similarity index 100%
rename from playbooks/host_vars/marist-7.yml
rename to playbooks/host_vars/marist-10.yml
diff --git a/playbooks/host_vars/marist-8.yml b/playbooks/host_vars/marist-11.yml
similarity index 100%
rename from playbooks/host_vars/marist-8.yml
rename to playbooks/host_vars/marist-11.yml
diff --git a/playbooks/host_vars/marist-6.yml b/playbooks/host_vars/marist-9.yml
similarity index 100%
rename from playbooks/host_vars/marist-6.yml
rename to playbooks/host_vars/marist-9.yml
diff --git a/playbooks/hosts b/playbooks/hosts
index f53a1884e8..85fcbfebf3 100644
--- a/playbooks/hosts
+++ b/playbooks/hosts
@@ -1,7 +1,7 @@
[marist]
-marist-6
-marist-7
-marist-8
+marist-9
+marist-10
+marist-11
[tvt]
tvt4188
diff --git a/playbooks/roles/common/templates/scp.with-key.sh.j2 b/playbooks/roles/common/templates/scp.with-key.sh.j2
index e4eb9b7891..c61ac836c1 100644
--- a/playbooks/roles/common/templates/scp.with-key.sh.j2
+++ b/playbooks/roles/common/templates/scp.with-key.sh.j2
@@ -4,4 +4,4 @@ FILE_LOCAL=$1
FILE_REMOTE=$2
echo "SCP $FILE_LOCAL ==> $FILE_REMOTE"
-scp -oHostKeyAlgorithms=+ssh-rsa -P {{ hostvars[inventory_hostname].ansible_port | default('22') }} -i {{ hostvars[inventory_hostname].ansible_ssh_private_key_file }} $FILE_LOCAL {{ hostvars[inventory_hostname].ansible_user }}@{{ hostvars[inventory_hostname].ansible_ssh_host }}:$FILE_REMOTE
+scp -O -oHostKeyAlgorithms=+ssh-rsa -P {{ hostvars[inventory_hostname].ansible_port | default('22') }} -i {{ hostvars[inventory_hostname].ansible_ssh_private_key_file }} $FILE_LOCAL {{ hostvars[inventory_hostname].ansible_user }}@{{ hostvars[inventory_hostname].ansible_ssh_host }}:$FILE_REMOTE
diff --git a/playbooks/roles/common/templates/scp.with-pwd.sh.j2 b/playbooks/roles/common/templates/scp.with-pwd.sh.j2
index 7a3c48bf9a..d522b3bebe 100644
--- a/playbooks/roles/common/templates/scp.with-pwd.sh.j2
+++ b/playbooks/roles/common/templates/scp.with-pwd.sh.j2
@@ -4,4 +4,4 @@ FILE_LOCAL=$1
FILE_REMOTE=$2
echo "SCP $FILE_LOCAL ==> $FILE_REMOTE"
-sshpass -p "{{ hostvars[inventory_hostname].ansible_password }}" scp -oHostKeyAlgorithms=+ssh-rsa -P {{ hostvars[inventory_hostname].ansible_port | default('22') }} $FILE_LOCAL {{ hostvars[inventory_hostname].ansible_user }}@{{ hostvars[inventory_hostname].ansible_ssh_host }}:$FILE_REMOTE
+sshpass -p "{{ hostvars[inventory_hostname].ansible_password }}" scp -O -oHostKeyAlgorithms=+ssh-rsa -P {{ hostvars[inventory_hostname].ansible_port | default('22') }} $FILE_LOCAL {{ hostvars[inventory_hostname].ansible_user }}@{{ hostvars[inventory_hostname].ansible_ssh_host }}:$FILE_REMOTE
diff --git a/playbooks/roles/ptf/tasks/main.yml b/playbooks/roles/ptf/tasks/main.yml
index f8cd402414..539484efdc 100644
--- a/playbooks/roles/ptf/tasks/main.yml
+++ b/playbooks/roles/ptf/tasks/main.yml
@@ -128,6 +128,8 @@
dest: "{{ work_dir_local }}/{{ inventory_hostname }}/HOLDDATA.jcl"
newline_sequence: '\n'
mode: 0700
+ vars:
+ smpe_csi: "{{ zowe_smpe_hlq_csi }}.CSI"
delegate_to: localhost
- name: Upload HOLDDATA.jcl to server
diff --git a/pswi/.gitignore b/pswi/.gitignore
new file mode 100644
index 0000000000..a5e2c10550
--- /dev/null
+++ b/pswi/.gitignore
@@ -0,0 +1,4 @@
+logs/
+EXP*
+report.txt
+unzipped/
diff --git a/pswi/01_smpe.sh b/pswi/01_smpe.sh
index 8370b9ef54..38a40b11c3 100644
--- a/pswi/01_smpe.sh
+++ b/pswi/01_smpe.sh
@@ -18,7 +18,7 @@ echo "SMPE workflow name :" $SMPE_WF_NAME
CREATE_SMPE_WF_URL="${BASE_URL}/zosmf/workflow/rest/1.0/workflows"
SMPE_WF_LIST_URL="${BASE_URL}/zosmf/workflow/rest/1.0/workflows?owner=${ZOSMF_USER}&workflowName=${SMPE_WF_NAME}"
-# JSONs
+# JSONs
ADD_WORKFLOW_JSON='{"workflowName":"'$SMPE_WF_NAME'",
"workflowDefinitionFile":"'${DIR}'/SMPE20",
@@ -43,7 +43,7 @@ echo "Uploading workflow SMPE into ${DIR} directory thru SSH"
cd workflows
-sshpass -p${ZOSMF_PASS} sftp -o HostKeyAlgorithms=+ssh-rsa -o BatchMode=no -o StrictHostKeyChecking=no -o PubkeyAuthentication=no -b - -P ${ZZOW_SSH_PORT} ${ZOSMF_USER}@${HOST} << EOF
+sshpass -p${ZOSMF_PASS} sftp -o HostKeyAlgorithms=+ssh-rsa -o BatchMode=no -o StrictHostKeyChecking=no -o PubkeyAuthentication=no -b - -P ${ZZOW_SSH_PORT} ${ZOSMF_USER}@${HOST} <>$LOG_DIR/report.txt
+ echo $RESP >>$LOG_DIR/report.txt
+ exit -1
+ elif [ "$STATUS_NAME" = "complete" ]; then
+ echo "Workflow finished successfully."
+ STATUS="FINISHED"
+ fi
done
-
diff --git a/pswi/02_ptf.sh b/pswi/02_ptf.sh
index e2c23e54e3..c6f189e43a 100644
--- a/pswi/02_ptf.sh
+++ b/pswi/02_ptf.sh
@@ -22,7 +22,7 @@ echo "PTF workflow name :" $PTF_WF_NAME
CREATE_PTF_WF_URL="${BASE_URL}/zosmf/workflow/rest/1.0/workflows"
PTF_WF_LIST_URL="${BASE_URL}/zosmf/workflow/rest/1.0/workflows?owner=${ZOSMF_USER}&workflowName=${PTF_WF_NAME}"
-# JSONs
+# JSONs
ADD_WORKFLOW_JSON='{"workflowName":"'$PTF_WF_NAME'",
"workflowDefinitionFile":"'${DIR}'/WFPTF",
"system":"'$ZOSMF_SYSTEM'",
@@ -38,7 +38,7 @@ ADD_WORKFLOW_JSON='{"workflowName":"'$PTF_WF_NAME'",
cd workflows
-sshpass -p${ZOSMF_PASS} sftp -o HostKeyAlgorithms=+ssh-rsa -o BatchMode=no -o StrictHostKeyChecking=no -o PubkeyAuthentication=no -b - -P ${ZZOW_SSH_PORT} ${ZOSMF_USER}@${HOST} << EOF
+sshpass -p${ZOSMF_PASS} sftp -o HostKeyAlgorithms=+ssh-rsa -o BatchMode=no -o StrictHostKeyChecking=no -o PubkeyAuthentication=no -b - -P ${ZZOW_SSH_PORT} ${ZOSMF_USER}@${HOST} <>$LOG_DIR/report.txt
+ echo $RESP >>$LOG_DIR/report.txt
+ exit -1
+ elif [ "$STATUS_NAME" = "complete" ]; then
+ echo "Workflow finished successfully."
+ STATUS="FINISHED"
+ fi
done
diff --git a/pswi/03_create.sh b/pswi/03_create.sh
index 3f9e30fb84..49b218da98 100644
--- a/pswi/03_create.sh
+++ b/pswi/03_create.sh
@@ -16,7 +16,7 @@ echo "SWI name :" $SWI_NAME
echo "Existing DSN :" $EXPORT_DSN
echo "Temporary zFS :" $TMP_ZFS
echo "Temporary directory:" $TMP_MOUNT
-echo "Work zFS :" $WORK_ZFS # For z/OSMF v2.3
+echo "Work zFS :" $WORK_ZFS # For z/OSMF v2.3
echo "Work mount point :" $WORK_MOUNT # For z/OSMF v2.3
echo "ZOWE zFS :" $ZOWE_ZFS
echo "ZOWE mount point :" $ZOWE_MOUNT
@@ -25,10 +25,11 @@ echo "ACCOUNT :" $ACCOUNT
echo "SYSAFF :" $SYSAFF
echo "z/OSMF version :" $ZOSMF_V
-# JSONs
+# JSONs
ADD_SWI_JSON='{"name":"'${SWI_NAME}'","system":"'${ZOSMF_SYSTEM}'","description":"ZOWE v'${VERSION}' Portable Software Instance",
"globalzone":"'${GLOBAL_ZONE}'","targetzones":["'${TZONE}'"],"workflows":[{"name":"ZOWE Mount Workflow","description":"This workflow performs mount action of ZOWE zFS.",
-"location": {"dsname":"'${WORKFLOW_DSN}'(ZWEWRF02)"}},{"name":"ZOWE Configuration of Zowe 2.0","description":"This workflow configures Zowe v2.0.",
+"location": {"dsname":"'${WORKFLOW_DSN}'(ZWEWRF02)"}},{"name":"Stand-alone Zowe API ML Configuration","description":"This workflow configures only API ML for Zowe 2.0.",
+"location": {"dsname":"'${WORKFLOW_DSN}'(ZWEAMLCF)"}},{"name":"Full Zowe server-side configuration for Zowe 2.0","description":"This workflow configures all Zowe server-side components for Zowe v2.0.",
"location": {"dsname":"'${WORKFLOW_DSN}'(ZWECONF)"}},{"name":"ZOWE Creation of CSR request workflow","description":"This workflow creates a certificate sign request.",
"location": {"dsname":"'${WORKFLOW_DSN}'(ZWECRECR)"}},{"name":"ZOWE Sign a CSR request","description":"This workflow signs the certificate sign request by a local CA.",
"location": {"dsname":"'${WORKFLOW_DSN}'(ZWESIGNC)"}},{"name":"ZOWE Load Authentication Certificate into ESM","description":"This workflow loads a signed client authentication certificate to the ESM.",
@@ -39,7 +40,7 @@ ADD_EXPORT_DSN_JSON='{"dsorg":"PO","alcunit":"TRK","primary":10,"secondary":5,"d
EXPORT_JCL_JSON='{"packagedir":"'${EXPORT}'","jcldataset":"'${EXPORT_DSN}'","workvolume":"'${VOLUME}'"}'
MOUNT_ZOWE_ZFS_JSON='{"action":"mount","mount-point":"'${ZOWE_MOUNT}'","fs-type":"zFS","mode":"rdwr"}'
-# URLs
+# URLs
ADD_SWI_URL="${BASE_URL}/zosmf/swmgmt/swi"
LOAD_PRODUCTS_URL="${BASE_URL}/zosmf/swmgmt/swi/${ZOSMF_SYSTEM}/${SWI_NAME}/products"
WORKFLOW_DSN_URL="${BASE_URL}/zosmf/restfiles/ds/${WORKFLOW_DSN}"
@@ -55,132 +56,126 @@ CHECK_EXPORT_DSN_URL="${BASE_URL}/zosmf/restfiles/ds?dslevel=${EXPORT_DSN}"
# Check if temp zFS for PSWI is mounted
echo "Checking/mounting ${TMP_ZFS}"
sh scripts/tmp_mounts.sh "${TMP_ZFS}" "${TMP_MOUNT}"
-if [ $? -gt 0 ];then exit -1;fi
-
-if [ "$ZOSMF_V" = "2.3" ]
-then
-# z/OSMF 2.3
+if [ $? -gt 0 ]; then exit -1; fi
# Check if work zFS for PSWI is mounted
echo "Checking/mounting ${WORK_ZFS}"
sh scripts/tmp_mounts.sh "${WORK_ZFS}" "${WORK_MOUNT}"
-if [ $? -gt 0 ];then exit -1;fi
-fi
-
+if [ $? -gt 0 ]; then exit -1; fi
+
# Check if ZOWE zFS is mounted
echo "Checking if file system ${ZOWE_ZFS} is mounted."
-RESP=`curl -s $GET_ZOWE_ZFS_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
-MOUNTZ=`echo $RESP | grep -o '"mountpoint":".*"' | cut -f4 -d\"`
+RESP=$(curl -s $GET_ZOWE_ZFS_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
+MOUNTZ=$(echo $RESP | grep -o '"mountpoint":".*"' | cut -f4 -d\")
-if [ -n "$MOUNTZ" ]
-then
+if [ -n "$MOUNTZ" ]; then
# Check if ZOWE zFS is mounted to given ZOWE mountpoint
- if [ "$MOUNTZ/" = "$ZOWE_MOUNT" ]
- then
+ if [ "$MOUNTZ/" = "$ZOWE_MOUNT" ]; then
echo "${ZOWE_MOUNT} with zFS ${ZOWE_ZFS} mounted will be used."
else
- echo "The file system ${ZOWE_ZFS} exists but is mounted to different mount point ${MOUNTZ}."
- echo "It is required to have the file system ${ZOWE_ZFS} mounted to the exact mount point (${ZOWE_MOUNT}) to successfully export Zowe PSWI."
+ echo "The file system ${ZOWE_ZFS} exists but is mounted to different mount point ${MOUNTZ}." >>$LOG_DIR/report.txt
+ echo "It is required to have the file system ${ZOWE_ZFS} mounted to the exact mount point (${ZOWE_MOUNT}) to successfully export Zowe PSWI." >>$LOG_DIR/report.txt
exit -1
fi
else
echo "${ZOWE_ZFS} is not mounted anywhere. Checking if ${ZOWE_MOUNT} has any zFS mounted."
- RESP=`curl -s $GET_ZOWE_PATH_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
- MOUNTZFS=`echo $RESP | grep -o "name":".*" | cut -f4 -d\"`
- if [ -n "$MOUNTZFS" ]
- then
+ RESP=$(curl -s $GET_ZOWE_PATH_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
+ MOUNTZFS=$(echo $RESP | grep -o "name":".*" | cut -f4 -d\")
+ if [ -n "$MOUNTZFS" ]; then
# If ZFS is not mounted to the mountpoint then this ZOWE mountpoint has different zFS
- echo "The mountpoint ${ZOWE_MOUNT} has different zFS ${MOUNTZFS}."
+ echo "The mountpoint ${ZOWE_MOUNT} has different zFS ${MOUNTZFS}." >>$LOG_DIR/report.txt
exit -1
else
- # Mount zFS to Zowe mountpoint
- echo "Mounting zFS ${ZOWE_ZFS} to ${ZOWE_MOUNT} mount point."
- RESP=`curl -s $ACTION_ZOWE_ZFS_URL -k -X "PUT" -d "$MOUNT_ZOWE_ZFS_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
- sh scripts/check_response.sh "${RESP}" $?
- if [ $? -gt 0 ];then exit -1;fi
+ # Mount zFS to Zowe mountpoint
+ echo "Mounting zFS ${ZOWE_ZFS} to ${ZOWE_MOUNT} mount point."
+ RESP=$(curl -s $ACTION_ZOWE_ZFS_URL -k -X "PUT" -d "$MOUNT_ZOWE_ZFS_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
+ sh scripts/check_response.sh "${RESP}" $?
+ if [ $? -gt 0 ]; then exit -1; fi
fi
fi
# Add workflow to ZOWE data sets
echo "Checking if WORKFLOW data set already exists."
-RESP=`curl -s $CHECK_WORKFLOW_DSN_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
-DS_COUNT=`echo $RESP | grep -o '"returnedRows":[0-9]*' | cut -f2 -d:`
-if [ $DS_COUNT -ne 0 ]
-then
- echo "The ${WORKFLOW_DSN} already exist. Because there is a possibility that it contains something unwanted the script does not continue."
- exit -1
+RESP=$(curl -s $CHECK_WORKFLOW_DSN_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
+DS_COUNT=$(echo $RESP | grep -o '"returnedRows":[0-9]*' | cut -f2 -d:)
+if [ $DS_COUNT -ne 0 ]; then
+ echo "The ${WORKFLOW_DSN} already exist. Because there is a possibility that it contains something unwanted the script does not continue." >>$LOG_DIR/report.txt
+ exit -1
else
echo "Creating a data set where the post-Deployment workflow will be stored."
- RESP=`curl -s $WORKFLOW_DSN_URL -k -X "POST" -d "$ADD_WORKFLOW_DSN_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
- if [ -n "$RESP" ]
- then
- echo "The creation of the ${WORKFLOW_DSN} was not successful. Error message: ${RESP}"
+ RESP=$(curl -s $WORKFLOW_DSN_URL -k -X "POST" -d "$ADD_WORKFLOW_DSN_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
+ if [ -n "$RESP" ]; then
+ echo "The creation of the ${WORKFLOW_DSN} was not successful. Error message: ${RESP}" >>$LOG_DIR/report.txt
exit -1
- fi
+ fi
fi
echo "Copying workflows to ${WORKFLOW_DSN} data set."
-echo ${JOBST1} > JCL
-echo ${JOBST2} >> JCL
-echo "//COPYWRFS EXEC PGM=BPXBATCH" >> JCL
-echo "//STDOUT DD SYSOUT=*" >> JCL
-echo "//STDERR DD SYSOUT=*" >> JCL
-echo "//STDPARM DD *" >> JCL
-echo "SH set -x;set -e;" >> JCL
-echo "cd ${WORK_MOUNT};" >> JCL
-echo "source=\"${ZOWE_MOUNT}files/workflows/ZWEWRF02.xml\";" >> JCL
-echo "target=\"//'${WORKFLOW_DSN}(ZWEWRF02)'\";" >> JCL
-echo "iconv -f ISO8859-1 -t IBM-1047 \$source > _ZWEWRF02;" >> JCL
-echo "sed 's|UTF-8|IBM-1047|g' _ZWEWRF02 > ZWEWRF02;" >> JCL
-echo "cp -T ZWEWRF02 \$target;" >> JCL
-echo "source=\"${ZOWE_MOUNT}files/workflows/ZWECRECR.xml\";" >> JCL
-echo "target=\"//'${WORKFLOW_DSN}(ZWECRECR)'\";" >> JCL
-echo "iconv -f ISO8859-1 -t IBM-1047 \$source > _ZWECRECR;" >> JCL
-echo "sed 's|UTF-8|IBM-1047|g' _ZWECRECR > ZWECRECR;" >> JCL
-echo "cp -T ZWECRECR \$target;" >> JCL
-echo "source=\"${ZOWE_MOUNT}files/workflows/ZWEKRING.xml\";" >> JCL
-echo "target=\"//'${WORKFLOW_DSN}(ZWEKRING)'\";" >> JCL
-echo "iconv -f ISO8859-1 -t IBM-1047 \$source > _ZWEKRING;" >> JCL
-echo "sed 's|UTF-8|IBM-1047|g' _ZWEKRING > ZWEKRING;" >> JCL
-echo "cp -T ZWEKRING \$target;" >> JCL
-echo "source=\"${ZOWE_MOUNT}files/workflows/ZWELOADC.xml\";" >> JCL
-echo "target=\"//'${WORKFLOW_DSN}(ZWELOADC)'\";" >> JCL
-echo "iconv -f ISO8859-1 -t IBM-1047 \$source > _ZWELOADC;" >> JCL
-echo "sed 's|UTF-8|IBM-1047|g' _ZWELOADC > ZWELOADC;" >> JCL
-echo "cp -T ZWELOADC \$target;" >> JCL
-echo "source=\"${ZOWE_MOUNT}files/workflows/ZWESIGNC.xml\";" >> JCL
-echo "target=\"//'${WORKFLOW_DSN}(ZWESIGNC)'\";" >> JCL
-echo "iconv -f ISO8859-1 -t IBM-1047 \$source > _ZWESIGNC;" >> JCL
-echo "sed 's|UTF-8|IBM-1047|g' _ZWESIGNC > ZWESIGNC;" >> JCL
-echo "cp -T ZWESIGNC \$target;" >> JCL
-echo "source=\"${ZOWE_MOUNT}files/workflows/ZWECONF.xml\";" >> JCL
-echo "target=\"//'${WORKFLOW_DSN}(ZWECONF)'\";" >> JCL
-echo "iconv -f ISO8859-1 -t IBM-1047 \$source > _ZWECONF;" >> JCL
-echo "sed 's|UTF-8|IBM-1047|g' _ZWECONF > ZWECONF;" >> JCL
-echo "cp -T ZWECONF \$target;" >> JCL
-echo "/*" >> JCL
-
-sh scripts/submit_jcl.sh "`cat JCL`"
-if [ $? -gt 0 ];then exit -1;fi
+echo ${JOBST1} >JCL
+echo ${JOBST2} >>JCL
+echo "//COPYWRFS EXEC PGM=BPXBATCH" >>JCL
+echo "//STDOUT DD SYSOUT=*" >>JCL
+echo "//STDERR DD SYSOUT=*" >>JCL
+echo "//STDPARM DD *" >>JCL
+echo "SH set -x;set -e;" >>JCL
+echo "cd ${WORK_MOUNT};" >>JCL
+echo "source=\"${ZOWE_MOUNT}files/workflows/ZWEWRF02.xml\";" >>JCL
+echo "target=\"//'${WORKFLOW_DSN}(ZWEWRF02)'\";" >>JCL
+echo "iconv -f ISO8859-1 -t IBM-1047 \$source > _ZWEWRF02;" >>JCL
+echo "sed 's|UTF-8|IBM-1047|g' _ZWEWRF02 > ZWEWRF02;" >>JCL
+echo "cp -T ZWEWRF02 \$target;" >>JCL
+echo "source=\"${ZOWE_MOUNT}files/workflows/ZWECRECR.xml\";" >>JCL
+echo "target=\"//'${WORKFLOW_DSN}(ZWECRECR)'\";" >>JCL
+echo "iconv -f ISO8859-1 -t IBM-1047 \$source > _ZWECRECR;" >>JCL
+echo "sed 's|UTF-8|IBM-1047|g' _ZWECRECR > ZWECRECR;" >>JCL
+echo "cp -T ZWECRECR \$target;" >>JCL
+echo "source=\"${ZOWE_MOUNT}files/workflows/ZWEKRING.xml\";" >>JCL
+echo "target=\"//'${WORKFLOW_DSN}(ZWEKRING)'\";" >>JCL
+echo "iconv -f ISO8859-1 -t IBM-1047 \$source > _ZWEKRING;" >>JCL
+echo "sed 's|UTF-8|IBM-1047|g' _ZWEKRING > ZWEKRING;" >>JCL
+echo "cp -T ZWEKRING \$target;" >>JCL
+echo "source=\"${ZOWE_MOUNT}files/workflows/ZWELOADC.xml\";" >>JCL
+echo "target=\"//'${WORKFLOW_DSN}(ZWELOADC)'\";" >>JCL
+echo "iconv -f ISO8859-1 -t IBM-1047 \$source > _ZWELOADC;" >>JCL
+echo "sed 's|UTF-8|IBM-1047|g' _ZWELOADC > ZWELOADC;" >>JCL
+echo "cp -T ZWELOADC \$target;" >>JCL
+echo "source=\"${ZOWE_MOUNT}files/workflows/ZWESIGNC.xml\";" >>JCL
+echo "target=\"//'${WORKFLOW_DSN}(ZWESIGNC)'\";" >>JCL
+echo "iconv -f ISO8859-1 -t IBM-1047 \$source > _ZWESIGNC;" >>JCL
+echo "sed 's|UTF-8|IBM-1047|g' _ZWESIGNC > ZWESIGNC;" >>JCL
+echo "cp -T ZWESIGNC \$target;" >>JCL
+echo "source=\"${ZOWE_MOUNT}files/workflows/ZWEAMLCF.xml\";" >>JCL
+echo "target=\"//'${WORKFLOW_DSN}(ZWEAMLCF)'\";" >>JCL
+echo "iconv -f ISO8859-1 -t IBM-1047 \$source > _ZWEAMLCF;" >>JCL
+echo "sed 's|UTF-8|IBM-1047|g' _ZWEAMLCF > ZWEAMLCF;" >>JCL
+echo "cp -T ZWEAMLCF \$target;" >>JCL
+echo "source=\"${ZOWE_MOUNT}files/workflows/ZWECONF.xml\";" >>JCL
+echo "target=\"//'${WORKFLOW_DSN}(ZWECONF)'\";" >>JCL
+echo "iconv -f ISO8859-1 -t IBM-1047 \$source > _ZWECONF;" >>JCL
+echo "sed 's|UTF-8|IBM-1047|g' _ZWECONF > ZWECONF;" >>JCL
+echo "cp -T ZWECONF \$target;" >>JCL
+echo "/*" >>JCL
+
+sh scripts/submit_jcl.sh "$(cat JCL)"
+if [ $? -gt 0 ]; then exit -1; fi
rm JCL
# Add data set for export jobs
echo "Checking if the data set for export jobs already exists."
-RESP=`curl -s $CHECK_EXPORT_DSN_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
-DSN_COUNT=`echo $RESP | grep -o '"returnedRows":[0-9]*' | cut -f2 -d:`
-if [ $DSN_COUNT -ne 0 ]
-then
- echo "The ${EXPORT_DSN} already exist. Because there is a possibility that it contains something unwanted the script does not continue."
+RESP=$(curl -s $CHECK_EXPORT_DSN_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
+DSN_COUNT=$(echo $RESP | grep -o '"returnedRows":[0-9]*' | cut -f2 -d:)
+if [ $DSN_COUNT -ne 0 ]; then
+ echo "The ${EXPORT_DSN} already exist. Because there is a possibility that it contains something unwanted the script does not continue." >>$LOG_DIR/report.txt
exit -1
else
echo "Creating a data set where the export jobs will be stored."
- RESP=`curl -s $EXPORT_DSN_URL -k -X "POST" -d "$ADD_EXPORT_DSN_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
- if [ -n "$RESP" ]
- then echo "The creation of the ${EXPORT_DSN} was not successful. Error message: ${RESP}"
- fi
+ RESP=$(curl -s $EXPORT_DSN_URL -k -X "POST" -d "$ADD_EXPORT_DSN_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
+ if [ -n "$RESP" ]; then
+ echo "The creation of the ${EXPORT_DSN} was not successful. Error message: ${RESP}"
+ fi
fi
# Delete Software instance if it already exists
@@ -192,24 +187,22 @@ curl -s $DELETE_SWI_URL -k -X "DELETE" -H "Content-Type: application/json" -H "X
# Add Software Instance
echo 'Invoking REST API to add a Software Instance.'
-RESP=`curl -s $ADD_SWI_URL -k -X "POST" -d "$ADD_SWI_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
+RESP=$(curl -s $ADD_SWI_URL -k -X "POST" -d "$ADD_SWI_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
sh scripts/check_response.sh "${RESP}" $?
-if [ $? -gt 0 ];then exit -1;fi
+if [ $? -gt 0 ]; then exit -1; fi
# Load the products, features, and FMIDs for a software instance
# The response is in format "statusurl":"https:\/\/:ZOSMF_URL:post\/restofurl"
# On statusurl can be checked actual status of loading the products, features, and FMIDs
echo 'Invoking REST API to load SMP/E managed products from the SMP/E CSI.'
-
-RESP=`curl -s $LOAD_PRODUCTS_URL -k -X "PUT" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
+RESP=$(curl -s $LOAD_PRODUCTS_URL -k -X "PUT" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
sh scripts/check_response.sh "${RESP}" $?
-if [ $? -gt 0 ];then exit -1;fi
+if [ $? -gt 0 ]; then exit -1; fi
-LOAD_STATUS_URL=`echo $RESP | grep -o '"statusurl":".*"' | cut -f4 -d\" | tr -d '\' 2>/dev/null`
-if [ -z "$LOAD_STATUS_URL" ]
-then
- echo "No response from the REST API call."
+LOAD_STATUS_URL=$(echo $RESP | grep -o '"statusurl":".*"' | cut -f4 -d\" | tr -d '\' 2>/dev/null)
+if [ -z "$LOAD_STATUS_URL" ]; then
+ echo "No response from the load product REST API call." >>$LOG_DIR/report.txt
exit -1
fi
@@ -217,29 +210,26 @@ fi
echo 'Invoking REST API to check if load products has finished.'
STATUS=""
-until [ "$STATUS" = "complete" ]
-do
-RESP=`curl -s $LOAD_STATUS_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
-sh scripts/check_response.sh "${RESP}" $?
-if [ $? -gt 0 ];then exit -1;fi
-STATUS=`echo $RESP | grep -o '"status":".*"' | cut -f4 -d\"`
-sleep 3
+until [ "$STATUS" = "complete" ]; do
+ RESP=$(curl -s $LOAD_STATUS_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
+ sh scripts/check_response.sh "${RESP}" $?
+ if [ $? -gt 0 ]; then exit -1; fi
+ STATUS=$(echo $RESP | grep -o '"status":".*"' | cut -f4 -d\")
+ sleep 3
done
echo "Load Products finished successfully."
-
# Create JCL that will export Portable Software Instance
# The response is in format "statusurl":"https:\/\/:ZOSMF_URL:post\/restofurl"
echo 'Invoking REST API to export the software instance.'
-RESP=`curl -s $EXPORT_JCL_URL -k -X "POST" -d "$EXPORT_JCL_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS `
+RESP=$(curl -s $EXPORT_JCL_URL -k -X "POST" -d "$EXPORT_JCL_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
sh scripts/check_response.sh "${RESP}" $?
-if [ $? -gt 0 ];then exit -1;fi
-EXPORT_STATUS_URL=`echo $RESP | grep -o '"statusurl":".*"' | cut -f4 -d\" | tr -d '\' 2>/dev/null`
-if [ -z "$EXPORT_STATUS_URL" ]
-then
- echo "No response from the REST API call."
+if [ $? -gt 0 ]; then exit -1; fi
+EXPORT_STATUS_URL=$(echo $RESP | grep -o '"statusurl":".*"' | cut -f4 -d\" | tr -d '\' 2>/dev/null)
+if [ -z "$EXPORT_STATUS_URL" ]; then
+ echo "No response from the export REST API call." >>$LOG_DIR/report.txt
exit -1
fi
@@ -247,96 +237,100 @@ fi
echo 'Invoking REST API to check if export has finished.'
STATUS=""
-until [ "$STATUS" = "complete" ]
-do
-# Status is not shown until the recentage is not 100
-RESP=`curl -s $EXPORT_STATUS_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
-sh scripts/check_response.sh "${RESP}" $?
-if [ $? -gt 0 ];then exit -1;fi
-PERCENTAGE=`echo ${RESP} | grep -o '"percentcomplete":".*"' | cut -f4 -d\"`
+until [ "$STATUS" = "complete" ]; do
+ # Status is not shown until the recentage is not 100
+ RESP=$(curl -s $EXPORT_STATUS_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
+ sh scripts/check_response.sh "${RESP}" $?
+ if [ $? -gt 0 ]; then exit -1; fi
+ PERCENTAGE=$(echo ${RESP} | grep -o '"percentcomplete":".*"' | cut -f4 -d\")
-echo ${PERCENTAGE} "% of the Export JCL created."
+ echo ${PERCENTAGE} "% of the Export JCL created."
-if [ "$PERCENTAGE" = "100" ]
-then
- STATUS=`echo $RESP | grep -o '"status":".*"' | cut -f4 -d\"`
- DSN=`echo $RESP | grep -o '"jcl":.*\]' | cut -f4 -d\"`
+ if [ "$PERCENTAGE" = "100" ]; then
+ STATUS=$(echo $RESP | grep -o '"status":".*"' | cut -f4 -d\")
+ DSN=$(echo $RESP | grep -o '"jcl":.*\]' | cut -f4 -d\")
- echo "The status is: "$STATUS
- # Can be 100% but still running
- if [ "$STATUS" != "complete" ] && [ "$STATUS" != "running" ]
- then
- echo "Status of generation of Export JCL failed."
- exit -1
+ echo "The status is: "$STATUS
+ # Can be 100% but still running
+ if [ "$STATUS" != "complete" ] && [ "$STATUS" != "running" ]; then
+ echo "Status of generation of Export JCL failed." >>$LOG_DIR/report.txt
+ exit -1
+ fi
fi
-fi
-sleep 3
+ sleep 3
done
-if [ -z "$DSN" ]
-then
- echo "The creation of export JCL failed"
+if [ -z "$DSN" ]; then
+ echo "The creation of export JCL failed" >>$LOG_DIR/report.txt
exit -1
fi
echo "Downloading export JCL"
-curl -s ${BASE_URL}/zosmf/restfiles/ds/${DSN} -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS > EXPORT
-
-if [ "$ZOSMF_V" = "2.3" ]
-then
+curl -s ${BASE_URL}/zosmf/restfiles/ds/${DSN} -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS >EXPORT
+
+echo "Showing EXPORT JCL how it looks before the change"
+#if [ "$ZOSMF_V" = "2.3" ]
+#then
+#echo "Changing jobcard and adding SYSAFF"
+#sed "s|//IZUD01EX JOB (ACCOUNT),'NAME'|$JOBST1\n$JOBST2|g" EXPORT > EXPJCL0
+#
+#echo "Changing working directory from /tmp/ to ${WORK_MOUNT} directory where is zFS mounted"
+#sed "s|//SMPWKDIR DD PATH='/tmp/.*'|//SMPWKDIR DD PATH='$WORK_MOUNT'|g" EXPJCL0 > EXPJCL1
+#
+#echo "Switching WORKFLOW and CSI datasets because of internal GIMZIP setting" # It is not working when CSI is in the beginning (1st or 2nd)
+#sed "s|\.CSI|\.1WORKFLOW|g" EXPJCL1 > EXPJCL2
+#sed "s|\.WORKFLOW|\.CSI|g" EXPJCL2 > EXPJCL3
+#sed "s|\.1WORKFLOW|\.WORKFLOW|g" EXPJCL3 > EXPJCL4
+#sed "s|DSNTYPE=LARGE|DSNTYPE=LARGE,VOL=SER=$VOLUME|g" EXPJCL4 > EXPJCL
+#
+#rm ./EXPJCL0
+#rm ./EXPJCL1
+#rm ./EXPJCL2
+#rm ./EXPJCL3
+#rm ./EXPJCL4
+#
+#else
echo "Changing jobcard and adding SYSAFF"
-sed "s|//IZUD01EX JOB (ACCOUNT),'NAME'|$JOBST1\n$JOBST2|g" EXPORT > EXPJCL0
-
-echo "Changing working directory from /tmp/ to ${WORK_MOUNT} directory where is zFS mounted"
-sed "s|//SMPWKDIR DD PATH='/tmp/.*'|//SMPWKDIR DD PATH='$WORK_MOUNT'|g" EXPJCL0 > EXPJCL1
+sed "s|//IZUD01EX JOB (ACCOUNT),'NAME'|$JOBST1\n$JOBST2|g" EXPORT >EXPJCL0
+sed "s|//.*gimzipInputFile.*,|EXPJCL1
+sed "s|// FILEDATA=TEXT| archid=\"ZOS003.ZWE.PSWI.AZWE002.ZFS\"/>|g" EXPJCL1 >EXPJCL2
+sed "s|// DD \*||g" EXPJCL2 >EXPJCL
+# sed "s|ZOS003.ZWE.PSWI.|ZWE.PSWI.|g" EXPJCL3 >EXPJCL
-echo "Switching WORKFLOW and CSI datasets because of internal GIMZIP setting" # It is not working when CSI is in the beginning (1st or 2nd)
-sed "s|\.CSI|\.1WORKFLOW|g" EXPJCL1 > EXPJCL2
-sed "s|\.WORKFLOW|\.CSI|g" EXPJCL2 > EXPJCL3
-sed "s|\.1WORKFLOW|\.WORKFLOW|g" EXPJCL3 > EXPJCL4
-sed "s|DSNTYPE=LARGE|DSNTYPE=LARGE,VOL=SER=$VOLUME|g" EXPJCL4 > EXPJCL
-
-rm ./EXPJCL0
-rm ./EXPJCL1
-rm ./EXPJCL2
-rm ./EXPJCL3
-rm ./EXPJCL4
-
-else
-echo "Changing jobcard and adding SYSAFF"
-sed "s|//IZUD01EX JOB (ACCOUNT),'NAME'|$JOBST1\n$JOBST2|g" EXPORT > EXPJCL
-fi
+#fi
-sh scripts/submit_jcl.sh "`cat EXPJCL`"
-if [ $? -gt 0 ];then exit -1;fi
+sh scripts/submit_jcl.sh "$(cat EXPJCL)"
+if [ $? -gt 0 ]; then exit -1; fi
rm ./EXPJCL
rm ./EXPORT
-# Pax the directory
+# Pax the directory
echo "PAXing the final PSWI."
-echo ${JOBST1} > JCL
-echo ${JOBST2} >> JCL
-echo "//PAXDIREC EXEC PGM=BPXBATCH" >> JCL
-echo "//STDOUT DD SYSOUT=*" >> JCL
-echo "//STDERR DD SYSOUT=*" >> JCL
-echo "//STDPARM DD *" >> JCL
-echo "SH set -x;set -e;" >> JCL
-echo "cd ${EXPORT};" >> JCL
-echo "pax -wv -f ${TMP_MOUNT}/${SWI_NAME}.pax.Z ." >> JCL
-echo "/*" >> JCL
-
-sh scripts/submit_jcl.sh "`cat JCL`"
-if [ $? -gt 0 ];then exit -1;fi
+echo ${JOBST1} >JCL
+echo ${JOBST2} >>JCL
+echo "//PAXDIREC EXEC PGM=BPXBATCH" >>JCL
+echo "//STDOUT DD SYSOUT=*" >>JCL
+echo "//STDERR DD SYSOUT=*" >>JCL
+echo "//STDPARM DD *" >>JCL
+echo "SH set -x;set -e;" >>JCL
+echo "cd ${EXPORT};" >>JCL
+echo "pax -wv -f ${TMP_MOUNT}/${SWI_NAME}.pax.Z ." >>JCL
+echo "/*" >>JCL
+
+sh scripts/submit_jcl.sh "$(cat JCL)"
+if [ $? -gt 0 ]; then exit -1; fi
rm JCL
cd ../.pax
-sshpass -p${ZOSMF_PASS} sftp -o HostKeyAlgorithms=+ssh-rsa -o BatchMode=no -o StrictHostKeyChecking=no -o PubkeyAuthentication=no -b - -P ${ZZOW_SSH_PORT} ${ZOSMF_USER}@${HOST} << EOF
+set -x
+pwd
+sshpass -p${ZOSMF_PASS} sftp -o HostKeyAlgorithms=+ssh-rsa -o BatchMode=no -o StrictHostKeyChecking=no -o PubkeyAuthentication=no -b - -P ${ZZOW_SSH_PORT} ${ZOSMF_USER}@${HOST} <> $LOG_FILE
+
+ REASON=$(echo $RESP | grep -o '"reason":')
+ EMPTY=$(echo $RESP | grep -o '\[\]')
+ MSG=$(echo $RESP | grep -o '"messageText":')
+ if [ -n "$REASON" ] || [ -n "$MSG" ]; then
+ echo "Info: Logging to file ${LOG_FILE}."
+ echo "$RESP" >>$LOG_FILE
fi
- if [ -n "$EMPTY" ]
- then
- echo "Info: Logging to file ${LOG_FILE}."
- echo "$RESP" >> $LOG_FILE
+ if [ -n "$EMPTY" ]; then
+ echo "Info: Logging to file ${LOG_FILE}."
+ echo "$RESP" >>$LOG_FILE
fi
- if [ $RESPCODE -ne 0 ]
- then
- echo "Info: Logging to file ${LOG_FILE}."
- if [ "$RESP" != "" ]
- then
- echo "$RESP" >> $LOG_FILE
+ if [ $RESPCODE -ne 0 ]; then
+ echo "Info: Logging to file ${LOG_FILE}."
+ if [ "$RESP" != "" ]; then
+ echo "$RESP" >>$LOG_FILE
else
- echo "REST API call wasn't successful." >> $LOG_FILE
- fi
+ echo "REST API call wasn't successful." >>$LOG_FILE
+ fi
else
echo "REST API call was successful."
fi
-
- return
- }
+
+ return
+}
# Create a log file
touch $LOG_FILE
@@ -68,69 +63,68 @@ touch $LOG_FILE
# Delete the Software instance
echo 'Invoking REST API to delete the first Software Instance.'
-RESP=`curl -s $DELETE_SWI_URL -k -X "DELETE" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
+RESP=$(curl -s $DELETE_SWI_URL -k -X "DELETE" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
check_response "${RESP}" $?
# Delete data set with export jobs
echo "Invoking REST API to delete ${EXPORT_DSN} data set with export jobs."
-RESP=`curl -s $EXPORT_DSN_URL -k -X "DELETE" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
+RESP=$(curl -s $EXPORT_DSN_URL -k -X "DELETE" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
check_response "${RESP}" $?
# Delete
echo "Invoking REST API to delete ${WORKFLOW_DSN} data set."
-RESP=`curl -s $WORKFLOW_DSN_URL -k -X "DELETE" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
+RESP=$(curl -s $WORKFLOW_DSN_URL -k -X "DELETE" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
check_response "${RESP}" $?
# Unmount and delete
echo "Unmounting and deleting zFS ${TMP_ZFS}."
-echo ${JOBST1} > JCL
-echo ${JOBST2} >> JCL
-echo "//UNMNTZFS EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=50" >> JCL
-echo "//SYSTSPRT DD SYSOUT=*" >> JCL
-echo "//SYSTSOUT DD SYSOUT=*" >> JCL
-echo "//SYSTSIN DD * " >> JCL
-echo "UNMOUNT FILESYSTEM('${TMP_ZFS}') + " >> JCL
-echo "IMMEDIATE" >> JCL
-echo "/*" >> JCL
-echo "//DELTZFST EXEC PGM=IDCAMS" >> JCL
-echo "//SYSPRINT DD SYSOUT=*" >> JCL
-echo "//SYSIN DD *" >> JCL
-echo " DELETE ${TMP_ZFS}" >> JCL
-echo "/*" >> JCL
-
-sh scripts/submit_jcl.sh "`cat JCL`"
+echo ${JOBST1} >JCL
+echo ${JOBST2} >>JCL
+echo "//UNMNTZFS EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=50" >>JCL
+echo "//SYSTSPRT DD SYSOUT=*" >>JCL
+echo "//SYSTSOUT DD SYSOUT=*" >>JCL
+echo "//SYSTSIN DD * " >>JCL
+echo "UNMOUNT FILESYSTEM('${TMP_ZFS}') + " >>JCL
+echo "IMMEDIATE" >>JCL
+echo "/*" >>JCL
+echo "//DELTZFST EXEC PGM=IDCAMS" >>JCL
+echo "//SYSPRINT DD SYSOUT=*" >>JCL
+echo "//SYSIN DD *" >>JCL
+echo " DELETE ${TMP_ZFS}" >>JCL
+echo "/*" >>JCL
+
+sh scripts/submit_jcl.sh "$(cat JCL)"
# Not checking results so the script doesn't fail
rm JCL
-if [ "$ZOSMF_V" = "2.3" ]
-then
-# Unmount and delete
-echo "Unmounting and deleting zFS ${WORK_ZFS}."
-
-echo ${JOBST1} > JCL
-echo ${JOBST2} >> JCL
-echo "//UNMNTZFS EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=50" >> JCL
-echo "//SYSTSPRT DD SYSOUT=*" >> JCL
-echo "//SYSTSOUT DD SYSOUT=*" >> JCL
-echo "//SYSTSIN DD * " >> JCL
-echo "UNMOUNT FILESYSTEM('${WORK_ZFS}') + " >> JCL
-echo "IMMEDIATE" >> JCL
-echo "/*" >> JCL
-echo "//DELTZFST EXEC PGM=IDCAMS" >> JCL
-echo "//SYSPRINT DD SYSOUT=*" >> JCL
-echo "//SYSIN DD *" >> JCL
-echo " DELETE ${WORK_ZFS}" >> JCL
-echo "/*" >> JCL
-
-sh scripts/submit_jcl.sh "`cat JCL`"
-# Not checking results so the script doesn't fail
-rm JCL
-fi
+if [ "$ZOSMF_V" = "2.3" ]; then
+ # Unmount and delete
+ echo "Unmounting and deleting zFS ${WORK_ZFS}."
+
+ echo ${JOBST1} >JCL
+ echo ${JOBST2} >>JCL
+ echo "//UNMNTZFS EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=50" >>JCL
+ echo "//SYSTSPRT DD SYSOUT=*" >>JCL
+ echo "//SYSTSOUT DD SYSOUT=*" >>JCL
+ echo "//SYSTSIN DD * " >>JCL
+ echo "UNMOUNT FILESYSTEM('${WORK_ZFS}') + " >>JCL
+ echo "IMMEDIATE" >>JCL
+ echo "/*" >>JCL
+ echo "//DELTZFST EXEC PGM=IDCAMS" >>JCL
+ echo "//SYSPRINT DD SYSOUT=*" >>JCL
+ echo "//SYSIN DD *" >>JCL
+ echo " DELETE ${WORK_ZFS}" >>JCL
+ echo "/*" >>JCL
+
+ sh scripts/submit_jcl.sh "$(cat JCL)"
+ # Not checking results so the script doesn't fail
+ rm JCL
+fi
echo "Invoking REST API to unmount Zowe zFS ${ZOWE_ZFS} from its mountpoint."
-RESP=`curl -s $ACTION_ZOWE_ZFS_URL -k -X "PUT" -d "$UNMOUNT_ZFS_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
+RESP=$(curl -s $ACTION_ZOWE_ZFS_URL -k -X "PUT" -d "$UNMOUNT_ZFS_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
check_response "${RESP}" $?
diff --git a/pswi/06_test_cleanup.sh b/pswi/06_test_cleanup.sh
index f426f11ed5..a45144a454 100644
--- a/pswi/06_test_cleanup.sh
+++ b/pswi/06_test_cleanup.sh
@@ -2,7 +2,7 @@
#version=1.0
export BASE_URL="${ZOSMF_URL}:${ZOSMF_PORT}"
-LOG_FILE=${LOGDIR}log_pswi_"`date +%y-%j-%H-%M-%S`"
+LOG_FILE=$LOG_DIR/log_test_cleanup.txt
echo ""
echo ""
@@ -20,166 +20,156 @@ echo "ACCOUNT :" $ACCOUNT
echo "SYSAFF :" $SYSAFF
echo "z/OSMF version :" $ZOSMF_V
-
# URLs
DELETE_PSWI_URL="${BASE_URL}/zosmf/swmgmt/pswi/${ZOSMF_SYSTEM}/${PSWI}"
WORKFLOW_LIST_URL="${BASE_URL}/zosmf/workflow/rest/1.0/workflows?owner=${ZOSMF_USER}&workflowName=${WORKFLOW_NAME}.*"
DELETE_DEPL_SWI_URL="${BASE_URL}/zosmf/swmgmt/swi/${ZOSMF_SYSTEM}/${DEPLOY_NAME}"
-
check_response() {
RESP=$1
RESPCODE=$2
-
- REASON=`echo $RESP | grep -o '"reason":'`
- EMPTY=`echo $RESP | grep -o '\[\]'`
- MSG=`echo $RESP | grep -o '"messageText":'`
- if [ -n "$REASON" ] || [ -n "$MSG" ]
- then
- echo "Info: Logging to file ${LOG_FILE}."
- echo "$RESP" >> $LOG_FILE
- fi
- if [ -n "$EMPTY" ]
- then
- echo "Info: Logging to file ${LOG_FILE}."
- echo "$RESP" >> $LOG_FILE
+
+ REASON=$(echo $RESP | grep -o '"reason":')
+ EMPTY=$(echo $RESP | grep -o '\[\]')
+ MSG=$(echo $RESP | grep -o '"messageText":')
+ if [ -n "$REASON" ] || [ -n "$MSG" ]; then
+ echo "Info: Logging to file ${LOG_FILE}."
+ echo "$RESP" >>$LOG_FILE
+ fi
+ if [ -n "$EMPTY" ]; then
+ echo "Info: Logging to file ${LOG_FILE}."
+ echo "$RESP" >>$LOG_FILE
fi
- if [ $RESPCODE -ne 0 ]
- then
- echo "Info: Logging to file ${LOG_FILE}."
- if [ -n "$RESP" ]
- then
- echo "$RESP" >> $LOG_FILE
+ if [ $RESPCODE -ne 0 ]; then
+ echo "Info: Logging to file ${LOG_FILE}."
+ if [ -n "$RESP" ]; then
+ echo "$RESP" >>$LOG_FILE
else
- echo "REST API call wasn't successful." >> $LOG_FILE
- fi
+ echo "REST API call wasn't successful." >>$LOG_FILE
+ fi
else
echo "REST API call was successful."
fi
-
- return
- }
+
+ return
+}
# Create a log file
touch $LOG_FILE
-
+
# Delete the Software instance
echo "Invoking REST API to delete the Software Instance created by deployment."
-RESP=`curl -s $DELETE_DEPL_SWI_URL -k -X "DELETE" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
+RESP=$(curl -s $DELETE_DEPL_SWI_URL -k -X "DELETE" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
check_response "${RESP}" $?
-if [ "$ZOSMF_V" = "2.4" ]
-then
+if [ "$ZOSMF_V" = "2.4" ]; then
-# Delete the Portable Software Instance
-echo "Invoking REST API to delete the portable software instance."
+ # Delete the Portable Software Instance
+ echo "Invoking REST API to delete the portable software instance."
-RESP=`curl -s $DELETE_PSWI_URL -k -X "DELETE" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
-check_response "${RESP}" $?
+ RESP=$(curl -s $DELETE_PSWI_URL -k -X "DELETE" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
+ check_response "${RESP}" $?
fi
# Unmount and delete
echo "Unmounting and deleting zFS ${TMP_ZFS}."
-echo ${JOBST1} > JCL
-echo ${JOBST2} >> JCL
-echo "//UNMNTZFS EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=50" >> JCL
-echo "//SYSTSPRT DD SYSOUT=*" >> JCL
-echo "//SYSTSOUT DD SYSOUT=*" >> JCL
-echo "//SYSTSIN DD * " >> JCL
-echo "UNMOUNT FILESYSTEM('${TMP_ZFS}') + " >> JCL
-echo "IMMEDIATE" >> JCL
-echo "/*" >> JCL
-echo "//DELTZFST EXEC PGM=IDCAMS" >> JCL
-echo "//SYSPRINT DD SYSOUT=*" >> JCL
-echo "//SYSIN DD *" >> JCL
-echo " DELETE ${TMP_ZFS}" >> JCL
-echo "/*" >> JCL
-
-sh scripts/submit_jcl.sh "`cat JCL`"
+echo ${JOBST1} >JCL
+echo ${JOBST2} >>JCL
+echo "//UNMNTZFS EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=50" >>JCL
+echo "//SYSTSPRT DD SYSOUT=*" >>JCL
+echo "//SYSTSOUT DD SYSOUT=*" >>JCL
+echo "//SYSTSIN DD * " >>JCL
+echo "UNMOUNT FILESYSTEM('${TMP_ZFS}') + " >>JCL
+echo "IMMEDIATE" >>JCL
+echo "/*" >>JCL
+echo "//DELTZFST EXEC PGM=IDCAMS" >>JCL
+echo "//SYSPRINT DD SYSOUT=*" >>JCL
+echo "//SYSIN DD *" >>JCL
+echo " DELETE ${TMP_ZFS}" >>JCL
+echo "/*" >>JCL
+
+sh scripts/submit_jcl.sh "$(cat JCL)"
# Not checking results so the script doesn't fail
rm JCL
-if [ "$ZOSMF_V" = "2.3" ]
-then
-# Unmount and delete
-echo "Unmounting and deleting zFS ${WORK_ZFS}."
-
-echo ${JOBST1} > JCL
-echo ${JOBST2} >> JCL
-echo "//UNMNTZFS EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=50" >> JCL
-echo "//SYSTSPRT DD SYSOUT=*" >> JCL
-echo "//SYSTSOUT DD SYSOUT=*" >> JCL
-echo "//SYSTSIN DD * " >> JCL
-echo "UNMOUNT FILESYSTEM('${WORK_ZFS}') + " >> JCL
-echo "IMMEDIATE" >> JCL
-echo "/*" >> JCL
-echo "//DELTZFST EXEC PGM=IDCAMS" >> JCL
-echo "//SYSPRINT DD SYSOUT=*" >> JCL
-echo "//SYSIN DD *" >> JCL
-echo " DELETE ${WORK_ZFS}" >> JCL
-echo "/*" >> JCL
-
-sh scripts/submit_jcl.sh "`cat JCL`"
-# Not checking results so the script doesn't fail
-rm JCL
-fi
+if [ "$ZOSMF_V" = "2.3" ]; then
+ # Unmount and delete
+ echo "Unmounting and deleting zFS ${WORK_ZFS}."
+
+ echo ${JOBST1} >JCL
+ echo ${JOBST2} >>JCL
+ echo "//UNMNTZFS EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=50" >>JCL
+ echo "//SYSTSPRT DD SYSOUT=*" >>JCL
+ echo "//SYSTSOUT DD SYSOUT=*" >>JCL
+ echo "//SYSTSIN DD * " >>JCL
+ echo "UNMOUNT FILESYSTEM('${WORK_ZFS}') + " >>JCL
+ echo "IMMEDIATE" >>JCL
+ echo "/*" >>JCL
+ echo "//DELTZFST EXEC PGM=IDCAMS" >>JCL
+ echo "//SYSPRINT DD SYSOUT=*" >>JCL
+ echo "//SYSIN DD *" >>JCL
+ echo " DELETE ${WORK_ZFS}" >>JCL
+ echo "/*" >>JCL
+
+ sh scripts/submit_jcl.sh "$(cat JCL)"
+ # Not checking results so the script doesn't fail
+ rm JCL
+fi
# Unmount and delete
echo "Unmounting and deleting zFS ${TEST_HLQ}.ZFS."
-echo ${JOBST1} > JCL
-echo ${JOBST2} >> JCL
-echo "//UNMNTZFS EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=50" >> JCL
-echo "//SYSTSPRT DD SYSOUT=*" >> JCL
-echo "//SYSTSOUT DD SYSOUT=*" >> JCL
-echo "//SYSTSIN DD * " >> JCL
-echo "UNMOUNT FILESYSTEM('${TEST_HLQ}.ZFS') + " >> JCL
-echo "IMMEDIATE" >> JCL
-echo "/*" >> JCL
-echo "//DELTZFST EXEC PGM=IDCAMS" >> JCL
-echo "//SYSPRINT DD SYSOUT=*" >> JCL
-echo "//SYSIN DD *" >> JCL
-echo " DELETE ${TEST_HLQ}.ZFS" >> JCL
-echo "/*" >> JCL
-
-sh scripts/submit_jcl.sh "`cat JCL`"
+echo ${JOBST1} >JCL
+echo ${JOBST2} >>JCL
+echo "//UNMNTZFS EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=50" >>JCL
+echo "//SYSTSPRT DD SYSOUT=*" >>JCL
+echo "//SYSTSOUT DD SYSOUT=*" >>JCL
+echo "//SYSTSIN DD * " >>JCL
+echo "UNMOUNT FILESYSTEM('${TEST_HLQ}.ZFS') + " >>JCL
+echo "IMMEDIATE" >>JCL
+echo "/*" >>JCL
+echo "//DELTZFST EXEC PGM=IDCAMS" >>JCL
+echo "//SYSPRINT DD SYSOUT=*" >>JCL
+echo "//SYSIN DD *" >>JCL
+echo " DELETE ${TEST_HLQ}.ZFS" >>JCL
+echo "/*" >>JCL
+
+sh scripts/submit_jcl.sh "$(cat JCL)"
# Not checking results so the script doesn't fail
rm JCL
# Delete deployed datasets
echo "Deleting deployed datasets."
-echo ${JOBST1} > JCL
-echo ${JOBST2} >> JCL
-echo "//DELTZOWE EXEC PGM=IDCAMS" >> JCL
-echo "//SYSPRINT DD SYSOUT=*" >> JCL
-echo "//SYSIN DD *" >> JCL
-echo " DELETE ${TEST_HLQ}.** MASK" >> JCL
-echo " SET MAXCC=0" >> JCL
-echo "/*" >> JCL
+echo ${JOBST1} >JCL
+echo ${JOBST2} >>JCL
+echo "//DELTZOWE EXEC PGM=IDCAMS" >>JCL
+echo "//SYSPRINT DD SYSOUT=*" >>JCL
+echo "//SYSIN DD *" >>JCL
+echo " DELETE ${TEST_HLQ}.** MASK" >>JCL
+echo " SET MAXCC=0" >>JCL
+echo "/*" >>JCL
-sh scripts/submit_jcl.sh "`cat JCL`"
+sh scripts/submit_jcl.sh "$(cat JCL)"
rm JCL
-if [ "$ZOSMF_V" = "2.4" ]
-then
-# Delete Post-deployment workflow in z/OSMF
-echo "Invoking REST API to delete Post-deployment workflows."
+if [ "$ZOSMF_V" = "2.4" ]; then
+ # Delete Post-deployment workflow in z/OSMF
+ echo "Invoking REST API to delete Post-deployment workflows."
-# Get workflowKey for Post-deployment workflow owned by user
-RESP=`curl -s $WORKFLOW_LIST_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
-check_response "${RESP}" $?
-WFKEYS=`echo $RESP | sed 's/},/},\n/g' | grep -oP '"workflowKey":".*"' | cut -f4 -d\"`
+ # Get workflowKey for Post-deployment workflow owned by user
+ RESP=$(curl -s $WORKFLOW_LIST_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
+ check_response "${RESP}" $?
+ WFKEYS=$(echo $RESP | sed 's/},/},\n/g' | grep -oP '"workflowKey":".*"' | cut -f4 -d\")
-IFS=$'\n'
-for KEY in $WFKEYS
-do
+ IFS=$'\n'
+ for KEY in $WFKEYS; do
-echo "Deleting a workflow."
-RESP=`curl -s ${BASE_URL}/zosmf/workflow/rest/1.0/workflows/${KEY} -k -X "DELETE" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
-check_response "${RESP}" $?
-
-done
+ echo "Deleting a workflow."
+ RESP=$(curl -s ${BASE_URL}/zosmf/workflow/rest/1.0/workflows/${KEY} -k -X "DELETE" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
+ check_response "${RESP}" $?
+
+ done
fi
diff --git a/pswi/07_smpe_cleanup.sh b/pswi/07_smpe_cleanup.sh
index 53106174b3..97e7830b9f 100644
--- a/pswi/07_smpe_cleanup.sh
+++ b/pswi/07_smpe_cleanup.sh
@@ -2,7 +2,7 @@
#version=1.0
export BASE_URL="${ZOSMF_URL}:${ZOSMF_PORT}"
-LOG_FILE=${LOGDIR}log_pswi_"`date +%y-%j-%H-%M-%S`"
+LOG_FILE=$LOG_DIR/log_pswi_smpe_cleanup.txt
echo ""
echo ""
@@ -17,60 +17,56 @@ echo "Directory for logs :" $LOGDIR
# URLs
ACTION_ZOWE_ZFS_URL="${BASE_URL}/zosmf/restfiles/mfs/${ZOWE_ZFS}"
-# JSONs
+# JSONs
UNMOUNT_ZFS_JSON='{"action":"unmount"}'
check_response() {
RESP=$1
RESPCODE=$2
-
- REASON=`echo $RESP | grep -o '"reason":'`
- EMPTY=`echo $RESP | grep -o '\[\]'`
- MSG=`echo $RESP | grep -o '"messageText":'`
- if [ -n "$REASON" ] || [ -n "$MSG" ]
- then
- echo "Info: Logging to file ${LOG_FILE}."
- echo "$RESP" >> $LOG_FILE
+
+ REASON=$(echo $RESP | grep -o '"reason":')
+ EMPTY=$(echo $RESP | grep -o '\[\]')
+ MSG=$(echo $RESP | grep -o '"messageText":')
+ if [ -n "$REASON" ] || [ -n "$MSG" ]; then
+ echo "Info: Logging to file ${LOG_FILE}."
+ echo "$RESP" >>$LOG_FILE
fi
- if [ -n "$EMPTY" ]
- then
- echo "Info: Logging to file ${LOG_FILE}."
- echo "$RESP" >> $LOG_FILE
+ if [ -n "$EMPTY" ]; then
+ echo "Info: Logging to file ${LOG_FILE}."
+ echo "$RESP" >>$LOG_FILE
fi
- if [ $RESPCODE -ne 0 ]
- then
- echo "Info: Logging to file ${LOG_FILE}."
- if [ -n "$RESP" ]
- then
- echo "$RESP" >> $LOG_FILE
+ if [ $RESPCODE -ne 0 ]; then
+ echo "Info: Logging to file ${LOG_FILE}."
+ if [ -n "$RESP" ]; then
+ echo "$RESP" >>$LOG_FILE
else
- echo "REST API call wasn't successful." >> $LOG_FILE
- fi
+ echo "REST API call wasn't successful." >>$LOG_FILE
+ fi
else
echo "REST API call was successful."
fi
-
- return
- }
+
+ return
+}
# Create a log file
touch $LOG_FILE
echo "Invoking REST API to unmount SMPE zFS ${ZOWE_ZFS} from its mountpoint."
-RESP=`curl -s $ACTION_ZOWE_ZFS_URL -k -X "PUT" -d "$UNMOUNT_ZFS_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
+RESP=$(curl -s $ACTION_ZOWE_ZFS_URL -k -X "PUT" -d "$UNMOUNT_ZFS_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
check_response "${RESP}" $?
# Delete SMPE datasets
-echo ${JOBST1} > JCL
-echo ${JOBST2} >> JCL
-echo "//DELTZOWE EXEC PGM=IDCAMS" >> JCL
-echo "//SYSPRINT DD SYSOUT=*" >> JCL
-echo "//SYSIN DD *" >> JCL
-echo " DELETE ${CSIHLQ}.** MASK" >> JCL
-echo " SET MAXCC=0" >> JCL
-echo "/*" >> JCL
+echo ${JOBST1} >JCL
+echo ${JOBST2} >>JCL
+echo "//DELTZOWE EXEC PGM=IDCAMS" >>JCL
+echo "//SYSPRINT DD SYSOUT=*" >>JCL
+echo "//SYSIN DD *" >>JCL
+echo " DELETE ${CSIHLQ}.** MASK" >>JCL
+echo " SET MAXCC=0" >>JCL
+echo "/*" >>JCL
-sh scripts/submit_jcl.sh "`cat JCL`"
+sh scripts/submit_jcl.sh "$(cat JCL)"
rm JCL
diff --git a/pswi/08_presmpe_cleanup.sh b/pswi/08_presmpe_cleanup.sh
index df0a83805c..df7521e12a 100644
--- a/pswi/08_presmpe_cleanup.sh
+++ b/pswi/08_presmpe_cleanup.sh
@@ -2,7 +2,7 @@
#version=1.0
export BASE_URL="${ZOSMF_URL}:${ZOSMF_PORT}"
-LOG_FILE=${LOGDIR}log_pswi_"`date +%y-%j-%H-%M-%S`"
+LOG_FILE=$LOG_DIR/log_pswi_presmpe_cleanup
echo ""
echo ""
@@ -17,49 +17,45 @@ echo "Directory for logs :" $LOGDIR
check_response() {
RESP=$1
RESPCODE=$2
-
- REASON=`echo $RESP | grep -o '"reason":'`
- EMPTY=`echo $RESP | grep -o '\[\]'`
- MSG=`echo $RESP | grep -o '"messageText":'`
- if [ -n "$REASON" ] || [ -n "$MSG" ]
- then
- echo "Info: Logging to file ${LOG_FILE}."
- echo "$RESP" >> $LOG_FILE
+
+ REASON=$(echo $RESP | grep -o '"reason":')
+ EMPTY=$(echo $RESP | grep -o '\[\]')
+ MSG=$(echo $RESP | grep -o '"messageText":')
+ if [ -n "$REASON" ] || [ -n "$MSG" ]; then
+ echo "Info: Logging to file ${LOG_FILE}."
+ echo "$RESP" >>$LOG_FILE
fi
- if [ -n "$EMPTY" ]
- then
- echo "Info: Logging to file ${LOG_FILE}."
- echo "$RESP" >> $LOG_FILE
+ if [ -n "$EMPTY" ]; then
+ echo "Info: Logging to file ${LOG_FILE}."
+ echo "$RESP" >>$LOG_FILE
fi
- if [ $RESPCODE -ne 0 ]
- then
- echo "Info: Logging to file ${LOG_FILE}."
- if [ -n "$RESP" ]
- then
- echo "$RESP" >> $LOG_FILE
+ if [ $RESPCODE -ne 0 ]; then
+ echo "Info: Logging to file ${LOG_FILE}."
+ if [ -n "$RESP" ]; then
+ echo "$RESP" >>$LOG_FILE
else
- echo "REST API call wasn't successful." >> $LOG_FILE
- fi
+ echo "REST API call wasn't successful." >>$LOG_FILE
+ fi
else
echo "REST API call was successful."
fi
-
- return
- }
+
+ return
+}
# Create a log file
touch $LOG_FILE
# Delete pre-SMPE datasets
-echo ${JOBST1} > JCL
-echo ${JOBST2} >> JCL
-echo "//DELTZOWE EXEC PGM=IDCAMS" >> JCL
-echo "//SYSPRINT DD SYSOUT=*" >> JCL
-echo "//SYSIN DD *" >> JCL
-echo " DELETE ${SMPE}.** MASK" >> JCL
-echo " SET MAXCC=0" >> JCL
-echo "/*" >> JCL
+echo ${JOBST1} >JCL
+echo ${JOBST2} >>JCL
+echo "//DELTZOWE EXEC PGM=IDCAMS" >>JCL
+echo "//SYSPRINT DD SYSOUT=*" >>JCL
+echo "//SYSIN DD *" >>JCL
+echo " DELETE ${SMPE}.** MASK" >>JCL
+echo " SET MAXCC=0" >>JCL
+echo "/*" >>JCL
-sh scripts/submit_jcl.sh "`cat JCL`"
+sh scripts/submit_jcl.sh "$(cat JCL)"
rm JCL
diff --git a/pswi/PSWI-marist.sh b/pswi/PSWI-marist.sh
index 80441508af..98c269be04 100755
--- a/pswi/PSWI-marist.sh
+++ b/pswi/PSWI-marist.sh
@@ -1,4 +1,4 @@
-export ZOSMF_URL="https://zzow07.zowe.marist.cloud"
+export ZOSMF_URL="https://zzow10.zowe.marist.cloud"
export ZOSMF_PORT=10443
export ZOSMF_SYSTEM="S0W1"
export DIR="/u/zowead2"
@@ -9,7 +9,9 @@ export VOLUME="ZOS003"
export TEST_HLQ="ZOWEAD2.PSWIT"
export SYSAFF="(S0W1)"
export ACCOUNT=1
-
+CURR_TIME=$(date +%s)
+export LOG_DIR="logs/$CURR_TIME"
+mkdir -p $LOG_DIR
# Variables for workflows
# SMPE
export TZONE="TZONE"
@@ -30,7 +32,7 @@ export TEST_MOUNT="${DIR}/test_mount"
export EXPORT="${TMP_MOUNT}/export/"
export WORK_MOUNT="${DIR}/work"
export WORK_ZFS="ZOWEAD2.WORK.ZFS"
-export ZOSMF_V="2.3"
+export ZOSMF_V="3.1"
export SMPE_WF_NAME="ZOWE_SMPE_WF"
export PTF_WF_NAME="ZOWE_PTF_WF"
export HOST=${ZOSMF_URL#https:\/\/}
@@ -41,7 +43,7 @@ if [ -f ../.pax/zowe-smpe.zip ]; then
mkdir -p "unzipped"
unzip ../.pax/zowe-smpe.zip -d unzipped
else
- echo "zowe-smpe file not found"
+ echo "zowe-smpe file not found" >>"$LOG_DIR/report.txt"
exit -1
fi
@@ -73,7 +75,7 @@ else
if [ -f ../.pax/${FMID}.zip ]; then
unzip ../.pax/${FMID}.zip -d unzipped
else
- echo "File with FMID not found"
+ echo "File with FMID not found" >>"$LOG_DIR/report.txt"
exit -1
fi
fi
@@ -147,17 +149,17 @@ echo ""
echo ""
if [ $smpe -ne 0 ] || [ $ptf -ne 0 ] || [ $create -ne 0 ] || [ $test -ne 0 ] || [ $presmpe -ne 0 ]; then
- echo "Build unsuccessful!"
+ echo "Build unsuccessful!" >>"$LOG_DIR/report.txt"
if [ $presmpe -ne 0 ]; then
- echo "Pre-SMP/E wasn't successful."
+ echo "Pre-SMP/E wasn't successful." >>"$LOG_DIR/report.txt"
elif [ $smpe -ne 0 ]; then
- echo "SMP/E wasn't successful."
+ echo "SMP/E wasn't successful." >>"$LOG_DIR/report.txt"
elif [ $ptf -ne 0 ]; then
- echo "Applying PTFs wasn't successful."
+ echo "Applying PTFs wasn't successful." >>"$LOG_DIR/report.txt"
elif [ $create -ne 0 ]; then
- echo "Creation of PSWI wasn't successful."
+ echo "Creation of PSWI wasn't successful." >>"$LOG_DIR/report.txt"
elif [ $test -ne 0 ]; then
- echo "Testing of PSWI wasn't successful."
+ echo "Testing of PSWI wasn't successful." >>"$LOG_DIR/report.txt"
fi
exit -1
else
diff --git a/pswi/scripts/check_response.sh b/pswi/scripts/check_response.sh
index b9b280848e..2a2deb11cd 100644
--- a/pswi/scripts/check_response.sh
+++ b/pswi/scripts/check_response.sh
@@ -1,17 +1,15 @@
RESP=$1
RESPCODE=$2
-
-REASON=`echo $RESP | grep -o '"reason":'`
-MSG=`echo $RESP | grep -o '"messageText":'`
-if [ -n "$REASON" ] || [ -n "$MSG" ]
-then
- echo $RESP
+
+REASON=$(echo $RESP | grep -o '"reason":')
+MSG=$(echo $RESP | grep -o '"messageText":')
+if [ -n "$REASON" ] || [ -n "$MSG" ]; then
+ echo $RESP >>$LOG_DIR/report.txt
exit -1
-fi
-if [ $RESPCODE -ne 0 ]
-then
- echo "REST API call failed."
- echo $RESP
+fi
+if [ $RESPCODE -ne 0 ]; then
+ echo "REST API call failed." >>$LOG_DIR/report.txt
+ echo $RESP >>$LOG_DIR/report.txt
exit -1
else
echo "REST API call was successful."
diff --git a/pswi/scripts/deploy_test_2_3.py b/pswi/scripts/deploy_test_2_3.py
index f06a631379..152223aedf 100644
--- a/pswi/scripts/deploy_test_2_3.py
+++ b/pswi/scripts/deploy_test_2_3.py
@@ -196,9 +196,12 @@ def create_swi(self):
{"name": "ZOWE Mount Workflow",
"description": "This workflow performs mount action of ZOWE zFS.",
"location": {"dsname": self.hlq + ".WORKFLOW(ZWEWRF02)"}},
- {"name": "ZOWE Configuration of Zowe 2.0",
- "description": "This workflow configures Zowe v2.0.",
- "location": {"dsname": self.hlq + ".WORKFLOW(ZWECONF)"}},
+ {"name": "Stand-alone Zowe API ML Configuration",
+ "description": "This workflow configures only API ML for Zowe 2.0.",
+ "location": {"dsname": self.hlq + ".WORKFLOW(ZWEAMLCF)"}},
+ {"name": "Full Zowe server-side configuration for Zowe 2.0",
+ "description": "This workflow configures all Zowe server-side components for Zowe v2.0.",
+ "location": {"dsname": self.hlq + ".WORKFLOW(ZWECONF)"}},
{"name":"ZOWE Creation of CSR request workflow",
"description":"This workflow creates a certificate sign request.",
"location": {"dsname": self.hlq + ".WORKFLOW(ZWECRECR)"}},
diff --git a/pswi/scripts/spool_files.sh b/pswi/scripts/spool_files.sh
index ff8fd0df4f..289fe3ce8c 100644
--- a/pswi/scripts/spool_files.sh
+++ b/pswi/scripts/spool_files.sh
@@ -1,22 +1,23 @@
# $1 = JOBNAME
# $2 = JOBID
-
+
IDENTIFIER="${1}/${2}"
JOBNAME=${1}
+JOB_OUTPUT_DIR=$LOG_DIR/jobs/output
+JOB_OUTPUT_FILE=$JOB_OUTPUT_DIR/$JOBNAME_$2
-RESP=`curl -s ${BASE_URL}/zosmf/restjobs/jobs/${IDENTIFIER}/files -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
+RESP=$(curl -s ${BASE_URL}/zosmf/restjobs/jobs/${IDENTIFIER}/files -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
sh scripts/check_response.sh "$RESP" $?
-if [ $? -gt 0 ];then exit $?;fi
+if [ $? -gt 0 ]; then exit $?; fi
echo $RESP | sed 's/},/},\n/g' | grep -o '"records-url":".*records"' | cut -f4 -d\" | tr -d '\' 2>/dev/null 1>urls
-
-mkdir -p $JOBNAME
-while read -r line
-do
- curl -s $line?mode=text -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS >> $IDENTIFIER
-done < urls
-
+mkdir -p $JOB_OUTPUT_DIR
+
+while read -r line; do
+ curl -s $line?mode=text -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS >>$JOB_OUTPUT_FILE
+done /dev/null`
-if [ -z "$JOB_STATUS_URL" ]
-then
- echo "No response from the REST API call."
+JOB_STATUS_URL=$(echo $RESP | grep -o '"url":".*"' | cut -f4 -d\" | tr -d '\' 2>/dev/null)
+if [ -z "$JOB_STATUS_URL" ]; then
+ echo "No response from the REST API call." >>$LOG_DIR/report.txt
exit -1
fi
-JOBID=`echo $RESP | grep -o '"jobid":".*"' | cut -f4 -d\"`
-JOBNAME=`echo $RESP | grep -o '"jobname":".*"' | cut -f4 -d\"`
+JOBID=$(echo $RESP | grep -o '"jobid":".*"' | cut -f4 -d\")
+JOBNAME=$(echo $RESP | grep -o '"jobname":".*"' | cut -f4 -d\")
echo "Job ${JOBNAME} ${JOBID} submitted."
@@ -23,14 +25,12 @@ echo "Job ${JOBNAME} ${JOBID} submitted."
echo "Invoking REST API to check if the job ${JOBNAME} ${JOBID} has finished."
STATUS=""
-until [ "$STATUS" = "OUTPUT" ]
-do
- RESP=`curl -s $JOB_STATUS_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
+until [ "$STATUS" = "OUTPUT" ]; do
+ RESP=$(curl -s $JOB_STATUS_URL -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
sh scripts/check_response.sh "${RESP}" $?
- STATUS=`echo $RESP | grep -o '"status":".*"' | cut -f4 -d\"`
+ STATUS=$(echo $RESP | grep -o '"status":".*"' | cut -f4 -d\")
echo "The status of the job is ${STATUS}"
- if [ -f EXPJCL ] # If file with export JCL exists that mean that export JCL was submitted and it needs to wait longer
- then
+ if [ -f EXPJCL ]; then # If file with export JCL exists that mean that export JCL was submitted and it needs to wait longer
sleep 30
else
sleep 5
@@ -38,18 +38,19 @@ do
done
# Check return code
-RC=`echo $RESP | grep -o '"retcode":".*"' | cut -f4 -d\"`
+RC=$(echo $RESP | grep -o '"retcode":".*"' | cut -f4 -d\")
echo "Return code of the job ${JOBNAME} ${JOBID} is ${RC}."
-
+
# Download spool files
echo "Downloading spool files."
sh scripts/spool_files.sh $JOBNAME $JOBID
-
-if [ "$RC" = "CC 0000" ]
-then
+
+echo "$JCL" >>$JCL_LOG_DIR/JCL_$JOBNAME_$JOBID
+
+if [ "$RC" = "CC 0000" ]; then
echo "${JOBNAME} ${JOBID} was completed."
else
- echo "${JOBNAME} ${JOBID} failed."
- cat $JOBNAME/$JOBID
+ echo "${JOBNAME} ${JOBID} failed." >>$LOG_DIR/report.txt
+ cat $JOBNAME/$JOBID >>$LOG_DIR/report.txt
exit -1
-fi
+fi
diff --git a/pswi/scripts/tmp_mounts.sh b/pswi/scripts/tmp_mounts.sh
index c2e5f89370..9408588af8 100644
--- a/pswi/scripts/tmp_mounts.sh
+++ b/pswi/scripts/tmp_mounts.sh
@@ -6,57 +6,50 @@ MOUNT=${2}
MOUNTED=false
echo "Checking if file system ${ZFS} is mounted."
-RESP=`curl -s "${BASE_URL}/zosmf/restfiles/mfs?fsname=${ZFS}" -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
-MOUNTP=`echo $RESP | grep -o '"mountpoint":".*"' | cut -f4 -d\"`
+RESP=$(curl -s "${BASE_URL}/zosmf/restfiles/mfs?fsname=${ZFS}" -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
+MOUNTP=$(echo $RESP | grep -o '"mountpoint":".*"' | cut -f4 -d\")
NEW_ZFS_JSON='{"cylsPri":2000,"cylsSec": 140,"volumes":[ "'${VOLUME}'" ]}'
-
-
-if [ -n "$MOUNTP" ]
-then
+
+if [ -n "$MOUNTP" ]; then
# Check if temp zFS is mounted to given mount point
- if [ "$MOUNTP" = "$MOUNT" ]
- then
+ if [ "$MOUNTP" = "$MOUNT" ]; then
echo "${MOUNT} with zFS ${ZFS} mounted will be used as is."
MOUNTED=true
else
- echo "The file system ${ZFS} exists but is mounted to different mount point(${MOUNTP})."
- echo "Use different name of zFS or ${MOUNTP} for mount point."
+ echo "The file system ${ZFS} exists but is mounted to different mount point(${MOUNTP})." >>$LOG_DIR/report.txt
+ echo "Use different name of zFS or ${MOUNTP} for mount point." >>$LOG_DIR/report.txt
exit -1
fi
else
echo "Temporary zFS isn't mounted. Now checking if mount point has any other zFS mounted."
- RESP=`curl -s "${BASE_URL}/zosmf/restfiles/mfs?path=${MOUNT}" -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
+ RESP=$(curl -s "${BASE_URL}/zosmf/restfiles/mfs?path=${MOUNT}" -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
sh scripts/check_response.sh "${RESP}" $?
- if [ $? -gt 0 ];then exit -1;fi
- MOUNTZFS=`echo $RESP | grep -o "name":".*" | cut -f4 -d\"`
- if [ -n "$MOUNTZFS" ]
- then
+ if [ $? -gt 0 ]; then exit -1; fi
+ MOUNTZFS=$(echo $RESP | grep -o "name":".*" | cut -f4 -d\")
+ if [ -n "$MOUNTZFS" ]; then
# If zFS is not mounted to the mount point then this mount point has different zFS
- echo "The mount point ${MOUNT} has different zFS (${MOUNTZFS}) mounted."
- echo "Use different mount point (not ${MOUNT})."
- echo "Or use ${MOUNTZFS} for zFS."
+ echo "The mount point ${MOUNT} has different zFS (${MOUNTZFS}) mounted." >>$LOG_DIR/report.txt
+ echo "Use different mount point (not ${MOUNT})." >>$LOG_DIR/report.txt
+ echo "Or use ${MOUNTZFS} for zFS." >>$LOG_DIR/report.txt
exit -1
fi
fi
-
-if [ "$MOUNTED" = false ]
-then
+if [ "$MOUNTED" = false ]; then
# Check if data set exists
- echo "Checking if temporary zFS ${TMP_ZFS} exists."
- RESP=`curl -s "${BASE_URL}/zosmf/restfiles/ds?dslevel=${ZFS}" -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
+ echo "Checking if temporary zFS ${ZFS} exists."
+ RESP=$(curl -s "${BASE_URL}/zosmf/restfiles/ds?dslevel=${ZFS}" -k -X "GET" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
sh scripts/check_response.sh "${RESP}" $?
- if [ $? -gt 0 ];then exit -1;fi
- ZFS_COUNT=`echo $RESP | grep -o '"returnedRows":[0-9]*' | cut -f2 -d:`
- if [ "$ZFS_COUNT" = "0" ]
- then
+ if [ $? -gt 0 ]; then exit -1; fi
+ ZFS_COUNT=$(echo $RESP | grep -o '"returnedRows":[0-9]*' | cut -f2 -d:)
+ if [ "$ZFS_COUNT" = "0" ]; then
# Create new zFS if not
echo "${ZFS} does not exists."
echo "Creating new zFS ${ZFS}."
- RESP=`curl -s "${BASE_URL}/zosmf/restfiles/mfs/zfs/${ZFS}" -k -X "POST" -d "$NEW_ZFS_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS`
+ RESP=$(curl -s "${BASE_URL}/zosmf/restfiles/mfs/zfs/${ZFS}" -k -X "POST" -d "$NEW_ZFS_JSON" -H "Content-Type: application/json" -H "X-CSRF-ZOSMF-HEADER: A" --user $ZOSMF_USER:$ZOSMF_PASS)
sh scripts/check_response.sh "${RESP}" $?
- if [ $? -gt 0 ];then exit -1;fi
+ if [ $? -gt 0 ]; then exit -1; fi
else
#TODO: also check the first dsname because it can be something that just has tmp_zfs as HLQ
echo
@@ -64,25 +57,25 @@ then
# Mount zFS to TMP_MOUNT
echo "Mounting zFS ${ZFS} to ${MOUNT} mount point with JCL because REST API doesn't allow AGGRGROW parm."
-echo ${JOBST1} > JCL
-echo ${JOBST2} >> JCL
-echo "//MKDIR EXEC PGM=BPXBATCH" >> JCL
-echo "//STDOUT DD SYSOUT=*" >> JCL
-echo "//STDERR DD SYSOUT=*" >> JCL
-echo "//STDPARM DD *" >> JCL
-echo "SH mkdir -p ${MOUNT}" >> JCL
-echo "/*" >> JCL
-echo "//MNT1ZFS1 EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=50" >> JCL
-echo "//SYSTSPRT DD SYSOUT=*" >> JCL
-echo "//SYSTSOUT DD SYSOUT=*" >> JCL
-echo "//SYSTSIN DD * " >> JCL
-echo "MOUNT FILESYSTEM('${ZFS}') + " >> JCL
-echo "TYPE(ZFS) MODE(RDWR) + " >> JCL
-echo "PARM('AGGRGROW') + " >> JCL
-echo "MOUNTPOINT('${MOUNT}') " >> JCL
-echo "/*" >> JCL
+ echo ${JOBST1} >JCL
+ echo ${JOBST2} >>JCL
+ echo "//MKDIR EXEC PGM=BPXBATCH" >>JCL
+ echo "//STDOUT DD SYSOUT=*" >>JCL
+ echo "//STDERR DD SYSOUT=*" >>JCL
+ echo "//STDPARM DD *" >>JCL
+ echo "SH mkdir -p ${MOUNT}" >>JCL
+ echo "/*" >>JCL
+ echo "//MNT1ZFS1 EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=50" >>JCL
+ echo "//SYSTSPRT DD SYSOUT=*" >>JCL
+ echo "//SYSTSOUT DD SYSOUT=*" >>JCL
+ echo "//SYSTSIN DD * " >>JCL
+ echo "MOUNT FILESYSTEM('${ZFS}') + " >>JCL
+ echo "TYPE(ZFS) MODE(RDWR) + " >>JCL
+ echo "PARM('AGGRGROW') + " >>JCL
+ echo "MOUNTPOINT('${MOUNT}') " >>JCL
+ echo "/*" >>JCL
- sh scripts/submit_jcl.sh "`cat JCL`"
- if [ $? -gt 0 ];then exit -1;fi
+ sh scripts/submit_jcl.sh "$(cat JCL)"
+ if [ $? -gt 0 ]; then exit -1; fi
rm JCL
fi
diff --git a/smpe/bld/service/promoted-apar.txt b/smpe/bld/service/promoted-apar.txt
index e65ef7390f..df37f324c7 100644
--- a/smpe/bld/service/promoted-apar.txt
+++ b/smpe/bld/service/promoted-apar.txt
@@ -1,3 +1,6 @@
+IO29431
+IO29432
+IO29433
IO29428
IO29429
IO29430
diff --git a/smpe/bld/service/promoted-close.txt b/smpe/bld/service/promoted-close.txt
index b0196523e5..49972ae814 100644
--- a/smpe/bld/service/promoted-close.txt
+++ b/smpe/bld/service/promoted-close.txt
@@ -1,3 +1,48 @@
+ IO29431 -
+ PROBLEM SUMMARY:
+ ****************************************************************
+ * USERS AFFECTED: All Zowe users *
+ ****************************************************************
+ * PROBLEM DESCRIPTION: Update Zowe FMID AZWE002 to match the *
+ * community release *
+ ****************************************************************
+ * RECOMMENDATION: Apply provided service *
+ ****************************************************************
+ The Zowe community version was updated to 2.18.0.
+ This PTF provides the community changes in SMP/E format.
+ Follow this link for more details on the community changes:
+ https://docs.zowe.org/stable/
+
+ IO29432 -
+ PROBLEM SUMMARY:
+ ****************************************************************
+ * USERS AFFECTED: All Zowe users *
+ ****************************************************************
+ * PROBLEM DESCRIPTION: Update Zowe FMID AZWE002 to match the *
+ * community release *
+ ****************************************************************
+ * RECOMMENDATION: Apply provided service *
+ ****************************************************************
+ The Zowe community version was updated to 2.18.0.
+ This PTF provides the community changes in SMP/E format.
+ Follow this link for more details on the community changes:
+ https://docs.zowe.org/stable/
+
+ IO29433 -
+ PROBLEM SUMMARY:
+ ****************************************************************
+ * USERS AFFECTED: All Zowe users *
+ ****************************************************************
+ * PROBLEM DESCRIPTION: Update Zowe FMID AZWE002 to match the *
+ * community release *
+ ****************************************************************
+ * RECOMMENDATION: Apply provided service *
+ ****************************************************************
+ The Zowe community version was updated to 2.18.0.
+ This PTF provides the community changes in SMP/E format.
+ Follow this link for more details on the community changes:
+ https://docs.zowe.org/stable/
+
IO29428 -
PROBLEM SUMMARY:
****************************************************************
diff --git a/smpe/bld/service/promoted-hold.txt b/smpe/bld/service/promoted-hold.txt
index e5d2bfc0ca..2974e256e5 100644
--- a/smpe/bld/service/promoted-hold.txt
+++ b/smpe/bld/service/promoted-hold.txt
@@ -1,3 +1,28 @@
+++HOLD(UO90061) SYSTEM FMID(AZWE002) REASON(ACTION) DATE(24240)
+ COMMENT(
+ ****************************************************************
+ * Affected function: Zowe servers *
+ ****************************************************************
+ * Description: stop servers *
+ ****************************************************************
+ * Timing: pre-APPLY *
+ ****************************************************************
+ * Part: ZWESLSTC and ZWESISTC *
+ ****************************************************************
+ Stop the Zowe servers before installing this update.
+
+ ****************************************************************
+ * Affected function: Zowe servers *
+ ****************************************************************
+ * Description: start servers *
+ ****************************************************************
+ * Timing: post-APPLY *
+ ****************************************************************
+ * Part: ZWESLSTC and ZWESISTC *
+ ****************************************************************
+ Start the Zowe servers after installing this update.
+
+ ).
++HOLD(UO90059) SYSTEM FMID(AZWE002) REASON(ACTION) DATE(24200)
COMMENT(
****************************************************************
diff --git a/smpe/bld/service/promoted-ptf.txt b/smpe/bld/service/promoted-ptf.txt
index a3922dcc47..c76a55c053 100644
--- a/smpe/bld/service/promoted-ptf.txt
+++ b/smpe/bld/service/promoted-ptf.txt
@@ -1,3 +1,5 @@
+UO90061
+UO90062
UO90059
UO90060
UO90057
diff --git a/smpe/bld/service/ptf-bucket.txt b/smpe/bld/service/ptf-bucket.txt
index 11868e20ab..b787a4ea5c 100644
--- a/smpe/bld/service/ptf-bucket.txt
+++ b/smpe/bld/service/ptf-bucket.txt
@@ -24,4 +24,7 @@
#UO90049 UO90050 - IO29349 IO29350 IO29351 - Fri Mar 8 19:42:44 UTC 2024
#UO90057 UO90058 - IO29424 IO29425 IO29426 - Fri May 24 14:23:02 UTC 2024
#UO90059 UO90060 - IO29428 IO29429 IO29430 - Thu Jul 18 16:30:14 UTC 2024
-UO90061 UO90062 - IO29431 IO29432 IO29433
+#UO90061 UO90062 - IO29431 IO29432 IO29433 - Tue Aug 27 14:35:44 UTC 2024
+UO90074 UO90075 - IO29454 IO29456 IO29457
+UO90076 UO90077 - IO29458 IO29459 IO29460
+UO90078 UO90079 - IO29461 IO29462 IO29463
diff --git a/tests/installation/src/__tests__/extended/java-versions/java11/install-keyring.ts b/tests/installation/src/__tests__/extended/java-versions/java11/install-keyring.ts
new file mode 100644
index 0000000000..30e2651bce
--- /dev/null
+++ b/tests/installation/src/__tests__/extended/java-versions/java11/install-keyring.ts
@@ -0,0 +1,50 @@
+/**
+ * This program and the accompanying materials are made available under the terms of the
+ * Eclipse Public License v2.0 which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-v20.html
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Copyright IBM Corporation 2020
+ */
+
+import {
+ checkMandatoryEnvironmentVariables,
+ installAndVerifyConvenienceBuild,
+ showZoweRuntimeLogs,
+} from '../../../../utils';
+import {
+ TEST_TIMEOUT_CONVENIENCE_BUILD,
+ KEYSTORE_MODE_KEYRING,
+} from '../../../../constants';
+
+const testServer = process.env.TEST_SERVER;
+const testSuiteName = 'Test convenience build installation by enabling VERIFY_CERTIFICATES with java 11';
+describe(testSuiteName, () => {
+ beforeAll(() => {
+ // validate variables
+ checkMandatoryEnvironmentVariables([
+ 'TEST_SERVER',
+ 'ZOWE_BUILD_LOCAL',
+ ]);
+ });
+
+ test('install and verify', async () => {
+ await installAndVerifyConvenienceBuild(
+ testSuiteName,
+ testServer,
+ {
+ 'zowe_build_local': process.env['ZOWE_BUILD_LOCAL'],
+ 'zowe_custom_for_test': 'true',
+ 'zos_keystore_mode': KEYSTORE_MODE_KEYRING,
+ 'zos_java_home': '/ZOWE/node/J11.0_64',
+ 'zowe_lock_keystore': 'false',
+ }
+ );
+ }, TEST_TIMEOUT_CONVENIENCE_BUILD);
+
+ afterAll(async () => {
+ await showZoweRuntimeLogs(testServer);
+ })
+});
+
\ No newline at end of file
diff --git a/tests/installation/src/__tests__/extended/java-versions/java11/install-pax.ts b/tests/installation/src/__tests__/extended/java-versions/java11/install-pax.ts
new file mode 100644
index 0000000000..bfcd461b8b
--- /dev/null
+++ b/tests/installation/src/__tests__/extended/java-versions/java11/install-pax.ts
@@ -0,0 +1,45 @@
+/**
+ * This program and the accompanying materials are made available under the terms of the
+ * Eclipse Public License v2.0 which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-v20.html
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Copyright IBM Corporation 2020
+ */
+
+import {
+ checkMandatoryEnvironmentVariables,
+ installAndVerifyConvenienceBuild,
+ showZoweRuntimeLogs,
+} from '../../../../utils';
+import {TEST_TIMEOUT_CONVENIENCE_BUILD} from '../../../../constants';
+
+const testSuiteName = 'Test convenience build installation with java 11';
+describe(testSuiteName, () => {
+ beforeAll(() => {
+ // validate variables
+ checkMandatoryEnvironmentVariables([
+ 'TEST_SERVER',
+ 'ZOWE_BUILD_LOCAL',
+ ]);
+ });
+
+ test('install and verify', async () => {
+ await installAndVerifyConvenienceBuild(
+ testSuiteName,
+ process.env.TEST_SERVER,
+ {
+ 'zowe_build_local': process.env['ZOWE_BUILD_LOCAL'],
+ 'zowe_custom_for_test': 'true',
+ 'zos_java_home': '/ZOWE/node/J11.0_64',
+ 'zowe_lock_keystore': 'false',
+ }
+ );
+ }, TEST_TIMEOUT_CONVENIENCE_BUILD);
+
+ afterAll(async () => {
+ await showZoweRuntimeLogs(process.env.TEST_SERVER);
+ })
+});
+
\ No newline at end of file
diff --git a/tests/installation/src/__tests__/extended/keyring-modes/acf2-keyring.ts b/tests/installation/src/__tests__/extended/keyring-modes/acf2-keyring.ts
index 8b740588ee..8a8efd8916 100644
--- a/tests/installation/src/__tests__/extended/keyring-modes/acf2-keyring.ts
+++ b/tests/installation/src/__tests__/extended/keyring-modes/acf2-keyring.ts
@@ -18,7 +18,7 @@ import {
KEYSTORE_MODE_KEYRING,
} from '../../../constants';
-const testServer = 'marist-6';
+const testServer = 'marist-9';
const testSuiteName = 'Test convenience build installation with keystore pointing to an ACF2 keyring';
describe(testSuiteName, () => {
beforeAll(() => {
diff --git a/tests/installation/src/__tests__/extended/keyring-modes/racf-keyring.ts b/tests/installation/src/__tests__/extended/keyring-modes/racf-keyring.ts
index f2399de380..7b91837222 100644
--- a/tests/installation/src/__tests__/extended/keyring-modes/racf-keyring.ts
+++ b/tests/installation/src/__tests__/extended/keyring-modes/racf-keyring.ts
@@ -18,7 +18,7 @@ import {
KEYSTORE_MODE_KEYRING,
} from '../../../constants';
-const testServer = 'marist-8';
+const testServer = 'marist-11';
const testSuiteName = 'Test convenience build installation with keystore pointing to a RACF keyring';
describe(testSuiteName, () => {
beforeAll(() => {
diff --git a/tests/installation/src/__tests__/extended/keyring-modes/tss-keyring.ts b/tests/installation/src/__tests__/extended/keyring-modes/tss-keyring.ts
index fbd1f1f69d..b47a617dca 100644
--- a/tests/installation/src/__tests__/extended/keyring-modes/tss-keyring.ts
+++ b/tests/installation/src/__tests__/extended/keyring-modes/tss-keyring.ts
@@ -18,7 +18,7 @@ import {
KEYSTORE_MODE_KEYRING,
} from '../../../constants';
-const testServer = 'marist-7';
+const testServer = 'marist-10';
const testSuiteName = 'Test convenience build installation with keystore pointing to a TSS keyring';
describe(testSuiteName, () => {
beforeAll(() => {
diff --git a/tests/installation/src/__tests__/extended/node-versions/node-v18.ts b/tests/installation/src/__tests__/extended/node-versions/node-v22.ts
similarity index 85%
rename from tests/installation/src/__tests__/extended/node-versions/node-v18.ts
rename to tests/installation/src/__tests__/extended/node-versions/node-v22.ts
index 4758b24904..8375055f01 100644
--- a/tests/installation/src/__tests__/extended/node-versions/node-v18.ts
+++ b/tests/installation/src/__tests__/extended/node-versions/node-v22.ts
@@ -5,7 +5,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*
- * Copyright IBM Corporation 2022
+ * Copyright Zowe Contributors 2024
*/
import {
@@ -15,9 +15,8 @@ import {
} from '../../../utils';
import { TEST_TIMEOUT_CONVENIENCE_BUILD } from '../../../constants';
-// Only runs on zzow08 at time of change (04.2023). See cicd-test.yml and make_matrix.sh.
const testServer = process.env.TEST_SERVER;
-const testSuiteName = 'Test convenience build installation with node.js v18';
+const testSuiteName = 'Test convenience build installation with node.js v22';
describe(testSuiteName, () => {
beforeAll(() => {
// validate variables
@@ -33,7 +32,7 @@ describe(testSuiteName, () => {
{
'zowe_build_local': process.env['ZOWE_BUILD_LOCAL'],
'zowe_custom_for_test': 'true',
- 'zos_node_home': '/ZOWE/node/node-v18.16.0',
+ 'zos_node_home': '/ZOWE/node/node-v22.10.0',
'zowe_lock_keystore': 'false',
}
);
diff --git a/tests/installation/src/__tests__/extended/security-systems/convenience/acf2.ts b/tests/installation/src/__tests__/extended/security-systems/convenience/acf2.ts
index 7989dd6204..14df79ca42 100644
--- a/tests/installation/src/__tests__/extended/security-systems/convenience/acf2.ts
+++ b/tests/installation/src/__tests__/extended/security-systems/convenience/acf2.ts
@@ -18,10 +18,10 @@ import {TEST_TIMEOUT_CONVENIENCE_BUILD} from '../../../../constants';
/**
* Define this test should run in a specific worker
*
- * @worker marist-6
+ * @worker marist-9
*/
-// hard code to use marist-6 which we started with ACF2
-const testServer = 'marist-6';
+// hard code to use marist-9 which we started with ACF2
+const testServer = 'marist-9';
const testSuiteName = 'Test convenience build installation with ACF2';
describe(testSuiteName, () => {
beforeAll(() => {
diff --git a/tests/installation/src/__tests__/extended/security-systems/convenience/racf.ts b/tests/installation/src/__tests__/extended/security-systems/convenience/racf.ts
index 8f5a5a4c01..58f8ca56c7 100644
--- a/tests/installation/src/__tests__/extended/security-systems/convenience/racf.ts
+++ b/tests/installation/src/__tests__/extended/security-systems/convenience/racf.ts
@@ -18,9 +18,9 @@ import {TEST_TIMEOUT_CONVENIENCE_BUILD} from '../../../../constants';
/**
* Define this test should run in a specific worker
*
- * @worker marist-8
+ * @worker marist-11
*/
-const testServer = 'marist-8';
+const testServer = 'marist-11';
const testSuiteName = 'Test convenience build installation with RACF';
describe(testSuiteName, () => {
beforeAll(() => {
diff --git a/tests/installation/src/__tests__/extended/security-systems/convenience/ts.ts b/tests/installation/src/__tests__/extended/security-systems/convenience/ts.ts
index 22f339ae6b..cd4e7a1fd8 100644
--- a/tests/installation/src/__tests__/extended/security-systems/convenience/ts.ts
+++ b/tests/installation/src/__tests__/extended/security-systems/convenience/ts.ts
@@ -18,10 +18,10 @@ import {TEST_TIMEOUT_CONVENIENCE_BUILD} from '../../../../constants';
/**
* Define this test should run in a specific worker
*
- * @worker marist-7
+ * @worker marist-10
*/
-// hard code to use marist-7 which we started with Top Secret
-const testServer = 'marist-7';
+// hard code to use marist-10 which we started with Top Secret
+const testServer = 'marist-10';
const testSuiteName = 'Test convenience build installation with Top Secret';
describe(testSuiteName, () => {
beforeAll(() => {
diff --git a/tests/installation/src/__tests__/extended/security-systems/fmid/acf2.ts b/tests/installation/src/__tests__/extended/security-systems/fmid/acf2.ts
index 9a6e32810b..2c04aa470e 100644
--- a/tests/installation/src/__tests__/extended/security-systems/fmid/acf2.ts
+++ b/tests/installation/src/__tests__/extended/security-systems/fmid/acf2.ts
@@ -18,10 +18,10 @@ import {TEST_TIMEOUT_SMPE_FMID} from '../../../../constants';
/**
* Define this test should run in a specific worker
*
- * @worker marist-6
+ * @worker marist-9
*/
-// hard code to use marist-6 which we started with ACF2
-const testServer = 'marist-6';
+// hard code to use marist-9 which we started with ACF2
+const testServer = 'marist-9';
const testSuiteName = 'Test SMPE FMID installation with ACF2';
describe(testSuiteName, () => {
beforeAll(() => {
diff --git a/tests/installation/src/__tests__/extended/security-systems/fmid/racf.ts b/tests/installation/src/__tests__/extended/security-systems/fmid/racf.ts
index a283327624..32205c4ac2 100644
--- a/tests/installation/src/__tests__/extended/security-systems/fmid/racf.ts
+++ b/tests/installation/src/__tests__/extended/security-systems/fmid/racf.ts
@@ -18,9 +18,9 @@ import {TEST_TIMEOUT_SMPE_FMID} from '../../../../constants';
/**
* Define this test should run in a specific worker
*
- * @worker marist-8
+ * @worker marist-11
*/
-const testServer = 'marist-8';
+const testServer = 'marist-11';
const testSuiteName = 'Test SMPE FMID installation with RACF';
describe(testSuiteName, () => {
beforeAll(() => {
diff --git a/tests/installation/src/__tests__/extended/security-systems/fmid/ts.ts b/tests/installation/src/__tests__/extended/security-systems/fmid/ts.ts
index d274358705..d15f77074c 100644
--- a/tests/installation/src/__tests__/extended/security-systems/fmid/ts.ts
+++ b/tests/installation/src/__tests__/extended/security-systems/fmid/ts.ts
@@ -18,10 +18,10 @@ import {TEST_TIMEOUT_SMPE_FMID} from '../../../../constants';
/**
* Define this test should run in a specific worker
*
- * @worker marist-7
+ * @worker marist-10
*/
-// hard code to use marist-7 which we started with Top Secret
-const testServer = 'marist-7';
+// hard code to use marist-10 which we started with Top Secret
+const testServer = 'marist-10';
const testSuiteName = 'Test SMPE FMID installation with Top Secret';
describe(testSuiteName, () => {
beforeAll(() => {
diff --git a/tests/installation/src/__tests__/extended/security-systems/ptf/acf2.ts b/tests/installation/src/__tests__/extended/security-systems/ptf/acf2.ts
index 3665c08d52..c5aceb2477 100644
--- a/tests/installation/src/__tests__/extended/security-systems/ptf/acf2.ts
+++ b/tests/installation/src/__tests__/extended/security-systems/ptf/acf2.ts
@@ -18,10 +18,10 @@ import {TEST_TIMEOUT_SMPE_PTF} from '../../../../constants';
/**
* Define this test should run in a specific worker
*
- * @worker marist-6
+ * @worker marist-9
*/
-// hard code to use marist-6 which we started with ACF2
-const testServer = 'marist-6';
+// hard code to use marist-9 which we started with ACF2
+const testServer = 'marist-9';
const testSuiteName = 'Test SMPE PTF installation with ACF2';
describe(testSuiteName, () => {
beforeAll(() => {
diff --git a/tests/installation/src/__tests__/extended/security-systems/ptf/racf.ts b/tests/installation/src/__tests__/extended/security-systems/ptf/racf.ts
index a796eed96c..cf9e56bd29 100644
--- a/tests/installation/src/__tests__/extended/security-systems/ptf/racf.ts
+++ b/tests/installation/src/__tests__/extended/security-systems/ptf/racf.ts
@@ -18,9 +18,9 @@ import {TEST_TIMEOUT_SMPE_PTF} from '../../../../constants';
/**
* Define this test should run in a specific worker
*
- * @worker marist-8
+ * @worker marist-11
*/
-const testServer = 'marist-8';
+const testServer = 'marist-11';
const testSuiteName = 'Test SMPE PTF installation with RACF';
describe(testSuiteName, () => {
beforeAll(() => {
diff --git a/tests/installation/src/__tests__/extended/security-systems/ptf/ts.ts b/tests/installation/src/__tests__/extended/security-systems/ptf/ts.ts
index 43d08633ca..65f44cf010 100644
--- a/tests/installation/src/__tests__/extended/security-systems/ptf/ts.ts
+++ b/tests/installation/src/__tests__/extended/security-systems/ptf/ts.ts
@@ -18,10 +18,10 @@ import {TEST_TIMEOUT_SMPE_PTF} from '../../../../constants';
/**
* Define this test should run in a specific worker
*
- * @worker marist-7
+ * @worker marist-10
*/
-// hard code to use marist-7 which we started with Top Secret
-const testServer = 'marist-7';
+// hard code to use marist-10 which we started with Top Secret
+const testServer = 'marist-10';
const testSuiteName = 'Test SMPE PTF installation with Top Secret';
describe(testSuiteName, () => {
beforeAll(() => {
diff --git a/tests/sanity/test/e2e/test-07-iframe.js b/tests/sanity/test/e2e/test-07-iframe.js
index 2962918ba4..13c7b668b1 100644
--- a/tests/sanity/test/e2e/test-07-iframe.js
+++ b/tests/sanity/test/e2e/test-07-iframe.js
@@ -47,7 +47,7 @@ describe.skip(`test ${APP_TO_TEST}`, function() {
// load MVD login page
await loginMVD(
driver,
- `https://${process.env.ZOWE_EXTERNAL_HOST}:${process.env.ZOWE_ZLUX_HTTPS_PORT}/`,
+ `https://${process.env.ZOWE_EXTERNAL_HOST}:${process.env.ZOWE_API_MEDIATION_GATEWAY_HTTP_PORT}/zlux/ui/v1/ZLUX/plugins/org.zowe.zlux.bootstrap/web/`,
process.env.SSH_USER,
process.env.SSH_PASSWD
);
diff --git a/tests/sanity/test/e2e/test-08-subsys.js b/tests/sanity/test/e2e/test-08-subsys.js
index d10735e604..f4cfcff868 100644
--- a/tests/sanity/test/e2e/test-08-subsys.js
+++ b/tests/sanity/test/e2e/test-08-subsys.js
@@ -40,7 +40,7 @@ describe.skip(`test ${APP_TO_TEST}`, function() {
// load MVD login page
await loginMVD(
driver,
- `https://${process.env.ZOWE_EXTERNAL_HOST}:${process.env.ZOWE_ZLUX_HTTPS_PORT}/`,
+ `https://${process.env.ZOWE_EXTERNAL_HOST}:${process.env.ZOWE_API_MEDIATION_GATEWAY_HTTP_PORT}/zlux/ui/v1/ZLUX/plugins/org.zowe.zlux.bootstrap/web/`,
process.env.SSH_USER,
process.env.SSH_PASSWD
);
diff --git a/tests/sanity/test/e2e/test-10-api-catalog.js b/tests/sanity/test/e2e/test-10-api-catalog.js
index ab42adab69..ba53108906 100644
--- a/tests/sanity/test/e2e/test-10-api-catalog.js
+++ b/tests/sanity/test/e2e/test-10-api-catalog.js
@@ -45,7 +45,7 @@ describe(`test ${APP_TO_TEST}`, function() {
// load MVD login page
await loginMVD(
driver,
- `https://${process.env.ZOWE_EXTERNAL_HOST}:${process.env.ZOWE_ZLUX_HTTPS_PORT}/`,
+ `https://${process.env.ZOWE_EXTERNAL_HOST}:${process.env.ZOWE_API_MEDIATION_GATEWAY_HTTP_PORT}/zlux/ui/v1/ZLUX/plugins/org.zowe.zlux.bootstrap/web/`,
process.env.SSH_USER,
process.env.SSH_PASSWD
);
@@ -79,6 +79,8 @@ describe(`test ${APP_TO_TEST}`, function() {
try {
const searchBox = await waitUntilElement(driver, '.search-bar');
expect(searchBox).to.be.an('object');
+ await saveScreenshotWithIframeAppContext(this, driver, testName, 'login-pre-success', APP_TO_TEST, MVD_IFRAME_APP_CONTENT);
+
} catch (e) {
// try to save screenshot for debug purpose
await saveScreenshotWithIframeAppContext(this, driver, testName, 'login-failed', APP_TO_TEST, MVD_IFRAME_APP_CONTENT);
diff --git a/tests/sanity/test/e2e/test-11-workflows.js b/tests/sanity/test/e2e/test-11-workflows.js
index 2bfde0962d..df0b21dc77 100644
--- a/tests/sanity/test/e2e/test-11-workflows.js
+++ b/tests/sanity/test/e2e/test-11-workflows.js
@@ -40,7 +40,7 @@ describe.skip(`test ${APP_TO_TEST}`, function() {
// load MVD login page
await loginMVD(
driver,
- `https://${process.env.ZOWE_EXTERNAL_HOST}:${process.env.ZOWE_ZLUX_HTTPS_PORT}/`,
+ `https://${process.env.ZOWE_EXTERNAL_HOST}:${process.env.ZOWE_API_MEDIATION_GATEWAY_HTTP_PORT}/zlux/ui/v1/ZLUX/plugins/org.zowe.zlux.bootstrap/web/`,
process.env.SSH_USER,
process.env.SSH_PASSWD
);
diff --git a/tests/sanity/test/e2e/test-12-angular-sample.js b/tests/sanity/test/e2e/test-12-angular-sample.js
index addeb9fc4c..57248ca41d 100644
--- a/tests/sanity/test/e2e/test-12-angular-sample.js
+++ b/tests/sanity/test/e2e/test-12-angular-sample.js
@@ -44,7 +44,7 @@ describe.skip(`test ${APP_TO_TEST}`, function() {
// load MVD login page
await loginMVD(
driver,
- `https://${process.env.ZOWE_EXTERNAL_HOST}:${process.env.ZOWE_ZLUX_HTTPS_PORT}/`,
+ `https://${process.env.ZOWE_EXTERNAL_HOST}:${process.env.ZOWE_API_MEDIATION_GATEWAY_HTTP_PORT}/zlux/ui/v1/ZLUX/plugins/org.zowe.zlux.bootstrap/web/`,
process.env.SSH_USER,
process.env.SSH_PASSWD
);
diff --git a/tests/sanity/test/e2e/test-13-react-sample.js b/tests/sanity/test/e2e/test-13-react-sample.js
index d2fee77eca..ac01c05d0f 100644
--- a/tests/sanity/test/e2e/test-13-react-sample.js
+++ b/tests/sanity/test/e2e/test-13-react-sample.js
@@ -44,7 +44,7 @@ describe.skip(`test ${APP_TO_TEST}`, function() {
// load MVD login page
await loginMVD(
driver,
- `https://${process.env.ZOWE_EXTERNAL_HOST}:${process.env.ZOWE_ZLUX_HTTPS_PORT}/`,
+ `https://${process.env.ZOWE_EXTERNAL_HOST}:${process.env.ZOWE_API_MEDIATION_GATEWAY_HTTP_PORT}/zlux/ui/v1/ZLUX/plugins/org.zowe.zlux.bootstrap/web/`,
process.env.SSH_USER,
process.env.SSH_PASSWD
);
diff --git a/tests/sanity/test/e2e/test-14-ip-explorer.js b/tests/sanity/test/e2e/test-14-ip-explorer.js
index 99f9eb3326..0b274fd66d 100644
--- a/tests/sanity/test/e2e/test-14-ip-explorer.js
+++ b/tests/sanity/test/e2e/test-14-ip-explorer.js
@@ -40,7 +40,7 @@ describe(`test ${APP_TO_TEST}`, function() {
// load MVD login page
await loginMVD(
driver,
- `https://${process.env.ZOWE_EXTERNAL_HOST}:${process.env.ZOWE_ZLUX_HTTPS_PORT}/`,
+ `https://${process.env.ZOWE_EXTERNAL_HOST}:${process.env.ZOWE_API_MEDIATION_GATEWAY_HTTP_PORT}/zlux/ui/v1/ZLUX/plugins/org.zowe.zlux.bootstrap/web/`,
process.env.SSH_USER,
process.env.SSH_PASSWD
);
diff --git a/workflows/files/ZWEAMLCF.xml b/workflows/files/ZWEAMLCF.xml
new file mode 100644
index 0000000000..07bd8ffa03
--- /dev/null
+++ b/workflows/files/ZWEAMLCF.xml
@@ -0,0 +1,1433 @@
+
+
+ true
+
+
+ config_apiml_zowe_20
+ Configuration of API ML for Zowe 2.0
+ Use this simplified workflow to configure API ML for Zowe 2.0
+ ###ZOWE_VERSION###
+ Zowe
+
+
+
+
+
+ Prefix of datasets where remaining runtime datasets will be created
+ Prefix of datasets where remaining runtime libraries will be created within execution of Zowe install step (SZWEAUTH, SZWESAMP, SZWEEXEC, SZWELOAD)
+ zowe
+
+
+
+ IBMUSER.ZWEV2
+
+
+
+
+ Where Zowe STCs will be copied over
+ Where Zowe STCs will be copied over
+ zowe
+
+
+
+ USER.PROCLIB
+
+
+
+
+ Zowe PARMLIB
+ Zowe parameter library
+ zowe
+
+
+
+ IBMUSER.ZWEV2.CUST.PARMLIB
+
+
+
+
+ Zowe ZIS plugins PARMLIB
+ Holds PARMLIB members for ZIS plugins
+ zowe
+
+
+
+ ZWESIP00
+
+
+
+
+ JCL library where Zowe will store temporary JCLs during initialization
+ JCL library where Zowe will store temporary JCLs during initialization
+ zowe
+
+
+
+ IBMUSER.ZWEV2.CUST.JCLLIB
+
+
+
+
+ Load library where Zowe stores libraries for Utilities for use by Zowe and extensions
+ Load library for Utilities for use by Zowe and extensions
+ zowe
+
+
+
+ IBMUSER.ZWEV2.SZWELOAD
+
+
+
+
+ APF authorized LOADLIB for Zowe
+ APF authorized LOADLIB for Zowe core
+ zowe
+
+
+
+ IBMUSER.ZWEV2.SZWEAUTH
+
+
+
+
+ APF authorized LOADLIB for Zowe ZIS Plugins
+ APF authorized LOADLIB for Zowe ZIS Plugins
+ zowe
+
+
+
+ IBMUSER.ZWEV2.CUST.ZWESAPL
+
+
+
+
+ Zowe runtime (root) directory with libraries
+ Existing Zowe runtime.<br />
+If you created ZOWE via PSWI, <br />
+zowe runtime is your Target Mount Point from PSWI deployment. <br />
+It is used by ZWESLSTC or by zwe command
+ zowe
+
+ ~?(\/[^\/]+)+
+ Please specify proper full USS path ending without a trailing slash.
+
+
+
+
+ Where to store runtime logs
+ Where to store runtime logs
+ zowe
+
+
+
+ /global/zowe/logs
+
+
+
+
+ Zowe runtime workspace directory
+ Zowe runtime workspace directory
+ zowe
+
+
+
+ /global/zowe/workspace
+
+
+
+
+ Where extensions are installed
+ zowe_extensionDirectory
+ zowe
+
+
+
+ /global/zowe/extensions
+
+
+
+
+ Zowe JES job name
+ Zowe JES job name
+ zowe
+
+
+
+ ZWE1SV
+
+
+
+
+ Prefix of component address space
+ Prefix of component address space
+ zowe
+
+
+
+ ZWE1
+
+
+
+
+ The list of external domains
+ Defines a list of external domains that will be used by the Zowe instance.
+ zowe
+
+
+
+ sample-domain.com
+
+
+
+
+ The port you use to access Zowe Gateway from your web browser
+ This is the port you use to access Zowe Gateway from your web browser.
+In many use cases, this should be same as <b>components.gateway.port</b>. But in
+some use cases, like containerization, this port could be different.
+ zowe
+
+
+
+ 7554
+
+
+
+
+ Set to "debug" or "trace" to display extra debug information
+ Set to "debug" or "trace" to display extra debug information
+ zowe
+
+
+ info
+ debug
+ trace
+ info
+
+
+
+
+ Set to "exit" or "warn" if any component has an error
+ Set to "exit" if you want startup to exit if any component has an error in the configuration stage, otherwise zwe will issue a warning but continue running.
+ zowe
+
+
+ warn
+ exit
+ warn
+
+
+
+
+ Certificate keystore type (PKCS12, JCERACFKS)
+ Certificate keystore type (PKCS12, JCERACFKS)
+ certificates
+
+
+
+ PKCS12
+ JCERACFKS
+ JCERACFKS
+
+
+
+
+ Zowe certificate keystore file. For keyring, the format is "safkeyring://OWNER/KEYRING".
+ Zowe certificate keystore file
+ certificates
+
+
+
+ safkeyring://OWNER/KEYRING
+
+
+
+
+ Certificate keystore password.
+ Certificate keystore password.
+ certificates
+
+
+ password
+
+
+
+
+ Alias for the certificate keystore
+ Alias for the certificate keystore
+ certificates
+
+
+
+ localhost
+
+
+
+
+ Zowe certificate truststore type
+ Zowe certificate truststore type
+ certificates
+
+
+
+ PKCS12
+ JCERACFKS
+ JCERACFKS
+
+
+
+
+ File location for certificate truststore. For keyring, the format is "safkeyring://OWNER/KEYRING"
+ File location for the certificate truststore
+ certificates
+
+
+
+ safkeyring://OWNER/KEYRING
+
+
+
+
+ Password for the certificate truststore
+ Password for the certificate truststore
+ certificates
+
+
+
+ password
+
+
+
+
+ Path to the JAVA home
+ Path to the JAVA home
+ java
+
+
+
+
+
+
+
+ Path to the Node.js home
+ Path to the Node.js home
+ Node.js
+
+
+
+
+
+
+
+ Hostname of the running z/OSMF instance
+ Hostname of the running z/OSMF instance
+ zOSMF
+
+
+
+ dvipa.my-company.com
+
+
+
+
+ Port of the z/OSMF instance
+ Port of the z/OSMF instance
+ zOSMF
+
+
+
+ 443
+
+
+
+
+ APPLID of the z/OSMF instance
+ APPLID of the z/OSMF instance
+ zOSMF
+
+
+
+ IZUDFLT
+
+
+
+
+ Port for API ML Gateway
+ Port for API ML Gateway
+ components
+
+
+
+ 7554
+
+
+
+
+ Port on which API Catalog should be running.
+ Port on which API Catalog should be running.
+ components
+
+
+
+ 7552
+
+
+
+
+ Port on which Discovery service should be running
+ Port on which Discovery service should be running
+ components
+
+
+
+ 7553
+
+
+
+
+ Port for Caching service
+ Port for Caching service
+ components
+
+
+
+ 7555
+
+
+
+
+ Port for jgroups
+ Port for jgroups. This is required if storage mode is infinispan.
+ components
+
+
+
+ 7559
+
+
+
+
+ ID you use to separate multiple Zowe installs
+ ID when determining resource names used in RBAC authorization checks such as dataservices with RBAC expects this ID in SAF resources
+ zowe
+
+
+
+ 1
+
+
+
+
+ ID that can be used by servers to distinguish their cookies from unrelated Zowe installs
+ ID which allows multiple copies of Zowe to be used within the same client
+ zowe
+
+
+
+ 1
+
+
+
+
+ Security product name. Can be RACF, ACF2 or TSS
+ Security product name. Can be RACF, ACF2 or TSS
+ security
+
+
+
+
+ RACF
+ TSS
+ ACF2
+ RACF
+
+
+
+
+ Zowe admin user group
+ Zowe admin user group
+ security
+
+
+
+ ZWEADMIN
+
+
+
+
+
+ Zowe STC group
+ Zowe STC group
+ security
+
+
+
+
+ ZWEADMIN
+
+
+
+
+ Zowe SysProg group
+ Zowe SysProg group
+ security
+
+
+
+
+ ZWEADMIN
+
+
+
+
+ Zowe runtime user name of main service
+ Zowe runtime user name of main service
+ security
+
+
+
+
+ ZWESVUSR
+
+
+
+
+ Zowe runtime user name of ZIS
+ Zowe runtime user name of ZIS
+ security
+
+
+
+
+ ZWESIUSR
+
+
+
+
+ STC name of main service
+ STC name of main service
+ security
+
+
+
+
+ ZWESLSTC
+
+
+
+
+ STC name of ZIS
+ STC name of ZIS
+ security
+
+
+
+
+ ZWESISTC
+
+
+
+
+ STC name of Auxiliary Service
+ STC name of Auxiliary Service
+ security
+
+
+
+
+ ZWESASTC
+
+
+
+
+
+ Define variables
+ Use this step to define the variables for execution
+
+
+ Define the main variables
+ Use this step to define the main variables for Zowe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Run this step to fill base variables.
+ 1
+ z/OS System Programmer
+ false
+ false
+
+
+
+ Ports
+ Specify ports variables for components
+
+
+
+
+
+
+ Run this step to specify ports variables for components
+ 1
+ z/OS System Programmer
+ false
+ false
+
+
+
+
+ Create configuration
+ Creates the configuration for the Zowe (API ML)
+
+
+
+
+ Generated yaml file is backward compatible with full Zowe,
+ this workflow is just simplified with focus on easier API ML configuration.
+ Ensure that the values are correct.
+ zowe.yaml file is created in the: ${instance-zowe_runtimeDirectory} directory
+ NOTE: If you run this workflow outside of PSWI (SMP/E or convenience build), you might encounter a folder write permission issue.
+ To solve the issue, run the following command in USS:
+ chmod 775 ${instance-zowe_runtimeDirectory}
+ and change the folder UID to the ID of the user who executes this workflow.
+ Issue the following command:
+ chown ${_workflow-workflowOwner} ${instance-zowe_runtimeDirectory}
+ Re-run the step.
+]]>
+ 1
+ z/OS System Programmer
+ false
+ false
+
+ "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# This program and the accompanying materials are made available under the terms of the' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# Eclipse Public License v2.0 which accompanies this distribution, and is available at' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# https://www.eclipse.org/legal/epl-v20.html' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# SPDX-License-Identifier: EPL-2.0' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# Copyright Contributors to the Zowe Project.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#[[################################################################################]]#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#===============================================================================' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# This is a YAML configuration file for a Zowe instance.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# YAML is a human-friendly data serialization language for all programming languages.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# To learn more about YAML specifications, please check https://yaml.org/.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# To learn more details about the content of this file, please check https://docs.zowe.org/.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# For first time users, or for the most common use cases, please pay more' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# attention to the entries marked with "**COMMONLY_CUSTOMIZED**". A "directory" refers' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# to a directory in z/OS Unix.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# If you modify any settings listed in "zwe init --help" command, you may need to' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# re-run the "zwe init" command to make them take effect.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#===============================================================================' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# Zowe global configurations' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# This section includes Zowe setup information used by `zwe install` and' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# `zwe init` command, as well as default configurations for Zowe runtime.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo 'zowe:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' #-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # These configurations are used by "zwe install" or "zwe init" commands.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' #-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' setup:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # MVS data set related configurations' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' dataset:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # where Zowe MVS data sets will be installed' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' prefix: $!{instance-zowe_setup_dataset_prefix}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # PROCLIB where Zowe STCs will be copied over' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' proclib: $!{instance-zowe_setup_dataset_proclib}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Zowe PARMLIB' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' parmlib: $!{instance-zowe_setup_dataset_parmlib}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Holds Zowe PARMLIB members for plugins' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' parmlibMembers:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # For ZIS plugins' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' zis: $!{instance-zowe_setup_dataset_libzis}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # JCL library where Zowe will store temporary JCLs during initialization' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' jcllib: $!{instance-zowe_setup_dataset_jcllib}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Utilities for use by Zowe and extensions' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' loadlib: $!{instance-zowe_setup_dataset_loadlibPlugin}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # APF authorized LOADLIB for Zowe' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' authLoadlib: $!{instance-zowe_setup_dataset_authLoadlib}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # APF authorized LOADLIB for Zowe ZIS Plugins' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' authPluginLib: $!{instance-zowe_setup_dataset_authPluginLib}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Security related configurations. This setup is optional.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' security:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # security product name. Can be RACF, ACF2 or TSS' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' product: $!{instance-zowe_setup_security_product}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # security group name' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' groups:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Zowe admin user group' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' admin: $!{instance-zowe_setup_security_groups_admin}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Zowe STC group' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' stc: $!{instance-zowe_setup_security_groups_stc}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Zowe SysProg group' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' sysProg: $!{instance-zowe_setup_security_groups_sysProg}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # security user name' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' users:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Zowe runtime user name of main service' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' zowe: $!{instance-zowe_setup_security_users_zowe}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Zowe runtime user name of ZIS' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' zis: $!{instance-zowe_setup_security_users_zis}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # STC names' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' stcs:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # STC name of Zowe main service' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' zowe: $!{instance-zowe_setup_security_stcs_zowe}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # STC name of Zowe ZIS' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' zis: $!{instance-zowe_setup_security_stcs_zis}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # STC name of Zowe ZIS Auxiliary Server' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' aux: $!{instance-zowe_setup_security_stcs_aux}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Certificate related configurations' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' #' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # There are 5 configurations cases. Please choose one from below.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>> Certificate setup scenario 1' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # PKCS12 (keystore) with Zowe generate certificates.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # certificate:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Type of certificate storage. Valid values are: PKCS12, JCEKS, JCECCAKS, JCERACFKS, JCECCARACFKS, or JCEHYBRIDRACFKS' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # type: $!{instance-zowe_setup_certificate_type}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # pkcs12:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Keystore directory' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # directory: ' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Lock the keystore directory to only accessible by Zowe runtime user and group.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # lock: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Certificate alias name. Optional, default value is localhost.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Note: please use all lower cases as alias.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # name: localhost' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Keystore password. Optional, default value is password.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # password: password' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Alias name of self-signed certificate authority. Optional, default value is local_ca.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Note: please use all lower cases as alias.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # caAlias: local_ca' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Password of keystore stored self-signed certificate authority. Optional, default value is local_ca_password.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # caPassword: local_ca_password' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Distinguished name for Zowe generated certificates. All optional.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # dname:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # caCommonName: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # commonName: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # orgUnit: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # org: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # locality: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # state: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # country: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Validity days for Zowe generated certificates' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # validity: 3650' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Domain names and IPs should be added into certificate SAN' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # If this field is not defined, `zwe init` command will use' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # `zowe.externalDomains`.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # san:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # sample domain name' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # - dvipa.my-company.com' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # sample IP address' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # - 12.34.56.78' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # >>>> Certificate setup scenario 2' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # PKCS12 (keystore) with importing certificate generated by other CA.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # certificate:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Type of certificate storage. Valid values are: PKCS12, JCEKS, JCECCAKS, JCERACFKS, JCECCARACFKS, or JCEHYBRIDRACFKS' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # type: PKCS12' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # pkcs12:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Keystore directory' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # directory: /var/zowe/keystore' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Lock the keystore directory to only accessible by Zowe runtime user and group.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # lock: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # # Certificate alias name. Optional, default value is localhost.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # # Note: please use all lower cases as alias.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # name: localhost' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # # Keystore password. Optional, default value is password.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # password: password' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # import:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Existing PKCS12 keystore which holds the certificate issued by external CA.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # keystore: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Password of the above keystore' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # password: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Certificate alias will be imported' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Note: please use all lower cases as alias.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # alias: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # PEM format certificate authorities will also be imported and trusted.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # importCertificateAuthorities:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Path to the certificate authority signed the certificate will be imported.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # - ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # >>>> Certificate setup scenario 3' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Zowe generated z/OS Keyring with Zowe generated certificates.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # certificate:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Type of certificate storage. Valid values are: PKCS12, JCEKS, JCECCAKS, JCERACFKS, JCECCARACFKS, or JCEHYBRIDRACFKS' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # type: JCERACFKS' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # createZosmfTrust: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # keyring:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # keyring name' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # name: ZoweKeyring' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # # Label of Zowe certificate. Optional, default value is localhost.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # label: localhost' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # # label of Zowe CA certificate. Optional, default value is localca.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # caLabel: localca' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # # Distinguished name for Zowe generated certificates. All optional.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # dname:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # caCommonName: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # commonName: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # orgUnit: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # org: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # locality: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # state: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # country: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # # Validity days for Zowe generated certificates' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # validity: 3650' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # # Domain names and IPs should be added into certificate SAN' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # # If this field is not defined, `zwe init` command will use' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # # `zowe.externalDomains`.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # # **NOTE**: due to the limitation of RACDCERT command, this field should' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # # contain exactly 2 entries with the domain name and IP address.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # san:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # - dvipa.my-company.com' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # - 12.34.56.78' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # >>>> Certificate setup scenario 4' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Zowe generated z/OS Keyring and connect to existing certificate' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # certificate:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Type of certificate storage. Valid values are: PKCS12, JCEKS, JCECCAKS, JCERACFKS, JCECCARACFKS, or JCEHYBRIDRACFKS' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # type: JCERACFKS' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # keyring:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # keyring name' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # name: ZoweKeyring' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # connect:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Current owner of the existing certificate, can be SITE or an user ID.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # user: IBMUSER' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Label of the existing certificate will be connected to Zowe keyring.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # label: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # If you have other certificate authorities want to be trusted in Zowe keyring,' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # list the certificate labels here.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **NOTE**, due to the limitation of RACDCERT command, this field should' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # contain maximum 2 entries.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # importCertificateAuthorities:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # - ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # >>>> Certificate setup scenario 5' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Zowe generated z/OS Keyring with importing certificate stored in data set' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # certificate:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Type of certificate storage. Valid values are: PKCS12, JCEKS, JCECCAKS, JCERACFKS, JCECCARACFKS, or JCEHYBRIDRACFKS' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # type: JCERACFKS' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # keyring:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # keyring name' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # name: ZoweKeyring' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # # Label of Zowe certificate. Optional, default value is localhost.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # label: localhost' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # import:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Name of the data set holds the certificate issued by other CA.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # This data set should be in PKCS12 format and contain private key.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # dsName: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Password for the PKCS12 data set.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # password: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # VSAM configurations if you are using VSAM as Caching Service storage' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' vsam:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # VSAM data set with Record-Level-Sharing enabled or not' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Valid values could be: NONRLS or RLS.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' mode: NONRLS' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Volume name if you are using VSAM in NONRLS mode' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' volume: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Storage class name if you are using VSAM in RLS mode' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' storageClass: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Zowe runtime (root) directory' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' #' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **NOTE**: ' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # 1. if it is not specified and you passed "--update-config" argument' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # when you ran "zwe init" command, this value will be updated with the Zowe' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # runtime where the "zwe" command is located.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' #' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # 2. the runtime directory is designed to be "read only". This is different from the' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # log, workspace, and extension directories. Setting those three to the same parent folder' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # as the runtime directory is unsupported & may cause issues' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' #' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # This value is required by ZWESLSTC to know where is Zowe runtime.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' runtimeDirectory: "$!{instance-zowe_runtimeDirectory}"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Where to store runtime logs' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' logDirectory: $!{instance-zowe_logDirectory}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Zowe runtime workspace directory' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' workspaceDirectory: $!{instance-zowe_workspaceDirectory}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Where extensions are installed' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' extensionDirectory: $!{instance-zowe_extensionDirectory}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' useConfigmgr: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Setting to true will enable:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # * schema-backed validation of zowe.yaml' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # * should greatly improve startup time.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # * can supply multiple zowe.yaml as defaults & overrides in the format of' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # FILE(/my/customizations.yaml):PARMLIB(MYORG.ZOWE(YAML)):FILE(/zowe/defaults.yaml)' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # * allows templating in zowe.yaml by putting references within ${{ }} blocks such as' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # rewriting the job section below as' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # job:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # name: ${{ zowe.job.prefix }}SV' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # prefix: ZWE1' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' configmgr:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # STRICT=quit on any error, including missing schema' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # COMPONENT-COMPAT=if component missing schema, skip it with warning instead of quit' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' validation: "COMPONENT-COMPAT"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # runtime z/OS job name' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' job:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Zowe JES job name' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' name: $!{instance-zowe_job_name}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Prefix of component address space' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' prefix: $!{instance-zowe_job_prefix}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # This is an ID you use to separate multiple Zowe installs when determining' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # resource names used in RBAC authorization checks such as dataservices with RBAC' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # expects this ID in SAF resources' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' rbacProfileIdentifier: "$!{instance-zowe_rbacProfileId}"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # This is an ID that can be used by servers that distinguish their cookies from unrelated Zowe installs, ' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # for purposes such as to allow multiple copies of Zowe to be used within the same client' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' cookieIdentifier: "$!{instance-zowe_cookieId}"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # You can list your external domains on how you want to access Zowe.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # This should be the domain list you would like to put into your web browser'\''s' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # address bar.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' externalDomains:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # this should be the domain name to access Zowe APIML Gateway' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+#foreach($externalDomain in ${instance-zowe_externalDomains.split("\n")})
+echo ' - ${externalDomain}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+#end
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # This is the port you use to access Zowe Gateway from your web browser.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' #' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # In many use cases, this should be same as `components.gateway.port`. But in' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # some use cases, like containerization, this port could be different.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' externalPort: ${instance-zowe_externalPort}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # You can un-comment and define any extra environment variables as key/value' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # pairs here.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # environments:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Example of a global environment variable for all components' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # MY_ENV_VAR: my_env_val' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Another example to customize SSH port for VT Terminal Desktop app' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # ZWED_SSH_PORT: 22' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # ZWED_TN3270_PORT: 23' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # You can define any Zowe message portions to be checked for and the message added to the' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # system log upon its logging, truncated to 126 characters.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' sysMessages:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Zowe starting' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' - "ZWEL0021I"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Zowe started' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' - "ZWEL0018I"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' - "ZWEL0006I"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Zowe ready to use' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' - "ZWES1601I"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Zowe stopping' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' - "ZWEL0008I"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Zowe stopped' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' - "ZWEL0022I"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Zowe components starting' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' - "ZWEL0001I"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Zowe components stopped' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' - "ZWEL0002I"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # API ML components ready' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' - "ZWEAM000I"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # App server ready' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' - "ZWED0031I"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # ZSS ready' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' - "ZWES1013I"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # # Not limited to Zowe message ID'\''s, you can specify your own string for example:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # - "ERROR"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Enable debug mode for Zowe launch scripts' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' launchScript:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Set to "debug" or "trace" to display extra debug information' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' logLevel: "$!{instance-zowe_launchScript_logLevel}"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Set to "exit" if you'\''d like startup to exit if any component has an error in the configure stage, otherwise zwe will warn but continue.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' onComponentConfigureFail: "$!{instance-zowe_launchScript_CompConf}"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Default Zowe certificate' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' #' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **NOTE**: these fields can be updated automatically if you pass' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # `--update-config` to `zwe init` command. The generated value will base on' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # your setup in `zowe.setup.certificate` section.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' certificate:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' keystore:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' type: $!{instance-zowe_certificate_keystore_type}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # if keyrings, the format is safkeyring:////stcusername/KeyName' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' file: $!{instance-zowe_certificate_keystore_file}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # "password" should either be the value you set when PKCS12, or literally "password" for keyrings.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' password: $!{instance-zowe_certificate_keystore_password}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # alias is the name of your key/cert. When using keyrings, get the Case Sensitive, Space Sensitive value in a TSO list ring.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' alias: $!{instance-zowe_certificate_keystore_alias}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' truststore:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # truststore usually has same values as keystore (minus alias), but can be different if desired.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' type: $!{instance-zowe_certificate_truststore_type}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' file: $!{instance-zowe_certificate_truststore_file}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' password: $!{instance-zowe_certificate_truststore_password}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' pem:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' key: /global/zowe/keystore/localhost/localhost.key' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' certificate: /global/zowe/keystore/localhost/localhost.cer' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # if keyrings, the format is "safkeyring:////stcusername/KeyName&ca name"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' certificateAuthorities: /global/zowe/keystore/local_ca/local_ca.cer' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # How we want to verify SSL certificates of services. Valid values are:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # - STRICT: will validate if the certificate is trusted in our trust store and' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # if the certificate Command Name and Subject Alternative Name (SAN)' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # is validate. This is recommended for the best security.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # - NONSTRICT: will validate if the certificate is trusted in our trust store.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # This mode does not validate certificate Common Name and Subject' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Alternative Name (SAN).' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # - DISABLED: disable certificate validation. This is NOT recommended for' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # security.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' verifyCertificates: STRICT' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# Java configuration' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# Some Zowe components requires Java. Define the path where you have your Java' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# is installed.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# **NOTE**: this field can be updated automatically if you pass `--update-config`' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# to `zwe init` command.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo 'java:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Path to your Java home directory' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' home: "$!{instance-java_home}"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# Node.js configuration' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# Some Zowe components requires Node.js. Define the path where you have your' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# Node.js is installed.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# **NOTE**: this field can be updated automatically if you pass `--update-config`' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# to `zwe init` command.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo 'node:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Path to your Node.js home directory' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' home: "$!{instance-node_home}"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# z/OSMF configuration' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# If your Zowe instance is configured to use z/OSMF for authentication or other' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# features. You need to define how to access your z/OSMF instance.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo 'zOSMF:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Host name of your z/OSMF instance' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' host: $!{instance-zOSMF_host}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' port: ${instance-zOSMF_port}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' applId: $!{instance-zOSMF_applId}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# Zowe components default configurations' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# This section includes default configurations for all Zowe components installed' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# on the Zowe instance.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# Every component should define their own section under `components` with their' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# component ID.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# For each component, they can always have "enabled" property and "certificate"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# property. More configurations for each component can be found in component' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# manifest file.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo 'components:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' gateway:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' port: ${instance-components_gateway_port}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' debug: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' apiml:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' security:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' useInternalMapper: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' auth:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' provider: zosmf' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' zosmf:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' jwtAutoconfiguration: jwt' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' serviceId: ibmzosmf' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' authorization:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' endpoint:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' provider: "native"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' x509:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' server:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' internal:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # gateway supports internal connector' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' port: 7550' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' ssl:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # internal connector can use different certificate' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # certificate:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # keystore:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # alias: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # If we customize this to use different external certificate, than should also' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # define "server.internal.ssl.certificate" and enable "server.internal.ssl.enabled".' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # certificate:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # keystore:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # alias: ""' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' metrics-service:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' port: 7551' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' debug: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' cloud-gateway:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' port: 7563' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' debug: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' api-catalog:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' port: ${instance-components_api_catalog_port}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' debug: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' discovery:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' port: ${instance-components_discovery_port}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' debug: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Define this value to match your number of Discovery StatefulSet if you are running containerized Zowe' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # replicas: 1' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' caching-service:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' port: ${instance-components_caching_service_port}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' debug: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' storage:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' evictionStrategy: reject' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # can be inMemory, VSAM, redis or infinispan' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' mode: infinispan' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' infinispan:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # this is required if storage mode is infinispan' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' jgroups:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' port: ${instance-components_caching_service_storage_infinispan_jgroups_port}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' app-server:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' port: 7556' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' debug: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # we can customize any component with custom certificate' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # the missing definitions will be picked from "zowe.certificate"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # certificate:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # keystore:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # alias: app-server' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # pem:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # key: /global/zowe/keystore/localhost/localhost.keystore.app-server.key' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # certificate: /global/zowe/keystore/localhost/localhost.keystore.app-server.cer-ebcdic' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' zss:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' port: 7557' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' crossMemoryServerName: ZWESIS_STD' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' tls: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' agent:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' jwt:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' fallback: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' jobs-api:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' debug: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' port: 7558' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' files-api:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' debug: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' port: 7559' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' explorer-jes:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' explorer-mvs:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' explorer-uss:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Each extension can have dedicated definition similar to core components.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # my-extension:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # enabled: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# Zowe high availability instances customizations' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# This section includes customizations for each Zowe high availability instance.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# You can start each HA instance with `zwe start --ha-instance `.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# haInstances:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # HA instance ID' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# lpar1:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # hostname where this instance will be started' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# hostname: lpar1.my-company.com' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # Your &SYSNAME for this LPAR' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # This sysname will be used to route your JES command to target system.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# sysname: LPR1' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # for this HA instance, we did not customize "components", so it will use default value.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # HA instance ID, we will start 2 instances on LPAR2' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # **NOTE**, we can only start one Gateway in same LPAR.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# lpar2a:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # hostname where this instance will be started' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# hostname: lpar2.my-company.com' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # Your &SYSNAME for this LPAR' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # This sysname will be used to route your JES command to target system.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# sysname: LPR2' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # These configurations will overwrite highest level default "components" configuration' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# components:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# discovery:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # use customized port on this instance' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# port: 17553' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# api-catalog:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# port: 17552' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# app-server:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # no app-server in this instance' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# zss:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # no app-server in this instance' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# jobs-api:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# port: 18545' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# enabled: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# files-api:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# port: 18547' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# enabled: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# caching-service:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# port: 17555' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# lpar2b:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# hostname: lpar2.my-company.com' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # your &SYSNAME for this LPAR' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# sysname: LPR2' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # These configurations will overwrite highest level default "components" configuration' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# components:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# gateway:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# discovery:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# api-catalog:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# app-server:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# port: 28544' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# zss:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# port: 28542' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# jobs-api:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# enabled: true' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# files-api:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# caching-service:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+]]>
+ shell-JCL
+ 1024
+
+
+
+
+ Zowe installation
+ Zowe installation
+
+ Run the Zowe install
+ Configure Zowe.
+
+
+
+ zwe install -c ${instance-zowe_runtimeDirectory}/zowe.yml
+ Will create remaining runtime data sets under zowe.setup.dataset.prefix definition,
+ i.e. under specified prefix ${instance-zowe_setup_dataset_prefix}:
+ SZWEAUTH contains few Zowe load modules (++PROGRAM).
+ SZWESAMP contains several sample configurations.
+ SZWEEXEC contains few utilities used by Zowe.
+ SZWELOAD contains config manager for REXX.
+ ]]>
+ 1
+ z/OS System Programmer
+ false
+ false
+
+ set -e
+set -x
+
+export JAVA_HOME='${instance-java_home}'
+export NODE_HOME='${instance-node_home}'
+
+export PATH=$PATH:'${instance-zowe_runtimeDirectory}/bin'
+
+zwe install -c '${instance-zowe_runtimeDirectory}/zowe.yaml' --allow-overwrite
+ shell-JCL
+ 1024
+
+
+
+
+ Run scripts for Zowe initialization
+ Executes scripts for Zowe initialization
+
+
+
+
+
+ zwe init mvs -c ${instance-zowe_runtimeDirectory}/zowe.yml --allow-overwrite
+ zwe init stc -c ${instance-zowe_runtimeDirectory}/zowe.yml --allow-overwrite
+
+ NOTE:
+ Each zwe init sub-command defines a configuration.
+
+
mvs: Copy the data sets provided with Zowe to custom data sets.
+
stc: Configure the system to launch the Zowe started task.
+
+ ]]>
+ 1
+ z/OS System Programmer
+ false
+ false
+
+ set -e
+set -x
+
+export JAVA_HOME='${instance-java_home}'
+export NODE_HOME='${instance-node_home}'
+
+export PATH=$PATH:'${instance-zowe_runtimeDirectory}/bin'
+
+zwe init mvs -c '${instance-zowe_runtimeDirectory}/zowe.yaml' --allow-overwrite
+zwe init stc -c '${instance-zowe_runtimeDirectory}/zowe.yaml' --allow-overwrite
+
+ shell-JCL
+ 1024
+
+
+
+
+
diff --git a/workflows/files/ZWECONF.properties b/workflows/files/ZWECONF.properties
index 876020cab4..5e76d2b27e 100644
--- a/workflows/files/ZWECONF.properties
+++ b/workflows/files/ZWECONF.properties
@@ -140,10 +140,10 @@ zowe_job_prefix=ZWE1
# zowe_externalDomains
# Label: Zowe external domains
-# Abstract: This should be the domain name of your Dynamic VIP Address (DVIPA)
+# Abstract: The list of external domains
# Category: zowe
# Description:
-# This should be the domain name of your Dynamic VIP Address (DVIPA)
+# Defines a list of external domains that will be used by the Zowe instance.
zowe_externalDomains=sample-domain.com
# zowe_externalPort
diff --git a/workflows/files/ZWECONF.xml b/workflows/files/ZWECONF.xml
index 5d725d8adf..5d72cf3f92 100644
--- a/workflows/files/ZWECONF.xml
+++ b/workflows/files/ZWECONF.xml
@@ -12,9 +12,9 @@
-
- Where Zowe MVS data sets will be installed
- Where Zowe MVS data sets will be installed
+
+ Prefix of datasets where remaining runtime datasets will be created
+ Prefix of datasets where remaining runtime libraries will be created within execution of Zowe install step (SZWEAUTH, SZWESAMP, SZWEEXEC, SZWELOAD)zowe
@@ -202,8 +202,8 @@ It is used by ZWESLSTC or by zwe command
- The domain name of your Dynamic VIP Address (DVIPA)
- The domain name of your Dynamic VIP Address (DVIPA)
+ The list of external domains
+ Defines a list of external domains that will be used by the Zowe instance.zowe
@@ -317,7 +317,7 @@ some use cases, like containerization, this port could be different.
- File location for cert truststore. For keyring, the format is "safkeyring://OWNER/KEYRING"
+ File location for certificate truststore. For keyring, the format is "safkeyring://OWNER/KEYRING"File location for the certificate truststorecertificates
@@ -405,10 +405,10 @@ How we want to verify SSL certificates of services. Valid values are:
-
- Path to the NodeJS home
- Path to the NodeJS home
- node
+
+ Path to the Node.js home
+ Path to the Node.js home
+ Node.js
@@ -448,9 +448,9 @@ How we want to verify SSL certificates of services. Valid values are:
-
- Check this option to enable the gateway
- Check this option to enable the gateway
+
+ Check this option to enable Gateway
+ Check this option to enable Gatewaycomponents
@@ -460,8 +460,8 @@ How we want to verify SSL certificates of services. Valid values are:
- Port for the API ML gateway
- Port for the API ML gateway
+ Port for the API ML Gateway
+ Port for the API ML Gatewaycomponents
@@ -469,10 +469,21 @@ How we want to verify SSL certificates of services. Valid values are:
7554
+
+
+ Check this option to enable the Gateway internal ESM identity mapper
+ Check this option to enable Gateway internal ESM identity mapper
+ components
+
+
+
+ false
+
+
- Switch on the debug mode for the gateway
- Switch on the debug mode for the gateway
+ Switch on the debug mode for Gateway
+ Switch on the debug mode for Gatewaycomponents
@@ -481,9 +492,9 @@ How we want to verify SSL certificates of services. Valid values are:
-
- Authorization provider for the gateway
- Authorization provider for the gateway
+
+ Authorization provider for the Gateway
+ Authorization provider for the Gatewaycomponents
@@ -492,9 +503,9 @@ How we want to verify SSL certificates of services. Valid values are:
-
- JWT auto configuration for gateway security auth
- JWT auto configuration for gateway security auth
+
+ JWT auto configuration for Gateway security auth
+ JWT auto configuration for Gateway security authcomponents
@@ -503,9 +514,9 @@ How we want to verify SSL certificates of services. Valid values are:
-
- Service ID for gateway security auth
- Service ID for gateway security auth
+
+ Service ID for Gateway security auth
+ Service ID for Gateway security authcomponents
@@ -514,7 +525,7 @@ How we want to verify SSL certificates of services. Valid values are:
-
+
Check to enable the security authorization endpointCheck to enable the security authorization endpointcomponents
@@ -525,9 +536,9 @@ How we want to verify SSL certificates of services. Valid values are:
-
- Security authorization provider for the gateway
- Security authorization provider for the gateway
+
+ Security authorization provider for the Gateway
+ Security authorization provider for the Gatewaycomponents
@@ -535,9 +546,9 @@ How we want to verify SSL certificates of services. Valid values are:
-
- Check to enable the gateway security x509
- Check to enable the gateway security x509
+
+ Check to enable the Gateway security x509
+ Check to enable the Gateway security x509components
@@ -646,8 +657,8 @@ How we want to verify SSL certificates of services. Valid values are:
- Check this option to enable the API Catalog
- Check this option to enable the API Catalog
+ Check this option to enable API Catalog
+ Check this option to enable API Catalogcomponents
@@ -678,9 +689,9 @@ How we want to verify SSL certificates of services. Valid values are:
-
- Check this option to enable the Discovery service
- Check this option to enable the Discovery service
+
+ Check this option to enable Discovery service
+ Check this option to enable Discovery servicecomponents
@@ -690,8 +701,8 @@ How we want to verify SSL certificates of services. Valid values are:
- Port on which the Discovery service should be running
- Port on which the Discovery service should be running
+ Port on which Discovery service should be running
+ Port on which Discovery service should be runningcomponents
@@ -711,9 +722,9 @@ How we want to verify SSL certificates of services. Valid values are:
-
- Check this option to enable the Caching service
- Check this option to enable the Caching service
+
+ Check this option to enable Caching service
+ Check this option to enable Caching servicecomponents
@@ -723,8 +734,8 @@ How we want to verify SSL certificates of services. Valid values are:
- Port for the caching service
- Port for the caching service
+ Port for Caching service
+ Port for Caching servicecomponents
@@ -804,9 +815,9 @@ How we want to verify SSL certificates of services. Valid values are:
-
- Check this option to enable the app server
- Check this option to enable the app server.
+
+ Check this option to enable App server
+ Check this option to enable App server.components
@@ -827,8 +838,8 @@ How we want to verify SSL certificates of services. Valid values are:
- Port for the app server
- Port for the app server
+ Port for App server
+ Port for App servercomponents
@@ -959,8 +970,8 @@ How we want to verify SSL certificates of services. Valid values are:
- Check this option to enable the JES explorer
- Check this option to enable the JES explorer.
+ Check this option to enable JES explorer
+ Check this option to enable JES explorer.components
@@ -970,8 +981,8 @@ How we want to verify SSL certificates of services. Valid values are:
- Check this option to enable the MVS explorer
- Check this option to enable the MVS explorer.
+ Check this option to enable MVS explorer
+ Check this option to enable MVS explorer.components
@@ -981,8 +992,8 @@ How we want to verify SSL certificates of services. Valid values are:
- Check this option to enable the USS explorer
- Check this option to enable the USS explorer.
+ Check this option to enable USS explorer
+ Check this option to enable USS explorer.components
@@ -1146,20 +1157,7 @@ How we want to verify SSL certificates of services. Valid values are:
ZWESASTC
-
-
-
- Check to enable this run step with the zwe install command. For convenience build only.
- Check this option to enable the optional workflow step with zwe install command. After Zowe convenience build is extracted,
- you can enable this flag to run the zwe install command to install MVS data sets within this workflow run.
- This option is for convenience build only. SMP/E installs the MVS data sets during installation.
- installMVSDatasets
-
-
-
- false
-
-
+
@@ -1231,8 +1229,7 @@ How we want to verify SSL certificates of services. Valid values are:
-
-
+ Run this step to fill base variables.1z/OS System Programmer
@@ -1256,6 +1253,7 @@ How we want to verify SSL certificates of services. Valid values are:
+
@@ -2043,17 +2041,17 @@ echo ' home: "$!{instance-java_home}"' >> "${instance-zowe_runtimeDirectory}/zo
echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '#-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
-echo '# node.js configuration' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# Node.js configuration' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
-echo '# Some Zowe components requires node.js. Define the path where you have your' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
-echo '# node.js is installed.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# Some Zowe components requires Node.js. Define the path where you have your' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# Node.js is installed.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '#' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '# **NOTE**: this field can be updated automatically if you pass `--update-config`' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '# to `zwe init` command.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '#-------------------------------------------------------------------------------' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo 'node:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo ' # **COMMONLY_CUSTOMIZED**' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
-echo ' # Path to your node.js home directory' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' # Path to your Node.js home directory' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo ' home: "$!{instance-node_home}"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
@@ -2096,6 +2094,7 @@ echo ' debug: ${instance-components_gateway_debug}' >> "${instance-zowe_runti
echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo ' apiml:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo ' security:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' useInternalMapper: ${instance-components_gateway_internalMapper}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo ' auth:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo ' provider: "$!{instance-components_gateway_apiml_security_auth_provider}"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo ' zosmf:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
@@ -2127,6 +2126,7 @@ echo ' debug: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo ' apiml:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo ' security:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo ' useInternalMapper: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo ' auth:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo ' provider: "zosmf"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo ' zosmf:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
@@ -2234,7 +2234,11 @@ echo ' name: "$!{instance-components_caching_service_storage_vsam_name}"'
echo ' infinispan:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo ' # this is required if storage mode is infinispan' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo ' jgroups:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+#if (${instance-components_caching_service_storage_mode} == "infinispan" )
echo ' port: ${instance-components_caching_service_storage_infinispan_jgroups_port}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+#else
+echo ' port: 7600' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+#end
#end
#if (${instance-components_caching_service_enabled} == "false" )
echo ' caching-service:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
@@ -2365,7 +2369,7 @@ echo '# sysname: LPR1' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '# # for this HA instance, we did not customize "components", so it will use default value.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '# # HA instance ID, we will start 2 instances on LPAR2' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
-echo '# # **NOTE**, we can only start one gateway in same LPAR.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
+echo '# # **NOTE**, we can only start one Gateway in same LPAR.' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '# lpar2a:' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '# # hostname where this instance will be started' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
echo '# hostname: lpar2.my-company.com' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
@@ -2428,26 +2432,21 @@ echo '# enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml"
Zowe installationZowe installation
-
- Run the Zowe install (only for convenience build)
+
+ Run the Zowe installConfigure Zowe.
-
- 1==1
- Always true
-
-
- Skips this step if Install the MVS data sets was not selected
- !${instance-zowe_setup_installStep_enabled}
- skipped
-
-
- zwe install -c ${instance-zowe_runtimeDirectory}/zowe.yml
+ This step runs the command: zwe install -c ${instance-zowe_runtimeDirectory}/zowe.yml
+ Will create remaining runtime data sets under zowe.setup.dataset.prefix definition,
+ i.e. under specified prefix ${instance-zowe_setup_dataset_prefix}:
+ SZWEAUTH contains few Zowe load modules (++PROGRAM).
+ SZWESAMP contains several sample configurations.
+ SZWEEXEC contains few utilities used by Zowe.
+ SZWELOAD contains config manager for REXX.
]]>1z/OS System Programmer
@@ -2469,8 +2468,8 @@ zwe install -c '${instance-zowe_runtimeDirectory}/zowe.yaml' --allow-overwrite
- Run the Zowe init
- Executes the Zowe initialization
+ Run scripts for Zowe initialization
+ Executes scripts for Zowe initialization
@@ -2486,11 +2485,10 @@ zwe install -c '${instance-zowe_runtimeDirectory}/zowe.yaml' --allow-overwrite
Each zwe init sub-command defines a configuration.
mvs: Copy the data sets provided with Zowe to custom data sets.
-
security: Create the user IDs and security manager settings.
-
apfauth: APF authorize the LOADLIB containing the modules that need to perform z/OS priviledged security calls.
-
certificate: Configure Zowe to use TLS certificates.
-
vsam: Configure the VSAM files needed to run the Zowe caching service used for high availability (HA).
stc: Configure the system to launch the Zowe started task.
vsam: Configure the VSAM files needed to run the Zowe caching service used for high availability (HA).
+#end
]]>
1
@@ -2517,24 +2515,20 @@ zwe init vsam -c '${instance-zowe_runtimeDirectory}/zowe.yaml' --allow-overwrite
- Run the Zowe init security
- Executes the Zowe initialization for security setup
+ Run scripts for Zowe security initialization
+ Executes Zowe initialization scripts for security setup
- zwe init apfauth -c ${instance-zowe_runtimeDirectory}/zowe.yml zwe init security -c ${instance-zowe_runtimeDirectory}/zowe.yml --allow-overwrite
+ zwe init apfauth -c ${instance-zowe_runtimeDirectory}/zowe.yml
NOTE:
Each zwe init sub-command defines a configuration.
-
mvs: Copy the data sets provided with Zowe to custom data sets.
security: Create the user IDs and security manager settings.
apfauth: APF authorize the LOADLIB containing the modules that need to perform z/OS priviledged security calls.
-
certificate: Configure Zowe to use TLS certificates.
-
vsam: Configure the VSAM files needed to run the Zowe caching service used for high availability (HA).
-
stc: Configure the system to launch the Zowe started task.
]]>1
diff --git a/workflows/files/ZWECRECR.xml b/workflows/files/ZWECRECR.xml
index c5d3c3b812..094f05cc32 100644
--- a/workflows/files/ZWECRECR.xml
+++ b/workflows/files/ZWECRECR.xml
@@ -33,7 +33,7 @@
Please, specify your security management software
- Please, specify the ESM system you use on your workstation
+ Please, specify the ESM system you useGeneral
@@ -276,7 +276,8 @@ TSS GENREQ(${instance-tss_acid}) +
- This step will generate the CSR request into the ${instance-output_dataset}
+ This step uses ACF2 command GENREQ
]]>
1Security Administratortrue
@@ -302,8 +303,7 @@ GENREQ ${instance-acf2_acid} +
- This step uses ACF2 command GENREQ]]>
+ 1Security Administratortrue
diff --git a/workflows/files/ZWELOADC.xml b/workflows/files/ZWELOADC.xml
index c823b2b813..786e28fb37 100644
--- a/workflows/files/ZWELOADC.xml
+++ b/workflows/files/ZWELOADC.xml
@@ -192,7 +192,7 @@
Use this step to define the variables for RACF.
]]>
1
@@ -252,7 +252,7 @@
Use this step to define the variables for ACF2.
For more information about security system setup and it's variables, please open via right-click in new tab or window and refer to security documentation
- configure ACF2 security certificates.
+ configure ACF2 security certificates.
]]>1Security Administrator
@@ -367,7 +367,7 @@
This step will load signed client authentication certificate from the ${instance-output_dataset} into ESM
]]>1
@@ -452,7 +452,7 @@ DCDSN(${instance-output_dataset}) TRUST
This step will load signed client authentication certificate from the ${instance-output_dataset} into ESM
For more information about security system setup and it's variables, please open via right-click in new tab or window and refer to security documentation
- configure ACF2 security certificates.