From 74adfdede80a017b876a10c3d1dec5560237d8d3 Mon Sep 17 00:00:00 2001 From: Joe Winchester Date: Wed, 3 Jul 2024 13:14:48 +0100 Subject: [PATCH 01/67] Remove deprecated commented value for createZosmfTrust Signed-off-by: Joe Winchester --- example-zowe.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/example-zowe.yaml b/example-zowe.yaml index 0a611cf037..46c20f195a 100644 --- a/example-zowe.yaml +++ b/example-zowe.yaml @@ -178,7 +178,6 @@ zowe: # certificate: # # Type of certificate storage. Valid values are: PKCS12, JCEKS, JCECCAKS, JCERACFKS, JCECCARACFKS, or JCEHYBRIDRACFKS # type: JCERACFKS - # createZosmfTrust: true # keyring: # # **COMMONLY_CUSTOMIZED** # # keyring name From f39938fa8e6807cd38585e85dc52472bbd4529e3 Mon Sep 17 00:00:00 2001 From: Martin Zeithaml <66114686+Martin-Zeithaml@users.noreply.github.com> Date: Fri, 5 Jul 2024 10:25:16 +0200 Subject: [PATCH 02/67] Change path to home (#3896) Signed-off-by: Martin Zeithaml Co-authored-by: 1000TurquoisePogs --- bin/libs/java.sh | 2 +- bin/libs/node.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/libs/java.sh b/bin/libs/java.sh index b610ebe58f..bf62ce6c9a 100644 --- a/bin/libs/java.sh +++ b/bin/libs/java.sh @@ -83,7 +83,7 @@ require_java() { fi if [ -z "${JAVA_HOME}" ]; then - print_error_and_exit "Error ZWEL0122E: Cannot find java. Set the java.path value in the Zowe YAML, or include java in the PATH environment variable of any accounts that start or manage Zowe" "" 122 + print_error_and_exit "Error ZWEL0122E: Cannot find java. Set the java.home value in the Zowe YAML, or include java in the PATH environment variable of any accounts that start or manage Zowe" "" 122 fi ensure_java_is_on_path diff --git a/bin/libs/node.sh b/bin/libs/node.sh index 4386be9005..d457c76b2f 100644 --- a/bin/libs/node.sh +++ b/bin/libs/node.sh @@ -94,7 +94,7 @@ require_node() { fi if [ -z "${NODE_HOME}" ]; then - print_error_and_exit "Error ZWEL0121E: Cannot find node. Set the node.path value in the Zowe YAML, or include node in the PATH environment variable of any accounts that start or manage Zowe" "" 121 + print_error_and_exit "Error ZWEL0121E: Cannot find node. Set the node.home value in the Zowe YAML, or include node in the PATH environment variable of any accounts that start or manage Zowe" "" 121 fi ensure_node_is_on_path From 3eccda6837ccc00a4660a5ceb28a7590cb5a41eb Mon Sep 17 00:00:00 2001 From: pz636264 Date: Tue, 9 Jul 2024 12:50:04 +0200 Subject: [PATCH 03/67] install command step optional Signed-off-by: pz636264 --- workflows/files/ZWECONF.xml | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/workflows/files/ZWECONF.xml b/workflows/files/ZWECONF.xml index 8f4ee7b153..d3185f714e 100644 --- a/workflows/files/ZWECONF.xml +++ b/workflows/files/ZWECONF.xml @@ -1147,6 +1147,19 @@ How we want to verify SSL certificates of services. Valid values are: ZWESASTC + + + Only for convenience build, check this to enable to run optional step with zwe install command + Check this to enable optional workflow step with zwe install command. After Zowe convenience build was extracted, + you can enable this flag to run the zwe install command to install MVS data sets within this workflow run. + Only for convenience build, SMP/E installs the MVS data sets during install. + installMVSDatasets + + + + false + + @@ -1219,6 +1232,7 @@ How we want to verify SSL certificates of services. Valid values are: + Run this step to fill base variables. 1 z/OS System Programmer @@ -1408,7 +1422,7 @@ How we want to verify SSL certificates of services. Valid values are: - + Run this step to specify the variables for the Caching Service 1 z/OS System Programmer @@ -2410,10 +2424,22 @@ echo '# enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml" Zowe installation Zowe installation - - Run the Zowe install - Configure the Zowe - + + Run the Zowe install (only for convenience build) + Configure the Zowe. + + + + 1==1 + Always true + + + Skips this step if Install the MVS data sets wasn't selected + !${instance-zowe_setup_installStep_enabled} + skipped + + + Date: Wed, 10 Jul 2024 19:17:38 +0200 Subject: [PATCH 04/67] fix (#3897) Signed-off-by: Pavel Jares --- files/SZWESAMP/ZWEITSS | 4 ++-- workflows/templates/ZWESECUR.vtl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/files/SZWESAMP/ZWEITSS b/files/SZWESAMP/ZWEITSS index 03ed3c0804..512ef8c8f6 100644 --- a/files/SZWESAMP/ZWEITSS +++ b/files/SZWESAMP/ZWEITSS @@ -99,7 +99,7 @@ /* userid for ZOWE main server */ TSS LIST({zowe.setup.security.users.zowe}) SEGMENT(OMVS) - TSS CREATE({zowe.setup.security.users.zowe}) TYPE(USER) PASS(NOPW,0) + + TSS CREATE({zowe.setup.security.users.zowe}) TYPE(USER) PROTECTED + NAME('ZOWE MAIN SERVER') + DEPT(&STCUDEP.) TSS ADD({zowe.setup.security.users.zowe}) + @@ -109,7 +109,7 @@ /* userid for ZIS cross memory server */ TSS LIST({zowe.setup.security.users.zis}) SEGMENT(OMVS) - TSS CREATE({zowe.setup.security.users.zis}) TYPE(USER) PASS(NOPW,0) + + TSS CREATE({zowe.setup.security.users.zis}) TYPE(USER) PROTECTED + NAME('ZOWE ZIS CROSS MEMORY SERVER') + DEPT(&STCUDEP.) TSS ADD({zowe.setup.security.users.zis}) + diff --git a/workflows/templates/ZWESECUR.vtl b/workflows/templates/ZWESECUR.vtl index 07675682af..25c2f367c2 100644 --- a/workflows/templates/ZWESECUR.vtl +++ b/workflows/templates/ZWESECUR.vtl @@ -679,7 +679,7 @@ $$ /* userid for ZOWE main server */ TSS LIST(&ZOWEUSER.) SEGMENT(OMVS) - TSS CREATE(&ZOWEUSER.) TYPE(USER) PASS(NOPW,0) + + TSS CREATE(&ZOWEUSER.) TYPE(USER) PROTECTED + NAME('ZOWE MAIN SERVER') + DEPT(&STCUDEP.) TSS ADD(&ZOWEUSER.) GROUP(&STCGRP.) + @@ -688,7 +688,7 @@ $$ /* userid for ZIS cross memory server */ TSS LIST(&ZISUSER.) SEGMENT(OMVS) - TSS CREATE(&ZISUSER.) TYPE(USER) PASS(NOPW,0) + + TSS CREATE(&ZISUSER.) TYPE(USER) PROTECTED + NAME('ZOWE ZIS CROSS MEMORY SERVER') + DEPT(&STCUDEP.) TSS ADD(&ZISUSER.) GROUP(&STCGRP.) + From c55e750a53b67afd7e94ba1a16eb45c116c91500 Mon Sep 17 00:00:00 2001 From: Mark Ackert <35308966+MarkAckert@users.noreply.github.com> Date: Wed, 10 Jul 2024 15:17:40 -0400 Subject: [PATCH 05/67] Backport fixes in the v2.x/rc branch to staging (#3907) * Fix default schema validation error when using keyrings (#3901) Signed-off-by: 1000TurquoisePogs * Respect "import" option on pkcs12 certificate setup (#3905) Signed-off-by: 1000TurquoisePogs --------- Signed-off-by: 1000TurquoisePogs Co-authored-by: 1000TurquoisePogs --- schemas/zowe-yaml-schema.json | 362 +++++++++++++++++++--------------- 1 file changed, 204 insertions(+), 158 deletions(-) diff --git a/schemas/zowe-yaml-schema.json b/schemas/zowe-yaml-schema.json index 5add61892c..071b908aaf 100644 --- a/schemas/zowe-yaml-schema.json +++ b/schemas/zowe-yaml-schema.json @@ -161,208 +161,254 @@ } }, "certificate": { - "type": "object", - "additionalProperties": false, - "if": { - "properties": { - "type": { - "const": "PKCS12" - } - } - }, - "then": { - "required": ["pkcs12"] - }, - "else": { - "required": ["keyring"] - }, - "description": "Certificate related configurations", - "properties": { - "type": { - "type": "string", - "description": "Type of certificate storage method.", - "enum": ["PKCS12", "JCEKS", "JCECCAKS", "JCERACFKS", "JCECCARACFKS", "JCEHYBRIDRACFKS"], - "default": "PKCS12" - }, - "pkcs12": { + "oneOf": [ + { "type": "object", - "additionalProperties": false, - "description": "PKCS#12 keystore settings", + "required": [ "pkcs12" ], "properties": { - "directory": { - "$ref": "/schemas/v2/server-common#zowePath", - "description": "Keystore directory" - }, - "name": { - "type": "string", - "description": "Certificate alias name. Note: please use all lower cases as alias.", - "default": "localhost" - }, - "password": { - "type": "string", - "description": "Keystore password", - "default": "password" - }, - "caAlias": { - "type": "string", - "description": "Alias name of self-signed certificate authority. Note: please use all lower cases as alias.", - "default": "local_ca" - }, - "caPassword": { - "type": "string", - "description": "Password of keystore stored self-signed certificate authority.", - "default": "local_ca_password" - }, - "lock": { - "type": "boolean", - "description": "Whether to restrict the permissions of the keystore after creation" + "type": { "const": "PKCS12" }, + "pkcs12": { + "type": "object", + "additionalProperties": false, + "description": "PKCS#12 keystore settings", + "properties": { + "directory": { + "$ref": "/schemas/v2/server-common#zowePath", + "description": "Keystore directory" + }, + "name": { + "type": [ "string", "null" ], + "description": "Certificate alias name. Note: please use all lower cases as alias.", + "default": "localhost" + }, + "password": { + "type": [ "string", "null" ], + "description": "Keystore password", + "default": "password" + }, + "caAlias": { + "type": [ "string", "null" ], + "description": "Alias name of self-signed certificate authority. Note: please use all lower cases as alias.", + "default": "local_ca" + }, + "caPassword": { + "type": [ "string", "null" ], + "description": "Password of keystore stored self-signed certificate authority.", + "default": "local_ca_password" + }, + "lock": { + "type": "boolean", + "description": "Whether to restrict the permissions of the keystore after creation" + }, + "import": { + "type": "object", + "additionalProperties": false, + "description": "Configure this section if you want to import certificate from another PKCS#12 keystore.", + "properties": { + "keystore": { + "type": "string", + "description": "Existing PKCS#12 keystore which holds the certificate issued by external CA." + }, + "password": { + "type": "string", + "description": "Password of the above keystore" + }, + "alias": { + "type": "string", + "description": "Certificate alias will be imported. Note: please use all lower cases as alias." + } + } + } + } }, - "import": { + "dname": { "type": "object", "additionalProperties": false, - "description": "Configure this section if you want to import certificate from another PKCS#12 keystore.", + "description": "Certificate distinguish name", "properties": { - "keystore": { + "caCommonName": { "type": "string", - "description": "Existing PKCS#12 keystore which holds the certificate issued by external CA." + "description": "Common name of certificate authority generated by Zowe." }, - "password": { + "commonName": { + "type": "string", + "description": "Common name of certificate generated by Zowe." + }, + "orgUnit": { + "type": "string", + "description": "Organization unit of certificate generated by Zowe." + }, + "org": { + "type": "string", + "description": "Organization of certificate generated by Zowe." + }, + "locality": { "type": "string", - "description": "Password of the above keystore" + "description": "Locality of certificate generated by Zowe. This is usually the city name." }, - "alias": { + "state": { "type": "string", - "description": "Certificate alias will be imported. Note: please use all lower cases as alias." + "description": "State of certificate generated by Zowe. You can also put province name here." + }, + "country": { + "type": "string", + "description": "2 letters country code of certificate generated by Zowe." } } + }, + "validity": { + "type": [ "integer", "null" ], + "description": "Validity days for Zowe generated certificates", + "default": 3650 + }, + "san": { + "type": "array", + "description": "Domain names and IPs should be added into certificate SAN. If this field is not defined, `zwe init` command will use `zowe.externalDomains`.", + "items": { + "type": "string" + } + }, + "importCertificateAuthorities": { + "type": "array", + "description": "PEM format certificate authorities will also be imported and trusted. If you have other certificate authorities want to be trusted in Zowe keyring, list the certificate labels here. **NOTE**, due to the limitation of RACDCERT command, this field should contain maximum 2 entries.", + "items": { + "type": "string" + } } - } + } }, - "keyring": { + { "type": "object", - "additionalProperties": false, - "description": "Configure this section if you are using z/OS keyring", + "required": [ "keyring" ], "properties": { - "owner": { - "type": "string", - "description": "keyring owner. If this is empty, Zowe will use the user ID defined as zowe.setup.security.users.zowe." - }, - "name": { - "type": "string", - "description": "keyring name" - }, - "label": { - "type": "string", - "description": "Label of Zowe certificate.", - "default": "localhost" - }, - "caLabel": { - "type": "string", - "description": "label of Zowe CA certificate.", - "default": "localca" - }, - "connect": { + "type": { "enum": ["JCEKS", "JCECCAKS", "JCERACFKS", "JCECCARACFKS", "JCEHYBRIDRACFKS"] }, + "keyring": { "type": "object", "additionalProperties": false, - "description": "Configure this section if you want to connect existing certificate in keyring to Zowe.", + "description": "Configure this section if you are using z/OS keyring", "properties": { - "user": { + "owner": { + "type": "string", + "description": "keyring owner. If this is empty, Zowe will use the user ID defined as zowe.setup.security.users.zowe." + }, + "name": { "type": "string", - "description": "Current owner of the existing certificate, can be SITE or an user ID." + "description": "keyring name" }, "label": { "type": "string", - "description": "Label of the existing certificate will be connected to Zowe keyring." + "description": "Label of Zowe certificate.", + "default": "localhost" + }, + "caLabel": { + "type": "string", + "description": "label of Zowe CA certificate.", + "default": "localca" + }, + "connect": { + "type": "object", + "additionalProperties": false, + "description": "Configure this section if you want to connect existing certificate in keyring to Zowe.", + "properties": { + "user": { + "type": "string", + "description": "Current owner of the existing certificate, can be SITE or an user ID." + }, + "label": { + "type": "string", + "description": "Label of the existing certificate will be connected to Zowe keyring." + } + } + }, + "import": { + "type": "object", + "additionalProperties": false, + "description": "Configure this section if you want to import existing certificate stored in data set to Zowe.", + "properties": { + "dsName": { + "type": "string", + "description": "Name of the data set holds the certificate issued by other CA. This data set should be in PKCS12 format and contain private key." + }, + "password": { + "type": "string", + "description": "Password for the PKCS12 data set." + } + } + }, + "zOSMF": { + "type": "object", + "additionalProperties": false, + "description": "Configure this section if you want to trust z/OSMF certificate authority in Zowe keyring.", + "properties": { + "ca": { + "type": "string", + "description": "z/OSMF certificate authority alias" + }, + "user": { + "type": "string", + "description": "z/OSMF user. Zowe initialization utility can detect alias of z/OSMF CA for RACF security system. The automated detection requires this z/OSMF user as input." + } + } } } }, - "import": { + "dname": { "type": "object", "additionalProperties": false, - "description": "Configure this section if you want to import existing certificate stored in data set to Zowe.", + "description": "Certificate distinguish name", "properties": { - "dsName": { + "caCommonName": { "type": "string", - "description": "Name of the data set holds the certificate issued by other CA. This data set should be in PKCS12 format and contain private key." + "description": "Common name of certificate authority generated by Zowe." }, - "password": { + "commonName": { "type": "string", - "description": "Password for the PKCS12 data set." - } - } - }, - "zOSMF": { - "type": "object", - "additionalProperties": false, - "description": "Configure this section if you want to trust z/OSMF certificate authority in Zowe keyring.", - "properties": { - "ca": { + "description": "Common name of certificate generated by Zowe." + }, + "orgUnit": { + "type": "string", + "description": "Organization unit of certificate generated by Zowe." + }, + "org": { "type": "string", - "description": "z/OSMF certificate authority alias" + "description": "Organization of certificate generated by Zowe." }, - "user": { + "locality": { "type": "string", - "description": "z/OSMF user. Zowe initialization utility can detect alias of z/OSMF CA for RACF security system. The automated detection requires this z/OSMF user as input." + "description": "Locality of certificate generated by Zowe. This is usually the city name." + }, + "state": { + "type": "string", + "description": "State of certificate generated by Zowe. You can also put province name here." + }, + "country": { + "type": "string", + "description": "2 letters country code of certificate generated by Zowe." } } - } - } - }, - "dname": { - "type": "object", - "additionalProperties": false, - "description": "Certificate distinguish name", - "properties": { - "caCommonName": { - "type": "string", - "description": "Common name of certificate authority generated by Zowe." - }, - "commonName": { - "type": "string", - "description": "Common name of certificate generated by Zowe." }, - "orgUnit": { - "type": "string", - "description": "Organization unit of certificate generated by Zowe." - }, - "org": { - "type": "string", - "description": "Organization of certificate generated by Zowe." + "validity": { + "type": [ "integer", "null" ], + "description": "Validity days for Zowe generated certificates", + "default": 3650 }, - "locality": { - "type": "string", - "description": "Locality of certificate generated by Zowe. This is usually the city name." - }, - "state": { - "type": "string", - "description": "State of certificate generated by Zowe. You can also put province name here." + "san": { + "type": "array", + "description": "Domain names and IPs should be added into certificate SAN. If this field is not defined, `zwe init` command will use `zowe.externalDomains`.", + "items": { + "type": "string" + } }, - "country": { - "type": "string", - "description": "2 letters country code of certificate generated by Zowe." + "importCertificateAuthorities": { + "type": "array", + "description": "PEM format certificate authorities will also be imported and trusted. If you have other certificate authorities want to be trusted in Zowe keyring, list the certificate labels here. **NOTE**, due to the limitation of RACDCERT command, this field should contain maximum 2 entries.", + "items": { + "type": "string" + } } } - }, - "validity": { - "type": "integer", - "description": "Validity days for Zowe generated certificates", - "default": 3650 - }, - "san": { - "type": "array", - "description": "Domain names and IPs should be added into certificate SAN. If this field is not defined, `zwe init` command will use `zowe.externalDomains`.", - "items": { - "type": "string" - } - }, - "importCertificateAuthorities": { - "type": "array", - "description": "PEM format certificate authorities will also be imported and trusted. If you have other certificate authorities want to be trusted in Zowe keyring, list the certificate labels here. **NOTE**, due to the limitation of RACDCERT command, this field should contain maximum 2 entries.", - "items": { - "type": "string" - } } - } + ] }, "vsam": { "type": "object", From d81075edb2101ae652da2944ea1a44c03b64de6b Mon Sep 17 00:00:00 2001 From: Martin Zeithaml Date: Thu, 11 Jul 2024 13:26:11 +0200 Subject: [PATCH 06/67] Minor changes Signed-off-by: Martin Zeithaml --- files/SZWESAMP/ZWEINSTL | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/files/SZWESAMP/ZWEINSTL b/files/SZWESAMP/ZWEINSTL index 9d9249c81a..22011e9936 100644 --- a/files/SZWESAMP/ZWEINSTL +++ b/files/SZWESAMP/ZWEINSTL @@ -36,20 +36,20 @@ blksize(32760) unit(sysallda) space(30,15) tracks //STDOUT DD SYSOUT=* //STDERR DD SYSOUT=* //STDPARM DD * -SH cd {zowe.runtimeDirectory} && -cd files/SZWESAMP && +SH cd '{zowe.runtimeDirectory}' && +cd 'files/SZWESAMP' && cp * "//'{zowe.setup.dataset.prefix}.SZWESAMP'" && -cd ../SZWEEXEC && +cd '../SZWEEXEC' && cp * "//'{zowe.setup.dataset.prefix}.SZWEEXEC'" && -cd ../SZWELOAD && +cd '../SZWELOAD' && cp * "//'{zowe.setup.dataset.prefix}.SZWELOAD'" && -cd ../../components/launcher/bin -cp zowe_launcher "//'{zowe.setup.dataset.prefix}.SZWEAUTH'" && -cd ../../zss/SAMPLIB && +cd '../../components/launcher/bin' && +cp zowe_launcher + "//'{zowe.setup.dataset.prefix}.SZWEAUTH(ZWELNCH)'" && +cd '../../zss/SAMPLIB' && cp ZWESASTC ZWESIP00 ZWESISTC ZWESISCH "//'{zowe.setup.dataset.prefix}.SZWESAMP'" && -cd ../LOADLIB && +cd '../LOADLIB' && cp ZWESIS01 ZWESAUX ZWESISDL "//'{zowe.setup.dataset.prefix}.SZWEAUTH'" /* - From a20455cc31310a34c2fd5496e147dbd2510f01ee Mon Sep 17 00:00:00 2001 From: Martin Zeithaml Date: Thu, 11 Jul 2024 13:43:12 +0200 Subject: [PATCH 07/67] Minor update Signed-off-by: Martin Zeithaml --- files/SZWESAMP/ZWEINSTL | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/files/SZWESAMP/ZWEINSTL b/files/SZWESAMP/ZWEINSTL index 22011e9936..525a794991 100644 --- a/files/SZWESAMP/ZWEINSTL +++ b/files/SZWESAMP/ZWEINSTL @@ -47,8 +47,12 @@ cd '../../components/launcher/bin' && cp zowe_launcher "//'{zowe.setup.dataset.prefix}.SZWEAUTH(ZWELNCH)'" && cd '../../zss/SAMPLIB' && -cp ZWESASTC ZWESIP00 ZWESISTC ZWESISCH +cp ZWESIP00 ZWESISCH "//'{zowe.setup.dataset.prefix}.SZWESAMP'" && +cp ZWESAUX + "//'{zowe.setup.dataset.prefix}.SZWESAMP(ZWESASTC)'" && +cp ZWESIS01 + "//'{zowe.setup.dataset.prefix}.SZWESAMP(ZWESISTC)'" && cd '../LOADLIB' && cp ZWESIS01 ZWESAUX ZWESISDL "//'{zowe.setup.dataset.prefix}.SZWEAUTH'" From 7824bc8d22d230f90acbc2d270e83f4d3449cbb7 Mon Sep 17 00:00:00 2001 From: Andrew Jandacek Date: Mon, 15 Jul 2024 16:16:05 +0200 Subject: [PATCH 08/67] language refactor Signed-off-by: Andrew Jandacek --- workflows/files/ZWECONF.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/workflows/files/ZWECONF.xml b/workflows/files/ZWECONF.xml index d3185f714e..1781c05b49 100644 --- a/workflows/files/ZWECONF.xml +++ b/workflows/files/ZWECONF.xml @@ -1149,10 +1149,10 @@ How we want to verify SSL certificates of services. Valid values are: - Only for convenience build, check this to enable to run optional step with zwe install command - Check this to enable optional workflow step with zwe install command. After Zowe convenience build was extracted, + This install option is only for convenience build. Check this option to enable this run step with the zwe install command. + 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. - Only for convenience build, SMP/E installs the MVS data sets during install. + This option is for convenience build only. SMP/E installs the MVS data sets during installation. installMVSDatasets @@ -2426,7 +2426,7 @@ echo '# enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml" Zowe installation Run the Zowe install (only for convenience build) - Configure the Zowe. + Configure Zowe. @@ -2434,7 +2434,7 @@ echo '# enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml" Always true - Skips this step if Install the MVS data sets wasn't selected + Skips this step if Install the MVS data sets was not selected !${instance-zowe_setup_installStep_enabled} skipped From e9b758b2f2179d845c5458de89e89f9b3dc1c4b3 Mon Sep 17 00:00:00 2001 From: Andrew Jandacek Date: Tue, 16 Jul 2024 15:26:47 +0200 Subject: [PATCH 09/67] fix component abstract/description language Signed-off-by: Andrew Jandacek --- workflows/files/ZWECONF.xml | 54 ++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/workflows/files/ZWECONF.xml b/workflows/files/ZWECONF.xml index 1781c05b49..d55f7f5060 100644 --- a/workflows/files/ZWECONF.xml +++ b/workflows/files/ZWECONF.xml @@ -448,9 +448,9 @@ How we want to verify SSL certificates of services. Valid values are: - - Should the APIML gateway be enabled? - Should the APIML gateway be enabled? + + Check this option to enable the gateway + Check this option to enable the gateway components @@ -579,9 +579,9 @@ How we want to verify SSL certificates of services. Valid values are: - - Use this option to enable the metrics seervice - Use this option to enable the metrics seervice + + Check this option to enable the Metrics service + Check this option to enable the Metrics service components @@ -612,9 +612,9 @@ How we want to verify SSL certificates of services. Valid values are: - - Use this option to enable the cloud gateway - Use this option to enable the cloud gateway + + Check this option to enable the Cloud gateway + Check this option to enable the Cloud gateway components @@ -645,9 +645,9 @@ How we want to verify SSL certificates of services. Valid values are: - - Use this option to enable the API catalog - Use this option to enable the API catalog + + Check this option to enable the API Catalog + Check this option to enable the API Catalog components @@ -678,9 +678,9 @@ How we want to verify SSL certificates of services. Valid values are: - - Should the automatic discovery be enabled? - Should the automatic discovery be enabled? + + Check this option to enable the Discovery service + Check this option to enable the Discovery service components @@ -711,9 +711,9 @@ How we want to verify SSL certificates of services. Valid values are: - - Check to enable the caching service - Check to enable the caching service + + Check this option to enable the Caching service + Check this option to enable the Caching service components @@ -804,7 +804,7 @@ 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 components @@ -838,8 +838,8 @@ How we want to verify SSL certificates of services. Valid values are: - Check this option to enable the ZSS component - Check this option to enable the ZSS component + Check this option to enable ZSS + Check this option to enable ZSS components @@ -959,8 +959,8 @@ How we want to verify SSL certificates of services. Valid values are: - Check this to enable the JES explorer - Check this to enable the JES explorer + Check this option to enable the JES explorer + Check this option to enable the JES explorer components @@ -970,8 +970,8 @@ How we want to verify SSL certificates of services. Valid values are: - Check this option to enable MVS explorer - Check this option to enable MVS explorer + Check this option to enable the MVS explorer + Check this option to enable the MVS explorer components @@ -981,8 +981,8 @@ How we want to verify SSL certificates of services. Valid values are: - Check this option to enable USS explorer - Check this option to enable USS explorer + Check this option to enable the USS explorer + Check this option to enable the USS explorer components From d252a5321a84590bcb644517d56eeddb29c08caa Mon Sep 17 00:00:00 2001 From: Andrew Jandacek Date: Tue, 16 Jul 2024 15:55:35 +0200 Subject: [PATCH 10/67] fix abstract lengths Signed-off-by: Andrew Jandacek --- workflows/files/ZWECONF.xml | 72 ++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/workflows/files/ZWECONF.xml b/workflows/files/ZWECONF.xml index d55f7f5060..183af7feb5 100644 --- a/workflows/files/ZWECONF.xml +++ b/workflows/files/ZWECONF.xml @@ -101,8 +101,8 @@ - VSAM data set with Record-Level-Sharing enabled or not - VSAM data set with Record-Level-Sharing enabled or not + VSAM data set with Record-Level-Sharing enabled or disabled + VSAM data set with Record-Level-Sharing enabled or disabled components @@ -202,8 +202,8 @@ It is used by ZWESLSTC or by zwe command - This should be the domain name of your Dynamic VIP Address (DVIPA) - This should be the domain name of your Dynamic VIP Address (DVIPA) + The domain name of your Dynamic VIP Address (DVIPA) + The domain name of your Dynamic VIP Address (DVIPA) zowe @@ -213,7 +213,7 @@ It is used by ZWESLSTC or by zwe command - This is the port you use to access Zowe Gateway from your web browser + 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. @@ -268,7 +268,7 @@ some use cases, like containerization, this port could be different. - Zowe certificate keystore file. In case of keyring the format is "safkeyring://OWNER/KEYRING". + Zowe certificate keystore file. For keyring, the format is "safkeyring://OWNER/KEYRING". Zowe certificate keystore file certificates @@ -317,7 +317,7 @@ some use cases, like containerization, this port could be different. - File location for the certificate truststore. Keyring is in the format "safkeyring://OWNER/KEYRING". + File location for cert truststore. For keyring, the format is "safkeyring://OWNER/KEYRING" File location for the certificate truststore certificates @@ -460,8 +460,8 @@ How we want to verify SSL certificates of services. Valid values are: - Port for the APIML gateway - Port for the APIML gateway + Port for the API ML gateway + Port for the API ML gateway components @@ -515,8 +515,8 @@ How we want to verify SSL certificates of services. Valid values are: - Use this to enable the security authorization endpoint - Use this to enable the security authorization endpoint + Check to enable the security authorization endpoint + Check to enable the security authorization endpoint components @@ -547,8 +547,8 @@ How we want to verify SSL certificates of services. Valid values are: - Enable gateway server internal connector - Enable gateway server internal connector + Check this option to enable gateway server internal connector + Check this option to enable gateway server internal connector components @@ -657,8 +657,8 @@ How we want to verify SSL certificates of services. Valid values are: - Port on which the API catalog should be running. - Port on which the API catalog should be running. + Port on which the API Catalog should be running. + Port on which the API Catalog should be running. components @@ -668,8 +668,8 @@ How we want to verify SSL certificates of services. Valid values are: - Extra debugging information from API catalog. - Extra debugging information from API catalog. + Extra debugging information from API Catalog. + Extra debugging information from API Catalog. components @@ -690,8 +690,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 the Discovery service should be running + Port on which the Discovery service should be running components @@ -701,8 +701,8 @@ How we want to verify SSL certificates of services. Valid values are: - Should there be extra debugging information? - Should there be extra debugging information? + Check this option to include extra debugging information + Check this option to include extra debugging information components @@ -745,7 +745,7 @@ How we want to verify SSL certificates of services. Valid values are: - Specifies the eviction strategy when storage size is achieved. + Specifies the eviction strategy when storage size is achieved Specifies the eviction strategy when storage size is achieved. components @@ -759,7 +759,7 @@ How we want to verify SSL certificates of services. Valid values are: Specifies the components caching service storage mode - Specifies the components caching service storage mode + Specifies the components caching service storage mode. components @@ -774,7 +774,7 @@ How we want to verify SSL certificates of services. Valid values are: Number of records before the eviction strategies kick in - Number of records before the eviction strategies kick in + Number of records before the eviction strategies kick in. components @@ -806,7 +806,7 @@ 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 the app server. components @@ -817,7 +817,7 @@ How we want to verify SSL certificates of services. Valid values are: Check to get extra debug information from the service - Check to get extra debug information from the service + Check to get extra debug information from the service. components @@ -894,7 +894,7 @@ How we want to verify SSL certificates of services. Valid values are: Check this option to enable the jobs API - Check this option to enable the jobs API + Check this option to enable the jobs API. components @@ -905,7 +905,7 @@ How we want to verify SSL certificates of services. Valid values are: Check to get extra debug information from the service - Check to get extra debug information from the service + Check to get extra debug information from the service. components @@ -927,7 +927,7 @@ How we want to verify SSL certificates of services. Valid values are: Check this option to enable the files API - Check this option to enable the files API + Check this option to enable the files API. components @@ -938,7 +938,7 @@ How we want to verify SSL certificates of services. Valid values are: Check to get extra debug information from the service - Check to get extra debug information from the service + Check to get extra debug information from the service. components @@ -960,7 +960,7 @@ 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 the JES explorer. components @@ -971,7 +971,7 @@ 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 the MVS explorer. components @@ -982,7 +982,7 @@ 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 the USS explorer. components @@ -992,8 +992,8 @@ How we want to verify SSL certificates of services. Valid values are: - Should Zowe configuration manager be enabled? - Should Zowe configuration manager be enabled? + Check this option to enable Zowe configuration manager + Check this option to enable Zowe configuration manager. configManager @@ -1149,7 +1149,7 @@ How we want to verify SSL certificates of services. Valid values are: - This install option is only for convenience build. Check this option to enable this run step with the zwe install command. + 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. From 60d8faeca94505019a34788e36295d96be2ca7f9 Mon Sep 17 00:00:00 2001 From: zowe-robot Date: Thu, 18 Jul 2024 16:30:15 +0000 Subject: [PATCH 11/67] Promote PTF after release v2.17.0 Signed-off-by: zowe-robot --- smpe/bld/service/promoted-apar.txt | 3 ++ smpe/bld/service/promoted-close.txt | 45 +++++++++++++++++++++++++++++ smpe/bld/service/promoted-hold.txt | 25 ++++++++++++++++ smpe/bld/service/promoted-ptf.txt | 2 ++ smpe/bld/service/ptf-bucket.txt | 2 +- 5 files changed, 76 insertions(+), 1 deletion(-) diff --git a/smpe/bld/service/promoted-apar.txt b/smpe/bld/service/promoted-apar.txt index f9cd37ddc0..e65ef7390f 100644 --- a/smpe/bld/service/promoted-apar.txt +++ b/smpe/bld/service/promoted-apar.txt @@ -1,3 +1,6 @@ +IO29428 +IO29429 +IO29430 IO29424 IO29425 IO29426 diff --git a/smpe/bld/service/promoted-close.txt b/smpe/bld/service/promoted-close.txt index a2f51e8eaf..b0196523e5 100644 --- a/smpe/bld/service/promoted-close.txt +++ b/smpe/bld/service/promoted-close.txt @@ -1,3 +1,48 @@ + IO29428 - + 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.17.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/ + + IO29429 - + 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.17.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/ + + IO29430 - + 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.17.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/ + IO29424 - PROBLEM SUMMARY: **************************************************************** diff --git a/smpe/bld/service/promoted-hold.txt b/smpe/bld/service/promoted-hold.txt index 2930ab1572..e5d2bfc0ca 100644 --- a/smpe/bld/service/promoted-hold.txt +++ b/smpe/bld/service/promoted-hold.txt @@ -1,3 +1,28 @@ +++HOLD(UO90059) SYSTEM FMID(AZWE002) REASON(ACTION) DATE(24200) + 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(UO90057) SYSTEM FMID(AZWE002) REASON(ACTION) DATE(24144) COMMENT( **************************************************************** diff --git a/smpe/bld/service/promoted-ptf.txt b/smpe/bld/service/promoted-ptf.txt index 0e1d192cd2..a3922dcc47 100644 --- a/smpe/bld/service/promoted-ptf.txt +++ b/smpe/bld/service/promoted-ptf.txt @@ -1,3 +1,5 @@ +UO90059 +UO90060 UO90057 UO90058 UO90049 diff --git a/smpe/bld/service/ptf-bucket.txt b/smpe/bld/service/ptf-bucket.txt index b63d0823e2..d148b2abef 100644 --- a/smpe/bld/service/ptf-bucket.txt +++ b/smpe/bld/service/ptf-bucket.txt @@ -23,5 +23,5 @@ #UO90047 UO90048 - IO29346 IO29347 IO29348 - Fri Jan 26 17:21:09 UTC 2024 #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 +#UO90059 UO90060 - IO29428 IO29429 IO29430 - Thu Jul 18 16:30:14 UTC 2024 UO90061 UO90062 - IO29431 IO29432 IO29433 \ No newline at end of file From d76ac6f9ca5d193d6a6aac167d96e87df8e7134b Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Thu, 18 Jul 2024 13:28:11 -0400 Subject: [PATCH 12/67] update manifest to create 2.18 staging builds Signed-off-by: MarkAckert --- manifest.json.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json.template b/manifest.json.template index 854288128e..cbd43cd090 100644 --- a/manifest.json.template +++ b/manifest.json.template @@ -1,6 +1,6 @@ { "name": "Zowe", - "version": "2.17.0", + "version": "2.18.0", "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", From 8179ef206607bd7d06666a35ef7c0186e582b39d Mon Sep 17 00:00:00 2001 From: James Struga Date: Tue, 23 Jul 2024 21:41:55 -0400 Subject: [PATCH 13/67] Switch launcher path to point to staging Signed-off-by: James Struga --- manifest.json.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json.template b/manifest.json.template index d8b2346603..9b3c54f218 100644 --- a/manifest.json.template +++ b/manifest.json.template @@ -120,7 +120,7 @@ "artifact": "*.pax" }, "org.zowe.launcher": { - "version": "^2.0.0-SNAPSHOT" + "version": "^2.0.0-STAGING" }, "org.zowe.keyring-utilities": { "version": "1.0.4", From 07b929e02b1a20dc256b806ab35c055273faa61a Mon Sep 17 00:00:00 2001 From: Mark Ackert <35308966+MarkAckert@users.noreply.github.com> Date: Wed, 24 Jul 2024 10:23:53 -0400 Subject: [PATCH 14/67] Backport fixes in v2.x/master to v2.x/staging (#3923) --- .../manifest_verification/check_sources.js | 19 +++++++++++-------- .../manifest_verification/package-lock.json | 2 +- example-zowe.yaml | 10 +++++----- files/defaults.yaml | 16 ++++++++-------- schemas/zowe-yaml-schema.json | 14 +++++++------- smpe/bld/service/ptf-bucket.txt | 2 +- 6 files changed, 33 insertions(+), 30 deletions(-) diff --git a/.github/scripts/manifest_verification/check_sources.js b/.github/scripts/manifest_verification/check_sources.js index 31293432f8..8514553108 100644 --- a/.github/scripts/manifest_verification/check_sources.js +++ b/.github/scripts/manifest_verification/check_sources.js @@ -81,15 +81,18 @@ async function main() { } // If not a commit, check repo tags - const tags = await octokit.rest.repos.listTags({ - owner: 'zowe', - repo: repo, - }).then((resp) => { - if (resp.status < 400) { - return resp.data; + // requires paginate API. + + const tags = await octokit.paginate( + "GET /repos/{owner}/{repo}/tags", + { + owner: 'zowe', + repo: repo, } - return []; - }) + ).then((resp) => { + // resp is the aggregated data from paginate.. [ { name: 'tag-a', ..other-fields.. }, {}, {}, ...] + return resp; + }); const knownTag = tags.find((item) => item.name === tag); if (knownTag != null && knownTag.name.trim().length > 0) { diff --git a/.github/scripts/manifest_verification/package-lock.json b/.github/scripts/manifest_verification/package-lock.json index 784fe7954d..31f555dc36 100644 --- a/.github/scripts/manifest_verification/package-lock.json +++ b/.github/scripts/manifest_verification/package-lock.json @@ -10,7 +10,7 @@ "license": "EPL-2.0", "dependencies": { "@actions/core": "1.10.1", - "@actions/github": "^6.0.0", + "@actions/github": "6.0.0", "fs-extra": "11.2.0" } }, diff --git a/example-zowe.yaml b/example-zowe.yaml index 46c20f195a..1f8a36c801 100644 --- a/example-zowe.yaml +++ b/example-zowe.yaml @@ -98,7 +98,7 @@ zowe: # >>>> Certificate setup scenario 1 # PKCS12 (keystore) with Zowe generate certificates. certificate: - # Type of certificate storage. Valid values are: PKCS12, JCEKS, JCECCAKS, JCERACFKS, JCECCARACFKS, or JCEHYBRIDRACFKS + # Type of certificate storage. Valid values are: PKCS12, JCERACFKS. APIML additionally supports: JCEKS, JCECCAKS, JCECCARACFKS, or JCEHYBRIDRACFKS type: PKCS12 pkcs12: # **COMMONLY_CUSTOMIZED** @@ -143,7 +143,7 @@ zowe: # # >>>> Certificate setup scenario 2 # # PKCS12 (keystore) with importing certificate generated by other CA. # certificate: - # # Type of certificate storage. Valid values are: PKCS12, JCEKS, JCECCAKS, JCERACFKS, JCECCARACFKS, or JCEHYBRIDRACFKS + # # Type of certificate storage. Valid values are: PKCS12, JCERACFKS. APIML additionally supports: JCEKS, JCECCAKS, JCECCARACFKS, or JCEHYBRIDRACFKS # type: PKCS12 # pkcs12: # # **COMMONLY_CUSTOMIZED** @@ -176,7 +176,7 @@ zowe: # # >>>> Certificate setup scenario 3 # # Zowe generated z/OS Keyring with Zowe generated certificates. # certificate: - # # Type of certificate storage. Valid values are: PKCS12, JCEKS, JCECCAKS, JCERACFKS, JCECCARACFKS, or JCEHYBRIDRACFKS + # # Type of certificate storage. Valid values are: PKCS12, JCERACFKS. APIML additionally supports: JCEKS, JCECCAKS, JCECCARACFKS, or JCEHYBRIDRACFKS # type: JCERACFKS # keyring: # # **COMMONLY_CUSTOMIZED** @@ -211,7 +211,7 @@ zowe: # # >>>> Certificate setup scenario 4 # # Zowe generated z/OS Keyring and connect to existing certificate # certificate: - # # Type of certificate storage. Valid values are: PKCS12, JCEKS, JCECCAKS, JCERACFKS, JCECCARACFKS, or JCEHYBRIDRACFKS + # # Type of certificate storage. Valid values are: PKCS12, JCERACFKS. APIML additionally supports: JCEKS, JCECCAKS, JCECCARACFKS, or JCEHYBRIDRACFKS # type: JCERACFKS # keyring: # # **COMMONLY_CUSTOMIZED** @@ -235,7 +235,7 @@ zowe: # # >>>> Certificate setup scenario 5 # # Zowe generated z/OS Keyring with importing certificate stored in data set # certificate: - # # Type of certificate storage. Valid values are: PKCS12, JCEKS, JCECCAKS, JCERACFKS, JCECCARACFKS, or JCEHYBRIDRACFKS + # # Type of certificate storage. Valid values are: PKCS12, JCERACFKS. APIML additionally supports: JCEKS, JCECCAKS, JCECCARACFKS, or JCEHYBRIDRACFKS # type: JCERACFKS # keyring: # # **COMMONLY_CUSTOMIZED** diff --git a/files/defaults.yaml b/files/defaults.yaml index 8b32c91796..8705166e9a 100644 --- a/files/defaults.yaml +++ b/files/defaults.yaml @@ -70,15 +70,15 @@ zowe: # Distinguished name for Zowe generated certificates. dname: - caCommonName: "${{ (zowe.setup.certificate.pkcs12?.name || zowe.setup.certificate.keyring?.label) ? 'Zowe Development Instances CA' : null }}" - commonName: "${{ (zowe.setup.certificate.pkcs12?.name || zowe.setup.certificate.keyring?.label) ? 'Zowe Development Instances Certificate' : null }}" - orgUnit: "${{ (zowe.setup.certificate.pkcs12?.name || zowe.setup.certificate.keyring?.label) ? 'API Mediation Layer' : null }}" - org: "${{ (zowe.setup.certificate.pkcs12?.name || zowe.setup.certificate.keyring?.label) ? 'Zowe Sample' : null }}" - locality: "${{ (zowe.setup.certificate.pkcs12?.name || zowe.setup.certificate.keyring?.label) ? 'Prague' : null }}" - state: "${{ (zowe.setup.certificate.pkcs12?.name || zowe.setup.certificate.keyring?.label) ? 'Prague' : null }}" - country: "${{ (zowe.setup.certificate.pkcs12?.name || zowe.setup.certificate.keyring?.label) ? 'CZ' : null }}" + caCommonName: "${{ (zowe.setup.certificate.pkcs12?.name || zowe.setup.certificate.keyring?.name) ? 'Zowe Development Instances CA' : null }}" + commonName: "${{ (zowe.setup.certificate.pkcs12?.name || zowe.setup.certificate.keyring?.name) ? 'Zowe Development Instances Certificate' : null }}" + orgUnit: "${{ (zowe.setup.certificate.pkcs12?.name || zowe.setup.certificate.keyring?.name) ? 'API Mediation Layer' : null }}" + org: "${{ (zowe.setup.certificate.pkcs12?.name || zowe.setup.certificate.keyring?.name) ? 'Zowe Sample' : null }}" + locality: "${{ (zowe.setup.certificate.pkcs12?.name || zowe.setup.certificate.keyring?.name) ? 'Prague' : null }}" + state: "${{ (zowe.setup.certificate.pkcs12?.name || zowe.setup.certificate.keyring?.name) ? 'Prague' : null }}" + country: "${{ (zowe.setup.certificate.pkcs12?.name || zowe.setup.certificate.keyring?.name) ? 'CZ' : null }}" # Validity days for Zowe generated certificates - validity: "${{ (zowe.setup.certificate.pkcs12?.import || zowe.setup.certificate.keyring?.label) ? null : 3650 }}" + validity: "${{ (zowe.setup.certificate.pkcs12?.import || zowe.setup.certificate.keyring?.name) ? null : 3650 }}" vsam: # Default to caching service entry as it predates this one diff --git a/schemas/zowe-yaml-schema.json b/schemas/zowe-yaml-schema.json index 071b908aaf..4601706c51 100644 --- a/schemas/zowe-yaml-schema.json +++ b/schemas/zowe-yaml-schema.json @@ -227,31 +227,31 @@ "description": "Certificate distinguish name", "properties": { "caCommonName": { - "type": "string", + "type": [ "string", "null" ], "description": "Common name of certificate authority generated by Zowe." }, "commonName": { - "type": "string", + "type": [ "string", "null" ], "description": "Common name of certificate generated by Zowe." }, "orgUnit": { - "type": "string", + "type": [ "string", "null" ], "description": "Organization unit of certificate generated by Zowe." }, "org": { - "type": "string", + "type": [ "string", "null" ], "description": "Organization of certificate generated by Zowe." }, "locality": { - "type": "string", + "type": [ "string", "null" ], "description": "Locality of certificate generated by Zowe. This is usually the city name." }, "state": { - "type": "string", + "type": [ "string", "null" ], "description": "State of certificate generated by Zowe. You can also put province name here." }, "country": { - "type": "string", + "type": [ "string", "null" ], "description": "2 letters country code of certificate generated by Zowe." } } diff --git a/smpe/bld/service/ptf-bucket.txt b/smpe/bld/service/ptf-bucket.txt index d148b2abef..11868e20ab 100644 --- a/smpe/bld/service/ptf-bucket.txt +++ b/smpe/bld/service/ptf-bucket.txt @@ -24,4 +24,4 @@ #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 \ No newline at end of file +UO90061 UO90062 - IO29431 IO29432 IO29433 From 1f9ad776820f62672d7b3e17d64ef8b9b0569332 Mon Sep 17 00:00:00 2001 From: ManjuVNair133 <160747386+ManjuVNair133@users.noreply.github.com> Date: Wed, 31 Jul 2024 17:19:09 +0530 Subject: [PATCH 15/67] Rename ssh host name (#3927) Signed-off-by: ManjuVNair133 --- playbooks/host_vars/tvt4188.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/playbooks/host_vars/tvt4188.yml b/playbooks/host_vars/tvt4188.yml index ce58c19764..d158b19685 100644 --- a/playbooks/host_vars/tvt4188.yml +++ b/playbooks/host_vars/tvt4188.yml @@ -1,5 +1,5 @@ --- -ansible_ssh_host: tvt4188.svl.ibm.com +ansible_ssh_host: tvt4188.pok.stglabs.ibm.com ansible_user: ansible_password: @@ -16,7 +16,7 @@ zowe_smpe_volser: T41882 # caching service volume zowe_caching_vsam_volume: T41882 -zowe_external_ip_address: 9.30.241.209 +zowe_external_ip_address: 9.47.90.163 zowe_zlux_terminal_telnet_port: 992 zowe_zlux_terminal_telnet_security_type: tls zowe_apiml_security_x509_enabled: true From 83b086fc6ee5071027e35fda9f4a92e83a362897 Mon Sep 17 00:00:00 2001 From: Martin Zeithaml <66114686+Martin-Zeithaml@users.noreply.github.com> Date: Mon, 12 Aug 2024 16:45:58 +0200 Subject: [PATCH 16/67] Clean up for crashing java (#3931) Signed-off-by: Martin Zeithaml <66114686+Martin-Zeithaml@users.noreply.github.com> --- bin/commands/support/verify-fingerprints/index.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bin/commands/support/verify-fingerprints/index.sh b/bin/commands/support/verify-fingerprints/index.sh index 0044c5e48a..3a67cc129b 100644 --- a/bin/commands/support/verify-fingerprints/index.sh +++ b/bin/commands/support/verify-fingerprints/index.sh @@ -63,7 +63,10 @@ print_message "- Calculate hashes of Zowe files" cust_hashes=$(create_tmp_file "${tmp_file_prefix}") result=$(java -cp "${ZWE_zowe_runtimeDirectory}/bin/utils/" HashFiles "${all_files}" | sort > "${cust_hashes}") code=$? -if [ ${code} -eq 1 -o ! -f "${cust_hashes}" ]; then +if [ -f "${cust_hashes}" ]; then + file_size_check=$(wc -l "${cust_hashes}" | awk '{print $1}') +fi +if [ "${code}" -eq 1 -o ! -f "${cust_hashes}" -o "${file_size_check}" -eq 0 ]; then print_error " * Error ZWEL0151E: Failed to create temporary file ${cust_hashes}. Please check permission or volume free space." print_error " * Exit code: ${code}" print_error " * Output:" From 0c2c64e677e168dcfb65adb9ab6b6f59038633e8 Mon Sep 17 00:00:00 2001 From: Mark Ackert <35308966+MarkAckert@users.noreply.github.com> Date: Mon, 12 Aug 2024 10:48:14 -0400 Subject: [PATCH 17/67] update safkeyring schema (#3928) Signed-off-by: MarkAckert --- schemas/zowe-yaml-schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/schemas/zowe-yaml-schema.json b/schemas/zowe-yaml-schema.json index 4601706c51..deadae3492 100644 --- a/schemas/zowe-yaml-schema.json +++ b/schemas/zowe-yaml-schema.json @@ -804,7 +804,7 @@ "file": { "type": "string", "description": "Path of your z/OS keyring, including ring owner and ring name. Case sensitivity and spaces matter.", - "pattern": "^safkeyring:\/\/.*" + "pattern": "^safkeyring[a-z]*:\/\/.*" }, "password": { "type": "string", @@ -831,7 +831,7 @@ "file": { "type": "string", "description": "Path of your z/OS keyring, including ring owner and ring name. Case sensitivity and spaces matter.", - "pattern": "^safkeyring:\/\/.*" + "pattern": "^safkeyring[a-z]*:\/\/.*" }, "password": { "type": "string", From 6acc8e2c8bbbb9933915bb5d1cc5c96a1da89146 Mon Sep 17 00:00:00 2001 From: Martin Zeithaml <66114686+Martin-Zeithaml@users.noreply.github.com> Date: Mon, 12 Aug 2024 17:17:47 +0200 Subject: [PATCH 18/67] Use correct parameters (#3929) Signed-off-by: Martin Zeithaml --- bin/libs/zosmf.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/libs/zosmf.ts b/bin/libs/zosmf.ts index 89bddfa108..949c0eddf6 100644 --- a/bin/libs/zosmf.ts +++ b/bin/libs/zosmf.ts @@ -31,7 +31,7 @@ export function validateZosmfHostAndPort(zosmfHost: string, zosmfPort: number): common.printError(`Warning: Could not validate if z/OS MF is available on 'https://${zosmfHost}:${zosmfPort}/zosmf/info'. NODE_HOME is not defined.`); zosmfCheckPassed=false; } else { - let execReturn = shell.execOutSync(`${std.getenv('NODE_HOME')}/bin/node`, `${std.getenv('ZWE_zowe_runtimeDirectory')}/bin/utils/curl.js`, `"https://${zosmfHost}:${zosmfPort}/zosmf/info"`, `-k`, `-H`, `"X-CSRF-ZOSMF-HEADER: true"`, `--response-type`, `status`); + const execReturn = shell.execOutSync(`${std.getenv('NODE_HOME')}/bin/node`, `${std.getenv('ZWE_zowe_runtimeDirectory')}/bin/utils/curl.js`, `https://${zosmfHost}:${zosmfPort}/zosmf/info`, `-k`, `-H`, `X-CSRF-ZOSMF-HEADER: true`, `--response-type`, `status`); if (execReturn.rc || !execReturn.out) { common.printError(`Warning: Could not validate if z/OS MF is available on 'https://${zosmfHost}:${zosmfPort}/zosmf/info'. No response code from z/OSMF server.`); zosmfCheckPassed=false From a4ff599babf7e648e521517d665fb4df5c56cba5 Mon Sep 17 00:00:00 2001 From: pavelzlatnik <45940302+pavelzlatnik@users.noreply.github.com> Date: Wed, 14 Aug 2024 15:33:52 +0200 Subject: [PATCH 19/67] NONRLS vsam mode if variable not initialized (#3935) Signed-off-by: pz636264 --- workflows/files/ZWECONF.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/workflows/files/ZWECONF.xml b/workflows/files/ZWECONF.xml index 183af7feb5..5d725d8adf 100644 --- a/workflows/files/ZWECONF.xml +++ b/workflows/files/ZWECONF.xml @@ -1848,7 +1848,11 @@ echo ' # VSAM configurations if you are using VSAM as Caching Service storage 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" +#if (${instance-zowe_setup_vsam_mode}) echo ' mode: $!{instance-zowe_setup_vsam_mode}' >> "${instance-zowe_runtimeDirectory}/zowe.yaml" +#else +echo ' mode: NONRLS' >> "${instance-zowe_runtimeDirectory}/zowe.yaml" +#end echo ' # Volume name if you are using VSAM in NONRLS mode' >> "${instance-zowe_runtimeDirectory}/zowe.yaml" echo ' volume: "$!{instance-zowe_setup_vsam_volume}"' >> "${instance-zowe_runtimeDirectory}/zowe.yaml" echo ' # Storage class name if you are using VSAM in RLS mode' >> "${instance-zowe_runtimeDirectory}/zowe.yaml" From b6911acc5fcccc8dd776c3e6878c49a930af58e4 Mon Sep 17 00:00:00 2001 From: John Mertic Date: Wed, 14 Aug 2024 14:31:06 -0500 Subject: [PATCH 20/67] Add DigitalOcean sponsorship link - per guidelines for credits (#3940) * Add DigitalOcean sponsorship link - per guidelines for credits Signed-off-by: John Mertic * Fix link Signed-off-by: John Mertic --------- Signed-off-by: John Mertic --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index ff5b649cb5..d6e491fd59 100644 --- a/README.md +++ b/README.md @@ -192,3 +192,10 @@ Please check details in [playbooks folder](playbooks/README.md). ## Quick Sanity Check on Your Zowe Instance Please check details in [sanity test folder](tests/sanity/README.md). + +

Hosting infrastructure for this project is supported by:

+

+ + + +

From f28ac11d57118c15c49d62ca972ff36ffbbaad26 Mon Sep 17 00:00:00 2001 From: zowe-robot <42546701+zowe-robot@users.noreply.github.com> Date: Tue, 27 Aug 2024 11:35:53 -0400 Subject: [PATCH 21/67] Promote PTF after release v2.18.0 (#3954) Signed-off-by: zowe-robot --- smpe/bld/service/promoted-apar.txt | 3 ++ smpe/bld/service/promoted-close.txt | 45 +++++++++++++++++++++++++++++ smpe/bld/service/promoted-hold.txt | 25 ++++++++++++++++ smpe/bld/service/promoted-ptf.txt | 2 ++ smpe/bld/service/ptf-bucket.txt | 2 +- 5 files changed, 76 insertions(+), 1 deletion(-) 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..3118f3182e 100644 --- a/smpe/bld/service/ptf-bucket.txt +++ b/smpe/bld/service/ptf-bucket.txt @@ -24,4 +24,4 @@ #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 From 84749f06102095c67cde4f007a17af140a8cef49 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Wed, 28 Aug 2024 13:53:35 -0400 Subject: [PATCH 22/67] bump to 2.18.1 Signed-off-by: MarkAckert --- manifest.json.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json.template b/manifest.json.template index f015fdc74f..be11c98858 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", From 02c10464c4f9f810c795464d4baa5311a800485e Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Fri, 30 Aug 2024 13:43:58 -0400 Subject: [PATCH 23/67] container builds use in FROM statements Signed-off-by: MarkAckert --- containers/base-jdk/ubi/Dockerfile | 2 +- containers/base-jdk/ubuntu/Dockerfile | 2 +- containers/base-node/Dockerfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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} From 7a797ba0f29a3f54f4d8843944436dfe7b9c7d59 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Fri, 30 Aug 2024 14:13:12 -0400 Subject: [PATCH 24/67] missed launch scripts Signed-off-by: MarkAckert --- containers/zowe-launch-scripts/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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} From b27046816c4ee23a550e47c2866df3e731d2807f Mon Sep 17 00:00:00 2001 From: Martin Zeithaml Date: Tue, 3 Sep 2024 14:55:32 +0200 Subject: [PATCH 25/67] zOSMF validate Signed-off-by: Martin Zeithaml --- CHANGELOG.md | 3 +++ bin/commands/internal/start/prepare/index.sh | 7 +++++-- bin/commands/internal/start/prepare/index.ts | 13 ++++++------- bin/libs/zosmf.sh | 13 ------------- bin/libs/zosmf.ts | 11 ----------- 5 files changed, 14 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6485176d2f..ef40d52ac9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ All notable changes to the Zowe Installer will be documented in this file. +## `2.18.1` +- Bugfix: Error message `ZWEL0141E` did not print user ID + ## `2.17.0` ## New features and enhancements 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/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; -} From 47d812105dca24501bd509f8f95a3e348307edc5 Mon Sep 17 00:00:00 2001 From: Martin Zeithaml Date: Tue, 3 Sep 2024 15:07:34 +0200 Subject: [PATCH 26/67] PR number Signed-off-by: Martin Zeithaml --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef40d52ac9..262fe86796 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to the Zowe Installer will be documented in this file. ## `2.18.1` -- Bugfix: Error message `ZWEL0141E` did not print user ID +- Bugfix: Error message `ZWEL0141E` did not print user ID. [#3971](https://github.com/zowe/zowe-install-packaging/pull/3971) ## `2.17.0` From 56126e3fc8402e1a999c5777928c07fd5bedaf16 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Tue, 3 Sep 2024 15:05:31 -0400 Subject: [PATCH 27/67] add permissions to cicd-test wf Signed-off-by: MarkAckert --- .github/workflows/cicd-test.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/cicd-test.yml b/.github/workflows/cicd-test.yml index efa37bb2ca..6bbb222e2f 100644 --- a/.github/workflows/cicd-test.yml +++ b/.github/workflows/cicd-test.yml @@ -1,4 +1,11 @@ name: Zowe CICD Integration Tests + +permissions: + contents: write + issues: write + pull-requests: write + statuses: write + on: workflow_dispatch: inputs: From afbd86736f2dc79bfec9da60f79a73af1b959743 Mon Sep 17 00:00:00 2001 From: ManjuVNair133 Date: Mon, 30 Sep 2024 10:05:52 +0530 Subject: [PATCH 28/67] Add new v2 PTF numbers Signed-off-by: ManjuVNair133 --- smpe/bld/service/ptf-bucket.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/smpe/bld/service/ptf-bucket.txt b/smpe/bld/service/ptf-bucket.txt index 3118f3182e..b787a4ea5c 100644 --- a/smpe/bld/service/ptf-bucket.txt +++ b/smpe/bld/service/ptf-bucket.txt @@ -25,3 +25,6 @@ #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 - Tue Aug 27 14:35:44 UTC 2024 +UO90074 UO90075 - IO29454 IO29456 IO29457 +UO90076 UO90077 - IO29458 IO29459 IO29460 +UO90078 UO90079 - IO29461 IO29462 IO29463 From 16a2911967662fcb809c3ca7c3167a34321eaeca Mon Sep 17 00:00:00 2001 From: pz636264 Date: Thu, 10 Oct 2024 13:21:27 +0200 Subject: [PATCH 29/67] part one Signed-off-by: pz636264 --- workflows/files/ZWECONF.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/workflows/files/ZWECONF.xml b/workflows/files/ZWECONF.xml index 5d725d8adf..012b988ec1 100644 --- a/workflows/files/ZWECONF.xml +++ b/workflows/files/ZWECONF.xml @@ -469,6 +469,17 @@ 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 @@ -1256,6 +1267,7 @@ How we want to verify SSL certificates of services. Valid values are: + @@ -2096,6 +2108,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 +2140,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" From 873a059fa7e320db46ff855a5cb0eefaf05577cd Mon Sep 17 00:00:00 2001 From: pz636264 Date: Thu, 10 Oct 2024 15:42:12 +0200 Subject: [PATCH 30/67] bug in v2 Signed-off-by: pz636264 --- workflows/files/ZWECONF.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/workflows/files/ZWECONF.xml b/workflows/files/ZWECONF.xml index 012b988ec1..75560d3979 100644 --- a/workflows/files/ZWECONF.xml +++ b/workflows/files/ZWECONF.xml @@ -2248,7 +2248,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" From deacddd0d87e799fcae5be2e4b11f14addf3316c Mon Sep 17 00:00:00 2001 From: pz636264 Date: Thu, 10 Oct 2024 15:48:40 +0200 Subject: [PATCH 31/67] abstract correction Signed-off-by: pz636264 --- workflows/files/ZWECONF.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/files/ZWECONF.xml b/workflows/files/ZWECONF.xml index 75560d3979..264511d15e 100644 --- a/workflows/files/ZWECONF.xml +++ b/workflows/files/ZWECONF.xml @@ -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 truststore certificates From f26c0573051d1e5e9b7cfd12dc96d542b434c693 Mon Sep 17 00:00:00 2001 From: Martin Zeithaml <66114686+Martin-Zeithaml@users.noreply.github.com> Date: Wed, 16 Oct 2024 12:41:25 +0200 Subject: [PATCH 32/67] Retrofit of 4052 Signed-off-by: Martin Zeithaml <66114686+Martin-Zeithaml@users.noreply.github.com> --- bin/libs/common.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/libs/common.ts b/bin/libs/common.ts index 7eabf33f5f..aedba2ba99 100644 --- a/bin/libs/common.ts +++ b/bin/libs/common.ts @@ -345,7 +345,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); From 1d9ed5605e9ad1e4071140741b019fbcb17a70a4 Mon Sep 17 00:00:00 2001 From: Martin Zeithaml Date: Thu, 31 Oct 2024 10:43:11 +0100 Subject: [PATCH 33/67] Check log directory Signed-off-by: Martin Zeithaml --- CHANGELOG.md | 1 + bin/libs/logging.sh | 3 +++ 2 files changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 262fe86796..d76a381ddc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ All notable changes to the Zowe Installer will be documented in this file. ## `2.18.1` +- Bugfix: When `--log-dir` parameter for `zwe` command is a file, there might be an error "InternalError: stack overflow". [#40nn](https://github.com/zowe/zowe-install-packaging/pull/40nn) - Bugfix: Error message `ZWEL0141E` did not print user ID. [#3971](https://github.com/zowe/zowe-install-packaging/pull/3971) ## `2.17.0` 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) From 6db4a791448ad981b4f8ce69a2790a43f5b8eae7 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Fri, 18 Oct 2024 10:17:13 -0400 Subject: [PATCH 34/67] update automation for new zzow systems Signed-off-by: MarkAckert --- .github/scripts/cicd_test/make_matrix.sh | 10 +++++----- .../03_process_test_server.sh | 12 ++++++------ .github/workflows/build-packaging.yml | 2 +- .github/workflows/cicd-test-readme.md | 10 +++++----- .github/workflows/cicd-test.yml | 10 +++++----- .../host_vars/{marist-7.yml => marist-10.yml} | 0 .../host_vars/{marist-8.yml => marist-11.yml} | 0 .../host_vars/{marist-6.yml => marist-9.yml} | 0 playbooks/hosts | 6 +++--- pswi/PSWI-marist.sh | 19 +++++++++---------- .../extended/keyring-modes/acf2-keyring.ts | 2 +- .../extended/keyring-modes/racf-keyring.ts | 2 +- .../extended/keyring-modes/tss-keyring.ts | 2 +- .../extended/node-versions/node-v18.ts | 2 +- .../security-systems/convenience/acf2.ts | 6 +++--- .../security-systems/convenience/racf.ts | 4 ++-- .../security-systems/convenience/ts.ts | 6 +++--- .../extended/security-systems/fmid/acf2.ts | 6 +++--- .../extended/security-systems/fmid/racf.ts | 4 ++-- .../extended/security-systems/fmid/ts.ts | 6 +++--- .../extended/security-systems/ptf/acf2.ts | 6 +++--- .../extended/security-systems/ptf/racf.ts | 4 ++-- .../extended/security-systems/ptf/ts.ts | 6 +++--- 23 files changed, 62 insertions(+), 63 deletions(-) rename playbooks/host_vars/{marist-7.yml => marist-10.yml} (100%) rename playbooks/host_vars/{marist-8.yml => marist-11.yml} (100%) rename playbooks/host_vars/{marist-6.yml => marist-9.yml} (100%) diff --git a/.github/scripts/cicd_test/make_matrix.sh b/.github/scripts/cicd_test/make_matrix.sh index cee6b60426..81273471ab 100644 --- a/.github/scripts/cicd_test/make_matrix.sh +++ b/.github/scripts/cicd_test/make_matrix.sh @@ -34,7 +34,7 @@ case $install_test_choice in "z/OS node v18") test_file="$ZOS_NODE_V18_TESTFILE" - test_force_system="zzow08" + test_force_system="zzow11" ;; "z/OS node v20") @@ -87,18 +87,18 @@ if [[ ! -z "$test_force_system" ]]; then else if [[ -z "$dont_parse_test_server" ]]; then if [[ "$test_server" == "Any zzow servers" ]]; then - test_server="zzow0"$(echo $(($RANDOM % 3 + 6))) + test_server="zzow"$(printf %02d $(($RANDOM % 3 + 9))) fi TEST_FILE_SERVER="$test_file($test_server)" else any_occurrence=$(echo $test_file | grep -o "(any)" | wc -l) interim_test_file_server=$test_file for i in $(seq $any_occurrence); do - # Generates zzow06, zzow07, zzow08 - interim_test_file_server=$(echo $interim_test_file_server | sed "s#(any)#(zzow0$(echo $(($RANDOM % 3 + 6))))#") + # Generates zzow09, zzow10, zzow11 + interim_test_file_server=$(echo $interim_test_file_server | sed "s#(any)#(zzow$(printf %02d $(($RANDOM % 3 + 9))))#") done - TEST_FILE_SERVER=$(echo $interim_test_file_server | sed "s#(all)#(zzow06,zzow07,zzow08)#g") + TEST_FILE_SERVER=$(echo $interim_test_file_server | sed "s#(all)#(zzow09,zzow10,zzow11)#g") fi fi diff --git a/.github/scripts/cicd_test/prep7_more_test_prep/03_process_test_server.sh b/.github/scripts/cicd_test/prep7_more_test_prep/03_process_test_server.sh index 7e7b80ad07..508d7d093e 100644 --- a/.github/scripts/cicd_test/prep7_more_test_prep/03_process_test_server.sh +++ b/.github/scripts/cicd_test/prep7_more_test_prep/03_process_test_server.sh @@ -14,16 +14,16 @@ TEST_SERVER=$(echo "$MATRIX_SERVER" | cut -d "-" -f2) case $TEST_SERVER in -"zzow06") - TEST_SERVER_NICKNAME=marist-6 +"zzow09") + TEST_SERVER_NICKNAME=marist-9 ;; -"zzow07") - TEST_SERVER_NICKNAME=marist-7 +"zzow10") + TEST_SERVER_NICKNAME=marist-10 ;; -"zzow08") - TEST_SERVER_NICKNAME=marist-8 +"zzow11") + TEST_SERVER_NICKNAME=marist-11 ;; *) diff --git a/.github/workflows/build-packaging.yml b/.github/workflows/build-packaging.yml index 1b64e08db8..78debe2788 100644 --- a/.github/workflows/build-packaging.yml +++ b/.github/workflows/build-packaging.yml @@ -344,7 +344,7 @@ jobs: with: lock-repository: ${{ github.repository }} github-token: ${{ secrets.GITHUB_TOKEN }} - lock-resource-name: zowe-psi-build-zzow07-lock + lock-resource-name: zowe-psi-build-zzow10-lock lock-avg-retry-interval: 60 - name: '[PSWI 0] PSWI pre-build check for existing smpe' diff --git a/.github/workflows/cicd-test-readme.md b/.github/workflows/cicd-test-readme.md index 082639da7b..e1b081a2e5 100644 --- a/.github/workflows/cicd-test-readme.md +++ b/.github/workflows/cicd-test-readme.md @@ -4,9 +4,9 @@ This guide will describe how you should input into Github Actions workflow input Currently we support three testing z/OS servers: -- zzow06 (ACF2) -- zzow07 (Top Secret/TSS) -- zzow08 (RACF) +- zzow09 (ACF2) +- zzow10 (Top Secret/TSS) +- zzow11 (RACF) Testing pipeline is running tests in parallel. The workflow will try to acquire the resource lock if available. If the resource lock is occupied, the workflow will wait until the lock is succesfully acquired. @@ -17,7 +17,7 @@ Workflow trigger is at [cicd-test](https://github.com/zowe/zowe-install-packagin ### Choose Test Server - This input is a choice, and it's mandatory. -- You can choose from one of `zzow06`, `zzow07`, `zzow08`, `zzow06,zzow07,zzow08` (if you want to run the test on all zzow servers), or `Any zzow servers` (pick any zzow servers, potentially help reduce wait time) +- You can choose from one of `zzow09`, `zzow10`, `zzow11`, `zzow09,zzow10,zzow11` (if you want to run the test on all zzow servers), or `Any zzow servers` (pick any zzow servers, potentially help reduce wait time) - Default is `Any zzow servers` ### Choose Install Test @@ -109,7 +109,7 @@ Background: CICD testing relies on a `zowe.pax` or `zowe-smpe.zip` (for SMPE ins When running CICD integration tests during RC stage, the following string will be parsed into the Github Actions matrix. As a result, a total of 21 independent jobs will be spawned. ``` -basic/install.ts(zzow06,zzow07,zzow08);basic/install-ptf.ts(zzow06,zzow07,zzow08);basic/install-ext.ts(zzow07);extended/keyring.ts(zzow06,zzow07,zzow08);extended/node-versions/node-v18.ts(zzow06,zzow07,zzow08);extended/node-versions/node-v20.ts(zzow06,zzow07,zzow08);extended/certificates/nonstrict-verify-external-certificate.ts(zzow06) +basic/install.ts(zzow09,zzow10,zzow11);basic/install-ptf.ts(zzow09,zzow10,zzow11);basic/install-ext.ts(zzow10);extended/keyring.ts(zzow09,zzow10,zzow11);extended/node-versions/node-v18.ts(zzow09,zzow10,zzow11);extended/node-versions/node-v20.ts(zzow09,zzow10,zzow11);extended/certificates/nonstrict-verify-external-certificate.ts(zzow09) ``` Total elapsed time when running in parallel is approximately 3.5 hours on paper idealy if all parallel jobs are executing at the same time. In reality, from numerous tests performed, total elapsed time is around 4 hours. diff --git a/.github/workflows/cicd-test.yml b/.github/workflows/cicd-test.yml index 6bbb222e2f..ca6ee6e670 100644 --- a/.github/workflows/cicd-test.yml +++ b/.github/workflows/cicd-test.yml @@ -16,10 +16,10 @@ on: default: 'Any zzow servers' options: - Any zzow servers - - zzow06 - - zzow07 - - zzow08 - - zzow06,zzow07,zzow08 + - zzow09 + - zzow10 + - zzow11 + - zzow09,zzow10,zzow11 install-test: description: 'Choose Install Test' type: choice @@ -90,7 +90,7 @@ env: CONFIG_MANAGER_TESTFILE: extended/config-manager/enable-config-manager.ts GENERAL_API_DOCUMENTATION_TESTFILE: basic/install-api-gen.ts ZOWE_NIGHTLY_TESTS_FULL: basic/install.ts(all);basic/install-ptf.ts(all) - ZOWE_RELEASE_TESTS_FULL: basic/install.ts(all);basic/install-ptf.ts(all);basic/install-ext.ts(any);extended/keyring.ts(all);extended/node-versions/node-v18.ts(zzow08);extended/node-versions/node-v20.ts(any);extended/certificates/nonstrict-verify-external-certificate.ts(any);extended/caching-storages/infinispan-storage.ts(any);extended/config-manager/enable-config-manager.ts(any) + ZOWE_RELEASE_TESTS_FULL: basic/install.ts(all);basic/install-ptf.ts(all);basic/install-ext.ts(any);extended/keyring.ts(all);extended/node-versions/node-v18.ts(zzow11);extended/node-versions/node-v20.ts(any);extended/certificates/nonstrict-verify-external-certificate.ts(any);extended/caching-storages/infinispan-storage.ts(any);extended/config-manager/enable-config-manager.ts(any) jobs: display-dispatch-event-id: 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/pswi/PSWI-marist.sh b/pswi/PSWI-marist.sh index 80441508af..80f1b3aa9a 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" @@ -41,7 +41,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" >>report.txt exit -1 fi @@ -73,7 +73,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" >>report.txt exit -1 fi fi @@ -147,18 +147,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!" >>report.txt if [ $presmpe -ne 0 ]; then - echo "Pre-SMP/E wasn't successful." + echo "Pre-SMP/E wasn't successful." >>report.txt elif [ $smpe -ne 0 ]; then - echo "SMP/E wasn't successful." + echo "SMP/E wasn't successful." >>report.txt elif [ $ptf -ne 0 ]; then - echo "Applying PTFs wasn't successful." + echo "Applying PTFs wasn't successful." >>report.txt elif [ $create -ne 0 ]; then - echo "Creation of PSWI wasn't successful." + echo "Creation of PSWI wasn't successful." >>report.txt elif [ $test -ne 0 ]; then - echo "Testing of PSWI wasn't successful." - fi + echo "Testing of PSWI wasn't successful." >>report.txt exit -1 else echo "Build successful!" 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-v18.ts index 4758b24904..d6345a1df6 100644 --- a/tests/installation/src/__tests__/extended/node-versions/node-v18.ts +++ b/tests/installation/src/__tests__/extended/node-versions/node-v18.ts @@ -15,7 +15,7 @@ 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. +// Only runs on zzow11 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'; describe(testSuiteName, () => { 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(() => { From a5cdb239d8ffb0ca465730ae6d4f6b2491ade348 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Wed, 23 Oct 2024 23:05:40 -0400 Subject: [PATCH 35/67] only run tests automatically from PRs Signed-off-by: MarkAckert --- .github/workflows/build-packaging.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-packaging.yml b/.github/workflows/build-packaging.yml index 78debe2788..81c329a4a2 100644 --- a/.github/workflows/build-packaging.yml +++ b/.github/workflows/build-packaging.yml @@ -99,8 +99,9 @@ jobs: echo "run_build=${{ (github.event_name == 'workflow_dispatch' && github.event.inputs.ORIGIN_ISSUE_TRIGGER == 'false') || !contains(fromJson(steps.get-labels.outputs.result), 'Build: None') }}" >> $GITHUB_OUTPUT - id: check-test name: 'export conditional used to determine if we should run a test suite' + # run_test explanation: if we set "run_build" from the prior step and this is a PR, run unless "Test: None" label is present. If not initiated from a PR, only build. run: | - echo "run_test=${{ (steps.check-build.outputs.run_build == 'true' && !contains(fromJson(steps.get-labels.outputs.result), 'Test: None')) }}" >> $GITHUB_OUTPUT + echo "run_test=${{ (steps.check-build.outputs.run_build == 'true' && ( github.event_name != 'workflow_dispatch' && !contains(fromJson(steps.get-labels.outputs.result)), 'Test: None')) }}" >> $GITHUB_OUTPUT display-dispatch-event-id: if: github.event.inputs.RANDOM_DISPATCH_EVENT_ID != '' From e832aa5dc1a514f02678113b92a186e52ee473a8 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Wed, 23 Oct 2024 23:13:44 -0400 Subject: [PATCH 36/67] fix paren Signed-off-by: MarkAckert --- .github/workflows/build-packaging.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-packaging.yml b/.github/workflows/build-packaging.yml index 81c329a4a2..3ed5a7c34b 100644 --- a/.github/workflows/build-packaging.yml +++ b/.github/workflows/build-packaging.yml @@ -101,7 +101,7 @@ jobs: name: 'export conditional used to determine if we should run a test suite' # run_test explanation: if we set "run_build" from the prior step and this is a PR, run unless "Test: None" label is present. If not initiated from a PR, only build. run: | - echo "run_test=${{ (steps.check-build.outputs.run_build == 'true' && ( github.event_name != 'workflow_dispatch' && !contains(fromJson(steps.get-labels.outputs.result)), 'Test: None')) }}" >> $GITHUB_OUTPUT + echo "run_test=${{ (steps.check-build.outputs.run_build == 'true' && ( github.event_name != 'workflow_dispatch' && !contains(fromJson(steps.get-labels.outputs.result), 'Test: None')) }}" >> $GITHUB_OUTPUT display-dispatch-event-id: if: github.event.inputs.RANDOM_DISPATCH_EVENT_ID != '' From 70f3434edf260147a7e24074e0c2d3ed73c253be Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Wed, 23 Oct 2024 23:18:55 -0400 Subject: [PATCH 37/67] remove imbalanced paren Signed-off-by: MarkAckert --- .github/workflows/build-packaging.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-packaging.yml b/.github/workflows/build-packaging.yml index 3ed5a7c34b..0ccd05b7fb 100644 --- a/.github/workflows/build-packaging.yml +++ b/.github/workflows/build-packaging.yml @@ -101,7 +101,7 @@ jobs: name: 'export conditional used to determine if we should run a test suite' # run_test explanation: if we set "run_build" from the prior step and this is a PR, run unless "Test: None" label is present. If not initiated from a PR, only build. run: | - echo "run_test=${{ (steps.check-build.outputs.run_build == 'true' && ( github.event_name != 'workflow_dispatch' && !contains(fromJson(steps.get-labels.outputs.result), 'Test: None')) }}" >> $GITHUB_OUTPUT + echo "run_test=${{ (steps.check-build.outputs.run_build == 'true' && github.event_name != 'workflow_dispatch' && !contains(fromJson(steps.get-labels.outputs.result), 'Test: None')) }}" >> $GITHUB_OUTPUT display-dispatch-event-id: if: github.event.inputs.RANDOM_DISPATCH_EVENT_ID != '' From bdb8507e64e5733bbf7a9deb2a0da13ead028125 Mon Sep 17 00:00:00 2001 From: Mark Ackert <35308966+MarkAckert@users.noreply.github.com> Date: Thu, 31 Oct 2024 16:02:37 -0400 Subject: [PATCH 38/67] Merge pull request #4065 from zowe/users/pswi.test Fix PSWI build Signed-off-by: MarkAckert --- .github/workflows/build-packaging.yml | 8 + pswi/.gitignore | 4 + pswi/01_smpe.sh | 66 +++-- pswi/02_ptf.sh | 66 +++-- pswi/03_create.sh | 348 +++++++++++++------------- pswi/04_create_cleanup.sh | 134 +++++----- pswi/06_test_cleanup.sh | 222 ++++++++-------- pswi/07_smpe_cleanup.sh | 66 +++-- pswi/08_presmpe_cleanup.sh | 62 +++-- pswi/PSWI-marist.sh | 23 +- pswi/scripts/check_response.sh | 20 +- pswi/scripts/spool_files.sh | 23 +- pswi/scripts/submit_jcl.sh | 43 ++-- pswi/scripts/tmp_mounts.sh | 89 +++---- 14 files changed, 568 insertions(+), 606 deletions(-) create mode 100644 pswi/.gitignore diff --git a/.github/workflows/build-packaging.yml b/.github/workflows/build-packaging.yml index 0ccd05b7fb..fde84a73cb 100644 --- a/.github/workflows/build-packaging.yml +++ b/.github/workflows/build-packaging.yml @@ -368,6 +368,14 @@ jobs: ZZOW_SSH_PORT: ${{ secrets.SSH_MARIST_ALLSYS_PORT }} VERSION: ${{ env.P_VERSION }} + - name: Store PSWI folder + uses: actions/upload-artifact@v4 + if: env.INPUTS_BUILD_PSWI == 'true' && failure() + with: + name: pswi-folder + path: | + pswi/logs/** + - name: '[K8S] Build Kubernetes' timeout-minutes: 10 if: env.INPUTS_BUILD_KUBERNETES == 'true' 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..fe742143bd 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,7 +25,7 @@ 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.", @@ -39,7 +39,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 +55,121 @@ 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/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 +181,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 +204,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 +231,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.AZWE003.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 80f1b3aa9a..98c269be04 100755 --- a/pswi/PSWI-marist.sh +++ b/pswi/PSWI-marist.sh @@ -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" >>report.txt + 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" >>report.txt + echo "File with FMID not found" >>"$LOG_DIR/report.txt" exit -1 fi fi @@ -147,17 +149,18 @@ echo "" echo "" if [ $smpe -ne 0 ] || [ $ptf -ne 0 ] || [ $create -ne 0 ] || [ $test -ne 0 ] || [ $presmpe -ne 0 ]; then - echo "Build unsuccessful!" >>report.txt + echo "Build unsuccessful!" >>"$LOG_DIR/report.txt" if [ $presmpe -ne 0 ]; then - echo "Pre-SMP/E wasn't successful." >>report.txt + echo "Pre-SMP/E wasn't successful." >>"$LOG_DIR/report.txt" elif [ $smpe -ne 0 ]; then - echo "SMP/E wasn't successful." >>report.txt + echo "SMP/E wasn't successful." >>"$LOG_DIR/report.txt" elif [ $ptf -ne 0 ]; then - echo "Applying PTFs wasn't successful." >>report.txt + echo "Applying PTFs wasn't successful." >>"$LOG_DIR/report.txt" elif [ $create -ne 0 ]; then - echo "Creation of PSWI wasn't successful." >>report.txt + echo "Creation of PSWI wasn't successful." >>"$LOG_DIR/report.txt" elif [ $test -ne 0 ]; then - echo "Testing of PSWI wasn't successful." >>report.txt + echo "Testing of PSWI wasn't successful." >>"$LOG_DIR/report.txt" + fi exit -1 else echo "Build successful!" 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/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 From ed121e461ffc14cd5136d4f6796b68d57e5af877 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Mon, 4 Nov 2024 13:34:10 -0500 Subject: [PATCH 39/67] fix azwe version for v2 Signed-off-by: MarkAckert --- pswi/03_create.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pswi/03_create.sh b/pswi/03_create.sh index fe742143bd..0e79707819 100644 --- a/pswi/03_create.sh +++ b/pswi/03_create.sh @@ -286,8 +286,8 @@ echo "Showing EXPORT JCL how it looks before the change" #else echo "Changing jobcard and adding SYSAFF" sed "s|//IZUD01EX JOB (ACCOUNT),'NAME'|$JOBST1\n$JOBST2|g" EXPORT >EXPJCL0 -sed "s|//.*gimzipInputFile.*,|EXPJCL1 -sed "s|// FILEDATA=TEXT| archid=\"ZOS003.ZWE.PSWI.AZWE003.ZFS\"/>|g" EXPJCL1 >EXPJCL2 +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 From c5aea42ba51bb6a195d3a157a67bc6fba0e989cd Mon Sep 17 00:00:00 2001 From: Martin Zeithaml Date: Tue, 5 Nov 2024 13:21:35 +0100 Subject: [PATCH 40/67] Use xplatform for logging Signed-off-by: Martin Zeithaml --- CHANGELOG.md | 3 ++- bin/libs/common.ts | 33 +++++++++------------------------ 2 files changed, 11 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d76a381ddc..ad7f0afd6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,8 @@ All notable changes to the Zowe Installer will be documented in this file. ## `2.18.1` -- Bugfix: When `--log-dir` parameter for `zwe` command is a file, there might be an error "InternalError: stack overflow". [#40nn](https://github.com/zowe/zowe-install-packaging/pull/40nn) +- Bugfix: When logging `zwe` command, sometimes the log has wrong file tag and the log is unreadable. [#40nn](https://github.com/zowe/zowe-install-packaging/pull/40nn) +- Bugfix: When `--log-dir` parameter for `zwe` command is a file, there might be an error "InternalError: stack overflow". [#4063](https://github.com/zowe/zowe-install-packaging/pull/4063) - Bugfix: Error message `ZWEL0141E` did not print user ID. [#3971](https://github.com/zowe/zowe-install-packaging/pull/3971) ## `2.17.0` diff --git a/bin/libs/common.ts b/bin/libs/common.ts index 7eabf33f5f..bee6a059f4 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; } From beff0053c4ee169484a8a5292d2e9fec0971aa86 Mon Sep 17 00:00:00 2001 From: Martin Zeithaml Date: Tue, 5 Nov 2024 13:25:12 +0100 Subject: [PATCH 41/67] Changelog update Signed-off-by: Martin Zeithaml --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad7f0afd6c..950cf6954c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to the Zowe Installer will be documented in this file. ## `2.18.1` -- Bugfix: When logging `zwe` command, sometimes the log has wrong file tag and the log is unreadable. [#40nn](https://github.com/zowe/zowe-install-packaging/pull/40nn) +- Bugfix: When logging `zwe` command, sometimes the log has wrong file tag and the log is unreadable. [#4068](https://github.com/zowe/zowe-install-packaging/pull/4068) - Bugfix: When `--log-dir` parameter for `zwe` command is a file, there might be an error "InternalError: stack overflow". [#4063](https://github.com/zowe/zowe-install-packaging/pull/4063) - Bugfix: Error message `ZWEL0141E` did not print user ID. [#3971](https://github.com/zowe/zowe-install-packaging/pull/3971) From a6caf7490bfb4f4c20941d3e5e204e0e6d699054 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Mon, 4 Nov 2024 16:09:23 -0500 Subject: [PATCH 42/67] all zlux ui plugin tests through apiml Signed-off-by: MarkAckert --- tests/sanity/test/e2e/test-07-iframe.js | 2 +- tests/sanity/test/e2e/test-08-subsys.js | 2 +- tests/sanity/test/e2e/test-10-api-catalog.js | 4 +++- tests/sanity/test/e2e/test-11-workflows.js | 2 +- tests/sanity/test/e2e/test-12-angular-sample.js | 2 +- tests/sanity/test/e2e/test-13-react-sample.js | 2 +- tests/sanity/test/e2e/test-14-ip-explorer.js | 2 +- 7 files changed, 9 insertions(+), 7 deletions(-) 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..9723150c16 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_ZLUX_HTTPS_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 ); From 88725f98596b8d89b44b02ef39d02d3681759b5a Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Mon, 4 Nov 2024 16:23:27 -0500 Subject: [PATCH 43/67] missed one port Signed-off-by: MarkAckert --- tests/sanity/test/e2e/test-10-api-catalog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/sanity/test/e2e/test-10-api-catalog.js b/tests/sanity/test/e2e/test-10-api-catalog.js index 9723150c16..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}/zlux/ui/v1/ZLUX/plugins/org.zowe.zlux.bootstrap/web/`, + `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 ); From d3d3b773df8fcc1a76f501234b1f0c18abe072ae Mon Sep 17 00:00:00 2001 From: Martin Zeithaml <66114686+Martin-Zeithaml@users.noreply.github.com> Date: Thu, 21 Nov 2024 08:53:47 +0100 Subject: [PATCH 44/67] Update `xplatform.d.ts` with `appendFileUTF8` Signed-off-by: Martin Zeithaml <66114686+Martin-Zeithaml@users.noreply.github.com> --- build/zwe/types/@qjstypes/xplatform.d.ts | 1 + 1 file changed, 1 insertion(+) 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; From 3a64038a4c46afcbdb87fe85b27e85cca3ce8ff4 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Tue, 26 Nov 2024 15:57:23 -0500 Subject: [PATCH 45/67] trigger ci Signed-off-by: MarkAckert From be9173cc80d272c6722d4092251e3de0573290fe Mon Sep 17 00:00:00 2001 From: Pavel Zlatnik Date: Thu, 28 Nov 2024 09:02:51 +0100 Subject: [PATCH 46/67] retrotit fix issue #4074 to v2 Signed-off-by: Pavel Zlatnik --- workflows/files/ZWECONF.properties | 4 ++-- workflows/files/ZWECONF.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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 264511d15e..e251ca4851 100644 --- a/workflows/files/ZWECONF.xml +++ b/workflows/files/ZWECONF.xml @@ -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 From b772839f60a3e4329cde8c49ab69494af1fa5dea Mon Sep 17 00:00:00 2001 From: Pavel Zlatnik Date: Thu, 28 Nov 2024 09:39:23 +0100 Subject: [PATCH 47/67] retrofit issues 4076,4077,4081,4082,4085,4086 to V2 Signed-off-by: Pavel Zlatnik --- example-zowe.yaml | 10 +-- workflows/files/ZWECONF.xml | 119 +++++++++++++++++------------------ workflows/files/ZWECRECR.xml | 8 +-- 3 files changed, 66 insertions(+), 71 deletions(-) diff --git a/example-zowe.yaml b/example-zowe.yaml index 1f8a36c801..409afb7248 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/workflows/files/ZWECONF.xml b/workflows/files/ZWECONF.xml index e251ca4851..85424983b3 100644 --- a/workflows/files/ZWECONF.xml +++ b/workflows/files/ZWECONF.xml @@ -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 Gateway components @@ -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 APIML Gateway + Port for the APIML Gateway components @@ -482,8 +482,8 @@ How we want to verify SSL certificates of services. Valid values are: - 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 Gateway components @@ -493,8 +493,8 @@ 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 Gateway components @@ -504,8 +504,8 @@ 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 auth components @@ -515,8 +515,8 @@ 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 auth components @@ -537,8 +537,8 @@ 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 Gateway components @@ -547,8 +547,8 @@ 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 x509 components @@ -657,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 Catalog components @@ -689,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 service components @@ -701,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 running components @@ -722,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 service components @@ -734,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 service components @@ -815,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 @@ -838,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 server components @@ -970,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 @@ -981,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 @@ -992,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 @@ -2055,17 +2055,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" @@ -2383,7 +2383,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" @@ -2487,8 +2487,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 @@ -2504,11 +2504,10 @@ zwe install -c '${instance-zowe_runtimeDirectory}/zowe.yaml' --allow-overwritezwe 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.
  • +#if (${instance-components_caching_service_storage_mode} == "VSAM" && ${instance-components_caching_service_enabled}) +
  • vsam: Configure the VSAM files needed to run the Zowe caching service used for high availability (HA).
  • +#end
]]> 1 @@ -2535,24 +2534,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 use General @@ -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

]]>
1 Security Administrator true @@ -302,8 +303,7 @@ GENREQ ${instance-acf2_acid} + - This step uses ACF2 command GENREQ

]]>
+ 1 Security Administrator true From d92edfac30e337bc35128b51a1a9d97f0af6ddc9 Mon Sep 17 00:00:00 2001 From: Pavel Zlatnik Date: Thu, 28 Nov 2024 09:44:25 +0100 Subject: [PATCH 48/67] retrofit issue fix 4083 to v2 Signed-off-by: Pavel Zlatnik --- example-zowe.yaml | 2 +- workflows/files/ZWECONF.xml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/example-zowe.yaml b/example-zowe.yaml index 409afb7248..05767b9825 100644 --- a/example-zowe.yaml +++ b/example-zowe.yaml @@ -39,7 +39,7 @@ zowe: # MVS data set related configurations dataset: # **COMMONLY_CUSTOMIZED** - # where Zowe MVS data sets will be installed + # where are existing Zowe SZWEEXEC Target libraries prefix: IBMUSER.ZWEV2 # **COMMONLY_CUSTOMIZED** # PROCLIB where Zowe STCs will be copied over diff --git a/workflows/files/ZWECONF.xml b/workflows/files/ZWECONF.xml index 85424983b3..cbc5eb9963 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 existing SZWEEXEC Target libraries created during PSWI or SMP/E + Prefix of existing SZWEEXEC Target libraries created during PSWI or SMP/E installation phase zowe @@ -1640,7 +1640,7 @@ 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 ' # where are existing Zowe SZWEEXEC Target libraries' >> "${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" From fd57438ce9dd115cd19278b6f270d22944fa6f13 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Mon, 2 Dec 2024 14:43:29 -0500 Subject: [PATCH 49/67] remove accidental periods Signed-off-by: MarkAckert --- example-zowe.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/example-zowe.yaml b/example-zowe.yaml index 05767b9825..b70fbc81e8 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. +# 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: "" From de43e24c63556a38f11fb7786c35783c010e9618 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Wed, 27 Nov 2024 11:32:38 -0500 Subject: [PATCH 50/67] adds python sdk to sourceDependencies. adds new field "core" to source dep entry Signed-off-by: MarkAckert --- manifest.json.template | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/manifest.json.template b/manifest.json.template index be11c98858..c75c0588ed 100644 --- a/manifest.json.template +++ b/manifest.json.template @@ -137,7 +137,7 @@ "version": "~2.0.0-SNAPSHOT" }, "org.zowe.licenses": { - "version": "2.3.0", + "version": "3.0.0", "artifact": "zowe_licenses_full.zip" } }, @@ -391,6 +391,14 @@ "tag": "v2.x/master", "destinations": ["Zowe PAX"] }] + }, { + "componentGroup": "Zowe Client Python SDK", + "entries": [{ + "repository": "zowe-client-python-sdk", + "core": false, + "tag": "main", + "destinations": ["Zowe Client Python SDK"] + }] } ], "imageDependencies": { From c539e099dc0696546bcd5ca1080034b7d6c1ec50 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Mon, 9 Dec 2024 16:28:39 -0500 Subject: [PATCH 51/67] adjust licenses version after cherry-pick Signed-off-by: MarkAckert --- manifest.json.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json.template b/manifest.json.template index c75c0588ed..89c2eb6aab 100644 --- a/manifest.json.template +++ b/manifest.json.template @@ -137,7 +137,7 @@ "version": "~2.0.0-SNAPSHOT" }, "org.zowe.licenses": { - "version": "3.0.0", + "version": "2.18.0", "artifact": "zowe_licenses_full.zip" } }, From d2873eb745c0ffc282186023197af3a74dcbe01a Mon Sep 17 00:00:00 2001 From: Mark Ackert <35308966+MarkAckert@users.noreply.github.com> Date: Wed, 4 Dec 2024 14:24:09 -0500 Subject: [PATCH 52/67] Merge cherry-pick PR #4092 into v2 Signed-off-by: MarkAckert --- .github/scripts/cicd_test/make_matrix.sh | 5 --- .github/workflows/cicd-test-readme.md | 5 +-- .github/workflows/cicd-test.yml | 9 +--- .pax/pre-packaging.sh | 7 +-- bin/libs/node.sh | 2 +- bin/libs/node.ts | 2 +- .../extended/node-versions/node-v18.ts | 45 ------------------- 7 files changed, 10 insertions(+), 65 deletions(-) delete mode 100644 tests/installation/src/__tests__/extended/node-versions/node-v18.ts diff --git a/.github/scripts/cicd_test/make_matrix.sh b/.github/scripts/cicd_test/make_matrix.sh index 81273471ab..0af3d8cd77 100644 --- a/.github/scripts/cicd_test/make_matrix.sh +++ b/.github/scripts/cicd_test/make_matrix.sh @@ -32,11 +32,6 @@ case $install_test_choice in test_file="$KEYRING_TESTFILE" ;; -"z/OS node v18") - test_file="$ZOS_NODE_V18_TESTFILE" - test_force_system="zzow11" - ;; - "z/OS node v20") test_file="$ZOS_NODE_V20_TESTFILE" ;; diff --git a/.github/workflows/cicd-test-readme.md b/.github/workflows/cicd-test-readme.md index e1b081a2e5..7e4b80d984 100644 --- a/.github/workflows/cicd-test-readme.md +++ b/.github/workflows/cicd-test-readme.md @@ -29,7 +29,7 @@ Workflow trigger is at [cicd-test](https://github.com/zowe/zowe-install-packagin - SMPE PTF - Extensions - Keyring - - z/OS node v18 + - z/OS node v20 - Non-strict Verify External Certificate - Install PTF twice - VSAM Caching storage method @@ -109,7 +109,7 @@ Background: CICD testing relies on a `zowe.pax` or `zowe-smpe.zip` (for SMPE ins When running CICD integration tests during RC stage, the following string will be parsed into the Github Actions matrix. As a result, a total of 21 independent jobs will be spawned. ``` -basic/install.ts(zzow09,zzow10,zzow11);basic/install-ptf.ts(zzow09,zzow10,zzow11);basic/install-ext.ts(zzow10);extended/keyring.ts(zzow09,zzow10,zzow11);extended/node-versions/node-v18.ts(zzow09,zzow10,zzow11);extended/node-versions/node-v20.ts(zzow09,zzow10,zzow11);extended/certificates/nonstrict-verify-external-certificate.ts(zzow09) +basic/install.ts(zzow09,zzow10,zzow11);basic/install-ptf.ts(zzow09,zzow10,zzow11);basic/install-ext.ts(zzow10);extended/keyring.ts(zzow09,zzow10,zzow11);extended/node-versions/node-v20.ts(zzow09,zzow10,zzow11);extended/node-versions/node-v20.ts(zzow09,zzow10,zzow11);extended/certificates/nonstrict-verify-external-certificate.ts(zzow09) ``` Total elapsed time when running in parallel is approximately 3.5 hours on paper idealy if all parallel jobs are executing at the same time. In reality, from numerous tests performed, total elapsed time is around 4 hours. @@ -121,7 +121,6 @@ Selected test running elapsed time: | ---- | ------------ | | Convenience Pax | 53m | | SMPE PTF | 68m | -| z/OS node v18 | 45m | | z/OS node v20 | 45m | | Keyring | 53m | | Non-strict Verify External Certificate | 51m | diff --git a/.github/workflows/cicd-test.yml b/.github/workflows/cicd-test.yml index ca6ee6e670..91ce831b9a 100644 --- a/.github/workflows/cicd-test.yml +++ b/.github/workflows/cicd-test.yml @@ -31,7 +31,6 @@ on: - SMPE PTF - Extensions - Keyring - - z/OS node v18 - z/OS node v20 - Non-strict Verify External Certificate - Install PTF Twice @@ -69,8 +68,8 @@ env: DEFAULT_ZOWE_EXT_ARTIFACTORY_PATTERN: libs-snapshot-local/org/zowe/{ext-name}/*/{ext-name}-*.pax # below block can be overwritten, adjusted by DevOps only - # ZOS_NODE_VERSION more to choose from: v16.20.1, v18.16.0 - ZOS_NODE_VERSION: v16.20.1 + # ZOS_NODE_VERSION more to choose from: v18.16.0, v20.11.0 + ZOS_NODE_VERSION: v18.16.0 CLIENT_NODE_VERSION: v12.18.3 INSTALL_TEST_DEBUG_INFORMATION: zowe-install-test:* SANITY_TEST_DEBUG_INFORMATION: zowe-sanity-test:* @@ -81,7 +80,6 @@ env: SMPE_PTF_TESTFILE: basic/install-ptf.ts EXTENSIONS_TESTFILE: basic/install-ext.ts KEYRING_TESTFILE: extended/keyring.ts - ZOS_NODE_V18_TESTFILE: extended/node-versions/node-v18.ts ZOS_NODE_V20_TESTFILE: extended/node-versions/node-v20.ts NON_STRICT_VERIFY_EXTERNAL_CERTIFICATE_TESTFILE: extended/certificates/nonstrict-verify-external-certificate.ts INSTALL_PTF_TWICE_TESTFILE: extended/install-ptf-two-times.ts @@ -298,9 +296,6 @@ jobs: case 'Keyring': eta = 53 break; - case 'z/OS node v18': - eta = 45 - break; case 'z/OS node v20': eta = 45 break; diff --git a/.pax/pre-packaging.sh b/.pax/pre-packaging.sh index cb17b8244b..201b9aac03 100755 --- a/.pax/pre-packaging.sh +++ b/.pax/pre-packaging.sh @@ -190,9 +190,10 @@ BASE_DIR=$( pwd ) # /.pax -# use node v16 to build -export NODE_HOME=/ZOWE/node/node-v16.20.1-os390-s390x - +# use node v18 to build +export NODE_HOME=/ZOWE/node/node-v18.16.0 +export JAVA_HOME=/ZOWE/node/J17.0_64 +export PATH=$JAVA_HOME/bin:$PATH ZOWE_ROOT_DIR="${BASE_DIR}/content" cd "${BASE_DIR}" 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/tests/installation/src/__tests__/extended/node-versions/node-v18.ts b/tests/installation/src/__tests__/extended/node-versions/node-v18.ts deleted file mode 100644 index d6345a1df6..0000000000 --- a/tests/installation/src/__tests__/extended/node-versions/node-v18.ts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * 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 2022 - */ - -import { - checkMandatoryEnvironmentVariables, - installAndVerifyConvenienceBuild, - showZoweRuntimeLogs, -} from '../../../utils'; -import { TEST_TIMEOUT_CONVENIENCE_BUILD } from '../../../constants'; - -// Only runs on zzow11 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'; -describe(testSuiteName, () => { - beforeAll(() => { - // validate variables - checkMandatoryEnvironmentVariables([ - '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_node_home': '/ZOWE/node/node-v18.16.0', - 'zowe_lock_keystore': 'false', - } - ); - }, TEST_TIMEOUT_CONVENIENCE_BUILD); - - afterAll(async () => { - await showZoweRuntimeLogs(testServer); - }) -}); From ad00d5126b50c4cbd8c028023dc9a89f2912a7b5 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Mon, 9 Dec 2024 16:21:13 -0500 Subject: [PATCH 53/67] add node-v22 tests and add them to extended suite Signed-off-by: MarkAckert --- .github/scripts/cicd_test/make_matrix.sh | 4 ++ .github/workflows/cicd-test.yml | 4 +- .../extended/node-versions/node-v22.ts | 44 +++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 tests/installation/src/__tests__/extended/node-versions/node-v22.ts diff --git a/.github/scripts/cicd_test/make_matrix.sh b/.github/scripts/cicd_test/make_matrix.sh index 0af3d8cd77..4aea7a10ae 100644 --- a/.github/scripts/cicd_test/make_matrix.sh +++ b/.github/scripts/cicd_test/make_matrix.sh @@ -36,6 +36,10 @@ case $install_test_choice in test_file="$ZOS_NODE_V20_TESTFILE" ;; +"z/OS node v22") + test_file="$ZOS_NODE_V22_TESTFILE" + ;; + "Non-strict Verify External Certificate") test_file="$NON_STRICT_VERIFY_EXTERNAL_CERTIFICATE_TESTFILE" ;; diff --git a/.github/workflows/cicd-test.yml b/.github/workflows/cicd-test.yml index 91ce831b9a..1cf8977285 100644 --- a/.github/workflows/cicd-test.yml +++ b/.github/workflows/cicd-test.yml @@ -32,6 +32,7 @@ on: - Extensions - Keyring - z/OS node v20 + - z/OS node v22 - Non-strict Verify External Certificate - Install PTF Twice - VSAM Caching Storage Method @@ -81,6 +82,7 @@ env: EXTENSIONS_TESTFILE: basic/install-ext.ts KEYRING_TESTFILE: extended/keyring.ts ZOS_NODE_V20_TESTFILE: extended/node-versions/node-v20.ts + ZOS_NODE_V22_TESTFILE: extended/node-versions/node-v22.ts NON_STRICT_VERIFY_EXTERNAL_CERTIFICATE_TESTFILE: extended/certificates/nonstrict-verify-external-certificate.ts INSTALL_PTF_TWICE_TESTFILE: extended/install-ptf-two-times.ts VSAM_CACHING_STORAGE_METHOD_TESTFILE: extended/caching-storages/vsam-storage.ts @@ -88,7 +90,7 @@ env: CONFIG_MANAGER_TESTFILE: extended/config-manager/enable-config-manager.ts GENERAL_API_DOCUMENTATION_TESTFILE: basic/install-api-gen.ts ZOWE_NIGHTLY_TESTS_FULL: basic/install.ts(all);basic/install-ptf.ts(all) - ZOWE_RELEASE_TESTS_FULL: basic/install.ts(all);basic/install-ptf.ts(all);basic/install-ext.ts(any);extended/keyring.ts(all);extended/node-versions/node-v18.ts(zzow11);extended/node-versions/node-v20.ts(any);extended/certificates/nonstrict-verify-external-certificate.ts(any);extended/caching-storages/infinispan-storage.ts(any);extended/config-manager/enable-config-manager.ts(any) + ZOWE_RELEASE_TESTS_FULL: basic/install.ts(all);basic/install-ptf.ts(all);basic/install-ext.ts(any);extended/keyring.ts(all);extended/node-versions/node-v20.ts(any);extended/node-versions/node-v22.ts(any);extended/certificates/nonstrict-verify-external-certificate.ts(any);extended/caching-storages/infinispan-storage.ts(any);extended/config-manager/enable-config-manager.ts(any) jobs: display-dispatch-event-id: diff --git a/tests/installation/src/__tests__/extended/node-versions/node-v22.ts b/tests/installation/src/__tests__/extended/node-versions/node-v22.ts new file mode 100644 index 0000000000..8375055f01 --- /dev/null +++ b/tests/installation/src/__tests__/extended/node-versions/node-v22.ts @@ -0,0 +1,44 @@ +/** + * 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 Zowe Contributors 2024 + */ + +import { + checkMandatoryEnvironmentVariables, + installAndVerifyConvenienceBuild, + showZoweRuntimeLogs, +} from '../../../utils'; +import { TEST_TIMEOUT_CONVENIENCE_BUILD } from '../../../constants'; + +const testServer = process.env.TEST_SERVER; +const testSuiteName = 'Test convenience build installation with node.js v22'; +describe(testSuiteName, () => { + beforeAll(() => { + // validate variables + checkMandatoryEnvironmentVariables([ + '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_node_home': '/ZOWE/node/node-v22.10.0', + 'zowe_lock_keystore': 'false', + } + ); + }, TEST_TIMEOUT_CONVENIENCE_BUILD); + + afterAll(async () => { + await showZoweRuntimeLogs(testServer); + }) +}); From 7491d3dd02fe6a0d091a7abd363b7a755a250af9 Mon Sep 17 00:00:00 2001 From: Mark Ackert <35308966+MarkAckert@users.noreply.github.com> Date: Tue, 10 Dec 2024 13:51:50 -0500 Subject: [PATCH 54/67] Merge pull request #4104 from zowe/user/markackert/dead-link-checker Dead Link Checker Signed-off-by: MarkAckert --- .github/lychee.toml | 12 ++++++++ .github/workflows/link-check.yml | 49 ++++++++++++++++++++++++++++++++ workflows/files/ZWELOADC.xml | 8 +++--- 3 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 .github/lychee.toml create mode 100644 .github/workflows/link-check.yml diff --git a/.github/lychee.toml b/.github/lychee.toml new file mode 100644 index 0000000000..d256ce025a --- /dev/null +++ b/.github/lychee.toml @@ -0,0 +1,12 @@ +# This lychee configuration tries to find dead links in zwe, pswi, and smpe files which may be displayed to the user. +# This does not focus on dead links for internal-facing documentation, e.g. README.md. + +# We're including language sources as well as document files since the language sources embed URLs +# which can be displayed to the user, e.g. 'zwe' shell script commands displaying help information. + +exclude_path = ['smpe/bld/service/_README_sample_sysmod_builds.docx'] +# This exclude list covers known urls which should be ignored, including ones which contained +# templated values in typescript. The templates are covered by a wildcard. +exclude = [ 'https://www.eclipse.org/legal/epl-v20.html', 'https://zowe.org/schemas/*', 'https://www.zowe.org/schemas/*', 'https://discovery', 'https://github.com/zowe/launcher/blob/*', 'https://myregistry/url$', 'https://your-zos-host-name/zosmf/*{1,60}', '^http://service.software.ibm.com/holdata/390holddata.html', ] + +hidden = true diff --git a/.github/workflows/link-check.yml b/.github/workflows/link-check.yml new file mode 100644 index 0000000000..d11b069c7a --- /dev/null +++ b/.github/workflows/link-check.yml @@ -0,0 +1,49 @@ +# This link checker focuses on covering end-user facing links, not developer documentation. +# This means we cover the smp/e, pswi, and zwe content. +# The lychee toml files are set to ignore links which popped up in comments or variables. +permissions: read-all + +name: Link Check CI + +on: + pull_request: + types: [opened, synchronize] + push: + branches: + - 'v3.x/staging' + - 'v2.x/staging' + workflow_dispatch: + +jobs: + lychee-link-check: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Link Checker + id: lychee + uses: lycheeverse/lychee-action@f81112d0d2814ded911bd23e3beaa9dda9093915 # v2.1.0 + with: + fail: true + format: json + output: lychee_output.json + args: --config ./.github/lychee.toml --no-progress --verbose --max-retries 10 'bin/**/*' 'smpe/**/*' 'workflows/**/*' + + - name: Output failed links in console + id: quick-output + if: always() + run: | + if [[ -f "lychee_output.json" ]]; then + jq .fail_map lychee_output.json + else + echo "lychee command failed and didn't produce output" + fi + + - name: Publish Output + id: publish + if: always() + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 + with: + name: lychee_results.json + path: lychee_output.json 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.

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 here - configure RACF security certificates + configure RACF security certificates or there RACDCERT ADD (Add certificate) command.

]]> 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.

]]>
1 Security Administrator @@ -367,7 +367,7 @@ 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 here - configure RACF security certificates
+ configure RACF security certificates
or there RACDCERT ADD (Add certificate) command.

]]>
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.

+ configure ACF2 security certificates.

]]>
1 Security Administrator From 63d5d584ca87d0d6c6aa598c717f9619bf51ecb0 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Tue, 10 Dec 2024 15:05:30 -0500 Subject: [PATCH 55/67] keep java8 for v2 pax build Signed-off-by: MarkAckert --- .pax/pre-packaging.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pax/pre-packaging.sh b/.pax/pre-packaging.sh index 201b9aac03..dd95ee81f5 100755 --- a/.pax/pre-packaging.sh +++ b/.pax/pre-packaging.sh @@ -192,7 +192,7 @@ BASE_DIR=$( # use node v18 to build export NODE_HOME=/ZOWE/node/node-v18.16.0 -export JAVA_HOME=/ZOWE/node/J17.0_64 +export JAVA_HOME=/ZOWE/node/J8.0_64 export PATH=$JAVA_HOME/bin:$PATH ZOWE_ROOT_DIR="${BASE_DIR}/content" From 242f9a7df17263d0cb6af21a1c6e1d9bfc58a7d9 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Tue, 10 Dec 2024 15:07:23 -0500 Subject: [PATCH 56/67] control JAVA_HOME in playbooks, rather than relying on remote system profile Signed-off-by: MarkAckert --- playbooks/group_vars/marist.yml | 1 + 1 file changed, 1 insertion(+) 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 From d0b528a1911904a12bef821637f4630881811c9e Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Thu, 12 Dec 2024 15:51:33 -0500 Subject: [PATCH 57/67] fix NODE_HOME_PATTERN Signed-off-by: MarkAckert --- .../cicd_test/prep7_more_test_prep/06_process_outputs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/scripts/cicd_test/prep7_more_test_prep/06_process_outputs.sh b/.github/scripts/cicd_test/prep7_more_test_prep/06_process_outputs.sh index bce1d40594..89d12cf135 100644 --- a/.github/scripts/cicd_test/prep7_more_test_prep/06_process_outputs.sh +++ b/.github/scripts/cicd_test/prep7_more_test_prep/06_process_outputs.sh @@ -13,7 +13,7 @@ # Set outputs echo ZOWE_ARTIFACTORY_FINAL=$ZOWE_ARTIFACTORY_FINAL >>$GITHUB_OUTPUT echo ZOWE_ARTIFACTORY_FINAL_FILENAME=$ZOWE_ARTIFACTORY_FINAL_FILENAME >>$GITHUB_OUTPUT -echo NODE_HOME_PATTERN=/ZOWE/node/node-$ZOS_NODE_VERSION-os390-s390x >>$GITHUB_OUTPUT +echo NODE_HOME_PATTERN=/ZOWE/node/node-$ZOS_NODE_VERSION >>$GITHUB_OUTPUT echo TEST_SERVER=$TEST_SERVER >>$GITHUB_OUTPUT echo TEST_SERVER_NICKNAME=$TEST_SERVER_NICKNAME >>$GITHUB_OUTPUT echo EXTENSION_LIST=$EXTENSION_LIST >>$GITHUB_OUTPUT From 2f65256342ece493fb533ffeb2ff3a0d51eaef61 Mon Sep 17 00:00:00 2001 From: ojcelis <84936499+ojcelis@users.noreply.github.com> Date: Mon, 16 Dec 2024 15:34:50 -0500 Subject: [PATCH 58/67] Add new extended test cases - Zowe v2 and Java 11 (#3571) * add new java 11 test cases Signed-off-by: ojcelis * update typo Signed-off-by: ojcelis * update where to get utils and constants Signed-off-by: ojcelis * missed the other folder Signed-off-by: ojcelis * update indentation Signed-off-by: ojcelis * update last lint errors Signed-off-by: ojcelis * update make matrix Signed-off-by: ojcelis * JAVA 17 install pax test Signed-off-by: ojcelis * remove java 17 and 11+pax tests Signed-off-by: MarkAckert * cleanup some merge issues Signed-off-by: MarkAckert --------- Signed-off-by: ojcelis Signed-off-by: MarkAckert Co-authored-by: MarkAckert --- .github/scripts/cicd_test/make_matrix.sh | 8 +++ .github/workflows/cicd-test-readme.md | 6 +++ .github/workflows/cicd-test.yml | 10 ++++ .../java-versions/java11/install-keyring.ts | 50 +++++++++++++++++++ .../java-versions/java11/install-pax.ts | 45 +++++++++++++++++ 5 files changed, 119 insertions(+) create mode 100644 tests/installation/src/__tests__/extended/java-versions/java11/install-keyring.ts create mode 100644 tests/installation/src/__tests__/extended/java-versions/java11/install-pax.ts diff --git a/.github/scripts/cicd_test/make_matrix.sh b/.github/scripts/cicd_test/make_matrix.sh index 4aea7a10ae..eee2b97757 100644 --- a/.github/scripts/cicd_test/make_matrix.sh +++ b/.github/scripts/cicd_test/make_matrix.sh @@ -36,6 +36,14 @@ case $install_test_choice in test_file="$ZOS_NODE_V20_TESTFILE" ;; +"z/OS java 11 Pax") + test_file="$ZOS_JAVA_11_PAX_TESTFILE" + ;; + +"z/OS java 11 Keyring") + test_file="$ZOS_JAVA_11_KYRNG_TESTFILE" + ;; + "z/OS node v22") test_file="$ZOS_NODE_V22_TESTFILE" ;; diff --git a/.github/workflows/cicd-test-readme.md b/.github/workflows/cicd-test-readme.md index 7e4b80d984..6867fd2979 100644 --- a/.github/workflows/cicd-test-readme.md +++ b/.github/workflows/cicd-test-readme.md @@ -29,6 +29,8 @@ Workflow trigger is at [cicd-test](https://github.com/zowe/zowe-install-packagin - SMPE PTF - Extensions - Keyring + - z/OS java 11 Pax + - z/OS java 11 Keyring - z/OS node v20 - Non-strict Verify External Certificate - Install PTF twice @@ -121,7 +123,11 @@ Selected test running elapsed time: | ---- | ------------ | | Convenience Pax | 53m | | SMPE PTF | 68m | +| Keyring | 53m | | z/OS node v20 | 45m | +| z/OS node v22 | 45m | +| z/OS java 11 Pax | 53m | +| z/OS java 11 Keyring | 53m | | Keyring | 53m | | Non-strict Verify External Certificate | 51m | | Extensions | 67m diff --git a/.github/workflows/cicd-test.yml b/.github/workflows/cicd-test.yml index 1cf8977285..90c1084105 100644 --- a/.github/workflows/cicd-test.yml +++ b/.github/workflows/cicd-test.yml @@ -33,6 +33,8 @@ on: - Keyring - z/OS node v20 - z/OS node v22 + - z/OS java 11 Pax + - z/OS java 11 Keyring - Non-strict Verify External Certificate - Install PTF Twice - VSAM Caching Storage Method @@ -83,6 +85,8 @@ env: KEYRING_TESTFILE: extended/keyring.ts ZOS_NODE_V20_TESTFILE: extended/node-versions/node-v20.ts ZOS_NODE_V22_TESTFILE: extended/node-versions/node-v22.ts + ZOS_JAVA_11_PAX_TESTFILE: extended/java-versions/java11/install-pax.ts + ZOS_JAVA_11_KYRNG_TESTFILE: extended/java-versions/java11/install-keyring.ts NON_STRICT_VERIFY_EXTERNAL_CERTIFICATE_TESTFILE: extended/certificates/nonstrict-verify-external-certificate.ts INSTALL_PTF_TWICE_TESTFILE: extended/install-ptf-two-times.ts VSAM_CACHING_STORAGE_METHOD_TESTFILE: extended/caching-storages/vsam-storage.ts @@ -301,6 +305,12 @@ jobs: case 'z/OS node v20': eta = 45 break; + case 'z/OS java 11 Pax': + eta = 53 + break; + case 'z/OS java 11 Keyring': + eta = 53 + break;q case 'Infinispan Caching Storage Method': eta = 51 break; 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 From 09ab26c7252993bc6a62ee1bd534f9330c23671c Mon Sep 17 00:00:00 2001 From: 1000TurquoisePogs Date: Thu, 9 Jan 2025 15:35:53 +0100 Subject: [PATCH 59/67] Print error message on invalid extension install package (v2) (#4122) * Update index.ts Signed-off-by: 1000TurquoisePogs * Update .errors Signed-off-by: 1000TurquoisePogs --------- Signed-off-by: 1000TurquoisePogs --- bin/commands/components/install/extract/.errors | 3 ++- bin/commands/components/install/extract/index.ts | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) 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 From 7a0543cac9d91a649bda767a128db023a6c6d63a Mon Sep 17 00:00:00 2001 From: 1000TurquoisePogs Date: Thu, 9 Jan 2025 17:18:36 +0100 Subject: [PATCH 60/67] Explain missing nodeJS error better (v2) (#4124) * Update json.sh Signed-off-by: 1000TurquoisePogs * Update .errors Signed-off-by: 1000TurquoisePogs * Update json.sh Signed-off-by: 1000TurquoisePogs --------- Signed-off-by: 1000TurquoisePogs --- bin/commands/.errors | 3 ++- bin/libs/json.sh | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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/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} From 31aba0c9179d16e3f5db8a3f7cf880730258da67 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Wed, 22 Jan 2025 10:33:29 -0500 Subject: [PATCH 61/67] add "-O" to scp commands used in automation (ubuntu-24 compat) Signed-off-by: MarkAckert --- playbooks/roles/common/templates/scp.with-key.sh.j2 | 2 +- playbooks/roles/common/templates/scp.with-pwd.sh.j2 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 From 09f6ffeddc16b1b14b447226f309a54560f67526 Mon Sep 17 00:00:00 2001 From: MarkAckert Date: Wed, 22 Jan 2025 10:35:10 -0500 Subject: [PATCH 62/67] update upload-artifact to v4 Signed-off-by: MarkAckert --- .github/workflows/cicd-test.yml | 2 +- .github/workflows/diff-schema.yml | 2 +- .github/workflows/diff-yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cicd-test.yml b/.github/workflows/cicd-test.yml index 90c1084105..2d189b10b5 100644 --- a/.github/workflows/cicd-test.yml +++ b/.github/workflows/cicd-test.yml @@ -392,7 +392,7 @@ jobs: - name: '[After Test 2] Upload test report' if: always() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: InstallTestReports-${{ env.TEST_NAME }}-${{ steps.more-test-prep.outputs.TEST_SERVER_NICKNAME }}-${{ github.run_id }}-${{ env.CURRENT_TIME }} path: ${{ env.INSTALL_TEST_PATH }}/reports/ diff --git a/.github/workflows/diff-schema.yml b/.github/workflows/diff-schema.yml index ae8c8c4db7..3e47227461 100644 --- a/.github/workflows/diff-schema.yml +++ b/.github/workflows/diff-schema.yml @@ -34,7 +34,7 @@ jobs: - name: '[Build] Make diff' run: git diff ${{ env.FROM }} ${{ env.TO }} -- schemas > schemas.diff - name: '[Upload]' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: schemas.diff path: schemas.diff diff --git a/.github/workflows/diff-yaml b/.github/workflows/diff-yaml index 52212e980a..032656ef78 100644 --- a/.github/workflows/diff-yaml +++ b/.github/workflows/diff-yaml @@ -34,7 +34,7 @@ jobs: - name: '[Build] Make diff' run: git diff ${{ env.FROM }} ${{ env.TO }} -- example-zowe.yaml > example-yaml.diff - name: '[Upload]' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: example-yaml.diff path: example-yaml.diff From 4f6b56e31822ef42111e7fae615d1513b2d334c1 Mon Sep 17 00:00:00 2001 From: Pablo Carle Date: Tue, 4 Feb 2025 16:10:02 +0100 Subject: [PATCH 63/67] pick from v3 (#4164) Signed-off-by: Pablo Carle Co-authored-by: Pablo Carle --- bin/libs/component.ts | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) 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"); From f048cde955570cb6a30854d9052750d2440c5820 Mon Sep 17 00:00:00 2001 From: Mark Ackert <35308966+MarkAckert@users.noreply.github.com> Date: Mon, 10 Feb 2025 09:58:43 -0500 Subject: [PATCH 64/67] Fix v2 PTF Failures (#4178) * increase verbosity Signed-off-by: MarkAckert * empty commit (trigger build) Signed-off-by: MarkAckert * add var to holddata step (no longer implicit) Signed-off-by: MarkAckert * Revert "increase verbosity" This reverts commit 6e3e2d1664428b3607600260e8253072642a53ed. Signed-off-by: MarkAckert * Revert "empty commit (trigger build)" This reverts commit a0f91b30d8014e3d12a61ae579ad3c107687e5e4. Signed-off-by: MarkAckert --------- Signed-off-by: MarkAckert --- playbooks/roles/ptf/tasks/main.yml | 2 ++ 1 file changed, 2 insertions(+) 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 From 501f4a13ae247a2ace0d8715a57e8e42046333e1 Mon Sep 17 00:00:00 2001 From: pavelzlatnik <45940302+pavelzlatnik@users.noreply.github.com> Date: Mon, 10 Feb 2025 17:25:45 +0100 Subject: [PATCH 65/67] Retrofit workflows changes from Zowe V3 RC3 (new API ML workflow included) (#4176) * initAPIMLwf2x Signed-off-by: Pavel Zlatnik * iteration1 Signed-off-by: Pavel Zlatnik * iteration2 Signed-off-by: Pavel Zlatnik * signcomit Signed-off-by: Pavel Zlatnik * set debugs to flase Signed-off-by: Pavel Zlatnik * lastComponents Signed-off-by: Pavel Zlatnik * port reorder Signed-off-by: Pavel Zlatnik * wf version based on pipeline Signed-off-by: Pavel Zlatnik * signof Signed-off-by: Pavel Zlatnik * packaging pswi v2 Signed-off-by: Pavel Zlatnik * apiml wf logic changes Signed-off-by: Pavel Zlatnik * proper apiml wording Signed-off-by: Pavel Zlatnik * zowe conf update Signed-off-by: Pavel Zlatnik --------- Signed-off-by: Pavel Zlatnik Co-authored-by: Mark Ackert <35308966+MarkAckert@users.noreply.github.com> --- example-zowe.yaml | 2 +- pswi/03_create.sh | 8 +- pswi/scripts/deploy_test_2_3.py | 9 +- workflows/files/ZWEAMLCF.xml | 1433 +++++++++++++++++++++++++++++++ workflows/files/ZWECONF.xml | 65 +- 5 files changed, 1470 insertions(+), 47 deletions(-) create mode 100644 workflows/files/ZWEAMLCF.xml diff --git a/example-zowe.yaml b/example-zowe.yaml index b70fbc81e8..11444cd9d6 100644 --- a/example-zowe.yaml +++ b/example-zowe.yaml @@ -39,7 +39,7 @@ zowe: # MVS data set related configurations dataset: # **COMMONLY_CUSTOMIZED** - # where are existing Zowe SZWEEXEC Target libraries + # where Zowe MVS data sets will be installed prefix: IBMUSER.ZWEV2 # **COMMONLY_CUSTOMIZED** # PROCLIB where Zowe STCs will be copied over diff --git a/pswi/03_create.sh b/pswi/03_create.sh index 0e79707819..49b218da98 100644 --- a/pswi/03_create.sh +++ b/pswi/03_create.sh @@ -28,7 +28,8 @@ echo "z/OSMF version :" $ZOSMF_V # 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.", @@ -145,6 +146,11 @@ 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 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/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 + +
+ + 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 + +
+ + 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 + +
+
+
diff --git a/workflows/files/ZWECONF.xml b/workflows/files/ZWECONF.xml index cbc5eb9963..5d72cf3f92 100644 --- a/workflows/files/ZWECONF.xml +++ b/workflows/files/ZWECONF.xml @@ -12,9 +12,9 @@ - - Prefix of existing SZWEEXEC Target libraries created during PSWI or SMP/E - Prefix of existing SZWEEXEC Target libraries created during PSWI or SMP/E installation phase + + 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 @@ -460,8 +460,8 @@ How we want to verify SSL certificates of services. Valid values are: - Port for the APIML Gateway - Port for the APIML Gateway + Port for the API ML Gateway + Port for the API ML Gateway components @@ -492,7 +492,7 @@ How we want to verify SSL certificates of services. Valid values are: - + Authorization provider for the Gateway Authorization provider for the Gateway components @@ -503,7 +503,7 @@ 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 components @@ -514,7 +514,7 @@ How we want to verify SSL certificates of services. Valid values are:
- + Service ID for Gateway security auth Service ID for Gateway security auth components @@ -525,7 +525,7 @@ How we want to verify SSL certificates of services. Valid values are: - + Check to enable the security authorization endpoint Check to enable the security authorization endpoint components @@ -536,7 +536,7 @@ How we want to verify SSL certificates of services. Valid values are: - + Security authorization provider for the Gateway Security authorization provider for the Gateway components @@ -546,7 +546,7 @@ 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 components @@ -1157,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 - - + @@ -1242,8 +1229,7 @@ How we want to verify SSL certificates of services. Valid values are: - - + Run this step to fill base variables. 1 z/OS System Programmer @@ -1640,7 +1626,7 @@ 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 are existing Zowe SZWEEXEC Target libraries' >> "${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" @@ -2446,26 +2432,21 @@ echo '# enabled: false' >> "${instance-zowe_runtimeDirectory}/zowe.yaml" Zowe installation Zowe installation - - Run the Zowe install (only for convenience build) + + Run the Zowe install Configure 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.
]]>
1 z/OS System Programmer From 357e32eab38f194c083c104fcb0275436244a7fe Mon Sep 17 00:00:00 2001 From: Martin Zeithaml <66114686+Martin-Zeithaml@users.noreply.github.com> Date: Mon, 10 Feb 2025 20:28:44 +0100 Subject: [PATCH 66/67] [V2] SZWESAMP MVS JCLs update (#4183) * [V2] SZWESAMP MVS JCLs update Signed-off-by: Martin Zeithaml * minor formatting changes Signed-off-by: MarkAckert --------- Signed-off-by: Martin Zeithaml Signed-off-by: MarkAckert Co-authored-by: MarkAckert Co-authored-by: Mark Ackert <35308966+MarkAckert@users.noreply.github.com> --- files/SZWESAMP/ZWEIMVS | 6 +++--- files/SZWESAMP/ZWEIMVS2 | 4 ++-- files/SZWESAMP/ZWERMVS | 6 +++--- files/SZWESAMP/ZWERMVS2 | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/files/SZWESAMP/ZWEIMVS b/files/SZWESAMP/ZWEIMVS index e8e4b6caef..60e1ef702b 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.prefix' + 'SZWEAUTH', +//* then you must also run "ZWEIMVS2". //* //********************************************************************* //MKPDSE EXEC PGM=IKJEFT01 diff --git a/files/SZWESAMP/ZWEIMVS2 b/files/SZWESAMP/ZWEIMVS2 index 93a3213a62..4bfdf95117 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.prefix' + 'SZWEAUTH'. //* //* When running this job, you should also run ZWEIMVS //* diff --git a/files/SZWESAMP/ZWERMVS b/files/SZWESAMP/ZWERMVS index 844e027dcf..62ee3e103e 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.prefix' + 'SZWEAUTH', +//* then you must also run "ZWERMVS2". //* //********************************************************************* //RMPDSE EXEC PGM=IKJEFT01 diff --git a/files/SZWESAMP/ZWERMVS2 b/files/SZWESAMP/ZWERMVS2 index 266f60099a..545b08d258 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.prefix' + 'SZWEAUTH'. //* //* When running this job, you should also run ZWERMVS //* From 0cd35939af82274ff8d8a7102f1e7b90eb5c848b Mon Sep 17 00:00:00 2001 From: Martin Zeithaml <66114686+Martin-Zeithaml@users.noreply.github.com> Date: Tue, 11 Feb 2025 18:02:02 +0100 Subject: [PATCH 67/67] Comment update (#4187) Signed-off-by: Martin Zeithaml --- files/SZWESAMP/ZWEIMVS | 2 +- files/SZWESAMP/ZWEIMVS2 | 2 +- files/SZWESAMP/ZWERMVS | 2 +- files/SZWESAMP/ZWERMVS2 | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/files/SZWESAMP/ZWEIMVS b/files/SZWESAMP/ZWEIMVS index 60e1ef702b..500c060492 100644 --- a/files/SZWESAMP/ZWEIMVS +++ b/files/SZWESAMP/ZWEIMVS @@ -16,7 +16,7 @@ //* "runtime" datasets that are created upon install of Zowe / SMPE. //* //* If your chosen value of 'zowe.setup.dataset.authLoadlib' is not -//* equal to 'zowe.setup.prefix' + 'SZWEAUTH', +//* equal to 'zowe.setup.dataset.prefix' + 'SZWEAUTH', //* then you must also run "ZWEIMVS2". //* //********************************************************************* diff --git a/files/SZWESAMP/ZWEIMVS2 b/files/SZWESAMP/ZWEIMVS2 index 4bfdf95117..a4bb428c72 100644 --- a/files/SZWESAMP/ZWEIMVS2 +++ b/files/SZWESAMP/ZWEIMVS2 @@ -14,7 +14,7 @@ //* This job is used to create the APF load library for an instance //* of Zowe. It is not needed if your chosen value of //* 'zowe.setup.dataset.authLoadlib' is equal to -//* 'zowe.setup.prefix' + 'SZWEAUTH'. +//* '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 62ee3e103e..8aa58885d7 100644 --- a/files/SZWESAMP/ZWERMVS +++ b/files/SZWESAMP/ZWERMVS @@ -16,7 +16,7 @@ //* "runtime" datasets that are created upon install of Zowe / SMPE. //* //* If your chosen value of 'zowe.setup.dataset.authLoadlib' is not -//* equal to 'zowe.setup.prefix' + 'SZWEAUTH', +//* equal to 'zowe.setup.dataset.prefix' + 'SZWEAUTH', //* then you must also run "ZWERMVS2". //* //********************************************************************* diff --git a/files/SZWESAMP/ZWERMVS2 b/files/SZWESAMP/ZWERMVS2 index 545b08d258..5848ec5933 100644 --- a/files/SZWESAMP/ZWERMVS2 +++ b/files/SZWESAMP/ZWERMVS2 @@ -14,7 +14,7 @@ //* This job is used to remove the APF load library for an instance //* of Zowe. It is not needed if your chosen value of //* 'zowe.setup.dataset.authLoadlib' is equal to -//* 'zowe.setup.prefix' + 'SZWEAUTH'. +//* 'zowe.setup.dataset.prefix' + 'SZWEAUTH'. //* //* When running this job, you should also run ZWERMVS //*