diff --git a/.github/workflows/build-packaging.yml b/.github/workflows/build-packaging.yml index 1591457df4..dc6dda480d 100644 --- a/.github/workflows/build-packaging.yml +++ b/.github/workflows/build-packaging.yml @@ -1,4 +1,11 @@ name: Zowe Build and Packaging + +permissions: + id-token: write + issues: write + pull-requests: write + contents: write + on: push: branches: @@ -130,7 +137,7 @@ jobs: echo BUILD_WHAT=$BUILD_WHAT >> $GITHUB_OUTPUT - - name: '[Prep 7] Comment on PR to indicate build is started' + - name: '[Prep 7] Comment on PR to indicate build is started' uses: actions/github-script@v5 id: create-comment if: (github.event_name == 'workflow_dispatch' || github.event_name == 'pull_request') && startsWith(env.CURRENT_BRANCH, 'PR-') @@ -265,6 +272,7 @@ jobs: timeout-minutes: 10 uses: zowe-actions/shared-actions/publish@main with: + sigstore-sign-artifacts: true artifacts: | .pax/zowe.pax .pax/zowe-smpe.zip diff --git a/CHANGELOG.md b/CHANGELOG.md index fc042086f3..9edb889b67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to the Zowe Installer will be documented in this file. +## `2.15.0` + +## New features and enhancements + +## Minor enhancements/defect fixes +- Bugfix: `zwe diagnose` running under comfigmgr and output formatted. Fixes #[3627](https://github.com/zowe/zowe-install-packaging/issues/3627). + ## `2.14.0` ### New features and enhancements @@ -16,9 +23,8 @@ All notable changes to the Zowe Installer will be documented in this file. - Enhancement: Added utility "getesm" into bin/utils. When run it outputs to STDOUT which ESM your system is using. (#3662) #### Minor enhancements/defect fixes -- Enhancement: `/bin/utils/date-add.rex` utility is accepting the date formatting as combination of YY|YYYY, MM, DD and any separator. - Bugfix: Workflow files in the Zowe PAX are now ASCII-encoded. Fixes [#3591](https://github.com/zowe/zowe-install-packaging/issues/3591). - +- Enhancement: `/bin/utils/date-add.rex` utility is accepting the date formatting as combination of YY|YYYY, MM, DD and any separator. ## `2.12.0` @@ -26,7 +32,6 @@ All notable changes to the Zowe Installer will be documented in this file. #### Minor enhancements/defect fixes - ## `2.11.0` ### New features and enhancements diff --git a/bin/commands/certificate/keyring-jcl/connect/.parameters b/bin/commands/certificate/keyring-jcl/connect/.parameters index 8ae86cb266..1160a03958 100644 --- a/bin/commands/certificate/keyring-jcl/connect/.parameters +++ b/bin/commands/certificate/keyring-jcl/connect/.parameters @@ -8,6 +8,6 @@ trust-cas||string|||||Labels of extra certificate authorities should be trusted, connect-user||string|required||||Certificate owner. Can be `SITE` or a user ID. connect-label||string|required||||Certificate label to connect. trust-zosmf||boolean|||||Whether to trust z/OSMF CA. -zosmf-ca||string||_auto_|||Labels of z/OSMF root certificate authorities. Specify "_auto_" to let Zowe to detect automatically. This only works for RACF. +zosmf-ca||string||_auto_|||Labels of z/OSMF root certificate authorities. Specify `_auto_` to let Zowe to detect automatically. This works for RACF and TSS. zosmf-user||string||IZUSVR|||z/OSMF user name. This is used to automatically detect z/OSMF root certificate authorities. ignore-security-failures||boolean|||||Whether to ignore security setup job failures. diff --git a/bin/commands/certificate/keyring-jcl/generate/.parameters b/bin/commands/certificate/keyring-jcl/generate/.parameters index 6017cd675d..5a16628783 100644 --- a/bin/commands/certificate/keyring-jcl/generate/.parameters +++ b/bin/commands/certificate/keyring-jcl/generate/.parameters @@ -16,6 +16,6 @@ country||string|||||Country of certificate and certificate authority. validity||string|||||Validity days of certificate. trust-cas||string|||||Labels of extra certificate authorities should be trusted, separated by comma (Maximum 2). trust-zosmf||boolean|||||Whether to trust z/OSMF CA. -zosmf-ca||string||_auto_|||Labels of z/OSMF root certificate authorities. Specify "_auto_" to let Zowe to detect automatically. This only works for RACF. +zosmf-ca||string||_auto_|||Labels of z/OSMF root certificate authorities. Specify `_auto_` to let Zowe to detect automatically. This works for RACF and TSS. zosmf-user||string||IZUSVR|||z/OSMF user name. This is used to automatically detect z/OSMF root certificate authorities. ignore-security-failures||boolean|||||Whether to ignore security setup job failures. diff --git a/bin/commands/certificate/keyring-jcl/import-ds/.parameters b/bin/commands/certificate/keyring-jcl/import-ds/.parameters index f0cb41275a..801991dcce 100644 --- a/bin/commands/certificate/keyring-jcl/import-ds/.parameters +++ b/bin/commands/certificate/keyring-jcl/import-ds/.parameters @@ -7,7 +7,7 @@ keyring-name||string|required||||Name of the keyring. alias|a|string|required|localhost|||Certificate alias name. trust-cas||string|||||Labels of extra certificate authorities should be trusted, separated by comma (Maximum 2). trust-zosmf||boolean|||||Whether to trust z/OSMF CA. -zosmf-ca||string||_auto_|||Labels of z/OSMF root certificate authorities. Specify "_auto_" to let Zowe to detect automatically. This only works for RACF. +zosmf-ca||string||_auto_|||Labels of z/OSMF root certificate authorities. Specify `_auto_` to let Zowe to detect automatically. This works for RACF and TSS. zosmf-user||string||IZUSVR|||z/OSMF user name. This is used to automatically detect z/OSMF root certificate authorities. import-ds-name||string|required||||Name of the data set holds certificate to import into keyring. import-ds-password||string|required||||Password of the data set holds certificate to import. diff --git a/bin/commands/certificate/pkcs12/lock/.parameters b/bin/commands/certificate/pkcs12/lock/.parameters index 4a539c7aeb..9c137e1f62 100644 --- a/bin/commands/certificate/pkcs12/lock/.parameters +++ b/bin/commands/certificate/pkcs12/lock/.parameters @@ -1,4 +1,4 @@ keystore-dir|d|string|required||||Keystore directory. user||string|required||||Owner of the keystore directory. group||string|required||||Group of the keystore directory. -group-permission||string|||||Group permission. Can be for no permission, or `read`, `write`. +group-permission||string|||||Group permission. Can be `` for no permission, or `read`, `write`. diff --git a/bin/commands/diagnose/index.sh b/bin/commands/diagnose/index.sh index e843993523..d1f07e8ebe 100644 --- a/bin/commands/diagnose/index.sh +++ b/bin/commands/diagnose/index.sh @@ -11,25 +11,59 @@ # Copyright Contributors to the Zowe Project. ####################################################################### -error_code="${ZWE_CLI_PARAMETER_ERROR_CODE}" +USE_CONFIGMGR=$(check_configmgr_enabled) +if [ "${USE_CONFIGMGR}" = "true" ]; then + _CEE_RUNOPTS="XPLINK(ON),HEAPPOOLS(OFF)" ${ZWE_zowe_runtimeDirectory}/bin/utils/configmgr -script "${ZWE_zowe_runtimeDirectory}/bin/commands/diagnose/cli.js" +else + + error_code="${ZWE_CLI_PARAMETER_ERROR_CODE}" -server_code=$(echo "${error_code}" | cut -c4) + print_message "" -if echo $error_code | grep -q -E "^[zZ][wW][eE][AaSsDdLl][A-Za-z]?[0-9]{3,4}[A-Za-z]$"; then - if [[ "$server_code" == [Dd] ]]; then - print_message "This code corresponds to the errors related to the ZOWE Desktop and the App Server." - print_message "To find the description of this error code, refer to the Zowe documentation at https://github.com/zowe/docs-site/blob/master/docs/troubleshoot/app-framework/appserver-error-codes.md" - elif [[ "$server_code" == [Ss] ]]; then - print_message "This code corresponds to the errors related to the Zowe Subsystem Services (ZSS) and Zowe Installation Services (ZIS)" - print_message "To find the description of this error code, refer to the Zowe documentation for ZSS at https://docs.zowe.org/stable/troubleshoot/app-framework/zss-error-codes and for ZIS at https://github.com/zowe/docs-site/blob/master/docs/troubleshoot/app-framework/zis-error-codes.md" - elif [[ "$server_code" == [Aa] ]]; then - print_message "This code corresponds to the errors related to the Zowe API Mediation Layer (APIML)." - print_message "To find the description of this error code, refer to the Zowe documentation at https://docs.zowe.org/stable/troubleshoot/troubleshoot-apiml-error-codes" - elif [[ "$server_code" == [Ll] ]]; then - print_message "This code corresponds to the errors related to the Zowe Launcher and ZWE" - print_message "To find the description of this error code, refer to the Zowe documentation for the Launcher at https://docs.zowe.org/stable/troubleshoot/launcher/launcher-error-codes and https://github.com/zowe/launcher/blob/v2.x/master/src/msg.h, and for ZWE at https://docs.zowe.org/stable/appendix/zwe_server_command_reference/zwe/ " + if echo $error_code | grep -q -E "^[zZ][wW][eE][AaSsDdLl][A-Za-z]?[0-9]{3,4}[A-Za-z]$"; then + server_code=$(echo "${error_code}" | cut -c4) + if [[ "$server_code" == [Dd] ]]; then + print_message "This code corresponds to the errors related to the ZOWE Desktop and the App Server." + print_message "" + print_message "To find the description of this error code, refer to the:" + print_message "" + print_message " Zowe documentation for Application framework" + print_message " https://docs.zowe.org/stable/troubleshoot/app-framework/appserver-error-codes" + elif [[ "$server_code" == [Ss] ]]; then + print_message "This code corresponds to the errors related to the Zowe Subsystem Services (ZSS) and Zowe Installation Services (ZIS)." + print_message "" + print_message "To find the description of this error code, refer to the:" + print_message "" + print_message " Zowe documentation for ZSS" + print_message " https://docs.zowe.org/stable/troubleshoot/app-framework/zss-error-codes" + print_message " Zowe documentation for ZIS" + print_message " https://docs.zowe.org/stable/troubleshoot/app-framework/zis-error-codes" + elif [[ "$server_code" == [Aa] ]]; then + print_message "This code corresponds to the errors related to the Zowe API Mediation Layer (APIML)." + print_message "" + print_message "To find the description of this error code, refer to the:" + print_message "" + print_message " Zowe documentation for API Mediation Layer" + print_message " https://docs.zowe.org/stable/troubleshoot/troubleshoot-apiml-error-codes" + elif [[ "$server_code" == [Ll] ]]; then + print_message "This code corresponds to the errors related to the Zowe Launcher and ZWE." + print_message "" + print_message "To find the description of this error code, refer to the:" + print_message "" + print_message " Zowe documentation for Launcher" + print_message " https://docs.zowe.org/stable/troubleshoot/launcher/launcher-error-codes" + print_message " Launcher error codes" + print_message " https://github.com/zowe/launcher/blob/v2.x/master/src/msg.h" + print_message " Zowe documentation for ZWE" + print_message " https://docs.zowe.org/stable/appendix/zwe_server_command_reference/zwe/" + fi + print_message "" + print_message "You may also explore reports from other users experiencing the same error by searching" + print_message "https://github.com/search?q=org%3Azowe+${error_code}&type=discussions" + else + print_error_and_exit "ZWEL0102E: Invalid parameter --error-code='${error_code}'" "" 102 fi - print_message "You may also explore reports from other users experiencing the same error by searching here https://github.com/search?q=org%3Azowe+${error_code}&type=discussions" -else - print_error_and_exit "Invalid Error Code" "" 102 + + print_message "" + fi diff --git a/bin/commands/diagnose/index.ts b/bin/commands/diagnose/index.ts index 1fe91dc198..8fb6518277 100644 --- a/bin/commands/diagnose/index.ts +++ b/bin/commands/diagnose/index.ts @@ -8,31 +8,60 @@ Copyright Contributors to the Zowe Project. */ - import * as std from 'cm_std'; import * as common from '../../libs/common'; -export function execute() { - const errorCode: string = std.getenv('ZWE_CLI_PARAMETER_ERROR_CODE'); +const THIS_CODE = "\nThis code corresponds to the errors related to the"; +const FIND_DESC = "To find the description of this error code, refer to the:\n "; +const URL = { + apiML: "https://docs.zowe.org/stable/troubleshoot/troubleshoot-apiml-error-codes", + appFW : "https://docs.zowe.org/stable/troubleshoot/app-framework/appserver-error-codes", + launcher: "https://docs.zowe.org/stable/troubleshoot/launcher/launcher-error-codes", + launcherGit: "https://github.com/zowe/launcher/blob/v2.x/master/src/msg.h", + zss: "https://docs.zowe.org/stable/troubleshoot/app-framework/zss-error-codes", + zis: "https://docs.zowe.org/stable/troubleshoot/app-framework/zis-error-codes", + zwe: "https://docs.zowe.org/stable/appendix/zwe_server_command_reference/zwe/" +} + +function thisCodeCorrespondsTo(component: string){ + common.printMessage(`${THIS_CODE} ${component}.\n`); + common.printMessage(`${FIND_DESC}`); +} - const serverCode: string = errorCode.charAt(3); +function printLinks(description: string, link: string){ + if (link.indexOf('github') > 0) + common.printMessage(` ${description}`) + else + common.printMessage(` Zowe documentation for ${description}`) + common.printMessage(` ${link}`); +} - if (/^[zZ][wW][eE][AaSsDdLl][A-Za-z]?[0-9]{3,4}[A-Za-z]$/.test(errorCode)) { - if (serverCode.toLowerCase() === 'd') { - common.printMessage("This code corresponds to the errors related to the ZOWE Desktop and the App Server."); - common.printMessage("To find the description of this error code, refer to the Zowe documentation at https://github.com/zowe/docs-site/blob/master/docs/troubleshoot/app-framework/appserver-error-codes.md"); - } else if (serverCode.toLowerCase() === 's') { - common.printMessage("This code corresponds to the errors related to the Zowe Subsystem Services (ZSS) and Zowe Installation Services (ZIS)"); - common.printMessage("To find the description of this error code, refer to the Zowe documentation for ZSS at https://docs.zowe.org/stable/troubleshoot/app-framework/zss-error-codes and for ZIS at https://github.com/zowe/docs-site/blob/master/docs/troubleshoot/app-framework/zis-error-codes.md"); - } else if (serverCode.toLowerCase() === 'a') { - common.printMessage("This code corresponds to the errors related to the Zowe API Mediation Layer (APIML)."); - common.printMessage("To find the description of this error code, refer to the Zowe documentation at https://docs.zowe.org/stable/troubleshoot/troubleshoot-apiml-error-codes"); - } else if (serverCode.toLowerCase() === 'l') { - common.printMessage("This code corresponds to the errors related to the Zowe Launcher and ZWE"); - common.printMessage("To find the description of this error code, refer to the Zowe documentation for the Launcher at https://docs.zowe.org/stable/troubleshoot/launcher/launcher-error-codes and https://github.com/zowe/launcher/blob/v2.x/master/src/msg.h, and for ZWE at https://docs.zowe.org/stable/appendix/zwe_server_command_reference/zwe/"); +export function execute() { + const errorCode = std.getenv('ZWE_CLI_PARAMETER_ERROR_CODE'); + if (/^[zZ][wW][eE][AaSsDdLl][A-Za-z]?[0-9]{3,4}[A-Za-z]$/.test(errorCode)) { + const serverCode = errorCode.charAt(3); + if (serverCode.toLowerCase() === 'd') { + thisCodeCorrespondsTo('ZOWE Desktop and the App Server'); + printLinks('Application framework', `${URL.appFW}`); + } + else if (serverCode.toLowerCase() === 's') { + thisCodeCorrespondsTo('Zowe Subsystem Services (ZSS) and Zowe Installation Services (ZIS)'); + printLinks('ZSS', `${URL.zss}`); + printLinks('ZIS', `${URL.zis}`); + } + else if (serverCode.toLowerCase() === 'a') { + thisCodeCorrespondsTo('Zowe API Mediation Layer (APIML)'); + printLinks('API Mediation Layer', `${URL.apiML}`); + } + else if (serverCode.toLowerCase() === 'l') { + thisCodeCorrespondsTo('Zowe Launcher and ZWE'); + printLinks('Launcher', `${URL.launcher}`); + printLinks('Launcher error codes', `${URL.launcherGit}`); + printLinks('ZWE', `${URL.zwe}`); + } + common.printMessage(`\nYou may also explore reports from other users experiencing the same error by searching\nhttps://github.com/search?q=org%3Azowe+${errorCode}&type=discussions\n`); + } + else { + common.printErrorAndExit(`ZWEL0102E: Invalid parameter --error-code='${errorCode}'`, undefined, 102); } - common.printMessage(`You may also explore reports from other users experiencing the same error by searching here https://github.com/search?q=org%3Azowe+${errorCode}&type=discussions`) - } else { - common.printErrorAndExit("Invalid Error Code", undefined, 102); - } } diff --git a/bin/libs/certificate.sh b/bin/libs/certificate.sh index 49fcc232ef..13dec5e1d4 100644 --- a/bin/libs/certificate.sh +++ b/bin/libs/certificate.sh @@ -876,7 +876,15 @@ EOF if [ "${trust_zosmf}" = "1" ]; then if [ "${zosmf_root_ca}" = "_auto_" ]; then - zosmf_root_ca=$(detect_zosmf_root_ca "${ZWE_PRIVATE_ZOSMF_USER}") + if [ "${security_product}" = "RACF" ]; then + zosmf_root_ca=$(detect_zosmf_root_ca_racf "${ZWE_PRIVATE_ZOSMF_USER}") + fi + if [ "${security_product}" = "TSS" ]; then + zosmf_root_ca=$(detect_zosmf_root_ca_tss "${ZWE_PRIVATE_ZOSMF_USER}") + fi + if [ "${security_product}" = "ACF2" ]; then + zosmf_root_ca=$(detect_zosmf_root_ca_acf2 "${ZWE_PRIVATE_ZOSMF_USER}") + fi fi if [ -z "${zosmf_root_ca}" ]; then print_error_and_exit "Error ZWEL0137E: z/OSMF root certificate authority is not provided (or cannot be detected) with trusting z/OSMF option enabled." "" 137 @@ -1397,12 +1405,76 @@ EOF "${labels_with_private_key}" } -# this only works for RACF -detect_zosmf_root_ca() { +# FIXME +# - Support for multiple? | long | special characters entries +detect_zosmf_root_ca_tss() { + zosmf_user=${1:-IZUSVR} + zosmf_root_ca= + + print_trace "- Detect z/OSMF keyring by listing ID(${zosmf_user}) [TSS]" + zosmf_certs=$(tsocmd "TSS LIST(${zosmf_user}) KEYRING(ALL)" 2>&1) + code=$? + if [ ${code} -ne 0 ]; then + print_trace " * Exit code: ${code}" + print_trace " * Output:" + if [ -n "${zosmf_certs}" ]; then + print_trace "$(padding_left "${zosmf_certs}" " ")" + fi + return 1 + fi + + # Output example: + # KEYRING LABEL = KEYRING.IZUDFLT + zosmf_keyring_name=$(echo "${zosmf_certs}" | grep "KEYRING LABEL = " | awk -F= '{ print $2 }' | head -n 1) + if [ -n "${zosmf_keyring_name}" ]; then + print_trace " * z/OSMF keyring name is ${zosmf_keyring_name}" + # Output example: + # ACID(CERTAUTH) DIGICERT(ABCDEFGH) DEFAULT(NO ) USAGE(CERTAUTH) + # LABLCERT(ZOSMF_ROOT_CA ) + zosmf_root_ca=$(echo "${zosmf_certs}" | grep -A 1 "ACID(CERTAUTH)" | grep "LABLCERT(" | head -n 1) + zosmf_root_ca=$(echo "${zosmf_root_ca}" | awk '{ print substr( $0, 12, length($0)-13) }') + zosmf_root_ca=$(echo "${zosmf_root_ca}" | sed -e 's/^[[:space:]]*//;s/[[:space:]]*$//') + if [ -n "${zosmf_root_ca}" ]; then + print_trace " * z/OSMF root certificate authority found: ${zosmf_root_ca}" + echo "${zosmf_root_ca}" + return 0 + else + print_trace " * Error: cannot detect z/OSMF root certificate authority" + return 2 + fi + else + print_trace " * Error: failed to detect z/OSMF keyring name" + return 3 + fi +} + +# FIXME +# - add similar code using ACFUNIX instead of tsocmd +# - or use JCLs to be sure it will always works +detect_zosmf_root_ca_acf2() { + zosmf_user=${1:-IZUSVR} + zosmf_root_ca= + + print_trace "- Detect z/OSMF keyring by listing ID(${zosmf_user}) [ACF2]" + echo "${zosmf_root_ca}" + return 1 +} + +# FIXME +# - Support for multiple? | long | special characters entries +# - RACDCERT LISTRING will be confused if label contains 'CERTAUTH' word: +# +# Certificate Label Name Cert Owner USAGE DEFAULT +# -------------------------------- ------------ -------- ------- +# CERTAUTH_FOR_T800 ID(SKYNET) DEADLY YES +# JOHN_CONNOR CERTAUTH CERTAUTH NO +# +# Will return CERTAUTH_FOR_T800 instead of JOHN_CONNOR +detect_zosmf_root_ca_racf() { zosmf_user=${1:-IZUSVR} zosmf_root_ca= - print_trace "- Detect z/OSMF keyring by listing ID(${zosmf_user})" + print_trace "- Detect z/OSMF keyring by listing ID(${zosmf_user}) [RACF]" zosmf_certs=$(tsocmd "RACDCERT LIST ID(${zosmf_user})" 2>&1) code=$? if [ ${code} -ne 0 ]; then diff --git a/bin/libs/configmgr.ts b/bin/libs/configmgr.ts index ba16685f1e..26c16fa89a 100644 --- a/bin/libs/configmgr.ts +++ b/bin/libs/configmgr.ts @@ -14,6 +14,7 @@ import * as os from 'cm_os'; import * as xplatform from 'xplatform'; import { ConfigManager } from 'Configuration'; import * as fs from './fs'; +import * as stringlib from './string'; import * as objUtils from '../utils/ObjUtils'; @@ -415,7 +416,7 @@ function getMemberNameFromConfigPath(configPath: string): string|undefined { function stripMemberName(configPath: string, memberName: string): string { //Turn PARMLIB(my.zowe(yaml)):PARMLIB(my.other.zowe(yaml)) //Into PARMLIB(my.zowe):FILE(/some/path.yaml):PARMLIB(my.other.zowe) - const replacer = new RegExp('\\('+memberName+'\\)\\)', 'gi'); + const replacer = new RegExp('\\('+stringlib.escapeDollar(memberName)+'\\)\\)', 'gi'); return configPath.replace(replacer, ")"); } diff --git a/bin/libs/string.sh b/bin/libs/string.sh index 1c1be161ba..c5b95d38bb 100755 --- a/bin/libs/string.sh +++ b/bin/libs/string.sh @@ -22,7 +22,7 @@ trim() { input=${1} fi - echo "${input}" | xargs + echo "${input}" | sed -e 's/^[[:space:]]*//;s/[[:space:]]*$//' } ############################### diff --git a/bin/libs/string.ts b/bin/libs/string.ts index 7fa5c6020f..20acafbf6d 100644 --- a/bin/libs/string.ts +++ b/bin/libs/string.ts @@ -344,3 +344,16 @@ export function itemInList(stringList: string, stringToFind?: string, separator: } return stringList.split(separator).includes(stringToFind); } + +export function escapeDollar(str: string): string | undefined { + if (str === null || str === undefined) + return undefined; + return str.replace(/[$]/g, '\\$&'); +} + +export function escapeRegExp(str: string): string | undefined { + if (str === null || str === undefined) + return undefined; + return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); +} + diff --git a/bin/libs/zos-dataset.ts b/bin/libs/zos-dataset.ts index c1960ec929..74d10aed9e 100644 --- a/bin/libs/zos-dataset.ts +++ b/bin/libs/zos-dataset.ts @@ -18,7 +18,7 @@ import * as shell from './shell'; import * as zoslib from './zos'; export function isDatasetExists(datasetName: string): boolean { - const result = shell.execSync('sh', '-c', `cat "//'${datasetName}'" 1>/dev/null 2>&1`); + const result = shell.execSync('sh', '-c', `cat "//'${stringlib.escapeDollar(datasetName)}'" 1>/dev/null 2>&1`); return result.rc === 0; } @@ -27,7 +27,7 @@ export function isDatasetExists(datasetName: string): boolean { // 1: data set is not in catalog // 2: data set member doesn't exist export function tsoIsDatasetExists(datasetName: string): number { - const result = zoslib.tsoCommand(`listds '${datasetName}' label`); + const result = zoslib.tsoCommand(`listds '${stringlib.escapeDollar(datasetName)}' label`); if (result.rc != 0) { if (result.out.includes('NOT IN CATALOG')) { return 1; @@ -44,7 +44,7 @@ export function tsoIsDatasetExists(datasetName: string): number { } export function createDataSet(dsName: string, dsOptions: string): number { - const result=zoslib.tsoCommand(`ALLOCATE NEW DA('${dsName}') ${dsOptions}`); + const result=zoslib.tsoCommand(`ALLOCATE NEW DA('${stringlib.escapeDollar(dsName)}') ${dsOptions}`); return result.rc; } @@ -55,7 +55,7 @@ export function copyToDataset(filePath: string, dsName: string, cpOptions: strin } } - const cpCommand=`cp ${cpOptions} -v "${filePath}" "//'${dsName}'"`; + const cpCommand=`cp ${cpOptions} -v "${filePath}" "//'${stringlib.escapeDollar(dsName)}'"`; common.printDebug('- '+cpCommand); const result=shell.execOutSync('sh', '-c', `${cpCommand} 2>&1`); if (result.rc == 0) { @@ -79,7 +79,7 @@ export function datasetCopyToDataset(prefix: string, datasetFrom: string, datase } } - const cmd=`exec '${prefix}.${std.getenv('ZWE_PRIVATE_DS_SZWEEXEC')}(ZWEMCOPY)' '${datasetFrom} ${datasetTo}'`; + const cmd = `exec '${stringlib.escapeDollar(prefix)}.${std.getenv('ZWE_PRIVATE_DS_SZWEEXEC')}(ZWEMCOPY)' '${stringlib.escapeDollar(datasetFrom)} ${stringlib.escapeDollar(datasetTo)}'`; const result = zoslib.tsoCommand(cmd); return result.rc; } @@ -91,7 +91,7 @@ export function datasetCopyToDataset(prefix: string, datasetFrom: string, datase // 1: there are some users // @output output of operator command "d grs" export function listDatasetUser(datasetName: string): number { - const cmd=`D GRS,RES=(*,${datasetName})`; + const cmd = `D GRS,RES=(*,'${stringlib.escapeDollar(datasetName)}')`; const result=zoslib.operatorCommand(cmd); return result.out.includes('NO REQUESTORS FOR RESOURCE') ? 0 : 1; // example outputs: @@ -128,7 +128,7 @@ export function listDatasetUser(datasetName: string): number { // 3: data set is in use // @output tso listds label output export function deleteDataset(dataset: string): number { - const cmd=`delete '${dataset}'`; + const cmd=`delete '${stringlib.escapeDollar(dataset)}'`; const result=zoslib.tsoCommand(cmd); if (result.rc != 0) { if (result.out.includes('NOT IN CATALOG')) { @@ -170,7 +170,7 @@ export function isDatasetSmsManaged(dataset: string): { rc: number, smsManaged?: // SMS flag is in `FORMAT 1 DSCB` section second line, after 780037 common.printTrace(`- Check if ${dataset} is SMS managed`); - const labelResult = zoslib.tsoCommand(`listds '${dataset}' label`); + const labelResult = zoslib.tsoCommand(`listds '${stringlib.escapeDollar(dataset)}' label`); const datasetLabel=labelResult.out; if (labelResult.rc == 0) { let formatIndex = datasetLabel.indexOf('--FORMAT 1 DSCB--'); @@ -212,14 +212,13 @@ export function isDatasetSmsManaged(dataset: string): { rc: number, smsManaged?: export function getDatasetVolume(dataset: string): { rc: number, volume?: string } { common.printTrace(`- Find volume of data set ${dataset}`); - const result = zoslib.tsoCommand(`listds '${dataset}'`); + const result = zoslib.tsoCommand(`listds '${stringlib.escapeDollar(dataset)}'`); if (result.rc == 0) { let volumesIndex = result.out.indexOf('--VOLUMES--'); let volume: string; if (volumesIndex != -1) { let startIndex = volumesIndex + '--VOLUMES--'.length; - let endIndex = result.out.indexOf('--',startIndex); - volume = result.out.substring(startIndex, endIndex).trim(); + volume = result.out.substring(startIndex).trim(); } if (!volume) { common.printError(" * Failed to find volume information of the data set."); @@ -235,7 +234,7 @@ export function getDatasetVolume(dataset: string): { rc: number, volume?: string export function apfAuthorizeDataset(dataset: string): number { const result = isDatasetSmsManaged(dataset); if (result.rc) { - common.printError("Error ZWEL0134E: Failed to find SMS status of data set ${dataset}."); + common.printError(`Error ZWEL0134E: Failed to find SMS status of data set ${dataset}.`); return 134; } @@ -256,7 +255,7 @@ export function apfAuthorizeDataset(dataset: string): number { } } - const apfCmd="SETPROG APF,ADD,DSNAME=${dataset},${apfVolumeParam}" + const apfCmd=`SETPROG APF,ADD,DSNAME=${dataset},${apfVolumeParam}`; if (std.getenv('ZWE_CLI_PARAMETER_SECURITY_DRY_RUN') == "true") { common.printMessage("- Dry-run mode, security setup is NOT performed on the system."); common.printMessage(" Please apply this operator command manually:"); @@ -277,7 +276,7 @@ export function apfAuthorizeDataset(dataset: string): number { } export function createDatasetTmpMember(dataset: string, prefix: string='ZW'): string | null { - common.printTrace(` > create_data_set_tmp_member in ${dataset}`); + common.printTrace(` > createDatasetTmpMember in ${dataset}`); for (var i = 0; i < 100; i++) { let rnd=Math.floor(Math.random()*10000); diff --git a/bin/libs/zos-fs.ts b/bin/libs/zos-fs.ts index 99305bc4b9..e0023a449f 100644 --- a/bin/libs/zos-fs.ts +++ b/bin/libs/zos-fs.ts @@ -20,11 +20,13 @@ import * as shell from './shell'; // Get file encoding from z/OS USS tagging export function getFileEncoding(filePath: string): number|undefined { //zos.changeTag(file, id) - let returnArray = os.stat(filePath); - if (!returnArray[1] && ((returnArray[0].mode & os.S_IFREG) == os.S_IFREG)) { //no error, and is file - return returnArray[0].ccsid; - } else { - common.printError(`getFileEncoding path=${filePath}, err=${returnArray[1]}`); + if (os.platform == 'zos') { + let returnArray = zos.zstat(filePath); + if (!returnArray[1] && ((returnArray[0].mode & os.S_IFMT) == os.S_IFREG)) { //no error, and is file + return returnArray[0].ccsid; + } else { + common.printError(`getFileEncoding path=${filePath}, err=${returnArray[1]}`); + } } return undefined; } @@ -85,7 +87,7 @@ export function detectFileEncoding(fileName: string, expectedSample: string, exp export function copyMvsToUss(dataset: string, file: string): number { common.printDebug(`copyMvsToUss dataset=${dataset}, file=${file}`); - const result = shell.execSync('sh', '-c', `cp "//'${dataset}'" "${file}"`); + const result = shell.execSync('sh', '-c', `cp "//'${stringlib.escapeDollar(dataset)}'" '${file}'`); return result.rc; } @@ -109,7 +111,7 @@ export function ensureFileEncoding(file: string, expectedSample: string, expecte } } common.printTrace(`- Remove encoding tag of ${file}.`); - zos.changeTag(file, 0); + shell.execSync('sh', '-c', `chtag -r "${file}"`); } else { common.printTrace(`- Failed to detect encoding of ${file}.`); } diff --git a/bin/libs/zos.ts b/bin/libs/zos.ts index b49e81451b..8cc5dea000 100644 --- a/bin/libs/zos.ts +++ b/bin/libs/zos.ts @@ -16,7 +16,7 @@ import * as shell from './shell'; import * as stringlib from './string'; export function tsoCommand(...args:string[]): { rc: number, out: string } { - let message="tsocmd "+args.join(' '); + let message = "tsocmd " + '"' + args.join(' ') + '"'; common.printDebug('- '+message); //we echo at the end to avoid a configmgr quirk where trying to read stdout when empty can hang waiting for bytes const result = shell.execOutSync('sh', '-c', `${message} 2>&1 && echo '.'`); diff --git a/bin/libs/zwecli.sh b/bin/libs/zwecli.sh index eb0e249a3c..0131c5ff5b 100755 --- a/bin/libs/zwecli.sh +++ b/bin/libs/zwecli.sh @@ -376,6 +376,9 @@ zwecli_inline_execute_command() { export ZWE_PRIVATE_CLI_IS_TOP_LEVEL_COMMAND=false + print_trace "- zwecli_inline_execute_command" + print_trace " * ${*}" + # process new command . "${ZWE_zowe_runtimeDirectory}/bin/zwe" diff --git a/bin/zwe b/bin/zwe index baaf43bb9d..80e6247115 100755 --- a/bin/zwe +++ b/bin/zwe @@ -69,7 +69,9 @@ while [ $# -gt 0 ]; do print_error_and_exit "Error ZWEL0103E: Invalid type of parameter ${arg}" "" 103 fi fi - shift + if [ $# -gt 0 ]; then + shift + fi done # debug results diff --git a/build/zwe/types/@qjstypes/zos.d.ts b/build/zwe/types/@qjstypes/zos.d.ts index ec41ae6571..551948c5c2 100644 --- a/build/zwe/types/@qjstypes/zos.d.ts +++ b/build/zwe/types/@qjstypes/zos.d.ts @@ -11,8 +11,13 @@ export type ZStat = { dev: number; ino: number; + mode: number; + nlink: number; uid: number; gid: number; + rdev: number; + size: number; + blocks: number; atime: number; mtime: number; ctime: number; diff --git a/manifest.json.template b/manifest.json.template index 65de58a3d7..aacde2e4e6 100644 --- a/manifest.json.template +++ b/manifest.json.template @@ -1,6 +1,6 @@ { "name": "Zowe", - "version": "2.14.0", + "version": "2.15.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", @@ -12,88 +12,88 @@ }, "binaryDependencies": { "org.zowe.zlux.zlux-core": { - "version": "2.14.0-RC", + "version": "2.15.0-RC", "repository": "libs-snapshot-local", - "artifact": "zlux-core-2.14.0-20240202.143738.pax" + "artifact": "zlux-core-2.15.0-20240306.141952.pax" }, "org.zowe.zlux.sample-angular-app": { - "version": "2.14.0-V2.X-RC", + "version": "2.15.0-V2.X-RC", "repository": "libs-snapshot-local", - "artifact": "sample-angular-app-2.14.0-20240109.143905.pax" + "artifact": "sample-angular-app-2.15.0-20240220.205736.pax" }, "org.zowe.zlux.sample-iframe-app": { - "version": "2.14.0-V2.X-RC", + "version": "2.15.0-V2.X-RC", "repository": "libs-snapshot-local", - "artifact": "sample-iframe-app-2.14.0-20240109.143751.pax" + "artifact": "sample-iframe-app-2.15.0-20240220.205627.pax" }, "org.zowe.zlux.sample-react-app": { - "version": "2.14.0-V2.X-RC", + "version": "2.15.0-V2.X-RC", "repository": "libs-snapshot-local", - "artifact": "sample-react-app-2.14.0-20240109.143856.pax" + "artifact": "sample-react-app-2.15.0-20240220.205746.pax" }, "org.zowe.zlux.tn3270-ng2": { - "version": "2.14.0-V2.X-RC", + "version": "2.15.0-V2.X-RC", "repository": "libs-snapshot-local", - "artifact": "tn3270-ng2-2.14.0-20240109.143802.pax" + "artifact": "tn3270-ng2-2.15.0-20240220.205643.pax" }, "org.zowe.zlux.vt-ng2": { - "version": "2.14.0-V2.X-RC", + "version": "2.15.0-V2.X-RC", "repository": "libs-snapshot-local", - "artifact": "vt-ng2-2.14.0-20240109.143800.pax" + "artifact": "vt-ng2-2.15.0-20240220.205643.pax" }, "org.zowe.zlux.zlux-editor": { - "version": "2.14.0-V2.X-RC", + "version": "2.15.0-V2.X-RC", "repository": "libs-snapshot-local", - "artifact": "zlux-editor-2.14.0-20240109.144025.pax" + "artifact": "zlux-editor-2.15.0-20240220.205905.pax" }, "org.zowe.zss": { - "version": "2.14.0-RC", + "version": "2.15.0-RC", "repository": "libs-snapshot-local", - "artifact": "zss-2.14.0-rc-1083-20240109191933.pax" + "artifact": "zss-2.15.0-rc-1108-20240221173702.pax" }, "org.zowe.explorer.jobs.jobs-api-package": { - "version": "2.0.25", + "version": "2.0.26", "artifact": "jobs-api-package-*.zip" }, "org.zowe.explorer.files.files-api-package": { - "version": "2.0.26", + "version": "2.0.27", "artifact": "files-api-package-*.zip" }, "org.zowe.explorer-jes": { "version": "2.0.7" }, "org.zowe.explorer-mvs": { - "version": "2.0.7" + "version": "2.0.9" }, "org.zowe.explorer-uss": { - "version": "2.0.7" + "version": "2.0.9" }, "org.zowe.explorer-ip": { "version": "2.0.0", "artifact": "explorer-ip*.pax" }, "org.zowe.apiml.api-catalog-package": { - "version": "2.14.4", + "version": "2.15.0", "artifact": "api-catalog*.zip" }, "org.zowe.apiml.discovery-package": { - "version": "2.14.4", + "version": "2.15.0", "artifact": "discovery*.zip" }, "org.zowe.apiml.gateway-package": { - "version": "2.14.4", + "version": "2.15.0", "artifact": "gateway*.zip" }, "org.zowe.apiml.caching-service-package": { - "version": "2.14.4", + "version": "2.15.0", "artifact": "caching-service*.zip" }, "org.zowe.apiml.metrics-service-package": { - "version": "2.14.4", + "version": "2.15.0", "artifact": "metrics-service*.zip" }, "org.zowe.apiml.apiml-common-lib-package": { - "version": "2.14.4", + "version": "2.15.0", "artifact": "apiml-common-lib-*.zip" }, "org.zowe.apiml.sdk.common-java-lib-package": { @@ -101,30 +101,30 @@ "artifact": "common-java-lib-*.zip" }, "org.zowe.apiml.sdk.apiml-sample-extension-package": { - "version": "2.14.4", + "version": "2.15.0", "artifact": "apiml-sample-extension-*.zip" }, "org.zowe.apiml.cloud-gateway-package": { - "version": "2.14.4", + "version": "2.15.0", "artifact": "cloud-gateway-*.zip" }, "org.zowe.configmgr-rexx": { - "version": "2.14.0-V2.X-RC", + "version": "2.15.0-V2.X-RC", "repository": "libs-snapshot-local", - "artifact": "configmgr-rexx-2.14.0-2024010957.pax" + "artifact": "configmgr-rexx-2.15.0-2024022019.pax" }, "org.zowe.getesm": { - "version": "2.14.0-V2.X-RC", + "version": "2.15.0-V2.X-RC", "repository": "libs-snapshot-local", - "artifact": "getesm-2.14.0-2024010947.pax" + "artifact": "getesm-2.15.0-2024022018.pax" }, "org.zowe.configmgr": { - "version": "2.14.0-V2.X-RC", + "version": "2.15.0-V2.X-RC", "repository": "libs-snapshot-local", - "artifact": "configmgr-2.14.0-2024010942.pax" + "artifact": "configmgr-2.15.0-2024022015.pax" }, "org.zowe.launcher": { - "version": "2.14.0" + "version": "2.15.0" }, "org.zowe.keyring-utilities": { "version": "1.0.4", @@ -136,7 +136,7 @@ "version": "2.0.3" }, "org.zowe.licenses": { - "version": "2.14.0", + "version": "2.15.0", "artifact": "zowe_licenses_full.zip" } }, @@ -145,7 +145,7 @@ "componentGroup": "Zowe API Mediation Layer", "entries": [{ "repository": "api-layer", - "tag": "v2.14.4", + "tag": "v2.15.0", "destinations": ["Zowe PAX"] }] }, { @@ -159,12 +159,12 @@ "componentGroup": "Zowe Application Framework", "entries": [{ "repository": "zlux-app-manager", - "tag": "v2.14.0-RC1", + "tag": "v2.15.0-RC1", "destinations": ["Zowe PAX"] }, { "repository": "zlux-app-server", - "tag": "v2.14.0-RC1", + "tag": "v2.15.0-RC1", "destinations": ["Zowe PAX"] }, { @@ -179,17 +179,17 @@ }, { "repository": "zlux-platform", - "tag": "v2.14.0-RC1", + "tag": "v2.15.0-RC1", "destinations": ["Zowe PAX"] }, { "repository": "zlux-server-framework", - "tag": "v2.14.0-RC1", + "tag": "v2.15.0-RC1", "destinations": ["Zowe PAX"] }, { "repository": "zlux-shared", - "tag": "v2.14.0-RC1", + "tag": "v2.15.0-RC1", "destinations": ["Zowe PAX"] }, { @@ -199,17 +199,17 @@ }, { "repository": "zlux-build", - "tag": "v2.14.0-RC1", + "tag": "v2.15.0-RC1", "destinations": ["Zowe PAX"] }, { "repository": "zss", - "tag": "v2.14.0-RC1", + "tag": "v2.15.0-RC1", "destinations": ["Zowe PAX"] }, { "repository": "zowe-common-c", - "tag": "zss-v2.14.0-RC1", + "tag": "zss-v2.15.0-RC1", "destinations": ["Zowe PAX"] } ] @@ -217,14 +217,14 @@ "componentGroup": "Zowe CLI", "entries": [{ "repository": "zowe-cli", - "tag": "v7.21.3", + "tag": "v7.23.3", "destinations": ["Zowe CLI Package"] }] }, { "componentGroup": "IBM® CICS® Plug-in for Zowe CLI", "entries": [{ "repository": "zowe-cli-cics-plugin", - "tag": "v5.0.1", + "tag": "v5.0.4", "destinations": ["Zowe CLI Package"] }] }, { @@ -245,14 +245,14 @@ "componentGroup": "z/OS® FTP Plug-in for Zowe CLI", "entries": [{ "repository": "zowe-cli-ftp-plugin", - "tag": "v2.1.6", + "tag": "v2.1.8", "destinations": ["Zowe CLI Package"] }] }, { "componentGroup": "IBM® IMS® Plug-in for Zowe CLI", "entries": [{ "repository": "zowe-cli-ims-plugin", - "tag": "v3.0.0", + "tag": "v3.0.1", "destinations": ["Zowe CLI Package"] }] }, { @@ -266,7 +266,7 @@ "componentGroup": "Zowe Desktop Data Sets UI Plugin", "entries": [{ "repository": "explorer-mvs", - "tag": "v2.0.7", + "tag": "v2.0.9", "destinations": ["Zowe PAX"] }] }, { @@ -280,28 +280,28 @@ "componentGroup": "Zowe Desktop z/OS Unix Files UI Plugin", "entries": [{ "repository": "explorer-uss", - "tag": "v2.0.7", + "tag": "v2.0.9", "destinations": ["Zowe PAX"] }] }, { "componentGroup": "Zowe Explorer Common REST Server", "entries": [{ "repository": "explorer-api-common", - "tag": "2.0.30", + "tag": "2.0.31", "destinations": ["Zowe PAX"] }] }, { "componentGroup": "Zowe Explorer Data Sets REST Server", "entries": [{ "repository": "data-sets", - "tag": "2.0.26", + "tag": "2.0.27", "destinations": ["Zowe PAX"] }] }, { "componentGroup": "Zowe Explorer Jobs REST Server", "entries": [{ "repository": "jobs", - "tag": "2.0.25", + "tag": "2.0.26", "destinations": ["Zowe PAX"] }] }, @@ -309,14 +309,14 @@ "componentGroup": "Zowe Desktop TN3270 Emulator Plug-in", "entries": [{ "repository": "tn3270-ng2", - "tag": "v2.14.0-RC1", + "tag": "v2.15.0-RC1", "destinations": ["Zowe PAX"] }] }, { "componentGroup": "Zowe Desktop Sample Angular Application", "entries": [{ "repository": "sample-angular-app", - "tag": "v2.14.0-RC1", + "tag": "v2.15.0-RC1", "destinations": ["Zowe PAX"] }] }, @@ -324,7 +324,7 @@ "componentGroup": "Zowe Desktop Sample iFrame Application", "entries": [{ "repository": "sample-iframe-app", - "tag": "v2.14.0-RC1", + "tag": "v2.15.0-RC1", "destinations": ["Zowe PAX"] }] }, @@ -332,7 +332,7 @@ "componentGroup": "Zowe Desktop Sample React Application", "entries": [{ "repository": "sample-react-app", - "tag": "v2.14.0-RC1", + "tag": "v2.15.0-RC1", "destinations": ["Zowe PAX"] }] }, @@ -340,7 +340,7 @@ "componentGroup": "Zowe Desktop VT Emulator Plugin-in", "entries": [{ "repository": "vt-ng2", - "tag": "v2.14.0-RC1", + "tag": "v2.15.0-RC1", "destinations": ["Zowe PAX"] }] }, @@ -348,7 +348,7 @@ "componentGroup": "Zowe Desktop Editor Plugin-in", "entries": [{ "repository": "zlux-editor", - "tag": "v2.14.0-RC1", + "tag": "v2.15.0-RC1", "destinations": ["Zowe PAX"] }] }, @@ -364,7 +364,7 @@ "destinations": ["Zowe PAX"] }, { "repository": "launcher", - "tag": "v2.0.14", + "tag": "v2.0.15", "destinations": ["Zowe PAX"] }] }, @@ -372,7 +372,7 @@ "componentGroup": "Zowe Visual Studio Code Extension", "entries": [{ "repository": "vscode-extension-for-zowe", - "tag": "v2.13.1", + "tag": "v2.14.1", "destinations": ["Visual Studio Code Marketplace"] }] }, @@ -388,7 +388,7 @@ "componentGroup": "Configmgr", "entries": [{ "repository": "zowe-common-c", - "tag": "configmgr-v2.14.0-RC1", + "tag": "configmgr-v2.15.0-RC1", "destinations": ["Zowe PAX"] }] } @@ -402,28 +402,28 @@ "api-catalog": { "registry": "zowe-docker-release.jfrog.io", "name": "ompzowe/api-catalog-services", - "tag" : "2.14.4-ubuntu" + "tag" : "2.15.0-ubuntu" }, "caching": { "registry": "zowe-docker-release.jfrog.io", "name": "ompzowe/caching-service", - "tag" : "2.14.4-ubuntu" + "tag" : "2.15.0-ubuntu" }, "discovery": { "kind": "statefulset", "registry": "zowe-docker-release.jfrog.io", "name": "ompzowe/discovery-service", - "tag" : "2.14.4-ubuntu" + "tag" : "2.15.0-ubuntu" }, "gateway": { "registry": "zowe-docker-release.jfrog.io", "name": "ompzowe/gateway-service", - "tag" : "2.14.4-ubuntu" + "tag" : "2.15.0-ubuntu" }, "app-server": { "registry": "zowe-docker-release.jfrog.io", "name": "ompzowe/app-server", - "tag" : "2.14.0-ubuntu" + "tag" : "2.15.0-ubuntu" }, "explorer-ip": { "kind": "job", @@ -441,23 +441,23 @@ "kind": "job", "registry": "zowe-docker-release.jfrog.io", "name": "ompzowe/explorer-mvs", - "tag" : "2.0.7-ubuntu" + "tag" : "2.0.10-ubuntu" }, "explorer-uss": { "kind": "job", "registry": "zowe-docker-release.jfrog.io", "name": "ompzowe/explorer-uss", - "tag" : "2.0.7-ubuntu" + "tag" : "2.0.9-ubuntu" }, "files-api": { "registry": "zowe-docker-release.jfrog.io", "name": "ompzowe/files-api", - "tag" : "2.0.26-ubuntu" + "tag" : "2.0.27-ubuntu" }, "jobs-api": { "registry": "zowe-docker-release.jfrog.io", "name": "ompzowe/jobs-api", - "tag" : "2.0.25-ubuntu" + "tag" : "2.0.26-ubuntu" }, "base": { "registry": "zowe-docker-release.jfrog.io", diff --git a/schemas/zowe-yaml-schema.json b/schemas/zowe-yaml-schema.json index 32fe423772..e3867cb09f 100644 --- a/schemas/zowe-yaml-schema.json +++ b/schemas/zowe-yaml-schema.json @@ -857,7 +857,7 @@ "zowe": { "type": "object", "description": "Component level overrides for top level Zowe network configuration.", - "additionalProperties": false, + "additionalProperties": true, "properties": { "network": { "$ref": "#/$defs/networkSettings" diff --git a/smpe/bld/service/promoted-apar.txt b/smpe/bld/service/promoted-apar.txt index 50dd21d4dd..07ec28cc3e 100644 --- a/smpe/bld/service/promoted-apar.txt +++ b/smpe/bld/service/promoted-apar.txt @@ -1,3 +1,6 @@ +IO29346 +IO29347 +IO29348 IO29343 IO29344 IO29345 diff --git a/smpe/bld/service/promoted-close.txt b/smpe/bld/service/promoted-close.txt index dd88e48cee..ee6b38e692 100644 --- a/smpe/bld/service/promoted-close.txt +++ b/smpe/bld/service/promoted-close.txt @@ -1,3 +1,48 @@ + IO29346 - + 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.14.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/ + + IO29347 - + 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.14.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/ + + IO29348 - + 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.14.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/ + IO29343 - PROBLEM SUMMARY: **************************************************************** diff --git a/smpe/bld/service/promoted-hold.txt b/smpe/bld/service/promoted-hold.txt index 1fc5b423cc..3337b60c7a 100644 --- a/smpe/bld/service/promoted-hold.txt +++ b/smpe/bld/service/promoted-hold.txt @@ -1,3 +1,28 @@ +++HOLD(UO90047) SYSTEM FMID(AZWE002) REASON(ACTION) DATE(24026) + 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(UO90045) SYSTEM FMID(AZWE002) REASON(ACTION) DATE(23348) COMMENT( **************************************************************** diff --git a/smpe/bld/service/promoted-ptf.txt b/smpe/bld/service/promoted-ptf.txt index 7d09f95e2c..08242dbddd 100644 --- a/smpe/bld/service/promoted-ptf.txt +++ b/smpe/bld/service/promoted-ptf.txt @@ -1,3 +1,5 @@ +UO90047 +UO90048 UO90045 UO90046 UO90033 diff --git a/smpe/bld/service/ptf-bucket.txt b/smpe/bld/service/ptf-bucket.txt index bef1acd7b8..0f4b8c00a3 100644 --- a/smpe/bld/service/ptf-bucket.txt +++ b/smpe/bld/service/ptf-bucket.txt @@ -20,5 +20,5 @@ #UO90031 UO90032 - IO29286 IO29287 IO29288 - Tue Sep 12 18:27:05 UTC 2023 #UO90033 UO90034 - IO29289 IO29290 IO29291 - Tue Oct 24 19:49:48 UTC 2023 #UO90045 UO90046 - IO29343 IO29344 IO29345 - Thu Dec 14 16:23:26 UTC 2023 -UO90047 UO90048 - IO29346 IO29347 IO29348 +#UO90047 UO90048 - IO29346 IO29347 IO29348 - Fri Jan 26 17:21:09 UTC 2024 UO90049 UO90050 - IO29349 IO29350 IO29351