From 7de81aef969bc869285687979b81e13b7f73904b Mon Sep 17 00:00:00 2001 From: Martin Zeithaml Date: Thu, 14 Nov 2024 12:51:03 +0100 Subject: [PATCH 1/3] Use configmgr to read yaml in shell Signed-off-by: Martin Zeithaml --- CHANGELOG.md | 3 +- bin/commands/init/apfauth/index.sh | 6 ++-- bin/commands/init/certificate/index.sh | 44 +++++++++++++------------- bin/commands/init/index.sh | 4 +-- bin/commands/init/mvs/index.sh | 10 +++--- bin/commands/init/security/index.sh | 24 +++++++------- bin/commands/init/stc/index.sh | 20 ++++++------ bin/commands/init/vsam/index.sh | 16 +++++----- bin/libs/common.sh | 6 ++-- bin/libs/json.sh | 27 ++++++++++++++++ 10 files changed, 94 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b909772b9f..a57296ab00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ All notable changes to the Zowe Installer will be documented in this file. ## `3.0.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) +- Enhancement: command `zwe init` does not require NodeJS [#40??](https://github.com/zowe/zowe-install-packaging/pull/40??) +- Bugfix: When `--log-dir` parameter for `zwe` command is a file, there might be an error "InternalError: stack overflow". [#4071](https://github.com/zowe/zowe-install-packaging/pull/4071) - Enhancement: new javascript funtion `getStatvfs()` to obtain information about the file sysytem [#3994](https://github.com/zowe/zowe-install-packaging/pull/3994) - Enhancement: command `zwe diagnose` in javascript only [#4061](https://github.com/zowe/zowe-install-packaging/pull/4061) - Enhancement: schema validation update for `zowe.job.name` and `zowe.job.prefix` [#4060](https://github.com/zowe/zowe-install-packaging/pull/4060) diff --git a/bin/commands/init/apfauth/index.sh b/bin/commands/init/apfauth/index.sh index d248cbb904..06398f846d 100644 --- a/bin/commands/init/apfauth/index.sh +++ b/bin/commands/init/apfauth/index.sh @@ -19,10 +19,10 @@ auth_libs="authLoadlib authPluginLib" ############################### # validation -require_zowe_yaml +require_zowe_yaml "skipnode" # read prefix and validate -prefix=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.prefix") +prefix=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.prefix") if [ -z "${prefix}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe dataset prefix (zowe.setup.dataset.prefix) is not defined in Zowe YAML configuration file." "" 157 fi @@ -32,7 +32,7 @@ fi job_has_failures= for key in ${auth_libs}; do # read def and validate - ds=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.${key}") + ds=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.${key}") if [ -z "${ds}" ]; then # authLoadlib can be empty if [ "${key}" = "authLoadlib" ]; then diff --git a/bin/commands/init/certificate/index.sh b/bin/commands/init/certificate/index.sh index a1d2f5c8dd..f226009c5b 100644 --- a/bin/commands/init/certificate/index.sh +++ b/bin/commands/init/certificate/index.sh @@ -13,24 +13,24 @@ ############################### # validation -require_zowe_yaml +require_zowe_yaml "skipnode" ############################### # read prefix and validate -prefix=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.prefix") +prefix=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.prefix") if [ -z "${prefix}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe dataset prefix (zowe.setup.dataset.prefix) is not defined in Zowe YAML configuration file." "" 157 fi # read JCL library and validate -jcllib=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.jcllib") +jcllib=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.jcllib") if [ -z "${jcllib}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe custom JCL library (zowe.setup.dataset.jcllib) is not defined in Zowe YAML configuration file." "" 157 fi -security_product=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.product") -security_users_zowe=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.users.zowe") -security_groups_admin=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.groups.admin") +security_product=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.product") +security_users_zowe=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.users.zowe") +security_groups_admin=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.groups.admin") # read cert type and validate -cert_type=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.type") +cert_type=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.type") if [ -z "${cert_type}" ]; then print_error_and_exit "Error ZWEL0157E: Certificate type (zowe.setup.certificate.type) is not defined in Zowe YAML configuration file." "" 157 fi @@ -41,16 +41,16 @@ fi # read cert dname for item in caCommonName commonName orgUnit org locality state country; do var_name="dname_${item}" - var_val=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.dname.${item}") + var_val=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.dname.${item}") eval "${var_name}=\"${var_val}\"" done # read cert validity -cert_validity=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.validity") +cert_validity=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.validity") if [ "${cert_type}" = "PKCS12" ]; then # read keystore info for item in directory lock name password caAlias caPassword; do var_name="pkcs12_${item}" - var_val=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.pkcs12.${item}") + var_val=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.pkcs12.${item}") eval "${var_name}=\"${var_val}\"" done if [ -z "${pkcs12_directory}" ]; then @@ -59,7 +59,7 @@ if [ "${cert_type}" = "PKCS12" ]; then # read keystore import info for item in keystore password alias; do var_name="pkcs12_import_${item}" - var_val=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.pkcs12.import.${item}") + var_val=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.pkcs12.import.${item}") eval "${var_name}=\"${var_val}\"" done if [ -n "${pkcs12_import_keystore}" ]; then @@ -75,47 +75,47 @@ elif [[ "${cert_type}" == JCE*KS ]]; then # read keyring info for item in owner name label caLabel; do var_name="keyring_${item}" - var_val=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.keyring.${item}") + var_val=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.keyring.${item}") eval "${var_name}=\"${var_val}\"" done if [ -z "${keyring_name}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe keyring name (zowe.setup.certificate.keyring.name) is not defined in Zowe YAML configuration file." "" 157 fi - keyring_import_dsName=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.keyring.import.dsName") - keyring_import_password=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.keyring.import.password") + keyring_import_dsName=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.keyring.import.dsName") + keyring_import_password=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.keyring.import.password") if [ -n "${keyring_import_dsName}" ]; then keyring_option=3 if [ -z "${keyring_import_password}" ]; then print_error_and_exit "Error ZWEL0157E: The password for data set storing importing certificate (zowe.setup.certificate.keyring.import.password) is not defined in Zowe YAML configuration file." "" 157 fi fi - keyring_connect_user=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.keyring.connect.user") - keyring_connect_label=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.keyring.connect.label") + keyring_connect_user=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.keyring.connect.user") + keyring_connect_label=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.keyring.connect.label") if [ -n "${keyring_connect_label}" ]; then keyring_option=2 fi fi # read keystore domains -cert_import_CAs=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.importCertificateAuthorities" | tr '\n' ',') +cert_import_CAs=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.importCertificateAuthorities" | tr '\n' ',') # read keystore domains -cert_domains=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.san" | tr '\n' ',') +cert_domains=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.san" | tr '\n' ',') if [ -z "${cert_domains}" ]; then - cert_domains=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.externalDomains" | tr '\n' ',') + cert_domains=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.externalDomains" | tr '\n' ',') fi # read z/OSMF info for item in user ca; do var_name="zosmf_${item}" - var_val=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.keyring.zOSMF.${item}") + var_val=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.certificate.keyring.zOSMF.${item}") eval "${var_name}=\"${var_val}\"" done for item in host port; do var_name="zosmf_${item}" - var_val=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zOSMF.${item}") + var_val=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zOSMF.${item}") eval "${var_name}=\"${var_val}\"" done keyring_trust_zosmf= -verify_certificates=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.verifyCertificates" | upper_case) +verify_certificates=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.verifyCertificates" | upper_case) if [ "${verify_certificates}" = "STRICT" -o "${verify_certificates}" = "NONSTRICT" ]; then keyring_trust_zosmf="--trust-zosmf" else diff --git a/bin/commands/init/index.sh b/bin/commands/init/index.sh index a2815f2b49..ba87c5ee57 100755 --- a/bin/commands/init/index.sh +++ b/bin/commands/init/index.sh @@ -36,10 +36,10 @@ if [ -z "${yaml_java_home}" ]; then fi fi # zowe.runtimeDirectory -require_zowe_yaml +require_zowe_yaml "skipnode" update_zowe_runtime_dir= # do we have zowe.runtimeDirectory defined in zowe.yaml? -yaml_runtime_dir=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.runtimeDirectory") +yaml_runtime_dir=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.runtimeDirectory") if [ -n "${yaml_runtime_dir}" ]; then result=$(are_directories_same "${yaml_runtime_dir}" "${ZWE_zowe_runtimeDirectory}") code=$? diff --git a/bin/commands/init/mvs/index.sh b/bin/commands/init/mvs/index.sh index 7f1102c95d..ab724fa206 100644 --- a/bin/commands/init/mvs/index.sh +++ b/bin/commands/init/mvs/index.sh @@ -22,10 +22,10 @@ authPluginLib|Zowe authorized plugin library|dsntype(library) dsorg(po) recfm(u) ############################### # validation -require_zowe_yaml +require_zowe_yaml "skipnode" # read prefix and validate -prefix=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.prefix") +prefix=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.prefix") if [ -z "${prefix}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe dataset prefix (zowe.setup.dataset.prefix) is not defined in Zowe YAML configuration file." "" 157 fi @@ -39,7 +39,7 @@ while read -r line; do spec=$(echo "${line}" | awk -F"|" '{print $3}') # read def and validate - ds=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.${key}") + ds=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.${key}") if [ -z "${ds}" ]; then # authLoadlib can be empty if [ "${key}" = "authLoadlib" ]; then @@ -76,7 +76,7 @@ if [ "${ds_existence}" = "true" ] && [ "${ZWE_CLI_PARAMETER_ALLOW_OVERWRITE}" ! else ############################### # copy sample lib members - parmlib=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.parmlib") + parmlib=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.parmlib") for ds in ZWESIP00; do print_message "Copy ${prefix}.${ZWE_PRIVATE_DS_SZWESAMP}(${ds}) to ${parmlib}(${ds})" data_set_copy_to_data_set "${prefix}" "${prefix}.${ZWE_PRIVATE_DS_SZWESAMP}(${ds})" "${parmlib}(${ds})" "${ZWE_CLI_PARAMETER_ALLOW_OVERWRITE}" @@ -88,7 +88,7 @@ else ############################### # copy auth lib members # FIXME: data_set_copy_to_data_set cannot be used to copy program? - authLoadlib=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.authLoadlib") + authLoadlib=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.authLoadlib") if [ -n "${authLoadlib}" ]; then for ds in ZWESIS01 ZWESAUX ZWESISDL; do print_message "Copy components/zss/LOADLIB/${ds} to ${authLoadlib}(${ds})" diff --git a/bin/commands/init/security/index.sh b/bin/commands/init/security/index.sh index b0d2c48551..a07c135ef8 100644 --- a/bin/commands/init/security/index.sh +++ b/bin/commands/init/security/index.sh @@ -18,51 +18,51 @@ print_level1_message "Run Zowe security configurations" ############################### # validation -require_zowe_yaml +require_zowe_yaml "skipnode" # read prefix and validate -prefix=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.prefix") +prefix=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.prefix") if [ -z "${prefix}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe dataset prefix (zowe.setup.dataset.prefix) is not defined in Zowe YAML configuration file." "" 157 fi # read JCL library and validate -jcllib=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.jcllib") +jcllib=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.jcllib") if [ -z "${jcllib}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe custom JCL library (zowe.setup.dataset.jcllib) is not defined in Zowe YAML configuration file." "" 157 fi -security_product=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.product") +security_product=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.product") if [ -z "${security_product}" ]; then security_product=RACF fi -security_groups_admin=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.groups.admin") +security_groups_admin=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.groups.admin") if [ -z "${security_groups_admin}" ]; then security_groups_admin=${ZWE_PRIVATE_DEFAULT_ADMIN_GROUP} fi -security_groups_stc=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.groups.stc") +security_groups_stc=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.groups.stc") if [ -z "${security_groups_stc}" ]; then security_groups_stc=${ZWE_PRIVATE_DEFAULT_ADMIN_GROUP} fi -security_groups_sysProg=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.groups.sysProg") +security_groups_sysProg=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.groups.sysProg") if [ -z "${security_groups_sysProg}" ]; then security_groups_sysProg=${ZWE_PRIVATE_DEFAULT_ADMIN_GROUP} fi -security_users_zowe=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.users.zowe") +security_users_zowe=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.users.zowe") if [ -z "${security_users_zowe}" ]; then security_users_zowe=${ZWE_PRIVATE_DEFAULT_ZOWE_USER} fi -security_users_zis=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.users.zis") +security_users_zis=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.users.zis") if [ -z "${security_users_zis}" ]; then security_users_zis=${ZWE_PRIVATE_DEFAULT_ZIS_USER} fi -security_stcs_zowe=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.stcs.zowe") +security_stcs_zowe=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.stcs.zowe") if [ -z "${security_stcs_zowe}" ]; then security_stcs_zowe=${ZWE_PRIVATE_DEFAULT_ZOWE_STC} fi -security_stcs_zis=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.stcs.zis") +security_stcs_zis=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.stcs.zis") if [ -z "${security_stcs_zis}" ]; then security_stcs_zis=${ZWE_PRIVATE_DEFAULT_ZIS_STC} fi -security_stcs_aux=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.stcs.aux") +security_stcs_aux=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.stcs.aux") if [ -z "${security_stcs_aux}" ]; then security_stcs_aux=${ZWE_PRIVATE_DEFAULT_AUX_STC} fi diff --git a/bin/commands/init/stc/index.sh b/bin/commands/init/stc/index.sh index c26cf6e7e8..f3de7377e9 100644 --- a/bin/commands/init/stc/index.sh +++ b/bin/commands/init/stc/index.sh @@ -19,47 +19,47 @@ proclibs="ZWESLSTC ZWESISTC ZWESASTC" ############################### # validation -require_zowe_yaml +require_zowe_yaml "skipnode" # read prefix and validate -prefix=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.prefix") +prefix=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.prefix") if [ -z "${prefix}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe dataset prefix (zowe.setup.dataset.prefix) is not defined in Zowe YAML configuration file." "" 157 fi # read PROCLIB and validate -proclib=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.proclib") +proclib=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.proclib") if [ -z "${proclib}" ]; then print_error_and_exit "Error ZWEL0157E: PROCLIB (zowe.setup.dataset.proclib) is not defined in Zowe YAML configuration file." "" 157 fi # read JCL library and validate -jcllib=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.jcllib") +jcllib=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.jcllib") if [ -z "${jcllib}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe custom JCL library (zowe.setup.dataset.jcllib) is not defined in Zowe YAML configuration file." "" 157 fi # read PARMLIB and validate -parmlib=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.parmlib") +parmlib=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.parmlib") if [ -z "${parmlib}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe custom parameter library (zowe.setup.dataset.parmlib) is not defined in Zowe YAML configuration file." "" 157 fi # read LOADLIB and validate -authLoadlib=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.authLoadlib") +authLoadlib=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.authLoadlib") if [ -z "${authLoadlib}" ]; then # authLoadlib can be empty authLoadlib="${prefix}.${ZWE_PRIVATE_DS_SZWEAUTH}" fi -authPluginLib=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.authPluginLib") +authPluginLib=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.authPluginLib") if [ -z "${authPluginLib}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe custom load library (zowe.setup.dataset.authPluginLib) is not defined in Zowe YAML configuration file." "" 157 fi -security_stcs_zowe=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.stcs.zowe") +security_stcs_zowe=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.stcs.zowe") if [ -z "${security_stcs_zowe}" ]; then security_stcs_zowe=${ZWE_PRIVATE_DEFAULT_ZOWE_STC} fi -security_stcs_zis=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.stcs.zis") +security_stcs_zis=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.stcs.zis") if [ -z "${security_stcs_zis}" ]; then security_stcs_zis=${ZWE_PRIVATE_DEFAULT_ZIS_STC} fi -security_stcs_aux=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.stcs.aux") +security_stcs_aux=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.security.stcs.aux") if [ -z "${security_stcs_aux}" ]; then security_stcs_aux=${ZWE_PRIVATE_DEFAULT_AUX_STC} fi diff --git a/bin/commands/init/vsam/index.sh b/bin/commands/init/vsam/index.sh index f40e606b6a..e279ff07b7 100644 --- a/bin/commands/init/vsam/index.sh +++ b/bin/commands/init/vsam/index.sh @@ -18,43 +18,43 @@ print_level1_message "Create VSAM storage for Zowe Caching Service" ############################### # validation -require_zowe_yaml +require_zowe_yaml "skipnode" -caching_storage=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".components.caching-service.storage.mode" | upper_case) +caching_storage=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".components.caching-service.storage.mode" | upper_case) if [ "${caching_storage}" != "VSAM" ]; then print_error "Warning ZWEL0301W: Zowe Caching Service is not configured to use VSAM. Command skipped." return 0 fi # read prefix and validate -prefix=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.prefix") +prefix=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.prefix") if [ -z "${prefix}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe dataset prefix (zowe.setup.dataset.prefix) is not defined in Zowe YAML configuration file." "" 157 fi # read JCL library and validate -jcllib=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.jcllib") +jcllib=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.dataset.jcllib") if [ -z "${jcllib}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe custom JCL library (zowe.setup.dataset.jcllib) is not defined in Zowe YAML configuration file." "" 157 fi -vsam_mode=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.vsam.mode") +vsam_mode=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.vsam.mode") if [ -z "${vsam_mode}" ]; then vsam_mode=NONRLS fi vsam_volume= if [ "${vsam_mode}" = "NONRLS" ]; then - vsam_volume=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.vsam.volume") + vsam_volume=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.vsam.volume") if [ -z "${vsam_volume}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe Caching Service VSAM data set volume (zowe.setup.vsam.volume) is not defined in Zowe YAML configuration file." "" 157 fi fi vsam_storageClass= if [ "${vsam_mode}" = "RLS" ]; then - vsam_storageClass=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.vsam.storageClass") + vsam_storageClass=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".zowe.setup.vsam.storageClass") if [ -z "${vsam_storageClass}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe Caching Service VSAM data set RLS storage class (zowe.setup.vsam.storageClass) is not defined in Zowe YAML configuration file." "" 157 fi fi -vsam_name=$(read_yaml "${ZWE_CLI_PARAMETER_CONFIG}" ".components.caching-service.storage.vsam.name") +vsam_name=$(read_yaml_configmgr "${ZWE_CLI_PARAMETER_CONFIG}" ".components.caching-service.storage.vsam.name") if [ -z "${vsam_name}" ]; then print_error_and_exit "Error ZWEL0157E: Zowe Caching Service VSAM data set name (components.caching-service.storage.vsam.name) is not defined in Zowe YAML configuration file." "" 157 fi diff --git a/bin/libs/common.sh b/bin/libs/common.sh index 5db74cc256..52815dfe6a 100644 --- a/bin/libs/common.sh +++ b/bin/libs/common.sh @@ -46,9 +46,9 @@ check_configmgr_enabled() { } require_zowe_yaml() { - # node is required to read yaml file - require_node - + if [ -z "${1}" ]; then + require_node + fi if [ -z "${ZWE_CLI_PARAMETER_CONFIG}" ]; then print_error_and_exit "Error ZWEL0108E: Zowe YAML config file is required." "" 108 elif [ ! -f "${ZWE_CLI_PARAMETER_CONFIG}" ]; then diff --git a/bin/libs/json.sh b/bin/libs/json.sh index 5b5342a4a3..b85c93951e 100644 --- a/bin/libs/json.sh +++ b/bin/libs/json.sh @@ -109,6 +109,33 @@ read_yaml() { return ${code} } +read_yaml_configmgr() { + file="${1}" + key=$(echo "${2}" | tr '.' '/') + ignore_null="${3:-true}" + + print_trace "- read_yaml_configmgr process ${file} and extract '${2} -> ${key}'" + + configmgr="${ZWE_zowe_runtimeDirectory}/bin/utils/configmgr" + schema="${ZWE_zowe_runtimeDirectory}/schemas/server-common.json:${ZWE_zowe_runtimeDirectory}/schemas/zowe-yaml-schema.json" + + result=$(_CEE_RUNOPTS="XPLINK(ON)" "${configmgr}" -s "$schema" -p "FILE(${file})" extract "${key}" 2>&1); + code=$? + + print_trace " * Exit code: ${code}" + print_trace " * Output:" + print_trace "$(padding_left "${result}" " ")" + + if [ ${code} -eq 0 ]; then + if [ "${ignore_null}" = "true" ]; then + if [ "${result}" = "null" -o "${result}" = "undefined" ]; then + result= + fi + fi + printf "${result}" + fi +} + read_json() { file="${1}" key="${2}" From 47296d2a6604d14e44079123cdcf320bd4a111f0 Mon Sep 17 00:00:00 2001 From: Martin Zeithaml Date: Thu, 14 Nov 2024 12:54:58 +0100 Subject: [PATCH 2/3] 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 a57296ab00..67f8b4a3a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to the Zowe Installer will be documented in this file. ## `3.0.1` -- Enhancement: command `zwe init` does not require NodeJS [#40??](https://github.com/zowe/zowe-install-packaging/pull/40??) +- Enhancement: command `zwe init` does not require NodeJS [#4088](https://github.com/zowe/zowe-install-packaging/pull/4088) - Bugfix: When `--log-dir` parameter for `zwe` command is a file, there might be an error "InternalError: stack overflow". [#4071](https://github.com/zowe/zowe-install-packaging/pull/4071) - Enhancement: new javascript funtion `getStatvfs()` to obtain information about the file sysytem [#3994](https://github.com/zowe/zowe-install-packaging/pull/3994) - Enhancement: command `zwe diagnose` in javascript only [#4061](https://github.com/zowe/zowe-install-packaging/pull/4061) From 5dea7ff73439ae8a4dec786fc368a6b089d23ee9 Mon Sep 17 00:00:00 2001 From: Martin Zeithaml Date: Fri, 15 Nov 2024 14:27:01 +0100 Subject: [PATCH 3/3] Return empty string Signed-off-by: Martin Zeithaml --- CHANGELOG.md | 1 - bin/libs/json.sh | 7 +++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67f8b4a3a7..5895368628 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,6 @@ All notable changes to the Zowe Installer will be documented in this file. ## `3.0.1` - Enhancement: command `zwe init` does not require NodeJS [#4088](https://github.com/zowe/zowe-install-packaging/pull/4088) -- Bugfix: When `--log-dir` parameter for `zwe` command is a file, there might be an error "InternalError: stack overflow". [#4071](https://github.com/zowe/zowe-install-packaging/pull/4071) - Enhancement: new javascript funtion `getStatvfs()` to obtain information about the file sysytem [#3994](https://github.com/zowe/zowe-install-packaging/pull/3994) - Enhancement: command `zwe diagnose` in javascript only [#4061](https://github.com/zowe/zowe-install-packaging/pull/4061) - Enhancement: schema validation update for `zowe.job.name` and `zowe.job.prefix` [#4060](https://github.com/zowe/zowe-install-packaging/pull/4060) diff --git a/bin/libs/json.sh b/bin/libs/json.sh index b85c93951e..322361c3dc 100644 --- a/bin/libs/json.sh +++ b/bin/libs/json.sh @@ -122,6 +122,13 @@ read_yaml_configmgr() { result=$(_CEE_RUNOPTS="XPLINK(ON)" "${configmgr}" -s "$schema" -p "FILE(${file})" extract "${key}" 2>&1); code=$? + # When the item is not defined in config, configmgr returns + # code 0 and + # stdout = "error not found, reason=nnn" + if [[ "${result}" == "error not found, reason="* ]]; then + result="" + fi + print_trace " * Exit code: ${code}" print_trace " * Output:" print_trace "$(padding_left "${result}" " ")"