Zowe Docs
Zowe Docs
0 Documentation
Table of contents:
Zowe overview
Zowe overview
Zowe demo video
Component overview
Zowe Application Framework
API Mediation Layer
Zowe CLI
Zowe Explorer
Zowe Client Software Development Kits (SDKs)
Zowe Launcher
Zowe Mobile - Incubator
ZEBRA (Zowe Embedded Browser for RMF/SMF and APIs) - Incubator
Zowe Workflow wiZard - Incubator
Zowe Third-Party Software Requirements and Bill of Materials
Zowe architecture
Zowe architecture
Zowe architecture with high availability enablement on Sysplex
Zowe architecture when running in Kubernetes cluster
App Server
ZSS
API Gateway
API Catalog
API Discovery
Caching service
Desktop Apps
File API and JES API
Cross Memory server
FAQ: Zowe and components
FAQ: Zowe and components
Zowe FAQ
What is Zowe?
Who is the target audience for using Zowe?
What language is Zowe written in?
What is the licensing for Zowe?
Why is Zowe licensed using EPL2.0?
What are some examples of how Zowe technology might be used by z/OS products and
applications?
What is the best way to get started with Zowe?
What are the prerequisites for Zowe?
What's the difference between using Zowe with or without Docker?
Is the Zowe CLI packaged within the Zowe Docker download?
Does ZOWE support z/OS ZIIP processors?
How is access security managed on z/OS?
How is access to the Zowe open source managed?
How do I get involved in the open source development?
When will Zowe be completed?
Can I try Zowe without a z/OS instance?
Zowe CLI FAQ
Why might I use Zowe CLI versus a traditional ISPF interface to perform mainframe tasks?
With what tools is Zowe CLI compatible?
Where can I use the CLI?
Which method should I use to install Zowe CLI?
How can I get Zowe CLI to run faster?
How can I manage profiles for my projects and teams?
How can I get help with using Zowe CLI?
How can I use Zowe CLI to automate mainframe actions?
How can I contribute to Zowe CLI?
Zowe Explorer FAQ
Why might I use Zowe Explorer versus a traditional ISPF interface to perform mainframe tasks?
How can I get started with Zowe Explorer?
Where can I use Zowe Explorer?
How do I get help with using Zowe Explorer?
How can I use Secure Credential Storage for Zowe Explorer?
What types of profiles can I create for Zowe Explorer?
How can I use FTP as my back-end service for Zowe Explorer?
How can I contribute to Zowe Explorer?
FAQ: Zowe V2
FAQ: Zowe V2
Where can I find the V1 and V2 LTS conformance criteria?
Whats the difference between "server.json" and "example-zowe.yaml"?
What are the new default ports?
How do I access Zowe through the API Mediation Layer in V2?
What new frameworks are supported in V2?
Why aren't the explorers appearing on my desktop anymore?
Version 2.0.0 (April 2022)
Version 2.0.0 (April 2022)
Breaking changes
Zowe installation
API Mediation Layer
Zowe Application Framework
Zowe CLI
New features and enhancements
Zowe installation
Zowe API Mediation Layer
Zowe Application Framework
Zowe CLI
Zowe Explorer
Bug fixes
Zowe API Mediation Layer
Zowe Application Framework
Conformance and release compatibility
Backward compatibility
Forward compatibility
Conformance compatibility
Zowe V2 office hours videos
Zowe V2 office hours videos
Office hours for Zowe extenders
General information
Zowe component updates
Installation and V2 conformance
Office hours for Zowe consumers
Zowe CLI quick start
Zowe CLI quick start
Installing
Software Requirements
Installing Zowe CLI core from public npm
Installing CLI plug-ins
Issuing your first commands
Listing all data sets under a high-level qualifier (HLQ)
Downloading a partitioned data-set (PDS) member to local file
Team profiles
Using profiles
Profile types
Creating zosmf profiles
Using zosmf profiles
Writing scripts
Example:
Next steps
Migrating Zowe server component from V1 to V2
Migrating Zowe server component from V1 to V2
Component manifest
Lifecycle scripts
Environment variables
Packaging one component deliverable for both Zowe v1 and v2
Zowe learning resources
Zowe learning resources
Blogs
Videos
Webinars
Community
Training
Overview
Overview
Installation roadmap
Installation roadmap
Stage 1: Plan and prepare
Stage 2: Install the Zowe z/OS runtime
Stage 3: Configure the Zowe z/OS runtime
Looking for troubleshooting help?
Planning the installation
Planning the installation
Topology of the Zowe z/OS launch process
Runtime directory
z/OS Data sets used by Zowe
Zowe configuration file
Workspace directory
Log directory
Keystore directory
Extension directory
UNIX System Services considerations for Zowe
UNIX System Services considerations for Zowe
What is USS?
Setting up USS for the first time
Language environment
OMVS segment
Address space region size
System requirements
System requirements
z/OS system requirements
z/OS
Node.js
Java
z/OSMF (Optional)
User ID requirements
ZWESVUSR
ZWESIUSR
ZWEADMIN
zowe_user
Network requirements
Zowe Containers requirements
Zowe Desktop requirements (client PC)
Feature requirements
Multi-Factor Authentication (MFA)
Single Sign-On (SSO)
Memory requirements
Installing Node.js on z/OS
Installing Node.js on z/OS
Supported Node.js versions
How to obtain IBM SDK for Node.js - z/OS
Hardware and software prerequisites
Installing the PAX edition of Node.js - z/OS
Installing the SMP/E edition of Node.js - z/OS
Configuring z/OSMF
Configuring z/OSMF
z/OS requirements for z/OSMF configuration
Configuring z/OSMF
z/OSMF REST services for the Zowe CLI
Configuration of z/OSMF to properly work with API ML
Configuring z/OSMF Lite (for non-production use)
Configuring z/OSMF Lite (for non-production use)
Introduction
Assumptions
Software Requirements
Minimum Java level
WebSphere® Liberty profile (z/OSMF V2R3 and later)
System settings
Web browser
Creating a z/OSMF nucleus on your system
Running job IZUNUSEC to create security
Running job IZUMKFS to create the z/OSMF user file system
Copying the IBM procedures into JES PROCLIB
Starting the z/OSMF server
Accessing the z/OSMF Welcome page
Mounting the z/OSMF user file system at IPL time
Adding the required REST services
Enabling the z/OSMF JOB REST services
Enabling the TSO REST services
Enabling the z/OSMF data set and file REST services
Enabling the z/OSMF Workflow REST services and Workflows task UI
Troubleshooting problems
Common problems and scenarios
Tools and techniques for troubleshooting
Appendix A. Creating an IZUPRMxx parmlib member
Appendix B. Modifying IZUSVR1 settings
Appendix C. Adding more users to z/OSMF
Before you Begin
Procedure
Results
Installing Zowe runtime from a convenience build
Installing Zowe runtime from a convenience build
Introduction
Step 1: Obtain the convenience build
Step 2: Transfer the convenience build to USS and expand it
Step 3: (Optional) Add the zwe command to your PATH
Step 4: Copy the zowe.yaml configuration file to preferred location
Step 5: Install the MVS data sets
About the MVS data sets
Procedure
Next steps
Installing Zowe SMP/E
Installing Zowe SMP/E
Introduction
Zowe description
Zowe FMIDs
Program materials
Basic machine-readable material
Program source materials
Publications useful during installation
Program support
Statement of support procedures
Program and service level information
Program level information
Service level information
Installation requirements and considerations
Driving system requirements
Target system requirements
FMIDs deleted
Installation instructions
SMP/E considerations for installing Zowe
SMP/E options subentry values
Overview of the installation steps
Download the Zowe SMP/E package>P>
Allocate file system to hold the download package
Upload the download package to the host
Extract and expand the compressed SMPMCS and RELFILEs
Sample installation jobs
Create SMP/E environment (Optional)
Perform SMP/E RECEIVE
Allocate SMP/E target and distributions libraries
Allocate, create and mount ZSF files (Optional)
Allocate z/OS UNIX paths
Create DDDEF entries
Perform SMP/E APPLY
Perform SMP/E ACCEPT
Run REPORT CROSSZONE
Cleaning up obsolete data sets, paths, and DDDEFs
Activating Zowe
File system execution
Zowe customization
Installing Zowe SMP/E build with z/OSMF workflow
Installing Zowe SMP/E build with z/OSMF workflow
Activating Zowe
File system execution
Zowe customization
Installing Zowe from a Portable Software Instance
Installing Zowe from a Portable Software Instance
Prerequisites
Procedure
Address z/OSMF Requirements
Address z/OSMF Requirements
Acquire a z/OSMF Portable Software Instance
Acquire a z/OSMF Portable Software Instance
Download the Portable Software Instance from Zowe Downloads
Register Portable Software Instance in z/OSMF
Install Product Software Using z/OSMF Deployments
Install Product Software Using z/OSMF Deployments
Initializing the z/OS system
Initializing the z/OS system
About the zwe init command
Procedure
Next steps
Initializing Zowe custom data sets
Initializing Zowe custom data sets
Introduction
Procedure
Results
Initialize Zowe security configurations
Initialize Zowe security configurations
Configuring with zwe init security command
Configuring with ZWESECUR JCL
Undo security configurations
Next steps
Configuring the z/OS system for Zowe
Configuring the z/OS system for Zowe
Configure an ICSF cryptographic services environment
Configure security environment switching
Configure address space job naming
Configure multi-user address space (for TSS only)
Configure user IDs and groups for the Zowe started tasks
Configure ZWESLSTC to run Zowe high availability instances under ZWESVUSR user ID
Configure the cross memory server for SAF
Configure main Zowe server to use identity mapping
Using RACF
Using ACF2
Using TSS
Configure signed SAF Identity tokens (IDT)
Granting users permission to access z/OSMF
Granting users permission to access z/OSMF
APF authorize load libraries
APF authorize load libraries
Configuring PKCS12 certificates
Configuring PKCS12 certificates
Use a PKCS12 certificate
Create a self signed PKCS12 certificate
Manually import a certificate authority into a web browser
Configuring JCERACFS certificates in a key ring
Configuring JCERACFS certificates in a key ring
Create a certificate authority and use it to self sign a certificate
Create a self signed JCERACFKS certificate
Set up Zowe certificates using workflows
Set up Zowe certificates using workflows
Creating VSAM caching service datasets
Creating VSAM caching service datasets
Using zwe init vsam command
Installing Zowe main started tasks
Installing Zowe main started tasks
Installing and configuring the Zowe cross memory server (ZWESISTC)
Installing and configuring the Zowe cross memory server (ZWESISTC)
PDS sample library and PDSE load library
Load module
APF authorize
Key 4 non-swappable
PARMLIB
PROCLIB
SAF configuration
Summary of cross memory server installation
Starting and stopping the cross memory server on z/OS
Zowe auxiliary service
When to configure the auxiliary service
Installing the auxiliary service
Zowe Auxiliary Address space
Zowe Auxiliary Address space
Configure Zowe with z/OSMF Workflows
Configure Zowe with z/OSMF Workflows
Configure the Zowe instance directory
Register and execute workflow in the z/OSMF web interface
Overview
Overview
Enable high availability when Zowe runs in Sysplex
Known limitations
Enable high availability when Zowe runs in Kubernetes
Configuring Sysplex for high availability
Configuring Sysplex for high availability
Sysplex environment requirements
Configuring Sysplex Distributor
Configuring z/OSMF for high availability in Sysplex
Configuring z/OSMF for high availability in Sysplex
Sysplex environment requirements
Setting up z/OSMF nucleus
Requirements of z/OSMF HA parmlib member in Sysplex
Configuring z/OSMF for high availability
Configuring the Caching Service for HA
Configuring the Caching Service for HA
Starting and stopping Zowe
Starting and stopping Zowe
Starting and stopping the cross memory server ZWESISTC on z/OS
Starting and stopping the cross memory auxiliary server ZWESASTC on z/OS
Starting and stopping Zowe main server ZWESLSTC on z/OS with zwe server command
Starting and stopping Zowe main server ZWESLSTC on z/OS manually
Stopping and starting a Zowe component without restarting Zowe main server
Verifying Zowe installation on z/OS
Verifying Zowe installation on z/OS
Verifying Zowe Application Framework installation
Verifying API Mediation installation
Verifying z/OS Services installation
Introduction
Introduction
Known limitations
Prerequisites
Prerequisites
Kubernetes cluster
kubectl tool
Downloading and installing
Downloading and installing
Downloading
Downloading configuration samples
Downloading container images
Installing
Upgrading
Configuring
Configuring
1. Create namespace and service account
2. Create Persistent Volume Claim (PVC)
3. Create and modify ConfigMaps and Secrets
4. Expose API Mediation Layer components
4a. Create service
4b. Create Ingress (Bare-metal)
4c. Create Route (OpenShift)
Customizing or manually creating ConfigMaps and Secrets
PodDisruptionBudget
HorizontalPodAutoscaler
Kubernetes v1.21+
Starting, stopping, and monitoring
Starting, stopping, and monitoring
Starting Zowe containers
Port forwarding (for minikube only)
Verifying Zowe containers
Monitoring Zowe containers
Monitoring Zowe containers via UI
Monitoring Zowe containers via CLI
Stopping, pausing or removing Zowe containers
Installation checklist
Installation checklist
Addressing the prerequisites
Installing Zowe CLI
Configuring Zowe CLI
System requirements
System requirements
Client-side requirements
Host-side requirements
Free disk space
Installing Zowe CLI
Installing Zowe CLI
Installation guidelines
Installation notes
Prerequisites
Prerequisite notes
Install Zowe CLI from npm
Install Zowe CLI from a local package
Configuring Secure Credential Store on headless Linux operating systems
Configuring Secure Credential Store on headless Linux operating systems
Headless Linux requirements
Unlocking the keyring manually
Unlocking the keyring automatically
Configuring z/Linux
Configure Zowe CLI on operating systems where the Secure Credential Store is not available
Configure Zowe CLI on operating systems where the Secure Credential Store is not available
V1 profiles
Team configuration
Installing Zowe CLI with Node.js 16 on Windows
Installing Zowe CLI with Node.js 16 on Windows
Additional Considerations
Install CLI from Online Registry Via Proxy
Install CLI from Online Registry Via Proxy
Updating Zowe CLI
Updating Zowe CLI
Updating to the Zowe CLI V2 Long-term Support (v2-lts) version
Identify the currently installed version of Zowe CLI
Identify the currently installed versions of Zowe CLI plug-ins
Update Zowe CLI from the online registry
Update or revert Zowe CLI to a specific version
Update Zowe CLI from a local package
Uninstalling Zowe CLI
Uninstalling Zowe CLI
Visual Studio Code (VS Code) Extension for Zowe
Visual Studio Code (VS Code) Extension for Zowe
Software Requirements
Profile notes:
Installing
Configuration
Relevant Information
Zowe Explorer Profiles
Zowe Explorer Profiles
Configuring team profiles
Creating team configuration files
Managing profiles
Sample profile configuration
Working with Zowe Explorer profiles
Validating profiles
Using base profiles and tokens with existing profiles
Accessing services through API ML using SSO
Logging in to the Authentication Service
Configuring Zowe Application Framework
Configuring Zowe Application Framework
Accessing the App Server
Accessing the Desktop
Accessing ZSS
Configuration file
app-server configuration
zss configuration
Environment variables
Configuring the framework as a Mediation Layer client
Setting up terminal app plugins
Setting up the TN3270 mainframe terminal app plugin
Setting up the VT Terminal app plugin
Network configuration
HTTPS
HTTP
Configuration Directories
Old defaults
App plugin configuration
Logging configuration
Enabling tracing
Log files
ZSS configuration
ZSS 64 or 31 bit modes
Using AT-TLS in the App Framework
Creating AT-TLS certificates and keyring using RACF
Defining the AT-TLS rule
Using multiple ZIS instances
Controlling access to apps
Enabling RBAC
Controlling app access for all users
Controlling app access for individual users
Controlling access to dataservices
Defining the RACF ZOWE class
Creating authorization profiles
Creating generic authorization profiles
Configuring basic authorization
Endpoint URL length limitations
Multi-factor authentication configuration
Session duration and expiration
Configuration
Administering the servers and plugins using an API
Configuring Zowe CLI environment variables
Configuring Zowe CLI environment variables
Setting the CLI home directory
Setting CLI log levels
Setting CLI daemon mode properties
Configuring the Zowe APIs
Configuring the Zowe APIs
Advanced Gateway features configuration
Advanced Gateway features configuration
SAF as an Authentication provider
Enable JWT token refresh endpoint
Change password with SAF provider
Change password with z/OSMF provider
Gateway retry policy
Gateway client certificate authentication
Gateway timeouts
CORS handling
Encoded slashes
Connection limits
Routed instance header
Distributed load balancer cache
Replace or remove the Catalog with another service
API Mediation Layer as a standalone component
SAF Resource Checking
Checking providers
Discovery Service configuration parameters
Discovery Service configuration parameters
Zowe runtime configuration parameters
API ML configuration
Eureka configuration
API Gateway configuration parameters
API Gateway configuration parameters
Runtime configuration
Environment variables
Service configuration
Zuul configuration
Hystrix configuration
AT-TLS
Getting started
Getting started
Using the Zowe Desktop
Using the Zowe Desktop
Navigating the Zowe Desktop
Accessing the Zowe Desktop
Logging in and out of the Zowe Desktop
Changing user password
Updating an expired password
Pinning applications to the task bar
Open application in new tab
Personalizing the Desktop
Changing the desktop language
Zowe Desktop application plugins
Hello World Sample
IFrame Sample
Sample Angular App
Sample React App
3270 Terminal
VT Terminal
API Catalog
Editor
JES Explorer
IP Explorer
MVS Explorer
USS Explorer
Using the Editor
Using the Editor
Specifying a highlighting language
Open a dataset
Deleting a file or folder
Opening a directory
Creating a new directory
Creating a new file
Hotkeys
Using API Catalog
Using API Catalog
API Versioning
View Service Information and API Documentation in the API Catalog
Swagger "Try it out" functionality in the API Catalog
Make a request
Static APIs refresh functionality in the API Catalog
Change password via API Catalog
Using Metrics Service (Technical Preview)
Using Metrics Service (Technical Preview)
API Mediation Layer Metrics Service Demo Video
View HTTP Metrics in the Metrics Service Dashboard
Using Zowe CLI
Using Zowe CLI
Displaying help
Displaying help
Top-level help
Group, action, and object help
Launch local web help
Viewing web help
Understanding core command groups
Understanding core command groups
auth
config
daemon
plugins
profiles
provisioning
zos-console
zos-files
zos-jobs
zos-ssh
zos-workflows
zos-tso
zosmf
Issuing your first command
Issuing your first command
Using daemon mode
Using daemon mode
Preparing for installation
Enable daemon mode
Restart daemon mode
Disable daemon mode
Configure daemon mode on z/Linux operating systems
Configure daemon mode on z/Linux operating systems
Using profiles
Using profiles
Zowe CLI profile types
Tips for using Zowe CLI profiles
Important information about team profiles
Displaying profile help
Service profiles
Base profiles
Tips for using base profiles
Profile best practices
Testing connections to z/OSMF
Without a profile
Default profile
Specific profile
Using team profiles
Using team profiles
Initializing team configuration
Initializing team configuration
Create team profile configuration files
Connecting profiles to API Mediation Layer
Team configuration for application developers
Team configuration for application developers
Initializing user-specific configuration
Editing team profiles
Team configuration for team leaders
Team configuration for team leaders
Sharing team configuration files
Profile scenarios
Access to one or more LPARs that contain services that share the same credentials
Access to one or more LPARs contain services that do not share the same credentials
Access to LPARs that access services through one API Mediation Layer
Access to LPARs that access services through one API Mediation Layer using certificate
authentication
Sharing team configuration files
Sharing team configuration files
Network drive
Project repository and web server
Managing credential security
Managing credential security
Changes to secure credential storage
Storing properties automatically
Storing properties automatically
Integrating with API Mediation Layer
Integrating with API Mediation Layer
How token management works
Logging in
Logging out
Accessing a service through API ML
Specifying a base path
Accessing multiple services with SSO
Accessing services through SSO + one service not through APIML
Accessing services through SSO + one service through API ML but not SSO
Working with certificates
Working with certificates
Configure certificates signed by a Certificate Authority (CA)
Extend trusted certificates on client
Bypass certificate requirement
Completing advanced tasks
Completing advanced tasks
Using environment variables
Formatting environment variables
Setting environment variables in an automation server
Using the prompt feature
Enable prompt
Always prompt
Change the keyword for prompt
Writing scripts
Sample script library
Example: Clean up Temporary Data Sets
Example: Submit Jobs and Save Spool Output
Extending Zowe CLI
Extending Zowe CLI
Software requirements for Zowe CLI plug-ins
Software requirements for Zowe CLI plug-ins
Installing Zowe CLI plug-ins
Installing Zowe CLI plug-ins
Installing plug-ins from an online registry
Installing plug-ins from a local package
Validating plug-ins
Updating plug-ins
Update plug-ins from an online registry
Update plug-ins from a local package
Uninstall Plug-ins
IBM® CICS® Plug-in for Zowe CLI
IBM® CICS® Plug-in for Zowe CLI
Use cases
Commands
Software requirements
Installing
Creating a user profile
IBM® Db2® Database Plug-in for Zowe CLI
IBM® Db2® Database Plug-in for Zowe CLI
Use cases
Commands
Software requirements
Installing
Installing from an online registry
Installing from a local package
Addressing the license requirement
Server-side license
Client-side license
Creating a user profile
SQL0805N: Database BIND
M1 processor installation
M1 processor installation
IBM® z/OS FTP Plug-in for Zowe CLI
IBM® z/OS FTP Plug-in for Zowe CLI
Use cases
Commands
Software requirements
Installing
Creating a user profile
IBM® IMS™ Plug-in for Zowe CLI
IBM® IMS™ Plug-in for Zowe CLI
Use cases
Commands
Software requirements
Installing
Creating user profiles
IBM® MQ Plug-in for Zowe CLI
IBM® MQ Plug-in for Zowe CLI
Use cases
Using IBM MQ plug-in commands
Software requirements
Installing
Creating a user profile
Visual Studio Code (VS Code) Extension for Zowe
Visual Studio Code (VS Code) Extension for Zowe
Software Requirements
Profile notes:
Installing
Configuration
Relevant Information
Zowe Explorer Profiles
Zowe Explorer Profiles
Configuring team profiles
Creating team configuration files
Managing profiles
Sample profile configuration
Working with Zowe Explorer profiles
Validating profiles
Using base profiles and tokens with existing profiles
Accessing services through API ML using SSO
Logging in to the Authentication Service
Configuring Zowe Application Framework
Configuring Zowe Application Framework
Accessing the App Server
Accessing the Desktop
Accessing ZSS
Configuration file
app-server configuration
zss configuration
Environment variables
Configuring the framework as a Mediation Layer client
Setting up terminal app plugins
Setting up the TN3270 mainframe terminal app plugin
Setting up the VT Terminal app plugin
Network configuration
HTTPS
HTTP
Configuration Directories
Old defaults
App plugin configuration
Logging configuration
Enabling tracing
Log files
ZSS configuration
ZSS 64 or 31 bit modes
Using AT-TLS in the App Framework
Creating AT-TLS certificates and keyring using RACF
Defining the AT-TLS rule
Using multiple ZIS instances
Controlling access to apps
Enabling RBAC
Controlling app access for all users
Controlling app access for individual users
Controlling access to dataservices
Defining the RACF ZOWE class
Creating authorization profiles
Creating generic authorization profiles
Configuring basic authorization
Endpoint URL length limitations
Multi-factor authentication configuration
Session duration and expiration
Configuration
Administering the servers and plugins using an API
Configuring Zowe CLI environment variables
Configuring Zowe CLI environment variables
Setting the CLI home directory
Setting CLI log levels
Setting CLI daemon mode properties
Configuring the Zowe APIs
Configuring the Zowe APIs
Advanced Gateway features configuration
Advanced Gateway features configuration
SAF as an Authentication provider
Enable JWT token refresh endpoint
Change password with SAF provider
Change password with z/OSMF provider
Gateway retry policy
Gateway client certificate authentication
Gateway timeouts
CORS handling
Encoded slashes
Connection limits
Routed instance header
Distributed load balancer cache
Replace or remove the Catalog with another service
API Mediation Layer as a standalone component
SAF Resource Checking
Checking providers
Discovery Service configuration parameters
Discovery Service configuration parameters
Zowe runtime configuration parameters
API ML configuration
Eureka configuration
API Gateway configuration parameters
API Gateway configuration parameters
Runtime configuration
Environment variables
Service configuration
Zuul configuration
Hystrix configuration
AT-TLS
Extending Zowe
Extending Zowe
Extend Zowe CLI
Extend Zowe API Mediation Layer
Dynamic API registration
Static API registration
Add a plug-in to the Zowe Desktop
Extend Zowe Explorer
Sample extensions
Sample Zowe API and API Catalog extension
Sample Zowe Desktop extension
Packaging z/OS extensions
Packaging z/OS extensions
Zowe server component package format
Zowe component manifest
Sample manifests
Install Zowe server component
Install Zowe server component
Install component
Enable and disable component
Install and configure manually
Zowe core components
Zowe z/OS extensions
Zowe server component runtime lifecycle
Zowe server component runtime lifecycle
Zowe runtime lifecycle
Zowe component runtime lifecycle
Validate
Configure
Start
Creating and adding Zowe extension containers
Creating and adding Zowe extension containers
1. Build and publish an extension image to a registry
2. Define Deployment or Job object
3. Start your component
Zowe Containerization Conformance Criteria
Zowe Containerization Conformance Criteria
Image
Base Image
Multi-CPU Architecture
Image Label
Tag
Files and Directories
User zowe
Multi-Stage Build
Runtime
General rules
Persistent Volume(s)
Files and Directories
ConfigMap and Secrets
ompzowe/zowe-launch-scripts Image and initContainers
Command Override
Environment Variables
CI/CD
Build, Test and Release
Developing for Zowe CLI
Developing for Zowe CLI
How to contribute
Getting started
Tutorials
Plug-in development overview
Imperative CLI Framework documentation
Contribution guidelines
Setting up your development environment
Setting up your development environment
Prerequisites
Initial setup
Branches
Clone zowe-cli-sample-plugin and build from source
(Optional) Run the automated tests
Next steps
Installing the sample plug-in
Installing the sample plug-in
Overview
Installing the sample plug-in to Zowe CLI
Viewing the installed plug-in
Using the installed plug-in
Testing the installed plug-in
Next steps
Extending a plug-in
Extending a plug-in
Overview
Creating a Typescript interface for the Typicode response data
Creating a programmatic API
Checkpoint one
Creating a command definition
Creating a command handler
Checkpoint two
Using the installed plug-in
Summary
Next steps
Developing a new plug-in
Developing a new plug-in
Overview
Cloning the sample plug-in source
Changing package.json
Adjusting Imperative CLI Framework configuration
Adding third-party packages
Creating a Node.js programmatic API
Exporting your API
Checkpoint
Defining commands
Trying your command
Bringing together new tools!
Next steps
Implementing profiles in a plug-in
Implementing profiles in a plug-in
Onboarding Overview
Onboarding Overview
Prerequisites
Service Onboarding Guides
Recommended guides for services using Java
Recommended guides for services using Node.js
Guides for Static Onboarding and Direct Call Onboarding
Documentation for legacy enablers
Verify successful onboarding to the API ML
Verifying service discovery through Discovery Service
Verifying service discovery through the API Catalog
Sample REST API Service
Onboarding a REST API service with the Plain Java Enabler (PJE)
Onboarding a REST API service with the Plain Java Enabler (PJE)
Introduction
Onboarding your REST service with API ML
Prerequisites
Configuring your project
Gradle build automation system
Maven build automation system
Configuring your service
REST service identification
Administrative endpoints
API info
API routing information
API Catalog information
Authentication parameters
API Security
SAF Keyring configuration
Eureka Discovery Service
Custom Metadata
Registering your service with API ML
Validating the discoverability of your API service by the Discovery Service
Troubleshooting
API Mediation Layer onboarding configuration
API Mediation Layer onboarding configuration
Introduction
Configuring a REST service for API ML onboarding
Plain Java Enabler service onboarding API
Automatic initialization of the onboarding configuration by a single method call
Validating successful onboarding with the API Mediation Layer
Loading YAML configuration files
Loading a single YAML configuration file
Loading and merging two YAML configuration files
Onboarding a service with the Zowe API Meditation Layer without an onboarding enabler
Onboarding a service with the Zowe API Meditation Layer without an onboarding enabler
Introduction
Registering with the Discovery Service
API Mediation Layer Service onboarding metadata
Sending a heartbeat to API Mediation Layer Discovery Service
Validating successful onboarding with the API Mediation Layer
External Resources
Onboarding a Spring Boot based REST API Service
Onboarding a Spring Boot based REST API Service
Outline of onboarding a REST service using Spring Boot
Selecting a Spring Boot Enabler
Configuring your project
Gradle build automation system
Maven build automation system
Configuring your Spring Boot based service to onboard with API ML
Sample API ML Onboarding Configuration
Authentication properties
API ML Onboarding Configuration Sample
SAF Keyring configuration
Custom Metadata
Registering and unregistering your service with API ML
Unregistering your service with API ML
Basic routing
Adding API documentation
Validating the discoverability of your API service by the Discovery Service
Troubleshooting
Onboarding a Micronaut based REST API service
Onboarding a Micronaut based REST API service
Set up your build automation system
Configure the Micronaut application
Add API ML configuration
Add Micronaut configuration
(Optional) Set up logging configuration
Validate successful registration
Onboarding a Node.js based REST API service
Onboarding a Node.js based REST API service
Introduction
Onboarding your Node.js service with API ML
Prerequisites
Installing the npm dependency
Configuring your service
Registering your service with API ML
Validating the discoverability of your API service by the Discovery Service
Onboard a REST API without code changes required
Onboard a REST API without code changes required
Identify the APIs that you want to expose
Define your service and API in YAML format
Route your API
Customize configuration parameters
Add and validate the definition in the API Mediation Layer running on your machine
Add a definition in the API Mediation Layer in the Zowe runtime
(Optional) Check the log of the API Mediation Layer
(Optional) Reload the services definition after the update when the API Mediation Layer is already
started
Onboarding a REST API service with the YAML Wizard
Onboarding a REST API service with the YAML Wizard
Onboarding your REST service with the Wizard
Zowe API Mediation Layer Single-Sign-On Overview
Zowe API Mediation Layer Single-Sign-On Overview
Zowe API ML client
API service accessed via Zowe API ML
Existing services that cannot be modified
Further resources
Obtaining Information about API Services
Obtaining Information about API Services
API ID in the API Mediation Layer
Protection of Service Information
API Endpoints
Obtain Information about a Specific Service
Obtain Information about All Services
Obtain Information about All Services with a Specific API ID
Response Format
WebSocket support in API Gateway
WebSocket support in API Gateway
Security and Authentication
Subprotocols
High availability
Diagnostics
Limitations
Create an Extension for API ML
Create an Extension for API ML
Call the REST endpoint for validation
API Mediation Layer Message Service Component
API Mediation Layer Message Service Component
Message Definition
Creating a message
Mapping a message
API ML Logger
Zowe API Mediation Layer Security
Zowe API Mediation Layer Security
How API ML transport security works
Transport layer security
Authentication
Zowe API ML services
Zowe API ML TLS requirements
Authentication for API ML services
Authentication parameters
Authentication providers
Authorization
JWT Token
z/OSMF JSON Web Tokens Support
API ML truststore and keystore
API ML SAF Keyring
Discovery Service authentication
Setting ciphers for API ML services
ZAAS Client
Pre-requisites
API Documentation
Getting Started (Step by Step Instructions)
Certificate management in Zowe API Mediation Layer
Running on localhost
Zowe runtime on z/OS
API Mediation Layer routing
API Mediation Layer routing
Terminology
APIML Basic Routing (using Service ID and version)
Implementation Details
Basic Routing (using only the service ID)
Enabling PassTicket creation for API Services that Accept PassTickets
Enabling PassTicket creation for API Services that Accept PassTickets
Overview
Outline for enabling PassTicket support
Security configuration that allows the Zowe API Gateway to generate PassTickets for an API service
ACF2
Top Secret
RACF
API services that support PassTickets
API Services that register dynamically with API ML that provide authentication information
API Services that register dynamically with API ML but do not provide metadata
API services that are defined using a static YAML definition
Adding YAML configuration to API services that register dynamically with API ML
Custom Metadata
Custom Metadata
API Versioning
API Versioning
Introduction
Versioning
REST
Data Model
Service and instance
API Versioning
Implement a new SAF IDT provider
Implement a new SAF IDT provider
How to create a SAF IDT provider
How to integrate your extension with API ML
How to use the SAF IDT provider
How to use an existing SAF IDT provider
Using the Caching Service
Using the Caching Service
Architecture
Storage methods
VSAM
Redis
Infinispan
InMemory
How to start the service
Methods to use the Caching service API
Configuration properties
Authentication
Direct calls
Routed calls through API Gateway
Using VSAM as a storage solution through the Caching service
Using VSAM as a storage solution through the Caching service
Understanding VSAM
VSAM configuration
VSAM performance
Using Redis as a storage solution through the Caching service
Using Redis as a storage solution through the Caching service
Understanding Redis
Redis replica instances
Redis Sentinel
Redis SSL/TLS
Redis and Lettuce
Redis configuration
Overview
Overview
How Zowe Application Framework works
Tutorials
Samples
Sample Iframe App
Sample Angular App
Sample React App
User Browser Workshop Starter App
Plug-ins definition and structure
Plug-ins definition and structure
pluginDefinition.json
Application Plugin filesystem structure
Root files and directories
Dev and source content
Runtime content
Default user configuration
App-to-App Communication
Documentation
Location of Plugin files
pluginsDir directory
Application Dataservices
Application Configuration Data
Building plugin apps
Building plugin apps
Building web content
Building app server content
Building zss server content
Tagging plugin files on z/OS
Building Javascript content (*.js files)
Installing
Packaging
Installing Plugins
Installing Plugins
By filesystem
Adding/Installing
Removing
Upgrading
Modifying without server restart (Exercise to the reader)
By REST API
Plugin management during development
Embedding plugins
Embedding plugins
How to interact with embedded plugin
How to destroy embedded plugin
How to style a container for the embedded plugin
Applications that use embedding
Dataservices
Dataservices
Defining dataservices
Schema
Defining Java dataservices
Prerequisites
Defining Java dataservices
Defining Java Application Server libraries
Java dataservice logging
Java dataservice limitations
Using dataservices with RBAC
Dataservice APIs
Router-based dataservices
ZSS based dataservices
Documenting dataservices
Authentication API
Authentication API
Handlers
Handler installation
Handler configuration
Handler context
Handler capabilities
Examples
High availability (HA)
REST API
Check status
Authenticate
User not authenticated or not authorized
Not authenticated
Not authorized
Refresh status
Logout
Password changes
Internationalizing applications
Internationalizing applications
Internationalizing Angular applications
Internationalizing React applications
Internationalizing application desktop titles
Zowe Desktop and window management
Zowe Desktop and window management
Loading and presenting application plug-ins
Plug-in management
Application management
Windows and Viewports
Viewport Manager
Injection Manager
Plug-in definition
Logger
Launch Metadata
Viewport Events
Window Events
Window Actions
Framework API examples
Configuration Dataservice
Configuration Dataservice
Resource Scope
REST API
REST query parameters
REST HTTP methods
Administrative access and group
Application API
Internal and bootstrapping
Packaging Defaults
Plug-in definition
Aggregation policies
Examples
URI Broker
URI Broker
Accessing the URI Broker
Natively:
In an iframe:
Functions
Accessing an application plug-in's dataservices
Accessing application plug-in's configuration resources
Accessing static content
Accessing the application plug-in's root
Server queries
Application-to-application communication
Application-to-application communication
Why use application-to-application communication?
Actions
Action target modes
Action types
Loading actions
App2App via URL
Dynamically
Saved on system
Recognizers
Recognition clauses
Loading Recognizers at runtime
Recognizer example
Dispatcher
Registry
Pulling it all together in an example
Configuring IFrame communication
Configuring IFrame communication
Error reporting UI
Error reporting UI
ZluxPopupManagerService
ZluxErrorSeverity
ErrorReportStruct
Implementation
Declaration
Usage
HTML
Logging utility
Logging utility
Logging objects
Logger IDs
Accessing logger objects
Logger
Component logger
Logger API
Component Logger API
Log Levels
Logging verbosity
Configuring logging verbosity
Using log message IDs
Message ID logging examples
Using Conda to make and manage packages of Application Framework Plugins
Using Conda to make and manage packages of Application Framework Plugins
Initial Conda setup
Managing Conda channels
Searching for packages
Using Conda with Zowe
Setting environment variables temporarily:
Setting environment variables persistently
Installing a Zowe plugin
Zowe plugin configuration
Zowe package structure
Building Conda packages for Zowe
Defining package properties
Creating build step
Lifecycle scripts
Adding configuration to Conda packages
Extending Zowe Explorer
Extending Zowe Explorer
Developing for Zowe SDKs
Developing for Zowe SDKs
Zowe Conformance Program
Zowe Conformance Program
Introduction
How to participate
How to suggest updates to the Zowe conformance program
Troubleshooting
Troubleshooting
Known problems and solutions
Collecting data for Zowe problems
Verifying a Zowe release's integrity
Understanding the Zowe release
Understanding the Zowe release
Understanding the Zowe release
Zowe releases
Patch
Minor release
Major release
Check the Zowe release number
Verify Zowe runtime directory
Verify Zowe runtime directory
Troubleshooting Kubernetes environments
Troubleshooting Kubernetes environments
ISSUE: Deployment and ReplicaSet failed to create pod
ISSUE: Failed to create services
Troubleshooting API ML
Troubleshooting API ML
Enable API ML Debug Mode
Change the Log Level of Individual Code Components
Known Issues
API ML stops accepting connections after z/OS TCP/IP stack is recycled
SEC0002 error when logging in to API Catalog
API ML throws I/O error on GET request and cannot connect to other services
Certificate error when using both an external certificate and Single Sign-On to deploy Zowe
Browser unable to connect due to a CIPHER error
API Components unable to handshake
Java z/OS components of Zowe unable to read certificates from keyring
Error Message Codes
Error Message Codes
API mediation utility messages
ZWEAM000I
API mediation common messages
ZWEAO102E
ZWEAO104W
ZWEAO105W
ZWEAO106W
ZWEAO401E
Common service core messages
ZWEAM100E
ZWEAM101E
ZWEAM102E
ZWEAM103E
ZWEAM104E
ZWEAM400E
ZWEAM500W
ZWEAM501W
ZWEAM502E
ZWEAM503E
ZWEAM504E
ZWEAM505E
ZWEAM506E
ZWEAM507E
ZWEAM508E
ZWEAM509E
ZWEAM510E
ZWEAM511E
ZWEAM600W
ZWEAM700E
ZWEAM701E
Security common messages
ZWEAT100E
ZWEAT103E
ZWEAT403E
ZWEAT409E
ZWEAT410E
ZWEAT411E
ZWEAT412E
ZWEAT413E
ZWEAT414E
ZWEAT415E
ZWEAT416E
ZWEAT601E
ZWEAT602E
ZWEAT603E
ZWEAT604E
Security client messages
ZWEAS100E
ZWEAS101E
ZWEAS103E
ZWEAS104E
ZWEAS105E
ZWEAS120E
ZWEAS121E
ZWEAS123E
ZWEAS130E
ZWEAS131E
ZAAS client messages
ZWEAS100E
ZWEAS120E
ZWEAS121E
ZWEAS122E
ZWEAS170E
ZWEAS400E
ZWEAS401E
ZWEAS404E
ZWEAS417E
ZWEAS130E
ZWEAS500E
ZWEAS501E
ZWEAS502E
ZWEAS503E
Discovery service messages
ZWEAD400E
ZWEAD401E
ZWEAD700W
ZWEAD701E
ZWEAD702W
ZWEAD703E
ZWEAD704E
Gateway service messages
ZWEAG500E
ZWEAG700E
ZWEAG701E
ZWEAG702E
ZWEAG704E
ZWEAG705E
ZWEAG706E
ZWEAG707E
ZWEAG708E
ZWEAG709E
ZWEAG710E
ZWEAG711E
ZWEAG712E
ZWEAG713E
ZWEAG714E
ZWEAG715E
ZWEAG716E
ZWEAG100E
ZWEAG101E
ZWEAG102E
ZWEAG103E
ZWEAG104E
ZWEAG105E
ZWEAG106W
ZWEAG107W
ZWEAG108E
ZWEAG109E
ZWEAG110E
ZWEAG120E
ZWEAG121E
ZWEAS123E
ZWEAG130E
ZWEAG131E
ZWEAG140E
ZWEAG141E
ZWEAG150E
ZWEAG151E
API Catalog messages
ZWEAC100W
ZWEAC101E
ZWEAC102E
ZWEAC103E
ZWEAC104E
ZWEAC700E
ZWEAC701W
ZWEAC702E
ZWEAC703E
ZWEAC704E
ZWEAC705W
ZWEAC706E
ZWEAC707E
ZWEAC708E
ZWEAC709E
Raising a Zowe Application Framework issue on GitHub
Raising a Zowe Application Framework issue on GitHub
Raising a bug report
Raising an enhancement report
ZSS Error Message Codes
ZSS Error Message Codes
ZSS informational messages
ZWES0013I
ZWES0014I
ZWES0035I
ZWES0039I
ZWES0061I
ZWES0063I
ZWES0064I
ZWES1100I
ZWES1101I
ZWES1102I
ZWES1600I
ZWES1601I
ZSS error messages
ZWES1006E
ZWES1034E
ZWES1036E
ZWES1037E
ZWES1065E
ZSS warning messages
ZWES1000W
ZWES1005W
ZWES1012W
ZWES1060W
ZWES1103W
ZWES1201W
ZWES1103W
ZWES1602W
ZWES1603W
ZWES1604W
ZWES1605W
ZWES1606W
Troubleshooting Zowe CLI
Troubleshooting Zowe CLI
Problem
Environment
Before reaching out for support
Resolving the problem
Gathering information to troubleshoot Zowe CLI
Gathering information to troubleshoot Zowe CLI
Identify the currently installed CLI version
Identify the currently installed versions of plug-ins
Environment variables
Log levels
CLI daemon mode
Home directory
Home directory structure
Location of logs
Profile configuration
Node.js and npm
npm configuration
npm log files
z/OSMF troubleshooting
z/OSMF troubleshooting
Alternative methods
Known Zowe CLI issues
Known Zowe CLI issues
EACCESS error when issing npm install command
Command not found message displays when issuing npm install commands
npm install -g Command Fails Due to an EPERM Error
Sudo syntax required to complete some installations
npm install -g command fails due to npm ERR! Cannot read property 'pause' of undefined error
Node.js commands do not respond as expected
Installation fails on Oracle Linux 6
Raising a CLI issue on GitHub
Raising a CLI issue on GitHub
Raising a bug report
Raising an enhancement report
Troubleshooting Zowe Explorer
Troubleshooting Zowe Explorer
Before reaching out for support
Known Zowe Explorer issues
Known Zowe Explorer issues
Data Set Creation Error
Opening Binary Files Error
Raising a Zowe Explorer issue on GitHub
Raising a Zowe Explorer issue on GitHub
Raising a bug report
Submitting a feature request
Troubleshooting Zowe Launcher
Troubleshooting Zowe Launcher
Enable Zowe Launcher Debug Mode
Error Message Codes
Error Message Codes
Zowe Launcher informational messages
ZWEL0001I
ZWEL0002I
ZWEL0003I
ZWEL0004I
ZWEL0005I
Zowe Launcher error messages
ZWEL0030E
ZWEL0038E
ZWEL0040E
Contribute to Zowe
Contribute to Zowe
Report bugs and enhancements
Fix issues
Send a Pull Request
Report security issues
Contribution guidelines
Promote Zowe
Helpful resources
Code categories
Code categories
Programming languages
Component-specific guidelines and tutorials
General code style guidelines
General code style guidelines
Whitespaces
Naming Conventions
Functions and methods
Variables
Pull requests guidelines
Pull requests guidelines
Documentation Guidelines
Documentation Guidelines
Contributing to external documentation
Component Categories
Server Core
Server Security
Microservices
Zowe Desktop Applications
Web Framework
CLI Plugins
Core CLI Imperative CLI Framework
Programming Languages
Typescript
Java
C
Introduction
Introduction
Clear
Consistent
Smart
Colors
Colors
Color palette
Light theme
Dark theme
Color contrast | WCAG AA standards
Typography
Typography
Typeface
Font weight
Body copy
Line scale
Line-height
Embed font
Import font
Specify in CSS
Grid
Grid
12 column grid
Gutters
Columns
Margins
Iconography
Iconography
Application icon
Application icon
General rules
Shape, size, and composition
Colors and shades
Verify the contrast
Use the Zowe palette
Layer Shadows
Use the long shadow for consistency.
Contributing to Zowe Documentation
Contributing to Zowe Documentation
Before You Get Started
Getting started checklist
The Zowe documentation repository
Sending a GitHub Pull Request
Opening an issue for Zowe documentation
Documentation style guide
Headings and titles
Technical elements
Tone
Word usage
Abbreviations
Structure and format
Word usage
Zowe CLI command reference guide
Zowe CLI command reference guide
Zowe API reference
Zowe API reference
zwe certificate keyring-jcl clean
zwe certificate keyring-jcl clean
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe certificate keyring-jcl connect
zwe certificate keyring-jcl connect
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe certificate keyring-jcl generate
zwe certificate keyring-jcl generate
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe certificate keyring-jcl import-ds
zwe certificate keyring-jcl import-ds
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe certificate keyring-jcl
zwe certificate keyring-jcl
Sub-commands
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe certificate pkcs12 create ca
zwe certificate pkcs12 create ca
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe certificate pkcs12 create cert
zwe certificate pkcs12 create cert
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe certificate pkcs12 create
zwe certificate pkcs12 create
Sub-commands
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe certificate pkcs12 export
zwe certificate pkcs12 export
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe certificate pkcs12 import
zwe certificate pkcs12 import
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe certificate pkcs12 lock
zwe certificate pkcs12 lock
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe certificate pkcs12 trust-service
zwe certificate pkcs12 trust-service
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe certificate pkcs12
zwe certificate pkcs12
Sub-commands
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe certificate verify-service
zwe certificate verify-service
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe certificate
zwe certificate
Sub-commands
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe components install extract
zwe components install extract
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe components install process-hook
zwe components install process-hook
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe components install
zwe components install
Sub-commands
Description
Examples
Parameters only for this command
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe components disable
zwe components disable
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe components enable
zwe components enable
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe components
zwe components
Sub-commands
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe init apfauth
zwe init apfauth
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe init certificate
zwe init certificate
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe init mvs
zwe init mvs
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe init security
zwe init security
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe init stc
zwe init stc
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe init vsam
zwe init vsam
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe init
zwe init
Sub-commands
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe internal config get
zwe internal config get
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe internal config set
zwe internal config set
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe internal config
zwe internal config
Sub-commands
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe internal container cleanup
zwe internal container cleanup
Description
Inherited from parent command
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe internal container init
zwe internal container init
Description
Inherited from parent command
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe internal container prestop
zwe internal container prestop
Description
Inherited from parent command
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe internal container
zwe internal container
Sub-commands
Description
Inherited from parent command
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe internal start component
zwe internal start component
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe internal start prepare
zwe internal start prepare
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe internal start
zwe internal start
Sub-commands
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe internal get-launch-components
zwe internal get-launch-components
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe internal
zwe internal
Sub-commands
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe migrate for kubernetes
zwe migrate for kubernetes
Description
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe migrate for
zwe migrate for
Sub-commands
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe migrate
zwe migrate
Sub-commands
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe sample sub deep
zwe sample sub deep
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe sample sub second
zwe sample sub second
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe sample sub
zwe sample sub
Sub-commands
Description
Inherited from parent command
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe sample test
zwe sample test
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe sample
zwe sample
Sub-commands
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe support verify-fingerprints
zwe support verify-fingerprints
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe support
zwe support
Sub-commands
Description
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe install
zwe install
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe start
zwe start
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe stop
zwe stop
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe version
zwe version
Description
Examples
Parameters
Inherited from parent command
Errors
Inherited from parent command
zwe
zwe
Sub-commands
Description
Examples
Parameters
Errors
Zowe YAML configuration file reference
Zowe YAML configuration file reference
High-level overview of YAML configuration file
Extract sharable configuration out of zowe.yaml
Configuration override
YAML configurations - certificate
YAML configurations - zowe
YAML configurations - java
YAML configurations - node
YAML configurations - zOSMF
YAML configurations - components
YAML configurations - haInstances
Auto-generated environment variables
Server component manifest file reference
Server component manifest file reference
Bill of Materials
Bill of Materials
Zowe overview
Version: v2.0.x LTS
Zowe™ is an open source software framework that allows mainframe development and operation teams to
securely manage, control, script, and develop on the mainframe. It was created to host technologies that
benefit the IBM Z platform for all members of the Z community, including Integrated Software Vendors
(ISVs), System Integrators, and z/OS consumers. Like Mac or Windows, Zowe 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. Zowe is a project within the Open Mainframe
Project.
Component overview
Zowe consists of the following components:
Zowe Application Framework
API Mediation Layer
Zowe CLI
Zowe Explorer
Zowe Client Software Development Kits SDKs
Zowe Launcher
Zowe Mobile - Incubator
ZEBRA (Zowe Embedded Browser for RMF/SMF and APIs) - Incubator
Zowe Application Framework
A web user interface (UI) that provides a virtual desktop containing a number of apps allowing access to
z/OS function. Base Zowe includes apps for traditional access such as a 3270 terminal and a VT Terminal, as
well as an editor and explorers for working with JES, MVS Data Sets and Unix System Services.
📖 Learn more
The Zowe Application Framework modernizes and simplifies working on the mainframe. With the Zowe
Application Framework, you can create applications to suit your specific needs. The Zowe Application
Framework contains a web UI that has the following features:
The web UI works with the underlying REST APIs for data, jobs, and subsystem, but presents the
information in a full screen mode as compared to the command line interface.
The web UI makes use of leading-edge web presentation technology and is also extensible through
web UI plug-ins to capture and present a wide variety of information.
The web UI facilitates common z/OS developer or system programmer tasks by providing an editor
for common text-based files like REXX or JCL along with general purpose data set actions for both
Unix System Services (USS) and Partitioned Data Sets (PDS) plus Job Entry System (JES) logs.
The Zowe Application Framework consists of the following components:
Zowe Desktop
The desktop, accessed through a browser. The desktop contains a number of applications,
including a TN3270 emulator for traditional Telnet or TLS terminal access to z/OS, a VT Termnial for
SSH commands, as well as rich web GUI applications including a JES Explorer for working with jobs
and spool output, a File Editor for working with USS directories and files and MVS data sets and
members. The Zowe desktop is extensible and allows vendors to provide their own applications to
run within the desktop. See Extending the Zowe Desktop. The following screen capture of a Zowe
desktop shows some of its composition as well as the TN3270 app, the JES Explorer, and the File
Editor open and in use.
Components
The API Layer consists of the following key components:
API Gateway
Services that comprise the API ML service ecosystem are located behind a gateway (reverse proxy). All
end users and API client applications interact through the Gateway. Each service is assigned a unique
service ID that is used in the access URL. Based on the service ID, the Gateway forwards incoming API
requests to the appropriate service. Multiple Gateway instances can be started to achieve high-
availability. The Gateway access URL remains unchanged. The Gateway is built using Netflix Zuul and
Spring Boot technologies.
Discovery Service
The Discovery Service is the central repository of active services in the API ML ecosystem. The
Discovery Service continuously collects and aggregates service information and serves as a repository
of active services. When a service is started, it sends its metadata, such as the original URL, assigned
serviceId, and status information to the Discovery Service. Back-end microservices register with this
service either directly or by using a Eureka client. Multiple enablers are available to help with service on-
boarding of various application architectures including plain Java applications and Java applications that
use the Spring Boot framework. The Discovery Service is built on Eureka and Spring Boot technology.
Discovery Service TLS/SSL
HTTPS protocol can be enabled during API ML configuration and is highly recommended. Beyond
encrypting communication, the HTTPS configuration for the Discovery Service enables heightened
security for service registration. Without HTTPS, services provide a username and password to register
in the API ML ecosystem. When using HTTPS, only trusted services that provide HTTPS certificates
signed by a trusted certificate authority can be registered.
API Catalog
The API Catalog is the catalog of published API services and their associated documentation. The
Catalog provides both the REST APIs and a web user interface (UI) to access them. The web UI follows
the industry standard Swagger UI component to visualize API documentation in OpenAPI JSON format
for each service. A service can be implemented by one or more service instances, which provide exactly
the same service for high-availability or scalability.
Catalog Security
Access to the API Catalog can be protected with an Enterprise z/OS Security Manager such as IBM
RACF, ACF2, or Top Secret. Only users who provide proper mainframe credentials can access the
Catalog. Client authentication is implemented through the z/OSMF API.
Caching Service
It provides an API in high-availability mode which offers the possibility to store, retrieve and delete data
associated with keys. The service will be used only by internal Zowe applications and will not be
exposed to the internet.
Metrics Service (Technical Preview)
The Metrics Service provides a web user interface to visualize requests to API Mediation Layer services.
HTTP metrics such as number of requests and error rates are displayed for each API Mediation Layer
service. This service is currently in technical preview and is not ready for production.
Onboarding APIs
Essential to the API Mediation Layer ecosystem is the API services that expose their useful APIs. Use the
following topics to discover more about adding new APIs to the API Mediation Layer and using the API
Catalog:
Onboarding Overview
Onboard an existing Spring Boot REST API service using Zowe API Mediation Layer
Onboard an existing Node.js REST API service using Zowe API Mediation Layer
Using API Catalog
Zowe™ is a collection of components that together form a framework that makes Z-based functionality
accessible across an organization. Zowe functionality includes exposing Z-based components, such as
z/OSMF, as REST APIs. The Zowe framework provides an environment where other components can be
included and exposed to a broader non-Z based audience.
The following diagram illustrates the high-level Zowe architecture.
The diagram shows the default port numbers that are used by Zowe. These are dependent on each instance
of Zowe and are held in the Zowe YAML configuration file.
Zowe components can be categorized by location: server or client. While the client is always an end-user
tool such as a PC, browser, or mobile device, the server components can be further categorized by what
machine they run on.
Zowe server components can be installed and run entirely on z/OS, but a subset of the components can
alternatively run on Linux or z/Linux via Docker. While on z/OS, many of these components run under UNIX
System Services (USS). The components that do not run under USS must remain on z/OS when using
Docker in order to provide connectivity to the mainframe.
Zowe has high availability feature build-in. To enable this feature, you can define haInstances section in
your YAML configuration file.
The diagram above shows that ZWESLSTC has started two Zowe instances running on two separate LPARs
that can be on the same or different sysplexes.
The Sysplex distributor port sharing enables the API Gateway 7554 ports to be shared so that incoming
requests can be routed to either the gateway on LPAR A or LPAR B.
The discovery servers on each LPAR communicate with each other and share their registered instances,
which allows the API gateway on LPAR A to dispatch APIs to components either on its own LPAR, or
alternatively to components on LPAR B. As indicated on the diagram, each component has two input
lines: one from the API gateway on its own LPAR and one from the gateway on the other LPAR. When
one of the LPARs goes down, the other LPAR remains operating within the sysplex providing high
availability to clients that connect through the shared port irrespective of which Zowe instance is
serving the API requests.
The zowe.yaml file can be configured to start Zowe instances on more than two LPARS, and also to start
more than one Zowe instance on a single LPAR, thereby providing a grid cluster of Zowe components that
can meet availability and scalability requirements.
The configuration entries of each LPAR in the zowe.yaml file control which components are started. This
configuration mechanism makes it possible to start just the desktop and API Mediation Layer on the first
LPAR, and start all of the Zowe components on the second LPAR. Because the desktop on the first LPAR is
available to the gateway of the second LPAR, all desktop traffic is routed there.
The caching services for each Zowe instance, whether on the same LPAR, or distributed across the sysplex,
are connected to each other by the same shared VSAM data set. This arrangement allows state sharing so
that each instance behaves similarly to the user irrespective of where their request is routed.
For simplification of the diagram above, the Jobs and Files API servers are not shown as being started. If the
user defines Jobs and Files API servers to be started in the zowe.yaml configuration file, these servers
behave the same as the servers illustrated. In other words, these services register to their API discovery
server which then communicates with other discovery servers on other Zowe instances on either the same
or other LPARs. The API traffic received by any API gateway on any Zowe instance is routed to any of the
Jobs or Files API components that are available.
To learn more about Zowe with high availability enablement, see Configuring Sysplex for high availability.
App Server
The App Server is a node.js server that is responsible for the Zowe Application Framework. This server
provides the Zowe desktop, which is accessible through a web browser via port 7556. The Zowe desktop
includes a number of applications that run inside the Application Framework such as a 3270 emulator and a
File Editor.
ZSS
The Zowe desktop delegates a number of its services to the ZSS server which it accesses through the http
port 7557. ZSS is written in C and has native calls to z/OS to provide its services. ZSS logs write to STDOUT
and STDERR for capture into job logs, but also as a file into <zowe.logDirectory>/zssServer-yyyy-
mm-dd-hh-mm.log .
API Gateway
The API Gateway is a proxy server that routes requests from clients on its northbound edge, such as web
browsers or the Zowe command line interface, to servers on its southbound edge that are able to provide
data to serve the request. The API Gateway is also responsible for generating the authentication token used
to provide single sign-on (SSO) functionality. The API Gateway homepage is
https://<ZOWE_HOST_IP>:7554 . Following authentication, this URL enables users to navigate to the
API Catalog.
API Catalog
The API Catalog provides a list of the API services that have registered themselves as catalog tiles. These
tiles make it possible to view the available APIs from Zowe's southbound servers, as well as test REST API
calls.
API Discovery
The API Discovery server acts as the registration service broker between the API Gateway and its
southbound servers. This server can be accessed through the URL https://<ZOWE_HOST_IP>:7552
making it possible to view a list of registered API services on the API discovery homepage.
Caching service
The Caching service aims to provide an API which offers the possibility to store, retrieve, and delete data
associated with keys. The service is used only by internal Zowe applications and is not exposed to the
internet. The Caching service URL is https://<ZOWE_HOST_IP>:7555 . For more information about the
Caching service, see the Caching service documentation.
Desktop Apps
Zowe provides a number of rich GUI web applications for working with z/OS. Such applications include the
Editor for files and datasets, the JES Explorer for jobs, and the IP Explorer for the TCPIP stack. You can
access them through the Zowe desktop.
Check out the following FAQs to learn more about the purpose and function of Zowe™.
Zowe FAQ
Zowe CLI FAQ
Zowe Explorer FAQ
Zowe FAQ
What is Zowe?
📖 Click to hide answer
Zowe is an open source project within the Open Mainframe Project that is part of The Linux Foundation.
The Zowe project provides modern software interfaces on IBM z/OS to address the needs of a variety of
modern users. These interfaces include a new web graphical user interface, a script-able command-line
interface, extensions to existing REST APIs, and new REST APIs on z/OS.
What are some examples of how Zowe technology might be used by z/OS products
and applications?
📖 Click to hide answer
The Zowe Desktop (web user interface) can be used in many ways, such as to provide custom graphical
dashboards that monitor data for z/OS products and applications.
Zowe CLI can also be used in many ways, such as for simple job submission, data set manipulation, or
for writing complex scripts for use in mainframe-based DevOps pipelines.
The increased capabilities of RESTful APIs on z/OS allows APIs to be used in programmable ways to
interact with z/OS services.
What is the best way to get started with Zowe?
📖 Click to hide answer
Zowe provides a convenience build that includes the components released-to-date, as well as IP being
considered for contribution, in an easy to install package on Zowe.org. The convenience build can be
easily installed and the Zowe capabilities seen in action.
To install the complete Zowe solution, see Installing Zowe.
To get up and running with the Zowe CLI component quickly, see Zowe CLI quick start.
Scripting, for use in Add a script to your Jenkins (or other automation tool) pipeline to
automated pipelines move artifacts from a mainframe development system to a test
system.
Breaking changes
Zowe installation
You must pass -ppx when you unpax the Zowe convenience build to preserve extended file
attributes.
All utility scripts, like zowe-install.sh , zowe-install-xmem.sh , zowe-install-proc.sh ,
validate-directory-is-accessible.sh , are removed and migrated to the new zwe server
command format.
If you rely on some of the scripts, find the alternative new zwe command or shell library functions.
ZWESVSTC is removed and ZWESLSTC will replace it to start Zowe.
In V2, you use the P command to terminate Zowe instead of the C cancel command.
Zowe now allows fine-grained customization of log, workspace, and configuration directories. By
default, these directories remain grouped under an instance directory (same as Zowe v1).
Environment variables are reorganized to better describe itself. All zowe.yaml configuration entries
will be automatically converted to environment variables for easy consumption. Check with the
community what the new alternative variable names are.
During Zowe configuration, redundant ip fields will be removed or consolidated in favor of
hostname or domains .
Component or extension manifest is mandatory. You must use the zwe components install
command to install the extension.
API Mediation Layer
Removed the support for the old path pattern (#1770). This includes the changes to the endpoints used
in ZAAS client. If your application uses ZAAS client, please verify whether the configuration properties
use the new path pattern ( /gateway/api/v1 instead of /api/v1/gateway ).
Removed the support for different authentication schemas for different instances of service (#1051).
Zowe Application Framework
Some configuration, such as port and IP values, are different by default in V2 but can be reconfigured to old
values. However, some application framework extensions may not work in V2 without enhancements.
zLUX App Manager
Due to new library versions, native apps such as Angular and React apps written for Zowe v1 may not
work in Zowe v2. Rebuilding the apps with the same versions and the latest webpack build scripts is
recommended.
zLUX Server Framework
The list of properties sent back from the /server/environment has changed to reflect the different
environment values present in Zowe v2
Adjusted the server to respect ZSS's new cookie format in which the port or HA instance ID is a
suffix of the ZSS cookie. This means that the server may not work properly when paired with a v1
ZSS and works best with v2 ZSS.
zLUX Editor
The app now uses angular 12, making it compatible with Zowe v2 desktop and incompatible with v1
desktop.
Basic VT Terminal Emulator
Upgrade to Angular 12, Typescript 4, and Corejs 3 to match Desktop libraries in Zowe v2. This app may
no longer work in the Zowe v1 Desktop, and v2 should be used instead.
Basic TN3270 Display Emulator
Upgrade to Angular 12, Typescript 4, and Corejs 3 to match Desktop libraries in Zowe v2. This app may
no longer work in the Zowe v1 Desktop, and v2 should be used instead.
Sample angular app
The app now uses angular 12, making it compatible with Zowe v2 desktop and incompatible with v1
desktop.
Zowe CLI
Breaking changes for Zowe CLI end users:
zowe config no longer manages app settings (Imperative and CLI)
fail-on-error default changed to true for zowe plugins validate (Imperative and CLI)
Default Imperative and CLI log level changed from DEBUG to WARN (Imperative and CLI), which
potentially changes troubleshooting steps for providing information to support.
Breaking changes that could prevent a V1 plug-in or SDK from working in V2
CLI package should be removed as a plug-in peer dep (Imperative)
AbstractRestClient.mDecode defaults to true so any plug-in with custom RestClient
implementation that adds gzip decompression may break
The return value for PluginManagementFacility.requirePluginModuleCallback
changed. Application and plug-in developers requiring a module from a plug-in's relative path
using the requirePluginModuleCallback function no longer need to provide the plug-in
name in a separate variable this.pluginNmForUseInCallback = pluginName before
binding the class this.requirePluginModuleCallback.bind(this) . Instead they can call
this.requirePluginModuleCallback(pluginName) .
Previously in V1:
In V2:
Breaking changes for Zowe CLI and Imperative plug-in developers
These changes only impact early adopters of @next as these are breaking changes made during the
technical preview validation phase. Thanks to the community for the feedback.
tokenType and tokenValue were combined into authToken , which later was reverted
(Imperative and CLI)
Options in zowe config group are renamed: --user is renamed to --user-config , and -
-global to --global-config .
Config.set no longer coerces string values to other types unless parseString = true
which might impact the SDK instead of CLI plug-ins.
Bug fixes
Zowe API Mediation Layer
Caching service logging (#2222) (5ff64d9), closes #2222
Add x509 Authentication information to the API Documentation of the API Gateway (#2142) (072ad23),
closes #2142
Authorization provider set empty as default (#2107) (aa77926), closes #2107
Update URL of the API Catalog to work with the V2 version of the Zowe Desktop (6f4257a), closes
#2022
Zowe Application Framework
zLUX Server Framework
When paired with the Zowe server infrastructure, the app-server will now automatically register and de-
register plug-ins at startup depending on each plug-in's component enabled status.
ZSS Package
Do not use "tee" when log destination is /dev/null
Cookie name now has a suffix which includes the port or if in an HA instance, the HA ID.
Watch the series of Zowe office hours videos to learn more about the new features and enhancements in
Zowe Version 2 release.
Installing
The following topics describe the Zowe CLI system requirements and the various methods to use to install
Zowe CLI.
Software Requirements
Before you install Zowe CLI, download and install Node.js and npm. Use an LTS version of Node.js that is
compatible with your version of npm. For a list of compatible versions, see Node.js Previous Releases.
(Linux only): On graphical Linux, install gnome-keyring and libsecret on your computer before you
install the Secure Credential Store. On headless Linux, follow the procedure documented in the SCS plug-in
Readme.
Installing Zowe CLI core from public npm
Issue the following command to install the core CLI.
Installing CLI plug-ins
The command installs most open-source plug-ins, but the IBM Db2 plug-in requires additional configuration
to install.
For more information, see Installing plug-ins.
Team profiles
Zowe CLI V2-LTS now supports team profiles. The process of setting up team profiles is simple and can be
rolled out easily accross your organization. We highly recommend that you configure team profiles to
support your Zowe CLI implementation. For more information, see Using team profiles.
Using profiles
Zowe profiles let you store configuration details such as username, password, host, and port for a
mainframe system. Switch between profiles to quickly target different subsystems and avoid typing
connection details on every command.
Profile types
Most command groups require a zosmf-profile , but some plug-ins add their own profile types. For
example, the CICS plug-in has a cics-profile . The profile type that a command requires is defined in
the PROFILE OPTIONS section of the help response.
Tip: The first zosmf profile that you create becomes your default profile. If you don't specify any options
on a command, the default profile is used. Issue zowe profiles -h to learn about listing profiles and
setting defaults.
Creating zosmf profiles
Notes:
The port defaults to 443 if you omit the --port option. Specify a different port if your host system
does not use port 443.
If z/OSMF is configured for high availability in Sysplex, create the CLI zosmf-profile with DVIPA
address/hostname to ensure availability of REST services. For more information, see Configuring
z/OSMF high availability in Sysplex.
Using zosmf profiles
For detailed information about issuing commands, using profiles, and more, see Using CLI.
Writing scripts
You can write Zowe CLI scripts to streamline your daily development processes or conduct mainframe
actions from an off-platform automation tool such as Jenkins or TravisCI.
Example:
You want to delete a list of temporary datasets. Use Zowe CLI to download the list, loop through the list, and
delete each data set using the zowe zos-files delete command.
For more information, see Writing scripts.
Next steps
You successfully installed Zowe CLI, issued your first commands, and wrote a simple script! Next, you might
want to perform the following tasks:
Issue the zowe --help command to explore the product functionality, or review the online web help.
Learn how to configure Zowe CLI run Zowe CLI in daemon mode. Daemon mode significantly improves
the performance of Zowe CLI commands by running Zowe CLI as a persistent background process.
Learn about configuring environment variables to store configuration options.
Learn about integrating with API Mediation Layer.
Learn about how to write scripts and integrate them with automation server, such as Jenkins.
See what plug-ins are available for the CLI.
Learn about developing for the CLI (contributing to core and developing plug-ins).
Migrating Zowe server component from V1 to
Version: v2.0.x LTS
V2
This doc guides you through migrating an existing Zowe server component from version 1 to version 2.
To make Zowe server component compatible with Zowe version 2, you must update the following
configurations.
Component manifest
Lifecycle scripts
Environment variables
Packaging one component deliverable for both Zowe v1 and v2
Component manifest
In Zowe v2, the component must define a manifest file and package it into the extension's root directory.
This manifest file is used by Zowe to understand how this component should be installed, configured, and
started. For detailed information of this file, see Server Component Manifest File Reference.
Lifecycle scripts
In Zowe v2, lifecycle scripts can be located anywhere in your component directory. However, you must
explicitly define them in the commands section of the component manifest file.
Environment variables
Zowe v1 and v2 environment variables are not exact match. There are the following differences:
Some variables in Zowe v1 are removed in v2.
Some are separated into two or more variables.
Zowe v2 defines more configuration options than v1.
Review the following table for a detailed mapping of Zowe v1 and v2 variables.
Zowe v1 Variable Zowe v2 YAML Confi
APIML_ALLOW_ENCODED_SLASHES components.gateway.apiml.service.al
APIML_CORS_ENABLED components.gateway.apiml.service.co
APIML_ENABLE_SSO Removed in v2
APIML_GATEWAY_EXTERNAL_MAPPER components.gateway.apiml.security.x
APIML_GATEWAY_TIMEOUT_MILLIS components.gateway.apiml.gateway.ti
APIML_MAX_CONNECTIONS_PER_ROUTE components.gateway.server.maxConnec
APIML_MAX_TOTAL_CONNECTIONS components.gateway.server.maxTotalC
APIML_PREFER_IP_ADDRESS Removed in v2
APIML_SECURITY_AUTH_PROVIDER components.gateway.apiml.security.a
APIML_SECURITY_AUTHORIZATION_ENDPOINT_URL components.gateway.apiml.security.a
APIML_SECURITY_X509_ENABLED components.gateway.apiml.security.x
APIML_SECURITY_ZOSMF_APPLID zOSMF.applId
CATALOG_PORT components.api-catalog.port
Zowe v1 Variable Zowe v2 YAML Confi
DISCOVERY_PORT components.discovery.port
EXTERNAL_CERTIFICATE_AUTHORITIES zowe.certificate.pem.certificateAut
EXTERNAL_COMPONENTS Removed in v2
FILES_API_PORT components.files-api.port
GATEWAY_PORT components.gateway.port
INSTANCE_DIR Removed in v2
JAVA_HOME java.home
JES_EXPLORER_UI_PORT Removed in v2
JOBS_API_PORT components.jobs-api.port
KEY_ALIAS zowe.certificate.keystore.alias
KEYSTORE_CERTIFICATE_AUTHORITY zowe.certificate.pem.certificateAut
KEYSTORE_CERTIFICATE zowe.certificate.pem.certificate
KEYSTORE_DIRECTORY zowe.setup.certificate.pkcs12.direc
Zowe v1 Variable Zowe v2 YAML Confi
KEYSTORE_KEY zowe.certificate.pem.key
zowe.certificate.keystore.password
KEYSTORE_PASSWORD
zowe.certificate.truststore.passwor
KEYSTORE_TYPE
zowe.certificate.keystore.type and
zowe.certificate.truststore.type
KEYSTORE zowe.certificate.keystore.file
LAUNCH_COMPONENT_GROUPS Removed in v2
MVS_EXPLORER_UI_PORT Removed in v2
PKCS11_TOKEN_LABEL Removed in v2
PKCS11_TOKEN_NAME Removed in v2
ROOT_DIR zowe.runtimeDirectory
SKIP_NODE Removed in v2
STATIC_DEF_CONFIG_DIR -
TRUSTSTORE zowe.certificate.truststore.file
USS_EXPLORER_UI_PORT Removed in v2
Zowe v1 Variable Zowe v2 YAML Confi
ZOSMF_HOST zOSMF.host
ZOSMF_PORT zOSMF.port
ZOWE_APIM_NONSTRICT_VERIFY_CERTIFICATES zowe.verifyCertificates
ZOWE_APIM_VERIFY_CERTIFICATES zowe.verifyCertificates
ZOWE_EXPLORER_FRAME_ANCESTORS Removed in v2
ZOWE_INSTANCE Removed in v2
ZOWE_IP_ADDRESS Removed in v2
ZOWE_PREFIX zowe.job.prefix
ZOWE_ZLUX_SECURITY_TYPE -
ZOWE_ZLUX_SERVER_HTTPS_PORT -
Zowe v1 Variable Zowe v2 YAML Confi
ZOWE_ZLUX_SSH_PORT -
ZOWE_ZLUX_TELNET_PORT -
ZOWE_ZSS_SERVER_PORT -
ZOWE_ZSS_SERVER_TLS -
ZOWE_ZSS_XMEM_SERVER_NAME -
ZWE_CACHING_EVICTION_STRATEGY components.caching-service.storage.
ZWE_CACHING_SERVICE_PERSISTENT components.caching-service.storage.
ZWE_CACHING_SERVICE_PORT components.caching-service.port
ZWE_CACHING_SERVICE_VSAM_DATASET components.caching-service.storage.
ZWE_CACHING_STORAGE_SIZE components.caching-service.storage.
ZWE_DISCOVERY_SERVICES_LIST -
ZWE_DISCOVERY_SERVICES_REPLICAS components.discovery.replicas
ZWE_EXTENSION_DIR zowe.extensionDirectory
ZWE_EXTERNAL_HOSTS zowe.externalDomains
ZWE_EXTERNAL_PORT zowe.externalPort
Zowe v1 Variable Zowe v2 YAML Confi
ZWE_LAUNCH_COMPONENTS
Combined information of components.<comp
true
ZWE_LOG_LEVEL_ZWELS zowe.launchScript.logLevel
ZWEAD_EXTERNAL_STATIC_DEF_DIRECTORIES Removed in v2
ZWES_ZIS_LOADLIB zowe.setup.dataset.authLoadlib
ZWES_ZIS_PARMLIB_MEMBER -
ZWES_ZIS_PARMLIB zowe.setup.dataset.parmlib
ZWES_ZIS_PLUGINLIB zowe.setup.dataset.authPluginLib
In Zowe v2, we recommend you to define extension configurations in the manifest.yaml configs
section and use ${ZWE_configs_*} variables to access them. This feature does not exist in Zowe
v1. So if you use ${ZWE_configs_*} variables, it should fall back to the matching environment
variable used in v1.
In Zowe v2, we recommend you to define a commands.install lifecycle script to handle extension
installation. This lifecycle script will be executed by zwe components install . In v1, this also exists
if you use the zowe-install-components.sh utility to install a Zowe extension. So if you want one
extension package to work for both Zowe v1 and v2, this install lifecycle script should also be
compatible with both v1 and v2.
A new v2 variable ${ZWE_VERSION} may help you determine the Zowe version number. This variable
does not exist in Zowe v1. By knowing the Zowe version, the lifecycle scripts can implement logic to
source v1 or v2 dedicated scripts to avoid handling fallbacks in the same script. This could help avoid
complicated compatibility version checks, and it could be easier in the future if you decide to drop Zowe
v1.
Zowe learning resources
Version: v2.0.x LTS
Learn more about Zowe from these blog posts, videos, and other resources.
Blogs
Zowe blogs on Medium
Zowe blogs on Open Mainframe Project website
Want to contribute a blog? Details for how to contribute to the Zowe blogs on Medium site are at Zowe Blog
Guidelines.
Videos
As well as Zowe videos owned and managed by the community, there are a number of external youtubers
who host Zowe related content.
Zowe Demos playlist from Bill Pereira
Mainframe Bytes channel from Jessielaine Punongbayan
Webinars
Find out what's happening with Zowe in the Zowe Quarterly Update Webinar Series.
Zowe Quarterly Update Webinar: October 2021
Zowe Quarterly Update Webinar: July 2021
Zowe Quarterly Update Webinar: April 2021
Zowe Quarterly Update Webinar: January 2021
Zowe Quarterly Update Webinar: October 2020
The OMP Youtube channel also offers other webinars about Zowe.
Treat Yourself to a Guided, Comprehensive Tour of Zowe Desktop Applications
Zowe Webinar Feb. 22, 2019
Open Mainframe Project Webinar: Zowe Virtual Hackathon
Community
Join us on Slack
Slack invite link
Introduction to Zowe Slack channels
Learn more about the community
Zowe community GitHub repo
Find out information about Zowe sub-projects, GitHub repos, mailing lists, community meeting minutes,
contribution guidelines, and so on.
Connect with the community through meetings
Zowe meeting calendar
You can join one of the Zowe meetings to get latest Zowe updates and get involved in different squads
and initiatives.
Training
Courses
Zowe Fundamentals
Interskill Learning offers a free training course that introduces the components that comprise Zowe and
the benefits of using Zowe and how its capabilities can be extended.
Trials
Zowe trial
The Zowe trial hosted by IBM is a fully configured z/OS environment with Zowe preinstalled and set up
along with a set of integrated easy-to-follow tutorials that walk you through the basics of Zowe and
gives you hands-on experience of extending Zowe. This no-charge trial is available in two hours for
three days.
Get started with the Zowe Web UI
This online tutorial hosted by IBM guides you to add new apps to the Zowe Web UI. It provides a public
hosted Zowe instance that allows you to perform the steps in a z/OS environment.
Overview
Version: v2.0.x LTS
When you install Zowe™ on z/OS, you install the following two parts:
. The Zowe runtime, which consists of a number of components including:
Zowe Application Framework
Zowe API Mediation Layer
Z Secure Services (ZSS)
. The Zowe Cross Memory Server, also known as ZIS, which is an APF authorized server application that
provides privileged services to Zowe in a secure manner.
Zowe provides the ability for some of its unix components to be run not under USS, but as a container, see
Installing Zowe Containers.
If you want to configure Zowe for high availability, see Installing Zowe z/OS Components with High
Availability for instructions.
The following information is required during the Zowe installation process. Software and hardware
prerequisites are covered in the next section.
The zFS directory where you will install the Zowe runtime files and folders. For more details of setting up
and configuring the UNIX Systems Services (USS) environment, see UNIX System Services
considerations for Zowe.
A HLQ that the installation can create a load library and samplib containing load modules and JCL
samples required to run Zowe.
Multiple instances of Zowe can be started from the same Zowe z/OS runtime. Each launch of Zowe has
its own configuration, usually mentioned as Zowe YAML configuration file or zowe.yaml, and zFS
directory that is known as a workspace directory.
For Zowe in a high availability configuration, there will be only one workspace directory which must be
created on a shared file system (zFS directory) where all LPARs in a Sysplex can access.
(If not using containerization) Zowe optionally uses a zFS directory to contain its northbound certificate
keys as well as a truststore for its southbound keys if the administrator chooses to use PKCS#12
keystore for certificate storage. Northbound keys are one presented to clients of the Zowe desktop or
Zowe API Gateway, and southbound keys are for servers that the Zowe API gateway connects to. The
certificate directory is not part of the Zowe runtime so that it can be shared between multiple Zowe
runtimes and have its permissions secured independently.
Zowe has the following started tasks:
ZWESISTC is a cross memory server that the Zowe desktop uses to perform APF-authorized
code. More details on the cross memory server are described in Configuring the Zowe cross
memory server.
ZWESASTC is a cross memory Auxiliary server that is used under some situations in support of a
Zowe extension. Auxiliary server is started, controlled, and stopped by the cross memory server, so
no need to start it manually. More details are described in Zowe auxiliary service
ZWESLSTC brings up other parts of the Zowe runtime on z/OS as requested. This may include
Desktop, API mediation layer, ZSS, and more, but when using containerization likely only ZSS will
be used here. It can be used for a single Zowe instance deployment and can also be used for Zowe
high availability deployment in Sysplex. It brings up and stops Zowe instances, or specific Zowe
components without restarting the entire Zowe instances.
In order for above started tasks to run correctly, security manager configuration needs to be
performed. This is documented in Configuring the z/OS system for Zowe and a sample JCL
member ZWESECUR is shipped with Zowe that contains commands for RACF, TopSecret, and
ACF2 security managers.
Notes:
To start the API Mediation Layer as a standalone component, see API Mediation Layer as a
standalone component.
If you plan to use API ML with basic authentication and JSON web token authentication, you need
to run only ZWESLSTC . No need to run ZWESISTC and ZWESASTC .
If you plan to use API ML with x509 client-side certificate authentication, you need to run
ZWESISTC and ZWESLSTC .
If you install Zowe with convenience build, these data sets will be created by zwe install command. If
you install Zowe with SMPE or equivalent methods, these data sets will be created during install and you are
not required to run zwe install command. The above data sets will be overwritten during upgrade
process.
Zowe configuration and runtime also use few other data sets to store customization. These data sets will not
be overwritten during upgrade.
zowe.setup.datasets.parmlib defined in Zowe configuration, which contains user customized
PARMLIB members.
zowe.setup.datasets.jcllib defined in Zowe configuration, which contains user customized
JCLs or JCLs generated by zwe init command.
zowe.setup.datasets.authLoadlib defined in Zowe configuration is optional. If the user choose
to copy out load libraries from <prefix>.SZWEAUTH , they will be placed here. With this option, you
have better control on what will be APF authorized other than authorize whole <prefix>.SZWEAUTH .
zowe.setup.datasets.authPluginLib defined in Zowe configuration contains extra load libraries
used by ZIS plugins.
Zowe configuration file
Zowe uses a YAML format configuration. If you store the configuration on USS, this file is usually referred as
zowe.yaml .
TIP
To avoid passing --config or -c to every zwe commands, you can define
ZWE_CLI_PARAMETER_CONFIG environment variable points to location of zowe.yaml.
Workspace directory
The workspace directory is required to launch Zowe. It is automatically created when you start Zowe. More
than one workspace directory can be created and used to launch multiple instances of Zowe sharing the
same runtime directory. It's not recommended to create workspace directory manually in order to avoid
permission conflicts.
Zowe instances are started by running the server command zwe start . This creates a started task with
the PROCLIB member ZWESLSTC that is provided with the samplib SZWESAMP created during the
installation of Zowe. The JCL member ZWESLSTC starts Zowe launcher under which it launches Zowe
components address spaces.
Zowe enables read and write permission to both Zowe runtime user ( ZWESVUSR by default) and Zowe
admin group ( ZWEADMIN by default) for Zowe workspace directory.
If you plan to run Zowe in Sysplex, all Zowe high availability instances must share the same workspace
directory, which means it should be placed in a shared file system (zFS directory) where all LPARs in a
Sysplex can access.
The workspace directory should be defined in your Zowe configuration file as
zowe.workspaceDirectory .
Log directory
Some Zowe components will write logs to file system. The directory will be created automatically when you
start Zowe and the content will be automatically managed by Zowe components. It's not recommended to
create log directory manually in order to avoid permission conflicts.
Multiple Zowe instances can define different log directories, they are not necessary to be shared in Sysplex
deployment like workspace directory.
The log directory should be defined in your Zowe configuration file as zowe.logDirectory .
Keystore directory
Zowe uses certificates to enable transport layer security. The system administrator can choose to use z/OS
Keyring or PKCS#12 keystore for certificate storage. A keystore directory will be created and used if
PKCS#12 keystore is chosen.
A typical PKCS#12 keystore directory looks like:
To generate keystore directory, you need proper zowe.setup.certificate configuration defined in
Zowe configuration file and then execute server command zwe init certificate . To learn more about
this command, check Reference of zwe init certificate.
Extension directory
Zowe allows server extensions to expand its core functionalities. The extensions are required to be installed
in a central location so Zowe runtime can find and recognize them.
Similar to Zowe runtime directory, this extension directory should be created by the administrators perform
Zowe installation and configuration task. Zowe runtime user, typically ZWESVUSR requires read-only
permission to this directory.
The extension directory should be created by system administrator and defined in your Zowe configuration
file as zowe.extensionDirectory .
Zowe uses zwe components install command to install Zowe server extensions. This command will
create sub-directories or symbolic links under the extension directory.
UNIX System Services considerations for
Version: v2.0.x LTS
Zowe
The Zowe z/OS component runtime requires USS to be configured. As shown in the Zowe architecture, a
number of servers run under UNIX System Services (USS) on z/OS. Review this topic for knowledge and
considerations about USS when you install and configure Zowe.
Introduction
Setting up USS for the first time
Language environment
OMVS segment
Address space region size
What is USS?
The UNIX System Services element of z/OS® is a UNIX operating environment, which is implemented within
the z/OS operating system. It is also known as z/OS UNIX. z/OS UNIX files are organized in a hierarchy, as in
a UNIX system. All files are members of a directory, and each directory in turn is a member of another
directory at a higher level in the hierarchy. The highest level of the hierarchy is the root directory. The z/OS
UNIX files system is also known as zFS.
For more information on USS, see the following resources:
Introduction to z/OS UNIX for z/OS 2.2
Introduction to z/OS UNIX for z/OS 2.3
Introduction to z/OS UNIX for z/OS 2.4
OMVS segment
Users who install Zowe to run Zowe scripts need to have an OMVS segment. If the user profile doesn't have
OMVS segment, the following situations might occur:
When you access USS through TSO OMVS, you will see the following message:
When you access USS through SSH, you will see the following message:
The maximum address space size for the process should be at least 250 M, in units of 1024 bytes. For
example, ulimit -A 250000 .
Note: Running ulimit -a displays the current process limits.
System requirements
Version: v2.0.x LTS
Before installing Zowe™ z/OS components, ensure that your z/OS environment meets the prerequisites. The
prerequisites you need to install depend on what Zowe z/OS components you want to use and how you want
to install and configure Zowe on z/OS. Therefore, assess your installation scenario and install the
prerequisites that meet your needs.
All Zowe server components can be installed on a z/OS environment, while some can alternatively be
installed on Linux or zLinux via Docker. The components provide a number of services that are accessed
through a web browser such as an API catalog and a web desktop.
z/OS system requirements
z/OS
Node.js
Java
z/OSMF (Optional)
User ID requirements
ZWESVUSR
ZWESIUSR
ZWEADMIN
zowe_user
Network requirements
Zowe Containers requirements
Zowe Desktop requirements (client PC)
Feature requirements
Multi-Factor Authentication MFA
Single Sign-On SSO
Memory requirements
User ID requirements
Specific user IDs with sufficient permissions are required to run or access Zowe.
ZWESVUSR
This is a started task ID for ZWESLSTC .
The task starts a USS environment using BPXBATSL that executes the core Zowe Desktop (ZLUX) node.js
server, the Java API Mediation Layer, and the Z Secure Services C component. To work with USS, the user ID
ZWESVUSR must have a valid OMVS segment.
ZWESIUSR
This is a started task ID used to run the PROCLIB ZWESISTC that launches the cross memory server (also
known as ZIS). It must have a valid OMVS segment.
ZWEADMIN
This is a group that ZWESVUSR and ZWESIUSR should belong to. It must have a valid OMVS segment.
zowe_user
If z/OSMF is used for authentication and serving REST APIs for Zowe CLI and Zowe Explorer users, the TSO
user ID for end users must belong to one or both of the groups IZUUSER or IZUADMIN .
Network requirements
The following ports are required for Zowe. These are default values. You can change the values by updating
variable values in the zowe.yaml file.
Port zowe.yaml variable name Purpose
number
zowe.components.explorer-jes Port of the JES Explorer GUI for viewing and working
with jobs in the Zowe Desktop.
zowe.components.explorer- Port of the MVS Explorer GUI for working with data sets
mvs in the Zowe Desktop.
zowe.components.explorer-uss Port of the USS Explorer GUI for working with USS in the
Zowe Desktop.
Feature requirements
Zowe has several optional features that have additional prerequisites as follows.
Multi-Factor Authentication (MFA)
Multi-factor authentication is supported for several components, such as the Desktop and API Mediation
Layer. Multi-factor authentication is provided by third-party products which Zowe is compatible with. The
following are known to work:
IBM Z Multi-Factor Authentication.
Note: To support the multi-factor authentication, it is necessary to apply z/OSMF APAR PH39582.
For information on using MFA in Zowe, see Multi-Factor Authentication.
Note: MFA must work with Single sign-on (SSO). Make sure that SSO is configured before you use MFA in
Zowe.
Single Sign-On (SSO)
Zowe has an SSO scheme with the goal that each time you use multiple Zowe components you should only
be prompted to login once.
Requirements:
IBM z/OS Management Facility (z/OSMF)
Memory requirements
Zowe API ML components have following memory requiremets:
Component name Memory usage
Component name Memory usage
Gateway service 256MB
Discovery service 256MB
API Catalog 512MB
Metrics service 512MB
Caching service 512MB
(Optional, recommended) PKCS#11 token setup is required when using ZSS, the Desktop, and
Application Framework with SSO. See Creating a PKCS#11 Token for more information.
Installing Node.js on z/OS
Version: v2.0.x LTS
Note: This section is not required if using Docker or only using the CLI.
Before you install Zowe™ on z/OS, you must install IBM SDK for Node.js on the same z/OS server that hosts
the Zowe Application Server and z/OS Explorer Services. Review the information in this topic to obtain and
install Node.js.
Supported Node.js versions
How to obtain IBM SDK for Node.js - z/OS
Hardware and software prerequisites
Installing the PAX edition of Node.js - z/OS
Installing the SMP/E edition of Node.js - z/OS
. Add the full path of your installation directory to your PATH environment variable:
. Run the following command from the command line to verify the installation.
If Node.js is installed correctly, the version of Node.js is displayed.
. After you install Node.js, set the NODE_HOME environment variable to the directory where Node.js is
installed. For example, NODE_HOME=/proj/mvd/node/installs/node-v6.14.4-os390-s390x .
The following information contains procedures and tips for meeting z/OSMF requirements. For complete
information, go to IBM Knowledge Center and read the following documents.
IBM z/OS Management Facility Configuration Guide
IBM z/OS Management Facility Help
AXR (System z/OS uses AXR (System REXX) component to perform Incident Log
REXX) tasks. The component enables REXX executable files to run outside System REXX
of conventional TSO and batch environments.
Common The CEA server, which is a co-requisite of the Common Information Customizing
Event Adapter Model (CIM) server, enables the ability for z/OSMF to deliver z/OS for CEA
(CEA) server events to C-language clients.
Common z/OSMF uses the CIM server to perform capacity-provisioning and Reviewing
Information workload-management tasks. Start the CIM server before you start your CIM
Model (CIM) z/OSMF (the IZU* started tasks). server setup
server
Resources in
Requirements Description IBM
Knowledge
Center
Customizing
CONSOLE and The CONSOLE and CONSPROF commands must exist in the the
CONSPROF authorized command table. CONSOLE
commands and
CONSPROF
commands
IBM® 64-bit SDK for z/OS®, Java Technology Edition V8 or later is Software
Java level required. prerequisites
for z/OSMF
TSO region To prevent exceeds maximum region size errors, verify that the
size TSO maximum region size is a minimum of 65536 KB for the z/OS N/A
system.
User IDs require a TSO segment (access) and an OMVS segment.
User IDs During workflow processing and REST API requests, z/OSMF might N/A
start one or more TSO address spaces under the following job
names: userid; substr(userid, 1, 6) CN (Console).
Configuring z/OSMF
Follow these steps:
. From the console, issue the following command to verify the version of z/OS:
Part of the output contains the release, for example,
. Configure z/OSMF.
z/OSMF is a base element of z/OS V2.2 and V2.3, so it is already installed. But it might not be configured
and running on every z/OS V2.2 and V2.3 system.
In short, to configure an instance of z/OSMF, run the IBM-supplied jobs IZUSEC and IZUMKFS, and then
start the z/OSMF server. The z/OSMF configuration process occurs in three stages, and in the following
order:
Stage 1 - Security setup
Stage 2 - Configuration
Stage 3 - Server initialization
This stage sequence is critical to a successful configuration. For complete information about how
to configure z/OSMF, see Configuring z/OSMF for the first time if you use z/OS V2.2 or Setting up
z/OSMF for the first time if V2.3.
Note: In z/OS V2.3, the base element z/OSMF is started by default at system initial program load (IPL).
Therefore, z/OSMF is available for use as soon as you set up the system. If you prefer not to start z/OSMF
automatically, disable the autostart function by checking for START commands for the z/OSMF started
procedures in the COMMNDxx parmlib member.
The z/OS Operator Consoles task is new in Version 2.3. Applications that depend on access to the operator
console such as Zowe™ CLI's RestConsoles API require Version 2.3.
. Verify that the z/OSMF server and angel processes are running. From the command line, issue the
following command:
If jobs IZUANG1 and IZUSVR1 are not active, issue the following command to start the angel process:
After you see the message ""CWWKB0056I INITIALIZATION COMPLETE FOR ANGEL"", issue the
following command to start the server:
The server might take a few minutes to initialize. The z/OSMF server is available when the message
""CWWKF0011I: The server zosmfServer is ready to run a smarter planet."" is displayed.
. Issue the following command to find the startup messages in the SDSF log of the z/OSMF server:
You could see a message similar to the following message, which indicates the port number:
In this example, the port number is 443. You will need this port number later.
Point your browser at the nominated z/OSMF STANDALONE Server home page and you should see its
Welcome Page where you can log in.
Note: If your implementation uses an external security manager other than RACF (for example, Top Secret
for z/OS or ACF2 for z/OS), you provide equivalent commands for your environment. For more information,
see the following product documentation:
Configure z/OS Management Facility for Top Secret
Configure z/OS Management Facility for ACF2
z/OSMF Resources in
REST Requirements IBM
services knowledge
Center
Cloud Cloud provisioning services are required for the Zowe CLI CICS and Cloud
provisioning Db2 command groups. Endpoints begin with provisioning
services /zosmf/provisioning/ services
TSO/E TSO/E
address TSO/E address space services are required to issue TSO commands in address
space the Zowe CLI. Endpoints begin with /zosmf/tsoApp space
services services
z/OS z/OS console services are required to issue console commands in the z/OS console
console Zowe CLI. Endpoints begin with /zosmf/restconsoles/ services
services
z/OS data z/OS data set and file REST interface is required to work with z/OS data set
set and file mainframe data sets and UNIX System Services files in the Zowe CLI. and file REST
REST Endpoints begin with /zosmf/restfiles/ interface
interface
z/OSMF Resources in
REST Requirements IBM
services knowledge
Center
z/OS jobs z/OS jobs REST interface is required to use the zos-jobs command z/OS jobs
REST group in the Zowe CLI. Endpoints begin with /zosmf/restjobs/ REST
interface interface
z/OSMF z/OSMF workflow services is required to create and manage z/OSMF z/OSMF
workflow workflows on a z/OS system. Endpoints begin with workflow
services /zosmf/workflow/ services
Zowe uses symbolic links to the z/OSMF bootstrap.properties ,
jvm.security.override.properties , and ltpa.keys files. Zowe reuses SAF, SSL, and LTPA
configurations; therefore, they must be valid and complete.
For more information, see Using the z/OSMF REST services in IBM z/OSMF documentation.
To verify that z/OSMF REST services are configured correctly in your environment, enter the REST endpoint
into your browser. For example: https://mvs.ibm.com:443/zosmf/restjobs/jobs
Notes:
Browsing z/OSMF endpoints requests your user ID and password for defaultRealm; these are your TSO
user credentials.
The browser returns the status code 200 and a list of all jobs on the z/OS system. The list is in raw
JSON format.
use)
This section provides information about requirements for z/OSMF Lite configuration.
Disclaimer: z/OSMF Lite can be used in a non-production environment such as development, proof-of-
concept, demo and so on. It is not for use in a production environment. To use z/OSMF in a production
environment, see Configuring z/OSMF.
Configuring z/OSMF Lite (for non-production use)
Introduction
Assumptions
Software Requirements
Minimum Java level
WebSphere® Liberty profile (z/OSMF V2R3 and later)
System settings
Web browser
Creating a z/OSMF nucleus on your system
Running job IZUNUSEC to create security
Before you begin
Procedure
Results
Common errors
Running job IZUMKFS to create the z/OSMF user file system
Before you begin
Procedure
Results
Common errors
Copying the IBM procedures into JES PROCLIB
Before you begin
Procedure
Results
Common errors
Starting the z/OSMF server
Before you begin
Procedure
Results
Accessing the z/OSMF Welcome page
Before you begin
Procedure
Results
Common errors
Mounting the z/OSMF user file system at IPL time
Before you begin
Procedure
Results
Adding the required REST services
Enabling the z/OSMF JOB REST services
Procedure
Results
Common errors
Enabling the TSO REST services
Before you begin
Procedure
IZUTSSEC
Results
Enabling the z/OSMF data set and file REST services
Before you begin
Procedure
Results
Common errors
Enabling the z/OSMF Workflow REST services and Workflows task UI
Before you begin
Procedure
Results
Troubleshooting problems
Common problems and scenarios
System setup requirements not met
Tools and techniques for troubleshooting
Common messages
Appendix A. Creating an IZUPRMxx parmlib member
Appendix B. Modifying IZUSVR1 settings
Appendix C. Adding more users to z/OSMF
Before you Begin
Procedure
Results
Appendix A. Creating an IZUPRMxx parmlib member
Appendix B. Modifying IZUSVR1 settings
Appendix C. Adding more users to z/OSMF
Introduction
IBM® z/OS® Management Facility (z/OSMF) provides extensive system management functions in a task-
oriented, web browser-based user interface with integrated user assistance, so that you can more easily
manage the day-to-day operations and administration of your mainframe z/OS systems.
By following the steps in this guide, you can quickly enable z/OSMF on your z/OS system. This simplified
approach to set-up, known as "z/OSMF Lite", requires only a minimal amount of z/OS customization, but
provides the key functions that are required by many exploiters, such as the open mainframe project
(Zowe™).
A z/OSMF Lite configuration is applicable to any future expansions you make to z/OSMF, such as adding
more optional services and plug-ins.
It takes 2-3 hours to set up z/OSMF Lite. Some steps might require the assistance of your security
administrator.
For detailed information about various aspects of z/OSMF configuration such as enabling the optional plug-
ins and services, see the IBM publication z/OSMF Configuration Guide.
Assumptions
This document is intended for a first time z/OSMF setup. If z/OSMF is already configured on your system,
you do not need to create a z/OSMF Lite configuration.
This document is designed for use with a single z/OS system, not a z/OS sysplex. If you plan to run z/OSMF
in a sysplex, see z/OSMF Configuration Guide for multi-system considerations.
It is assumed that a basic level of security for z/OSMF is sufficient on the z/OS system. IBM provides a
program, IZUNUSEC, to help you set up basic security for a z/OSMF Lite configuration.
System defaults are used for the z/OSMF environmental settings. Wherever possible, it is recommended that
you use the default values. If necessary, however, you can override the defaults by supplying an IZUPRMxx
member, as described in Appendix A. Creating an IZUPRMxx parmlib member.
It is recommended that you use the following procedures as provided by IBM:
Started procedures IZUSVR1 and IZUANG1
Logon procedure IZUFPROC
Information about installing these procedures is provided in Copying the IBM procedures into JES PROCLIB.
Software Requirements
Setting up z/OSMF Lite requires that you have access to a z/OS V2R2 system or later. Also, your z/OS
system must meet the following minimum software requirements:
Minimum Java level
WebSphere® Liberty profile (z/OSMF V2R3 and later)
System settings
Web browser
Minimum Java level
Java™ must be installed and operational on your z/OS system, at the required minimum level. See the table
that follows for the minimum level and default location. If you installed Java in another location, you must
specify the JAVA_HOME statement in your IZUPRMxx parmlib member, as described in Appendix A.
Creating an IZUPRMxx parmlib member.
z/OS Minimum level of Java™ Recommended Default location
Version level of Java
IBM® 64-bit SDK for z/OS®, Java
Technology Edition V7.1 (SR3), with IBM® 64-bit SDK
z/OS the PTFs for APAR PI71018 and APAR for z/OS®, Java™
V2R2 PI71019 applied OR IBM® 64-bit SDK Technology /usr/lpp/java/J7.1_64
for z/OS®, Java Technology Edition Edition, V8 SR6
V8, with the PTF for APAR PI72601 (5655-DGH)
applied.
IBM® 64-bit SDK
z/OS IBM® 64-bit SDK for z/OS®, Java™ for z/OS®, Java™
V2R3 Technology Edition, V8 SR4 FP10 Technology /usr/lpp/java/J8.0_64
(5655-DGH) Edition, V8 SR6
(5655-DGH)
Common errors
Review the following messages and the corresponding resolutions as needed
Symptom Cause Resolution
Job fails with Your user ID lacks For more information about how to define a user with
FSM error. superuser superuser authority, see the publication z/OS UNIX System
authority. Services.
Job fails with an Job statement
authorization errors. See Troubleshooting problems.
error.
Procedure
. Open a web browser to the z/OSMF Welcome page. The URL for the Welcome page has the following
format: https://hostname:port/zosmf/
Where:
hostname is the host name or IP address of the system in which z/OSMF is installed.
port is the secure port for the z/OSMF configuration. If you specified a secure port for SSL
encrypted traffic during the configuration process through parmlib statement HTTP_SSL_PORT,
port is required to log in. Otherwise, it is assumed that you use the default port 443.
. In the z/OS USER ID field on the Welcome page, enter the z/OS user ID that you use to configure
z/OSMF.
. In the z/OS PASSWORD field, enter the password or pass phrase that is associated with the z/OS user
ID.
. Select the style of UI for z/OSMF. To use the desktop interface, select this option. Otherwise, leave this
option unselected to use the tree view UI.
. Click Log In.
Results
If the user ID and password or pass phrase are valid, you are authenticated to z/OSMF. The Welcome page
of IBM z/OS Management Facility tab opens in the main area. At the top right of the screen, Welcome
<your_user_ID> is displayed. In the UI, only the options you are allowed to use are displayed.
The result is a list of the jobs that are owned by your user ID. For more information about the z/OSMF JOB
REST services, see z/OSMF Programming Guide.
Common errors
Review the following messages and the corresponding resolutions as needed:
Symptom 1
401 Unauthorized
Cause
The user ID is not connected to IZUADMIN or IZUUSER.
Resolution
Connect your user ID to IZUADMIN or IZUUSER.
Symptom 2
HTTP/1.1 500 Internal Server Error {"rc":16,"reason":-1,"stack":"JesException: CATEGORY_CIM rc=16
reason=-1 cause=com.ibm.zoszmf.util.eis.EisConnectionException: IZUG911I: Connection to
\"http:\/\/null:5988\" cannot be established, or was lost and cannot be re-established using protocol
\"CIM\"......Caused by: WBEMException: CIM_ERR_FAILED (JNI Exception type
CannotConnectException:\nCannot connect to local CIM server. Connection failed.)
Cause
For JES2, you may have performed one of the following "Modify" operations: Hold a job, Release a job,
Change the job class, Cancel a job, Delete a job (Cancel a job and purge its output), or you are running JES3
without configuring CIM Server.
Resolution
If you are running JES2, you can use synchronous support for job modify operations which does not
required CIM. If you are running JES3, follow the CIM setup instructions to configure CIM on your system.
Enabling the TSO REST services
The Zowe framework requires that you enable the TSO REST services, as described in this topic.
Before you begin
Ensure that the common event adapter component (CEA) of z/OS is running in full function mode.
. To check if the CEA address space is active, enter the following command:
D A,CEA
. If not, start CEA in full function mode. For detailed instructions, see System prerequisites for the CEA
TSO/E address space services.
. To verify that CEA is running in full function mode, enter the following command:
F CEA,D
REST API doesn't return expected The Ensure that the message queue size is set to a
data with rc=12, rsn=3, message: message large enough value. It is recommended that you
message queue size "SIZE" is less queue size specify an IPCMSGQBYTES value of at least
than minimum: 20M for CEA is 20971520 (20M) in BPXPRMx.
too small.
Troubleshooting problems
This section provides tips and techniques for troubleshooting problems you might encounter when creating
a z/OSMF Lite configuration. For other types of problems that might occur, see z/OSMF Configuration Guide.
Common problems and scenarios
This section discusses troubleshooting topics, procedures, and tools for recovering from a set of known
issues.
System setup requirements not met
This document assumes that the following is true of the z/OS host system:
Port 443 is available for use. To check this, issue either TSO command NETSTAT SOCKET or TSO
command NETSTAT BYTE to determine if the port is being used.
The system host name is unique and maps to the system on which z/OSMF Lite is being installed. To
retrieve this value, enter either "hostname" z/OS UNIX command or TSO command "HOMETEST". If
your system uses another method of assigning the system name, such as a multi-home stack, dynamic
VIPA, or System Director, see z/OSMF Configuration Guide.
The global mount point exists. On a z/OS 2.3 system, the system includes this directory by default. On a
z/OS 2.2 system, you must create the global directory at the following location: /global/zosmf/ .
If you find that a different value is used on your z/OS system, you can edit the IZUPRMxx parmlib member to
specify the correct setting. For details, see Appendix A. Creating an IZUPRMxx parmlib member.
Tools and techniques for troubleshooting
For information about working with z/OSMF log files, see z/OSMF Configuration Guide.
Common messages
If you see above error messages, check if your IZUANG0 procedure is up to date.
For descriptions of all the z/OSMF messages, see z/OSMF messages in IBM Knowledge Center.
Results
The user IDs can now access z/OSMF.
Installing Zowe runtime from a convenience
Version: v2.0.x LTS
build
You install the Zowe™ convenience build by obtaining a PAX file and using this to create the Zowe runtime
environment.
Introduction
The Zowe installation file for Zowe z/OS components is distributed as a PAX file that contains the runtimes
and the scripts to install and launch the z/OS runtime. You must obtain the PAX file and transfer it to z/OS
first. Then, to install, configure and start Zowe, you use the zwe command. This command defines help
messages, logging options, and more. For details about how to use this command, see the ZWE Server
Command Reference.
The configuration data that is read by the zwe command are stored in a YAML configuration file named
zowe.yaml . You modify the zowe.yaml file based on your environment.
After the PAX file has sucessfully transferred, exit your sftp or ftp session.
. Open a USS shell to expand the PAX file. This can either be an ssh terminal, OMVS, iShell, or any other
z/OS unix system services command environment.
. Expand the PAX file by issuing the following command in the USS shell.
Where zowe-V.v.p is a variable that indicates the name of the PAX file you downloaded. When extracting
the Zowe convenience build, you must always include the -ppx argument that preserves extended
attributes.
This will expand to a file structure similar to the following one.
This is the Zowe runtime directory and is referred to as <RUNTIME_DIR> throughout this
documentation.
Note: Zowe version 1 had a script zowe-install.sh that created a separate Zowe runtime directory
from the expanded contents of the Zowe PAX file. Zowe v2 no longer has this step. In Zowe v2, the
contents of the expanded Zowe PAX file are the Zowe runtime directory.
Step 3: (Optional) Add the zwe command to your PATH
The zwe command is provided in the <RUNTIME_DIR>/bin directory. You can optionally add this Zowe
bin directory to your PATH environment variable so you can execute the zwe command without having to
fully qualify its location. To update your PATH , run the following command:
<RUNTIME_DIR> should be replaced with your real Zowe runtime directory path. This will update the
PATH for the current shell. To make this update persistent, you can add the line to your ~/.profile file,
or the ~/.bashProfile file if you are using a bash shell. To make this update system wide, you can
update the /etc/.profile file. Once the PATH is updated, you can execute the zwe command from
any USS directory. For the remainder of the documentation when zwe command is referenced, it is
assumed that it has been added to your PATH .
The zwe command has built in help that can be retrieved with the -h suffix. For example, type zwe -h
to display all of the supported commands. These are broken down into a number of sub-commands.
SZWEEXEC CLIST
utilities
copy ANY U PDSE FB 80 15 5
ZWELNCH The Zowe launcher that controls the startup, restart and shutdown of Zowe's address
spaces
ZWESIS01 Load module for the cross memory server
ZWESAUX Load module for the cross memory server's auxiliary address space
The SZWEEXEC data set contains few utilities used by Zowe.
Procedure
The high level qualifer (or HLQ) for these data sets is specified in the zowe.yaml section below. Ensure
that you update the zowe.setup.dataset.prefix value to match your system.
To create and install the MVS data sets, use the command zwe install .
. In a USS shell, execute the command zwe install -c /path/to/zowe.yaml . This creates the
three data sets and copy across their content.
. If the data sets already exist, specify --allow-overwritten .
. To see the full list of parameters, execute the command zwe install -h .
A sample run of the command is shown below using default values.
Next steps
You successfully installed Zowe from the convenience build! However, before you start Zowe, you must
complete several required configurations. Next, go to Initialize the z/OS system and permissions to initialize
your z/OS system for Zowe first.
Installing Zowe SMP/E
Version: v2.0.x LTS
Contents
Introduction
Zowe description
Zowe FMIDs
Program materials
Basic machine-readable material
Program publications
Program source materials
Publications useful during installation
Program support
Statement of support procedures
Program and service level information
Program level information
Service level information
Installation requirements and considerations
Driving system requirements
Driving system machine requirements
Driving system programming requirements
Target system requirements
Target system machine requirements
Target system programming requirements
DASD storage requirements
FMIDs deleted
Installation instructions
SMP/E considerations for installing Zowe
SMP/E options subentry values
Overview of the installation steps
Download the Zowe SMP/E package
Allocate file system to hold the download package
Upload the download package to the host
Extract and expand the compressed SMPMCS and RELFILEs
GIMUNZIP
Sample installation jobs
Create SMP/E environment (optional)
Perform SMP/E RECEIVE
Allocate SMP/E Target and Distributions Libraries
Allocate, create and mount ZSF Files (Optional)
Allocate z/OS UNIX Paths
Create DDDEF Entries
Perform SMP/E APPLY
Perform SMP/E ACCEPT
Run REPORT CROSSZONE
Cleaning up obsolete data sets, paths, and DDDEFs
Activating Zowe
File system execution
Zowe customization
Introduction
This program directory is intended for system programmers who are responsible for program installation and
maintenance. It contains information about the material and procedures associated with the installation of
Zowe Open Source Project (Base). This publication refers to Zowe Open Source Project (Base) as Zowe.
The Program Directory contains the following sections:
Program Materials identifies the basic program materials and documentation for Zowe.
Program Support describes the support available for Zowe.
Program and Service Level Information lists the APARs (program level) and PTFs (service level) that
have been incorporated into Zowe.
Installation Requirements and Considerations identifies the resources and considerations that are
required for installing and using Zowe.
Installation Instructions provides detailed installation instructions for Zowe. It also describes the
procedures for activating the functions of Zowe, or refers to appropriate publications.
Zowe description
Zowe™ is an open source project created to host technologies that benefit the Z platform. It is a sub-project
of Open Mainframe Project which is part of the Linux Foundation. More information about Zowe is available
at https://zowe.org.
Zowe FMIDs
Zowe consists of the following FMIDs:
AZWE002
Program materials
Basic Machine-Readable Materials are materials that are supplied under the base license and are required
for the use of the product.
Basic machine-readable material
The distribution medium for this program is via downloadable files. This program is in SMP/E RELFILE format
and is installed using SMP/E. See Installation instructions for more information about how to install the
program.
Program source materials
No program source materials or viewable program listings are provided for Zowe in the SMP/E installation
package. However, program source materials can be downloaded from the Zowe GitHub repositories at
https://github.com/zowe/.
Publications useful during installation
Publications listed below are helpful during the installation of Zowe.
Publication Title Form Number
IBM SMP/E for z/OS User's Guide SA23-2277
IBM SMP/E for z/OS Commands SA23-2275
Publication Title Form Number
IBM SMP/E for z/OS Reference SA23-2276
IBM SMP/E for z/OS Messages, Codes, and Diagnosis GA32-0883
These and other publications can be obtained from https://www.ibm.com/shop/publications/order.
Program support
This section describes the support available for Zowe.
Because this is an alpha release of the Zowe FMID package for early testing and adoption, no formal support
is offered. Support is available through the Zowe community. See Community Engagement for details. Slack
is the preferred interaction channel.
Additional support may be available through other entities outside of the Open Mainframe Project and Linux
Foundation which offers no warranty and provides the package under the terms of the EPL v2.0 license.
Statement of support procedures
Report any problems which you feel might be an error in the product materials to the Zowe community via
the Zowe GitHub community repo at https://github.com/zowe/community/issues/new/choose. You may be
asked to gather and submit additional diagnostics to assist the Zowe Community for analysis and resolution.
No. of No.
Library Member Target Type Org RECFM LRECL 3390 of
DDNAME Type Volume Trks DIR
Blks
Installation instructions
This section describes the installation method and the step-by-step procedures to install and activate the
functions of Zowe.
Notes:
If you want to install Zowe into its own SMP/E environment, consult the SMP/E manuals for instructions
on creating and initializing the SMPCSI and SMP/E control data sets.
You can use the sample jobs that are provided to perform part or all of the installation tasks. The SMP/E
jobs assume that all DDDEF entries that are required for SMP/E execution have been defined in
appropriate zones.
You can use the SMP/E dialogs instead of the sample jobs to accomplish the SMP/E installation steps.
SMP/E considerations for installing Zowe
Use the SMP/E RECEIVE, APPLY, and ACCEPT commands to install this release of Zowe.
SMP/E options subentry values
The recommended values for certain SMP/E CSI subentries are shown in the following table. Using values
lower than the recommended values can result in failures in the installation. DSSPACE is a subentry in the
GLOBAL options entry. PEMAX is a subentry of the GENERAL entry in the GLOBAL options entry. See the
SMP/E manuals for instructions on updating the global zone.
Subentry Value Comment
DSSPACE (1200,1200,1400) Space allocation
PEMAX SMP/E Default IBM recommends using the SMP/E default for PEMAX.
@zfs_path@ z/OS UNIX path where to store the files. This matches the @zfs_path@ variable you
specified in the previous step.
Important! The AZWE002.pax.Z file must be uploaded to the z/OS driving system in binary format, or the
subsequent UNPAX step will fail.
This step of tranferring the files can take a long time to run, depending on the capacity of your system, and
on what other jobs are running.
Sample FTP upload scenario:
If you are unable to connect with ftp and only able to use sftp, the commands above are the same
except that you will use sftp at the command prompt instead of ftp. Also, because sftp only supports binary
file transfer, the ascii and binary commands should be omitted. After you transfer the AZWE002.readme.txt
file, it will be in an ASCII codepage so you need to convert it to EBCDIC before it can be used. To convert
AZWE002.readme.txt to EBCDIC, log in to the distribution system using ssh and run an ICONV command.
_C:>/ssh tsouid@mvsaddr_
_tsouid@mvsaddr's password: tsopw_
/u/tsouid:>
cd:@zfs_path@
@zfs_path:>
@zfs_path:>iconv -f ISO8859-1 -t IBM-1047 AZWE002.readme.txt > AZWE002.readme.EBCDIC
@zfs_path:>rm AZWE002.readme.txt
@zfs_path:>mv AZWE002.readme.EBCDIC AZWE002.readme.txt
@zfs_path:>exit
C:>/
Extract and expand the compressed SMPMCS and RELFILEs
The AZWE002.readme.txt file uploaded in the previous step holds a sample JCL to expand the compressed
SMPMCS and RELFILEs from the uploaded AZWE002.pax.Z file into data sets for use by the SMP/E RECEIVE
job. The JCL is repeated here for your convenience.
@zfs_path@ matches the variable that you specified in the previous step.
If the oshell command gets a RC=256 and message "pax: checksum error on tape (got ee2e,
expected 0)", then the archive file was not uploaded to the host in binary format.
GIMUNZIP allocates data sets to match the definitions of the original data sets. You might encounter
errors if your SMS ACS routines alter the attributes used by GIMUNZIP. If this occurs, specify a non-
SMS managed volume for the GINUMZIP allocation of the data sets. For example:
Normally, your Automatic Class Selection (ACS) routines decide which volumes to use. Depending on
your ACS configuration, and whether your system has constraints on disk space, units, or volumes,
some supplied SMP/E jobs might fail due to volume allocation errors. See GIMUNZIP for more details.
GIMUNZIP
The GIMUNZIP job may issue allocation error messages for SYSUT1 similar to these:
The job will end with RC=12. If this happens, add a TEMPDS control statement to the existing SYSIN as
shown below:
where, &VOLSER is a DISK volume with sufficient free space to hold temporary copies of the RELFILES. As
a guide, this may require 1,000 cylinders, or about 650 MB.
Sample installation jobs
The following sample installation jobs are provided in hlq.ZOWE.AZWE002.F1 , or equivalent, as part of
the project to help you install Zowe:
Job Name Job Type Description RELFILE
Expected Return Codes and Messages: You will receive a return code of 0 if this job runs correctly.
Perform SMP/E RECEIVE
Edit and submit sample job ZWE2RCVE to perform the SMP/E RECEIVE for Zowe. Consult the instructions in
the sample job for more information.
Expected Return Codes and Messages: You will receive a return code of 0 if this job runs correctly.
Allocate SMP/E target and distributions libraries
Edit and submit sample job ZWE3ALOC to allocate the SMP/E target and distribution libraries for Zowe.
Consult the instructions in the sample job for more information.
Expected Return Codes and Messages: You will receive a return code of 0 if this job runs correctly.
Allocate, create and mount ZSF files (Optional)
This job allocates, creates a mountpoint, and mounts zFS data sets.
If you plan to install Zowe into a new z/OS UNIX file system, you can edit and submit the optional ZWE4ZFS
job to perform the following tasks. Consult the instructions in the sample job for more information.
Create the z/OS UNIX file system
Create a mountpoint
Mount the z/OS UNIX file system on the mountpoint
The recommended z/OS UNIX file system type is zFS. The recommended mountpoint is /usr/lpp/zowe.
Before running the sample job to create the z/OS UNIX file system, you must ensure that OMVS is active on
the driving system. zFS must be active on the driving system if you are installing Zowe into a file system that
is zFS.
If you create a new file system for this product, consider updating the BPXPRMxx PARMLIB member to
mount the new file system at IPL time. This action can be helpful if an IPL occurs before the installation is
completed.
See the following information to update the statements in the previous sample:
#dsn is the name of the data set holding the z/OS UNIX file system.
/usr/lpp/zowe is the name of the mountpoint where the z/OS UNIX file system will be mounted.
Expected Return Codes and Messages: You will receive a return code of 0 if this job runs correctly.
Allocate z/OS UNIX paths
The target system HFS or zFS data set must be mounted on the driving system when running the sample
ZWE5MKD job since the job will create paths in the HFS or zFS.
Before running the sample job to create the paths in the file system, you must ensure that OMVS is active on
the driving system and that the target system's HFS or zFS file system is mounted on the driving system.
zFS must be active on the driving system if you are installing Zowe into a file system that is zFS.
If you plan to install Zowe into a new HFS or zFS file system, you must create the mountpoint and mount the
new file system on the driving system for Zowe.
The recommended mountpoint is /usr/lpp/zowe.
Edit and submit sample job ZWE5MKD to allocate the HFS or zFS paths for Zowe. Consult the instructions in
the sample job for more information.
If you create a new file system for this product, consider updating the BPXPRMxx PARMLIB member to
mount the new file system at IPL time. This action can be helpful if an IPL occurs before the installation is
completed.
Expected Return Codes and Messages: You will receive a return code of 0 if this job runs correctly.
Create DDDEF entries
Edit and submit sample job ZWE6DDEF to create DDDEF entries for the SMP/E target and distribution
libraries for Zowe. Consult the instructions in the sample job for more information.
Expected Return Codes and Messages: You will receive a return code of 0 if this job runs correctly.
Perform SMP/E APPLY
In this step, you run the sample job ZWE7APLY to apply Zowe. This step can take a long time to run,
depending on the capacity of your system, and on what other jobs are running.
Follow these steps
. Ensure that you have the latest HOLDDATA; then edit and submit sample job ZWE7APLY to perform an
SMP/E APPLY CHECK for Zowe. Consult the instructions in the sample job for more information.
The latest HOLDDATA is available through several different portals, including
http://service.software.ibm.com/holdata/390holddata.html. The latest HOLDDATA may identify HIPER
and FIXCAT APARs for the FMIDs you will be installing. An APPLY CHECK will help you determine
whether any HIPER or FIXCAT APARs are applicable to the FMIDs you are installing. If there are any
applicable HIPER of FIXCAT APARs, the APPLY CHECK will also identify fixing PTFs that will resolve the
APARs, if a fixing PTF is available.
You should install the FMIDs regardless of the status of unresolved HIPER or FIXCAT APARs. However,
do not deploy the software until the unresolved HIPER and FIXCAT APARs have been analyzed to
determine their applicability. That is, before deploying the software either ensure fixing PTFs are applied
to resolve all HIPER or FIXCAT APARs, or ensure the problems reported by all HIPER or FIXCAT APARs
are not applicable to your environment.
To receive the full benefit of the SMP/E Causer SYSMOD Summary Report, do not bypass the PRE, ID,
REQ, and IFREQ on the APPLY CHECK. The SMP/E root cause analysis identifies the cause only of errors
and not of warnings (SMP/E treats bypassed PRE, ID, REQ, and IFREQ conditions as warnings, instead of
errors).
Here are sample APPLY commands:
i. To ensure that all recommended and critical service is installed with the FMIDs, receive the latest
HOLDDATA and use the APPLY CHECK command as follows
Some HIPER APARs might not have fixing PTFs available yet. You should analyze the symptom
flags for the unresolved HIPER APARs to determine if the reported problem is applicable to your
environment and if you should bypass the specific ERROR HOLDs in order to continue the
installation of the FMIDs.
This method requires more initial research, but can provide resolution for all HPERs that have fixing
PTFs available and not in a PE chain. Unresolved PEs or HIPERs might still exist and require the use
of BYPASS.
ii. To install the FMIDs without regard for unresolved HIPER APARs, you can add the
BYPASS(HOLDCLASS(HIPER)) operand to the APPLY CHECK command. This will allow you to
install FMIDs, even though one of more unresolved HIPER APARs exist. After the FMIDs are
installed, use the SMP/E REPORT ERRSYSMODS command to identify unresolved HIPER APARs
and any fixing PTFs.
This method is quicker, but requires subsequent review of the Exception SYSMOD report produced
by the REPORT ERRSYSMODS command to investigate any unresolved HIPERs. If you have
received the latest HOLDDATA, you can also choose to use the REPORT MISSINGFIX command
and specify Fix Category IBM.PRODUCTINSTALL-REQUIREDSERVICE to investigate missing
recommended service.
If you bypass HOLDs during the installation of the FMIDs because fixing PTFs are not yet available,
you can be notified when the fixing PTFs are available by using the APAR Status Tracking (AST)
function of the ServiceLink or the APAR Tracking function of Resource Link.
. After you take actions that are indicated by the APPLY CHECK, remove the CHECK operand and run the
job again to perform the APPLY.
Note: The GROUPEXTENDED operand indicates the SMP/E applies all requisite SYSMODs. The requisite
SYSMODS might be applicable to other functions.
Expected Return Codes and Messages from APPLY CHECK: You will receive a return code of 0 if the job
runs correctly.
Expected Return Codes and Messages from APPLY: You will receive a return code of 0 if the job runs
correctly.
Perform SMP/E ACCEPT
Edit and submit sample job ZWE8ACPT to perform an SMP/E ACCEPT CHECK for Zowe. Consult the
instructions in the sample job for more information.
To receive the full benefit of the SMP/E Causer SYSMOD Summary Report, do not bypass the PRE, ID, REQ,
and IFREQ on the ACCEPT CHECK. The SMP/E root cause analysis identifies the cause of errors but not
warnings (SMP/E treats bypassed PRE, ID, REQ, and IFREQ conditions as warnings rather than errors).
Before you use SMP/E to load new distribution libraries, it is recommended that you set the ACCJCLIN
indicator in the distribution zone. In this way, you can save the entries that are produced from JCLIN in the
distribution zone whenever a SYSMOD that contains inline JCLIN is accepted. For more information about
the ACCJCLIN indicator, see the description of inline JCLIN in the SMP/E Commands book for details.
After you take actions that are indicated by the ACCEPT CHECK, remove the CHECK operand and run the
job again to perform the ACCEPT.
Note: The GROUPEXTEND operand indicates that SMP/E accepts all requisite SYSMODs. The requisite
SYSMODS might be applicable to other functions.
Expected Return Codes and Messages from ACCEPT CHECK: You will receive a return code of 0 if this
job runs correctly.
If PTFs that contain replacement modules are accepted, SMP/E ACCEPT processing will link-edit or bind the
modules into the distribution libraries. During this processing, the Linkage Editor or Binder might issue
messages that indicate unresolved external references, which will result in a return code of 4 during the
ACCEPT phase. You can ignore these messages, because the distribution libraries are not executable and
the unresolved external references do not affect the executable system libraries.
Expected Return Codes and Messages from ACCEPT: You will receive a return code of 0 if this job runs
correctly.
Run REPORT CROSSZONE
The SMP/E REPORT CROSSZONE command identifies requisites for products that are installed in separate
zones. This command also creates APPLY and ACCEPT commands in the SMPPUNCH data set. You can use
the APPLY and ACCEPT commands to install those cross-zone requisites that the SMP/E REPORT
CROSSZONE command identifies.
After you install Zowe, it is recommended that you run REPORT CROSSZONE against the new or updated
target and distribution zones. REPORT CROSSZONE requires a global zone with ZONEINDEX entries that
describe all the target and distribution libraries to be reported on.
For more information about REPORT CROSSZONE, see the SMP/E manuals.
Cleaning up obsolete data sets, paths, and DDDEFs
The web download data sets listed in DASD storage requirements are temporary data sets. You can delete
these data sets after you complete the SMP/E installation.
Activating Zowe
File system execution
If you mount the file system in which you have installed Zowe in read-only mode during execution, then you
do not have to take further actions to activate Zowe.
Zowe customization
You can find the necessary information about customizing and using Zowe on the Zowe doc site.
For more information about how to customize Zowe, see Configuring Zowe after installation.
For more information about how to use Zowe, see Using Zowe.
Installing Zowe SMP/E build with z/OSMF
Version: v2.0.x LTS
workflow
z/OSMF workflow simplifies the procedure to create an SMP/E environment for Zowe. Register and execute
the Zowe SMP/E workflow to create SMP/E environment in the z/OSMF web interface. Perform the following
steps to register and execute the Zowe workflow in the z/OSMF web interface:
. Log in to the z/OSMF web interface.
. Select Workflows from the navigation tree.
. Select Create Workflow from the Actions menu.
. Enter the complete path to the workflow definition file in the Workflow Definition filed.
The workflow is located in the ZWEWRF01 member of the hlq.ZOWE.AZWE002.F4 data set.
. (Optional) Enter the path to the customized variable input file that you prepared in advance.
The variable input file is located in ZWEYML01 member of the hlq.ZOWE.AZWE002 data set.
Create a copy of the variable input file. Modify the file as necessary according to the built-in comments.
Set the field to the path where the new file is located. When you execute the workflow, the values from
the variable input file override the workflow variables default values.
. Select the system where you want to execute the workflow.
. Select Next.
. Specify the unique workflow name.
. Select or enter an Owner Use ID and select Assign all steps to owner user ID.
. Select Finish.
The workflow is registered in z/OSMF and ready to execute.
. Select the workflow that you registered from the workflow list.
. Execute the steps in order.
For general information about how to execute z/OSMF workflow steps, watch the z/OSMF Workflows
Tutorial.
. Perform the following steps to execute each step individually:
i. Double-click the title of the step.
ii. Select the Perform tab.
iii. Review the step contents and update the input values as required.
iv. Select Next.
v. Repeat the previous two steps to complete all items until the option Finish is available.
vi. Select Finish.
After you execute each step, the step is marked as Complete. The workflow is executed.
After you complete executing all the steps individually, the Zowe SMP/E is created.
Activating Zowe
File system execution
If you mount the file system in which you have installed Zowe in read-only mode during execution, then you
do not have to take further actions to activate Zowe.
Zowe customization
You can find the necessary information about customizing and using Zowe on the Zowe doc site.
For more information about how to customize Zowe, see Configuring Zowe after installation.
For more information about how to use Zowe, see Using Zowe.
Installing Zowe from a Portable Software
Version: v2.0.x LTS
Instance
As a systems programmer, your responsibilities include acquiring, installing, maintaining, and configuring
mainframe products on your systems. z/OSMF lets you perform these tasks. z/OSMF lets you manage
software on your z/OS systems through a browser at any time, from any location. By streamlining some
traditional tasks and automating others, z/OSMF can simplify some areas of system management and also
reduce the level of expertise that is required for managing system activities. Experienced users can view,
define, and update policies that affect system behavior, monitor system performance, and manage their
z/OS software. As products and vendors adopt z/OSMF services, you can install and maintain all your
mainframe products in a common way according to industry best practices. After configuration is complete,
you can execute the product and easily provision new software instances for use on other systems
throughout your environment.
Prerequisites
To install Zowe using z/OSMF, ensure that you meet the following requirements:
z/OSMF 2.3 or higher
1.2GB of free space
READ access to data set names with the HLQ ZWE on the user ID you use to deploy the portable
package
Procedure
Refer to the following subpages to guide you through the installation procedure using z/OSMF.
Address z/OSMF Requirements
Provides information about z/OSMF general configuration and security requirements.
Acquire a z/OSMF Portable Software Instance
Provides the steps to acquire the product software by downloading the z/OSMF portable software
instance to the z/OSMF host. You must then register the portable software instance in z/OSMF.
Install Product Software Using z/OSMF Deployments
Provides the steps to install (deploy) the portable software instance to an LPAR using z/OSMF
Deployments. This step creates the SMP/E environment and runs the RECEIVE, APPLY, and ACCEPT
steps to prepare the software instance for SMP/E operations. This step also:
When these tasks are completed, you are ready to install preventive maintenance.
Address z/OSMF Requirements
Version: v2.0.x LTS
Before you install Zowe using IBM z/OSMF, address the following installation and security requirements. Your
systems programmers and security administrators can complete these tasks in parallel.
Apply required maintenance for Common Components and Services for z/OS (CCS) Version 15.0
(SO12499)
Role: Systems programmer
The CCS PTF installs load module stubs for select IBM products into your installed CCS library
hlq.ZWE0CALL. If you are prompted during installation for the data set name of a load library for an
IBM product that is not installed, specify your installed hlq.ZWE0CALL data set name.
Configure z/OSMF
Role: Systems programmer, security administrator, domain administrator
The IBM z/OS Management Facility Configuration Guide is your primary source of information
about how to configure z/OSMF. You can open the IBM documentation in a separate browser tab
for reference during installation of your products using z/OSMF Deployments. To prevent
configuration errors and to enable z/OSMF Software Update for maintenance, apply all z/OSMF
related maintenance before you begin the installation process.
Configure z/OSMF security
Role: Security administrator
Configure z/OSMF security for ACF2, Top Secret, or IBM RACF as applicable to authorize users and
resources. To prevent SSL handshake failures when importing product information into z/OSMF,
make sure that you have added the Digicert Intermediate CA certificate to the z/OSMF keyring. For
information, see Import Product Information into z/OSMF.
Confirm that the installer has read, create, update, and execute privileges in z/OS
Role: Security administrator
Write access is also required to the UNIX System Services (USS) directories that are used for the
installation process. To deploy a product that has USS components, the installer's user ID must
have access to the appropriate resource profiles in the UNIXPRIV class, access to the
BPX.SUPERUSER resource profile in the FACILITY class, or UID(0). For UNIXPRIV, read access is
required to SUPERUSER.FILESYS.CHOWN, SUPERUSER.FILESYS.CHGRP, and
SUPERUSER.FILESYS.MOUNT.
Address USS requirements
Role: Systems programmer, security administrator
Address the following USS requirements:
Create a USS directory to receive the z/OSMF pax file and to perform the unpack steps.
Confirm that you have write authority to the USS directories that are used for the z/OSMF pax
installation process.
Confirm that you have available USS file space.
To download and unpack the pax file, you need free space that is approximately 3.5 times the pax
file size in the file system that contains the pax directories. For example, to download and unpack a
14-MB pax file, you need approximately 49 MB of free space in the file system hosting your pax
directory. If you do not have sufficient free space, error messages like EZA1490I Error writing to
data set or EZA2606W File I/O error 133 can occur.
Configure SMP/E Internet Service Retrieval
Role: Systems programmer, security administrator
Configure SMP/E Internet Service Retrieval to receive and download maintenance on a regular
cadence or build custom maintenance packages (order PTFs, APARs, critical, recommended, all, or
just HOLDDATA). This step is our recommended best practice when installing maintenance and is
required to use the z/OSMF Software Update. For configuration details, see the Mainframe
Common Maintenance Procedures documentation.
After these requirements have been addressed, you are ready to acquire a z/OSMF Portable Software
Instance or Configure a Software Instance using z/OSMF Workflows.
Acquire a z/OSMF Portable Software
Version: v2.0.x LTS
Instance
As a systems programmer, you can acquire an IBM z/OSMF portable package for your product and then add
the portable software instance to z/OSMF. The product SMP/E environments are pre-built, backed up, and
made available for download as a z/OSMF portable software instance. After you acquire the portable
software instance, you can use z/OSMF Deployments to perform the installation and z/OSMF workflows to
perform post-install configuration.
When you complete the acquisition process, the product software is ready for installation using z/OSMF
Deployments.
Note: Before you begin the acquisition process, ensure that you address the z/OSMF requirements.
The z/OSMF product acquisition process consists of the following tasks.
. Download the portable software instance from Zowe downloads and transfer it to the mainframe.
. Register the portable software instance in z/OSMF.
Refer to the sections below for instructions.
Deployments
As a systems programmer, your responsibilities include installing product software in your z/OS environment.
After the portable software instance or software instance is registered in z/OSMF, you can use z/OSMF
Deployments to install the product software and create the product data sets (global, CSI, target libraries,
and distribution libraries) for the new software instance. The deployment jobs create a copy of the source
product data sets to create the product target runtime environment. Creating a copy of the SMP/E target
data sets keeps the SMP/E environment clean and it also isolates the product runtime environment for
maintenance activities. You can also perform z/OSMF workflows to customize the SMP/E data sets, mount
UNIX System Services (USS) files if necessary, and configure the new software instance on the target
system.
To install Zowe PSWI using z/OSMF and make the product software available for use on a system by users
and other programs, define a new deployment. This step defines the SMP/E environment name and the
prefix of the CSI data set in z/OSMF. You also specify data set allocation parameters for all SMP/E data sets,
target libraries, and distribution libraries. To define a new deployment, complete the deployment checklist
(specify the USS path, DSN, VOLSERs), and submit the deployment jobs through the z/OSMF user interface.
When the deployment is complete, you have a source and target copy of the software.
For more information about these tasks, see Deploying software in the IBM documentation.
Subsequent maintenance activities for the product update the SMP/E environment without affecting your
active product runtime environments. You decide when to redeploy the maintenance-updated SMP/E target
data sets to each of the product runtime environments.
Note: The installer requires read, create, update, and execute privileges in z/OS. Write access is also
required to the USS directories that are used for the installation process. To deploy a product that has USS
components, the installer's user ID must have access to the appropriate resource profiles in the UNIXPRIV
class, access to the BPX.SUPERUSER resource profile in the FACILITY class, or UID(0). For UNIXPRIV, read
access is required to SUPERUSER.FILESYS.CHOWN, SUPERUSER.FILESYS.CHGRP, and
SUPERUSER.FILESYS.MOUNT.
. Display the Deployments table in z/OSMF (Software ManagementU, Deployments).
. Define a new deployment by selecting New from the Actions menu.
The deployment checklist displays. You can also modify, view, copy, cancel, or remove existing
deployments.
. Complete the deployment checklist items as described in Defining new deployments in the IBM
documentation.
As you complete the deployment checklist, be sure to make the following selections:
The deployment process is complete. The new software instance is defined to z/OSMF. You are now ready to
Import Product Information into z/OSMF before you install product maintenance.
Initializing the z/OS system
Version: v2.0.x LTS
After you install the Zowe runtime, you must initialize Zowe with proper security configurations, certificates,
and so on before you can start it. To do this, you run the zwe init command. This step is common for
installing and configuring Zowe from either a convenience build or from an SMP/E build.
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)
You can type zwe init --help to learn more about the command or see the zwe init command
reference for detailed explanation, examples, and parameters.
zwe init command requires a Zowe configuration file to proceed. This configuration file instructs how
Zowe should be initialized. Please create and review this file before proceeding.
Procedure
To initialize the z/OS system and permissions that Zowe requires, run the following command.
Next steps
The zwe init command runs the sub-commands in sequence automatically. If you have successfully ran
the above command, you can move on to start Zowe.
You can choose to run the sub-commands one by one to define each step based on your need, or if you
encounter some failures with zwe init command, you can pick up the failed sub-commands step
specifically and re-run it.
. Prepare custom MVS data sets. Copy the data sets provided with Zowe to custom data sets.
. Initialize Zowe security configurations. Create the user IDs and security manager settings.
If Zowe has already been launched on a z/OS system from a previous release of Zowe v2 you can skip
this security configuration step unless told otherwise in the release documentation.
. APF authorize load libraries containing the modules that need to perform z/OS privileged security calls..
. Configure Zowe to use TLS certificates.
. (Required only if you are configuring Zowe for cross LPAR sysplex high availability): Create the VSAM
data sets used by the Zowe API Mediation Layer caching service.
. Install Zowe main started tassks.
To learn how to run the zwe init command step by step, type zwe init <sub-command> --help .
For example, zwe init stc --help .
Initializing Zowe custom data sets
Version: v2.0.x LTS
Learn how to intialize Zowe custom MVS data sets by using the zwe init mvs command.
Introduction
During the installation of Zowe, three data sets SZWEAUTH , SZWESAMP and SZWEEXEC are created and
populated with members copied across from the Zowe installation files. The contents of these data sets
represent the original files that were provided as part of the Zowe installation and are not meant to be
modified because they will be replaced during subsequent upgrades of Zowe version 2.
For modification and execution, you must create custom data sets by using the zwe init mvs command.
For detailed information about this command, see the zwe init mvs command reference.
The zowe.yaml section that contains the parameters for the data set names is:
The storage requirements for the three data sets are included here.
PARM
CUST.PARMLIB Library zowe.setup.dataset.parmlib ANY U PDSE FB
Members
CUST.JCLLIB JCL
Members zowe.setup.dataset.jcllib ANY U PDSE FB
CLIST
CUST.ZWESAPL copy zowe.setup.dataset.authPluginLib ANY U PDSE U
utilities
Procedure
To initialize Zowe custom data sets, run the following command:
Here is an example of running zwe init mvs .
Results
If this step is successful, there will be three custom data sets matching the values in
zowe.setup.dataset.parmlib , zowe.setup.dataset.jcllib and
zowe.setup.dataset.authPluginLib in the zowe.yaml file. The member ZWESIP00 will exist in
the CUST.PARMLIB and the JCLLIB and ZWESAPL will be empty.
In addition to the three custom data sets, the PDS SZWEAUTH is created. This may already exist. In this
case, you will receive the error message Error ZWEL0158E: IBMUSER.ZWEV2.SZWEAUTH already
exists . You can ignore this message, or you can use the --allow-overwritten option on the
command. For example, zwe init mvs -c zowe.yaml --allow-overwritten .
Initialize Zowe security configurations
Version: v2.0.x LTS
This security configuration step is required for first time setup of Zowe. If Zowe has already been launched
on a z/OS system from a previous release of Zowe v2, you can skip this step unless told otherwise in the
release documentation.
The JCL member .SZWESAMP(ZWESECUR) is provided to assist with the security configuration. Before
submitting the ZWESECUR JCL member, you should customize it to match site security rules. For script
driven scenarios, you can run the command zwe init security which uses ZWESECUR as a template
to create a customized member in .CUST.JCLLIB which contains the commands needed to perform the
security configuration.
If ZWESECUR encounters an error or a step that has already been performed, it will continue to the end, so
it can be run repeatedly in a scenario such as a pipeline automating the configuration of a z/OS environment
for Zowe installation.
It is expected that the security administrator at a site will want to review, edit where necessary, and either
execute ZWESECUR as a single job or else execute individual TSO commands one by one to complete the
security configuration of a z/OS system in preparation for installing and running Zowe.
The following video shows how to locate the ZWESECUR JCL member and execute it.
Next steps
The ZWESECUR JCL does not perform the following initialization steps so after you run ZWESECUR , you
must complete these steps manually to further configure your z/OS environment.
Perform APF authorization of Zowe load libraries that require access to make privileged calls
Copy the JCL members for Zowe's started tasks to a PDS on proclib concatenation path
Create VSAM data sets used by the Zowe caching service
Grant users permission to access z/OSMF
Configure an ICSF cryptographic services environment
Configure multi-user address space (for TSS only)
The ZWESECUR JCL performs the following initialization steps so you do not need to perform them
manually if you have successfully run the JCL. However, if you prefer to manually configure the z/OS
environment, you must complete the following steps next.
User IDs and groups for the Zowe started tasks
Configure ZWESLSTC to run high availability instances under ZWESVUSR user ID
Configure the cross memory server for SAF
Configuring the z/OS system for Zowe
Version: v2.0.x LTS
Learn how to configure the z/OS system for Zowe. Before you begin, check the following table to understand
which steps you need to perform based on your settings.
Configuration step Purpose
Configure an ICSF Required if you want to use Zowe desktop. This step will generate
cryptographic services random numbers for zssServer that the Zowe desktop uses.
environment
Configure security Required if you want to allow users to log on to the Zowe desktop
environment switching through impersonation.
Configure address space Required if you want to set the names for the different z/OS UNIX
job naming address spaces for the Zowe runtime components.
Configure multi-user Required for TSS only. A TSS FACILITY needs to be defined and assigned
address space for TSS only to the ZWESLSTC started task.
Configure user IDs and
groups for the Zowe started Required if you have not run ZWESECUR and are manually creating the
user ID and groups in your z/OS environment.
tasks
Configure ZWESLSTC to Required if you have not run ZWESECUR and are configuring your z/OS
run Zowe high availability environment manually. This step describes how to configure the started
instances under task ZWESLSTC to run under the correct user ID and group.
ZWESVUSR user ID
Required if you have not run ZWESECUR and are configuring your z/OS
Configure the cross environment manually. This step describes how to configure the cross
memory server for SAF memory server for SAF to guard against access by non-priviledged
clients.
Configuration step Purpose
Configure main Zowe Required for API Mediation Layer to map client certificate to a z/OS
server to use identity identity.
mapping
Configure signed SAF Required to configure SAF Identity tokens on z/OS so that they can be
Identity tokens IDT used by Zowe components like zss or API Mediation Layer.
Refer to the z/OS 2.3.0 z/OS Cryptographic Services ICSF System Programmer's Guide: Installation,
initialization, and customization.
CCA and/or PKCS #11 coprocessor for random number generation.
Enable FACILITY IRR.PROGRAM.SIGNATURE.VERIFICATION and RDEFINE CSFINPV2 if
required.
Configure user IDs and groups for the Zowe started tasks
Zowe requires a user ID ZWESVUSR to execute its main z/OS runtime started task. This user ID must have a
valid OMVS segment.
Zowe requires a user ID ZWESIUSR to execute the cross memory server started task ZWESISTC . This
user ID must have a valid OMVS segment.
Zowe requires a group ZWEADMIN that both ZWESVUSR and ZWESIUSR should belong to. This group
must have a valid OMVS segment.
If you have run ZWESECUR , you do not need to perform the steps described in this section, because the
TSO commands to create the user IDs and groups are executed during the JCL sections of ZWESECUR .
If you have not run ZWESECUR and are manually creating the user ID and groups in your z/OS environment,
the commands are described below for reference.
To create the ZWEADMIN group, issue the following command:
To create the ZWESVUSR user ID for the main Zowe started task, issue the following command:
To create the ZWESIUSR group for the Zowe cross memory server started task, issue the following
command:
For every TSO user ID that is going to log on to Zowe and use services that require z/OSMF, it must have
permission to access the z/OSMF services that are used by Zowe. They should be added to the group with
appropriate z/OSMF privileges, IZUUSER or IZUADMIN by default.
This step is not included in the provided Zowe JCL because it must be done for every TSO user ID who
wants to access Zowe's z/OS services. The list of those user IDs will typically be the operators,
administrators, developers, or anyone else in the z/OS environment who is logging in to Zowe.
Note: You can skip this section if you use Zowe without z/OSMF. Zowe can operate without z/OSMF but
services that use z/OSMF REST APIs will not be available, specifically the USS, MVS, and JES Explorers and
the Zowe Command Line Interface files, jobs, workflows, tso, and console groups.
To grant permissions to the user ID to access z/OSMF,
If you use RACF, issue the following command:
If you use ACF2, issue the following commands:
If you use Top Secret, issue the following commands:
APF authorize load libraries
Version: v2.0.x LTS
Learn how to perform APF authorization of Zowe load libraries that require access to make privileged calls.
Zowe contains load modules that require access to make privileged z/OS security manager calls. These are
held in two load libraries which must be APF authorized. The command zwe init apfauth will read the
PDS names for the load libraries from zowe.yaml and perform the APF authority commands.
zowe.setup.dataset.authLoadLib specifies the user custom load library, containing the
ZWELNCH , ZWESIS01 and ZWESAUX load modules. These are the Zowe launcher, the ZIS cross
memory server and the auxiliary server.
zowe.setup.dataset.authPluginLib which references the load library for ZIS plugins.
Zowe is able to use PKCS12 certificates that are stored in USS. This certificate is used for encrypting TLS
communication between Zowe clients and the Zowe z/OS servers, as well as intra z/OS Zowe server to Zowe
server. Zowe uses a keystore directory to contain its external certificate, and a truststore directory
to hold the public keys of servers it communicate with (for example z/OSMF).
Using USS PKCS12 certificates is useful for proof of concept projects using a self signed certificates. For
production usage of Zowe it is recomended to work with certificates held in z/OS keystores. Working with
z/OS keystores may require system administrator priviledges and working with your z/OS security team, so
the self signed PKCS12 path is provided to assist with configuring and launching test and scratch Zowe
instances.
ring
Zowe is able to work with certificates held in a z/OS Keyring.
The JCL member .SZWESAMP(ZWEKRING) contains the security commands to create a keyring named
` ZoweKeyring and manage the certificate and certificate authoritie (CA) used by Zowe's servers to
encrypt TLS communications. The JCL contains commands for three z/OS security managers: RACF,
TopSecret, and ACF/2.
There are two ways to configure and submit ZWEKRING .
Customize and submit the ZWEKRING JCL member.
Customize the zowe.setup.certificate section in zowe.yaml and use the zwe init
certificate command.
If you use the zwe init certificate command this will prepare a customized JCL member using
ZWEKRING as a template.
The follow command output shows generation of a self signed JCERACFKS certificate using the default
values. Some detailed output messages have been omitted.
When the command is run a customized JCL member name in created the CUST.JCLLIB data set. The
PDS name is defined in the zowe.setup.dataset.jcllib property. In the sample below the PDS
meember WINCHJ.ZWEV2.CUST.JCLLIB(ZW101431) is created that contains the security manager
commands and then submitted as a job ID ZWEKRING(JOB03054) .
Even though the job ends with code 0 there may be failures in the individual steps. It is advised to check the
job output. The security manager commands in the job will be generated based on the value of
zowe.security.product , and the job steps for each product are broken apart by security manager.
Because the --update-config parmarater was specified the runtime configuration section of
zowe.yaml is updated to match the values to the generated keystore, certificate, and certificate authority.
Set up Zowe certificates using workflows
Version: v2.0.x LTS
Based on the variable setup from the first step, the workflow can perform various certificate
configurations and connect certificates to a keyring in RACF, TSS, and ACF2 security systems.
. Create a certificate sign request (CSR) using ZWECRECR.xml
The ZWECRECR.xml workflow creates a CSR request and has the following features:
Based on a variable setup, generates a certificate sign request.
You must define variables.
A CSR request is stored into a data set. Then the data set is automatically converted into a USS file.
You must specify the USS file path.
The workflow includes the steps that you can see on the following image:
Note: You can find links to the specific security systems (BCM, IBM) official documentation in the
instructions section of the workflow in related steps.
. Sign a CSR request using ZWESIGNC.xml
The ZWESIGNC.xml workflow signs a CSR request.
After the successful workflow execution, the certificate is signed by the specified certificate authority
and is stored in USS.
The workflow includes the steps that you can see on the following image:
Fill in the fields, that you can see on the following image, to sign a CSR request. Ensure that the
workflow includes the following information:
A USS location path of the CSR file
A USS location path where a signed certificate is stored in pem format
. Load the Signed Client Authentication Certificate into ESM using ZWELOADC.xml
The ZWELOADC.xml workflow loads a signed client authentication certificate into a specific ESM
under your ACID.
The workflow can load ASCII- or EBCDIC-encoded certificate into a data set. Then, based on the
variable setup, the workflow loads the certificate into a specific ESM.
The workflow includes the steps that you can see on the following image:
Creating VSAM caching service datasets
Version: v2.0.x LTS
Zowe can work in a high availability (HA) configuration where multiple instances of the Zowe launcher are
started, either on the same LPAR or different LPARs connected through sysplex distributor. If you are only
running a single Zowe instance on a single LPAR you do not need to create a caching service so you may
skip this step.
In an HA setup the different Zowe API Mediation Gateway servers share the same northbound port (by
default 7554 ), and client traffic to this port is distributed between separate gateways that in turn dispatch
their work to different services. When any of the services individually become unavailable the work can be
routed to available services, which means that the initial northbound request will be fulfilled.
There are different storage methods that can be used as as the caching service for Zowe. One of these is
VSAM and this chapter describes how to create the data sets if you are using VSAM as your caching
service. If you are using another caching service such as redis or infinispan then you do not need to
create any VSAM files and you can skip the step described in this chapter. For more information on the
different caching services see Configuring the Caching Service for HA.
zowe.components.caching-service.storage.vsam.name variable
This is the data set name that the ZWECSVSM JCL will create. This is used to replace all occurrences of
#dsname in the ZWECSVSM data set.
Note: The ZWECSVSM JCL defines the key length and record length of the VSAM instance. If the key
length and record length of this JCL is changed,
zowe.environments.CACHING_STORAGE_VSAM_KEYLENGTH and
zowe.environments.CACHING_STORAGE_VSAM_RECORDLENGTH must be set to the new values.
zowe.components.caching-service.storage.mode variable
This specifies whether you would like to use Record Level Sharing (RLS) for your VSAM data set. RLS
is recommended for Sysplex deployment. NONRLS is also an allowed value.
zowe.setup.vsam.storageClass variable
The JCL members for each of Zowe's started tasks need to be present on the JES proclib concatenation
path. The command zwe init stc will copy these from the install source location .SZWESAMP to the
targted PDS specified in the zowe.setup.dataset.proclib value USER.PROCLIB . The three proclib
member names are specified in zowe.yaml arguments.
The zwe init stc command uses the CUST.JCL LIB data sets as a staging area to contain
intermediatory JCL which are transformed version of the originals that are shiped in .SZWESAMP with
paths, PDS locations, and other runtime data updated. If you wish to just generate the CUST.JCLLIB
members without having them copied to USER.PROCLIB , specify --security-dry-run . If the JCL
members are already in the target PROCLIB, specify --allow-overwritten .
Here is an example:
Installing and configuring the Zowe cross
Version: v2.0.x LTS
The cross memory server is a long running server process that, by default, runs under the started task name
ZWESISTC with the user ID ZWESIUSR and group of ZWEADMIN .
The ZWESISTC started task serves the Zowe desktop that is running under the ZWESLSTC started task,
and provides it with secure services that require elevated privileges, such as supervisor state, system key, or
APF-authorization.
The user ID ZWESIUSR that is assigned to the cross memory server started tasks must have a valid OMVS
segment and read access to the load library SZWEAUTH and PARMLIB data sets. The cross memory server
loads some functions to LPA for its PC-cp services.
To install the cross memory server, enable the PROCLIB, PARMLIB, and load module. This topic describes
the steps to do this manually.
Load module
The cross memory server load module ZWESIS00 is installed by Zowe into a PDSE SZWEAUTH . For the
cross memory server to be started, the load module needs to be APF-authorized and the program needs to
run in key(4) as non-swappable.
APF authorize
APF authorize the PDSE SZWESAUTH . This allows the SMP/E APPLY and RESTORE jobs used for applying
maintenance to be operating on the runtime PDSE itself when PTF maintenance is applied.
Do not add the SZWEAUTH data set to the system LNKLIST or LPALST concatenations.
To check whether a load library is APF-authorized, you can issue the following command:
where the value of DSNAME is the name of the SZWEAUTH data set as created during Zowe installation that
contains the ZWESIS01 load module.
Issue one of the following operator commands to dynamically add the load library to the APF list (until next
IPL), where the value of DSNAME is the name of the SZWEAUTH data set, as created during Zowe
installation.
If the load library is not SMS-managed, issue the following operator command, where volser is the
name of the volume that holds the data set:
If the load library is SMS-managed, issue the following operator command:
Configuring using zwe init apfauth
If you are using the zwe init command to configure your z/OS system, the step zwe init apfauth
can be used to generate the SETPROG commands and execute them directly. This takes the input
parameters zowe.setup.mvs.authLoadLib for the SZWEAUTH PDS location, and
zowe.setup.mvs.authPluginLib for the location of the PDS that is used to contain plugins for the
cross memory server. For more information on zwe init apfauth see, APF Authorize Load Libraries.
Making APF auth be part of the IPL
Add one of the following lines to your active PROGxx PARMLIB member, for example
SYS1.PARMLIB(PROG00) , to ensure that the APF authorization is added automatically after next IPL. The
value of DSNAME is the name of the SZWEAUTH data set, as created during Zowe installation:
If the load library is not SMS-managed, add the following line, where volser is the name of the
volume that holds the data set:
If the load library is SMS-managed, add the following line:
The PDS member SZWESAMP(ZWESIMPRG) contains the SETPROG statement and PROGxx update for
reference.
Key 4 non-swappable
The cross memory server load module ZWESIS01 must run in key 4 and be non-swappable. For the server
to start in this environment, add the following PPT entries for the server and address spaces to the SCHEDxx
member of the system PARMLIB.
The PDS member SZWESAMP(ZWESISCH) contains the PPT lines for reference.
Then, issue the following command to make the SCHEDxx changes effective:
PARMLIB
The ZWESISTC started task must find a valid ZWESIPxx PARMLIB member in order to be launched
successfully. The SZWESAMP PDS created at installation time contains the member ZWESIP00 with
default configuration values. You can copy this member to another data set, for example your system
PARMLIB data set, or else leave it in SZWESAMP .
If you choose to leave ZWESIPxx in the installation PDS SZWESAMP used at installation time, this has
advantages for SMP/E maintenance because the APPLY and RESTORE jobs will be working directly against
the runtime library.
Wherever you place the ZWESIP00 member, ensure that the data set is listed in the PARMLIB DD
statement of the started task ZWESISTC .
PROCLIB
For the cross memory server to be started, you must move the JCL PROCLIB ZWESISTC member from the
installation PDS SAMPLIB SZWESAMP into a PDS that is on the JES concatenation path.
You need to update the ZWESISTC member in the JES concatenation path with the location of the load
library that contains the load module ZWESIS01 by editing the STEPLIB DD statement of ZWESISTC . Edit
the PARMLIB DD statement to point to the location of the PDS that contains the ZWESIP00 member.
For example, the sample JCL below shows ZWESISTC where the APF-authorized PDSE containing
ZWESIS01 is IBMUSER.ZWEV2.SZWEAUTH(ZWESIS01) and the PDS PARMLIB containing ZWESIP00 is
IBMUSER.ZWEV2.SZWESAMP(ZWESIP00) .
SAF configuration
Because the ZIS server makes z/OS security calls it restrits which clients are able to use it services, by
requiring them to have READ access to a security profile ZWES.IS in the FACILITY class.
The Zowe launcher started task ZWESLSTC needs to be able to access the ZIS server, which requires that
the user ID ZWESVUSR has access to ZWES.IS . The steps to do this are desribed in Configure the cross
memory server for SAF.
The load module ZWESI00 must run in key 4 and be non-swappable by adding a PPT entry to the
SCHEDxx member of the system PARMLIB PPT PGMNAME(ZWESI00) KEY(4) NOSWAP .
The cross memory server runs as a started task ZWESISTC that uses the load module ZWESIS01 .
In some use cases, the Zowe cross memory server has to spawn child address spaces, which are known as
auxiliary (AUX) address spaces. The auxiliary address spaces run as the started task ZWESASTC using the
load module ZWESAUX and are started, controlled, and stopped by the cross memory server.
An example of when an auxiliary address space is used is for a system service that requires supervisor state
but cannot run in cross-memory mode. The service can be run in an AUX address space which is invoked by
the Cross Memory Server acting as a proxy for unauthorized users of the service.
Do not install the Zowe auxiliary address space unless a Zowe extension product's installation guide
explicitly asks for it to be done. This will occur if the extension product requires services of Zowe that cannot
be performed by the cross memory server and an auxiliary address space needs to be started.
A default installation of Zowe does not require auxiliary address spaces to be configured.
You do not start or stop the ZWESASTC manually.
Configure Zowe with z/OSMF Workflows
Version: v2.0.x LTS
As a system programmer, after you install Zowe, you can register and execute the z/OSMF workflows in the
web interface to complete the Zowe configuration. z/OSMF helps to simplify the Zowe configuration tasks
and reduce the level of expertise that is needed for Zowe configuration.
Ensure that you meet the following requirements before you start the Zowe configuration:
Install and configure z/OSMF
Install Zowe with an SMP/E build, PSWI, or a convenience build
You can complete the following tasks with the z/OSMF workflow:
Configure the Zowe instance directory
Enable the API ML gateway
Enable the metrics service
Enable the API catalog
Enable automatic discovery
Enable a caching service
Enable an application server
Enable the ZSS component
Enable the jobs API
Enable the files API
Enable JES Explorer
Enable MVS Explorer
Enable USS Explorer
You can execute the Zowe configuration workflow either from a PSWI during deployment or later from a
created software instance in z/OSMF. Alternatively, you can execute the configuration workflow z/OSMF
during the workflow registration process.
After you register the workflow definition file, perform the following steps to complete the process:
. Define variables
The workflow includes the list of instance configuration and the Zowe variables. Enter the values for
variables based on your mainframe environment, Zowe instance configuration, and wanted
components.
. Create configuration
Execute the step to create a configuration zowe.yaml file with the variable setup that was defined in step
1.
. Run Zowe install
Execute the zwe install command with the previously stored zowe.yaml file as a parameter.
If you receive an error message (such as RC higher than 0), ensure that you edit incorrect input values
or system setup before you re-run the zwe install command. To overwrite changed output, edit
the step by adding the --allow-overwritten tag to the install command.
Example: Command that re-runs the installation
. Run Zowe init
Execute the zwe init command with the previously stored zowe.yaml file as a parameter.
Note: Messages and error codes from the subsequent JOBS command are not forwarded back to
z/OSMF.
If you receive an error message (such as RC higher than 0) and want to find out the error cause, enter
ISPF and find corresponding subsequent JOBLOG.
If you execute the init step again, either manually delete failed artifacts that are created from previous
init steps, or edit the step by adding --allow-overwritten tag to the init command.
Example: Command that re-runs init
After you execute each step, the step is marked as Complete. After completing the workflow execution, you
can view the Zowe started task.
Zowe has high availability feature built-in. This doc guides you through the configuration steps to enable this
feature.
To deploy Zowe high availability, you must set up the Parallel Sysplex® environment. A Parallel Sysplex is a
collection of z/OS® systems that cooperatively use certain hardware and software components to achieve a
high-availability workload processing environment.
If you do not want the distributor to switch back to the preferred target when it becomes available, you can
specify the NOAUTOSWITCHBACK parameter for the VIPADISTRIBUTE statement.
Configuring z/OSMF for high availability in
Version: v2.0.x LTS
Sysplex
z/OSMF high availability (HA) should be configured in Hot Standby mode to ensure availability of REST
services. The goal of this configuration is to ensure that one z/OSMF server is always available to provide the
REST services.
In Hot Standby mode, there is at least one backup (hot-standby) server and a preferred target server. Both
targets are active, and both z/OSMF servers are bound to the DVIPA. The preferred z/OSMF server receives
all new incoming requests. When the preferred z/OSMF server fails or the system becomes down, new
requests are routed to the backup (hot-standby) server. The distributing DVIPA does not perform load
balancing of requests across multiple systems. For more information, read the following articles in IBM
Documentation:
Configuring z/OSMF for availability
Configuring z/OSMF for high availability
The VIPADISTRIBUTE statement with PREFERRED and BACKUP settings is used to enable automatic
dynamic VIPA takeover to occur, if needed.
Both z/OSMF servers are bound to the DVIPA x.x.x.V. With both z/OS systems active in the Sysplex, the
preferred z/OSMF server, SYSA receives all new incoming requests. If SYSA fails, new work requests for
z/OSMF are routed to the server on SYSB. When SYSA resumes normal operations, new work requests for
z/OSMF are routed to SYSA again. This is the default behavior because the AUTOSWITCHBACK parameter
of the VIPADISTRIBUTE statement is in effect by default.
If you do not want the distributor to switch back to the preferred target when it becomes available, you can
specify the NOAUTOSWITCHBACK parameter for the VIPADISTRIBUTE statement.
Configuring the Caching Service for HA
Version: v2.0.x LTS
Zowe uses the Caching Service to centralize the state data persistent in high availability (HA) mode. If you
are runnning the caching service on z/OS there are three storage methods: inMemory , infinispan or
VSAM . If you are running the caching service off platform, such as a linux or windows container image, it is
also possible to specify redis or infinispan .
To learn more about Caching Service, see Using the Caching Service.
For users
inMemory
This storage method is designed for quick start of the service and should be used only for single
instance scenario and development or test purpose. Do not use it in production or high availability
scenario.
To use this method, set the zowe.components.caching-service.storage.mode value to
inMemory in the zowe.yaml configuration file. When this method is enabled, the Caching Service
will not persist any data.
VSAM
To use this method,
i. Set the value of zowe.components.caching-service.storage.mode value to VSAM in the
zowe.yaml configuration file.
ii. Create a VSAM data set. See Initialize VSAM data set for instructions. There are two ways to create
the data set, either using the JCL member SZWESAMP(ZWECVSEM) where the data set name is
defined in the #dsname variable.
iii. In zowe.yaml , configure zowe.components.caching-sevice.storage.vsam.name with
the VSAM data set name. If in step 2 you used zwe init vsam to create the VSAM data set
then the values will already be set.
redis
Redis is not available if you are running the API Mediation Layer on z/OS under unix system services. Its
usage is for when the APIML is running off platform, such as in a linux or windows container as part of a
hybrid cloud deployment.
To enable this method, set the value of zowe.components.caching-service.storage.mode to
redis in the zowe.yaml configuration file. There are a number of values to control the redis nodes,
sentinel and ssl properties that will need to be set in the zowe.yaml file. For more information on
these properties and their values see Redis configuration.
infinispan
Infinispan is designed to be run mainly on z/OS since it offers good performance. To enable this
method, set the value of zowe.components.caching-service.storage.mode to infinispan
in the zowe.yaml configuration file. Infinispan environment variables are not currently following the v2
naming convention, so they must be defined into zowe.environments section. For more information
on these properties and their values see Infinispan configuration.
Starting and stopping Zowe
Version: v2.0.x LTS
zwe start command will use ROUTE command to send S ZWESLSTC command to LPAR2 system.
To stop Zowe, run zwe stop --config /path/to/my/zowe.yaml command. It will issue P
command to Zowe job.
Here is an example:
Note, please be aware that not all components can be restarted with this method. Some components may
rely on another and you may need to restart affected components as well.
Verifying Zowe installation on z/OS
Version: v2.0.x LTS
After the Zowe™ started task ZWESLSTC is running, follow the instructions in the following sections to
verify that the components are functional.
Verifying Zowe Application Framework installation
Verifying API Mediation installation
Verifying z/OS Services installation
Note: Not all components may have been started. Which components have been started depends on your
setting of the component enabled status in Zowe configuration file (usually zowe.yaml ). If you set
enabled to be true for gateway , discovery and api-catalog , the API Mediation Layer and
z/OS Services are started. If you set enabled to be true for app-server and zss , the Zowe
Application Framework (also known as Zowe desktop) are started. Those using containerization may only
have ZSS started. For more information, see reference of YAML configurations - components.
Zowe (server) containers are available for download as an alternative to running Zowe servers on z/OS
through the Zowe convenience and SMP/E builds. You can choose the appropriate installation type for your
use case. There are several advantages of using containers wherein you can:
Run Zowe servers on other platforms including Linux on Z and your PC
Run Zowe servers local to your system for rapid development
Run redundant copies of servers for scaling capacity to meet workload requirements
Leverage container monitoring tools
If you are new to containers, you can learn about the concepts from the Kubernetes website.
The Zowe containers are designed to be run together with extensions and Zowe utilities and therefore are
built for orchestration software that can manage the relationship and lifecycle of the containers. The
following topics guide you to set up and use Zowe's containers with the Kubernetes orchestration software.
. Prerequisites
. Downloading and installing
. Configuring the Zowe container environment
. Starting, stopping, and monitoring
. Known limitations
Known limitations
You may encounter an issue that some plugins are not showing up in Zowe Desktop. You can try
Refresh Applications icon showing up in Desktop start menu.
You may encounter an issue that some services are not showing up in Zowe API Catalog. You can try
Refresh Static APIs button showing up in top-right corner of API Catalog web page.
Prerequisites
Version: v2.0.x LTS
Before you install the Zowe server container, make sure that you have the required software and
environments.
Zowe installed on z/OS for users of ZSS and ZIS (default when you use the Zowe Application
Framework app-server , the Zowe Desktop, or products that are based on them)
z/OSMF installed on z/OS for users of it (default when you use gateway , API Mediation Layer, Web
Explorers, or products that are based on them)
A container runtime, such as:
Docker
CRI-O
containerd
Kubernetes Cluster software
kubectl, for initial setup and management of the cluster
Note: This documentation uses container terminology that may be explained within the Kubernetes
Glossary.
Kubernetes cluster
The Zowe containerization solution is compatible with Kubernetes v1.19+ or OpenShift v4.6+.
You can prepare a Kubernetes cluster based on your requirements in many different ways.
For development purposes, you can set up a Kubernetes cluster on your local computer in one of the
following ways:
Enable Kubernetes shipped with Docker Desktop
Set up minikube
Attention! You must make sure that the Kubernetes cluster you have created has a minimum RAM of
3GB in order for Zowe to start.
For production purposes, you can set up a Kubernetes cluster in one of the following ways:
Bootstrap your own cluster by following instructions in Installing Kubernetes with deployment tools
in the Kubernetes documentation.
Provision a Kubernetes cluster from popular Cloud vendors:
Amazon Elastic Kubernetes Service
Microsoft Azure Kubernetes Service
IBM Cloud Kubernetes Service
Google Cloud Kubernetes Engine
kubectl tool
You need kubectl CLI tool installed on your local computer where you want to manage the Kubernetes
cluster. For instructions on how to install the kubectl tool, see Install Tools in the Kubernetes documentation.
Downloading and installing
Version: v2.0.x LTS
Downloading
You can download Zowe's containers in one of the following ways:
Downloading configuration samples
Downloading container images
Downloading configuration samples
The easiest way to install and run Zowe's containers is by using the configuration samples that are provided
on Zowe's website. If you don't already have these samples, you can download them by completing the
following tasks:
. Download Zowe containerization build from zowe.org.
. Extract the compressed file to the system where you will run the Zowe containers.
. Find the samples within the extracted folder kubernetes .
Downloading container images
Downloading Zowe's container images manually is not required because this can be done automatically
when applying a Kubernetes deployment configuration.
If wanted, you can download Zowe's container images manually by using the docker pull commands.
This allows you to get an image from a registry or attach an image that you have downloaded directly. You
can find Zowe's container images in https://zowe.jfrog.io/ui/repos/tree/General/docker-release%2Fompzowe:
Registry: zowe-docker-release.jfrog.io
Organization: ompzowe
Full image addresses include,
zowe-docker-release.jfrog.io/ompzowe/gateway-service:latest-ubuntu
zowe-docker-release.jfrog.io/ompzowe/app-server:latest-ubuntu
zowe-docker-release.jfrog.io/ompzowe/explorer-jes:latest-ubuntu
Therefore, you can download these manually with the docker pull commands. For example,
docker pull zowe-docker-release.jfrog.io/ompzowe/app-server:latest-ubuntu
Installing
You do not need to install the Zowe containers if you use Zowe's Kubernetes configuration samples. By
default, these sample configurations will pull Zowe component images from the public Zowe docker release
registry zowe-docker-release.jfrog.io directly and then start them. Your Kubernetes nodes require
an Internet connection that can reach this registry.
An image could be considered "installed" when it is findable by Kubernetes. Just like downloading, this is
done automatically by Kubernetes but commands such as docker pull or docker load
accomplishes the same task.
Upgrading
Upgrade is an automatic process when you apply Kubernetes deployment configuration. The configuration
files tell Kubernetes to automatically download the latest version of Zowe. Here, latest is the keyword for
constantly updated version. For example zowe-docker-release.jfrog.io/ompzowe/gateway-
service:latest-ubuntu .
Note: Automatic upgrades can fail if you have changed the workload configuration files to use a specific
Zowe version. In that case, you must enter the latest version manually in the configuration file such as
zowe-docker-release.jfrog.io/ompzowe/gateway-service:2.0.0-ubuntu .
If your Kubernetes nodes do not have an Internet connection, you can follow the instruction of the previous
step to manually pull all images into all your Kubernetes nodes. After you have done this, you need to modify
all occurrences of imagePullPolicy: Always in the sample configurations and replace them with
imagePullPolicy: Never before applying them.
Configuring
Version: v2.0.x LTS
Zowe provides sample configurations that make it easy for you to run Zowe in Kubernetes. You can use them
directly or as a reference.
You can customize the configuration or make your own. If you do so, note the following objects that are
expected by the container deployments:
Kind Name Note
Namespace zowe
ServiceAccount zowe-sa
In some Kubernetes environment, you may need to define PeristentVolume and define volumeName
in PersistentVolumeClaim instead of defining storageClassName . Please consult your Kubernetes
administrator to confirm the appropriate way for your environment. This is an example to configure
PersistentVolumeClaim with pre-configured zowe-workspace-pv PeristentVolume .
--domains : Defines the domain list will be put into certificate Subject Alternative Name (SAN). This is
optional, default value is localhost .
--external-port : Defines the external port number to access APIML Gateway running in
Kubernetes. This is optional, default value is 7554 .
--k8s-namespace : Defines the Kubernetes namespace. This is optional, default value is zowe .
--k8s-cluster-name : Defines the Kubernetes cluster name. This is optional, default value is
cluster.local .
--password : Defines password of the certificate keystore. This is optional, default value is
password .
--ca-alias : Defines the alias name of the certificate authority which is used to sign CSR. This is
optional, default value is local_ca . This argument is only used to sign a new certificate if the
migration script will re-generate new certificates for Kubernetes.
--ca-password : Defines the password of the certificate authority keystore which is used to sign
CSR. This is optional, default value is local_ca_password . This argument is only used if the
migration script will re-generate new certificates for Kubernetes.
--silent or -s is an optional parameter can help you suppress all standard output except for the
Kubernetes manifests will be generated.
As a result, it displays ConfigMaps zowe-config and Secrets ( zowe-certificates-secret )
Kubernetes objects which are based on the Zowe instance and keystore used. The content looks similar to
samples/config-cm.yaml , samples/certificates-cm.yaml and samples/certificates-
secret.yaml but with real values.
b. Follow the instructions in the script output to copy the output and save it as a YAML file configs.yaml
on your computer where you manage Kubernetes.
c. Apply the file into Kubernetes:
d. Remove the previously saved configs.yaml file from all systems for security.
To verify:
kubectl get configmaps --namespace zowe
This command must display the two ConfigMaps zowe-config and zowe-certificates-cm .
kubectl get secrets --namespace zowe
Review the following table for steps you may take depending on the Kubernetes provider you use. If you
don't need additional setups, you can skip steps 4b, 4c and jump directly to the Apply zowe section.
Kubernetes Service Additional setups required
provider
minikube LoadBalancer or Port Forward (on next section Starting, stopping, and
NodePort monitoring)
docker-desktop LoadBalancer none
bare-metal LoadBalancer or Create Ingress
NodePort
cloud-vendors LoadBalancer none
To verify either case, run the following command and check that the command displays the service
gateway-service .
To enable the service externally when using LoadBalancer services, run the command:
Or if using NodePort instead, first check spec.ports[0].nodePort as this will be the port to be
exposed to external. In this case, the default discovery port is not 7553 but 32553. And you will need to use
https://<your-k8s-node>:32553/ to access APIML Discovery. To apply NodePort type
discovery-service , run the following command:
To verify either case, run the following command and check that this command displays the service
discovery-service :
This command must display the two Services gateway and discovery .
Upon completion, you can finish the setup by applying zowe and starting it.
*.discovery-service.<k8s-namespace>.svc.<k8s-cluster-name>
*.gateway-service.<k8s-namespace>.svc.<k8s-cluster-name>
*.<k8s-namespace>.pod.<k8s-cluster-name>
<k8s-namespace> is the Kubernetes Namespace you installed Zowe into. And <k8s-cluster-name>
is the Kubernetes cluster name, which usually should be cluster.local .
Without the additional domains in SAN, you may see warnings/errors related to certificate validation.
If you cannot add those domains into certificate Subject Alt Name (SAN), you can change
zowe.verifyCertificates to NONSTRICT mode. Zowe components will not validate domain names
but will continue to validate certificate chain, validity and whether it's trusted in Zowe truststore.
CAUTION
It's not recommended to disable zowe.verifyCertificates .
Notes: When the following conditions are true, this migration script will regenerate a new set of certificates
for you with proper domain names listed above.
You use zwe init command to initialize Zowe
You use PKCS#12 format keystore by defining zowe.setup.certificate.type: PKCS12
You did not define zowe.setup.certificate.pkcs12.import.keystore and let zwe
command to generate PKCS12 keystore for you
You enabled STRICT mode zowe.verifyCertificates
To manually create the ConfigMaps and Secrets used by Zowe containers, you must create the following
objects:
. A ConfigMap, with values based upon a Zowe configuration zowe.yaml and similar to the example
samples/config-cm.yaml with the following differences to the values seen on a z/OS installation:
zowe.setup and haInstances are not needed for Zowe running in Kubernetes and will be
ignored. You can remove them.
java.home and node.home are not usually needed if you are using Zowe base images.
components.discovery.port is 7553 ,
components.gateway.port is 7554 ,
components.caching-service.port is 7555 ,
components.jobs-api.port is 7600 ,
components.files-api.port is 7559 ,
components.app-server.port is 7556 .
ZWED_agent_https_port=<ZOWE_ZSS_SERVER_PORT>
. A Secret, with values based upon a Zowe keystore's files, and similar to the example
samples/certificates-secret.yaml .
PodDisruptionBudget
Zowe provides optional PodDisruptionBudget which can provide high availability during upgrade. By
default, Zowe defines minAvailable to be 1 for all deployments. This configuration is optional but
recommended. To apply PodDisruptionBudget , run this command:
To verify this step, run:
This should show you a list of PodDisruptionBudget like this:
HorizontalPodAutoscaler
Zowe provides optional HorizontalPodAutoscaler which can automatically scale Zowe components
based on resource usage. By default, each workload has a minimum of 1 replica and a maximum of 3 to 5
replicas based on CPU usage. This configuration is optional but recommended.
HorizontalPodAutoscaler relies on Kubernetes Metrics server monitoring to provide metrics through
the Metrics API. To learn how to deploy the metrics-server, see the metrics-server documentation. Please
adjust the HorizontalPodAutoscaler definitions based on your cluster resources, then run this
command to apply them to your cluster:
To verify this step, run:
This should show you a list of HorizontalPodAutoscaler like this:
Kubernetes v1.21+
If you have Kubernetes v1.21+, several optional changes are recommended based on Deprecated API
Migration Guide.
Kind CronJob : change apiVersion: batch/v1beta1 to apiVersion: batch/v1 on
workloads/zowe-yaml/cleanup-static-definitions-cronjob.yaml and
workloads/instance-env/cleanup-static-definitions-cronjob.yaml . apiVersion:
batch/v1beta1 will stop working on Kubernetes v1.25.
After Zowe's containers are installed and configured, you can refer to the following topics that help you
manage your installation.
Once both STATUS shows RUNNING , run the following command to port forward:
The & sign at the command will run the command as a background process. Otherwise, the port forward
process will occupy the terminal indefinitely until canceled as a foreground service.
kubectl describe pods -n zowe <podid> can see more details about each pod.
kubectl logs -n zowe <podid> will show you the terminal output of a particular pod, with -f
allowing you to keep the logs open as new messages are added.
kubectl get nodes -n zowe -owide will tell you more about the environment you're running.
The following checklists summarize the required steps for a base installation (first-time installation) in the
order you should perform them. The checklist includes a brief description of the steps, with links to the
comprehensive information required for the installation. The checklist also identifies the roles that are
typically required to complete the step, which enables the pre-installation planning team (systems
administrator, DevOps architect, application developer, and so on) to focus on the tasks for which they are
responsible.
Before installing Zowe CLI, ensure that your environment meets the prerequisites that are described in this
article.
Client-side requirements
Zowe CLI is supported on Windows, Linux, and Mac operating systems. Meet the following requirements
before you install the CLI:
Node.js: Install a currently supported version of Node.js LTS. For a complete list of supported LTS
versions, see Nodejs Releases.
Note: You might need to restart the command prompt after installing Node.js. Issue the following
command to verify that Node.js is installed.
Important! If you are installing Zowe CLI with Node.js 16 on a Windows operating system, see Installing
Zowe CLI with Node.js 16 on Windows.
npm: Install a version of Node Package Manager (npm) that is compatible with your version of Node.js.
Note: npm is included with most Node.js installations. Issue the following command to determine your
currently installed version of npm.
See Node.js release matrix to verify that the versions are compatible.
Secure Credential Store: On Linux systems, you must install the packages gnome-keyring and
libsecret (or libsecret-1-0 on Debian and Ubuntu).
Note: For information about how to configure Secure Credential Store on headless Linux and z/Linux,
see Configure Secure Credential Store on headless Linux operating systems.
Plug-in client requirements: If you plan to install plug-ins, review the Software requirements for CLI
plug-ins.
Important! Ensure that you meet the client-side requirements for the IBM Db2 plug-in before you
install it.
Host-side requirements
Zowe CLI requires the following mainframe configuration:
IBM z/OSMF configured and running: You do not need to install the full Zowe solution to install and
use Zowe CLI. Minimally, an instance of IBM z/OSMF must be running on the mainframe before you can
issue Zowe CLI commands successfully. z/OSMF enables the core capabilities, such as retrieving data
sets, executing TSO commands, submitting jobs, and more. If Zowe API Mediation Layer (API ML) is
configured and running, Zowe CLI users can choose to connect to API ML rather than to every separate
service.
Plug-in services configured and running: Plug-ins communicate with various mainframe services.
The services must be configured and running on the mainframe before issuing plug-in commands. For
example, the IMS plug-in requires an instance of IBM IMS on the mainframe with IMS Connect (REST
services) running. For more information, see Software requirements for CLI plug-ins
Zowe CLI on z/OS is not supported: Zowe CLI can be installed on an IBM z/OS environment and run
under Unix System Services (USS). However, the IBM Db2 plug-in cannot run on z/OS due to native
code requirements. As such, Zowe CLI is not supported on z/OS and is currently experimental.
Installation guidelines
To install CLI on Windows, Mac, and Linux operating systems, follow the steps in Install Zowe CLI from npm
or Install Zowe CLI from a local package.
However, to install Zowe CLI on z/Linux, z/OS UNIX System Services (USS), or on an operating system
where the Secure Credential Store is not required or cannot be installed, use the following installation
guidelines:
To install Zowe CLI on a z/Linux operating system and you require the Secure Credential Store:
i. Follow the steps in Configure Secure Credential Store on headless Linux operating systems.
ii. Follow the steps in Install Zowe CLI from npm or Install Zowe CLI from a download.
To install Zowe CLI on a z/Linux operating system and you do not require the Secure Credential Store:
i. Follow the steps in Install Zowe CLI from npm or Install Zowe CLI from a download.
ii. Follow the steps in Configure Zowe CLI on operating systems where the Secure Credential Store is
not available.
To install Zowe CLI on a USS system or on an operating system where you cannot install the Secure
Credential Store:
i. Follow the steps in Install Zowe CLI from npm or Install Zowe CLI from a download.
ii. Follow the steps in Configure Zowe CLI on operating systems where the Secure Credential Store is
not available.
Installation notes
As you are installing Zowe CLI, you might encounter error messages that relate to cpu-features and
ssh . You can safely ignore error messages of this type; the installation completes successfully. This
behavior can occur when you install CLI from npm and from a local package.
Prerequisites
Meet the software requirements for Zowe CLI.
Meet the software requirements for each plug-in.
Prerequisite notes
If you are installing Zowe CLI on a computer that is running Node.js 16 on a Windows operating system,
see Installing Zowe CLI with Node.js 16 on Windows.
If you are running NPM version 7 ( npm@7 ) or NPM version 8 ( npm@8 ) on a Windows operating
system, ensure that your computer is connected to the Internet.
Issue the following command before you install Zowe CLI:
Linux users might need to prepend sudo to npm commands. For more information, see
Troubleshooting Zowe CLI.
. To install Zowe CLI Core, open a command-line window and issue the following commands to the
working directory that you used in Step 7:
Note: If an EACCESS error displays, see Resolving EACCESS permissions errors when installing
packages globally in the npm documentation.
. (Optional) To install Zowe CLI plug-ins, issue the following command to the working directory that you
used in Step 7:
Zowe CLI and the optional plug-ins are installed on your computer. Issue the zowe --help command to
view a list of available commands. For information about how to connect the CLI to the mainframe, create
profiles and team profiles, integrate with API ML, enable daemon mode, and more, see Using CLI.
Configuring Secure Credential Store on
Version: v2.0.x LTS
Configuring z/Linux
The Secure Credential Store (SCS) does not contain the native, pre-built binaries that are required to access
the credential vault on z/Linux operating systems.
Because the credential manager is now a built-in function of Zowe CLI, developers must build the credential
mananger binaries on z/Linux systems during the Zowe CLI installation process.
The following steps describe how to install and build the credential store binaries on z/Linux (Red Hat
Enterprise Linux (RHEL) and Ubuntu) systems.
. Install the following Linux packages on the z/Linux system:
make
gcc-c++ (sometimes available as g++)
gnome-keyring
libsecret (sometimes available as libsecret-1-0)
libsecret-devel (sometimes available as libsecret-1-dev)
Python 3.6 or later
Note: If you are installing the Linux packages on a z/Linux system, the system where you are
configuring SCS might require Internet access. When a site hosts its own package repositories, the
repositories might not contain all of the packages that are required to configure the SCS. In this
scenario, the z/Linux system requires Internet access to install the required packages.
. If you are configuring SCS on a Ubuntu z/Linux operating system, no further action is required. You can
now install Zowe CLI. For all other platforms (RHEL), continue to the next step.
. Enable the rhel-#-for-system-z-optional-rpms repository to download libsecret-devel.
Replace # with the major version of RHEL that is running on the z/Linux system.
If your license entitles you to this repository, issue the following command to enable it:
. If you are configuring SCS to run on RHEL V8.x or later, no further action is required. You can now install
Zowe CLI. For RHEL V7.x, continue to the next step.
. Install the Red Hat Developer Toolset to ensure that you are running a version of the gcc-c++ compiler
that can build the SCS native binaries.
Issue the following commands to enable the repositories that are required to install the toolset:
. Install the toolset:
. After you install the toolset on RHEL V7.x, you can install Zowe CLI.
Important: The SCS is installed every time that you install or update Zowe CLI. On RHEL V7.x, ensure
that the Red Hat Developer Toolset is enabled every time you install or update Zowe CLI. When you do
not enable the toolset, secure credential management is not available on the system. To ensure that the
toolset is enabled when you install Zowe CLI, issue the following commands instead of the standard
NPM install commands. For example:
When you run these commands, Zowe CLI is installed globally and the system will use the latest version
of the C++ compiler to build the native components. Refer back to the instructions to set up the Secure
Credential Storage component of the Zowe CLI.
Configure Zowe CLI on operating systems
Version: v2.0.x LTS
V1 profiles
Existing V1 profiles will continue to function properly. However, it will not be possible to create new profiles
without disabling secure credential management. To disable secure credential management for V1 profiles:
. Navigate to the .zowe/settings directory.
. Modify the imperative.json file by replacing the Credential Manager override value to the
following:
. Save the changes.
Team configuration
Team configuration is stored in zowe.config.json .
Team configuration can be created without access to the Secure Credential Store. However, team
configuration does not store sensitive user information on the system. Subsequent commands prompt for
the userʼs sensitive information when it not provided on the command line, and will attempt to save it with
the new Auto Store functionality. Users may experience errors when Auto Store cannot save sensitive
information securely. To mitigate this error, disable the Auto Store functionality by changing the value of the
autoStore property from true to false in the zowe.config.json or zowe.config.user.json
file.
Example:
Installing Zowe CLI with Node.js 16 on
Version: v2.0.x LTS
Windows
There are several preferred installation workarounds when you encounter the following scenarios:
Using Node.js version 16 with npm version 8 on Windows, want to install from the TGZ, and have
restricted Internet access
Unable to install Zowe CLI while offline using the TGZ bundle
The workaround installation options are, in order of preference:
Configure NPM proxy to access the public NPM registry (npmjs.org) so that the install from TGZ can
succeed. To configure an NPM proxy:
If your proxy is HTTP: npm config set proxy <proxyUrl>
If your proxy is HTTPS: npm config set https-proxy <proxyUrl>
Install CLI from an online registry instead of TGZ. This may also require configuring an NPM proxy. See
Installing Zowe CLI from an online registry.
Downgrade NPM to version 6. To downgrade from a newer version of NPM, issue the command: npm
install -g npm@6.x
Additional Considerations
There are issues with Node 16 and bundled optional dependencies in offline node installs. Because of the
issues, the optional cpu-features package was removed from the offline .tgz file that is available from
zowe.org and Broadcom. The installation process attempts to reach a configured registry and to use any
NPM proxy configured on the system. If the attempt fails, the installation process completes normally.
cpu-features changes the SSH cipher order that is used on the zowe uss issue ssh commands,
favoring chacha20-poly1305 cipher in cases where CPUs do not have built in AES instructions. This
should not affect performance.
Install CLI from Online Registry Via Proxy
Version: v2.0.x LTS
This topic describes how to install Zowe CLI using the NPM install command when you are working behind a
proxy server. Use this installation method when your site blocks access to public npm.
You can install Zowe CLI from an online registry via proxy on Windows, macOS, or Linux operating systems:
This method requires access to an internal server that will allow you to connect to the appropriate
registries. For other installation methods, see Installing CLI.
Your default registry must be public npm (or a mirror of public npm).
If you previously installed the CLI and want to update to a current version, see Updating Zowe CLI
Follow these steps:
. Identify the proxy server, including the IP address or hostname and the port number.
If your proxy server does not require login credentials, issue the following commands to add the
proxy URL to the NPM config file:
[proxy_name]: The IP or hostname
[port_number]: The port number of the proxy server.
If your proxy server requires login credentials, issue the following commands to add the proxy
URL, with login credentials, to the NPM config file:
[username] and [password]: The required login credentials
[proxy_name]: The IP or hostname
[port_number]: The port number of the proxy server
. Ensure that you meet the System requirements for CLI.
. To install Zowe CLI, issue the following command. On Linux, you might need to prepend sudo to
your npm commands:
. (Optional) To install open-source Zowe plug-ins:
a. Ensure that your system meets the Software requirements for Zowe CLI plug-ins.
b. Issue the following command to install all of the plug-ins:
Zowe CLI is installed.
. (Optional) Verify that a Zowe plug-in is operating correctly.
[my-plugin]: The syntax for the plug-in. For example, @zowe/cics@zowe-v2-lts .
. (Optional) Test the connection to z/OSMF. See Testing connections to z/OSMF
. (Optional) Access the Zowe CLI Help ( zowe --help ) or the Zowe CLI Web Help for a complete
reference of Zowe CLI. After you install Zowe CLI, you can connect to the mainframe directly issuing a
command, by creating user profiles and making use of them on commands, or by using environment
variables. For more information, see Displaying help.
Updating Zowe CLI
Version: v2.0.x LTS
Zowe™ CLI is updated continuously. You can update Zowe CLI to a more recent version using online registry
method or the local package method.
You must update Zowe CLI using the method that you used to install Zowe CLI.
You can uninstall Zowe™ CLI from the desktop if you no longer need to use it.
Important! The uninstall process does not delete the profiles and credentials that you created when using
the product from your computer. To delete the profiles from your computer, delete them before you uninstall
Zowe CLI.
The following steps describe how to list the profiles that you created, delete the profiles, and uninstall Zowe
CLI.
. Open a command-line window.
Note: If you do not want to delete the Zowe CLI profiles from your computer, go to Step 5.
. List all configuration files that you created. Issue the following command:
Example:
. Delete all of the configuration files that are listed. Issue the following command:
Tip: For this command, use the results of the zowe config list command.
. Uninstall Zowe CLI by issuing the following command:
Note: You might receive an ENOENT error when issuing this command if you installed Zowe CLI from a
local package (.tgz) and the package was moved from its original location. In the event that you receive
the error, open an issue in the Zowe CLI GitHub repository.
The uninstall process removes all Zowe CLI installation directories and files from your computer.
. Delete the ~/.zowe or %homepath%\.zowe directory on your computer. The directory contains the
Zowe CLI log files and other miscellaneous files that were generated when you used the product.
Tip: Deleting the directory does not harm your computer.
Visual Studio Code (VS Code) Extension for
Version: v2.0.x LTS
Zowe
chat on Slack
The Zowe Explorer extension for Visual Studio Code (VS Code) modernizes the way developers and system
administrators interact with z/OS mainframes, and lets you interact with data sets, USS files and jobs. Install
the extension directly to VSCode to enable the extension within the GUI. Working with data sets and USS
files from VSCode can be more convenient than using 3270 emulators, and complements your Zowe CLI
experience. The extension provides the following benefits:
Enables you to create, modify, rename, copy, and upload data sets directly to a z/OS mainframe.
Enables you to create, modify, rename, and upload USS files directly to a z/OS mainframe.
Provides a more streamlined way to access data sets, USS files and jobs.
Lets you create, edit, and delete Zowe CLI zosmf compatible profiles.
Lets you use the Secure Credential Store plug-in to store your credentials securely in the settings.
Note: Zowe Explorer is a subcomponent of Zowe. The extension demonstrates the potential for plug-ins
powered by Zowe.
Software Requirements
Ensure that you meet the following prerequisites before you use the extension:
Get access to z/OSMF.
Install Node.js v8.0 or later.
Install VSCode.
Configure TSO/E address space services, z/OS data set, file REST interface, and z/OS jobs REST
interface. For more information, see z/OS Requirements.
Create one Zowe CLI zosmf profile so that the extension can communicate with the mainframe.
Profile notes:
You can use your existing Zowe CLI zosmf profiles that are created with the Zowe CLI v.2.0.0 or later.
Zowe CLI zosmf profiles that are created in Zowe Explorer can be interchangeably used in the Zowe
CLI.
Optionally, you can continue using Zowe CLI V1 profiles with Zowe Explorer. For more information, see
instert link here.
Installing
Use the following steps to install Zowe Explorer:
. Address the software requirements.
. Open VSCode, and navigate to the Extensions tab on the left-hand side of the UI.
. Type Zowe Explorer in the search field.
Zowe Explorer appears in the list of extensions in the left-hand panel.
. Click the green Install button to install the extension.
. Restart VSCode.
The extension is now installed and available for use.
Note: For information about how to install the extension from a VSIX file and run system tests on the
extension, see the Developer README.
You can also watch the following videos to learn how to get started with Zowe Explorer, and work with data
sets.
Configuration
Configure Zowe Explorer in the settings file of the extension. To access the extension settings, navigate to
Manage (the gear icon) > Settings, then select Extensions > Zowe Explorer Settings. For example, you
can modify the following settings:
Data set creation settings: You can change the default creation settings for various data set types.
Follow these steps:
. Click the Edit in settings.json button under the Data Set, USS or JOBS settings that you want to edit.
. Edit the settings as needed.
. Save the settings.
Set the Temporary Folder Location: You can change the default folder location where temporary files
are stored.
Follow these steps:
i. Click the Edit in settings.json button under the Data Set, USS or JOBS settings that you want to
edit.
ii. Modify the following definition:
where /path/to/directory is the folder location that you specify.
iii. Save the settings.
Relevant Information
In this section you can find useful links and other relevant to Zowe Explorer information that can improve
your experience with the extension.
For information about how to develop for Eclipse Theia, see Theia README.
For information about how to create a VSCode extension for Zowe Explorer, see VSCode extensions for
Zowe Explorer.
Visit the #zowe-explorer channel on Slack for questions and general guidance.
Zowe Explorer Profiles
Version: v2.0.x LTS
After you install Zowe Explorer, you need to have a Zowe Explorer profile to use all functions of the
extension.
Note: You can continue using Zowe V1 profiles with Zowe Explorer V2.
Your team configuration file appears either in your .zowe folder if you choose the global configuration file
option, or in your workspace directory if you choose the project-level configuration file option. The
notification message that shows in VS Code after config file creation will include the path of the file created.
Managing profiles
You can edit your project-level or global configuration files.
Follow these steps:
. Right-click on your profile.
. Select the Add, Update, or Delete Profile options to edit the zowe config file in place.
Tip: Use the Intellisense prompts if you need assistance with filling parameters in the file.
. Save the config file.
. Refresh the view by clicking the refresh icon in the Data Sets, USS, or Jobs view.
Alternatively, press F1 to open the command palette, type and execute the Zowe Explorer: Refresh
Zowe Explorer option.
You successfully edited your configuration file.
Sample profile configuration
View the profile configuration sample. In the sample, the default lpar1.zosmf profile will be loaded upon
activation.
You can use the sample to customize your profile configuration file. Ensure that you edit the host and
port values before you work in your environment.
You successfully created a Zowe CLI zosmf profile. Now you can use all the functionalities of the
extension.
If you need to edit a profile, right-click the profile and select Update Profile option.
In addition, you can hide a profile from the explorer tree, and permanently delete a profile. When you delete
your profile permanently, the extension erases the profile from the .zowe folder. To hide or delete a profile,
right-click the profile and choose one of the respective options from the list.
Validating profiles
Note: The following information applies to Zowe CLI V1 profiles (one yaml file for each user profile) and
Zowe CLI team profiles (Zowe CLI V2).
Zowe Explorer includes the profile validation feature that helps to ensure that z/OSMF is accessible and
ready for use. If a profile is valid, the profile is active and can be used. By default, the feature is automatically
enabled. You can disable the feature by right-clicking on your profile and selecting the Disable Validation
for Profile option. Alternatively, you can enable or disable the feature for all profiles in the VS Code settings.
Follow these steps:
. Navigate to the VS Code settings.
. Open Zowe Explorer Settings.
. Enable or disable the automatic validation of profiles option.
. Restart VS Code.
Using base profiles and tokens with existing profiles
As a Zowe user, you can leverage the base profile functionality to access multiple services through Single
Sign-on. Base profiles enable you to authenticate using Zowe API Mediation Layer (API ML). You can use
base profiles with more than one service profile. For more information, see Base Profiles.
Before you log in and connect your service profile, ensure that you have Zowe CLI v6.16 or higher installed.
Accessing services through API ML using SSO
Connect your service profile with a base profile and token.
Follow these steps:
. Open Zowe CLI and issue the following command:
. Follow the onscreen instructions to complete the login process.
A local base profile is created that contains your token. For more information about the process, see
Token Management.
. Run Zowe Explorer and click the + icon.
. Select the profile you use with your base profile with the token.
The profile appears in the tree and you can now use this profile to access z/OSMF via the API Mediation
Layer.
For more information, see Integrating with API Mediation Layer.
Logging in to the Authentication Service
If the token for your base profile is no longer valid, you can log in again to get a new token with the Log in to
Authentication Service feature.
Notes:
The feature is only available for base profiles.
The feature supports only API Mediation Layer at the moment. Other extenders may use a different
authentication service.
Follow these steps:
. Open Zowe Explorer.
. Right-click your profile.
. Select the Log in to Authentication Service option.
You will be prompted to enter your username and password beforehand.
The token is stored in the corresponding base profile.
If you do not want to store your token, request from the server to end the session of your token. Use the Log
out from Authentication Service feature to invalidate the token.
Follow these steps:
. Open Zowe Explorer.
. Right-click your profile.
. Select the Log out from Authentication Service option.
Your token has been successfully invalidated.
Configuring Zowe Application Framework
Version: v2.0.x LTS
The Zowe Application ("App") Framework is configured in the Zowe configuration file. Configuration can be
used to change things such as verbosity of logs, the way in which the App server communicates with the
Mediation Layer, how ZSS operates, whether to use HTTPS or AT-TLS, what language the logs should be
set, and many more attributes.
When you install Zowe™, the App Framework is configured as a Mediation Layer client by default. This is
simpler to administer because the App framework servers are accessible externally through a single port:
API ML Gateway port. It is more secure because you can implement stricter browser security policies for
accessing cross-origin content.
You can modify the Zowe App Server and Zowe System Services (ZSS) configuration, as needed, or
configure connections for the Terminal app plugins.
(Not recommended): If the API Mediation Layer is not used, or you need to contact the App server directly,
the ZWED0031I message states which port it is accessible from, though generally it will be the same value
as specified within components.app-server.port . In that case, the server would be available at
https://<zowe.externalDomain>:<components.app-server.port>/
Although you access the App server via the Gateway port, the App server still needs a port assigned to it
which is the value of the components.app-server.port variable in the Zowe configuration file.
(Not recommended): If the mediation layer is not used, the Desktop will be accessible from the App server
directly at /ZLUX/plugins/org.zowe.zlux.bootstrap/web/index.html
Accessing ZSS
The zss server should be accessed through the gateway when both are present. When both are ready,
ZSS can be accessed from the API Mediation Layer Gateway, such as
https://<zowe.externalDomain>:<components.gateway.port>/zss/api/v1/
Although you access the ZSS server via the Gateway port, the ZSS server still needs a port assigned to it
which is the value of the components.zss.port variable in the Zowe configuration file.
If the mediation layer is not used, ZSS directly at https://<zowe.externalDomain>:
<components.zss.port>/
Configuration file
app-server configuration
The app-server uses the Zowe server configuration file for customizing server behavior. For a full list of
parameters, requirements, and descriptions, see the json-schema document for the app-server which
describes attributes that can be specified within the configuration file section components.app-server
zss configuration
ZSS shares some parameters in common with the app-server, so you can consult the above json-schema
document to find out which parameters are valid within components.zss of the Zowe configuration file.
However, some parameters within the app-server schema are not used by ZSS, such as the node section.
A ZSS-centric schema will be available soon.
Environment variables
In the latest version of Zowe, instance.env is no longer used. However, some environment variables that
could be specified within v1 can still be set within v2 in the zowe.environments section of the server
configuration file. Environment variables starting with ZWED_ map to values that can be specified within
components.app-server and components.zss so they are redundant, but you can refer to the above
json-schema document to see which values are useful or deprecated.
Network configuration
Note: The following attributes are to be defined in the Zowe configuration file.
The App Server can be accessed over HTTP and/or HTTPS, provided it has been configured for either.
HTTPS should be used, as HTTP is not secure unless AT-TLS is used. When AT-TLS is used by ZSS,
components.zss.agent.http.attls must be set to true.
HTTPS
Both app-server and zss server components use HTTPS by default, and the port parameters
components.app-server.port and components.zss.port control which port they are accessible
from. However, each have advanced configuration options to control their HTTPS behavior.
The app-server component configuration can be used to customize its HTTPS connection such as
which certificate and ciphers to use, and these parameters are to be set within components.app-
server.node.https as defined within the json-schema file
The zss component configuration can be used to customize its HTTPS connection such as which
certificate and ciphers to use, and these parameters are to be set within components.zss.agent.https
as defined within the json-schema file
HTTP
The app-server can be configured for HTTP via the components.app-server.node.http section
of the Zowe configuration file, as specified within the app-server json-schema file.
The zss server can be configured for HTTP via the components.zss.agent.http section of the Zowe
configuration file, as specified within the zss json-schema file. Note that components.zss.tls must
be set to false for HTTP to take effect, and that components.zss.agent.http.attls must be set to
true for AT-TLS to be recognized correctly.
Configuration Directories
When running, the App Server will access the server's settings and read or modify the contents of its
resource storage. All of this data is stored within a hierarchy of folders which correspond to scopes:
Product: The contents of this folder are not meant to be modified, but used as defaults for a product.
Site: The contents of this folder are intended to be shared across multiple App Server instances,
perhaps on a network drive.
Instance: This folder represents the broadest scope of data within the given App Server instance.
Group: Multiple users can be associated into one group, so that settings are shared among them.
User: When authenticated, users have their own settings and storage for the Apps that they use.
These directories dictate where the Configuration Dataservice will store content. For more information, see
the Configuration Dataservice documentation
Old defaults
Prior to Zowe release 2.0.0, the location of the configuration directories were initialized to be within the
<INSTANCE_DIR> folder unless otherwise customized. 2.0.0 does have backwards compatibility for the
existence of these directories, but <INSTANCE_DIR> folder no longer exists, so they should be migrated
to match the ones specified in the Zowe configuration file.
Folder New Location Old Location
siteDir <zowe.workspaceDirectory>/app-
server/site
<INSTANCE_DIR>/workspace/app-
server/site
Folder New Location Old Location
insta
instanceDir <zowe.workspaceDirectory>/app- <INSTANCE_DIR>/workspace/app- isn't
server server work
is us
groupsDir <zowe.workspaceDirectory>/app-
server/groups
<INSTANCE_DIR>/workspace/app-
server/groups
usersDir <zowe.workspaceDirectory>/app-
server/users
<INSTANCE_DIR>/workspace/app-
server/users
pluginsDir <zowe.workspaceDirectory>/app-
server/plugins
<INSTANCE_DIR>/workspace/app-
server/plugins
Logging configuration
For more information, see Logging Utility.
Enabling tracing
To obtain more information about how a server is working, you can enable tracing within the Zowe
configuration file via components.app-server.logLevels or components.zss.logLevels variable. For more
information on all loggers, check out the Extended documentation.
For example:
All settings are optional.
Log files
The app-server and zss will create log files containing processing messages and statistics. The log files are
generated within the log directory specified within the Zowe configuration file ( zowe.logDirectory ).
The filename patterns are:
App Server: <zowe.logDirectory>/appServer-yyyy-mm-dd-hh-mm.log
ZSS: <zowe.logDirectory>/zssServer-yyyy-mm-dd-hh-mm.log
Retaining logs
By default, the last five log files are retained. You can change this by setting environment variables within the
zowe.environments section of the Zowe server configuration file. To specify a different number of logs
to retain, set ZWED_NODE_LOGS_TO_KEEP for app-server logs, or ZWES_LOGS_TO_KEEP for zss logs. For
example, if you set ZWED_NODE_LOGS_TO_KEEP to 10, when the eleventh log is created, the first log is
deleted.
Controlling the logging location
At minimum, the log information for both app-server and zss are written to STDOUT such that messages are
visible in the terminal that starts Zowe and when on z/OS, the STC job log.
By default, both servers additionally log to files and the location of these files can be changed or logging to
them can be disabled. The following environment variables can be used to customize the app-server and
zss log locations by setting the values within the zowe.environments section of the Zowe configuration
file.
ZWED_NODE_LOG_DIR : Overrides the zowe configuration file value of zowe.logDirectory for
app-server, but keeps the default filenames.
ZWES_LOG_DIR : Overrides the zowe configuration file value of zowe.logDirectory for zss, but
keeps the default filenames.
ZWED_NODE_LOG_FILE : Specifies the full path to the file where logs will be written from app-server.
This overrides both ZWED_NODE_LOG_DIR and zowe.logDirectory . If the path is /dev/null
then no log file will be written. This option does not timestamp logs or keep multiple of them.
ZWES_LOG_FILE : Specifies the full path to the file where logs will be written from zss. This overrides
both ZWES_LOG_DIR and zowe.logDirectory . If the path is /dev/null then no log file will be
written. This option does not timestamp logs or keep multiple of them.
If the directory or file specified cannot be created, the server will run (but it might not perform logging
properly).
ZSS configuration
Running ZSS requires a Zowe configuration file configuration that is similar to the one used for the Zowe App
Server (by structure and property names). The attributes that are needed for ZSS (components.zss) at
minimum, are: port, crossMemoryServerName.
By default, ZSS is configured to use HTTPS with the same certificate information and port specification as
the other Zowe services. If you are looking to use AT-TLS instead, then you must set component.zss.tls
variable to false and define component.zss.agent.http section with port, ipAddresses, and attls: true
as shown below
(Recommended) Example of the agent body:
(Not recommended) Unsecure, HTTP example with AT-TLS:
ZSS 64 or 31 bit modes
Two versions of ZSS are included in Zowe, a 64 bit version and a 31 bit version. It is recommended to run the
64 bit version to conserve shared system memory but you must match the ZSS version with the version your
ZSS plugins support. Official Zowe distributions contain plugins that support both 64 bit and 31 bit, but
extensions may only support one or the other.
Verifying which ZSS mode is in use
You can check which version of ZSS you are running by looking at the logs. At startup, the message
ZWES1013I states which mode is being used, for example:
ZWES1013I ZSS Server has started. Version 2.0.0 64-bit
Or
ZWES1013I ZSS Server has started. Version 2.0.0 31-bit
[ca_label]
[server_userid]
[server_common_name]
[server_label]
[ring_name]
[output_dataset_name]
Note:
[server_userid] must be the server user ID, such as the STC user.
[server_common_name] must be the z/OS hostname that runs Zowe
. In the /plugins directory, create an allowedPlugins.json file. You can use the default
allowedPlugins.json file as a template by copying it from the following location:
. Open the allowedPlugins.json file and specify apps that user can access. For example:
Notes:
Identifier and version attributes are required.
When a user logs in to the desktop, Zowe determines which apps they can see by concatenating
the list of apps available to all users with the apps available to the individual user.
. Restart the app server.
For example:
/ZLUX/plugins/org.zowe.foo/services/baz/_current/users/fred
For example, to issue a POST request to the dataservice endpoint documented above, users must have
READ access to the following profile:
ZLUX.1.SVC.ORG_ZOWE_FOO.BAZ.POST.USERS.FRED
For configuration dataservice endpoint profiles use the service code CFG . For core dataservice endpoints
use COR . For all other dataservice endpoints use SVC .
Creating generic authorization profiles
Some endpoints can generate an unlimited number of URIs. For example, an endpoint that performs a
DELETE action on any file would generate a different URI for each file, and users can create an unlimited
number of files. To apply RBAC to this type of endpoint you must create a generic profile, for example:
ZLUX.1.COR.ORG_ZOWE_FOO.BAZ.DELETE.**
You can create generic profile names using wildcards, such as asterisks (*). For information on generic
profile naming, see IBM documentation.
Configuring basic authorization
The following are recommended for basic authorization:
To give administrators access to everything in Zowe, create the following profile and give them UPDATE
access to it: ZLUX.**
To give non-administrators basic access to the site and product, create the following profile and give
them READ access to it: ZLUX.*.ORG_ZOWE_*
To prevent non-administrators from configuring endpoints at the product and instance levels, create the
following profile and do not give them access to it: ZLUX.1.CFG.**
To give non-administrators all access to user, create the following profile and give them UPDATE access
to it: ZLUX.1.CFG.*.*.USER.**
Endpoint URL length limitations
SAF profiles cannot contain more than 246 characters. If the path section of an endpoint URL is long enough
that the profile name exceeds the limit, the path is trimmed to only include elements that do not exceed the
limit. To avoid this issue, we recommend that appliction developers maintain relatively short endpoint URL
paths.
For information on endpoint URLs, see Dataservice endpoint URL lengths and RBAC
. Set defaultAuthentication to the same category as the plugin of choice, as seen in its
pluginDefinition.json file. For example:
sso-auth: "saf"
trivial-auth: "fallback"
The following is an example configuration for sso-auth , as seen in a default installation of Zowe:
This section explains how to configure Zowe CLI using environment variables.
By default, Zowe CLI configuration is stored on your computer in the C:\Users\user01\.zowe directory.
The directory includes log files, profile information, and installed CLI plug-ins. When troubleshooting, refer to
the logs in the imperative and zowe folders.
daemon_pid.json
Review the security considerations for Zowe APIs and learn how to prevent the Denial of Service (DoS)
attacks.
The default configuration before Zowe version 1.14.0 contains Data sets and Unix files and Jobs API
microservices which might be vulnerable to DoS attacks in the form of slow https attacks. You can add
additional configuration to the start script of these components in order to prevent resource starvation via
slow https attacks.
To update the configuration of the Data sets and Unix files component, modify the start.sh script
within the runtime component directory /zowe/runtime/components/files-api/bin .
To update the configuration of the Jobs component, modify the start.sh script within the runtime
component directory /zowe/runtime/components/jobs-api/bin .
Ensure that the -Dserver.connection-timeout=8000 parameter is set. This parameter specifies how
long the component waits to receive all the required information from the client that makes a request.
See a snippet of a configured start.sh script for the Jobs component as follows:
In version 1.14.0 and later, the preceding snippet reflects the default configuration.
Advanced Gateway features configuration
Version: v2.0.x LTS
As a system programmer who wants to configure advanced Gateway features of the API Mediation Layer,
you can customize Gateway parameters by modifying either of the following files:
<Zowe runtime directory>/components/gateway/bin/start-gateway.sh
zowe.yaml
The parameters begin with the -D prefix, similar to all the other parameters in the file.
Note: Restart Zowe to apply changes to the parameter.
Follow the procedures in the following sections to customize Gateway parameters according to your
preferences:
Prefer IP Address for API Layer services
SAF as an Authentication provider
Enable JWT token refresh endpoint
Change password with SAF provider
Gateway retry policy
Gateway client certificate authentication
Gateway timeouts
CORS handling
Encoded slashes
Connection limits
Routed instance header
Distributed load balancer cache
Replace or remove catalog with another service
API Mediation Layer as a standalone component
SAF resource checking
where:
120
All requests are disabled as the default configuration for retry with one exception: the server retries GET
requests that finish with status code 503 . To change this default configuration, include the following
parameters:
ribbon.retryableStatusCodes
Provides a list of status codes, for which the server should retry the request.
Example: -Dribbon.retryableStatusCodes="503, 404"
ribbon.OkToRetryOnAllOperations
Specifies whether to retry all operations for this service. The default value is false . In this case, only
GET requests are retried if they return a response code that is listed in
ribbon.retryableStatusCodes . Setting this parameter to true enables retry requests for all
methods which return a response code listed in ribbon.retryableStatusCodes .
Note: Enabling retry can impact server resources due to request body buffering.
ribbon.MaxAutoRetries
Specifies the number of times a failed request is retried on the same server. This number is multiplied
with ribbon.MaxAutoRetriesNextServer . The default value is 0 .
ribbon.MaxAutoRetriesNextServer
Specifies the number of additional servers that attempt to make the request. This number excludes the
first server. The default value is 5 .
Gateway timeouts
Use the following procedure to change the global timeout value for the API Mediation Layer instance.
Follow these steps:
. Open the file zowe.yaml .
. Find or add the property components.gateway.apiml.gateway.timeoutmillis , and set the
value to the desired value.
. Restart Zowe&trade .
If you require finer control, you can edit the <Zowe install
directory>/components/gateway/bin/start.sh , and modify the following properties:
apiml.gateway.timeoutMillis
This property defines the global value for http/ws client timeout.
Add the following properties to the file for the API Gateway:
Note: Ribbon configures the client that connects to the routed services.
ribbon.connectTimeout
Specifies the value in milliseconds which corresponds to the period in which API ML should establish a
single, non-managed connection with the service. If omitted, the default value specified in the API ML
Gateway service configuration is used.
ribbon.readTimeout
Specifies the time in milliseconds of inactivity between two packets in response from this service to API
ML. If omitted, the default value specified in the API ML Gateway service configuration is used.
ribbon.connectionManagerTimeout
The HttpClient employs a special entity to manage access to HTTP connections called by the HTTP
connection manager. The purpose of an HTTP connection manager is to serve as a factory for new
HTTP connections, to manage the life cycle of persistent connections, and to synchronize access to
persistent connections. Internally, the connections that are managed serve as proxies for real
connections. ConnectionManagerTimeout specifies a period during which managed connections
with API ML should be established. The value is in milliseconds. If omitted, the default value specified in
the API ML Gateway service configuration is used.
CORS handling
You can enable the Gateway to terminate CORS requests for itself and also for routed services. By default,
Cross-Origin Resource Sharing (CORS) handling is disabled for Gateway routes gateway/api/v1/** and
for individual services. After enabling the feature as stated in the prodecure below, API Gateway endpoints
start handling CORS requests and individual services can control whether they want the Gateway to handle
CORS for them through the Custom Metadata parameters.
When the Gateway handles CORS on behalf of the service, it sanitizes defined headers from the
communication (upstream and downstream). Access-Control-Request-Method,Access-Control-
Request-Headers,Access-Control-Allow-Origin,Access-Control-Allow-Methods,Access-
Control-Allow-Headers,Access-Control-Allow-Credentials,Origin The resulting request to
the service is not a CORS request and the service does not need to do anything extra. The list can be
overridden by specifying different comma-separated list in the property
components.gateway.apiml.service.ignoredHeadersWhenCorsEnabled in zowe.yaml
Additionally, the Gateway handles the preflight requests on behalf of the service when CORS is enabled in
Custom Metadata, replying with CORS headers:
Access-Control-Allow-Methods: GET,HEAD,POST,DELETE,PUT,OPTIONS
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Alternatively, list the origins as configured by the service, associated with the value
customMetadata.apiml.corsAllowedOrigins in Custom Metadata.
If CORS is enabled for Gateway routes but not in Custom Metadata, the Gateway does not set any of the
previously listed CORS headers. As such, the Gateway rejects any CORS requests with an origin header for
the Gateway routes.
Use the following procedure to enable CORS handling.
Follow these steps:
. Open the file zowe.yaml .
. Find or add the property components.gateway.apiml.service.corsEnabled and set the value
to true .
. Restart Zowe&trade .
Requests through the Gateway now contain a CORS header.
Encoded slashes
By default, the API Mediation Layer accepts encoded slashes in the URL path of the request. If you are
onboarding applications which expose endpoints that expect encoded slashes, it is necessary to keep the
default configuration. We recommend that you change the property to false if you do not expect the
applications to use the encoded slashes.
Use the following procedure to reject encoded slashes.
Follow these steps:
. Open the file zowe.yaml .
. Find or add the property components.gateway.apiml.service.allowEncodedSlashes and set
the value to false .
. Restart Zowe&trade .
Requests with encoded slashes are now rejected by the API Mediation Layer.
Connection limits
By default, the API Gateway accepts up to 100 concurrent connections per route, and 1000 total concurrent
connections. Any further concurrent requests are queued until the completion of an existing request. The
API Gateway is built on top of Apache HTTP components that require these two connection limits for
concurrent requests. For more information, see Apache documentation.
Use the following procedure to change the number of concurrent connections.
Follow these steps:
. Open the file zowe.yaml .
. Find or add the property components.gateway.server.maxConnectionsPerRoute and set the
value to an appropriate positive integer.
. Find or add the property components.gateway.server.maxTotalConnections and set the value
to an appropriate positive integer.
. Restart Zowe.
alternative-catalog
This is the highest priority provider, such as a REST endpoint call (ZSS or similar one). This option is
disabled by default. In Zowe, ZSS has the API to check for SAF resource authorization.
native
The Native JZOS classes from Java are used to determine SAF resource access. This is the default
provider.
dummy
This is the lowest priority provider. This is the dummy implementation and is defined in a file.
Note: Verification of the SAF resource uses the first available provider based on the specified priority. The
default configuration resolves to the native provider.
You can select a specific provider by specifying the
components.gateway.apiml.security.authorization.provider key in the zowe.yaml file.
Use the parameter value to strictly define a provider. If verification is disabled, select the endpoint option.
Follow these steps:
. Open the file zowe.yaml .
. Find or add the property components.gateway.apiml.security.authorization.provider
and set desired value.
. Restart Zowe&trade .
Examples:
Note: To configure the endpoint provider, add the following additional property:
components.gateway.apiml.security.authorization.endpoint.enabled: true
To use the endpoint provider, customize the URL corresponding to the SAF resource authorization. By
default, the ZSS API is configured and used.
Follow these steps:
. Open the file zowe.yaml .
. Find or add the property
components.gateway.apiml.security.authorization.endpoint.url and set desired value.
The default value for ZSS API is
https://${ZWE_haInstance_hostname}:${GATEWAY_PORT}/zss/api/v1/saf-auth
. Restart Zowe&trade .
Checking providers
REST endpoint call
The REST provider calls the external API to retrieve information about access rights. To enable the feature
outside of the mainframe, such as when running in Docker, you can use a REST endpoint call using the GET
method:
Method: GET
URL: {base path}/{userId}/{class}/{entity}/{level}
Response:
Note: For more information about this REST endpoint call, see ZSS implementation.
Native
The Native provider is the easiest approach to use the SAF resource checking feature on the mainframe.
Enable this provider when classes com.ibm.os390.security.PlatformAccessControl and
com.ibm.os390.security.PlatformReturned are available on the classpath. This approach uses the
following method described in the IBM documentation: method.
Note: Ensure that the version of Java on your system has the same version of classes and method
signatures.
Dummy implementation
The Dummy provider is for testing purpose outside of the mainframe.
Create the file saf.yml and locate it in the folder, where is application running or create file mock-
saf.yml in the test module (root folder). The highest priority is to read the file outside of the JAR. A file
(inner or outside) has to exist.
The following YAML presents the structure of the file:
Notes:
Classes and resources are mapped into a map, user IDs into a list.
The load method does not support formatting with dots, such as shown in the following example:
Example: {CLASS}.{RESOURCE} Ensure that each element is separated.
The field safAccess is not required to define an empty file without a definition.
Classes and resources cannot be defined without the user ID list.
When a user has multiple definitions of the same class and resource, only the most privileged access
level loads.
Discovery Service configuration parameters
Version: v2.0.x LTS
API ML configuration
Eureka configuration
API ML configuration
apiml.discovery.userid
The Discovery service in HTTP mode protects it's endpoints with basic authentication instead of client
certificate. This parameter specifies the userid. The default value is eureka .
apiml.discovery.password
This parameter specifies the password for the basic authentication used by the Discovery Service in
HTTP mode. The default value is password .
apiml.discovery.allPeersUrls
This parameter contains the list of URLs of the Discovery Service in case of multiple instances of the
service on different host. Example:
Note: Each URL within the list must be separated by a comma.
apiml.discovery.staticApiDefinitionsDirectories
The static definition directories can be specified as a parameter at startup and will be scanned by the
Discovery Service. These directories contains the definitions of static services. Example:
apiml.discovery.serviceIdPrefixReplacer
This parameter is used to modify the service ID of a service instance, before it registers to API ML.
Using this parameter ensures compatibility of services that use a non-conformant organization prefix
with v2, based on Zowe v2 conformance. The value of the
*apiml.discovery.serviceIdPrefixReplacer parameter is represented as a tuple that
contains two strings, separated by a comma. The format of this parameter contains the following two
elements:
First, the prefix that you want to replace in the service ID
Second, the new prefix that will be replaced
Example: The value of the parameter has the following format:
oldServiceIdPrefix,newServiceIdPrefix
Set this parameter in your Zowe YAML configuration (typically zowe.yaml ) by defining
configs.apiml.discovery.serviceIdPrefixReplacer . For example, defining it globally:
Eureka configuration
The Discovery Service contains a configuration for implementing the client-side service discovery and for
defining a Eureka Server for service registry. Such configuration is shown below:
eureka.client.registerWithEureka If we make this property as true then while the server starts the
inbuilt client will try to register itself with the Eureka server.
eureka.client.registerWithEureka The inbuilt client will try to fetch the Eureka registry if we configure
this property as true.
eureka.client.serviceUrl.defaultZone A fallback value that provides the Eureka service URL for any
client that does not express a preference (in other words, it is a useful default).
More information about the other Eureka parameters can be found in the Spring Cloud Netflix Eureka
documentation.
API Gateway configuration parameters
Version: v2.0.x LTS
As an application developer who wants to change the default configuration of the API Mediation Layer, set
the following parameters by modifying the <Zowe install
directory>/components/gateway/bin/start.sh file:
Runtime configuration
Environment variables
Service configuration
Zuul configuration
Hystrix configuration
AT-TLS
Runtime configuration
This section describes runtime configuration properties.
apiml.service.hostname
This property is used to set the API Gateway hostname.
apiml.service.port
This property is used to set the API Gateway port.
apiml.service.discoveryServiceUrls
This property specifies the Discovery Service URL used by the service to register to Eureka.
apiml.service.preferIpAddress
Set the value of this property to true to advertize a service IP address instead of its hostname.
Notes:
If you set this property to true on the Discovery Service, ensure that you modify the value of
discoveryLocations: to use the IP address instead of the hostname. Failure to modify the
discoveryLocations: value prevents Eureka from detecting registered services. As a result,
the available-replicas is empty.
Enabling this property may also cause issues with SSL certificates and Subject Alternative Name
(SAN).
apiml.cache.storage.location
This property specifies the location of the EhCache used by Spring.
Note: It is necessary for the API ML process to have write access to the cache location.
apiml.security.ssl.verifySslCertificatesOfServices
This parameter makes it possible to prevent server certificate validation.
Important! Ensure that this parameter is set to true in production environments. Setting this
parameter to false in production environments significantly degrades the overall security of the
system.
apiml.security.auth.zosmfServiceId
This parameter specifies the z/OSMF service id used as authentication provider. The service id is
defined in the static definition of z/OSMF. The default value is zosmf .
apiml.zoweManifest
This parameter lets you view the Zowe version by using the /version endpoint. To view the version
requires setting up the launch parameter of the API Gateway - apiml.zoweManifest with a path to
the Zowe build manifest.json file. This file is usually located in the root folder of Zowe build. If the
encoding of manifest.json file is different from UTF-8 and IBM1047, ensure that you set up the
launch parameter of API Gateway - apiml.zoweManifestEncoding with correct encoding.
Note: It is also possible to know the version of API ML and Zowe (if API ML used as part of Zowe), using
the /gateway/api/v1/version endpoint in the API Gateway service in the following format:
apiml.security.auth.tokenProperties.expirationInSeconds
This property is relevant only when the JWT is generated by the API Mediation Layer. API ML generation
of the JWT occurs in the following cases:
z/OSMF is only available as an older version which does not support JWT tokens
The SAF provider is used
To use a custom configuration for z/OSMF which changes the expiration of the LTPA token, it is
necessary to also set the expiration in this parameter.
Note: The default value is 8 hours which mimicks the 8 hour default expiration of the LTPA token in
z/OSMF.
Follow these steps:
i. Open the file <Zowe install directory>/components/gateway/bin/start.sh .
ii. Find the line that contains -cp ${ROOT_DIR}"/components/gateway/gateway-
service.jar":/usr/include/java_classes/IRRRacf.jar .
iii. Before this line, add a new line in the following format:
where:
{expirationTimeInSeconds}
Service configuration
For information about service configuration parameters, see Onboarding a REST API service with the Plain
Java Enabler (PJE).
Zuul configuration
As a provider for routing and filtering, the API Gateway contains a Zuul configuration as shown in the
following example.
Example:
The Zuul configuration allows the API Gateway to act as a reverse proxy server through which API requests
can be routed from clients on the northbound edge to z/OS servers on the southbound edge.
Note: For more information about Zuul configuration parameters, see the Spring Cloud Netflix
documentation.
Hystrix configuration
The API Gateway contains a Hystrix configuration as shown in the following example.
Example:
Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems,
services and third-party libraries, stop cascading failure, and enable resilience in complex distributed
systems where failure is inevitable.
Note: For more information about Hystrix configuration parameters, see the Netflix - Hystrix documentation.
AT-TLS
The communication server on z/OS provides a functionality to encrypt HTTP communication for on-platform
running jobs. This functionality is refered to as Application Transparent Transport Layer Security (AT-TLS).
Starting with Zowe version 1.24, it is possible to leverage AT-TLS within the API Mediation Layer. Each API
ML component can run with AT-TLS rules applied. Some components, such as the Discovery service, can be
made AT-TLS aware by enabling the AT-TLS profile, whereby TLS information can be utilized. Such
information could be a client certificate. To enable the AT-TLS profile and disable the TLS application in API
ML, update zowe.yaml with following values under the respective component in the components
section:
While API ML can not handle TLS on its own, the Mediation Layer needs information about the server
certificate that is defined in the AT-TLS rule. Update the zowe.yaml file for each respective APIML
component in the components sections with the path to the SAF Key ring from the AT-TLS rule and
specify the alias that is used for Inbound communication:
Note: This procedure does not configure AT-TLS on z/OS, but rather enables API ML to work with AT-TLS in
place.
Getting started
Version: v2.0.x LTS
Learn how to start exploring the Zowe components, applications and plug-ins.
Use core components:
Using Zowe Desktop
Using Zowe API Mediation Layer
Using Zowe CLI
Using Zowe Explorer
Using Zowe SDKs
Explore available plug-ins:
Zowe CLI plug-ins
Zowe Explorer extensions
Using the Zowe Desktop
Version: v2.0.x LTS
You can use the Zowe™ Application Framework to create application plugins for the Zowe Desktop. For more
information, see Extending the Zowe Application Framework.
Where:
zowe.externalDomains is the host on which you are running the Zowe Application Server, its the value
that was assigned in the zowe configuration file.
zowe.externalPort is the value of Gateway port that was assigned in the zowe configuration file.
Logging in and out of the Zowe Desktop
. To log in, enter your TSO credentials in the Username and Password fields.
. Press Enter. Upon authentication of your user name and password, the desktop opens.
To log out, click the User icon in the lower right corner and click Sign Out.
Changing user password
. Open the Preferences panel by clicking on the Preferences icon in the bottom right of the desktop.
2. Click the Change Password icon. 3. Fill out the Old Password and New Password fields. 4. Upon
successful password change, you will be taken to the desktop.
Updating an expired password
. Upon logging in with an expired password, a screen will be displayed prompting you to change your
password.
. Enter and confirm your new password in the corresponding fields.
. Upon successful password change, you will be taken to the desktop.
Pinning applications to the task bar
. Click the Start menu in the bottom left corner of the home screen.
. Locate the application you want to pin.
. Right-click the application icon and select Pin to taskbar.
Open application in new tab
. Click the Start menu in the bottom left corner of the home screen.
. Locate the application you want to open in new tab.
. Right-click the application icon and select Open In New Browser Tab.
While opening an application in new tab you can also do the following:
You can use url to send data to the application, for example you would specify
https://zowe.externalDomains[0]:zowe.externalPort/ZLUX/plugins/org.zowe.zl
ux.bootstrap/web/?pluginId=org.zowe.editor:data:{"type":"openFile","name":"
<path of file>"}
You can use url to open application directly on browser with and without credentials using
showLogin in url.
Personalizing the Desktop
. Click the Preferences icon to open the Preferences panel.
. Drag an image into the wallpaper grid, or press the upload button, to upload a new Desktop wallpaper.
. To set a new theme color, select a color from the palette or hue.
. Use the lightness swatch bar to adjust the lightness of the color.
Adjusting the lightness will also change the lightness of secondary text.
. Select a size (small, medium, or large) to adjust the scale of the Desktop UI.
Changing the desktop language
Use the Languages setting in the Preferences panel to change the desktop language. After you change the
language and restart Zowe, desktop menus and text display in the specified language. Applications that
support the specified desktop language also display in that language.
. Click the Preferences icon in the lower right corner.
. Click Languages.
. In the Languages dialog, click a language, and then click Apply.
. When you are prompted, restart Zowe.
With the Zowe Editor, you can create and edit the many types of files.
Open a dataset
To open a dataset, follow these steps:
. From the File menu, select Open Datasets. You can also use (ALT+K).
. In the Dataset field, specify the name of the dataset you want to open.
. Click Open
Opening a directory
. From the File menu, select Open Directory. You can also use (ALT+O).
. In the Directory field, specify the name of the directory you want to open. For example: /u/zs1234
. Click Open
The File Explorer on the left side of the window lists the folders and files in the specified directory. Clicking
on a folder expands the tree. Clicking on a file opens a tab that displays the file contents. Double-clicking on
a folder will make the active directory the newly specified folder.
Creating a new directory
. Right-click on a location in the directory tree where you want to create a new directory.
. From the right-click menu, click Create a directory....
. Specify a directory name in the Directory Name field.
. The Path will be set to the location that you initially right-clicked to open the dialogue. You can specify a
different location in the Path field.
. Click Create
Hotkeys
The following hotkeys can be used in the editor to navigate or perform actions with only the keyboard.
Shift TAB: Cycle through the menu bar, browsing type, search bar, file tree, and editor component.
Individual options within the menu bar and individual nodes within the file tree can be navigated
with the arrow keys and ENTER (to select).
Hot Key Command
ALT+K Open a dataset
ALT+O Open a directory
Hot Key Command
ALT+N Create a new file
ALT+W Close tab
ALT+W+Shift Close all tabs
CTRL+S Save file
ALT+M Navigate Menu bar (use arrow keys)
ALT+P Search Bar focus
ALT+1 Primary editing component focus
ALT+T+CTRL Undo close/close all
ALT+R+Shift Refresh active tab
ALT+PgUp(or <) Switch to left tab
ALT+PgDown(or >) Switch to right tab
ALT+B Show/hide left-hand side file tree
Using API Catalog
Version: v2.0.x LTS
As an application developer, use the API Catalog to view what services are running in the API Mediation
Layer. Through the API Catalog, you can also view the associated API documentation corresponding to a
service, descriptive information about the service, and the current state of the service. The tiles in the API
Catalog can be customized by changing values in the apiml.catalog.tile section defined in the
application.yml of a service. A microservice that is onboarded to the API Mediation Layer and configured
appropriately, registers automatically with the API Catalog and a tile for that service is added to the Catalog.
Note: For more information about how to configure the API Catalog in the application.yml, see: Add API
Onboarding Configuration.
API Versioning
See API Catalog and Versioning for more information about the API versioning.
. Select the version (v1, v2) to view the documentation of a specific API version.
Example:
. Expand the endpoint panel to see a detailed summary with responses and parameters of each endpoint,
the endpoint description, and the full structure of the endpoint.
Example:
Notes:
If a lock icon is visible on the right side of the endpoint panel, the endpoint requires authentication.
The structure of the endpoint is displayed relative to the base URL.
The URL path of the abbreviated endpoint relative to the base URL is displayed in the following
format:
Example:
/{yourServiceId}/api/v1/{endpointName}
The path of the full URL that includes the base URL is also displayed in the following format:
https://hostName:basePort/{yourServiceId}/api/v1/{endpointName}
Note: Before making requests to protected endpoints, authorize your session by clicking the lock icon
and complete the required information in the Authorization modal shown below:
Example:
Make a request
This section outlines the process for making a request.
Follow these steps:
. Expand the POST Pet endpoint.
. Click Try it out.
Example:
After you click Try it out, the example value in the Request Body field becomes editable.
. In the Example Value field, change the first id value to a random value. Change the second name
value to a value of your choice, such as the name of a pet.
. Click Execute.
Example:
The API Catalog Swagger UI submits the request and shows the curl that was submitted. The
Responses section shows the response.
Example:
To refresh the status of a static service, click the Refresh option located in the upper right-hand side of the
API Catalog UI. Successful requests return a pop-up notification that displays the message, The refresh
of static APIs was successful! .
Example:
If the request fails, a dialog appears with an error message that describes the cause of the fail.
Example:
Note: The manual Refresh Static APIs option applies only to static service APIs. Changes to the status of
services that are onboarded to allow for dynamic discovery require a restart of the specific services where
changes are applied. It is not necessary to restart the API Catalog or the Discovery Service.
As a system administrator, use the Metrics Service to view information about the acitivty of services running
in the API Mediation Layer. Currently, only HTTP metrics are displayed for core API Mediation Layer services.
In order for the Metrics Service to run, you must set components.metrics-service.enabled in
zowe.yaml to true . Additionally, for each APIML service you want to have metrics collected for, you
must set components.<service>.apiml.metrics.enabled set to true in zowe.yaml , or
configs.apiml.metrics.enabled set to true in the service's manifest. When metrics are enabled
for the API Gateway, the Gateway homepage displays a link to the Metrics Service dashboard. The
dashboard is available at https://{gateway_host}:{gateway_port}/metrics-service/ui/v1 .`
Metrics are provided on a near real-time basis, so the display shows the current activity of the selected
service. At this time there is no persistence for this information.
Service instances expose their HTTP metrics at https://<service_host>:
<service_port>/application/hystrix.stream using the Server-Sent-Events protocol. The Metrics
Service collects these streams and aggregates them across service instances before displaying.
Note: At this time, the /application/hystrix.stream endpoint for a service does not require
authentication if metrics are enabled for that service. If metrics for that service are not enabled,
/application/hystrix.stream is protected by authentication.
Using Zowe CLI
Version: v2.0.x LTS
Learn about how to use Zowe CLI, including connecting to the mainframe, managing profiles, integrating
with API Mediation Layer, and more.
You can use the CLI interactively from a command window on any computer on which it is installed, or run it
in a container or automation environment.
Tip: If you want to use the CLI together with a screen reader to provide accessibility, we recommend using
the Mac™ Terminal application enabled for Accessibility through System Preferences > Accessibility. On
Windows™, adjust the Properties settings in Command Prompt. For other operating systems, or for
alternative terminals, check the specification for the terminal to ensure that it meets accessibility
requirements.
Displaying help
Version: v2.0.x LTS
Zowe CLI has a command-line help system that details the commands, actions, and options available in the
product.
Top-level help
To view top-level help, open a command-line and issue the following command:
Alternatively, issue the following command to display a full list of all available commands:
Tip: All Zowe CLI commands begin with zowe.
Zowe CLI contains command groups that focus on specific business processes. For example, the zos-
files command group lets you interact with mainframe data sets. This article provides a brief synopsis of
the tasks that you can perform with each group. For more information, see Displaying help.
The commands available in the product are organized in a hierarchical structure. Command groups (for
example, zos-files ) contain actions (for example, create ) that let you perform actions on specific
objects (for example, a specific type of data set). For each action that you perform on an object, you can
specify options that affect the operation of the command. Zowe CLI contains the following command
groups:
auth
The auth command group lets you connect to Zowe API Mediation Layer authentication service and obtain a
token, or disconnect from the authentication service and revoke the token.
Note: For more information about auth syntax, actions, and options, open Zowe CLI and issue the
following command:
config
The config command group lets you manage JSON projects, global configuration, and convert profiles
(service profiles and base profiles) to team profiles.
Note: For more information about config syntax, actions, and options, open Zowe CLI and issue the
following command:
daemon
The daemon command groups let you perform operations that control the daemon-mode functionality of
the Zowe CLI. Daemon-mode runs the CLI command processor as a daemon to improve performance.
Note: For more information about daemon syntax, actions, and options, open Zowe CLI and issue the
following command:
Important! Using daemon mode contains various limitations and configuration requirements, depending on
the operating system where the daemon is running. For more information, see Preparing for installation in
Using daemon mode.
plugins
The plugins command group lets you install and manage third-party plug-ins for the product. Plug-ins
extend the functionality of Zowe CLI in the form of new commands. With the plugins command group, you
can perform the following tasks:
Install or uninstall third-party plug-ins.
Display a list of installed plug-ins.
Validate that a plug-in integrates with the base product properly.
Note: For more information about plugins syntax, actions, and options, open Zowe CLI and issue the
following command:
profiles
The profiles command group lets you create and manage profiles for use with other Zowe CLI command
groups. Profiles allow you to issue commands to different mainframe systems quickly, without specifying
your connection details with every command. With the profiles command group, you can perform the
following tasks:
Create, update, and delete profiles for any Zowe CLI command group that supports profiles.
Set the default profile to be used within any command group.
List profile names and details for any command group, including the default active profile.
Note: For more information about profiles syntax, actions, and options, open Zowe CLI, and issue the
following command:
provisioning
The provisioning command group lets you perform IBM z/OSMF provisioning tasks with templates and
provisioned instances from Zowe CLI.
With the provisioning command group, you can perform the following tasks:
Provision cloud instances using z/OSMF Software Services templates.
List information about the available z/OSMF Service Catalog published templates and the templates that
you used to publish cloud instances.
List summary information about the templates that you used to provision cloud instances. You can filter
the information by application (for example, DB2 and CICS) and by the external name of the provisioned
instances.
List detail information about the variables used (and their corresponding values) on named, published
cloud instances.
Note: For more information about provisioning syntax, actions, and options, open Zowe CLI and issue
the following command:
zos-console
The zos-console command group lets you issue commands to the z/OS console by establishing an extended
Multiple Console Support (MCS) console.
With the zos-console command group, you can perform the following tasks:
Important! Before you issue z/OS console commands with Zowe CLI, security administrators should ensure
that they provide access to commands that are appropriate for your organization.
Issue commands to the z/OS console.
Collect command responses and continue to collect solicited command responses on-demand.
Note: For more information about zos-console syntax, actions, and options, open Zowe CLI and issue
the following command:
zos-files
The zos-files command group lets you interact with data sets on z/OS systems.
With the zos-files command group, you can perform the following tasks:
Create partitioned data sets (PDS) with members, physical sequential data sets (PS), and other types of
data sets from templates. You can specify options to customize the data sets you create.
Download mainframe data sets and edit them locally in your preferred Integrated Development
Environment (IDE).
Upload local files to mainframe data sets.
List available mainframe data sets.
Interact with VSAM data sets directly, or invoke Access Methods Services (IDCAMS) to work with VSAM
data sets.
Note: For more information about zos-files syntax, actions, and options, open Zowe CLI and issue the
following command:
zos-jobs
The zos-jobs command group lets you submit jobs and interact with jobs on z/OS systems.
With the zos-jobs command group, you can perform the following tasks:
Submit jobs from JCL that resides on the mainframe or a local file.
List jobs and spool files for a job.
View the status of a job or view a spool file from a job.
Note: For more information about zos-jobs syntax, actions, and options, open Zowe CLI and issue the
following command:
zos-ssh
The zos-ssh command group lets you issue Unix System Services shell commands by establishing an SSH
connection to an SSH server. The zos-ssh command group was previously named zos-uss .
With the zos-uss command group, you can perform the following task:
Important! Before you issue z/OS UNIX System Services commands with Zowe CLI, security administrators
must provide access for your user ID to login via SSH.
Issue z/OS UNIX System Services shell commands over an SSH connection and stream back the
response.
Note: For more information about zos-ssh syntax, actions, and options, open Zowe CLI and issue the
following command:
zos-workflows
The zos-workflows command group lets you create and manage z/OSMF workflows on a z/OS system.
With the zos-workflows command group, you can perform the following tasks:
Create or register a z/OSMF workflow based on the properties on a z/OS system
Start a z/OSMF workflow on a z/OS system.
Delete or remove a z/OSMF workflow from a z/OS system.
List the z/OSMF workflows for a system or sysplex.
Note: For more information about zos-workflows syntax, actions, and options, open Zowe CLI and issue
the following command:
zos-tso
The zos-tso command group lets you issue TSO commands and interact with TSO address spaces on z/OS
systems.
With the zos-tso command group, you can perform the following tasks:
Execute REXX scripts
Create a TSO address space and issue TSO commands to the address space.
Review TSO command response data in Zowe CLI.
Note: For more information about zos-tso syntax, actions, and options, open Zowe CLI and issue the
following command:
zosmf
The zosmf command group lets you work with Zowe CLI profiles and get general information about z/OSMF.
With the zosmf command group, you can perform the following tasks:
Create and manage your Zowe CLI zosmf profiles. Profiles let you store configuration information for
use on multiple commands. You can create a profile that contains your username, password, and
connection details for a particular mainframe system, then reuse that profile to avoid typing it again on
every command. You can switch between profiles to quickly target different mainframe subsystems. For
more information, see Using profiles.
Verify that your profiles are set up correctly to communicate with z/OSMF on your system. For more
information, see Test Connection to z/OSMF.
Get information about the current z/OSMF version, host, port, and plug-ins installed on your system.
Note: For more information about zosmf syntax, actions, and options, open Zowe CLI and issue the
following command:
Issuing your first command
Version: v2.0.x LTS
You can provide all connection options directly on commands to access a service. For example, issue the
following command to list all data sets under the name ibmuser on the specified system:
If you omit username, password, host, or port (and a value cannot be found in your configuration), the CLI
prompts you to enter a value.
Using daemon mode
Version: v2.0.x LTS
Daemon mode significantly improves the performance of Zowe CLI commands by running Zowe CLI as a
persistent background process (daemon). Running Zowe CLI as daemon lets Zowe absorb the one-time
startup of Node.js modules, which results in significantly faster responses to Zowe commands.
When you run Zowe in daemon mode, you run all Zowe commands as you normally run them. The first time
you run a command, it starts the daemon in the background automatically and runs your desired Zowe
command. Since the first Zowe command starts the daemon, the first command usually runs slower than a
traditional Zowe command. However, subsequent Zowe commands run significantly faster. The daemon
continues to run in the background until you close your terminal window.
Important: We do not recommend using daemon mode in an environment where multiple users use the
same system. For example, a shared Linux server.
ZOWE_APP_LOG_LEVEL
ZOWE_IMPERATIVE_LOG_LEVEL
operating systems
Currently, Zowe does not offer a prebuilt daemon that can run on z/Linux operating systems. However,
developers can build the daemon binary from source.
The following steps describe how to install and build the daemon binary on z/Linux systems and the
technical limitations.
. Ensure that the z/Linux system can communicate using the Internet.
. Install Zowe CLI on the z/Linux system.
. Install the following Linux packages on the z/Linux system:
make
gcc-c++ (or g++)
git
Rust
For information about how to install Rust, see the Rust documentation.
. Shallow clone the Zowe CLI Git repository for the version of CLI that you installed. Issue the following
command:
. Change to the following directory:
. Build the daemon binary. Issue the following command from the zowe-cli/zowex directory:
After the command completes successfully, the Zowe daemon binary is a file named zowe that can be
found in the target/release directory.
. Copy the binary to another location on the system and add it to your PATH.
. (Optional) Modify the file permissions to allow others to use the same binary:
Example: The following example illustrates the command to allow all users to run the Zowe binary.
However, only the user that created the binary can overwrite the binary.
Note: You can delete the .zowe-cli folder that was created in Step 4 after the binary builds
successfully. The Zowe daemon commands will not function, and the daemon will need to be rebuilt for
all new versions of Zowe CLI.
Using profiles
Version: v2.0.x LTS
As a system programmer, profiles let you store configuration details for reuse, and for logging in to
authentication servers such as API Mediation layer. Create a profile that contains your username, password,
and connection details for a mainframe service, then use that profile to avoid typing the information on every
command. Switch between profiles to quickly target different mainframe subsystems.
Service profiles
Create profiles that target a specific mainframe service, then use profiles to issue commands. For example,
issue the following command (substituting your connection details) to create a zosmf service profile
named myprofile123 :
Use the profile. For example, issue the following command to list all data sets under the name ibmuser on
the system that you specified in your profile:
Note: If you do not specify a profile, your default profile is used. The first profile that your create is your
default. You can set a service profile as your default with the zowe profiles set-default
<profileType> <profileName> command.
Base profiles
Base profiles store your connection details and provide them to service profiles and commands as needed.
The base profile can also contain a token to connect to services through API ML.
For example, if you use the same username and password across multiple services, you can create a base
profile with your username and password. After the base profile is created, you can omit the --username
and --password options when you issue commands or use service profiles such as zosmf and tso .
Commands will use the values provided by the base profile. For example, create the base profile:
The first profile that you create for a service is set as your default profile. When you create subsequent
profiles, you can select one as the default with the zowe profiles set-default <profileType>
<profileName> command.
This version of Zowe CLI (V2) introduces the concept of team profiles.
Using team profiles helps to improve the initial setup of Zowe CLI by making service connection details
easier to share and easier to store within projects.
Consider the following benefits of using team profiles:
As an application developer or team member, you can manage your connection details efficiently in one
location.
As a Dev-Ops advocate, or team leader, you can share global profiles with your team members so that
they can easily access mainframe services. You can add the file directly to your project in a software
change management (SCM) application.
As a Dev-Ops advocate, you can quickly onboard new application developers by sharing the
configuration file that your team uses with the new team member.
As an application developer in a small shop where your role is that of an application developer and a
Dev-Ops advocate, you can create team profiles, base profiles, or service profiles; whatever profile type
is most suitable for your needs!
Important: With the introduction of team profiles, the Secure Credential Store (SCS) Plug-in is deprecated.
The zowe scs and zowe config command groups are obsolete. Secure credential encryption is now
included in the core CLI. The CLI prompts you to enter the username and password securely by default.
Commands in the zowe config command group now let you manage security for any option value.
Initializing team configuration
Version: v2.0.x LTS
You can use one of the following methods to initialize team configuration.
Tip: If API Mediation Layer is running on your site, Connecting profiles to API Mediation Layer is the
recommended method to use to initialize team configuration.
developers
As an application developer or Zowe CLI user, you want to manage your connection details efficiently and in
one location.
As a Dev-Ops advocate or team leader, you can share team profiles with your team members so that they
can easily access mainframe services.
Profile scenarios
The following topics describe various profile scenarios that DevOps advocates (team leaders) can share with
their teams, and application developers that function as DevOps advocates can create.
Access to one or more LPARs that contain services that share the same
credentials
The following example illustrates that the settings are using nested profiles to access multiple services
directly on one or more LPARs that share the same username and password.
Access to one or more LPARs contain services that do not share the same
credentials
The following example illustrates that the settings are using nested profiles to access multiple services
directly on one or more LPARs that do not share (different) user names and passwords.
Access to LPARs that access services through one API Mediation Layer
The following example illustrates that the settings access multiple services using the API ML where multi-
factor authentication (MFA) or single sign-on (SSO) is achievable using token-based authorization.
Access to LPARs that access services through one API Mediation Layer using
certificate authentication
Access LPARs containing multiple services through API Mediation Layer with certificate authentication
Sharing team configuration files
Version: v2.0.x LTS
Team leaders can share team configuration files using several methods:
Shared network drive
Project repository (for example, GitHub)
Web server
The following topics describe how to share the team configuration files.
Network drive
. Store the configuration files on a shared network drive.
. Issue the following command:
DriveLetter:
The drive letter of the shared network drive
FolderPath:
The directory path on the drive
Note: You can specify any path that file management applications, such as Windows Explorer and
Finder, can access. For example, a UNC network path ( \\
<HostName>\SharedZoweConfig\zowe.config.json ) or local file path ( C:\Users\
<UserName>\Downloads\zowe.config.json ).
When you first run the zowe config init --global-config command, the
profiles.base.properties.user and profiles.base.properties.password fields are defined
to the "secure" array in your configuration file, which helps to ensure that the username and password are
stored securely on your computer.
To store or update values for the secure fields (for example, when you want to change your username and
password), issue the zowe config secure command. If, for example, you want to update several
property values in a long list of properties, press Enter to skip a field.
To secure a specific field, issue zowe config set --secure <property-path> . For example, zowe
config set --secure profiles.base.properties.password . When you issue the command for
an option that is already secured, the CLI prompts you to enter a new option value.
You can use an editor to define options to the secure array in zowe.config.json . Any option that you
define to there becomes secure/prompted-for.
When you issue a command that is missing a required option value for a property (for example, host or
password) the CLI prompts you to enter the option value. In the V1-LTS version of Zowe CLI, the value that
was specified was not stored for future commands to use. As a result, you either responded to a prompt on
every command issued or issued a profile update command to store the missing value.
The autoStore property in the zowe.config.json file lets you store the option values for properties
automatically. When you specify the autoStore property in zowe.config.json to true , the value
that you enter when prompted is stored for future commands to use. The values for secure fields are stored
securely in the credential vault, and the other values are written to zowe.config.json on disk.
The default value of the autoStore property is true. However, if this behavior is undesirable (you do not
want to store properties automatically), set the value of autoStore to false. A value of false uses the V1-
LTS behavior, which prompts for missing values on all commands that you issue.
Integrating with API Mediation Layer
Version: v2.0.x LTS
Zowe API ML provides a single point of access to a defined set of mainframe services. The layer provides
API management features such as high-availability, consistent security, and a single sign-on (SSO) and
multi-factor authentication (MFA) experience.
You can access services through API ML without reauthenticating every time you issue a command. Tokens
allow for a secure interaction between the client and server. When you issue commands to API ML, the layer
routes requests to an appropriate API instance based on system load and available API instances.
Logging in
To request a token and "log in" to API ML, issue the following command:
The CLI prompts you to enter your username, password (where password can be a PIN concatenated with a
second factor for MFA), host, and port for the API ML instance.
Tip: If you already created a base profile, you might not be prompted for host and port.
A local base profile is created that contains your token. When you issue commands, you can omit your
username, password, host, and port. Instead, provide a base path and base profile on commands to connect
to API ML.
Optionally, when you do not want to store the token on disk, append the --show-token option to the
login command. If you choose this option, you must manually supply the token on each command using the
--token-value option.
Notes:
Tokens expire after a period of time defined by your security administrator. When a token expires, you
must log in again to get a new token.
If you omit connection details from a service profile, such as zosmf profile, the CLI uses the
information from your base profile.
You can choose to specify all connection details on a service profile and connect directly to the service.
Routing through API ML is not required.
Logging out
Log out to expire the API ML token and remove it from your base profile.
Issue the following command:
zowe auth logout
--disable-defaults : Specify this flag to prevent default values from being stored in service
profiles. If you do not use this flag, the defaults can override values in your base profile.
Note: Ensure that you do not provide username, password, host, or port directly on the service commands
or profiles. Supplying those options causes the CLI to ignore the API ML token in your base profile and
directly access the service.
Specifying a base path
The following example illustrates a complete path for a z/OSMF instance registered to API ML. The format of
base path can vary based on how API ML is configured at your site:
To access that API ML instance, create a service profile (or issue a command) with the --base-path
value of api/v1 . Your service profile uses the token and credentials stored in your default base profile.
Commands issued with this profile are routed through the layer to access an appropriate z/OSMF instance.
To access the service that is not SSO-enabled, explicitly provide your username and password when you
issue commands. Using the --base-path option ensures that the request is routed to API ML, but the
username and password that you provide overrides the credentials in your base profile. This lets you sign in
to the individual service.
Working with certificates
Version: v2.0.x LTS
Certificates authorize communication between a server and client, such as z/OSMF and Zowe CLI. The client
CLI must "trust" the server to successfully issue commands. Use one of the following methods to let the CLI
communicate with the server.
This section describes how to use Zowe CLI using its advanced capabilities.
To enable the feature, set an environment variable named ZOWE_OPT_PASSWORD with the value
"PROMPT*" . With the environment variable set, the CLI automatically enables the prompt when you omit a
required --password value.
Tip The procedure for setting environment variables is dependent on your operating systems. Refer to
documentation for your OS to learn about setting environment variables.
Change the keyword for prompt
The default keyword that enables prompting is "PROMPT*" . You might want to change the keyword if there
is a chance that "PROMPT*" could exist as a valid value for the field. For example, if you mask the data-
set argument and are working with real mainframe data sets that begin with the characters "PROMPT*" .
To configure the keyword, choose a new value. Then define the value to to the environment variable on your
computer named ZOWE_PROMPT_PHRASE .
Writing scripts
You can combine multiple Zowe CLI commands in bash or shell scripts to automate actions on z/OS.
Implement scripts to enhance your development workflow, automate repetitive test or build tasks, and
orchestrate mainframe actions from continuous integration/continuous deployment (CI/CD) tools such as
Jenkins or TravisCI.
Note: The type of script that you write depends on the programming languages that you use and the
environment where the script is executed. The following is a general guide to Zowe CLI scripts. Refer to
third-party documentation to learn more about scripting in general.
Follow these steps:
. Create a new file on your computer with the extension .sh. For example, testScript.sh .
Note: On Mac and Linux, an extension is not required. To make the file executable, issue the command
chmod u+x testScript .
. (Mac and Linux only) At the top of the file, specify the interpreter that your script requires. For
example, type #!/bin/sh or #!/bin/bash .
Note: The command terminal that you use to execute the script depends on what you specify at the top
of your script. Bash scripts require a bash interpreter (bash terminal), while shell scripts can be run from
any terminal.
. Write a script using a series of Zowe CLI commands.
Tip: You can incorporate commands from other command-line tools in the same script. You might
choose to "pipe" the output of one command into another command.
. From the appropriate command terminal, issue a command to execute the script. The command you
use to execute script varies by operating system.
The script runs and prints the output in your terminal. You can run scripts manually, or include them in your
automated testing and delivery pipelines.
Sample script library
Refer to the Zowe CLI Sample Scripts repository for examples that cover a wide range of scripting languages
and use cases.
Example: Clean up Temporary Data Sets
The script in this example lists specified data sets, then loops through the list of data sets and deletes each
file. You can use a similar script to clean up temporary data sets after use.
Note: Run this script from a bash terminal.
Example: Submit Jobs and Save Spool Output
The script in this example submits a job, waits for the job to enter output status, and saves the spool files to
local files on your computer.
Note: Run this script from a bash terminal.
Extending Zowe CLI
Version: v2.0.x LTS
You can install plug-ins to extend the capabilities of Zowe™ CLI. Plug-ins CLI to third-party applications are
also available, such as Visual Studio Code Extension for Zowe (powered by Zowe CLI). Plug-ins add
functionality to the product in the form of new command groups, actions, objects, and options.
Important! Plug-ins can gain control of your CLI application legitimately during the execution of every
command. Install third-party plug-ins at your own risk. We make no warranties regarding the use of third-
party plug-ins.
Install Zowe CLI plug-ins
IBM® CICS Plug-in for Zowe CLI
IBM® Db2® Database Plug-in for Zowe CLI
IBM® z/OS FTP Plug-in for Zowe CLI
IBM® IMS™ Plug-in for Zowe CLI
IBM® MQ Plug-in for Zowe CLI
Visual Studio Code (VSCode) Extension for Zowe
Software requirements for Zowe CLI plug-ins
Version: v2.0.x LTS
Before you use Zowe™ CLI plug-ins, complete the following steps:
Important! You can perform the required configurations for the plug-ins that you want to use before or
after you install the plug-ins. However, if you do not perform the required configurations, the plug-ins will
not function as designed.
Plug-in Required Configurations
Ensure that IBM CICS Transaction Server v5.2 or later is installed and running in
IBM CICS your mainframe environment
Plug-in for IBM CICS Management Client Interface (CMCI) is configured and running in your
Zowe CLI CICS region.
IBM Db2 Download and prepare the ODBC driver (required for only package installations)
Database and address the licensing requirements. Perform this task before you install the
Plug-in for plug-in.
Zowe CLI (MacOS) Download and Install Xcode.
IBM z/OS FTP Ensure that z/OS FTP service is enabled and configured with
JESINTERFACELEVEL = 2.
Plug-in for
Zowe CLI FTP over SSL is recommended.
Ensure that IBM® IMS™ v14.1.0 or later is installed and running in your mainframe
environment.
IBM IMS Plug- Configure IBM® IMS™ Connect.
in for Zowe CLI Configure IBM IMS Operations APIs to enable communication between the CLI
and the IMS instance.
Plug-in Required Configurations
Ensure that IBM® MQ™ v9.1.0 or later is installed and running in your mainframe
IBM MQ Plug- environment. Please read this blog for more information: Exposing the MQ REST
in for Zowe CLI API via the Zowe API Mediation Layer
Important! You can perform the required configurations for the plug-ins that you want to use before or
after you install the plug-ins. However, if you do not perform the required configurations, the plug-ins will
not function as designed.
Installing Zowe CLI plug-ins
Version: v2.0.x LTS
Use commands in the plugins command group to install and manage Zowe™ CLI plug-ins.
Important! Plug-ins can gain control of your CLI application legitimately during the execution of commands.
Install third-party plug-ins at your own risk. We make no warranties regarding the use of third-party plug-ins.
You can install the following Zowe plug-ins:
IBM® CICS® Plug-in for Zowe CLI
IBM® Db2® Plug-in for Zowe CLI
Third-party Zowe Conformant Plug-ins
Use either of the following methods to install plug-ins:
Install from an online NPM registry. Use this method when your computer can access the Internet.
For more information, see Installing plug-ins from an online registry.
Install from a local package. With this method, you download and install the plug-ins from a bundled set
of .tgz files. Use this method when your computer cannot access the Internet.
For more information, see Installing plug-ins from a local package.
. (Optional) Issue the following command to install two or more plug-ins using one command. Separate
the <my-plugin> names with one space.
Note: The IBM Db2 Plug-in for Zowe CLI requires additional licensing and ODBC driver configurations. If
you installed the DB2 plug-in, see IBM Db2 Plug-in for Zowe CLI.
You installed Zowe CLI plug-ins.
Validating plug-ins
Issue the plug-in validation command to run tests against all plug-ins (or against a plug-in that you specify)
to verify that the plug-ins integrate properly with Zowe CLI. The tests confirm that the plug-in does not
conflict with existing command groups in the base application. The command response provides you with
details or error messages about how the plug-ins integrate with Zowe CLI.
The validate command has the following syntax:
[plugin] (Optional) Specifies the name of the plug-in that you want to validate. If you do not specify
a plug-in name, the command validates all installed plug-ins. The name of the plug-in is not always the
same as the name of the NPM package.
Plug-in Syntax
IBM CICS Plug-in for Zowe CLI @zowe/cics-for-zowe-cli
Updating plug-ins
You can update Zowe CLI plug-ins from an online registry or from a local package.
Update plug-ins from an online registry
Issue the update command to install the latest stable version or a specific version of a plug-in that you
installed previously. The update command has the following syntax:
[plugin...]
Specifies the name of an installed plug-in that you want to update. The name of the plug-in is not
always the same as the name of the NPM package. You can use npm semantic versioning to specify a
plug-in version to which to update. For more information, see npm semver.
[--registry \<registry>\]
(Optional) Specifies a registry URL that is different from the registry URL of the original installation.
Examples: Update plug-ins
The following example illustrates the syntax to use to update an installed plug-in to the latest version:
The following example illustrates the syntax to use to update a plug-in to a specific version:
Update plug-ins from a local package
You can update plug-ins from a local package. You acquire the media from the Zowe Download website and
update the plug-ins using the zowe plugins install command.
To update plug-ins from a local package, follow the steps described in Installing plug-ins from a local
package.
Uninstall Plug-ins
Issue the uninstall command to uninstall plug-ins from Zowe CLI. After the uninstall process completes
successfully, the product no longer contains the plug-in configuration.
The uninstall command contains the following syntax:
[plugin]
The IBM® CICS® Plug-in for Zowe™ CLI lets you extend Zowe CLI to interact with CICS programs and
transactions. The plug-in uses the IBM CICS® Management Client Interface (CMCI) API to achieve the
interaction with CICS. For more information, see CICS management client interface on the IBM Knowledge
Center.
Use Cases
Commands
Software requirements
Installing
Creating a user profile
Use cases
As an application developer, you can use the plug-in to perform the following tasks:
Deploy code changes to CICS applications that were developed with COBOL.
Deploy changes to CICS regions for testing or delivery. See the define command for an example of how
you can define programs to CICS to assist with testing and delivery.
Automate CICS interaction steps in your CI/CD pipeline with Jenkins Automation Server or TravisCI.
Deploy build artifacts to CICS regions.
Alter, copy, define, delete, discard, and install CICS resources and resource definitions.
Commands
For detailed documentation on commands, actions, and options available in this plug-in, see our Web Help.
It is available for download in three formats: a PDF document, an interactive online version, and a ZIP file
containing the HTML for the online version.
Browse Online
Download (ZIP)
Download (PDF)
Software requirements
Before you install the plug-in, meet the software requirements in Software requirements for Zowe CLI plug-
ins.
Installing
Use one of the following methods to install or update the plug-in:
Installing plug-ins from an online registry
Installing plug-ins from a local package
The IBM® Db2® Database Plug-in for Zowe™ CLI lets you interact with Db2 for z/OS to perform tasks
through Zowe CLI and integrate with modern development tools. The plug-in also lets you interact with Db2
to advance continuous integration and to validate product quality and stability.
Zowe CLI Plug-in for IBM Db2 Database lets you execute SQL statements against a Db2 region, export a
Db2 table, and call a stored procedure. The plug-in also exposes its API so that the plug-in can be used
directly in other products.
Use cases
As an application developer, you can use Zowe CLI Plug-in for IBM DB2 Database to perform the following
tasks:
Execute SQL and interact with databases.
Execute a file with SQL statements.
Export tables to a local file on your computer in SQL format.
Call a stored procedure and pass parameters.
Commands
For detailed documentation on commands, actions, and options available in this plug-in, see our Web Help.
It is available for download in three formats: a PDF document, an interactive online version, and a ZIP file
containing the HTML for the online version.
Browse Online
Download (ZIP)
Download (PDF)
Software requirements
Before you install the plug-in, meet the software requirements in Software requirements for Zowe CLI plug-
ins.
Installing
Use one of the following methods to install the the Zowe CLI Plug-in for IBM Db2 Database:
Install from an online registry
Install from a local package
Installing from an online registry
Complete the following steps if you installed Zowe CLI from online registry:
. If you are installing the plug-in on an Apple computer that contains an M1 (or later architecture)
processor, complete the steps in M1 processor installation. If not, continue to Step 2.
. Open a command line window and issue the following command:
. Address the license requirements to begin using the plug-in.
Installing from a local package
Follow these procedures if you downloaded the Zowe installation package:
Downloading the ODBC driver
Download the ODBC driver before you install the Db2 plug-in.
Follow these steps:
. If you are installing the plug-in on a Apple computer that contains an M1 (or later architecture)
processor, complete the steps in M1 processor installation. If not, continue to Step 2.
. Download the ODBC CLI Driver (Darwin x64). Use the table within the download URL to select the
correct CLI Driver for your platform and architecture.
. Create a new directory named odbc_cli on your computer. Remember the path to the new directory.
You will need to provide the full path to this directory immediately before you install the Db2 plug-in.
. Place the ODBC driver in the odbc_cli folder. Do not extract the ODBC driver.
You downloaded and prepared to use the ODBC driver successfully. Proceed to install the plug-in to Zowe
CLI.
Installing Xcode on MacOS
To install the Db2 CLI plug-in on MacOS, you need the command line tools, which can be obtained by
installing Xcode from the App Store.
Note: On some versions of MacOS, you may receive the error xcrun: error: invalid active
developer path as shown below:
If this occurs, a manual refresh of the command line tools is required by running the following commands:
Installing the plug-in
Now that the Db2 ODBC CLI driver is downloaded, set the IBM_DB_INSTALLER_URL environment variable
and install the Db2 plug-in to Zowe CLI.
Follow these steps:
. Open a command line window and change the directory to the location where you extracted the zowe-
cli-bundle.zip file. If you do not have the zowe-cli-bundle.zip file, see the topic Install
Zowe CLI from local package in Installing Zowe CLI for information about how to obtain and extract it.
. From a command line window, set the IBM_DB_INSTALLER_URL environment variable by issuing the
following command:
Windows operating systems:
Linux and Mac operating systems:
For example, if you downloaded the Windows x64 driver (ntx64_odbc_cli.zip) to C:\odbc_cli, you would
issue the following command:
. Issue the following command to install the plug-in:
. Address the license requirements to begin using the plug-in.
After the license is copied, you can use the Db2 plugin functionality.
The IBM ODBC DB2 driver functions only on MacOS x86_64 architecture.
Use the following steps to configure an M1 (or later architecture) processor to behave as MacOS x86_64
architecture so that it can communicate with the IBM ODBC DB2 driver.
. Install Rosetta. Open a terminal window and issue the following command:
. Modify ~/.zshrc to contain the following syntax:
. Source the new file by issuing the following command:
. Switch to the x86_64 architecture by issuing the following command:
. Reinstall Zowe CLI.
. After you complete these steps, do one of the following:
If you are installing the plug-in from an online registry, continue with Step 2 in Install from an online
registry.
If you are installing the plug-in from a local package, continue with Step 2 in Installing from a local
package.
Important! You must issue the intel command every time that you open a new terminal window to help
ensure that Zowe CLI, Secure Credential Storage and the DB2 plug-in function properly on x86_64
architecture. Also, issue the command before you issue Zowe CLI commands.
IBM® z/OS FTP Plug-in for Zowe CLI
Version: v2.0.x LTS
The IBM® z/OS FTP Plug-in for Zowe™ CLI lets you extend Zowe CLI to access z/OS datasets, USS files, and
submit JCL. The plug-in uses the z/OS FTP service to achieve the interaction with z/OS.
Use cases
As a z/OS user, you can use the plug-in to perform the following tasks:
List, view, rename, and download z/OS datasets or USS files.
Upload local files or stdin to z/OS datasets or USS files.
List, view, and download job status or job spool files.
Delete a z/OS dataset, USS file, or job.
Commands
For detailed documentation on commands, actions, and options available in this plug-in, see our Web Help.
It is available for download in three formats: a PDF document, an interactive online version, and a ZIP file
containing the HTML for the online version.
Browse Online
Download (ZIP)
Download (PDF)
Software requirements
Before you install the plug-in, meet the software requirements in Software requirements for Zowe CLI plug-
ins.
Installing
Use one of the following methods to install or update the plug-in:
Installing plug-ins from an online registry
Installing plug-ins from a local package
The IBM IMS Plug-in for Zowe CLI lets you extend Zowe CLI such that it can interact with IMS resources
(regions, programs and transactions). You can use the plug-in to start, stop, and query regions and start,
stop, query, and update programs and transactions.
Note: For more information about IMS, see IBM Information Management System (IMS) on the IBM
Knowledge Center.
Use cases
As an application developer or DevOps administrator, you can use IBM IMS Plug-in for Zowe CLI to perform
the following tasks:
Refresh IMS transactions, programs, and dependent IMS regions.
Deploy application code into IMS production or test systems.
Write scripts to automate IMS actions that you traditionally perform using ISPF editors, TSO, and SPOC.
Commands
For detailed documentation on commands, actions, and options available in this plug-in, see our Web Help.
It is available for download in three formats: a PDF document, an interactive online version, and a ZIP file
containing the HTML for the online version.
Browse Online
Download (ZIP)
Download (PDF)
Software requirements
Before you install the plug-in, meet the software requirements in Software requirements for Zowe CLI plug-
ins.
Installing
Use one of the following methods to install or update the plug-in:
Installing plug-ins from an online registry
Installing plug-ins from a local package
The IBM MQ Plug-in for Zowe CLI lets you issue MQSC commands to a queue manager. MQSC commands
let you to perform administration tasks. For example, you can define, alter, or delete a local queue object.
Note: For more information about MQSC commands and the corresponding syntax, see MQSC commands
on the IBM Knowledge Center.
Use cases
You can use the plug-in to execute MQSC Commands. With MQSC commands you can manage queue
manager objects (including the queue manager itself), queues, process definitions, channels, client
connection channels, listeners, services, namelists, clusters, and authentication information objects.
Software requirements
Before you install the plug-in, meet the software requirements in Software requirements for Zowe CLI plug-
ins.
Installing
Use one of the following methods to install or update the plug-in:
Installing plug-ins from an online registry
Installing plug-ins from a local package
Zowe
chat on Slack
The Zowe Explorer extension for Visual Studio Code (VS Code) modernizes the way developers and system
administrators interact with z/OS mainframes, and lets you interact with data sets, USS files and jobs. Install
the extension directly to VSCode to enable the extension within the GUI. Working with data sets and USS
files from VSCode can be more convenient than using 3270 emulators, and complements your Zowe CLI
experience. The extension provides the following benefits:
Enables you to create, modify, rename, copy, and upload data sets directly to a z/OS mainframe.
Enables you to create, modify, rename, and upload USS files directly to a z/OS mainframe.
Provides a more streamlined way to access data sets, USS files and jobs.
Lets you create, edit, and delete Zowe CLI zosmf compatible profiles.
Lets you use the Secure Credential Store plug-in to store your credentials securely in the settings.
Note: Zowe Explorer is a subcomponent of Zowe. The extension demonstrates the potential for plug-ins
powered by Zowe.
Software Requirements
Ensure that you meet the following prerequisites before you use the extension:
Get access to z/OSMF.
Install Node.js v8.0 or later.
Install VSCode.
Configure TSO/E address space services, z/OS data set, file REST interface, and z/OS jobs REST
interface. For more information, see z/OS Requirements.
Create one Zowe CLI zosmf profile so that the extension can communicate with the mainframe.
Profile notes:
You can use your existing Zowe CLI zosmf profiles that are created with the Zowe CLI v.2.0.0 or later.
Zowe CLI zosmf profiles that are created in Zowe Explorer can be interchangeably used in the Zowe
CLI.
Optionally, you can continue using Zowe CLI V1 profiles with Zowe Explorer. For more information, see
instert link here.
Installing
Use the following steps to install Zowe Explorer:
. Address the software requirements.
. Open VSCode, and navigate to the Extensions tab on the left-hand side of the UI.
. Type Zowe Explorer in the search field.
Zowe Explorer appears in the list of extensions in the left-hand panel.
. Click the green Install button to install the extension.
. Restart VSCode.
The extension is now installed and available for use.
Note: For information about how to install the extension from a VSIX file and run system tests on the
extension, see the Developer README.
You can also watch the following videos to learn how to get started with Zowe Explorer, and work with data
sets.
Configuration
Configure Zowe Explorer in the settings file of the extension. To access the extension settings, navigate to
Manage (the gear icon) > Settings, then select Extensions > Zowe Explorer Settings. For example, you
can modify the following settings:
Data set creation settings: You can change the default creation settings for various data set types.
Follow these steps:
. Click the Edit in settings.json button under the Data Set, USS or JOBS settings that you want to edit.
. Edit the settings as needed.
. Save the settings.
Set the Temporary Folder Location: You can change the default folder location where temporary files
are stored.
Follow these steps:
i. Click the Edit in settings.json button under the Data Set, USS or JOBS settings that you want to
edit.
ii. Modify the following definition:
where /path/to/directory is the folder location that you specify.
iii. Save the settings.
Relevant Information
In this section you can find useful links and other relevant to Zowe Explorer information that can improve
your experience with the extension.
For information about how to develop for Eclipse Theia, see Theia README.
For information about how to create a VSCode extension for Zowe Explorer, see VSCode extensions for
Zowe Explorer.
Visit the #zowe-explorer channel on Slack for questions and general guidance.
Zowe Explorer Profiles
Version: v2.0.x LTS
After you install Zowe Explorer, you need to have a Zowe Explorer profile to use all functions of the
extension.
Note: You can continue using Zowe V1 profiles with Zowe Explorer V2.
Your team configuration file appears either in your .zowe folder if you choose the global configuration file
option, or in your workspace directory if you choose the project-level configuration file option. The
notification message that shows in VS Code after config file creation will include the path of the file created.
Managing profiles
You can edit your project-level or global configuration files.
Follow these steps:
. Right-click on your profile.
. Select the Add, Update, or Delete Profile options to edit the zowe config file in place.
Tip: Use the Intellisense prompts if you need assistance with filling parameters in the file.
. Save the config file.
. Refresh the view by clicking the refresh icon in the Data Sets, USS, or Jobs view.
Alternatively, press F1 to open the command palette, type and execute the Zowe Explorer: Refresh
Zowe Explorer option.
You successfully edited your configuration file.
Sample profile configuration
View the profile configuration sample. In the sample, the default lpar1.zosmf profile will be loaded upon
activation.
You can use the sample to customize your profile configuration file. Ensure that you edit the host and
port values before you work in your environment.
You successfully created a Zowe CLI zosmf profile. Now you can use all the functionalities of the
extension.
If you need to edit a profile, right-click the profile and select Update Profile option.
In addition, you can hide a profile from the explorer tree, and permanently delete a profile. When you delete
your profile permanently, the extension erases the profile from the .zowe folder. To hide or delete a profile,
right-click the profile and choose one of the respective options from the list.
Validating profiles
Note: The following information applies to Zowe CLI V1 profiles (one yaml file for each user profile) and
Zowe CLI team profiles (Zowe CLI V2).
Zowe Explorer includes the profile validation feature that helps to ensure that z/OSMF is accessible and
ready for use. If a profile is valid, the profile is active and can be used. By default, the feature is automatically
enabled. You can disable the feature by right-clicking on your profile and selecting the Disable Validation
for Profile option. Alternatively, you can enable or disable the feature for all profiles in the VS Code settings.
Follow these steps:
. Navigate to the VS Code settings.
. Open Zowe Explorer Settings.
. Enable or disable the automatic validation of profiles option.
. Restart VS Code.
Using base profiles and tokens with existing profiles
As a Zowe user, you can leverage the base profile functionality to access multiple services through Single
Sign-on. Base profiles enable you to authenticate using Zowe API Mediation Layer (API ML). You can use
base profiles with more than one service profile. For more information, see Base Profiles.
Before you log in and connect your service profile, ensure that you have Zowe CLI v6.16 or higher installed.
Accessing services through API ML using SSO
Connect your service profile with a base profile and token.
Follow these steps:
. Open Zowe CLI and issue the following command:
. Follow the onscreen instructions to complete the login process.
A local base profile is created that contains your token. For more information about the process, see
Token Management.
. Run Zowe Explorer and click the + icon.
. Select the profile you use with your base profile with the token.
The profile appears in the tree and you can now use this profile to access z/OSMF via the API Mediation
Layer.
For more information, see Integrating with API Mediation Layer.
Logging in to the Authentication Service
If the token for your base profile is no longer valid, you can log in again to get a new token with the Log in to
Authentication Service feature.
Notes:
The feature is only available for base profiles.
The feature supports only API Mediation Layer at the moment. Other extenders may use a different
authentication service.
Follow these steps:
. Open Zowe Explorer.
. Right-click your profile.
. Select the Log in to Authentication Service option.
You will be prompted to enter your username and password beforehand.
The token is stored in the corresponding base profile.
If you do not want to store your token, request from the server to end the session of your token. Use the Log
out from Authentication Service feature to invalidate the token.
Follow these steps:
. Open Zowe Explorer.
. Right-click your profile.
. Select the Log out from Authentication Service option.
Your token has been successfully invalidated.
Configuring Zowe Application Framework
Version: v2.0.x LTS
The Zowe Application ("App") Framework is configured in the Zowe configuration file. Configuration can be
used to change things such as verbosity of logs, the way in which the App server communicates with the
Mediation Layer, how ZSS operates, whether to use HTTPS or AT-TLS, what language the logs should be
set, and many more attributes.
When you install Zowe™, the App Framework is configured as a Mediation Layer client by default. This is
simpler to administer because the App framework servers are accessible externally through a single port:
API ML Gateway port. It is more secure because you can implement stricter browser security policies for
accessing cross-origin content.
You can modify the Zowe App Server and Zowe System Services (ZSS) configuration, as needed, or
configure connections for the Terminal app plugins.
(Not recommended): If the API Mediation Layer is not used, or you need to contact the App server directly,
the ZWED0031I message states which port it is accessible from, though generally it will be the same value
as specified within components.app-server.port . In that case, the server would be available at
https://<zowe.externalDomain>:<components.app-server.port>/
Although you access the App server via the Gateway port, the App server still needs a port assigned to it
which is the value of the components.app-server.port variable in the Zowe configuration file.
(Not recommended): If the mediation layer is not used, the Desktop will be accessible from the App server
directly at /ZLUX/plugins/org.zowe.zlux.bootstrap/web/index.html
Accessing ZSS
The zss server should be accessed through the gateway when both are present. When both are ready,
ZSS can be accessed from the API Mediation Layer Gateway, such as
https://<zowe.externalDomain>:<components.gateway.port>/zss/api/v1/
Although you access the ZSS server via the Gateway port, the ZSS server still needs a port assigned to it
which is the value of the components.zss.port variable in the Zowe configuration file.
If the mediation layer is not used, ZSS directly at https://<zowe.externalDomain>:
<components.zss.port>/
Configuration file
app-server configuration
The app-server uses the Zowe server configuration file for customizing server behavior. For a full list of
parameters, requirements, and descriptions, see the json-schema document for the app-server which
describes attributes that can be specified within the configuration file section components.app-server
zss configuration
ZSS shares some parameters in common with the app-server, so you can consult the above json-schema
document to find out which parameters are valid within components.zss of the Zowe configuration file.
However, some parameters within the app-server schema are not used by ZSS, such as the node section.
A ZSS-centric schema will be available soon.
Environment variables
In the latest version of Zowe, instance.env is no longer used. However, some environment variables that
could be specified within v1 can still be set within v2 in the zowe.environments section of the server
configuration file. Environment variables starting with ZWED_ map to values that can be specified within
components.app-server and components.zss so they are redundant, but you can refer to the above
json-schema document to see which values are useful or deprecated.
Network configuration
Note: The following attributes are to be defined in the Zowe configuration file.
The App Server can be accessed over HTTP and/or HTTPS, provided it has been configured for either.
HTTPS should be used, as HTTP is not secure unless AT-TLS is used. When AT-TLS is used by ZSS,
components.zss.agent.http.attls must be set to true.
HTTPS
Both app-server and zss server components use HTTPS by default, and the port parameters
components.app-server.port and components.zss.port control which port they are accessible
from. However, each have advanced configuration options to control their HTTPS behavior.
The app-server component configuration can be used to customize its HTTPS connection such as
which certificate and ciphers to use, and these parameters are to be set within components.app-
server.node.https as defined within the json-schema file
The zss component configuration can be used to customize its HTTPS connection such as which
certificate and ciphers to use, and these parameters are to be set within components.zss.agent.https
as defined within the json-schema file
HTTP
The app-server can be configured for HTTP via the components.app-server.node.http section
of the Zowe configuration file, as specified within the app-server json-schema file.
The zss server can be configured for HTTP via the components.zss.agent.http section of the Zowe
configuration file, as specified within the zss json-schema file. Note that components.zss.tls must
be set to false for HTTP to take effect, and that components.zss.agent.http.attls must be set to
true for AT-TLS to be recognized correctly.
Configuration Directories
When running, the App Server will access the server's settings and read or modify the contents of its
resource storage. All of this data is stored within a hierarchy of folders which correspond to scopes:
Product: The contents of this folder are not meant to be modified, but used as defaults for a product.
Site: The contents of this folder are intended to be shared across multiple App Server instances,
perhaps on a network drive.
Instance: This folder represents the broadest scope of data within the given App Server instance.
Group: Multiple users can be associated into one group, so that settings are shared among them.
User: When authenticated, users have their own settings and storage for the Apps that they use.
These directories dictate where the Configuration Dataservice will store content. For more information, see
the Configuration Dataservice documentation
Old defaults
Prior to Zowe release 2.0.0, the location of the configuration directories were initialized to be within the
<INSTANCE_DIR> folder unless otherwise customized. 2.0.0 does have backwards compatibility for the
existence of these directories, but <INSTANCE_DIR> folder no longer exists, so they should be migrated
to match the ones specified in the Zowe configuration file.
Folder New Location Old Location
siteDir <zowe.workspaceDirectory>/app-
server/site
<INSTANCE_DIR>/workspace/app-
server/site
Folder New Location Old Location
insta
instanceDir <zowe.workspaceDirectory>/app- <INSTANCE_DIR>/workspace/app- isn't
server server work
is us
groupsDir <zowe.workspaceDirectory>/app-
server/groups
<INSTANCE_DIR>/workspace/app-
server/groups
usersDir <zowe.workspaceDirectory>/app-
server/users
<INSTANCE_DIR>/workspace/app-
server/users
pluginsDir <zowe.workspaceDirectory>/app-
server/plugins
<INSTANCE_DIR>/workspace/app-
server/plugins
Logging configuration
For more information, see Logging Utility.
Enabling tracing
To obtain more information about how a server is working, you can enable tracing within the Zowe
configuration file via components.app-server.logLevels or components.zss.logLevels variable. For more
information on all loggers, check out the Extended documentation.
For example:
All settings are optional.
Log files
The app-server and zss will create log files containing processing messages and statistics. The log files are
generated within the log directory specified within the Zowe configuration file ( zowe.logDirectory ).
The filename patterns are:
App Server: <zowe.logDirectory>/appServer-yyyy-mm-dd-hh-mm.log
ZSS: <zowe.logDirectory>/zssServer-yyyy-mm-dd-hh-mm.log
Retaining logs
By default, the last five log files are retained. You can change this by setting environment variables within the
zowe.environments section of the Zowe server configuration file. To specify a different number of logs
to retain, set ZWED_NODE_LOGS_TO_KEEP for app-server logs, or ZWES_LOGS_TO_KEEP for zss logs. For
example, if you set ZWED_NODE_LOGS_TO_KEEP to 10, when the eleventh log is created, the first log is
deleted.
Controlling the logging location
At minimum, the log information for both app-server and zss are written to STDOUT such that messages are
visible in the terminal that starts Zowe and when on z/OS, the STC job log.
By default, both servers additionally log to files and the location of these files can be changed or logging to
them can be disabled. The following environment variables can be used to customize the app-server and
zss log locations by setting the values within the zowe.environments section of the Zowe configuration
file.
ZWED_NODE_LOG_DIR : Overrides the zowe configuration file value of zowe.logDirectory for
app-server, but keeps the default filenames.
ZWES_LOG_DIR : Overrides the zowe configuration file value of zowe.logDirectory for zss, but
keeps the default filenames.
ZWED_NODE_LOG_FILE : Specifies the full path to the file where logs will be written from app-server.
This overrides both ZWED_NODE_LOG_DIR and zowe.logDirectory . If the path is /dev/null
then no log file will be written. This option does not timestamp logs or keep multiple of them.
ZWES_LOG_FILE : Specifies the full path to the file where logs will be written from zss. This overrides
both ZWES_LOG_DIR and zowe.logDirectory . If the path is /dev/null then no log file will be
written. This option does not timestamp logs or keep multiple of them.
If the directory or file specified cannot be created, the server will run (but it might not perform logging
properly).
ZSS configuration
Running ZSS requires a Zowe configuration file configuration that is similar to the one used for the Zowe App
Server (by structure and property names). The attributes that are needed for ZSS (components.zss) at
minimum, are: port, crossMemoryServerName.
By default, ZSS is configured to use HTTPS with the same certificate information and port specification as
the other Zowe services. If you are looking to use AT-TLS instead, then you must set component.zss.tls
variable to false and define component.zss.agent.http section with port, ipAddresses, and attls: true
as shown below
(Recommended) Example of the agent body:
(Not recommended) Unsecure, HTTP example with AT-TLS:
ZSS 64 or 31 bit modes
Two versions of ZSS are included in Zowe, a 64 bit version and a 31 bit version. It is recommended to run the
64 bit version to conserve shared system memory but you must match the ZSS version with the version your
ZSS plugins support. Official Zowe distributions contain plugins that support both 64 bit and 31 bit, but
extensions may only support one or the other.
Verifying which ZSS mode is in use
You can check which version of ZSS you are running by looking at the logs. At startup, the message
ZWES1013I states which mode is being used, for example:
ZWES1013I ZSS Server has started. Version 2.0.0 64-bit
Or
ZWES1013I ZSS Server has started. Version 2.0.0 31-bit
[ca_label]
[server_userid]
[server_common_name]
[server_label]
[ring_name]
[output_dataset_name]
Note:
[server_userid] must be the server user ID, such as the STC user.
[server_common_name] must be the z/OS hostname that runs Zowe
. In the /plugins directory, create an allowedPlugins.json file. You can use the default
allowedPlugins.json file as a template by copying it from the following location:
. Open the allowedPlugins.json file and specify apps that user can access. For example:
Notes:
Identifier and version attributes are required.
When a user logs in to the desktop, Zowe determines which apps they can see by concatenating
the list of apps available to all users with the apps available to the individual user.
. Restart the app server.
For example:
/ZLUX/plugins/org.zowe.foo/services/baz/_current/users/fred
For example, to issue a POST request to the dataservice endpoint documented above, users must have
READ access to the following profile:
ZLUX.1.SVC.ORG_ZOWE_FOO.BAZ.POST.USERS.FRED
For configuration dataservice endpoint profiles use the service code CFG . For core dataservice endpoints
use COR . For all other dataservice endpoints use SVC .
Creating generic authorization profiles
Some endpoints can generate an unlimited number of URIs. For example, an endpoint that performs a
DELETE action on any file would generate a different URI for each file, and users can create an unlimited
number of files. To apply RBAC to this type of endpoint you must create a generic profile, for example:
ZLUX.1.COR.ORG_ZOWE_FOO.BAZ.DELETE.**
You can create generic profile names using wildcards, such as asterisks (*). For information on generic
profile naming, see IBM documentation.
Configuring basic authorization
The following are recommended for basic authorization:
To give administrators access to everything in Zowe, create the following profile and give them UPDATE
access to it: ZLUX.**
To give non-administrators basic access to the site and product, create the following profile and give
them READ access to it: ZLUX.*.ORG_ZOWE_*
To prevent non-administrators from configuring endpoints at the product and instance levels, create the
following profile and do not give them access to it: ZLUX.1.CFG.**
To give non-administrators all access to user, create the following profile and give them UPDATE access
to it: ZLUX.1.CFG.*.*.USER.**
Endpoint URL length limitations
SAF profiles cannot contain more than 246 characters. If the path section of an endpoint URL is long enough
that the profile name exceeds the limit, the path is trimmed to only include elements that do not exceed the
limit. To avoid this issue, we recommend that appliction developers maintain relatively short endpoint URL
paths.
For information on endpoint URLs, see Dataservice endpoint URL lengths and RBAC
. Set defaultAuthentication to the same category as the plugin of choice, as seen in its
pluginDefinition.json file. For example:
sso-auth: "saf"
trivial-auth: "fallback"
The following is an example configuration for sso-auth , as seen in a default installation of Zowe:
/server/loglevels (GET) Returns the verbosity levels set in the Zowe App
Server logger.
Returns Zowe App Server environment
/server/environment (GET) information, such as the operating system
version, node server version, and process ID.
/server/reload (GET) Reloads the Zowe App Server. Only available in
cluster mode.
This section explains how to configure Zowe CLI using environment variables.
By default, Zowe CLI configuration is stored on your computer in the C:\Users\user01\.zowe directory.
The directory includes log files, profile information, and installed CLI plug-ins. When troubleshooting, refer to
the logs in the imperative and zowe folders.
daemon_pid.json
Review the security considerations for Zowe APIs and learn how to prevent the Denial of Service (DoS)
attacks.
The default configuration before Zowe version 1.14.0 contains Data sets and Unix files and Jobs API
microservices which might be vulnerable to DoS attacks in the form of slow https attacks. You can add
additional configuration to the start script of these components in order to prevent resource starvation via
slow https attacks.
To update the configuration of the Data sets and Unix files component, modify the start.sh script
within the runtime component directory /zowe/runtime/components/files-api/bin .
To update the configuration of the Jobs component, modify the start.sh script within the runtime
component directory /zowe/runtime/components/jobs-api/bin .
Ensure that the -Dserver.connection-timeout=8000 parameter is set. This parameter specifies how
long the component waits to receive all the required information from the client that makes a request.
See a snippet of a configured start.sh script for the Jobs component as follows:
In version 1.14.0 and later, the preceding snippet reflects the default configuration.
Advanced Gateway features configuration
Version: v2.0.x LTS
As a system programmer who wants to configure advanced Gateway features of the API Mediation Layer,
you can customize Gateway parameters by modifying either of the following files:
<Zowe runtime directory>/components/gateway/bin/start-gateway.sh
zowe.yaml
The parameters begin with the -D prefix, similar to all the other parameters in the file.
Note: Restart Zowe to apply changes to the parameter.
Follow the procedures in the following sections to customize Gateway parameters according to your
preferences:
Prefer IP Address for API Layer services
SAF as an Authentication provider
Enable JWT token refresh endpoint
Change password with SAF provider
Gateway retry policy
Gateway client certificate authentication
Gateway timeouts
CORS handling
Encoded slashes
Connection limits
Routed instance header
Distributed load balancer cache
Replace or remove catalog with another service
API Mediation Layer as a standalone component
SAF resource checking
where:
120
All requests are disabled as the default configuration for retry with one exception: the server retries GET
requests that finish with status code 503 . To change this default configuration, include the following
parameters:
ribbon.retryableStatusCodes
Provides a list of status codes, for which the server should retry the request.
Example: -Dribbon.retryableStatusCodes="503, 404"
ribbon.OkToRetryOnAllOperations
Specifies whether to retry all operations for this service. The default value is false . In this case, only
GET requests are retried if they return a response code that is listed in
ribbon.retryableStatusCodes . Setting this parameter to true enables retry requests for all
methods which return a response code listed in ribbon.retryableStatusCodes .
Note: Enabling retry can impact server resources due to request body buffering.
ribbon.MaxAutoRetries
Specifies the number of times a failed request is retried on the same server. This number is multiplied
with ribbon.MaxAutoRetriesNextServer . The default value is 0 .
ribbon.MaxAutoRetriesNextServer
Specifies the number of additional servers that attempt to make the request. This number excludes the
first server. The default value is 5 .
Gateway timeouts
Use the following procedure to change the global timeout value for the API Mediation Layer instance.
Follow these steps:
. Open the file zowe.yaml .
. Find or add the property components.gateway.apiml.gateway.timeoutmillis , and set the
value to the desired value.
. Restart Zowe&trade .
If you require finer control, you can edit the <Zowe install
directory>/components/gateway/bin/start.sh , and modify the following properties:
apiml.gateway.timeoutMillis
This property defines the global value for http/ws client timeout.
Add the following properties to the file for the API Gateway:
Note: Ribbon configures the client that connects to the routed services.
ribbon.connectTimeout
Specifies the value in milliseconds which corresponds to the period in which API ML should establish a
single, non-managed connection with the service. If omitted, the default value specified in the API ML
Gateway service configuration is used.
ribbon.readTimeout
Specifies the time in milliseconds of inactivity between two packets in response from this service to API
ML. If omitted, the default value specified in the API ML Gateway service configuration is used.
ribbon.connectionManagerTimeout
The HttpClient employs a special entity to manage access to HTTP connections called by the HTTP
connection manager. The purpose of an HTTP connection manager is to serve as a factory for new
HTTP connections, to manage the life cycle of persistent connections, and to synchronize access to
persistent connections. Internally, the connections that are managed serve as proxies for real
connections. ConnectionManagerTimeout specifies a period during which managed connections
with API ML should be established. The value is in milliseconds. If omitted, the default value specified in
the API ML Gateway service configuration is used.
CORS handling
You can enable the Gateway to terminate CORS requests for itself and also for routed services. By default,
Cross-Origin Resource Sharing (CORS) handling is disabled for Gateway routes gateway/api/v1/** and
for individual services. After enabling the feature as stated in the prodecure below, API Gateway endpoints
start handling CORS requests and individual services can control whether they want the Gateway to handle
CORS for them through the Custom Metadata parameters.
When the Gateway handles CORS on behalf of the service, it sanitizes defined headers from the
communication (upstream and downstream). Access-Control-Request-Method,Access-Control-
Request-Headers,Access-Control-Allow-Origin,Access-Control-Allow-Methods,Access-
Control-Allow-Headers,Access-Control-Allow-Credentials,Origin The resulting request to
the service is not a CORS request and the service does not need to do anything extra. The list can be
overridden by specifying different comma-separated list in the property
components.gateway.apiml.service.ignoredHeadersWhenCorsEnabled in zowe.yaml
Additionally, the Gateway handles the preflight requests on behalf of the service when CORS is enabled in
Custom Metadata, replying with CORS headers:
Access-Control-Allow-Methods: GET,HEAD,POST,DELETE,PUT,OPTIONS
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Alternatively, list the origins as configured by the service, associated with the value
customMetadata.apiml.corsAllowedOrigins in Custom Metadata.
If CORS is enabled for Gateway routes but not in Custom Metadata, the Gateway does not set any of the
previously listed CORS headers. As such, the Gateway rejects any CORS requests with an origin header for
the Gateway routes.
Use the following procedure to enable CORS handling.
Follow these steps:
. Open the file zowe.yaml .
. Find or add the property components.gateway.apiml.service.corsEnabled and set the value
to true .
. Restart Zowe&trade .
Requests through the Gateway now contain a CORS header.
Encoded slashes
By default, the API Mediation Layer accepts encoded slashes in the URL path of the request. If you are
onboarding applications which expose endpoints that expect encoded slashes, it is necessary to keep the
default configuration. We recommend that you change the property to false if you do not expect the
applications to use the encoded slashes.
Use the following procedure to reject encoded slashes.
Follow these steps:
. Open the file zowe.yaml .
. Find or add the property components.gateway.apiml.service.allowEncodedSlashes and set
the value to false .
. Restart Zowe&trade .
Requests with encoded slashes are now rejected by the API Mediation Layer.
Connection limits
By default, the API Gateway accepts up to 100 concurrent connections per route, and 1000 total concurrent
connections. Any further concurrent requests are queued until the completion of an existing request. The
API Gateway is built on top of Apache HTTP components that require these two connection limits for
concurrent requests. For more information, see Apache documentation.
Use the following procedure to change the number of concurrent connections.
Follow these steps:
. Open the file zowe.yaml .
. Find or add the property components.gateway.server.maxConnectionsPerRoute and set the
value to an appropriate positive integer.
. Find or add the property components.gateway.server.maxTotalConnections and set the value
to an appropriate positive integer.
. Restart Zowe.
alternative-catalog
This is the highest priority provider, such as a REST endpoint call (ZSS or similar one). This option is
disabled by default. In Zowe, ZSS has the API to check for SAF resource authorization.
native
The Native JZOS classes from Java are used to determine SAF resource access. This is the default
provider.
dummy
This is the lowest priority provider. This is the dummy implementation and is defined in a file.
Note: Verification of the SAF resource uses the first available provider based on the specified priority. The
default configuration resolves to the native provider.
You can select a specific provider by specifying the
components.gateway.apiml.security.authorization.provider key in the zowe.yaml file.
Use the parameter value to strictly define a provider. If verification is disabled, select the endpoint option.
Follow these steps:
. Open the file zowe.yaml .
. Find or add the property components.gateway.apiml.security.authorization.provider
and set desired value.
. Restart Zowe&trade .
Examples:
Note: To configure the endpoint provider, add the following additional property:
components.gateway.apiml.security.authorization.endpoint.enabled: true
To use the endpoint provider, customize the URL corresponding to the SAF resource authorization. By
default, the ZSS API is configured and used.
Follow these steps:
. Open the file zowe.yaml .
. Find or add the property
components.gateway.apiml.security.authorization.endpoint.url and set desired value.
The default value for ZSS API is
https://${ZWE_haInstance_hostname}:${GATEWAY_PORT}/zss/api/v1/saf-auth
. Restart Zowe&trade .
Checking providers
REST endpoint call
The REST provider calls the external API to retrieve information about access rights. To enable the feature
outside of the mainframe, such as when running in Docker, you can use a REST endpoint call using the GET
method:
Method: GET
URL: {base path}/{userId}/{class}/{entity}/{level}
Response:
Note: For more information about this REST endpoint call, see ZSS implementation.
Native
The Native provider is the easiest approach to use the SAF resource checking feature on the mainframe.
Enable this provider when classes com.ibm.os390.security.PlatformAccessControl and
com.ibm.os390.security.PlatformReturned are available on the classpath. This approach uses the
following method described in the IBM documentation: method.
Note: Ensure that the version of Java on your system has the same version of classes and method
signatures.
Dummy implementation
The Dummy provider is for testing purpose outside of the mainframe.
Create the file saf.yml and locate it in the folder, where is application running or create file mock-
saf.yml in the test module (root folder). The highest priority is to read the file outside of the JAR. A file
(inner or outside) has to exist.
The following YAML presents the structure of the file:
Notes:
Classes and resources are mapped into a map, user IDs into a list.
The load method does not support formatting with dots, such as shown in the following example:
Example: {CLASS}.{RESOURCE} Ensure that each element is separated.
The field safAccess is not required to define an empty file without a definition.
Classes and resources cannot be defined without the user ID list.
When a user has multiple definitions of the same class and resource, only the most privileged access
level loads.
Discovery Service configuration parameters
Version: v2.0.x LTS
API ML configuration
Eureka configuration
API ML configuration
apiml.discovery.userid
The Discovery service in HTTP mode protects it's endpoints with basic authentication instead of client
certificate. This parameter specifies the userid. The default value is eureka .
apiml.discovery.password
This parameter specifies the password for the basic authentication used by the Discovery Service in
HTTP mode. The default value is password .
apiml.discovery.allPeersUrls
This parameter contains the list of URLs of the Discovery Service in case of multiple instances of the
service on different host. Example:
Note: Each URL within the list must be separated by a comma.
apiml.discovery.staticApiDefinitionsDirectories
The static definition directories can be specified as a parameter at startup and will be scanned by the
Discovery Service. These directories contains the definitions of static services. Example:
apiml.discovery.serviceIdPrefixReplacer
This parameter is used to modify the service ID of a service instance, before it registers to API ML.
Using this parameter ensures compatibility of services that use a non-conformant organization prefix
with v2, based on Zowe v2 conformance. The value of the
*apiml.discovery.serviceIdPrefixReplacer parameter is represented as a tuple that
contains two strings, separated by a comma. The format of this parameter contains the following two
elements:
First, the prefix that you want to replace in the service ID
Second, the new prefix that will be replaced
Example: The value of the parameter has the following format:
oldServiceIdPrefix,newServiceIdPrefix
Set this parameter in your Zowe YAML configuration (typically zowe.yaml ) by defining
configs.apiml.discovery.serviceIdPrefixReplacer . For example, defining it globally:
Eureka configuration
The Discovery Service contains a configuration for implementing the client-side service discovery and for
defining a Eureka Server for service registry. Such configuration is shown below:
eureka.client.registerWithEureka If we make this property as true then while the server starts the
inbuilt client will try to register itself with the Eureka server.
eureka.client.registerWithEureka The inbuilt client will try to fetch the Eureka registry if we configure
this property as true.
eureka.client.serviceUrl.defaultZone A fallback value that provides the Eureka service URL for any
client that does not express a preference (in other words, it is a useful default).
More information about the other Eureka parameters can be found in the Spring Cloud Netflix Eureka
documentation.
API Gateway configuration parameters
Version: v2.0.x LTS
As an application developer who wants to change the default configuration of the API Mediation Layer, set
the following parameters by modifying the <Zowe install
directory>/components/gateway/bin/start.sh file:
Runtime configuration
Environment variables
Service configuration
Zuul configuration
Hystrix configuration
AT-TLS
Runtime configuration
This section describes runtime configuration properties.
apiml.service.hostname
This property is used to set the API Gateway hostname.
apiml.service.port
This property is used to set the API Gateway port.
apiml.service.discoveryServiceUrls
This property specifies the Discovery Service URL used by the service to register to Eureka.
apiml.service.preferIpAddress
Set the value of this property to true to advertize a service IP address instead of its hostname.
Notes:
If you set this property to true on the Discovery Service, ensure that you modify the value of
discoveryLocations: to use the IP address instead of the hostname. Failure to modify the
discoveryLocations: value prevents Eureka from detecting registered services. As a result,
the available-replicas is empty.
Enabling this property may also cause issues with SSL certificates and Subject Alternative Name
(SAN).
apiml.cache.storage.location
This property specifies the location of the EhCache used by Spring.
Note: It is necessary for the API ML process to have write access to the cache location.
apiml.security.ssl.verifySslCertificatesOfServices
This parameter makes it possible to prevent server certificate validation.
Important! Ensure that this parameter is set to true in production environments. Setting this
parameter to false in production environments significantly degrades the overall security of the
system.
apiml.security.auth.zosmfServiceId
This parameter specifies the z/OSMF service id used as authentication provider. The service id is
defined in the static definition of z/OSMF. The default value is zosmf .
apiml.zoweManifest
This parameter lets you view the Zowe version by using the /version endpoint. To view the version
requires setting up the launch parameter of the API Gateway - apiml.zoweManifest with a path to
the Zowe build manifest.json file. This file is usually located in the root folder of Zowe build. If the
encoding of manifest.json file is different from UTF-8 and IBM1047, ensure that you set up the
launch parameter of API Gateway - apiml.zoweManifestEncoding with correct encoding.
Note: It is also possible to know the version of API ML and Zowe (if API ML used as part of Zowe), using
the /gateway/api/v1/version endpoint in the API Gateway service in the following format:
apiml.security.auth.tokenProperties.expirationInSeconds
This property is relevant only when the JWT is generated by the API Mediation Layer. API ML generation
of the JWT occurs in the following cases:
z/OSMF is only available as an older version which does not support JWT tokens
The SAF provider is used
To use a custom configuration for z/OSMF which changes the expiration of the LTPA token, it is
necessary to also set the expiration in this parameter.
Note: The default value is 8 hours which mimicks the 8 hour default expiration of the LTPA token in
z/OSMF.
Follow these steps:
i. Open the file <Zowe install directory>/components/gateway/bin/start.sh .
ii. Find the line that contains -cp ${ROOT_DIR}"/components/gateway/gateway-
service.jar":/usr/include/java_classes/IRRRacf.jar .
iii. Before this line, add a new line in the following format:
where:
{expirationTimeInSeconds}
Service configuration
For information about service configuration parameters, see Onboarding a REST API service with the Plain
Java Enabler (PJE).
Zuul configuration
As a provider for routing and filtering, the API Gateway contains a Zuul configuration as shown in the
following example.
Example:
The Zuul configuration allows the API Gateway to act as a reverse proxy server through which API requests
can be routed from clients on the northbound edge to z/OS servers on the southbound edge.
Note: For more information about Zuul configuration parameters, see the Spring Cloud Netflix
documentation.
Hystrix configuration
The API Gateway contains a Hystrix configuration as shown in the following example.
Example:
Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems,
services and third-party libraries, stop cascading failure, and enable resilience in complex distributed
systems where failure is inevitable.
Note: For more information about Hystrix configuration parameters, see the Netflix - Hystrix documentation.
AT-TLS
The communication server on z/OS provides a functionality to encrypt HTTP communication for on-platform
running jobs. This functionality is refered to as Application Transparent Transport Layer Security (AT-TLS).
Starting with Zowe version 1.24, it is possible to leverage AT-TLS within the API Mediation Layer. Each API
ML component can run with AT-TLS rules applied. Some components, such as the Discovery service, can be
made AT-TLS aware by enabling the AT-TLS profile, whereby TLS information can be utilized. Such
information could be a client certificate. To enable the AT-TLS profile and disable the TLS application in API
ML, update zowe.yaml with following values under the respective component in the components
section:
While API ML can not handle TLS on its own, the Mediation Layer needs information about the server
certificate that is defined in the AT-TLS rule. Update the zowe.yaml file for each respective APIML
component in the components sections with the path to the SAF Key ring from the AT-TLS rule and
specify the alias that is used for Inbound communication:
Note: This procedure does not configure AT-TLS on z/OS, but rather enables API ML to work with AT-TLS in
place.
Extending Zowe
Version: v2.0.x LTS
Zowe is designed as an extensible tools platform. One of the Zowe architecture goals is to provide
consistent interoperability between all Zowe components including extensions. The Zowe Conformance
Program defines the criteria to help accomplish the aforementioned goal. By satisfying the Zowe
Conformance Program criteria, extension providers are assured that their software remains functional
throughout the Zowe release cycle. For more information, see the Zowe Conformance Program.
Zowe can be extended in the following ways:
Extend Zowe CLI
Extend Zowe API Mediation Layer
Dynamic API registration
Static API registration
Add a plug-in to the Zowe Desktop
Extend Zowe Explorer
To help Zowe extenders better understand how extensions are developed and deployed, we provide a set of
sample extensions. These sample extensions contain the necessary boilerplate project setup, application
code, and installation scripts to jumpstart the extension development and deployment to Zowe.
Note: For more information on the architecture of Zowe, see Zowe Architecture.
Sample extensions
Sample Zowe API and API Catalog extension
The repository https://github.com/zowe/sample-node-api contains a sample Zowe extension with a node
server providing sample APIs for looking at cars in a dealership. For more information, see sample-node-api.
Sample Zowe Desktop extension
The repository https://github.com/zowe/sample-trial-app contains a sample Zowe extension with a node
server providing a web page that gives a user interface to the APIs included with the API sample above.
Packaging z/OS extensions
Version: v2.0.x LTS
You can extend Zowe in multiple ways. You may extend Zowe with microservices, which may start a new
service within Zowe. You can also create Zowe App Framework plug-ins to provide users with a UI.
Before you start, review the following terms:
component:
Component refers to the most generic way to describe a program which can work within Zowe. It can be
a microservice, a Zowe App Framework plug-in, or even just a shared program to be used by other
Zowe components. This is also the generic word when referring to both Zowe core components and
extensions. In most of the cases described in this topic, this terminology does not include programs
running on the client side, like Zowe CLI plug-in or Zowe Explorer (VSCode extension).
extension
Extension is similar to component but excludes Zowe core components. It is recommended that you
install all Zowe extensions into a shared extension directory.
Refers to the Zowe component manifest file. You can find detailed definition of manifest in Server
Component Manifest File Reference.
schema.json
An example filename of the json schema file specified by the manifest property schemas.configs as
detailed in Server Component Manifest File Reference. The file details the parameters that are valid for
the component's configuration within Zowe server configuration files. See documentation on server
component schema files for more information.
apiml-static-registration.yaml.template
Refers to a supporting file that instructs the Zowe launch script how to register this extension service to
the API Mediation Layer Discovery service. In this case, this file is referred in the manifest.yaml
apimlServices.static[0].file field. This file is optional depending on the function of the
component and you can change and customize the file name in the manifest file.
bin/(configure|start|validate).sh
This file contains the Zowe component lifecycle scripts. You may not need these files depending on the
function of the component. You can find detailed definition of lifecycle scripts in Zowe component
runtime lifecycle.
It is also suggested that you put the following files into the package:
README.md
This file is a brief introduction to your extension in Markdown format, including how it should be
installed, configured, verified, and so on.
LICENSE
Sample manifests
For examples of manifests thoughout Zowe GitHub repositories, see the following links:
API Catalog manifest.yaml
Jobs API manifest.yaml
Sample Node API and API Catalog extension manifest.yaml
Sample Zowe App Framework extension manifest.yaml
Install Zowe server component
Version: v2.0.x LTS
Learn how to install Zowe server components or extensions by using zwe components install
commands or manually.
Install component
Zowe ships zwe components install command to help end-user to install any Zowe server
components (extensions). Zowe core components are also installed with this command. In order to be
compatible with the command, components must follow Zowe server component package format standard.
Important this command will also enable the component globally by updating your zowe.yaml
configuration file. You can pass --skip-enable to disable this behavior.
Execute the command from z/OS USS. Use the following command line parameters:
--component-file|--component|-o
(String, Required) Defines the path to the Zowe YAML configuration. zwe components install
relies on the zowe.extensionDirectory definition to know where the component will be installed.
-- --skip-enable
(Boolean, Optional) Tells the command do not enable the component by updating zowe.yaml
configuration file.
--auto-encoding|-e
(String, Optional) Defines whether to automatically tag the encoding of the files that are shipped with
the component. The default value is auto , which indicates that the script determines whether the
automatic tagging is needed or not.
Note: The automatic tagging process is opinionated about which file extensions should be in which
encoding. If this does not fit in your needs, a pax format is recommended to include the tagging
information into your package. This option is only applicable for z/OS. The following list presents the
allowed values:
yes
(Boolean, Optional) Enable debug level logging. This will help on troubleshooting issues.
--trace|-vv
(Boolean, Optional) Enable the most detail trace level logging. This will help on troubleshooting issues.
Examples:
The following command installs the my-zowe-component-1.2.3.pax into
/global/zowe/extensions which is defined as zowe.extensionDirectory in
/path/to/my/zowe.yaml .
(String, Required) Defines the path to the Zowe YAML configuration. zwe components install
relies on the zowe.extensionDirectory definition to know where the component will be installed.
--ha-instance|-i
(String, Optional) Defines the Zowe high availability instance ID of where the component will be enabled
or disabled. If this argument is not passed, the component will be enabled/disabled globally from
components.<component>.enabled . If this argument has a value, only specified HA instance will
be changed, which is haInstances.<ha-instance>.components.<component>.enabled .
--log-dir|--log|-l
(Boolean, Optional) Enable debug level logging. This will help on troubleshooting issues.
--trace|-vv
(Boolean, Optional) Enable the most detail trace level logging. This will help on troubleshooting issues.
Examples:
The following command enables my-zowe-component .
The following command will disable my-zowe-component on HA instance lpar1 . The configuration
logs write to /var/zowe/logs .
Install and configure manually
Zowe core components
The Zowe runtime directory delivers its core components in the <RUNTIME_DIR>/components/
directory. A typical components directory looks like this:
Same as all Zowe server components, Zowe core components can be enabled or disabled by setting
components.<component>.enabled to true or false .
Because MYAPP is shipped within another product, the installation should create a symbolic link in
zowe.extensionDirectory directory.
containers
Zowe extensions such as services and plug-ins that use Zowe component packaging can be used within a
Zowe container environment. To do this, you must deliver the extension as a container image that is
compatible with Zowe containers. You can follow Zowe's container conformance criteria to understand and
achieve compatibility.
Note: Missing z/OS dependencies must be checked before creating and adding Zowe extension containers.
You can add extension containers to a Zowe container environment the same way as Zowe's core
components by completing the following steps.
. Build and publish an extension image to a registry. For details, see Build and publish an extension image
to a registry.
. Define a deployment or job object. For details, see Define Deployment or Job object.
. Start the extension from the deployment or job definition. For details, see Start your component.
<my-component-image> : this is your component image described in Build and publish an extension
image to a registry. For example, zowe-docker-release.jfrog.io/ompzowe/sample-node-
api:latest-ubuntu .
To define Job for your component, you can also copy from samples/sample-deployment.yaml .
Then, modify all entries mentioned above and make the following changes:
Change kind: Deployment to kind: Job ,
Add restartPolicy: OnFailure under spec.template.spec like this:
If it's a Deployment , you should be able to see that the component pod is started and eventually
reached the Running status.
If it's a Job , you should be able to see that the plug-in pod is started and eventually reached the
Completed status.
Now you can follow common Kubernetes practice to manage your component workload.
Zowe Containerization Conformance Criteria
Version: v2.0.x LTS
These conformance criteria are applicable for all Zowe components intending to run in a containerized
environment. The containerized environment could be Kubernetes or OpenShift running on Linux or Linux on
Z.
Image
In general, the image should follow Best practices for writing Dockerfiles. The below requirements are in
addition to the list.
Base Image
You are free to choose a base image based on your requirements.
Here are our recommendations of base images:
Zowe base images:
ompzowe/base : zowe-docker-release.jfrog.io/ompzowe/base:latest-ubuntu and
zowe-docker-release.jfrog.io/ompzowe/base:latest-ubi .
ompzowe/base-node : zowe-docker-release.jfrog.io/ompzowe/base-node:latest-
ubuntu and zowe-docker-release.jfrog.io/ompzowe/base-node:latest-ubi has
node.js LTS (v14) version pre-installed.
ompzowe/base-jdk : zowe-docker-release.jfrog.io/ompzowe/base-jdk:latest-
ubuntu and zowe-docker-release.jfrog.io/ompzowe/base-jdk:latest-ubi has JRE
v8 pre-installed.
Red Hat Universal Base Image 8 Minimal
Ubuntu
The image should contain as few software packages as possible for security and should be as small as
possible such as by reducing package count and layers.
Zowe base images,
are based on both Ubuntu and Red Hat Universal Base Image,
provide common dependencies including JDK and/or node.js,
support both amd64 and s390x CPU architecture.
If you use your own base image other than Zowe base images, please check this list and make sure it is
compatible with Zowe runtime:
The default shell /bin/sh must be bash . If it's not, you can fix it by installing and overwriting
/bin/sh with the symbolic link of /bin/bash .
These softwares must exist in the image: date , awk , sed , xargs .
These softwares are optional but good to have: ping , dig , netstat .
Multi-CPU Architecture
Zowe core components must release images based on both amd64 and s390x CPU architecture.
Zowe core component images must use multiple manifests to define if the image supports multiple CPU
architectures.
Image Label
These descriptive labels are required in the Dockerfile: name , maintainer , vendor , version ,
release , summary , and description .
Example line:
Tag
Zowe core component image tags must be a combination of the following information in this format:
<version>-<linux-distro>[-<cpu-arch>][-sources][.<customize-build>] .
version: must follow semantic versioning or partial semantic versioning with major or major + minor. It
may also be latest or lts . For example, 1 , 1.23 , 1.23.0 , lts , latest , etc.
linux-distro: for example, ubi , ubuntu , etc.
cpu-arch: for example, amd64 , s390x , etc.
customize-build: string sanitized by converting non-letters and non-digits to dashes. For example,
pr-1234 , users-john-fix123 , etc.
Source Build: must be a string -sources appended to the end of the tag.
If this is a source build, the tag must contain full version number (major+minor+patch) information.
Linux Distro information is recommended.
Must NOT contain customize build information.
For example: 1.23.0-ubi-sources .
For example, these are valid image tags:
latest
latest-ubuntu
latest-ubuntu-sources
latest-ubi
latest-ubi-sources
lts
lts-ubuntu
lts-ubi
1
1-ubuntu
1-ubi
1.23
1.23-ubuntu
1.23-ubi
1.23.0
1.23.0-ubuntu
1.23.0-ubuntu-amd64
1.23.0-ubuntu-sources
1.23.0-ubi
1.23.0-ubi-s390x
1.23.0-ubi-sources
1.23.0-ubuntu.pr-1234
1.23.0-ubi.users-john-test1
The same image tag pattern is recommended for Zowe extensions.
Files and Directories
These file(s) and folder(s) are REQUIRED for all Zowe components:
/licenses folder holds all license-related files. It MUST include at least the license information for
current application. It's recommended to include a license notice file for all pedigree dependencies. All
licenses files must be in UTF-8 encoding.
/component/README.md provides information about the application for end-user.
If you use Zowe base images, zowe user and group are already created.
Multi-Stage Build
A multi-stage build is recommended to keep images small and concise. Learn more from Use multi-stage
builds.
Runtime
This section is mainly for information. No actions are required for components except where it's specified
explicitly.
The below sections are mainly targeting Kubernetes or OpenShift environments. Starting Zowe containers in
a Docker environment with docker-compose is in a planning stage and may change some of the
requirements.
General rules
Components MUST:
NOT be started as root user in the container.
listen to only ONE port in the container except for API Mediation Layer Gateway.
be cloud-vendor neutral and must NOT rely on features provided by a specific cloud vendor.
NOT rely on host information such as hostIP , hostPort , hostPath , hostNetwork ,
hostPID and hostIPC .
Secrets must be defined manually by a system administrator. Zowe Helm Chart and Zowe Operator do
NOT define the content of Secrets.
ompzowe/zowe-launch-scripts Image and initContainers
The zowe-docker-release.jfrog.io/ompzowe/zowe-launch-scripts:latest-ubuntu or
zowe-docker-release.jfrog.io/ompzowe/zowe-launch-scripts:latest-ubi image
contains necessary scripts to start Zowe components in Zowe context.
This image has a /component directory and it will be used to prepare /home/zowe/runtime and
/home/zowe/instance volumes to help Zowe component start.
In Kubernetes and OpenShift environments this step is defined with initContainers specification.
Command Override
Component CMD and ENTRYPOINT directives will be overwritten with the Zowe launch script used to
start it in Zowe context.
Components running in Zowe context requires to be started with bash with argument
/home/zowe/runtime/bin/internal/run-zowe.sh -c /home/zowe/instance . Here is
example start command:
Environment Variables
These runtime environment variable(s) are REQUIRED to start Zowe components.
ZWE_POD_NAMESPACE : holds the current Kubernetes namespace. This variable can be optional if the
service account automountServiceAccountToken attribute is true . The value of this variable
can be assigned to metadata.namespace (which default value is zowe ) in Pod spec section:
These runtime environment variable(s) are OPTIONAL to start Zowe components.
ZWE_POD_CLUSTERNAME : holds the Kubernetes cluster name. This variable has default value
cluster.local . If your cluster name is not default value, you should pass the variable to all
workloads. The value of this variable can be assigned in Pod spec section:
CI/CD
Build, Test and Release
Zowe core component and extension images MUST be built, tested, and released on their own
cadence.
The component CI/CD pipeline MUST NOT rely on the Zowe level CI/CD pipeline and Zowe release
schedule.
Zowe core component images must be tested. This includes starting the component and verifying the
runtime container works as expected.
It is recommended to build snapshot images before release. Zowe core components MUST publish
snapshot images to the zowe-docker-snapshot.jfrog.io registry with proper tags.
Zowe core component images MUST be released before Zowe is released.
Zowe core components MUST publish release images to both zowe-docker-release.jfrog.io
and Docker Hub registry under ompzowe/ prefix.
Release images MUST also update relevant major/minor version tags and the latest tag. For
example, when a component releases a 1.2.3 image, the component CI/CD pipeline MUST also tag
the image as 1.2 , 1 , and latest . Update the lts tag when it is applicable.
Zowe core component release images MUST be signed by Zowe committer(s).
Developing for Zowe CLI
Version: v2.0.x LTS
You can extend Zowe™ CLI by developing plug-ins and contributing code to the base Zowe CLI or existing
plug-ins.
How to contribute
You can contribute to Zowe CLI in the following ways:
Add new commands, options, or other improvements to the base CLI.
Develop a plug-in that users can install to Zowe CLI.
You might want to contribute to Zowe CLI to accomplish the following objectives:
Provide new scriptable functionality for yourself, your organization, or to a broader community.
Make use of Zowe CLI infrastructure (profiles and programmatic APIs).
Participate in the Zowe CLI community space.
Getting started
If you want to start working with the code immediately, review the Readme file in the Zowe CLI core
repository and the Zowe contribution guidelines. The zowe-cli-sample-plugin GitHub repository is a sample
plug-in that adheres to the guidelines for contributing to Zowe CLI projects.
Tutorials
Follow these tutorials to get started working with the sample plug-in:
. Setting up: Clone the project and prepare your local environment.
. Installing a plug-in: Install the sample plug-in to Zowe CLI and run as-is.
. Extending a plug-in: Extend the sample plug-in with a new by creating a programmatic API, definition,
and handler.
. Creating a new plug-in: Create a new CLI plug-in that uses Zowe CLI programmatic APIs and a diff
package to compare two data sets.
. Implementing user profiles: Implement user profiles with the plug-in.
Plug-in development overview
At a high level, a plug-in must have imperative-framework configuration (sample here). This
configuration is discovered by imperative-framework through the package.json imperative key.
A Zowe CLI plug-in will minimally contain the following:
. Programmatic API: Node.js programmatic APIs to be called by your handler or other Node.js
applications.
. Command definition: The syntax definition for your command.
. Handler implementation: To invoke your programmatic API to display information in the format that you
defined in the definition.
The following guidelines and documentation will assist you during development:
Imperative CLI Framework documentation
Imperative CLI Framework documentation is a key source of information to learn about the features of
Imperative CLI Framework (the code framework that you use to build plug-ins for Zowe CLI). Refer to these
supplementary documents during development to learn about specific features such as:
Auto-generated help
JSON responses
User profiles
Logging, progress bars, experimental commands, and more!
Contribution guidelines
The Zowe CLI contribution guidelines contain standards and conventions for developing Zowe CLI plug-ins.
The guidelines contain critical information about working with the code, running/writing/maintaining
automated tests, developing consistent syntax in your plug-in, and ensuring that your plug-in integrates with
Zowe CLI properly:
For more information about ... See:
General guidelines that apply to contributing to Zowe CLI and Plug-ins Contribution Guidelines
For more information about ... See:
Conventions and best practices for creating packages and plug-ins for Package and Plug-in
Zowe CLI Guidelines
Guidelines for running tests on Zowe CLI Testing Guidelines
Guidelines for running tests on the plug-ins that you build Plug-in Testing Guidelines
Versioning conventions for Zowe CLI and Plug-ins Versioning Guidelines
Setting up your development environment
Version: v2.0.x LTS
Before you follow the development tutorials for creating a Zowe™ CLI plug-in, follow these steps to set up
your environment.
Prerequisites
Install Zowe CLI.
Initial setup
To create your development space, clone and build zowe-cli-sample-plugin from source.
Before you clone the repository, create a local development folder named zowe-tutorial . You will clone
and build all projects in this folder.
Branches
There are two branches in the repository that correspond to different Zowe CLI versions. You can develop
two branches of your plug-in so that users can install your plug-in into @latest or @zowe-v2-lts CLI.
Developing for both versions will let you take advantage of new core features quickly and expose your plug-
in to a wider range of users.
The master branch of Sample Plug-in is compatible with the @zowe-v2-lts version of core CLI (Zowe
LTS release).
The master branch of Sample Plug-in is also compatible with the @latest version of core CLI (Zowe
Active Development release) at this time.
For more information about the versioning scheme, see Maintainer Versioning in the Zowe CLI repository.
Clone zowe-cli-sample-plugin and build from source
Clone the repository into your development folder to match the following structure:
Follow these steps:
. cd to your zowe-tutorial folder.
. git clone https://github.com/zowe/zowe-cli-sample-plugin
. cd to your zowe-cli-sample-plugin folder.
. git checkout master
. npm install
. npm run build
(Optional) Run the automated tests
We recommend running automated tests on all code changes. Follow these steps:
. cd to the __tests__/__resources__/properties folder.
. Copy example_properties.yaml to custom_properties.yaml .
. Edit the properties within custom_properties.yaml to contain valid system information for your
site.
. cd to your zowe-cli-sample-plugin folder
. npm run test
Next steps
After you complete your setup, follow the Installing the sample plug-in tutorial to install this sample plug-in
to Zowe CLI.
Installing the sample plug-in
Version: v2.0.x LTS
Overview
This tutorial covers installing and running this bundled Zowe™ CLI plugin as-is (without modification), which
will display your current directory contents.
The plug-in adds a command to the CLI that lists the contents of a directory on your computer.
Next steps
You successfully installed a plug-in to Zowe CLI! Next, try the Extending a plug-in tutorial to learn about
developing new commands for this plug-in.
Extending a plug-in
Version: v2.0.x LTS
Before you begin, be sure to complete the Installing the sample plug-in tutorial.
Overview
This tutorial demonstrates how to extend the plug-in that is bundled with this sample by:
. Creating a Typescript interface for the Typicode response data
. Creating a programmatic API
. Creating a command definition
. Creating a command handler
We'll do this by using @zowe/imperative infrastructure to surface REST API data on our Zowe™ CLI
plug-in.
Specifically, we're going to show data from this URI by Typicode. Typicode serves sample REST JSON data
for testing purposes.
At the end of this tutorial, you will be able to use a new command from the Zowe CLI interface: zowe
zowe-cli-sample list typicode-todos
Completed source for this tutorial can be found on the typicode-todos branch of the zowe-cli-sample-
plugin repository.
Creating a Typescript interface for the Typicode response data
First, we'll create a Typescript interface to map the response data from a server.
Within zowe-cli-sample-plugin/src/api , create a folder named doc to contain our interface
(sometimes referred to as a "document" or "doc"). Within the doc folder, create a file named ITodo.ts .
The ITodo.ts file will contain the following:
Creating a programmatic API
Next, we'll create a Node.js API that our command handler uses. This API can also be used in any Node.js
application, because these Node.js APIs make use of REST APIs, Node.js APIs, other NPM packages, or
custom logic to provide higher level functions than are served by any single API.
Adjacent to the existing file named zowe-cli-sample-plugin/src/api/Files.ts , create a file
Typicode.ts .
Summary
You extended an existing Zowe CLI plug-in by introducing a Node.js programmatic API, and you created a
command definition with a handler. For an official plugin, you would also add JSDoc to your code and create
automated tests.
Next steps
Try the Developing a new plug-in tutorial next to create a new plug-in for Zowe CLI.
Developing a new plug-in
Version: v2.0.x LTS
Before you begin this tutorial, complete the Extending an existing plug-in tutorial.
Overview
This tutorial demonstrates how to create a brand new Zowe™ CLI plug-in that uses Zowe CLI Node.js
programmatic APIs.
At the end of this tutorial, you will have created a data set diff utility plug-in for Zowe CLI, from which you can
pipe your plugin's output to a third-party utility for a side-by-side diff of data set member contents.
Completed source for this tutorial can be found on the develop-a-plugin branch of the zowe-cli-
sample-plugin repository.
Cloning the sample plug-in source
Clone the sample repo, delete the irrelevant source, and create a brand new plug-in. Follow these steps:
. cd into your zowe-tutorial folder
. git clone https://github.com/zowe/zowe-cli-sample-plugin files-util
. cd files-util
. Delete the .git (hidden) folder.
. Delete all content within the src/api , src/cli , and docs folders.
. Delete all content within the __tests__/__system__/api , __tests__/__system__/cli ,
__tests__/api , and __tests__/cli folders
. git init
. git add .
. git commit -m "initial"
Changing package.json
Use a unique npm name for your plugin. Change package.json name field as follows:
Issue the command npm install against the local repository.
Adjusting Imperative CLI Framework configuration
Change imperative.ts to contain the following:
Here we adjusted the description and other fields in the imperative JSON configuration to be relevant to
this plug-in.
Adding third-party packages
We'll use the following packages to create a programmatic API:
npm install --save diff
Checkpoint
At this point, you should be able to rebuild the plug-in without errors via npm run build . You included
third party dependencies, created a programmatic API, and customized this new plug-in project. Next, you'll
define the command to invoke your programmatic API.
Defining commands
In files-util/src/cli , create a folder named diff . Within the diff folder, create a file
Diff.definition.ts . Its content should be as follows:
Also within the diff folder, create a folder named data-sets . Within the data-sets folder create
DataSets.definition.ts and DataSets.handler.ts .
DataSets.definition.ts should contain:
DataSets.handler.ts should contain the following:
Next steps
Try the Implementing profiles in a plug-in tutorial to learn about using profiles with your plug-in.
Implementing profiles in a plug-in
Version: v2.0.x LTS
You can use this profile template to create a profile for your product.
The profile definition is placed in the imperative.ts file.
The type: "someproduct" property represents the profile name that you might require on various
commands to have credentials loaded from a secure credential manager and retain the host/port
information, so that you can easily swap to different servers from the CLI.
By default, if your plug-in that is installed into Zowe™ CLI contains a profile definition that is similar to the
following example, a profile template is added automatically to team config JSON when you run the zowe
config init command. Any properties for which includeInTemplate is true are included in the
template. Additionally, commands that manage V1 profiles are created automatically under zowe
profiles . For example, create , validate , set-default , list , and so on.
Next steps
If you completed all previous tutorials, you now understand the basics of extending and developing plug-ins
for Zowe CLI. Next, we recommend reviewing the project contribution guidelines and Imperative CLI
Framework documentation to learn more.
Onboarding Overview
Version: v2.0.x LTS
As an API developer, you can onboard a REST API service to the Zowe™ API Mediation Layer (API ML).
Onboarding your REST service to the Zowe™ API Mediation Layer will make your service discoverable by the
API ML Discovery Service, enable routing through the API Gateway, and make service information and API
documentation available through the API Catalog.
The specific method you use to onboard a REST API to the API ML depends on the programming language
or framework used to build your REST service.
Note: To streamline the process of onboarding new REST API services to the Zowe API Mediation Layer, see
Onboarding a REST API service with the YAML Wizard
This Onboarding Overview article addresses the following topics:
Prerequisites
Service Onboarding Guides to onboard your REST service with the API ML
Verify successful onboarding to the API ML
Using the Sample REST API Service to learn how to onboard a REST service to the API ML
Prerequisites
Meet the following prerequisites before you onboard your service:
Running instance of Zowe
Note: For static onboarding, access to Zowe runtime is required to create the static service definition.
A certificate that is trusted by Zowe and certificate(s) to trust Zowe services
Zowe uses secured communication over TLSv1.2. As such, the protocol version and the certificate is
required. For more information, see API Mediation Layer security setup and Zowe API ML TLS
requirements.
A REST API-enabled service that you want to onboard
If you do not have a specific REST API service, you can use the sample service.
Your service should be documented in a valid OpenApi 2.0/3.0 Swagger JSON format.
Access to the Zowe artifactory
Either the Gradle or Maven build automation system
This endpoint in the sample service returns information about a pet when the {id} is between 0 and 10. If
{id} is greater than 0 or a non-integer, an error is returned. These are conditions set in the sample
service.
Tip: Access http://localhost:8080/v2/pets/1 to see what this REST API endpoint does. You should get the
following response:
Note: The onboarding guides demonstrate how to add the Sample REST API Service to the API Mediation
Layer to make the service available through the petstore service ID.
The following diagram shows the relations between the Sample REST API Service and its corresponding API,
REST API endpoint, and API Gateway:
API Gateway API Gateway routes
/api/v2/petstore HTTP requests to /v2 of the API in the petstore service
«Service»
petstore
«API»
/v2
/pets
This sample service provides a Swagger document in JSON format at the following URL:
The Swagger document is used by the API Catalog to display API documentation.
Onboarding a REST API service with the Plain
Version: v2.0.x LTS
Introduction
Zowe API ML is a lightweight API management system based on the following Netflix components:
Eureka - a discovery service used for services registration and discovery
Zuul - reverse proxy / API Gateway
Ribbon - load balancer
The API ML Discovery Service component uses Netflix/Eureka as a REST services registry. Eureka endpoints
are used to register a service with the API ML Discovery Service.
The API ML provides onboarding enabler libraries. The libraries are JAR artifacts available through an
artifactory. Using these libraries is the recommended approach to onboard a REST service with the API ML.
The PJE library serves the needs of Java developers who are not using either Spring Boot or the Spring
Framework. If Spring Boot or the Spring framework are used in the project you would like to onboard, see the
Onboarding Overview for the corresponding enablers.
Additionally, this enabler is not intended for use in projects that depend on Spring Cloud Netflix components.
Configuration settings in the PJE and Spring Cloud Netflix Eureka Client are different. Using the two
configuration settings in combination makes the result state of the discovery registry unpredictable.
Tip: For more information about how to utilize another API ML enablers, see the documentation in the
Onboarding Overview.
Onboarding your REST service with API ML
The following steps outline the overall process to onboard a REST service with the API ML using the PJE.
Each step is described in further detail in this article.
. Prerequisites
. Configuring your project
Gradle build automation system
Maven build automation system
. Configuring your service
REST service identification
Administrative endpoints
API info
API routing information
API Catalog information
Authentication parameters
API Security
SAF Keyring configuration
Eureka Discovery Service
. Registering your service with API ML
. (Optional) Validating the discoverability of your API service by the Discovery Service
. (Optional) Troubleshooting
Log messages during registration problems
Prerequisites
Ensure that the prerequisites from the Onboarding Overview are met.
The REST API service to onboard is written in Java
The service is enabled to communicate with API ML Discovery Service over a TLS v1.2 secured
connection
Notes:
This documentation is valid for API ML version ZoweApimlVersion 1.3.0 and higher. We
recommend that you check the Zowe Artifactory for latest stable versions.
Following this guide enables REST services to be deployed on a z/OS environment. Deployment to a
z/OS environment, however, is not required. As such, you can first develop on a local machine before
you deploy on z/OS.
The API Mediation Layer provides the sample application using the Plain Java Enabler in the api-layer
repository
statusPageRelativeUrl
specifies the relative path to the status page of your service.
Start this path with / .
Example:
statusPageRelativeUrl: /application/info
This results in the URL: ${baseUrl}/application/info
healthCheckRelativeUrl
specifies the relative path to the health check endpoint of your service.
Start this path with / .
Example:
healthCheckRelativeUrl: /application/health
routes.serviceUrl
The serviceUrl parameter provides a portion of the service instance URL path which replaces the
gatewayUrl part.
Examples:
is routed to:
API major version 1:
is routed to:
APIs docs major version 1:
is routed to:
API Catalog information
The API ML Catalog UI displays information about discoverable REST services registered with the API ML
Discovery Service. Information displayed in the Catalog is defined by the metadata provided by your service
during registration. The following image is an example of a tile in the API Catalog:
The Catalog groups correlated services in the same tile if these services are configured with the same
catalog.tile.id metadata parameter.
The following code block is an example of configuration of a service tile in the Catalog:
Example:
where:
catalog.tile.id
specifies the unique identifier for the product family of API services. This is a value used by the API ML
to group multiple API services into a single tile. Each unique identifier represents a single API dashboard
tile in the Catalog.
Tip: Specify a value that does not interfere with API services from other products. We recommend that
you use your company and product name as part of the ID.
catalog.tile.title
specifies the title of the product family of the API service. This value is displayed in the API Catalog
dashboard as the tile title.
catalog.tile.description
is the detailed description of the API services product family. This value is displayed in the API Catalog
UI dashboard as the tile description.
catalog.tile.version
specifies the semantic version of this API Catalog tile.
Note: Ensure that you increase the version number when you introduce changes to the API service
product family details.
Authentication parameters
These parameters are not required. Default values are used when parameters are not specified. For more
information, see Authentication Parameters for Onboarding REST API Services.
API Security
REST services onboarded with the API ML act as both a client and a server. When communicating to API ML
Discovery service, a REST service acts as a client. When the API ML Gateway is routing requests to a
service, the REST service acts as a server. These two roles have different requirements. The Zowe API ML
Discovery Service communicates with its clients in secure Https mode. As such, TLS/SSL configuration
setup is required when a service is acting as a server. In this case, the system administrator decides if the
service will communicate with its clients securely or not.
Client services need to configure several TLS/SSL parameters in order to communicate with the API ML
Discovery service. When an enabler is used to onboard a service, the configuration is provided in the ssl
section/group in the same YAML file that is used to configure the Eureka parameters and the service
metadata.
For more information about API ML security, see API ML security.
TLS/SSL configuration consists of the following parameters:
verifySslCertificatesOfServices
This parameter makes it possible to prevent server certificate validation.
Important! Ensure that this parameter is set to true in production environments. Setting this
parameter to false in production environments significantly degrades the overall security of the
system.
protocol
This parameter specifies the TLS protocol version currently used by Zowe API ML Discovery Service.
Tip: We recommend you use TLSv1.2 as your security protocol
keyAlias
This parameter specifies the alias used to address the private key in the keystore.
keyPassword
This parameter specifies the password associated with the private key.
keyStore
This parameter specifies the keystore file used to store the private key. When using keyring, the value
should be set to the SAF keyring location. For information about required certificates, see Zowe API ML
TLS requirements.
If you have an issue with loading the keystore file in your environment, try to provide the absolute path
to the keystore file. The sample keystore file for local deployment is in api-layer repository
keyStorePassword
This parameter specifies the password used to unlock the keystore.
keyStoreType
This parameter specifies the type of the keystore.
trustStore
This parameter specifies the truststore file used to keep other parties public keys and certificates.
When using keyring, this value should be set to the SAF keyring location. For information about required
certificates, see Zowe API ML TLS requirements.
If you have an issue with loading the truststore file in your environment, try to provide the absolute path
to the truststore file. The sample truststore file for local deployment is in api-layer repository
trustStorePassword: password
This parameter specifies the password used to unlock the truststore.
trustStoreType: PKCS12
This parameter specifies the truststore type. The default for this parameter is PKCS12.
Note: Ensure that you define both the keystore and the truststore even if your server is not using an Https
port.
SAF Keyring configuration
You can choose to use SAF keyring instead of keystore and truststore for storing certificates. For information
about required certificates, see Zowe API ML TLS requirements. For information about running Java on z/OS
with keyring, see SAF Keyring. Make sure that the enabler can access and read the keyring. Please refer to
documentation of your security system for details.
The following example shows enabler configuration with keyrings.
Example:
Eureka Discovery Service
The Eureka Discovery Service parameters group contains a single parameter used to address Eureka
Discovery Service location. An example is presented in the following snippet:
Example:
where:
discoveryServiceUrls
Specifies the public URL of the Discovery Service. The system administrator at the customer site
defines this parameter. It is possible to provide multiple values in order to utilize fail over and/or load
balancing mechanisms.
Custom Metadata
For information about custom metadata, see the topic Custom Metadata.
The web application context listener implements two methods to perform necessary actions at
application start-up time as well as when the application context is destroyed:
The contextInitialized method invokes the apiMediationClient.register(config)
method to register the application with API Mediation Layer when the application starts.
The contextDestroyed method invokes the apiMediationClient.unregister()
method when the application shuts down. This unregisters the application from the API Mediation
Layer.
. Register a web application context listener.
Add the following code block to the deployment descriptor web.xml to register a context listener:
. Load the service configuration.
Load your service configuration from a file service-configuration.yml file. The configuration
parameters are described in the preceding section, Configuring your service.
Use the following code as an example of how to load the service configuration.
Example:
Note: The ApiMediationServiceConfigReader class also provides other methods for loading the
configuration from two files, java.util.Map instances, or directly from a string. Check the
ApiMediationServiceConfigReader class JavaDoc for details.
Troubleshooting
Log messages during registration problems
When an Enabler connects to the Discovery service and fails, an error message prints to the Enabler log. The
default setting does not suppress these messages as they are useful to resolve problems during the Enabler
registration. Possible reasons for failure include the location of Discovery service is not correct, the
Discovery Service is down, or the TLS certificate is invalid.
These messages continue to print to the Enabler log, while the Enabler retries to connect to the Discovery
Service. To fully suppress these messages in your logging framework, set the log levels to OFF on the
following loggers:
Some logging frameworks provide other tools to suppress repeated messages. Consult the documentation
of the logging framework you use to find out what tools are available. The following example demonstrates
how the Logback framework can be used to suppress repeated messages.
Example:
The Logback framework provides a filter tool, DuplicateMessageFilter.
Add the following code to your configuration file if you use XML configuration:
Note: For more information, see the full configuration used in the Core Services in GitHub.
API Mediation Layer onboarding
Version: v2.0.x LTS
configuration
This article describes the process of configuring a REST service to onboard with the Zowe API Mediation
Layer using the API ML Plain Java Enabler. As a service developer, you can provide basic configuration of a
service to onboard to the API ML. You can also externalize configuration parameters for subsequent
customization by a systems administrator.
Introduction
Configuring a REST service for API ML onboarding
Plain Java Enabler service onboarding
Automatic initialization of the onboarding configuration by a single method call
Validating successful onboarding with the API Mediation Layer
Loading YAML configuration files
Loading a single YAML configuration file
Loading and merging two YAML configuration files
Introduction
The API ML Plain Java Enabler (PJE) is a library which helps to simplify the process of onboarding a REST
service with the API ML. This article describes how to provide and externalize the Zowe API ML onboarding
configuration of your REST service using the PJE.
Note: For more information about specific configuration parameters and their possible values, and the
service registration process, see the specific documentation of the onboarding approach you are using for
your project:
Direct REST call registration (No enabler)
Plain Java Enabler
The PJE is the most universal Zowe API ML enabler. This enabler uses only Java, and does not use advanced
Inversion of Control (IoC) or Dependency Injection (DI) technologies. The PJE enables you to onboard any
REST service implemented in Java, avoiding dependencies, versions collisions, unexpected application
behavior, and unnecessarily large service executables.
Service developers provide onboarding configuration as part of the service source code. While this
configuration is valid for the development system environment, it is likely to be different for an automated
integration environment. Typically, system administrators need to deploy a service on multiple sites that have
different system environments and requirements such as security.
The PJE supports both the service developer and the system administrator with the functionality of
externalizing the service onboarding configuration.
The PJE provides a mechanism to load API ML onboarding service configuration from one or two YAML files.
The actual values are taken from [key, value] pairs defined as Java system properties or servlet context
parameters. The system properties can be provided directly on a command line. The servlet context
parameters can be provided in the service web.xml or in an external file.
The specific approach of how to provide the servlet context to the user service application depends on the
application loading mechanism and the specific Java servlet container environment.
Example:
If the service is deployed in a Tomcat servlet container, you can configure the context by placing an XML file
with the same name as the application deployment unit into
_$CATALINA_BASE/conf/[enginename]/[hostname]/_ .
Introduction
The API ML Discovery Service uses Netflix/Eureka as a REST services registry. Eureka is a REST-based
service that is primarily used to locate services.
Eureka endpoints are used to register a service with the API ML Discovery Service. Endpoints are also used
to send a periodic heartbeat to the Discovery Service to indicate that the onboarded service is available.
Note: Required parameters should be defined and sent at registration time.
Important! Ensure that the service ID is set properly with the following considerations:
The service ID value contains only lowercase alphanumeric characters.
The service ID does not contain more than 40 characters.
The same service ID is only set for multiple API service instances to support API scalability. When
two API services use the same service ID, the API Gateway considers the services as clones of
each other. An incoming API request can be routed to either instance through load balancing.
Example:
If the serviceId is sampleservice , the service URL in the API ML Gateway address space
appears as:
ipAddr
specifies the IP address of this specific service instance.
port
specifies the port of the instance when you use Http. For Http, set enabled to true .
securePort
specifies the port of the instance for when you use Https. For Https, set enabled to true .
hostname
specifies the hostname of the instance.
vipAddress
specifies the serviceId when you use Http.
Important! Ensure that the value of vipAddress is the same as the value of app . Furthermore, be
sure not to omit vipAddress , even if you provided secureVipAddress . Due to a current limitation
in Spring Cloud Netflix, routes are created only for instances in which vipAddress is defined.
secureVipAddress
specifies the serviceId when you use Https.
Important! Ensure that the value of secureVipAddress is the same as the value of app .
instanceId
specifies a unique id for the instance. Define a unique value for the instanceId in the following
format:
{hostname}:{serviceId}:{port}
metadata
specifies the set of parameters described in the following section addressing API ML service metadata.
API Mediation Layer Service onboarding metadata
At registration time, provide metadata in the following format. Metadata parameters contained in this code
block are described in the following section.
Metadata parameters are broken down into the following categories:
Catalog parameters
Service parameters
Routing parameters
Authentication parameters
API Info parameters
Catalog parameters
Catalog parameters are grouped under the prefix: apiml.catalog.tile .
The API ML Catalog displays information about services registered with the API ML Discovery Service.
Information displayed in the Catalog is defined in the metadata provided by your service during registration.
The Catalog groups correlated services in the same tile when these services are configured with the same
catalog.tile.id metadata parameter.
Examples
/service/**
These two parameters together specify a rule of how the API service endpoints are mapped to the API
Gateway endpoints.
The following snippet is an example of the API routing information properties.
Example:
where:
apiml.routes.{route-prefix}.gatewayUrl
The gatewayUrl parameter specifies the portion of the gateway URL which is replaced by the
serviceUrl path.
apiml.routes.{route-prefix}.serviceUrl
The serviceUrl parameter provides a portion of the service instance URL path which replaces the
gatewayUrl part.
Note: The routes configuration used for a direct REST call to register a service must also contain a prefix
before the gatewayUrl and serviceUrl . This prefix is used to differentiate the routes. This prefix must
be provided manually when XML configuration is used.
For more information about API ML routing, see API Gateway Routing.
Authentication parameters
Authentication parameters are grouped under the prefix: apiml.authentication . When unspecified,
the default values are used.
This parameter enables a service to accept the Zowe JWT token. The API Gateway translates the token to
an authentication method supported by a service.
The following parameters define the service authentication method:
apiml.authentication.scheme
This parameter specifies a service authentication scheme. The following schemes are supported by the
API Gateway:
bypass
This value specifies that the token is passed unchanged to the service.
Note: This is the default scheme when no authentication parameters are specified.
zoweJwt
This value specifies that a service accepts the Zowe JWT token. No additional processing is done
by the API Gateway.
httpBasicPassTicket
This value specifies that a service accepts PassTickets in the Authorization header of the HTTP
requests using the basic authentication scheme. It is necessary to provide a service APPLID in the
apiml.authentication.applid parameter.
Tip: For more information, see Enabling PassTicket creation for API Services that Accept
PassTickets.
zosmf
This value specifies that a service accepts z/OSMF LTPA (Lightweight Third-Party Authentication).
This scheme should only be used for a z/OSMF service used by the API Gateway Authentication
Service, and other z/OSMF services that are using the same LTPA key.
Tip: For more information about z/OSMF Single Sign-on, see Establishing a single sign-on
environment.
safIdt
This value specifies that the application recognizes the SAF IDT scheme and fills the X-SAF-
Token header with the token produced by the Saf IDT provider implementation.
External Resources
https://blog.asarkar.org/technical/netflix-eureka/
https://medium.com/@fahimfarookme/the-mystery-of-eureka-health-monitoring-5305e3beb6e9
https://github.com/Netflix/eureka/wiki/Eureka-REST-operations
Onboarding a Spring Boot based REST API
Version: v2.0.x LTS
Service
This guide is part of a series of guides to onboard a REST API service with the Zowe API Mediation Layer. As
an API developer, you can onboard your REST API service built with the Spring Boot framework with the
Zowe API Mediation Layer.
Note: Before API ML version 1.2, the API ML provided an integration enabler based on Spring Cloud Netflix
components. From version 1.3 and later, the API ML uses a new implementation based on the Plain Java
Enabler (PJE) that is not backwards compatible with the previous enabler versions. API ML core services
(Discovery Service, Gateway, and API Catalog) support both the old and new enabler versions.
Tip: For more information about how to utilize another onboarding method, see:
Onboard a REST API service with the Plain Java Enabler (PJE)
Onboard a REST service directly calling eureka with xml configuration
Onboard an existing REST API service without code changes
On the mainframe system, provide additional configuration properties and values for existing
configuration properties through Java system properties.
Execution environments for local development deployments and mainframe deployment are described
in detail later in this article.
Follow these steps:
. Provide a configuration section for onboarding with API ML in the application.yml file.
If you have already onboarded your service with API ML, copy and paste the contents of your
existing API ML onboarding configuration file. The default of the API ML onboarding configuration
file is the service-configuration.yml in the application.yml file under the
apiml.service prefix.
If you have not yet onboarded your REST service with API ML, use the Sample API Onboarding
Configuration to get started.
. If you are reusing your existing API ML onboarding configuration, modify the API ML related properties
of the application.yml file.
a) Remove certain properties under the apiml.service section, which must be externalized.
Properties for removal are described in the following sample of API ML onboarding configuration.
b) Provide the following additional properties under the apiml section:
These additional properties are contained in the following sample.
Sample API ML Onboarding Configuration
In the following sample API ML onboarding configuration, properties prefixed with ### (3 hashtags)
indicate that their value must be provided as -Dsystem.property.key=PROPERTY_VALUE defined in the
mainframe execution environment. The -Dsystem.property.key must be the same as the flattened
path of the YAML property which is commented out with ### . These properties must not be defined
(uncommented) in your default service YAML configuration file.
Example:
In this example from the YAML configuration file, when the application service is run on the mainframe,
provide your mainframe hostname value on the Java execution command line in the following format:
Since this value is provided in the Java execution command line, leave the property commented out in the
application.yml .
For development purposes, you can replace or add any property by providing the same configuration
structure in an external YAML configuration file. When running your application, provide the name of the
external/additional configuration file on the command line in the following format:
A property notation provided in the format -Dproperty.key=PROPERTY_VALUE can be used for two
purposes:
To provide a runtime value for any YAML property if ${property.key} is used as its value (after
: ) in the YAML configuration file
Example:
To add a property to configuration if the property does not already exist
Example:
Note: System properties provided with -D notation on the command line will not replace properties
defined in any of the YAML configuration files.
Authentication properties
These parameters are not required. If a parameter is not specified, a default value is used. See
Authentication Parameters for Onboarding REST API Services for more details.
API ML Onboarding Configuration Sample
Some parameters which are specific for your service deployment are written in
${fill.your.parameterValue} format. For your service configuration file, provide actual values or
externalize your configuration using -D java commandline parameters.
Tip: To determine if your configuration is complete, set the logging level to debug and run your
application. Setting the logging level to 'debug' enables you to troubleshoot issues with certificates for
HTTPS and connections with other services.
. Provide the suitable parameter corresponding to your runtime environment:
For a local machine runtime environment, provide the following parameter on your command line:
At runtime, Spring will merge the two YAML configuration files, whereby the properties in the external
file have higher priority.
For a mainframe execution environment, provide environment specific configuration properties. Define
these configuration properties and provide them using Java System Properties on the application
execution command line.
Important! Ensure that the default configuration contains only properties which are not dependent on
the deployment environment. Do not include security sensitive data in the default configuration.
Note: For details about the configuration properties, see Configuring your service in the article
Onboarding a REST API service with the Plain Java Enabler (PJE).
SAF Keyring configuration
You can choose to use a SAF keyring instead of keystore and truststore for storing certificates. For
information about required certificates, see Zowe API ML TLS requirements. For information about running
Java on z/OS with a keyring, see SAF Keyring. Make sure that the enabler can access and read the keyring.
Please refer to documentation of your security system for details.
The following example shows enabler configuration with keyrings:
Custom Metadata
Custom metadata are described here.
Troubleshooting
Log messages during registration problems
When an Enabler connects to the Discovery Service and fails, an error message prints to the Enabler log.
The default setting does not suppress these messages as they are useful to resolve problems during the
Enabler registration. Possible reasons for failure include the location of Discovery Service is not correct, the
Discovery Service is down, or the TLS certificate is invalid. These messages continue to print to the Enabler
log, while the Enabler retries to connect to the Discovery Service.
To fully suppress these messages in your logging framework, set the log levels to OFF on the following
loggers:
Some logging frameworks provide other tools to suppress repeated messages. Consult the documentation
of the logging framework you use to find out what tools are available. The following example demonstrates
how the Logback framework can be used to suppress repeated messages.
Example:
The Logback framework provides a filter tool, DuplicateMessageFilter.
Add the following code to your configuration file if you use XML configuration:
Note: For more information, see the full configuration used in the Core Services in GitHub.
Onboarding a Micronaut based REST API
Version: v2.0.x LTS
service
As an API developer, you can onboard a REST service to the Zowe API Mediation Layer using the Micronaut
framework. While using the Spring framework to develop a JVM-based service to register to the API ML is
the recommended method, you can use the procedure described in this article to onboard a service using
the Micronaut framework.
Note: For more information about onboarding API services with the API ML, see the Onboarding Overview.
For Micronaut-related documentation, see the Micronaut website.
Set up your build automation system
Specify the main class
Define the output jar file
(Optional) Create a shadow jar
Start the application
Configure the Micronaut application
Add API ML configuration
Add Micronaut configuration
Set up logging configuration
Validate successful registration
specifies the alias under which the key is stored in the keystore
apiml.service.ssl[0].trustStorePassword
specifies the list of ciphers that user wants to enable for TLS communication
apiml.service.ssl[0].protocol
service
This article is part of a series of onboarding articles, which outline the process of onboarding REST API
services to the Zowe API Mediation Layer (API ML). As a service developer, you can onboard a REST service
based on NodeJS with the API ML with the Zowe API Mediation Layer using our Node.js Enabler.
Note: For more information about onboarding API services with the API ML, see the Onboarding Overview.
Introduction
The API ML onboarding Node.js enabler is an NPM package which helps to simplify the process of
onboarding a REST service written in Node.js with the API ML.
For more information about how to utilize another API ML enablers, see the Onboarding Overview.
Prerequisites
Ensure that you meet the following prerequisites:
You satisfy the prerequisites from the Onboarding Overview.
The REST API service to onboard is written in Node.js.
The service is enabled to communicate with API ML Discovery Service over a TLS v1.2 secured
connection.
required
As a user of Zowe™, onboard an existing REST API service to the Zowe™ API Mediation Layer without
changing the code of the API service. This form of onboarding is also refered to as, "static onboarding".
Note: When developing a new service, it is not recommended to onboard a REST service using this method,
as this method is non-native to the API Mediation Layer. For a complete list of methods to onboard a REST
service natively to the API Mediation Layer, see the Onboarding Overview.
The following procedure outlines the steps to onboard an API service through the API Gateway in the API
Mediation Layer without requiring code changes.
Identify the API that you want to expose
Define your service and API in YAML format
Route your API
Customize configuration parameters
Add and validate the definition in the API Mediation Layer running on your machine
Add a definition in the API Mediation Layer in the Zowe runtime
(Optional) Check the log of the API Mediation Layer
(Optional) Reload the services definition after the update when the API Mediation Layer is already
started
Tip: For more information about the structure of APIs and which APIs to expose in the Zowe API Mediation
Layer, see the Onboarding Overview.
. Identify the API of the service that you want to expose through the API Gateway.
Example:
The API provided by the sample service is a second version of the Pet Store API. All the endpoints to be
onboarded are available through http://localhost:8080/v2/ URL. This REST API is therefore
available at the path /v2 relative to base URL of the service. There is no version 1 in this case.
. Choose the service ID of your service. The service ID identifies the service uniquely in the API
Gateway. The service ID is an alphanumeric string in lowercase ASCII.
Example:
In the sample service, the service ID is petstore .
. Decide which URL to use to make this API available in the API Gateway. This URL is referred to as the
gateway URL and is composed of the API type and the major version. The usually used types are: api ,
ui and ws but you can use any valid URL element you want.
Example:
In the sample service, we provide a REST API. The first segment is /api as the service provides only
one REST API. To indicate that this is version 2, the second segment is /v2 . This version is required by
the Gateway. If your service does not have a version, use v1 on the Gateway.
One API is provided and the requests with the relative base path api/v2 at the API Gateway (full
gateway URL: https://gateway:port/serviceId/api/v2/... ) are routed to the relative base
path /v2 at the full URL of the service ( http://localhost:8080/v2/... ).
The file on USS should be encoded in ASCII to be read correctly by the API Mediation Layer.
Tips:
There are more examples of API definitions at this link.
For more details about how to use YAML format, see this link.
This value is displayed in the API Catalog when a specific API service instance is selected. This
parameter is externalized and set by the customer system administrator.
Tip: Describe the service so that the end user knows the function of the service.
instanceBaseUrls
This parameter specifies a list of base URLs to your service's REST resource. It will be the prefix for the
following URLs:
homePageRelativeUrl
statusPageRelativeUrl
healthCheckRelativeUrl
Examples:
- http://host:port/ftpservice for an HTTP service
- https://host:port/source-code-mngmnt for an HTTPS service
You can provide one URL if your service has one instance. If your service provides multiple
instances for the high-availability then you can provide URLs to these instances.
Examples:
- https://host1:port1/source-code-mngmnt
- https://host2:port2/source-code-mngmnt
homePageRelativeUrl
This parameter specifies the relative path to the homepage of your service. The path should start with
/ . If your service has no homepage, omit this parameter. The path is relative to the instanceBaseUrls.
Examples:
homePageRelativeUrl: / The service has homepage with URL ${baseUrl}/
statusPageRelativeUrl
This parameter specifies the relative path to the status page of your service. Start this path with / . If
you service doesn't have a status page, omit this parameter. The path is relative to the
instanceBaseUrls.
Example:
statusPageRelativeUrl: /application/info
the result URL will be:
${baseUrl}/application/info
healthCheckRelativeUrl
This parameter specifies the relative path to the health check endpoint of your service. Start this URL
with / . If your service does not have a health check endpoint, omit this parameter. The path is relative
to the instanceBaseUrls.
Example:
healthCheckRelativeUrl: /application/health
routes
The following parameters specify the routing rules between the Gateway service and your service. Both
specify how the API endpoints are mapped to the API Gateway endpoints.
routes.gatewayUrl
The gatewayUrl parameter sets the target endpoint on the Gateway. This is the portion of the final
URL that is Gateway specific.
Example:
For the petstore example, the full Gateway URL would be:
https://gatewayUrl:1345/petstore/api/v2/pets/1
In this case, the URL that will be called on the service is:
http://localhost:8080/v2/pets/1
routes.serviceRelativeUrl
The serviceRelativeUrl parameter points to the target endpoint on the service. This is the base path
on the service called through the Gateway.
authentication
Parameters under this grouping allow a service to accept the Zowe JWT token. The API Gateway
translates the token to an authentication method supported by a service.
authentication.scheme
This parameter specifies a service authentication scheme. The following schemes are supported
by the API Gateway:
bypass
This value specifies that the token is passed unchanged to the service. This is the default
scheme when no authentication parameters are specified.
zoweJwt
This value specifies that a service accepts the Zowe JWT token. No additional processing is
done by the API Gateway.
httpBasicPassTicket
This value specifies that a service accepts PassTickets in the Authorization header of the
HTTP requests using the basic authentication scheme. It is necessary to provide a service
APPLID in the apiml.authentication.applid parameter.
Tip: For more information, see Enabling PassTicket creation for API Services that accept
PassTickets.
safIdt
This value specifies that the application recognizes the SAF IDT scheme and fills the X-SAF-
Token header with the token produced by the Saf IDT provider implementation.
apiInfo
This section defines APIs that are provided by the service. Currently, only one API is supported.
apiInfo.apiId
that uses lowercase alphanumeric characters and a dot: . .
apiInfo.gatewayUrl
This parameter specifies the base path at the API Gateway where the API is available. Ensure that
this path is the same as the gatewayUrl value in the routes sections.
apiInfo.swaggerUrl
(Optional) This parameter specifies the HTTP or HTTPS address where the Swagger JSON
document is available.
apiInfo.documentationUrl
(Optional) This parameter specifies a URL to a website where external documentation is provided.
This can be used when swaggerUrl is not provided.
apiInfo.version
(Optional) This parameter specifies the actual version of the API in semantic versioning format. This
can be used when swaggerUrl is not provided.
apiInfo.defaultApi
(Optional) This parameter specifics that the API is the default one to show in the API Catalog. If this
not set to true for any API, or multiple APIs have it set to true, then the default API becomes the API
with the highest major version as seen in apiInfo.version .
customMetadata
Custom metadata are described here.
catalogUiTileId
This parameter specifies the unique identifier for the API services group. This is the grouping value used
by the API Mediation Layer to group multiple API services together into "tiles". Each unique identifier
represents a single API Catalog UI dashboard tile. Specify the value based on the ID of the defined tile.
catalogUiTile
This section contains definitions of tiles. Each tile is defined in a section that has its tile ID as a key. A tile
can be used by multiple services.
catalogUiTile.{tileId}.title
This parameter specifies the title of the API services product family. This value is displayed in the
API Catalog UI dashboard as the tile title.
catalogUiTile.{tileId}.description
This parameter specifies the detailed description of the API Catalog UI dashboard tile. This value is
displayed in the API Catalog UI dashboard as the tile description.
additionalServiceMetadata
This section contains a list of changes that allows adding or modifying metadata parameters for the
corresponding service.
additionalServiceMetadata.serviceId
This parameter specifies the service identifier for which metadata is updated.
additionalServiceMetadata.mode
This parameter specifies how the metadata are updated. The following modes are available:
UPDATE
Only missing parameters are added. Already existing parameters are ignored.
FORCE_UPDATE
All changes are applied. Existing parameters are overwritten.
additionalServiceMetadata.{updatedParameter}
This parameter specifies any metadata parameters that are updated.
To hold your YAML file outside of the instance directory, add ZWE_STATIC_DEFINITIONS_DIR
variable to the zowe.environments section of zowe.yaml . Append the fully qualified zFS
path of the YAML file to the ZWE_STATIC_DEFINITIONS_DIR variable. You may specify multiple
zFS paths, separating each path by a semicolon.
To place your YAML file within the instance directory, copy your YAML file to the
${zoweInstanceDir}/workspace/api-mediation/api-defs directory.
Notes:
The ${zoweInstanceDir}/workspace/api-mediation/api-defs directory is created the
first time that Zowe starts. If you have not yet started Zowe, this directory might be missing.
The user ID ZWESVUSR that runs the Zowe started task must have permission to read the YAML
file.
. Ensure that your application that provides the endpoints described in the YAML file is running.
. Restart Zowe runtime or follow steps in section (Optional) Reload the services definition after the
update when the API Mediation Layer is already started which allows you to add your static API service
to an already running Zowe.
. Validate successful onboarding
You successfully defined your Java application if your service is running and you can access its endpoints.
The endpoint displayed for the sample application is:
The Discovery Service requires authentication by a client certificate. If the API Mediation Layer is
running on your local machine, the certificate is stored at keystore/localhost/localhost.pem .
This example uses the HTTPie command-line HTTP client and is run with Python 3 installed:
Alternatively, it is possible to use curl to issue the POST call if it is installed on your system:
. Check if your updated definition is effective.
Note: It can take up to 30 seconds for the API Gateway to pick up the new routing.
Onboarding a REST API service with the
Version: v2.0.x LTS
YAML Wizard
As an API developer, you can use the Yaml Onboarding Wizard to simplify the process of onboarding new
REST API services to the Zowe API Mediation Layer. The wizard offers a walkthrough of the required steps to
create a correct configuration file which is used to set the application properties and Eureka metadata.
. Choose the type of onboarding according to your preference (static or via enablers).
. (Optional) To prefill the fields, click Choose File to upload a complete or partial YAML file. The YAML file
is validated and the form fields are populated.
If you see your service in the list of API Catalog available services, you have onboarded your service
successfully.
Zowe API Mediation Layer Single-Sign-On
Version: v2.0.x LTS
Overview
You can extend Zowe and utilize Zowe Single-Sign-On (SSO) provided by Zowe API Mediation Layer (API
ML) to enhance system security and improve the user experience.
This article provides an overview of the API ML single-sign-on feature, the principle participants in the SSO
process, and links to detailed Zowe SSO documentation. Zowe Single-Sign-On is based on single-user
authentication which produces an access token that represents the user in communication with z/OS
services accessible through the API Mediation Layer. The access token is issued by the Zowe Authentication
and Authorization Service (ZAAS), which is part of API ML. ZAAS issues an access token based on valid
z/OS credentials. This token can be validated by any component participating in SSO.
Note: Currently, API ML can provide SSO only in a single security domain.
Zowe API ML client
API service accessed via Zowe API ML
Existing services that cannot be modified
The following diagram describes the interactions between the general participants in the single-sign-on
process.
There are two main types of components that participate in Zowe SSO through API ML:
Zowe API ML client
This type of component is user-facing and can obtain user credentials through a user interface
(web, CLI, desktop).
API ML clients can be confidential or public.
A Zowe API ML client calls API services through the API ML.
An example of such clients are Zowe CLI or Zowe Desktop.
An API service accessed through Zowe API ML
A service that is registered to API ML and is accessed through the API Gateway.
Services are protected by an access token or PassTicket.
The access token or PassTicket can be validated by the called API service.
The following sections describe what is necessary to utilize SSO for both types of components.
Zowe API ML client
The Zowe API ML client needs to obtain an access token via the /login endpoint of ZAAS by
providing z/OS credentials.
A client can call the ZAAS /query endpoint to validate the token and get information from the token.
This is useful when the API client has the token but does not store the associated data such as the user
ID.
The API client needs to provide the access token to API services in the form of a Secure HttpOnly
cookie with the name apimlAuthenticationToken , or in the Authorization: Bearer HTTP
header as described in Authenticated Request.
API service accessed via Zowe API ML
This section describes the requirements that an API service needs to satisfy to adopt a Zowe SSO access
token.
The token received by the Gateway is first validated and then may be passed directly to the service.
Alternatively, the Gateway can exchange the token for a PassTicket if the API service is configured to
expect a PassTicket.
The API service can validate the token and extract information about the user ID by calling the ZAAS
/query endpoint.
The alternative is to validate the signature of the JWT token using the public key of the token issuer
(e.g. the API ML Gateway). The API service needs to have the API ML Gateway certificate along with the
full CA certification chain in the API service truststore.
Note: The REST API of ZAAS can easily be called from a Java application using the ZAAS Client.
Existing services that cannot be modified
If you have a service that cannot be changed to adopt the Zowe authentication token, the service can utilize
Zowe SSO if the API service is able to handle PassTickets.
Note: For more information, see Enabling PassTicket creation for API Services that Accept PassTickets for
more details.
Further resources
Authentication Methods
User guide for SSO in Zowe CLI
System requirements for using web tokens for SSO in Zlux and ZSS
Certificate configuration for the usage of web tokens for SSO in Zlux and ZSS
Obtaining Information about API Services
Version: v2.0.x LTS
As an API Mediation Layer user, information about API services can be obtained for various purposes. The
following list presents some of the use cases for using the API Mediation Layer:
To display available services based on a particular criterion (API ID, hostname, or custom metadata)
To locate a specific API service based on one or more specific criteria (for example the API ID)
To obtain information that permits routing through the API Gateway such as baseUrl or basePath
To obtain information about an API service, the service APIs, or instances of the service
This article provides further detail about each of these use cases.
API ID in the API Mediation Layer
Protection of Service Information
API Endpoints
Obtain Information about a Specific Service
Obtain Information about All Services
Obtain Information about All Services with a Specific API ID
API Endpoints
Obtain Information about a Specific Service
Use the following method to get information about a specific service:
GET /gateway/{serviceId}/api/v1/services
where:
{serviceId} is the service ID of the API service (Example: apicatalog )
This method returns a JSON response that describes the service. For more information, see Response
Format.
Obtain Information about All Services
Use the following method to get information about all services:
GET /gateway/api/v1/services
This method returns a JSON response with a list of all services. For more information, see Response Format.
Obtain Information about All Services with a Specific API ID
Use the following method to get information about all services with a specific API ID:
GET /gateway/api/v1/services?apiId={apiId}
where:
{apiId} is the API ID that represents required API (e.g. zowe.apiml.apicatalog )
This method returns a JSON response with a list of services provided by a specified API ID. For more
information, see Response Format.
Response Format
This section provides basic information about the structure of the response. The full reference on the field in
the response is presented in the API Catalog.
The apiml section provides information about the following points:
The service in the service subsection is displayed.
The APIs that are provided by the service in the apiInfo section. This section presents each major
API version that is provided by at least one instance. For each major version, the lowest minor version is
displayed.
The authentication methods that are supported by all instances are displayed.
API clients can use this information to locate the API based on API ID. baseUrl or basePath are used to
access the API through the API Gateway.
The instances section contains more details about the instances of the service. An API service can
provide more application specific details in customMetadata that can be used by API clients. Do not use
information in this section for use cases that API Gateway supports, such as routing or load balancing.
Example:
WebSocket support in API Gateway
Version: v2.0.x LTS
The API Gateway includes a basic WebSocket proxy which enables the Gateway to access applications that
use the WebSocket protocol together with a web UI and REST API.
The service can define what WebSocket services are exposed using Eureka metadata.
Example:
These metadata make it possible for requests from
wss://gatewayHost:port/serviceId/ws/v1/path to map to
ws://serviceHost:port/discoverableclient/ws/path , where:
serviceId
is the service ID of the service
path
is the remaining path segment in the URL.
Subprotocols
In addition to plain WebSocket support, API Mediation Layer also supports WebSocket subprotocols.
Currently, only STOMP v1.2 and STOMP v1.1 are supported and tested.
Note: It is possible to update the list of currently supported WebSocket subprotocols. Update the API
Gateway configuration using the environment variable SERVER_WEBSOCKET_SUPPORTEDPROTOCOLS with
the value of comma-separated subprotocol names. Support for additional subprotocols is not guaranteed as
these subprotocols are not being tested.
Example:
High availability
In the high availability scenario, the API Gateway makes it possible to open a new Websocket session by
utilizing the load balancing mechanism. Communication between the client and the server is handled by the
API Gateway by propagating the session to a live instance.
Diagnostics
The list of active routed WebSocket sessions is available at the Actuator endpoint websockets . On
localhost , it is available at https://localhost:10010/application/websockets.
Limitations
Different HTTP status code errors may result. The WebSocket session starts before the session between the
Gateway and the service starts. When a failure occurs when connecting to a service, the WebSocket session
terminates with a WebSocket close code and a description of the failure rather than an HTTP error code.
Create an Extension for API ML
Version: v2.0.x LTS
Zowe allows extenders to define their own extension for API ML. Follow the steps in this article to create your
extension and add it to the API Gateway classpath.
Note: The api-sample-extension-package contains a sample manifest.yml and the apiml-
sample-extension JAR that contains the extension.
Component
The API ML Message Service component unifies and stores REST API error messages and log messages in a
single file. The Message Service component enables users to mitigate the problem of message definition
redundancy which helps to optimize the development process.
API Mediation Layer Message Service Component
Message Definition
Creating a message
Mapping a message
API ML Logger
Message Definition
API ML uses a customizable infrastructure to format both REST API error messages and log messages.
yaml files make it possible to centralize both API error messages and log messages. Messages have the
following definitions:
Message key - a unique ID in the form of a dot-delimited string that describes the reason for the
message. The key enables the UI or the console to show a meaningful and localized message.
Tips:
We recommend using the format org.zowe.sample.apiservice.{TYPE}.greeting.empty
to define the message key. {TYPE} can be the api or log keyword.
Use the message key and not the message number . The message number makes the code
less readable, and increases the possibility of errors when renumbering values inside the number .
Message number - a typical mainframe message ID (excluding the severity code)
Message type - There are two Massage types:
REST API error messages: ERROR
Log messages: ERROR , WARNING , INFO , DEBUG , or TRACE
Message text - a description of the issue
Message reason - A reason for why this issue occured
Message action - What should I as a user do to correct the problem
The following example shows the message definition.
Example:
Creating a message
Use the following classes when you create a message:
org.zowe.apiml.message.core.MessageService - lets you create a message from a file.
org.zowe.apiml.message.yaml.YamlMessageService - implements
org.zowe.apiml.message.core.MessageService so that
org.zowe.apiml.message.yaml.YamlMessageService can read message information from a
yaml file, and create a message with message parameters.
Mapping a message
You can map the Message either to a REST API response or to a log message.
When you map a REST API response, use the following methods:
mapToView - returns a UI model as a list of API Message, and can be used for Rest API error
messages
mapToApiMessage - returns a UI model as a single API Message
The auth/login endpoint authenticates mainframe user credentials and returns an authentication
token. The login request requires user credentials though one of the following methods:
Basic access authentication
JSON with user credentials
Client certificate
When authentication is successful, the response to the request is an empty body and a token is
contained in a secure HttpOnly cookie named apimlAuthenticationToken . When
authentication fails, the user receives a 401 status code.
auth/query
The auth/query endpoint validates the token and retrieves the information associated with the
token. The query request requires the token through one of the following methods:
A cookie named apimlAuthenticationToken
Bearer authentication
When authentication is successful, the response to the request is a JSON object which contains
information associated with the token. When authentication fails, the user receives a 401 status
code.
auth/ticket
The auth/ticket endpoint generates a PassTicket for the user associated with a token. The full path
of the auth/ticket endpoint appears as https://{gatewayUrl}:
{gatewayPort}/gateway/api/v1/auth/ticket .
This endpoint is protected by a client certificate. The ticket request requires the token in one of the
following formats:
Cookie named apimlAuthenticationToken .
Bearer authentication
The request takes the applicationName parameter, which is the name of the application for which
the PassTicket should be generated. Supply this parameter.
The response is a JSON object, which contains information associated with the ticket.
auth/refresh
Notes:
The endpoint is disabled by default. For more information, see Enable JWT token endpoint.
The endpoint is protected by a client certificate.
The auth/refresh endpoint generates a new token for the user based on valid jwt token. The full
path of the auth/refresh endpoint appears as https://{gatewayUrl}:
{gatewayPort}/gateway/api/v1/auth/refresh . The new token overwrites the old cookie with a
Set-Cookie header. As part of the process, the old token gets invalidated and is not usable anymore.
The refresh request requires the token in one of the following formats:
Cookie named apimlAuthenticationToken .
Bearer authentication
For more information, see the OpenAPI documentation of the API Mediation Layer in the API Catalog.
Supported authentication methods
The API Mediation Layer provides multiple methods which clients can use to authenticate. When the API ML
is run as part of Zowe, all of the following methods are enabled and supported. All methods are supported at
least to some extent with each authentication provider.
Authentication with Username/Password
The client can authenticate via Username and password. There are multiple methods which can be used to
deliver
credentials. For more details, see the ZAAS Client documentation.
Authentication with Client certificate
Beginning with release 1.19 LTS, it is possible to perform authentication with client certificates. This feature is
functional and tested, but automated testing on various security systems is not yet complete. As such, the
feature is provided as a beta release for early preview. If you would like to offer feedback using client
certificate authentication, please create an issue against the api-layer repository. Client Certificate
authentication will move out of Beta once test automation is fully implemented across different security
systems.
If the keyring or a truststore contains at least one valid certificate authority (CA) other than the CA of the API
ML, it is possible to use the client certificates issued by this CA to authenticate to the API ML. This feature is
not enabled by default and needs to be configured.
When providing credentials in any form together with client certificate on the same login request, the
credentials take precedence and client certificate is ignored.
Authentication is performed in the following ways:
The client calls the API ML Gateway login endpoint with the client certificate.
The client certificate and private key are checked as a valid TLS client certificate against the Gateway's
trusted CAs.
The public part of the provided client certificate is checked against SAF, and SAF subsequently returns
a user ID that owns this certificate. ZSS provides this API for the Mediation Layer.
The Gateway performs the login of the mapped user and returns a valid JWT token.
Prerequisites:
Alter the Zowe runtime user and set protection by password. The user is created with the
NOPASSWORD parameter by the Zowe installer. It is necessary to change this password. For RACF,
issue the following TSO command:
For other security systems, please refer to the documentation for an equivalent command.
Ensure that the Zowe runtime user is allowed to log in to z/OSMF (For example user is member of the
default IZUUSER group)
Ensure that you have an external Certificate Authority and signed client certificates, or generate these
certificates in SAF. The client certificate has to have correct Extended Key Usage metadata to allow
being used for TLS client authentication. ( OID: 1.3.6.1.5.5.7.3.2 )
Import the client certificates to SAF, or add them to a user profile. (Examples: RACDCERT ADD or
RACDCERT GENCERT ). For more information, see your security system documentation.
Import the external CA to the truststore or keyring of the API Mediation Layer.
Configure Gateway for client certificate authentication.
To upgrade from Zowe 1.18 or lower, see the Additional security rights that need to be granted.
PassTicket generation must be enabled for the Zowe runtime user. The user has to be able to generate
PassTicket for itself and for the APPLID of z/OSMF. For more information, see Configure Passticket.
The Zowe runtime user has to be enabled to perform identity mapping in SAF. For more information, see
Additional security rights that need to be granted.
ZSS has to be configured to participate in Zowe SSO. For more information, see Using web tokens for
sso on Zlux and ZSS.
Authentication with JWT Token
When the client authenticates with the API ML, the client receives the JWT token in exchange. This token
can be used for further authentication. If z/OSMF is configured as the authentication provider and the client
already received a JWT token produced by z/OSMF, it is possible to reuse this token within API ML for
authentication.
Authentication parameters
Parameters are specified in the onboarding enablers.
Authentication parameters enable a service to accept a Zowe JWT or client certificate. The API Gateway
translates the authentication token to an authentication method supported by a service.
The following example shows the parameters that define the service authentication method:
Example:
authentication.scheme
The value of this parameter specifies a service authentication scheme. Any valid headers or X-Zowe-
Auth-Failure error headers are set and passed to southbound services. In addition, any X-Zowe-
Auth-Failure error headers coming from the northbound service are also be passed to the
southbound services without setting the valid headers. The X-Zowe-Auth-Failure error header
contains details about the error and suggests potential actions. The following schemes are supported
by the API Gateway:
bypass
This value specifies that the token is passed unchanged to service.
Note: This is the default scheme when no authentication parameters are specified.
zoweJwt
When a Zowe JWT is provided, this scheme value specifies that the service accepts the Zowe
JWT. No additional processing is done by the API Gateway.
When a client certificate is provided, the certificate is transformed into a Zowe JWT, and the
southbound service performs the authentication.
httpBasicPassTicket
This value specifies that a service accepts PassTickets in the Authorization header of the HTTP
requests using the basic authentication scheme. It is necessary to provide a service APPLID in the
authentication.applid parameter to prevent passticket generation errors.
When a JWT is provided, the service validates the Zowe JWT to use for passticket generation.
When a client certificate is provided, the service validates the certificate by mapping it to a
mainframe user to use for passticket generation.
For more information, see Enabling PassTicket creation for API Services that Accept PassTickets
zosmf
This value specifies that a service accepts z/OSMF LTPA (Lightweight Third-Party Authentication).
This scheme should only be used only for a z/OSMF service used by the API Gateway
Authentication Service and other z/OSMF services that use the same LTPA key.
When a JWT is provided, the token extracts the LTPA and forwards it to the service.
When a client certificate is provided, the certificate translates into a z/OSMF token, and also
extracts the LTPA for the service to use.
For more information about z/OSMF Single Sign-on, see Establishing a single sign-on environment
safIdt
This value specifies that the service accepts SAF IDT, and expects that the token produced by the
SAF IDT provider implementation is in the X-SAF-Token header. It is necessary to provide a
service APPLID in the authentication.applid parameter.
For more information, see Implement a SAF IDT provider.
x509
This value specifies that a service accepts client certificates forwarded in the HTTP header. The
Gateway service extracts information from a valid client certificate. For validation, the certificate
needs to be trusted by API Mediation Layer, and needs to contain a Client Authentication
(1.3.6.1.5.5.7.3.2) entry in Extended Key Usage. To use this scheme, it is also necessary to specify
which headers to include. Specify these parameters in headers .
authentication.headers
When the x509 scheme is specified, use the headers parameter to select which values to send to a
service. Use one of the following values:
X-Certificate-Public
Authentication providers
API ML contains the following providers to handle authentication for the API Gateway:
z/OSMF Authentication Provider
Use the following property of API Gateway to enable the Dummy Authentication Provider :
Authorization
Authorization is a method used to determine access rights of an entity.
In the API ML, authorization is performed by the z/OS security manager (ACF2, IBM RACF, Top Secret). An
authentication token is used as proof of valid authentication. The authorization checks, however, are always
performed by the z/OS security manager.
JWT Token
The JWT secret that signs the JWT Token is an asymmetric private key that is generated during Zowe
keystore configuration. The JWT token is signed with the RS256 signature algorithm.
You can find the JWT secret, alias localhost , in the PKCS12 keystore that is stored in
${KEYSTORE_DIRECTORY}/localhost/localhost.keystore.p12 . The public key necessary to
validate the JWT signature is read from the keystore.
You can also use the /gateway/api/v1/auth/keys/public/all endpoint to obtain all public keys that
can be used to verify JWT tokens signature in standard JWK format.
z/OSMF JSON Web Tokens Support
Your z/OSMF instance can be enabled to support JWT tokens as described at Enabling JSON Web Token
support. In this case, the Zowe API ML uses this JWT token and does not generate its own Zowe JWT token.
All authentication APIs, such as /gateway/api/v1/login and /gateway/api/v1/check function in
the same way as without z/OSMF JWT. Gateway service endpoint
/gateway/api/v1/auth/keys/public/all serves the z/OSMF JWK that can be used for JWT
signature validation.
API ML truststore and keystore
A keystore is a repository of security certificates consisting of either authorization certificates or public key
certificates with corresponding private keys (PK), used in TLS encryption. A keystore can be stored in Java
specific format (JKS) or use the standard format (PKCS12). The Zowe API ML uses PKCS12 to enable the
keystores to be used by other technologies in Zowe (Node.js).
API ML SAF Keyring
As an alternative to using a keystore and truststore, API ML can read certificates from a SAF keyring. The
user running the API ML must have rights to access the keyring. From the java perspective, the keyring
behaves as the JCERACFKS keystore. The path to the keyring is specified as
safkeyring:////user_id/key_ring_id . The content of SAF keyring is equivalent to the combined
contents of the keystore and the truststore.
Note: When using JCERACFKS as the keystore type, ensure that you define the class to handle the RACF
keyring using the -D options to specify the java.protocol.handler.pkgs property :
The elements in the following list, which apply to the API ML SAF Keyring, have these corresponding
characteristics:
The API ML local certificate authority (CA)
The API ML local CA contains a local CA certificate and a private key that needs to be securely stored.
The API ML local certificate authority is used to sign certificates of services.
The API ML local CA certificate is trusted by API services and clients.
The API ML keystore or API ML SAF Keyring
Server certificate of the Gateway (with PK). This can be signed by the local CA or an external CA.
Server certificate of the Discovery Service (with PK). This can be signed by the local CA.
Server certificate of the Catalog (with PK). This can be signed by the local CA.
The API ML keystore is used by API ML services.
The API ML truststore or API ML SAF Keyring
Local CA public certificate
External CA public certificate (optional)
Can contain self-signed certificates of API Services that are not signed by the local or external CA
Used by API ML services
Zowe core services
Services can use the same keystore and truststore or the same keyring as APIML for simpler installation
and management.
When using a keystore and truststore, services have to have rights to access and read them on the
filesystem.
When using a keyring, the user of the service must have authorization to read the keyring from the
security system.
Alternatively, services can have individual stores for higher security.
API service keystore or SAF keyring (for each service)
The API service keystore contains a server and client certificate signed by the local CA.
API service truststore or SAF keyring (for each service)
(Optional) The API service truststore contains a local CA and external CA certificates.
Client certificates
A client certificate is a certificate that is used for validation of the HTTPS client. The client certificate of
a Discovery Service client can be the same certificate as the server certificate of the services which the
Discovery Service client uses.
Discovery Service authentication
There are several authentication mechanisms, depending on the desired endpoint, as described by the
following matrix:
ZAAS Client
The ZAAS client is a plain Java library that provides authentication through a simple unified interface without
the need for detailed knowledge of the REST API calls presented in this section. The Client function has only
a few dependencies including Apache HTTP Client, Lombok, and their associated dependencies. The client
contains methods to perform the following actions:
To obtain a JWT token
To validate and get details from a JWT token
To invalidate the JWT token
To obtain a PassTicket
Pre-requisites
Java SDK version 1.8.
An active instance of the API ML Gateway Service.
A property file which defines the keystore or truststore certificates.
API Documentation
The plain java library provides the ZaasClient interface with following public methods:
This Java code enables your application to add the following functions:
Obtain a JWT token ( login )
Validate and get details from the token ( query )
Invalidate a JWT token ( logout )
Obtain a PassTicket ( passTicket )
Obtain a JWT token ( login )
To integrate login, call one of the following methods for login in the ZaasClient interface:
If the user provides credentials in the request body, call the following method from your API:
If the user provides credentials as Basic Auth, use the following method:
These methods return the JWT token as a String. This token can then be used to authenticate the user in
subsequent APIs.
Note: Both methods automatically use the truststore file to add a security layer, which requires configuration
in the ConfigProperties class.
Validate and get details from the token ( query )
Use the query method to get the details embedded in the token. These details include creation time of
the token, expiration time of the token, and the user who the token is issued to.
Call the query method from your API in the following format:
In return, you receive the ZaasToken Object in JSON format.
This method automatically uses the truststore file to add a security layer, which you configured in the
ConfigProperties class.
The query method is overloaded, so you can provide the HttpServletRequest object that contains
the token in the apimlAuthenticationToken cookie or in an Authorization header. You then receive the
ZaasToken Object in JSON format.
This script creates the certificates and keystore for the API Mediation Layer in your current workspace.
Generate a certificate for a new service on localhost
To generate a certificate for a new service on localhost, see Generating certificate for a new service on
localhost.
Add a service with an existing certificate to API ML on localhost
For more information about adding a service with an existing certificate to API ML on localhost, see Trust
certificates of other services.
Service registration to Discovery Service on localhost
To register a new service to the Discovery Service using HTTPS, provide a valid client certificate that is
trusted by the Discovery Service.
Zowe runtime on z/OS
Certificates for the API ML local CA and API ML service are managed by installing the Zowe runtime on z/OS.
Follow the instructions in Installing the Zowe runtime on z/OS.
There are two ways to set up certificates on a z/OS machine:
Certificates in SAF keyring
Certificates in UNIX files (keystore and truststore)
The Configuring Zowe certificates contains instructions about how to set up certificates during installation.
Follow the procedure in the applicable section described in this article during installation.
Import the local CA certificate to your browser
Trust in the API ML server is a necessary precondition for secure communication between Browser or API
Client application. Ensure this trust through the installation of a Certificate Authority (CA) public certificate.
By default, API ML creates a local CA. Import the CA public certificate to the truststore for REST API clients
and to your browser. You can also import the certificate to your root certificate store.
Notes:
If a SAF keyring is being used and set up with ZWEKRING JCL, the procedure to obtain the certificate
does not apply. It is recommended that you work with your security system administrator to obtain the
certificate. Start the procedure at step 2.
The public certificate in the PEM format is stored at
<KEYSTORE_DIRECTORY>/local_ca/localca.cer where <KEYSTORE_DIRECTORY> is defined
in a customized <RUNTIME_DIR>/bin/zowe-setup-certificates.env file during the installation
step that generates Zowe certificates. The certificate is stored in UTF-8 encoding so you need to
transfer it as a binary file. Since this is the certificate to be trusted by your browser, it is recommended
to use a secure connection for transfer.
Follow these steps:
. Download the local CA certificate to your computer. Use one of the following methods to download the
local CA certificate to your computer:
Use Zowe CLI (Recommended) Issue the following command:
zowe zos-files download uss-file --binary
$KEYSTORE_DIRECTORY/local_ca/localca.cer
For Firefox, manually import your root certificate via the Firefox settings, or force Firefox to use the
Windows truststore.
Note: Firefox uses its own certificate truststore.
Create a new Javascript file firefox-windows-truststore.js at C:\Program Files
(x86)\Mozilla Firefox\defaults\pref with the following content:
is a unique string to identify the key entry. All keystore entries (key and trusted certificate entries) are
accessed via unique aliases. Since the keystore has only one certificate, you can omit this parameter
and use the default value localhost .
service-keystore
Specifies repository of security certificates plus corresponding private keys. The <keystore_path>
is the path excluding the extension to the keystore that is generated. It can be an absolute path or a
path relative to the current working directory. The key store is generated in PKCS12 format with the
.p12 extension. Ensure that the path is in an existing directory where your service expects the
keystore.
Example: /opt/myservice/keystore/service.keystore .
service-truststore
Contains certificates from other parties that you expect to communicate with, or from Certificate
Authorities that you trust to identify other parties. The <truststore_path> is the path excluding the
extension to the trust store that is generated. It can be an absolute path or a path relative to the current
working directory. The truststore is generated in PKCS12 format.
service-ext
Specifies the X.509 extension that should be the Subject Alternate Name (SAN). The SAN contains host
names that are used to access the service. You need to specify the same hostname that is used by the
service during API Mediation Layer registration.
Example: "SAN=dns:localhost.localdomain,dns:localhost,ip:127.0.0.1"
Note: For more information about SAN, see SAN or SubjectAlternativeName at Java Keytool - Common
Options.
service-dname
Specifies the X.509 Distinguished Name and is used to identify entities, such as those which are named
by the subject and issuer (signer) fields of X.509 certificates.
Example: "CN=Zowe Service, OU=API Mediation Layer, O=Zowe Sample, L=Prague,
S=Prague, C=CZ"
service-validity
Specifies the keystore password. The purpose of the password is the integrity check. The access
protection for the keystore and keystore need to be achieved by making them accessible only by the
ZOVESVR user ID and the system administrator.
The local-ca-filename is the path to the keystore that is used to sign your new certificate with the
local CA private key. It should point to the $KEYSTORE_DIRECTORY/local_ca/localca where
$KEYSTORE_DIRECTORY is defined in a customized $ZOWE_ROOT_DIR/bin/zowe-setup-
certificates.env file during the installation step that generates Zowe certificates.
As an application developer, you can route your service through the Gateway using the API Mediation Layer
to consume a specific resource.
There are two ways to route your service to the API Mediation Layer:
Basic Routing (using Service ID and version)
Basic Routing (using only the service ID)
Terminology
Service
A service provides one or more APIs, and is identified by a service ID. Note that sometimes the term
"service name" is used to mean service ID.
The default service ID is provided by the service developer in the service configuration file.
A system administrator can replace the service ID with a deployment environment specific name using
additional configuration that is external to the service deployment unit. Most often, this is configured in
a JAR or WAR file.
Services are deployed using one or more service instances, which share the same service ID and
implementation.
URI (Uniform Resource Identifier)
A string of characters used to identify a resource. Each URI must point to a single corresponding
resource that does not require any additional information, such as HTTP headers.
Example:
The following address shows the original URL of a resource exposed by a service:
The following address shows the API Gateway URL of the resource:
The following diagram illustrates how basic routing works:
Implementation Details
Service instances provide information about routing to the API Gateway via Eureka metadata.
Example:
In this example, the service has a service ID of helloworldservice that exposes the following
endpoints:
UI - https://gateway/helloworldservice/ui/v1 routed to
https://hwServiceHost:port/helloworld/
where:
The gatewayUrl is matched against the prefix of the URL path used at the Gateway
https://gateway/urlPath , where urlPath is serviceId/prefix/resourcePath .
Overview
API clients can use either a Zowe JWT token or client certificate to access an API service even if the API
service itself does not support the JWT token or client certificate. The Zowe JWT token is available through
the API Gateway authentication endpoint.
When an API client provides a valid Zowe JWT token or client certificate to the API ML, the API Gateway then
generates a valid PassTicket for any API service that supports PassTickets. The API Gateway then uses the
PassTicket to access that API service. The API Gateway provides the user ID and password in the
Authorization header of the HTTP requests using the Basic authentication scheme.
Outline for enabling PassTicket support
Security configuration that allows the Zowe API Gateway to generate PassTickets for an API service
ACF2
Top Secret
RACF
API services that support PassTickets
API Services that register dynamically with API ML that provide authentication information
API Services that register dynamically with API ML but do not provide metadata
API services that are defined using a static YAML definition
Adding YAML configuration to API services that register dynamically with API ML
<zowesrv> is Zowe started task user ID used during the Zowe installation
Grant the Zowe started task user ID permission to generate PassTickets for users of that API service.
Example:
is the value that indicates that the HTTP Basic authentication scheme is used with PassTickets.
<applid>
is the APPLID value that is used by the API service for PassTicket support (e.g. OMVSAPPL ).
Custom Metadata
Version: v2.0.x LTS
(Optional) Additional metadata can be added to the instance information that is registered in the Discovery
Service in the customMetadata section. This information is propagated from the Discovery Service to the
onboarded services (clients). In general, additional metadata do not change the behavior of the client. Some
specific metadata can configure the functionality of the API Mediation Layer. Such metadata are generally
prefixed with the apiml. qualifier. We recommend you define your own qualifier, and group all metadata
you wish to publish under this qualifier. If you use the Spring enabler, ensure that you include the prefix
apiml.service before the parameter name.
customMetadata.apiml.enableUrlEncodedCharacters
When this parameter is set to true , the Gateway allows encoded characters to be part of URL
requests redirected through the Gateway. The default setting of false is the recommended setting.
Change this setting to true only if you expect certain encoded characters in your application's
requests.
Important! When the expected encoded character is an encoded slash or backslash ( %2F , %5C ),
make sure the Gateway is also configured to allow encoded slashes. For more information, see Installing
the Zowe runtime on z/OS.
Note: If you use the Spring enabler, use the following parameter name:
apiml.service.customMetadata.apiml.enableUrlEncodedCharacters
customMetadata.apiml.connectTimeout
The value in milliseconds that specifies a period in which API ML should establish a single, non-
managed connection with this service. If omitted, the default value specified in the API ML Gateway
service configuration is used.
Note: If you use the Spring enabler, use the following parameter name:
apiml.service.customMetadata.apiml.connectTimeout
customMetadata.apiml.readTimeout
The value in milliseconds that specifies the time of inactivity between two packets in response from this
service to API ML. If omitted, the default value specified in the API MLGateway service configuration is
used.
Note: If you use the Spring enabler, use the following parameter name:
apiml.service.customMetadata.apiml.readTimeout
customMetadata.apiml.connectionManagerTimeout
HttpClient employs a special entity to manage access to HTTP connections called by the HTTP
connection manager. The purpose of an HTTP connection manager is to serve as a factory for new
HTTP connections, to manage the life cycle of persistent connections, and to synchronize access to
persistent connections. Internally, it works with managed connections which serve as proxies for real
connections. connectionManagerTimeout specifies a period in which managed connections with
API ML should be established. The value is in milliseconds. If omitted, the default value specified in the
API ML Gateway service configuration is used.
Note: If you use the Spring enabler, use the following parameter name:
apiml.service.customMetadata.apiml.connectionManagerTimeout
customMetadata.apiml.okToRetryOnAllOperations
Specifies whether all operations can be retried for this service. The default value is false . The
false value allows retries for only GET requests if a response code of 503 is returned. Setting this
value to true enables retry requests for all methods, which return a 503 response code. Enabling
retry can impact server resources resulting from buffering of the request body.
Note: If you use the Spring enabler, use the following parameter name:
apiml.service.customMetadata.apiml.okToRetryOnAllOperations
customMetadata.apiml.corsEnabled
When this parameter is set to true , CORS handling by the Gateway is enabled on the service level for
all service routes. For more information, refer to enabling CORS with Custom Metadata on the Gateway:
Advanced Gateway features configuration. Additional information can be found in this article about
Cross-Origin Resource Sharing (CORS).
Note: If you use the Spring enabler, use the following parameter name:
apiml.service.customMetadata.apiml.corsEnabled
customMetadata.apiml.gatewayAuthEndpoint
Specifies the Gateway authentication endpoint used by the ZAAS Client configuration. The default value
is /api/v1/gateway/auth . For more information about ZAAS Client, see ZAAS Client.
Note: If you use the Spring enabler, use the following parameter name:
apiml.service.customMetadata.apiml.gatewayAuthEndpoint
customMetadata.apiml.gatewayPort
Specifies the Gateway port used by the ZAAS Client configuration. The default value is 10010 . For
more information about ZAAS Client, see ZAAS Client.
Note: If you use the Spring enabler, use the following parameter name:
apiml.service.customMetadata.apiml.gatewayPort
customMetadata.apiml.corsAllowedOrigins
Optionally, service can specify which origins will be accepted by Gateway during the CORS handling.
When this parameter is not set, the accepted origins are * by default. You can provide a coma
separated list of values to explicitly limit the accepted origins.
Note: If you use the Spring enabler, use the following parameter name:
apiml.service.customMetadata.apiml.corsAllowedOrigins
For more information, refer to enabling CORS with Custom Metadata on the Gateway: Advanced
Gateway features configuration.
customMetadata.apiml.lb.type
This parameter is part of the load balancing configuration for the Deterministic Routing capability.
Through this parameter, the service can specify which load balancing schema the service requires. If
this parameter is not specified, the service is routed using the basic round robin schema. This
parameter can be set to the following values:
headerRequest
This value applies the Header Request load balancing schema. Clients can call the API Gateway
and provide a special header with the value of the requested instanceId. The Gateway understands
this as a request from the client for routing to a specific instance. Clients have several possibilities
for understanding the topology of service instances, such as via the /eureka/apps endpoint on
the Discovery service, or the /gateway/services endpoint on the Gateway. In either case, the
information is provided. The client can then request a specific instance by using the special header
described below.
The header name is X-InstanceId , and the sample value is discoverable-
client:discoverableclient:10012 . This is identical to instanceId property in the
registration of the Discovery service.
In combination with enabling Routed instance header, the client can achieve sticky session
functionality. (The term, 'sticky session' refers to the feature of many load balancing solutions to
route the requests for a particular session to the same physical machine that serviced the first
request for that session). The benefit of this approach is that there is no session on the Gateway,
and the client ultimately decides whether or not to go to a specific instance. This method uses the
following sequence:
a. The client calls API Gateway and gets routed to a service.
b. The client reads the X-InstanceId header value from the response to understand the
service was routed to.
c. For all subsequent requests, the client provides the X-InstanceId header with previously
read value to get routed to the same instance of the service.
authentication
This value applies the Authentication load balancing schema. This is a sticky session functionality
based on the ID of the user. The user ID is understood from the Zowe SSO token on the client's
request. Requests without the token are routed in a round robin fashion. The user is first routed in a
round robin fashion, and then the routed instance Id is cached. The instance information is used for
subsequent requests to route the client to the cached target service instance. This session's
default expiration time is 8 hours. After the session expires, the process initiates again.
In default configuration, this cache is stored on each Gateway instance. You can choose to
distribute this cache between the Gateway's instances. To do so, follow the steps described in
Distributed load balancer cache.
customMetadata.apiml.lb.cacheRecordExpirationTimeInHours
When the property customMetadata.apiml.lb.type is set to authentication , the user can
also define the expiration time for the selected instance information that is cached. This property aims
to prevent any discrepancy which might occur if the required target server is no longer available. The
default value is 8 hours.
customMetadata.apiml.response.compress
When this parameter is set to true , API ML compresses content for all responses from this services
using GZIP. API ML also adds the Content-Encoding header with value gzip to responses.
customMetadata.apiml.response.compressRoutes
When the customMetadata.apiml.response.compress parameter is set to true , this
parameter allows services to further limit the compressed routes. The parameter accepts ant style
routes deliminated by , . The expectation is to provide the absolute paths.
If relative paths are provided, the starting / is added. If the beginning of the pattern does not need to
be specifically defined, use **/{pathYouAreInterestedIn}
Examples:
/service/**
customMetadata.apiml.headersToIgnore
(Optional) A service can specify headers that are removed from the request to the southbound service
by the Gateway. When this parameter is not set or is empty, no headers are removed. Multiple headers
can be removed, delimited by , .
API Versioning
Version: v2.0.x LTS
Introduction
API Catalog is the catalog of published API services and their associated documentation that have been
discovered or might get available if provisioned from the service catalog.
Application program interface (API) is a set of functions and procedures that allow the creation of
applications which access the features or data of other applications, service, or systems.
Our API Catalog contains APIs of services provided by implementations of mainframe products. Service can
be implemented by one or more service instances (that provide exactly the same service for high-availability
or scalability).
Versioning
APIs are versioned. Users of the API specify the major version ( v1 , v2 ). Backward incompatible changes
can be introduced only with changing major version. The service can provide multiple versions of the API (it
should provide v{n} and previous v{n-1} versions).
REST
In our case, we are speaking about REST APIs, which is a way how to access and manipulate textual
representations of Web resources using uniform and a predefined set of stateless operations. Usually via
HTTP(S) protocol and using JSON format. Resources are identified by their Uniform Resource Identifier
(URIs). The services are accessed via APIML gateway. Example of a URI:
https://host:10010/endevormfno/api/v1/ENWSQA01/packages/PACKAGETST
(https://{gatewayHost}:{port}/{serviceName}/api/v{majorVersion}/{resource} ) See
Components of URL for more information about the URL components of REST APIs.
Data Model
The following data model describes the model behind data about APIs and API services in the API Catalog.
The most of the data are provided during service registration. In case of the dynamic registration they are
provided by the service. Some of them are determined by the service developer (API-related), system
administrator (service-related), and some of them can be altered by user (catalog tiles - in future).
Service represents a collection of all service instances. The description and title are taken from the service
with highest version, in case if this is not clear then the latest registered wins. API clients are using a service
and the API gateway chooses what service instance will be accessed. The same API version can be
implemented by multiple services. Such services are not interchangeable because they contain or access
different data.
Service instance is a real implementation of a service. It contains the information about where service is
running. The information are provided by the system programmer. The default title and description is
provided by service developer. Instances are interchangeable and they are used to achieve high availability.
Route - Routes provide a way how service URLs are mapped to the gateway. Gateway translates an URL
based on the start of the base path on the gateway and translates it to a base path that is used in the URL to
access the service. The purpose is to make possible to access services via the gateway with a consistent
URL format no matter what is the format at the service.
Version type follows semantic versioning (http://semver.org/) and is used on multiple places.
Service and instance
Service and instance are overloaded words that have a different meaning in different contexts. This
document uses similar meaning as in (Netflix) Eureka discovery service. Service (or application) is a logical
entity that is comprised of functionality to access and manipulate specific resources. Instances are real
processes (servers) that provide that functionality to clients. Eureka is used in distributed software world
where a service is implemented by many instances. But z/OSMF software services registry defines software
service instance and software service templates in the context of the provisioning where "instances" are
provisioned from "templates". z/OSMF service instance does not need to correspond exactly to Eureka
service. z/OSMF service instance does need to provide REST API. z/OSMF service instance can be anything
that can be provisioned (e.g. multiple services that provide REST API, one API service, additional instance for
a service, just a container for other services, a database server, a database, a table...).
API Versioning
Service instances provide one or more different API versions (we take only one assumption: one service
instance will not provide two versions with the same major version, no other assumptions which versions will
be provided and how - e.g. an instance can provide only one version and another version will be provided by
different instance, other services can have instances that provide multiple versions).
The API user specifies only the major version in the URI. The API catalog needs to differentiate between
different full versions internally and able to return a specific full version or return documentation for the
highest version of the specified major version that is supported by all running services.
Guidelines:
The version of the API, not dependent on the product release
Two last versions are supported
Major version - specified by the user of the API in the URI - increased only when backward incompatible
change is introduced (it is rare because the REST APIs should be designed to allow extensibility)
Minor version - not specified in the URI but the user should know what is it, important to display the
correct level of documentation. Increased when the API is extended with a new feature (if you use a new
resource available in v1.2, the service has to provide at least v1.2, the request fails on v1.1). If there are
multiple instances of the services that have different minor versions, the service together will say that
has the lowest minor version (e.g instance A provide v1.3 and v2.2, instance B was not yet upgraded
and provides v1.2 and v2.1, then the service provides v1.2 and v2.1)
Patch version - not specified in the URI, no difference in the API, used only when the API documentation
is patched or a bug was fixed, there is no change in the API
Implement a new SAF IDT provider
Version: v2.0.x LTS
As a Zowe API ML user, you can use the API Gateway to apply your own SAF Identity Token (IDT) provider by
implementing an existing interface.
How to create a SAF IDT provider
How to integrate your extension with API ML
How to use an existing SAF IDT provider
How to use the SAF IDT provider
To configure SAF IDT on z/OS, see Configure signed SAF Identity tokens (IDT).
ZWE_configs_apiml_security_authorization_endpoint_url=https://${ZWE_haInstanc
e_hostname}:${GATEWAY_PORT}/zss/api/v1/saf/authenticate
ZWE_configs_apiml_security_authorization_endpoint_url=https://${ZWE_haInstanc
e_hostname}:${GATEWAY_PORT}/zss/api/v1/saf/verify
These ZSS endpoints are used by the SafRestAuthenticationService to generate and validate the
SAF token.
The following diagram illustrates how communication using the SAF IDT provider works:
Using the Caching Service
Version: v2.0.x LTS
As an API developer, you can use the Caching Service as a storage solution to enable resource sharing
between service instances, thereby ensuring High Availability of services. The Caching Service makes it
possible to store, retrieve, and delete data associated with keys. The Caching Service is designed to make
resource sharing possible for services that cannot be made stateless in two ways:
Using VSAM to store key/value pairs for production
Using InMemory
Note: In the current implementation of the Caching service, VSAM is required for the storage of key/value
pairs for production, as VSAM is a native z/OS solution for storing key/value pairs.
The Caching service is available only for internal Zowe applications, and is not exposed to the internet. The
Caching service supports a hot-reload scenario in which a client service requests all available service data.
Architecture
Storage methods
VSAM
Redis
Infinispan
InMemory
How to start the service
Methods to use the Caching service API
Configuration properties
Authentication
Architecture
A precondition to provide for High Availability of all components within Zowe is the requirement for these
components to be either stateless, or for the resources of the service to be offloaded to a location
accessible by all instances of the service. This condition also applies to recently started instances. Some
services, however, are not, and cannot be stateless. The Caching Service is designed for these types of
services.
REST APIs make it possible to create, delete, and update key-value pairs in the cache. Other APIs read a
specific key-value pair or all key-value pairs in the cache.
Information from cached APIs is stored as a JSON in the following format:
Storage methods
The Caching Service supports the following storage solutions, which provide the option to add custom
implementation.
VSAM
VSAM can be used to organize records into four types of data sets: key-sequenced, entry-sequenced,
linear, or relative record. Use VSAM as the storage solution for production. VSAM is used primarily for
applications and is not used for source programs, JCL, or executable modules. ISPF cannot be used to
display or edit VSAM files.
For more information about the VSAM storage access method, see Using VSAM as a storage solution
through the Caching service.
Redis
Redis is a common storage solution that runs outside of the z/OS platform. It can store data structures in
key-value pairs, has high-availability support, and is highly performant.
For more information about the Redis storage access method, see Using Redis as a storage solution through
the Caching service.
Infinispan
Infinispan is a storage solution that can also run on the z/OS platform. It can store data structures in key-
value pairs, has high-availability support, and is highly performant.
For more information about the Infinispan storage access method, see Using Infinispan as a storage solution
through the Caching service.
InMemory
TODO (add in memory procedure) The InMemory storage method is a method suitable for testing and
integration verification. Be sure not to use InMemory storage in production. The key/value pairs are stored
only in the memory of a single instance of the service. As such, the key/value pairs do not persist.
Configuration properties
The Caching Service uses the standard application.yml structure for configuration. The service is built
on top of the Spring enabler. As such, it dynamically registers to the API Mediation Layer. The service
appears in the API Catalog under the tile, "Zowe Applications".
caching.storage.size
This property limits the size of the Caching Service. In the VSAM and InMemory implementations, this
property represents the number of records stored before the eviction strategy is initiated. The default
value is 100 .
Note: Different implementations may implement this property differently.
caching.storage.evictionStrategy
This parameter specifies service behavior when the limit of records is reached. The default value is
Reject .
where:
reject
rejects the new item with the HTTP status code 507 when the service reaches the configured
maximum number
removeOldest
removes the oldest item in the cache when the service reaches the configured maximum number
Notes:
For more information about how to configure the Caching Service in the application.yml , see: Add
API Onboarding Configuration.
When using VSAM, ensure that you set the additional configuration parameters. For more information
about setting these parameters, see Using VSAM as a storage solution through the Caching service.
Authentication
Direct calls
Caching service requires TLS mutual authentication. This verifies authenticity of client. Calls without valid
client certificate generate 403 response code: Forbidden. This requirement is disabled when
VERIFY_CERTIFICATES=false in zowe-certificates.env configuration file.
Understanding VSAM
Virtual Storage Access Method (VSAM) is both a data set type, and a method for accessing
various user data types. Using VSAM as an access method makes it possible to maintain disk records in a
unique format that is not understandable by other access methods. VSAM is used primarily for applications,
and is not used for source programs, JCL, or executable modules. ISPF cannot be used to display or edit
VSAM files. VSAM can be used to organize records into four types of data sets: key-sequenced, entry-
sequenced, linear, or relative record. The API Caching service supports VSAM as a storage method to cache
APIs, and uses the Key Sequence Data Set (KSDS) dataset. Each record has one or more key fields,
and a record can be retrieved (or inserted) by the key value, thereby providing random access to data.
Records are of variable length. IMS™ uses KDSDs.
For more information about VSAM, see the IBM documentation.
VSAM configuration
Configure VSAM as a storage solution through the Caching service by modifying the following configuration
parameters in zowe.components.caching-service in zowe.yaml .
storage.vsam.name
The ZFile filename. The ZFile is a wrapper around a z/OS file based on the supplied name and options.
This method calls the fopen() and fldata() C-library routines. The ZFile filename should follow the
specific naming convention //'DATASET.NAME' .
storage.vsam.keyLength
Caching service
As an API developer, you can configure Redis as a storage solution through the Caching service. This article
describes how to configure your storage solution for Redis. You can configure Redis for high availability as
well as to replicate data to provide data durability and availability.
Understanding Redis
Redis configuration
Understanding Redis
Redis is an off-Z storage solution that stores data structures in key-value pairs. The API Caching service
uses hash sets, where each service storing data via the Caching service has its own hash, and each data
entry is a key-value entry within that service's Redis hash set.
For more information on Redis, see the official Redis documentation.
Redis replica instances
Redis can be used with one standalone instance. For data durability, however, a master/replica configuration
is recommended. Redis replicas automatically connect, and re-connect when necessary, to the master Redis
instance and attempt to be an exact copy of the master.
For more information on Redis replication and how to configure a replica instance, see the official Redis
Replication documentation.
Redis Sentinel
Redis Sentinel is a configuration that provides high availability for Redis master/replica instances. Sentinel
instances are used to monitor the master instance and use a quorum to automatically determine if a failover
procedure needs to occur from a master instance to one of its replicas.
For more information on Redis Sentinel and how to configure Sentinel instances with master/replica
instances, see the official Redis Sentinel documentation.
Redis SSL/TLS
Redis supports SSL/TLS starting in version 6. For information on enabled SSL/TLS with Redis, see the official
Redis TLS Support documentation.
Redis and Lettuce
The Lettuce library is used to connect to Redis. Lettuce uses Master or Sentinel node registration
information to automatically discover other instances. The IP address used to register between nodes is
therefore what Lettuce uses to connect to downstream replica instances. This means the IP address of
replica instances, or the IP address of both master and replica instances in the case of Sentinel topology,
must be accessible to the Caching service. For example, in a master/replica topology running in separate
Docker containers, the replica container's IP address needs to be accessible to the Caching service, rather
than only exposing a port.
Redis configuration
Configure Redis as a storage solution through the Caching service by setting the following environment
variables. Environment variables can be set by adding them to the zowe.components.caching-
service section of the zowe.yaml configuration file.
storage.redis.masterNodeUri
The URI used to connect to the Redis master instance in the form username:password@host:port .
The host section of the URI is mandatory
The port section is optional and if not included defaults to 6379 .
The username section is optional and if not included defaults to the Redis default username
default .
The password section is optional, but must be included if a username is included. If the password is
not set a username cannot be set.
storage.redis.timeout
The timeout duration in seconds for the Caching service when first connecting to Redis. Defaults to 60
seconds.
storage.redis.sentinel.masterInstance
The Redis master instance ID used by the Redis Sentinel instances. Required if Redis Sentinel is being
used.
storage.redix.sentinel.nodes
The URI used to connect to a Redis Sentinel instance in the form username:password@host:port .
The host section of the URI is mandatory
The port section is optional and if not included defaults to 6379 .
The password section is optional and defaults to no password.
To supply multiple Redis Sentinel URIs, concatenate the URIs with a comma , .
storage.redix.ssl.enabled
A flag indicating if Redis is being used with SSL/TLS support. Defaults to true .
storage.redis.ssl.keystore
The keystore file used to store the private key. Defaults to the Caching Service's keystore.
storage.redis.ssl.keystorePassword
The password used to unlock the keystore. Defaults to the Caching Service's keystore password.
storage.redis.ssl.truststore
The truststore file used to keep other parties public keys and certificates. Defaults to the Caching
Service's truststore.
storage.redix.ssl.truststorePassword
The password used to unlock the truststore. Defaults to the Caching Service's truststore password.
Overview
Version: v2.0.x LTS
You can create application plug-ins to extend the capabilities of the Zowe™ Application Framework. An
application plug-in is an installable set of files that present resources in a web-based user interface, as a set
of RESTful services, or in a web-based user interface and as a set of RESTful services.
Read the following topics to get started with extending the Zowe Application Framework.
Tutorials
The following tutorials are available in Github.
Stand up a local version of the Example Zowe Application Server
GITHUB REPO:
zlux-app-server
User Browser Workshop App
GITHUB REPO:
User Browser Workshop App
Internationalization in Angular Templates in Zowe Application Server
GITHUB SAMPLE REPO:
sample-angular-app (Internationalization)
App to app communication
GITHUB SAMPLE REPO :
sample-angular-app (App to app communication)
Using the Widgets Library
GITHUB SAMPLE REPO:
sample-angular-app (Widgets)
Configuring user preferences (configuration dataservice)
GITHUB SAMPLE REPO:
sample-angular-app (configuration dataservice)
Samples
Zowe allows extensions to be written in any UI framework through the use of an Iframe, or Angular and React
natively. In this section, code samples of various use-cases will be provided with install instructions.
TROUBLESHOOTING SUGGESTIONS:
If you are running into issues, try these suggestions:
Restart the Zowe Server/ VM.
Double check that the name in the plugins folder matches your identifier in
pluginsDefinition.json located in the Zowe root.
After logging into the Zowe desktop, use the Chrome or Firefox developer tools and navigate to the
"network" tab to see what errors you are getting.
Check each file with cat <filename> to be sure it wasn't corrupted while uploading. If files
were corrupted, try uploading using a different method like SCP or SFTP.
The Zowe™ Application Server ( zlux-app-server ) enables extensiblity with application Plugins.
Application Plugins are a subcategory of the unit of extensibility in the server called a plugin.
The files that define a Plugin are located in the pluginsDir directory.
pluginDefinition.json
This file describes an application Plugin to the Zowe Application Server. (A Plugin is the unit of extensibility
for the Zowe Application Server. An application Plugin is a Plugin of the type "Application", the most common
and visible type of Plugin.) A definition file informs the server whether the application Plugin has server-side
dataservices, client-side web content, or both. The attributes of this file are defined within the
pluginDefinition json-schema document
Documentation
In order for Zowe servers to pick up documentation to present to UIs, they must be in a uniform place.
The /doc folder of any Plugin can contain at its root any READMEs or documents that an administrator or
developer may care about when working with a Plugin for the first time.
The /doc/swagger folder on the other hand, will be used to store .yaml extension Swagger 2.0 files that
document the APIs of a Plugin's dataservices if they exist.
Other folders may exist, such as /doc/ui to document help behavior that may be shown in a UI, but is not
implemented at this time.
identifier: The unique string (commonly styled as a Java resource) of a Plugin, which must match what is in
the pluginDefinition.json file.
Application Dataservices
See Dataservices
You can build a plugin app by using the following steps as a model. Alternatively, you can follow the Sample
Angular App tutorial.
Plugins can have any build process desired as long as it doesn't conflict with the packaging structure. The
basic requirement for a plugin app is that static web content must be in a /web directory, and server and
other backend files must be in a /lib directory.
Before you can build a plugin app you must install all prerequisites.
Installing
Follow the steps described in Installing plugins to add your built plugin to the Zowe desktop.
Packaging
For more information on how to package your Zowe app, developers can see Plugins definition and
structure.
Installing Plugins
Version: v2.0.x LTS
Plugins can be added or removed from the Zowe App Server, as well as upgraded. There are two ways to do
these actions: By REST API or by filesystem. The instructions below assume you have administrative
permissions either to access the correct REST APIs or to have the necessary permissions to update server
directories & files.
NOTE: Plugins must be pre-built, and follow the directory structure, and have all dependencies met
to be successfully installed. Read the appServer or install-app log files within the Zowe instance's
<logDirectory> directory, (ex ~/.zowe/log/install-app.log ) if a plugin does not show in the
Zowe desktop, but has been installed successfully.
By filesystem
The App server uses directories of JSON files, described in the server configuration document. Defaults are
located in the folder zlux-app-server/defaults/plugins , but the server reads the list of plugins
instead from the instance directory, at <workspaceDirectory>/app-server/plugins (for example,
~/.zowe/workspace/app-server/plugins which includes JSON files describing where to find a
plugin. Adding or removing JSONs from this folder will add or remove plugins upon server restart, or you can
use REST APIs and cluster mode to add or remove plugins without restarting).
Adding/Installing
Plugins must be packaged as Components. You can install a plugin by running the component installer, zwe
components install . For more information, try the help command zwe components install --
help .
Removing
Plugins are hidden from the Desktop when a component is disabled. If a component is removed, the plugins
from the component will be removed too.
Upgrading
Currently, only one version of a plugin can exist per server. So, to upgrade, you either upgrade the plugin
within its pre-existing directory by rebuilding it (with more up to date code), or you alter the locator JSON of
that app to point to the content of the upgraded version.
Modifying without server restart (Exercise to the reader)
The server's reading of the locator JSONs and initializing of plugins only happens during bootstrapping at
startup. However, in cluster mode the bootstrapping happens once per worker process. Therefore, it is
possible to manage plugins without a server restart by killing & respawning all worker processes without
killing the cluster master process. This is what the REST API does, internally. To do this without the REST
API, it may be possible to script knowing the parent process ID, and running a kill command on all child
processes of the App server cluster process.
By REST API
The server REST APIs allow plugin management without restarting the server - you can add, remove, and
upgrade plugins in real-time. However, removal or upgrade must be done carefully as it can disrupt users of
those plugins.
This swagger file documents the REST API for plugin management
The API only works when RBAC is configured, and an RBAC-compatible security plugin is being used. An
example of this is zss-auth, and use of RBAC is described in this documentation and in the wiki.
NOTE: If you do not see your plugin in the Zowe desktop check the appServer and install-app log files within
the Zowe instance's <logDirectory> directory to troubleshoot the problem. If you are building your own
desktop extension then you need to pre-build your plugin with the correct directory structure, and meet all
dependencies.
Plugin management during development
Below are some tasks developers can do to work with plugins. These should not be done in production, as
plugins are managed automatically at the component level.
Installing
When running the app-server without zowe server infrastructure and tooling, it's still possible to install
plugins directly. To add or install a plugin, run the script zlux-app-server/bin/install-app.sh
providing the location to a plugin folder. For example:
./install-app.sh /home/john/zowe/sample-angular-app
Removing
To remove a plugin, locate the server's instance plugin directory <workspaceDirectory>/app-
server/plugins (for example, ~/.zowe/workspace/app-server/plugins ) and remove the locator
JSON that is associated with that plugin. Remove the plugin's content by deleting it from the file system if
applicable.
Embedding plugins
Version: v2.0.x LTS
Add these imports to a component where you want to embed another plugin:
Inject Angular2PluginEmbedActions into your component constructor:
In the component template prepare a container where you want to embed the plugin:
In the component class add a reference to the container:
In the component class add a reference to the embedded instance:
Everything is ready to start embedding, you just need to know the pluginId that you want to embed:
Dataservices are dynamic backend components of Zowe™ plug-in applications. You can optionally add them
to your applications to make the application do more than receive static content from the proxy server. Each
dataservice defines a URL space that the server can use to run extensible code from the application.
Dataservices are mainly intended to create REST APIs and WebSocket channels.
Defining dataservices
You define dataservices in the application's pluginDefinition.json file. Each application requires a
definition file to specify how the server registers and uses the application's backend. You can see an
example of a pluginDefinition.json file in the top directory of the sample-angular-app.
In the definition file is a top level attribute called dataServices , for example:
To define your dataservice, create a set of keys and values for your dataservice in the dataservices
array.
Schema
The documentation on dataservice types and parameters for each are specified within the
pluginDefinition.json json-schema document
Note: If you extracted your servlet contents from a .war file to a directory, the directory must have the
same name as the file would have had. Using the example above, javaservlet.war must be extracted
to a directory named \javaservlet .
Defining Java Application Server libraries
In the zlux-app-server/zluxserver.json file, use the example below to specify Java Application
Server library parameters:
Specify the following parameters in the languages.java object:
runtimes (object) - The name and location of a Java runtime that can be used by one or more
services. Used to load a Tomcat instance.
name (object) - The name of the runtime.
home (string) - The path to the runtime root. Must include /bin and /lib directories.
ports (array <number> )(Optional) - An array of port numbers that can be used by instances of Java
Application Servers or microservices. Must contain as many ports as distinct servers that will be
spawned, which is defined by other configuration values within languages.java . Either ports or
portRange is required, but portRange has a higher priority.
portRange (array <number> )(Optional) - An array of length 2, which contains a start number and
end number to define a range of ports to be used by instances of application servers or microservices.
You will need as many ports as distinct servers that will be spawned, which is defined by other
configuration values within languages.java . Either ports or portRange is required, but
portRange has a higher priority.
war (object) - Defines how the Zowe Application Server should handle java-war dataservices.
defaultGrouping (string)(Optional) - Defines how services should be grouped into instances of
Java Application Servers. Valid values: appserver or microservice . Default: appserver .
appserver means 1 server instance for all services. microservice means one server
instance per service.
pluginGrouping (array <object> )(Optional) - Defines groups of plug-ins to have their java-
war services put within a single Java Application Server instance.
plugins (Array <string> ) - Lists the plugins by identifier which should be put into this
group. Plug-ins with no java-war services are skipped. Being in a group excludes a plugin
from being handled by defaultGrouping .
runtime (string)(Optional) - States the runtime to be used by the Tomcat server instance, as
defined in languages.java.runtimes .
javaAppServer (object) - Java Application Server properties.
type (string) - Type of server. In this release, tomcat is the only valid value.
path (string) - Path of the server root, relative to zlux-app-server/lib . Must include
/bin and /lib directories.
Profiles cannot contain more than 246 characters. If the path section of an endpoint URL makes the profile
name exceed limit, the path is trimmed to only include elements that do not exceed the limit. For example,
imagine that each path section in this endpoint URL contains 64 characters:
/ZLUX/plugins/org.zowe.zossystem.subsystems/services/data/_current/aa..a/bb..b/cc
..c/dd..d
So aa..a is 64 "a" characters, bb..b is 64 "b" characters, and so on. The URL could then map to the
following example profile:
ZLUX.DEFAULT.SVC.ORG_ZOWE_ZOSSYSTEM_SUBSYSTEMS.DATA.GET.AA..A.BB..B
The profile ends at the BB..B section because adding CC..C would put it over 246 characters. So in this
example, all dataservice endpoints with paths that start with AA..A.BB..B are controlled by this one
profile.
To avoid this issue, we recommend that you maintain relatively short endpoint URL paths.
Dataservice APIs
Dataservice APIs can be categorized as Router-based or ZSS-based, and either WebSocket or not.
Router-based dataservices
Each Router dataservice can safely import Express, express-ws, and bluebird without requiring the modules
to be present, because these modules exist in the proxy server's directory and the NODE_MODULES
environment variable can include this directory.
HTTP/REST Router dataservices
Router-based dataservices must return a (bluebird) Promise that resolves to an ExpressJS router upon
success. For more information, see the ExpressJS guide on use of Router middleware: Using Router
Middleware.
Because of the nature of Router middleware, the dataservice need only specify URLs that stem from a root
'/' path, as the paths specified in the router are later prepended with the unique URL space of the
dataservice.
The Promise for the Router can be within a Factory export function, as mentioned in the
pluginDefinition specification for routerFactory above, or by the module constructor.
Documenting dataservices
It is recommended that you document your RESTful application dataservices in OpenAPI (Swagger)
specification documents. The Zowe Application Server hosts Swagger files for users to view at runtime.
To document a dataservice, take the following steps:
. Create a .yaml or .json file that describes the dataservice in valid Swagger 2.0 format. Zowe
validates the file at runtime.
. Name the file with the same name as the dataservice. Optionally, you can include the dataservice
version number in the format: <name>_<number> . For example, a Swagger file for a dataservice
named user must be named either users.yaml or users_1.1.0.yaml .
. Place the Swagger file in the /doc/swagger directory below your application plug-in directory, for
example:
/sample-angular-app/doc/swagger/hello.yaml
This topic describes the web service API for user authentication.
The authentication mechanism of the ZLUX server allows for an administrator to gate access to services by
a given auth handler, while on the user side the authentication structure allows for a user to login to one or
more endpoints at once provided they share the same credentials given.
Handlers
The auth handlers are a type of zlux server plugin (type=nodeAuthentication) which are categorized by
which kind of authentication they can provide. Whether it's to z/OS via type=saf or theoretical
authentication such as Facebook or Amazon cloud, the handler API is abstract to handle different types of
security needs.
Handler installation
Auth handler plugins are installed like any other plugin.
Handler configuration
The server top-level configuration attribute dataserviceAuthentication states properties about
which plugins to use and how to use them.
For example,
The dataserviceAuthentication attribute has the following properties:
defaultAuthentication: Which authentication category to choose by default, in case multiple are
installed.
rbac: Whether or not the server should do authority checks in addition to authentication checks when
requesting a dataservice.
Handler context
These plugins are given an object, context , in the constructor. Context has attributes to help the plugin
know about the server configuration, provide a named logger, and more. The parameters include:
pluginDefinition: The object describing the plugin's definition file
pluginConf: An object that gives the plugin its configuration from the Config Service internal storage
serverConfiguration: The object describing the server's current configuration
context: An object holding contextual objects
logger: A logger with the name of the plugin's ID
Handler capabilities
A handler's constructor should return a capabilities object that states which capabilities the plugin has. If a
capabilities object is not returned, it is assumed that only the authenticate and authorize functions are
implemented, for backward compatibility support. The capabilities object should include:
canGetCategories: (true/false) If the getCategories() function exists, which returns a string array of
categories of auth the plugin can support given the server context. This is useful if the plugin can
support multiple categories conditionally.
canLogout: (true/false) If the logout(request, sessionState) function exists. Used to clear state and
cookies when a session should be ended.
canGetStatus: (true/false) If the getStatus(sessionState) function exists
canRefresh: (true/false) If the refreshStatus(request, sessionState) function exists, which is used to
renew a session that has an expiration limit.
canAuthenticate: (true/false) If the authenticate(request, sessionState):Promise function exists
(Required, assumed)
canAuthorized: (true/false) If the *authorized(request, sessionState, options) function exists (Required,
assumed)
haCompatible: (true/false) Used to be sure that a plugin has no state that would be lost in a high
availibility environment.
canGenerateHaSessionId: (true/false) If generateHaSessionId(request) exists, which is used to set the
value used for an app-server session for a user. When not in a high availability environment, the app-
server generates its own session ID.
canResetPassword: (true/false) If passwordRest(request, sessionState) exists
proxyAuthorizations: (true/false) If the addProxyAuthorizations(req1, req2Options, sessionState)
function exists
Examples
sso-auth, which conditionally implements the saf, zss, and apiml security types:
https://github.com/zowe/zlux-server-framework/tree/v2.x/master/plugins/sso-auth
High availability (HA)
Some auth handlers are not capable of working in a high availability environment. In these environments,
there can be multiple zlux servers and there may not be a safe and secure way to share session state data.
This extends to the zlux server cookie as well, which is not sharable between multiple servers by default.
Therefore, high availability has the following two requirements from an auth handler plugin: 1) The plugin
must state that it is HA capable by setting the capability flag haCompatible=true , usually indicating that
the plugin has no state data. 2) A plugin must have capability canGenerateHaSessionId=true so that
the zlux server cookie is sharable between multiple zlux servers.
REST API
Check status
Returns the current authentication status of the user to the caller.
Response example:
Every key in the response object is a registered auth type. The value object is guaranteed to have a Boolean
field named "authenticated" which indicates that at least one plugin in the category was able to authenticate
the user.
Each item also has a field called "plugins", where every property value is a plugin-specific object.
Authenticate
Authenticates the user against authentication back-ends.
Request body example:
The categories parameter is optional. If omitted, all auth plugins are invoked with the username and
password Response example:
First-level keys are authentication categories or types. "success" means that all of the types requested have
been successful. For example typeA successful AND typeB successful AND ...
Second-level keys are auth plugin IDs. "success" on this level means that there's at least one successful
result in that auth type. For example, pluginA successful OR pluginB successful OR ...
You can internationalize Zowe™ application plug-ins using Angular and React frameworks. Internationalized
applications display in translated languages and include structures for ongoing translation updates.
The steps below use the Zowe Sample Angular Application and Zowe Sample React Application as
examples. Your applications might have slightly different requirements, for example the React Sample
Application requires the react-i18next library, but your application might require a different React library.
For detailed information on Angular or React, see their documentation. For detailed information on specific
internationalization libraries, see their documentation. You can also reference the Sample Angular
Application internationalization tutorial, and watch a video on how to internationalize your Angular
application.
After you internationalize your application, you can view it by following steps in Changing the desktop
language.
. In the directory that contains your index.js file, create an i18n.js file and add the translated
content, for example:
. Import the i18n file from the previous step into index.js file so that you can use it elsewhere, for
example:
. To internationalize a component, include the useTranslation hook and reference it to substitute
translation keys with their translated values. For example:
. Add the translated values to the translation file. For example, the German translation file example,
pluginDefinition.i18n.de.json , would look like this:
. Create logic to copy the translation files to the web/assets directory during the webpack process.
For example, in the Sample Angular Application the following JavaScript in the
webClient/webpack.config.js file copies files to the web/assets directory:
Zowe Desktop and window management
Version: v2.0.x LTS
Plug-in management
Application plug-ins can gain insight into the environment in which they were spawned through the Plugin
Manager. Use the Plugin Manager to determine whether a plug-in is present before you act upon the
existence of that plug-in. When the Zowe Desktop is running, you can access the Plugin Manager through
ZoweZLUX.PluginManager
The following are the functions you can use on the Plugin Manager:
getPlugin(pluginID: string)
Accepts a string of a unique plug-in ID, and returns the Plugin Definition Object
(DesktopPluginDefinition) that is associated with it, if found.
Application management
Application plug-ins within a Window Manager are created and acted upon in part by an Application
Manager. The Application Manager can facilitate communication between application plug-ins, but formal
application-to-application communication should be performed by calls to the Dispatcher. The Application
Manager is not normally directly accessible by application plug-ins, instead used by the Window Manager.
The following are functions of an Application Manager:
Function Description
spawnApplication(plugin:
Opens an application instance into the Window
DesktopPluginDefinition,
Manager, with or without context on what
launchMetadata: any):
Promise<MVDHosting.InstanceId>;
actions it should perform after creation.
Viewport Manager
Viewports encapsulate an instance of an application plug-in's web content, but otherwise do not add to the
UI (they do not present Chrome as a Window does). Each instance of an application plug-in is associated
with a viewport, and operations to act upon a particular application plug-in instance should be done by
specifying a viewport for an application plug-in, to differentiate which instance is the target of an action.
Actions performed against viewports should be performed through the Viewport Manager.
The following are functions of the Viewport Manager:
Function Description
createViewport(providers: Creates a viewport into which an
ResolvedReflectiveProvider[]): application plug-in's webcontent can be
MVDHosting.ViewportId; embedded.
registerViewport(viewportId:
Registers a previously created viewport
MVDHosting.ViewportId, instanceId:
MVDHosting.InstanceId): void;
to an application plug-in instance.
Function Description
destroyViewport(viewportId: Removes a viewport from the Window
MVDHosting.ViewportId): void; Manager.
`getApplicationInstanceId(viewportId: null;`
MVDHosting.ViewportId): MVDHosting.InstanceId
Injection Manager
When you create Angular application plug-ins, they can use injectables to be informed of when an action
occurs. iframe application plug-ins indirectly benefit from some of these hooks due to the wrapper acting
upon them, but Angular application plug-ins have direct access.
The following topics describe injectables that application plug-ins can use.
Plug-in definition
Provides the plug-in definition that is associated with this application plug-in. This injectable can be used to
gain context about the application plug-in. It can also be used by the application plug-in with other
application plug-in framework objects to perform a contextual action.
Logger
Provides a logger that is named after the application plug-in's plugin definition ID.
Launch Metadata
If present, this variable requests the application plug-in instance to initialize with some context, rather than
the default view.
Viewport Events
Presents hooks that can be subscribed to for event listening. Events include:
resized: Subject<{width: number, height: number}>
Fires when the viewport's size has changed.
Window Events
Presents hooks that can be subscribed to for event listening. The events include:
Event Description
maximized: Subject<void> Fires when the Window is maximized.
minimized: Subject<void> Fires when the Window is minimized.
Fires when the Window is restored from a
restored: Subject<void>
minimized state.
moved: Subject<{top: number, left:
number}>
Fires when the Window is moved.
Window Actions
An application plug-in can request actions to be performed on the Window through the following:
Item Description
Closes the Window of the application plug-in
close(): void
instance.
Maximizes the Window of the application plug-
maximize(): void
in instance.
Item Description
Minimizes the Window of the application plug-in
minimize(): void
instance.
Restores the Window of the application plug-in
restore(): void
instance from a minimized state.
setTitle(title: string):void Sets the title of the Window.
setPosition(pos: {top: number, left:
Sets the position of the Window on the page
number, width: number, height: number}):
void
and the size of the window.
. Then inside the constructor, check that window actions exist and then execute the action if
(this.windowActions) { this.windowActions.maximize(); }
. Depending on your App layout, certain UI elements may not have loaded so to wait for them to load, one
may want to use something like Angular's NgOnInit directive.
React
. Similar to how we do things in Angular, except the Window Actions (& other Zowe resources) are
located in the resources object. So if we were using a React.Component, we could have a
constructor with constructor(props){ super(props); ... }
. Then accessing Window Actions would be as simple as this.props.resources.windowActions
IFrames
. Iframes are similar to Angular & React, but require a different import step. Instead to use Window
Actions (& other Zowe resources), we have to import the Iframe adapter. The Iframe adapter is located
in zlux-app-manager/bootstrap/web/iframe-adapter.js so something like a relative path in
my JS code will suffice,
<script type="text/javascript" src="../../../org.zowe.zlux.bootstrap/web/iframe-
adapter.js"></script>
The Configuration Dataservice is an essential component of the Zowe™ Application Framework, which acts
as a JSON resource storage service, and is accessible externally by REST API and internally to the server by
dataservices.
The Configuration Dataservice allows for saving preferences of applications, management of defaults and
privileges within a Zowe ecosystem, and bootstrapping configuration of the server's dataservices.
The fundamental element of extensibility of the Zowe Application Framework is a plug-in. The Configuration
Dataservice works with data for plug-ins. Every resource that is stored in the Configuration Service is stored
for a particular plug-in, and valid resources to be accessed are determined by the definition of each plug-in
in how it uses the Configuration Dataservice.
The behavior of the Configuration Dataservice is dependent upon the Resource structure for a plug-in. Each
plug-in lists the valid resources, and the administrators can set permissions for the users who can view or
modify these resources.
. Resource Scope
. REST API
i. REST Query Parameters
ii. REST HTTP Methods
a. GET
b. PUT
c. DELETE
iii. Administrative Access & Group
. App API
. Internal and Bootstrapping
. Packaging Defaults
. Plugin Definition
. Aggregation Policies
. Examples
Resource Scope
Data is stored within the Configuration Dataservice according to the selected Scope. The intent of Scope
within the Dataservice is to facilitate company-wide administration and privilege management of Zowe data.
When a user requests a resource, the resource that is retrieved is an override or an aggregation of the
broader scopes that encompass the Scope from which they are viewing the data.
When a user stores a resource, the resource is stored within a Scope but only if the user has access
privilege to update within that Scope.
Scope is one of the following:
Plugin
Configuration defaults that come with a plugin. Cannot be modified.
Product
Configuration defaults that come with the product. Cannot be modified.
Site
Data that can be used between multiple instances of the Zowe Application Server.
Instance
Data within an individual Zowe Application Server.
Group
Data that is shared between multiple users in a group.(Pending)
User
Data for an individual user.(Pending)
Note: While Authorization tuning can allow for settings such as GET from Instance to work without login,
User and Group scope queries will be rejected if not logged in due to the requirement to pull resources from
a specific user. Because of this, User and Group scopes will not be functional until the Security Framework is
merged into the mainline.
Where Plugin is the broadest scope and User is the narrowest scope.
When you specify Scope User, the service manages configuration for your particular username, using the
authentication of the session. This way, the User scope is always mapped to your current username.
Consider a case where a user wants to access preferences for their text editor. One way they could do this is
to use the REST API to retrieve the settings resource from the Instance scope.
The Instance scope might contain editor defaults set by the administrator. But, if there are no defaults in
Instance, then the data in Group and User would be checked.
Therefore, the data the user receives would be no broader than what is stored in the Instance scope, but
might have only been the settings they saved within their own User scope (if the broader scopes do not have
data for the resource).
Later, the user might want to save changes, and they try to save them in the Instance scope. Most likely, this
action will be rejected because of the preferences set by the administrator to disallow changes to the
Instance scope by ordinary users.
REST API
When you reach the Configuration Service through a REST API, HTTP methods are used to perform the
desired operation.
The HTTP URL scheme for the configuration dataservice is:
<Server>/plugins/com.rs.configjs/services/data/<plugin
ID>/<Scope>/<resource>/<optional subresources>?<query>
Where the resources are one or more levels deep, using as many layers of subresources as needed.
Think of a resource as a collection of elements, or a directory. To access a single element, you must use the
query parameter "name="
REST query parameters
Name (string)
Get or put a single element rather than a collection.
Recursive (boolean)
When performing a DELETE, specifies whether to delete subresources too.
Listing (boolean)
When performing a GET against a resource with content subresources, listing=true will provide the
names of the subresources rather than both the names and contents.
REST HTTP methods
Below is an explanation of each type of REST call.
Each API call includes an example request and response against a hypothetical application called the "code
editor".
GET
GET /plugins/com.rs.configjs/services/data/<plugin>/<scope>/<resource>?name=
<element>
This returns JSON with the attribute "content" being a JSON resource that is the entire configuration
that was requested. For example:
/plugins/com.rs.configjs/services/data/org.openmainframe.zowe.codeeditor/user
/sessions/default?name=tabs
Stores a single element (must be a JSON object {...}) within the requested scope, ignoring aggregation
policies, depending on the user privilege. For example:
/plugins/com.rs.configjs/services/data/org.openmainframe.zowe.codeeditor/user/ses
sions/default?name=tabs
Body:
Response:
DELETE
DELETE /plugins/com.rs.configjs/services/data/<plugin>/<scope>/<resource>?
recursive=true
Deletes all files in all leaf resources below the resource specified.
DELETE /plugins/com.rs.configjs/services/data/<plugin>/<scope>/<resource>?name=
<element>
Application API
Retrieves and stores configuration information from specific scopes.
Note: This API should only be used for configuration administration user interfaces.
ZLUX.UriBroker.pluginConfigForScopeUri(pluginDefinition: ZLUX.Plugin, scope:
string, resourcePath:string, resourceName:string): string;
A shortcut for the preceding method, and the preferred method when you are retrieving configuration
information, is simply to "consume" it. It "asks" for configurations using the User scope, and allows the
configuration service to decide which configuration information to retrieve and how to aggregate it. (See
below on how the configuration service evaluates what to return for this type of request).
ZLUX.UriBroker.pluginConfigUri(pluginDefinition: ZLUX.Plugin,
resourcePath:string, resourceName:string): string;
Internal and bootstrapping
Some dataservices within plug-ins can take configuration that affects their behavior. This configuration is
stored within the Configuration Dataservice structure, but it is not accessible through the REST API.
Within the instance configuration directory of a zLUX installation, each plugin may optionally have an
_internal directory. An example of such a path would be:
~/.zowe/workspace/app-server/ZLUX/pluginStorage/<pluginName>/_internal
plugin : Configuration resources that are visible to all services in the plug-in.
The JSON contents within these directories are provided as Objects to dataservices through the dataservice
context Object.
Packaging Defaults
The best way to provide default settings for a plugin is to include it as part of the plugin's package.
It's easy to distribute to users, requires no configuration steps, and is read-only from the server.
To package, all content must be stored within the /config/storageDefaults directory of your plugin.
Within, non-leaf resources are folders, and leaf resources are files, regardless of JSON or binary.
The _internal folder and content is also permitted.
Plug-in definition
Because the Configuration Dataservices stores data on a per-plug-in basis, each plug-in must define their
resource structure to make use of the Configuration Dataservice. The resource structure definition is
included in the plug-in's pluginDefinition.json file.
For each resource and subresource, you can define an aggregationPolicy to control how the data of a
broader scope alters the resource data that is returned to a user when requesting a resource from a
narrower Scope.
For example:
Aggregation policies
Aggregation policies determine how the Configuration Dataservice aggregates JSON objects from different
Scopes together when a user requests a resource. If the user requests a resource from the User scope, the
data from the User scope might replace or be merged with the data from a broader scope such as Instance,
to make a combined resource object that is returned to the user.
Aggregation policies are defined by a plug-in developer in the plug-in's definition for the Configuration
Service, as the attribute aggregationPolicy within a resource.
The following policies are currently implemented:
NONE: If the Configuration Dataservice is called for Scope User, only user-saved settings are sent,
unless there are no user-saved settings for the query, in which case the dataservice attempts to send
data that is found at a broader scope.
OVERRIDE: The Configuration Dataservice obtains data for the resource that is requested at the
broadest level found, and joins the resource's properties from narrower scopes, overriding broader
attributes with narrower ones, when found.
Examples
zlux-app-manager VT Terminal App
URI Broker
Version: v2.0.x LTS
The URI Broker is an object in the application plug-in web framework, which facilitates calls to the Zowe™
Application Server by constructing URIs that use the context from the calling application plug-in.
. Accessing the URI Broker
i. Natively
ii. In an iframe
. Functions
i. Accessing an application plug-in's dataservices
a. HTTP dataservice URI
b. Websocket dataservice URI
ii. Accessing the application plug-in's configuration resources
a. Standard configuration access
b. Scoped configuration access
iii. Accessing static content
iv. Accessing the application plug-in's root
v. Server queries
a. Accessing list of plugins
In an iframe:
window.parent.ZoweZLUX.uriBroker
Functions
The URI Broker builds the following categories of URIs depending upon what the application plug-in is
designed to call.
Accessing an application plug-in's dataservices
Dataservices can be based on HTTP (REST) or Websocket. For more information, see Dataservices.
HTTP Dataservice URI
pluginRESTUri(plugin:ZLUX.Plugin, serviceName: string, relativePath:string):
string
Returns: A URI for accessing the requested resource under the user's storage.
Scoped configuration access
pluginConfigForScopeUri(pluginDefinition: ZLUX.Plugin, scope: string,
resourcePath:string, resourceName?:string): string
Returns: A URI, which when accessed returns the list of existing plug-ins on the server by type, such as
"Application" or "all".
Application-to-application communication
Version: v2.0.x LTS
Zowe™ application plug-ins can opt-in to various application framework abilities, such as the ability to have a
Logger, the ability to use a URI builder utility, and more.
The ability for one appliccation plug-in to communicate with another is an ability that is unique to Zowe
environments with multiple application plug-ins. The application framework provides constructs that
facilitate this ability.
The constructs are: the Dispatcher, Actions, Recognizers, Registry, and the features that utilize them such as
the framework's Context menu.
. Why use application-to-application communication?
. Actions
. Recognizers
. Dispatcher
. URI Parameters
Saved on system
Actions can be stored in JSON files that are loaded at login. The JSON structure is as follows:
Recognizers
Actions are meant to be invoked when certain conditions are met. For example, you do not need to open a
messaging window if you have no one to message. Recognizers are objects within the application framework
that use the context that the application plug-in provides to determine if there is a condition for which it
makes sense to execute an Action. Each recognizer has statements about what condition to recognize, and
when that statement is met, which Action can be executed at that time. The invocation of the Action is not
handled by the Recognizer; it simply detects that an Action can be taken.
Recognition clauses
Recognizers associate a clause of recognition with an action, as you can see from the following class:
A clause, in turn, is associated with an operation, and the subclauses upon which the operation acts. The
following operations are supported:
Loading Recognizers at runtime
You can add a Recognizer to the application plug-in environment in one of two ways: by loading from
Recognizers saved on the system, or by adding them dynamically.
Dynamically
You can call the Dispatcher method, addRecognizer(predicate:RecognitionClause,
actionID:string):void
Saved on system
Recognizers can be stored in JSON files that are loaded at login. The JSON structure is as follows:
clause can take on one of two shapes:
Or,
Where this one can again, have subclauses.
Recognizer example
Recognizers can be as simple or complex as you write them to be, but here is an example to illustrate the
mechanism:
In this case, the Recognizer detects whether it is possible to run the org.zowe.explorer.openmember
Action when the TN3270 Terminal application plug-in is on the screen ISRUDSM (an ISPF panel for browsing
PDS members).
Dispatcher
The dispatcher is a core component of the application framework that is accessible through the Global
ZLUX Object at runtime. The Dispatcher interprets Recognizers and Actions that are added to it at runtime.
You can register Actions and Recognizers on it, and later, invoke an Action through it. The dispatcher
handles how the Action's effects should be carried out, acting in combination with the Window Manager and
application plug-ins to provide a channel of communication.
Registry
The Registry is a core component of the application framework, which is accessible through the Global
ZLUX Object at runtime. It contains information about which application plug-ins are present in the
environment, and the abilities of each application plug-in. This is important to application-to-application
communication, because a target might not be a specific application plug-in, but rather an application plug-
in of a specific category, or with a specific featureset, capable of responding to the type of Action requested.
The Zowe Application Framework provides the following shared resource functions through a ZoweZLUX
object: pluginManager , uriBroker , dispatcher , logger , registry ,
notificationManager , and globalization
Like REACT and Angular apps, IFrame apps can use the ZoweZLUX object to communicate with the
framework and other apps. To enable communication in an IFrame app, you must add the following
javascript to your app, for example in your index.html file:
logger.js is the javascript version of logger.ts and is capable of the same functions, including
access to the Logger and ComponentLogger classes. The Logger class determines the behavior of
all the ComponentLoggers created from it. ComponentLoggers are what the user implements to
perform logging.
Iframe-adapter.js is designed to mimic the ZoweZLUX object that is available to apps within the
virtual-desktop, and serves as the middle-man for communication between IFrame apps and the Zowe
desktop.
You can see an implementation of this functionality in the sample IFrame app.
The version of ZoweZLUX adapted for IFrame apps is not complete and only implements the functions
needed to allow the Sample IFrame App to function. The notificationManager , logger ,
globalization , dispatcher , windowActions , windowEvents , and viewportEvents are fully
implemented. The pluginManager and uriBroker are only partially implemented. The registry is
not implemented.
Unlike REACT and Angular apps, in IFrame apps the ZoweZLUX and initialization objects communicate with
Zowe using the browser's onmessage and postmessage APIs. That means that communication operations
are asynchronous, and you must account for this in your app, for example by using Promise objects and
await or then functions.
Error reporting UI
Version: v2.0.x LTS
The zLUX Widgets repository contains shared widget-like components of the Zowe™ Desktop, including
Button, Checkbox, Paginator, various pop-ups, and others. To maintain consistency in desktop styling across
all applications, use, reuse, and customize existing widgets to suit the purpose of the application's function
and look.
Ideally, a program should have little to no logic errors. Once in a while a few occur, but more commonly an
error occurs from misconfigured user settings. A user might request an action or command that requires
certain prerequisites, for example: a proper ZSS-Server configuration. If the program or method fails, the
program should notify the user through the UI about the error and how to fix it. For the purposes of this
discussion, we will use the Workflow application plug-in in the zlux-workflow repository.
ZluxPopupManagerService
The ZluxPopupManagerService is a standard popup widget that can, through its reportError()
method, be used to display errors with attributes that specify the title or error code, severity, text, whether it
should block the user from proceeding, whether it should output to the logger, and other options you want
to add to the error dialog. ZluxPopupManagerService uses both ZluxErrorSeverity and
ErrorReportStruct .
ZluxErrorSeverity
ZluxErrorSeverity classifies the type of report. Under the popup-manager, there are the following
types: error, warning, and information. Each type has its own visual style. To accurately indicate the type of
issue to the user, the error or pop-up should be classified accordingly.
ErrorReportStruct
ErrorReportStruct contains the main interface that brings the specified parameters of
reportError() together.
Implementation
Import ZluxPopupManagerService and ZluxErrorSeverity from widgets. If you are using
additional services with your error prompt, import those too (for example, LoggerService to print to the
logger or GlobalVeilService to create a visible semi-transparent gray veil over the program and pause
background tasks). Here, widgets is imported from node_modules\@zlux\ so you must ensure zLUX
widgets is used in your package-lock.json or package.json and you have run npm install .
import { ZluxPopupManagerService, ZluxErrorSeverity } from '@zlux/widgets';
Declaration
Create a member variable within the constructor of the class you want to use it for. For example, in the
Workflow application plug-in under \zlux-workflow\src\app\app\zosmf-server-
config.component.ts is a ZosmfServerConfigComponent class with the pop-up manager service
variable. To automatically report the error to the console, you must set a logger.
Usage
Now that you have declared your variable within the scope of your program's class, you are ready to use the
method. The following example describes an instance of the reload() method in Workflow that catches
an error when the program attempts to retrieve a configuration from a configService and set it to the
program's this.config . This method fails when the user has a faulty zss-Server configuration and the
error is caught and then sent to the class' popupManager variable from the constructor above.
Here, the errorMessage clearly describes the error with a small degree of ambiguity as to account for all
types of errors that might occur from that method. The specifics of the error are then generated dynamically
and are printed with the err.toString() , which contains the more specific information that is used to
pinpoint the problem. The this.popupManager.report() method triggers the error prompt to display.
The error severity is set with ZluxErrorSeverity.ERROR and the err.status.toString()
describes the status of the error (often classified by a code, for example: 404 ). The optional parameters in
options specify that this error will block the user from interacting with the application plug-in until the
error is closed or it until goes away on its own. globalVeilService is optional and is used to create a
gray veil on the outside of the program when the error is caused. You must import globalVeilService
separately (see the zlux-workflow repository for more information).
HTML
The final step is to have the recently created error dialog display in the application plug-in. If you do
this.popupManager.report() without adding the component to your template, the error will not be
displayed. Navigate to your component's .html file. On the Workflow application plug-in, this file will be in
\zlux-workflow\src\app\app\zosmf-server-config.component.html and the only item left is
to add the popup manager component alongside your other classes.
<zlux-popup-manager></zlux-popup-manager>
So now when the error is called, the new UI element should resemble the following:
The order in which you place the pop-up manager determines how the error dialog will overlap in your UI. If
you want the error dialog to overlap other UI elements, place it at the end of the .html file. You can also
create custom styling through a CSS template, and add it within the scope of your application plug-in.
Logging utility
Version: v2.0.x LTS
The zlux-shared repository provides a logging utility for use by dataservices and web content for an
application plug-in.
. Logging Objects
. Logger IDs
. Accessing Logger Objects
i. Logger
a. App Server
b. Web
ii. Component Logger
a. App Server
b. Web
. Logger API
. Component Logger API
. Log Levels
. Logging Verbosity
i. Configuring Logging Verbosity
a. Server Startup Logging Configuration
. Using log message IDs
Logging objects
The logging utility is based on the following objects:
Component Loggers: Objects that log messages for an individual component of the environment, such
as a REST API for an application plug-in or to log user access.
Destinations: Objects that are called when a component logger requests a message to be logged.
Destinations determine how something is logged, for example, to a file or to a console, and what
formatting is applied.
Logger: Central logging object, which can spawn component loggers and attach destinations.
Logger IDs
Because Zowe™ application plug-ins have unique identifiers, both dataservices and an application plug-in's
web content are provided with a component logger that knows this unique ID such that messages that are
logged can be prefixed with the ID. With the association of logging to IDs, you can control verbosity of logs
by setting log verbosity by ID.
Web
(Angular App Instance Injectible). See Logger in Zowe Desktop and window management.
(others) Browsers use window as the global object, so the logger is attached to:
window.COM_RS_COMMON_LOGGER
Component logger
Component loggers are created from the core logger object, but when working with an application plug-in,
allow the application plug-in framework to create these loggers for you. An application plug-in's component
logger is presented to dataservices or web content as follows.
App Server
See Router Dataservice Context in the topic Dataservices.
Logger API
The following constants and functions are available on the central logging object.
Attribute Type Description Arguments
Returns an existing
logger of this name, or
creates a new
component logger if
no logger of the
makeComponentLogger function specified name exists componentIDString
- Automatically done
by the application
framework for
dataservices and web
content
Sets the verbosity of ,
setLogLevelForComponentName function an existing component componentIDString
logger logLevel
Log Levels
An enum, LogLevel , exists for specifying the verbosity level of a logger. The mapping is:
Level Number
CRITICAL 0
Level Number
WARNING 1
INFO 2
DEBUG 3
FINER 4
TRACE 5
Note: The default log level for a logger is INFO.
Logging verbosity
Using the component logger API, loggers can dictate at which level of verbosity a log message should be
visible. You can configure the server or client to show more or less verbose messages by using the core
logger's API objects.
Example: You want to set the verbosity of the org.zowe.foo application plug-in's dataservice, bar to show
debugging information.
logger.setLogLevelForComponentName('org.zowe.foo.bar',LogLevel.DEBUG)
Either will work, but path helps you better separate your content from content others use by placing it in a
folder that you can have stricter permissions on.
If you need to know more about certain commands, you can use the help command for any.
conda create --help
Conda will detect whether the parameter is a path or a nickname, so this command works for both.
Finally, you can view the Conda environment and other information by checking "info"
conda info
but it's important to note that because any type of software can be installed through Conda, you probably
want to search through a detailed view to help identify which ones are meant for Zowe, or use Channels that
are distinctly for Zowe so that you can get packages that are strictly for Zowe.
conda search --info anything_you_want
If the Zowe environment variables are set, such a package may automatically register Plugins into the Zowe
instance of your choice.
Zowe plugin configuration
Aside from possible automation during install and uninstall, Conda does not manage Zowe, its configuration,
or configuration of the Plugins. However, Conda does manage the package files, and therefore you can do
additional Zowe tasks on the Plugins by going into the Conda environment. Zowe Plugins are intended to be
found in a standardized location in the Conda environment,
/opt/zowe/plugins
This folder contains Plugins, which in turn contain sub-folders that are the Zowe components that they
utilize. If a plugin uses multiple Zowe components, its contents could be found within multiple component
folders.
/opt/zowe/plugins/my_plugin/app-server /opt/zowe/plugins/my_plugin/cli
You can extend the possibilities of Zowe Explorer by creating you own extensions. For more information on
how to create your own Zowe Explorer extension, see Extensions for Zowe Explorer.
Developing for Zowe SDKs
Version: v2.0.x LTS
The Zowe SDKs are open source. You can contribute to add features, enhancements, and bug fixes to the
source code.
The functionality is currently limited to the interfaces provided by IBM z/OSMF. As a plug-in developer, you
can enhance the SDK by creating a packages that exposes programmatic APIs for your service.
For detailed contribution guidelines, see the following documents:
Node.js SDK guidelines
Coming soon! Python SDK guidelines
Zowe Conformance Program
Version: v2.0.x LTS
Introduction
Administered by the Open Mainframe Project, the Zowe™ Conformance Program aims to give users the
confidence that when they use a product, app, or distribution that leverages Zowe, they can expect a high
level of common functionality, interoperability, and user experience.
Conformance provides Independent Software Vendors (ISVs), System Integrators (SIs), and end users
greater confidence that their software will behave as expected. Just like Zowe, the Zowe Conformance
Program will continue to evolve and is being developed by committers and contributors in the Zowe
community.
As vendors, you are invited to submit conformance testing results for review and approval by the Open
Mainframe Project. If your company provides software based on Zowe, you are encouraged to get certified
today.
How to participate
To participate in the Zowe Conformance Program, follow the process on the Zowe Conformance Program
website. You can also find a list of products that have earned Zowe Conformant status.
To learn the criteria of achieving Zowe conformance for an offering, see Zowe Conformance Criteria.
To isolate and resolve Zowe™ problems, you can use the troubleshooting and support information.
Zowe releases
Zowe uses semantic versioning for its releases, also known as SemVer. Each release has a unique ID made
up of three numbers that are separated by periods.
Each time a new release is created, the release ID is incremented. Each number represents the content
change since the previous release. For example,
2.5.0 represents the fifth minor release since the first major release.
Patch
A patch is usually reserved for a bug fix to a minor release.
Minor release
A minor release indicates that new functionality is added but the code is compatible with an earlier version.
The Zowe community works on two-week sprints and creates a minor release at the end of these, typically
once per month although the frequency might vary.
Major release
A major release is required if changes are made to the public API and the code is no longer compatible with
an earlier version.
When Zowe is version one, it is associated with the Zowe v1 conformance program. Offerings that extend
Zowe and achieve the Zowe v1 conformance badge will remain compatible with Zowe throughout its version
1 lifetime. A major release increment because of incompatibility is sometimes referred to as a "breaking"
change.
The first SMP/E build for Zowe v2 has a Functional Module ID (FMID) of AZWE002, which was created with
content from the 2.0.0 release. Each major release will be its own SMP/E FMID where the last digit is
updated, for example AZWE00V where V represents the major version.
Subsequent minor and patch releases to V2 are delivered as SMP/E PTF SYSMODs. Because of the size of
the content, two co-requisite PTFs are created for each Zowe release.
While Major releases are required for a "breaking" change, they also can be used to indicate to the
community a significant content update over and above what would be included in a minor release.
To see the version of a Zowe release, use the zwe version command.
will return a single line with the Zowe release number. For example,
You can pass debug or trace mode argument to this command to show more information. For example,
You can see in trace mode, it also tells you where is the Zowe runtime directory where zwe command
you are running.
Verify Zowe runtime directory
Version: v2.0.x LTS
Zowe ships a zwe support verify-fingerprints command to help you verify authenticity of your
runtime directory. This command collects and calculates hashes for all files located in Zowe runtime
directory and compare the hashes shipped with Zowe. With this utility, you are able to tell what files are
modified, added, or deleted from original Zowe build.
Here is an example for successful verification:
If this verification fails, the script will exit with code 181 and display error messages like Number of
different files: 1 . You can optionally pass --debug or -v parameter to instruct this command to
verbosely display which files are different.
Troubleshooting Kubernetes environments
Version: v2.0.x LTS
The following topics contain information that can help you troubleshoot problems when you encounter
unexpected behavior installing and using Zowe™ containers in a Kubernetes environment.
ISSUE: Deployment and ReplicaSet failed to create pod
Problem:
If you are using OpenShift and see these error messages in ReplicaSet Events:
That means the Zowe ServiceAccount zowe-sa doesn't have any SecurityContextConstraint attached.
Solution:
You can run this command to grant a certain level of permission, for example, privileged , to zowe-sa
ServiceAccount:
ISSUE: Failed to create services
Problem:
If you are using OpenShift and apply services, you may see this error:
Solution:
To fix this issue, you can simply find and comment out this line in the Service definition files:
With OpenShift, you can define a PassThrough Route to let Zowe handle TLS connections.
Troubleshooting API ML
Version: v2.0.x LTS
As an API Mediation Layer user, you may encounter problems with how the API ML functions. This article
presents known API ML issues and their solutions.
The error is caused by failed z/OSMF authentication. To determine the reason authentication failed, open the
ZWESVSTC joblog and look for a message that contains ZosmfAuthenticationProvider . The
following is an example of the message that contains ZosmfAuthenticationProvider :
Check the rest of the message, and identify the cause of the problem. The following list provides the
possible reasons and solutions for the z/OSMF authentication issue:
Connection refused
Missing z/OSMF host name in subject alternative names
Invalid z/OSMF host name in subject alternative names
Connection refused
In the following message, failure to connect to API Catalog occurs when connection is refused:
The reason for the refused connection message is either invalid z/OSMF configuration or z/OSMF being
unavailable. The preceding message indicates that z/OSMF is not on the 127.0.0.1 1443 interface.
Solution:
Configure z/OSMF
Make sure that z/OSMF is running and is on 127.0.0.1 1443 interface, and try to log in to API Catalog again. If
you get the same error message, change z/OSMF configuration.
Follow these steps:
. Locate the z/OSMF PARMLIB member IZUPRMxx.
For example, locate IZUPRM00 member in SYS1.PARMLIB.
. Change the current HOSTNAME configuration to HOSTNAME('*') .
. Change the current HTTP_SSL_PORT configuration to HTTP_SSL_PORT('1443') .
Important! If you change the port in the z/OSMF configuration file, all your applications lose connection
to z/OSMF.
For more information, see Syntax rules for IZUPRMxx.
If changing the z/OSMF configuration does not fix the issue, reconfigure Zowe.
Follow these steps:
. Open .zowe_profile in the home directory of the user who installed Zowe.
. Modify the value of the ZOWE_ZOSMF_PORT variable.
. Reinstall Zowe.
Missing z/OSMF host name in subject alternative names
In following message, failure to connect to API Catalog is caused by a missing z/OSMF host name in the
subject alternative names:
Solutions:
Fix the missing z/OSMF host name in subject alternative names using the following methods:
Note: Apply the insecure fix only if you use API Catalog for testing purposes.
Secure fix
Insecure fix
Secure fix
Follow these steps:
. Obtain a valid certificate for z/OSMF and place it in the z/OSMF keyring. For more information, see
Configure the z/OSMF Keyring and Certificate.
. Re-create the Zowe keystore by deleting it and re-creating it. For more information, see Configuring
Zowe certificates. The Zowe keystore directory is the value of the KEYSTORE_DIRECTORY variable in
the zowe.yaml file that is used to launch Zowe. See Creating and configuring the Zowe instance
directory for more information.
Insecure fix
Follow these steps:
. Re-create the Zowe keystore by deleting it and re-creating it. For more information, see Configuring
Zowe certificates. In the zowe-setup-certificates.env file that is used to generate the keystore,
ensure that the property VERIFY_CERTIFICATES and NONSTRICT_VERIFY_CERTIFICATES are
set to false .
Important! Disabling VERIFY_CERTIFICATES or NONSTRICT_VERIFY_CERTIFICATES may expose
your server to security risks. Ensure that you contact your system administrator before you do so and use
these options only for troubleshooting purpose.
Invalid z/OSMF host name in subject alternative names
In the following message, failure to connect to API Catalog is caused by an invalid z/OSMF host name in the
subject alternative names:
Solutions:
Fix the invalid z/OSMF host name in the subject alternative names using the following methods:
Request a new certificate
Re-create the Zowe keystore
Request a new certificate
Request a new certificate that contains a valid z/OSMF host name in the subject alternative names.
Re-create the Zowe keystore
Re-create the Zowe keystore by deleting it and re-creating it. For more information, see Configuring Zowe
certificates. The Zowe keystore directory is the value of the KEYSTORE_DIRECTORY variable in the
zowe.yaml file that is used to launch Zowe. See Creating and configuring the Zowe instance directory.
API ML throws I/O error on GET request and cannot connect to other services
Symptom:
The API ML services are running but they are in DOWN state and not working properly. The following
exceptions can be found in the log: java.net.UnknownHostException and
java.net.NoRouteToHostException .
Sample message:
See the following message for full exceptions.
Solution:
The Zowe started task needs to run under the same user ID as z/OSMF (typically IZUSVR). This is stated in
the installation documentation.
The hostname that is displayed in the details of the exception is a valid hostname. You can validate that the
hostname is valid by using ping command on the same mainframe system. For example, ping
USILCA32.lvn.broadcom.net . If it is valid, then the problem can be caused by insufficient privileges of
your started task that is not allowed to do network access.
You can fix it by setting up the security environment as described in the Zowe documentation.
Certificate error when using both an external certificate and Single Sign-On to
deploy Zowe
Symptom:
You used an external certificate and Single Sign-On to deploy Zowe. When you log in to the Zowe Desktop,
you encounter an error similar to the following:
Solution:
This issue might occur when you use a Zowe version of 1.12.0 or later. To resolve the issue, you can
download your external root certificate and intermediate certificates in PEM format. Then, add the following
parameter in the zowe.yaml file.
environments.ZWED_node_https_certificateAuthorities:
"/path/to/zowe/keystore/local_ca/localca.cer-
ebcdic","/path/to/carootcert.pem","/path/to/caintermediatecert.pem"
Recycle your Zowe server. You should be able to log in to the Zowe Desktop successfully now.
Browser unable to connect due to a CIPHER error
Symptom:
When connecting to the API Mediation Layer, the web browser throws an error saying that the site is unable
to provide a secure connection because of an error with ciphers.
The error shown varies depending on the browser. For example,
For Google Chrome:
Solution:
Remove GCM as a disabled TLS algorithm from the Java runtime being used by Zowe.
To do this, first locate the $JAVA_HOME/lib/security/java.security file. You can find the value of
$JAVA_HOME in one of the following ways.
Method 1: By looking at the java.home value in the zowe.yaml file used to start Zowe.
For example, if the zowe.yaml file contains the following line,
then, the $JAVA_HOME/lib/security/java.security file will be
/usr/lpp/java/J8.0_64/lib/security/java.security .
Method 2: By inspecting the STDOUT JES spool file for the ZWESVSTC started task that launches the
API Mediation Layer.
In the java.security file, there is a parameter value for jdk.tls.disabledAlgorithms , for
example,
Note: This line may have a continuation character \ and be split across two lines due to its length.
Edit the parameter value for jdk.tls.disabledAlgorithms to remove GCM . If as shown above the line
ends <224, GCM , remove the preceding comma so the values remain a well-formed list of comma-
separated algorithms:
Note: The file permissions of java.security might be restricted for privileged users at most z/OS sites.
After you remove GCM , restart the ZWESVSTC started task for the change to take effect.
API Components unable to handshake
Symptom:
The API Mediation Layer address spaces ZWE1AG, ZWE1AC and ZWE1AD start successfully and are visible
in SDSF, however they are unable to communicate with each other.
Externally the status of the API Gateway homepage will show ! icons against the API Catalog, Discovery
Service and Authentication Service (shown on the left side image below) which do not progress to green tick
icons as normally occurs during successful startup (shown on the right side image below).
The following error message codes may appear on logs or API responses. Use the following message code
references and the corresponding reasons and actions to help troubleshoot issues.
ZWEAT604E
Passwords do not match
Reason:
Re-entered password does not match for password update.
Action:
Enter the same value as the one entered for new password.
ZWEAD701E
Error loading static API definition file '%s'
Reason:
A problem occurred while reading (IO operation) of a specific static API definition file.
Action:
Ensure that the file data is not corrupted or incorrectly encoded.
ZWEAD702W
Unable to process static API definition data: '%s' - '%s'
Reason:
A problem occurred while parsing a static API definition file.
Action:
Review the mentioned static API definition file for errors. Refer to the specific log message to determine the
exact cause of the problem:
ServiceId is not defined in the file '%s'. The instance will not be created. Make sure to specify the
ServiceId.
The instanceBaseUrls parameter of %s is not defined. The instance will not be created. Make sure
to specify the InstanceBaseUrl property.
The API Catalog UI tile ID %s is invalid. The service %s will not have an API Catalog UI tile. Specify the
correct catalog title ID.
One of the instanceBaseUrl of %s is not defined. The instance will not be created. Make sure to specify
the InstanceBaseUrl property.
The URL %s does not contain a hostname. The instance of %s will not be created. The specified URL is
malformed. Make sure to specify valid URL.
The URL %s does not contain a port number. The instance of %s will not be created.
The specified URL is missing a port number. Make sure to specify a valid URL.
The URL %s is malformed. The instance of %s will not be created: The Specified URL is malformed.
Make sure to specify a valid URL.
The hostname of URL %s is unknown. The instance of %s will not be created: The specified hostname
of the URL is invalid. Make sure to specify a valid hostname.
Invalid protocol. The specified protocol of the URL is invalid. Make sure to specify valid protocol.
Additional service metadata of %s in processing file %s could not be created: %s
ZWEAD703E
A problem occurred during reading the static API definition directory: '%s'
Reason:
There are three possible causes of this error:
The specified static API definition folder is empty.
The definition does not denote a directory.
An I/O error occurred while attempting to read the static API definition directory.
Action:
Review the static API definition directory definition and its contents on the storage. The static definition
directories are specified as a parameter to launch a Discovery Service jar. The property key is:
apiml.discovery.staticApiDefinitionsDirectories
ZWEAD704E
Gateway Service is not available so it cannot be notified about changes in Discovery Service
Reason:
Gateway Service is probably mis-configured or failed to start from another reason.
Action:
Review the log of Gateway Service and its configuration.
on GitHub
When necessary, you can raise GitHub issues against the Zowe™ zlux core repository here. It is suggested
that you use either the bug or enhancement template.
For issues with particular applications, such as Code Editor or JES Explorer, create the issue in the
application's project.
The following error message codes may appear on ZSS log. Use the following message code references and
the corresponding reasons and actions to help troubleshoot issues.
Action:
if Status is OK then no action required. If Status is Failure see check <cmsRC> and description. In the
cases listed below check that the ZWESISTC started task is running. If not, start it with the TSO command
/S ZWESISTC :
ZWES0035I
ZSS Server settings: Address='%s', port='%d', protocol='%s'
Reason:
Server is starting using Address= <IP address> , port= <port> , protocol= http or https
Action:
No action required.
ZWES0039I
Installing '%s' service...
Reason:
<Service> is about to install.
Action:
No action required.
ZWES0061I
TLS settings: keyring '%s', label '%s', password '%s', stash '%s'
Reason:
ZSS uses TLS settings: keyring <keyring> or <p12-file> , label <cert-label> , password
"****" or (no password) , stash <stash-file> or (no stash) .
Action:
No action required.
ZWES0063I
Caching Service settings: gateway host '%s', port %d
Reason:
Caching Service settings are gateway host <Gateway-host> , port <Gateway-port> . HA is mode
enabled.
Action:
No action required.
ZWES0064I
Caching Service not configured
Reason:
Caching Service not configured. HA mode is disabled.
Action:
No action required.
ZWES1100I
Product Registration is enabled.
Reason:
Product Registration is enabled.
Action:
No action required.
ZWES1101I
Product Registration is disabled.
Reason:
Product Registration is disabled.
Action:
No action required.
ZWES1102I
Product Registration successful.
Reason:
Product Registration successful.
Action:
No action required.
ZWES1600I
JWT will be configured using JWK URL '%s'
Reason:
JWT will be configured using JSON Web Key(JWK) at URL <url> .
Action:
No action required.
ZWES1601I
Server is ready to accept JWT with (or without ) fallback to legacy tokens
Reason:
Server is ready to accept JWT with or without fallback to legacy tokens.
Action:
No action required.
ZWES1034E
Server startup problem: Address '%s' not valid.
Reason:
IP address nor hostname is not valid.
Action:
Use valid IP address or hostname, e.g. 0.0.0.0 .
ZWES1036E
Server startup problem: Ret='%d', res='0x%x'
Reason:
Server has failed to start.
Action:
If the next message is ZWES1037E then refer ZWES1037E. Otherwise, examine the reason code with
bpxmtext command, e.g. use bpxmtext 744c7247 if you got res='0x744c7247'
ZWES1037E
This is usually because the server port '%d' is occupied. Is ZSS running twice?
Reason:
ZSS port number is already occupped.
Action:
Check if another ZSS instance is already running, or chose another free port number and restart Zowe.
ZWES1065E
Failed to configure https server, check agent https settings
Reason:
Failed to configure https server.
Action:
Check agent https settings.
ZWES1005W
Plugin ID was not found in '%s'
Reason:
pluginId property wasn't found in <path-to-pluginDefinition.json> file. The plugin skipped.
Action:
If you are a plugin developer add pluginId property into <path-to-pluginDefinition.json> file.
Otherwise, contact the plugin vendor.
ZWES1012W
Could not open pluginsDir '%s': Ret='%d', res='0x%x'
Reason:
Could not open <pluginsDir> : Ret= <return-code> , res= <reason-code>
Action:
Check that <pluginsDir> exists and allows reading. Examine the reason code with bpxmtext
command for additional information.
ZWES1060W
Failed to init TLS environment, rc=%d(%s)
Reason:
Failed to initialized TLS environment GSKit return code <rc> ( <description> )
Action:
Ensure that ZSS certificate is configured correctly. Check GSKit return code and description for additional
information.
ZWES1103W
Product Registration failed, RC = %d
Reason:
Failed to register ZSS.
Action:
Examine the return code at [https://www.ibm.com/docs/en/zos/2.2.0?topic=requeststatus-return-codes] and
correct the error.
ZWES1201W
Could not %s file '%s': Ret='%d', res='%d'
Reason:
Unixfile REST Service could not <action> file <filename> : Ret= <return-code> , res= <reason-
code>
Action:
Action depends on return/reason code. For additional information examine the reason code with
bpxmtext command.
ZWES1103W
Could not get metadata for file '%s': Ret='%d', res='%d'
Reason:
Unixfile REST Service could not get metadata for file <filename> : Ret= <return-code> , res=
<reason-code>
Action:
Action depends on return/reason code. For additional information examine the reason code with
bpxmtext command.
ZWES1602W
JWK is in unrecognized format
Reason:
JSON Web Key(JWK) is in unrecognized format.
Action:
Report an issue at [https://github.com/zowe/zlux/issues]
ZWES1603W
Failed to construct public key using JWK
Reason:
JSON Web Key(JWK) has invalid public key info.
Action:
Report an issue at [https://github.com/zowe/zlux/issues]
ZWES1604W
JWK: failed to init HTTP context, ensure that APIML and TLS settings are correct
Reason:
Failed to init HTTP context for requesting JSON Web Key(JWK).
Action:
Check the zowe keystore configuration and specification of it within the zowe server config.
ZWES1605W
Server will not accept JWT
Reason:
ZSS Server will not accept JWT.
Action:
No action required.
ZWES1606W
Failed to get JWK - %s, retry in %d seconds
Reason:
Failed to get JWK - <reason> , retry in <n> seconds. ZSS Server was unable to get JSON Web
Key(JWK), it will try to repeat the attempt in <n> seconds.
Action:
No action required.
Troubleshooting Zowe CLI
Version: v2.0.x LTS
Problem
Zowe™ CLI is experiencing a problem. You need to collect information that will help you resolve the issue.
Environment
These instructions apply to Zowe CLI installed on Windows, Mac OS X, and Linux systems as a standalone
installation via a Zowe download or an NPM registry.
CLI
Follow these instructions to gather specific pieces of information to help troubleshoot Zowe™ CLI issues.
Environment variables
The following settings are configurable via environment variables:
Log levels
Environment variables are available to specify logging level and the CLI home directory.
Important! Setting the log level to TRACE or ALL might result in "sensitive" data being logged. For example,
command line arguments will be logged when TRACE is set.
For more information about logging and environment variables, see Setting CLI log levels.
CLI daemon mode
By default, the CLI daemon mode binary creates or reuses a file in the user's home directory each time a
Zowe CLI command runs. In some cases, this behavior might be undesirable. For example, the home
directory resides on a network drive and has poor file performance. For information about how to change the
location that the daemon uses, see Setting CLI daemon mode properties.
Home directory
You can set the location on your computer for the Zowe CLI home directory, which contains log files,
profiles, and plug-ins for the product.
The default .zowe folder is created when you issue your first Zowe CLI command. If you change the
location of the folder, you must reinstall plug-ins and recreate or move profiles and log files that you want to
retain. In some cases, you might want to maintain a different set of profiles in multiple folders, then switch
between them using the environment variable.
For information about setting an environment variable for the Zowe CLI home directory, see Setting the CLI
home directory.
The values for these variables can be echoed.
The core command groups use the z/OSMF REST APIs which can experience any number of problems.
If you encounter HTTP 500 errors with the CLI, consider gathering the following information:
. The IZU* (IZUSVR and IZUANG) joblogs (z/OSMF server)
. z/OSMF USS logs (default location: /global/zosmf/data/logs - but may change depending on installation)
If you encounter HTTP 401 errors with the CLI, consider gathering the following information:
. Any security violations for the TSO user in SYSLOG
Alternative methods
At times, it may be beneficial to test z/OSMF outside of the CLI. You can use the CLI tool curl or a REST
tool such as "Postman" to isolate areas where the problem might be occurring (CLI configuration, server-
side, etc.).
Example curl command to GET /zosmf/info :
Known Zowe CLI issues
Version: v2.0.x LTS
The following topics contain information that can help you troubleshoot problems when you encounter
unexpected behavior installing and using Zowe™ CLI.
When necessary, you can raise GitHub issues against the Zowe™ CLI repository here. It is suggested that
you use either the bug or enhancement template.
As a Zowe Explorer user, you may encounter problems with how the VS Code extension functions. This
article presents known Zowe Explorer issues and their solutions.
The following topics contain information that can help you troubleshoot problems when you encounter
unexpected behavior, using Zowe Explorer.
You can raise GitHub issues against the Zowe Explorer repository. It is suggested that you use either the bug
or feature request.
The following topics contain information that can help you troubleshoot problems when you encounter
unexpected behavior using Zowe™ Launcher.
Issues and development of the Zowe Launcher is managed in GitHub. When you troubleshoot a problem,
you can check whether a GitHub issue (open or closed) that covers the problem already exists. For a list of
issues, see the launcher repo.
Error Message Codes
The following error message codes may appear on Zowe Launcher SYSPRINT. Use the following message
code references and the corresponding reasons and actions to help troubleshoot issues.
share_as - One of <yes|no|must> which indicates whether child processes of the component
start in the same address space. See documentation for _BPX_SHAREAS for details.
Action:
No action required.
ZWEL0004I
component %s(%d) terminated, status = %d
Reason:
Component <component-name> ( <pid> ) terminated with status <code> .
Action:
No action required.
ZWEL0005I
next attempt to restart component %s in %d seconds
Reason:
Component failure detected.
Action:
No action required. The component <component-name> will be restarted in <n> seconds.
ZWEL0040E
failed to start component %s
Reason:
Failed to start component <component-name> .
Action:
Check <component-name> configuration and correct if needed, then either 1) start the component
manually by using z/OS MODIFY command F ZWESLSTC,APPL=STOP(<component-name>) or 2) restart
the entire HA instance
Contribute to Zowe
Version: v2.0.x LTS
You are welcome to contribute to Zowe in many forms and help make this project better! We want to make it
as easy as possible for you to become a Zowe contributor. This topic outlines the different ways that you can
get involved and provides some of the resources that are available to help you get started. All feedback is
welcome.
Report bugs and enhancements
Fix issues
Send a Pull Request
Report security issues
Contribution guidelines
Promote Zowe
Helpful resources
Fix issues
There are many issues and bugs with the label Good first issue in the Zowe GitHub repositories
to help you get familiar with the contribution process. Check out the following list of GitHub repos to
make your contribution!
Zowe sub-projects repositories
Zowe operations squads repositories
When you decide to work on an issue, check the comments on that issue to ensure that it's not taken by
anyone. If nobody is working on it, comment on that issue to let others know that you want to work on it
to avoid duplicate work. The squad can assign that issue to you and provide guidance as well.
You can also reach out to the Zowe squads on Slack to check with the squads if there is any good
starter issue that you can work on.
You can find more information about DCO signoff in the zac repo.
Contribution guidelines
Check out the contribution guidelines for different components and squads to learn how to participate.
Zowe CLI
Zowe API Mediation Layer
Zowe Application Framework
Zowe Explorer
Zowe Client SDKs
Zowe Docs
Promote Zowe
Contribute a blog about Zowe. Read the Zowe blog guidelines to get started.
Present Zowe on conferences and social channels
Helpful resources
General code guidelines
UI guidelines
Zowe learning resources
Code categories
Version: v2.0.x LTS
The Zowe™ codebase consists of a few key areas, with both unique and shared guidelines that define how
to write new code. A few such areas are:
Server Core
Server Security
Microservices
Zowe Desktop Applications
Zowe Application Framework
Zowe CLI and CLI Plug-ins
Imperative CLI Framework
Programming languages
For each area of the codebase, there are established and favored programming languages. Each repository
in Github identifies the primary language used. Some of the basic skills needed to contribute to the project
include:
CLI - Node.js, TypeScript
Desktop UI - Node.js, JavaScript
APIs - C, Assembler, Java, Spring
API Mediation Layer - Java, Spring
Note: JavaScript is not recommended and should be avoided in favor of Typescript to utilize typing.
All code written in the languages described in Code categories should adhere to the following guidelines to
facilitate collaboration and understanding.
Note: Uncertainties, unimplemented but known future action-items, and odd/specific constants should all
be accompanied with a short comment to make others aware of the reasoning that went into the code.
Whitespaces
Do not use tabs for whitespace. Use 2 spaces per tab instead.
Naming Conventions
Self-documenting code reduces the need for extended code comments. It is encouraged to use names as
long as necessary to describe what is occurring.
Functions and methods
Methods should be named as verbs (for example, get or set ), while Objects/Classes should be nouns.
Objects and functions should be CamelCase. Methods on Objects should be dromedaryCase.
Variables
Constants should be CAPITALIZED_AND_UNDERSCORED for clarity, while variables can remain
dromedaryCase.
Avoid non-descriptive variable names such as single letters (except for iteration in loops such as i or j) and
variable names that have been arbitrarily shortened (Don't strip vowels; long variable names are OK).
Pull requests guidelines
Version: v2.0.x LTS
The Zowe™ source code is stored in GitHub repositories under the Zowe GitHub project. You contribute to
the project through Pull Requests in GitHub.
Each pull request is made against a repository that has assigned "maintainers". Pull requests cannot be
merged without the approval of at least one maintainer, who will review Pull Requests to ensure that they
meet the following criteria:
The code in the pull request must adhere to the General Code Style Guidelines.
The code must compile/transpile (where applicable) and pass a smoke-test such that the code is not
known to break the current state of Zowe.
The pull request must describe the purpose and implementation to the extent that the maintainer
understands what is being accomplished. Some pull requests need less details than others.
The pull request must state how to test this change, if applicable, such that the maintainer or a QA team
can check correctness. The explanation may simply be to run included test code.
If a pull request depends upon a pull request from the same/another repository that is pending, this
must be stated such that maintainers know in which order to merge open pull requests.
Documentation Guidelines
Version: v2.0.x LTS
Documentation of Zowe™ comes in various forms depending on the subject being detailed. In general,
consider how you can help end users and contributors through external documentation, in-product help,
error messages, etc... and open an issue in zowe/docs-site if you need assistance.
Component Categories
Provide the following documentation depending on the component that you contribute to:
Server Core
Principles of operation and end-user guides (configuration, troubleshooting) should be documented on
Zowe Docs site. Code documentation follows language-specific formats.
Server Security
Principles of operation and end-user guides (configuration, troubleshooting) should be documented on
Zowe Docs site. Code documentation follows language-specific formats.
Microservices
Microservices implement a web API, and therefore must be documented for understanding and testing.
These web APIs must be accompanied with documentation in the Swagger (https://swagger.io/) format.
These documents must be Swagger 2.0, .yaml extension files. Zowe Application Framework plug-ins that
implement microservices should store these files within the /doc/swagger folder.
Zowe Desktop Applications
Zowe Desktop applications should include documentation that explains how to use them, such that this
documentation can integrate with a Zowe Desktop documentation reader. This is not strictly API
documentation, but rather user guides that can display within the Desktop GUI. The preferred
documentation format is a .md extension file that exists in the /doc/guide folder of an App.
Web Framework
Principles of operation and end-user guides (configuration, troubleshooting) should be documented on
Zowe Docs site. Code documentation follows language-specific formats.
CLI Plugins
Provide a readme.md file for developers (overview, build, test) as well as end-user documentation for your
plug-in on Zowe Docs site.
For more information, see the CLI documentation contribution guidelines.
Core CLI Imperative CLI Framework
Contributions that affect end users of the CLI should be documented on Zowe Docs site.
Contributions that affect the underlying Imperative CLI Framework should be documented in the GitHub Wiki
for future developers using the framework.
Code documentation follows language-specific formats.
Programming Languages
Each of the common languages in Zowe have code-documentation-generation tools, each with their own in-
code comment style requirements to adhere to in order to generate readable API references. Objects and
functions of interest should be commented in accordance to the language-specific tools to result in output
that serves as the first point of documentation for APIs.
Typescript
When writing TypeScript code, comment objects and functions in compliance with JSDoc. If you are writing
in an area of the codebase that does not yet have a definition file for JSDoc, define a configuration file that
can be used for future documentation of that code.
Java
When writing TypeScript code, comment objects and functions in the Javadoc format.
C
When writing C code, comment functions and structures in compliance with Doxygen.
Introduction
Version: v2.0.x LTS
This style guide is the visual language that represents Zowe™. It is a living document that will be updated
based on the needs of our users and software requirements.
Clear
Our users rely on our software to help them be efficient in their work. The interfaces and experiences that
we design should be clear so that there is never confusion about where to click or how to take the next step.
Users should always feel confident in their actions.
Consistent
Users should be able to look at Zowe software products and know that they are in a family. Each software
product is different, but should use similar patterns, icons, and interactions. If a user switches to a new
product within Zowe, it should feel familiar.
Smart
Our users are intelligent, and they need smart software. Zowe design patterns should always compliment
the userʼs intelligence and reflect the userʼs complex work environment. Designs should align with the Zowe
design language by putting the human needs of the user first.
Colors
Version: v2.0.x LTS
Color brings a design to life. Color is versatile; it's used to express emotion and tone, as well as place
emphasis and create associations. Color should always be used in meaningful and intentional ways to create
patterns and visual cues.
Color palette
The Zowe™ color palette is designed and implemented in a theme-able manner. The universal color
variables are determined by common roles and usage; it is not based singularly on a color value (i.e. unique
hex code). The same color value might be assigned to multiple variables in a theme's palette when the
values have distinctly different roles.
A universal variable can also have multiple associated roles when the color is consistently used across those
roles. This allows for uniform color application across themes, while giving each theme the freedom to
express its own individuality at a more detailed level.
Light theme
Dark theme
Typography is used to create clear hierarchies, useful organizations, and purposeful alignments that guide
users through the product and experience. It is the core structure of any well designed interface.
Typeface
Title typeface: Roboto Condensed
Body typeface: Roboto
Sample:
Font weight
Font weight is an important typographic style that can add emphasis and is used to differentiate content
hierarchy. Font weight and size pairings must be carefully balanced. A bold weight will always have more
emphasis than a lighter weight font of the same size. However, a lighter weight font can rank hierarchically
higher than a bold font if the lighter weight type size is significantly larger than the bold.
Roboto font family provides a wide range of weights. However, only SemiBold, Regular, Light should be used
for product design.
Font-weight: 300 / Light
Body copy
We recommended that you use two sizes for body copy. The first size is UI specific. To maximize screen real
estate we chose a smaller 14px / 0.875rem body copy size for the standard UI console. However, for areas
that have prolonged reading, such as Documentation, we use a larger body copy size of 16px / 1rem to
enhance readability.
Line scale
1.333 Perfect Fourth-type scale - desktop
Line-height
Line-height, traditionally known as leading, is one of several factors that directly contribute to readability and
pacing of copy. Line-heights are based on the size of the font itself. Ideal line-heights for standard copy have
a ratio of 1 1.5 (typesize : line-height). For example, a type at 16px / 1rem would have a line-height of 1.5rem /
24px (16 x 1.5). The exception to this rule are headings, which need less spacing and therefore have a line-
height ratio of 1 1.25.
Embed font
To embed your selected fonts into a web page, copy the following code into the <head> of your HTML
document:
Import font
Specify in CSS
Use the following CSS rules to specify these families:
Grid
Version: v2.0.x LTS
Grid systems are used for creating page layouts through a series of rows and columns that house your
content. Zowe™ uses a responsive, mobile-first, fluid grid system that appropriately scales up to 12 columns
as the device or view port size increases.
12 column grid
A 12 column grid is recommended. 12 is a well-distributed division that provides a good range of widths to
assign to content. It is dividable by 2, 3, 4 and 6, which allows flexibility. Many frameworks, such as
Bootstrap and Pure, use a 12 column grid by default. Other grid systems like a 5 column grid can reduce
flexibility, balance, and consistency.
Gutters
Columns create gutters (gaps between column content) through padding. For devices with a screen width
greater than 768px, the column padding is 20px. For devices with a screen width less than 768px, the
column padding is 10px.
Screen width ≥ 768px = 20px gutters
Screen width 768px = 10px gutters
Columns
Zowe designs should be limited to 12 columns. If designers feel that they need fewer columns in their grid,
they can specify the number of 12 available columns they wish to span.
This can translate to percentages of the twelve columns. Using this method, a designer can create a folded,
less granular grid. For example, if your component spans three equal columns, that is equal to 25% of twelve
columns.
Column count: 12
Margins
The 12 column grid does not have a maximum width. It has a width of 100%, with built in margins that create
padding between column count and the edges of the viewport.
In devices with a screen width greater than 768px, the margins are 5% on the left, and 5% on the right.
In devices with a screen width less than 768px, the margins are 3% on the left, and 3% on the right.
Example: Screen Width > 768px
Icons are key component for a successful UI design because they are a visual way to help add meaning to
elements.
Font Awesome is a robust icon library that allows for an easy addition to any web project. Scalable vector
icons that can instantly be customized — size, color, drop shadow, and anything that can be done with the
power of CSS.
One Font, Hundreds of Icons – In a single collection, Font Awesome is a pictographic language of
web-related actions.
No JavaScript Required – Fewer compatibility concerns because Font Awesome doesnʼt require
JavaScript.
Infinite Scalability – Scalable vector graphics means every icon looks awesome at any size.
Free, as in Speech – Font Awesome is completely free for commercial use. Check out the license.
CSS Control – Easily style icon color, size, shadow, and anything thatʼs possible with CSS.
Perfect on Retina Displays – Font Awesome icons are vectors, which mean theyʼre gorgeous on high-
resolution displays.
Plays Well with Others – Originally designed for Bootstrap, Font Awesome works great with all
frameworks.
Desktop Friendly – To use on the desktop or for a complete set of vectors, check out the cheatsheet.
Accessibility-minded – Font Awesome loves screen readers and helps make your icons accessible on
the web.
To learn more or download the library go to www.fontawesome.com
Application icon
Version: v2.0.x LTS
General rules
Embrace simplicity. Use a simple, unique shape or element that represents the essence of the application.
Avoid excessive details and redundant shading.
Use the Zowe™ color palette. Avoid using a monochromatic palette for your icons. Use the Zowe color
palette to ensure that the icons have a consistent look.
Use unique shapes and design elements. Avoid using single commonly used design elements, such as
the gear, document, or folder. These elements can reduce recognizability. Do not use photos and
screenshots. Keep icons simple and abstract.
Avoid labels and text. Short, commonly used abbreviations are acceptable, if necessary. Remember that all
icons have center-aligned labels beneath them.
Use brand identity. If your Zowe application has a brand identity element such as a logo, you can use it.
Remember to include the copyright symbol.
A flat icon has clean, crisp edges and a flat dimensional layout.
Use solid fill shapes. Most Zowe App icons have solid fill shapes, which are more readable on dark
backgrounds.
Use the circle shape for the background application icons. Set the outer corners to 100% opacity. Create an
image file that is 87x87 pixels, and save the file in PNG format.
Maintain consistent visual proportions.
Colors and shades
Verify the contrast
Verify that the background color of the icon provides enough contrast against the desktop.
You are welcome to contribute to the Zowe™ documentation repository. Anyone can open an issue about
documentation, or contribute a change with a pull request (PR) to the zowe/docs-site GitHub repository.
View detailed documentation on commands, actions, and options in Zowe CLI. You can read an interactive
online version, download a PDF document, or download a ZIP file containing the HTML for the online version.
Currently, this reference documentation only contains the web help for the Zowe CLI core component and
CLI plug-ins maintained by Zowe. As third-party plug-ins are approved under the Zowe V2 LTS
Conformance Program and contribute their web help to Zowe, we will update the documentation
accordingly. To view the web help for V1 conformant plug-ins, click the version drop-menu on the top right
corner of this page and click the link to any previous v1.xx.x version of this page.
Browse online
Download CLI reference in PDF format
Download CLI reference in ZIP format
Zowe API reference
Version: v2.0.x LTS
Find and learn about the Zowe APIs that you can use.
REST API for the Data sets and z/OS Unix Files Services
REST API for the API Gateway service
REST API for the JES Jobs Service
REST API for ZLUX Plug-in
zwe certificate keyring-jcl clean
Version: v2.0.x LTS
Description
Remove Zowe keyring.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--dataset-prefix,--ds-prefix string yes
--jcllib string yes
--security-dry-run boolean no
--security-product string no
--keyring-owner string yes
--keyring-name string yes
--alias -a string yes
--ca-alias -ca string yes
Full name Alias Type Required Help message
--ignore-security-failures boolean no
Errors
Error code Exit code Error message
ZWEL0176E 176 Failed to clean up Zowe keyring "%s".
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
Exit
Error code code Error message
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe certificate keyring-jcl connect
Version: v2.0.x LTS
Description
Connect existing certificate to Zowe keyring.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--dataset-prefix,--ds-prefix string yes
--jcllib string yes
--security-dry-run boolean no
--security-product string no
--keyring-owner string yes
--keyring-name string yes
--trust-cas string no
--connect-user string yes
Full name Alias Type Required Help message
--connect-label string yes
--trust-zosmf boolean no
--zosmf-ca string no
--zosmf-user string no
--ignore-security-failures boolean no
Errors
Error code Exit code Error message
ZWEL0175E 175 Failed to connect existing certificate to Zowe keyring "%s".
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
Exit
Error code code Error message
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe certificate keyring-jcl generate
Version: v2.0.x LTS
Description
Generate new set of certificate in Zowe keyring.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--dataset-prefix,--ds-prefix string yes
--jcllib string yes
--security-dry-run boolean no
--security-product string no
--keyring-owner string yes
--keyring-name string yes
--domains -d string yes
--alias -a string yes
Full name Alias Type Required Help message
--ca-alias -ca string yes
--common-name -cn string no
--org-unit string no
--org string no
--locality string no
--state string no
--country string no
--validity string no
--trust-cas string no
--trust-zosmf boolean no
--zosmf-ca string no
--zosmf-user string no
--ignore-security-failures boolean no
Errors
Error code Exit code Error message
ZWEL0174E 174 Failed to generate certificate in Zowe keyring "%s".
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe certificate keyring-jcl import-ds
Version: v2.0.x LTS
Description
Import certificate stored in MVS data set into Zowe keyring.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--dataset-prefix,--ds-prefix string yes
--jcllib string yes
--security-dry-run boolean no
--security-product string no
--keyring-owner string yes
--keyring-name string yes
--alias -a string yes
--trust-cas string no
Full name Alias Type Required Help message
--trust-zosmf boolean no
--zosmf-ca string no
--zosmf-user string no
--import-ds-name string yes
--import-ds-password string yes
--ignore-security-failures boolean no
Errors
Error code Exit code Error message
ZWEL0173E 173 Failed to import certificate to Zowe keyring "%s".
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
Exit
Error code code Error message
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe certificate keyring-jcl
Version: v2.0.x LTS
Sub-commands
clean
connect
generate
import-ds
Description
Manage z/OS Keyring with JCL.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
Full name Alias Type Required Help message
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
Exit
Error code code Error message
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
Exit
Error code code Error message
Description
Create a new PKCS12 format certificate authority.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--allow-overwrite,--allow-overwritten boolean no
--alias -a string yes
--password -p string yes
--common-name -cn string no
--org-unit string no
--org string no
--locality string no
--state string no
Full name Alias Type Required Help message
--country string no
--validity string no
Errors
Error code Exit code Error message
ZWEL0300W %s already exists. This %s will be overwritten during configuration.
ZWEL0158E 158 %s already exists.
ZWEL0168E 168 Failed to create certificate authority %s.
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
Exit
Error code code Error message
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe certificate pkcs12 create cert
Version: v2.0.x LTS
Description
Create a new PKCS12 format certificate.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--allow-overwrite,--allow-overwritten boolean no
--keystore -k string yes
--alias -a string yes
--password -p string yes
--common-name -cn string no
--domains -d string no
--ca-alias string yes
--ca-password string yes
Full name Alias Type Required Help message
--org-unit string no
--org string no
--locality string no
--state string no
--country string no
--validity string no
--key-usage string no
--extended-key-usage string no
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
Exit
Error code code Error message
Sub-commands
ca
cert
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--keystore-dir -d string yes
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
Exit
Error code code Error message
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
Exit
Error code code Error message
Description
Export PKCS12 keystore as PEM files.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--keystore -f string yes
--password -p string yes
--private-keys string no
Errors
Error code Exit code Error message
ZWEL0178E 178 Failed to export PKCS12 keystore %s.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe certificate pkcs12 import
Version: v2.0.x LTS
Description
Import certificate and/or certificate authorities into PKCS12 keystore.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--keystore -f string yes
--password -p string yes
--alias -a string no
--source-keystore -sf string no
--source-password -sp string no
--source-alias -sa string no
--trust-cas string no
Errors
Error code Exit code Error message
ZWEL0179E 179 Failed to import certificate (authorities) into keystore %s.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
Exit
Error code code Error message
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe certificate pkcs12 lock
Version: v2.0.x LTS
Description
This command will lock the keystore directory to only be accessible by specified user group.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--keystore-dir -d string yes
--user string yes
--group string yes
--group-permission string no
Errors
Error code Exit code Error message
ZWEL0177E 177 Failed to lock keystore directory %s.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
Exit
Error code code Error message
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
Exit
Error code code Error message
Description
This command can detect and trust any service by importing the certificate into truststore.
NOTE: the service must be online and accessible.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--service-name -n string yes
--keystore-dir -d string yes
--keystore -k string yes
--password -p string yes
--host string yes
--port string yes
--alias -a string yes
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Error code Exit code Error message
ZWEL0300W %s already exists. This %s will be overwritten during configuration.
ZWEL0170E 170 Failed to trust service "%s".
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
Exit
Error code code Error message
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
Exit
Error code code Error message
Sub-commands
create
export
import
lock
trust-service
Description
Manage PKCS12 format keystore and truststore.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
Full name Alias Type Required Help message
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
Exit
Error code code Error message
Description
This command can verify if the service certificate is valid by checking the certificate Common Name (CN)
and Subject Alternate Name (SAN).
NOTE: the service must be online and accessible.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--host string yes
--port string yes
Errors
Error code Exit code Error message
ZWEL0171E 171 Failed to verify certificate (CN and SAN) of service "%s".
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
Exit
Error code code Error message
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe certificate
Version: v2.0.x LTS
Sub-commands
keyring-jcl
pkcs12
verify-service
Description
Set of commands to help you manage certificates.
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
Full name Alias Type Required Help message
--log-dir,--log -l string no
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
Exit
Error code code Error message
Description
Extract module package and lay down to target directory.
NOTE: this sub-command will be automatically executed by zwe components install , so usually you
don't need to execute this manually.
Examples
Parameters
Full name Alias Type Required Help message
--component-file,--component -o string yes
--auto-encoding -e string no
Errors
Error code Exit code Error message
ZWEL0153E 153 Cannot install Zowe component to system root directory.
ZWEL0154E 154 Temporary directory is empty.
ZWEL0155E 155 Component %s already exists in %s.
ZWEL0167E 167 Cannot find component name from %s package manifest.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
Exit
Error code code Error message
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe components install process-hook
Version: v2.0.x LTS
Description
Process module install hook if exists.
NOTE: this sub-command will be automatically executed by zwe components install , so usually you
don't need to execute this manually.
Examples
Parameters
Full name Alias Type Required Help message
--component-name -n string yes
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
Exit
Error code code Error message
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
Exit
Error code code Error message
Sub-commands
extract
process-hook
Description
Install a Zowe module.
IMPORTANT NOTES, by default, this command will enable the component globally by modifying your YAML
configuration. You can pass --skip-enable to disable this behavior.
Examples
Parameters only for this command
Full name Alias Type Required Help message
--component-file,--component -o string yes
--auto-encoding -e string no
--skip-enable boolean no
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Error code Exit Error message
code
ZWEL0156E 156 Component name is not initialized after extract step.
ZWEL0180E 180 Zowe extension directory (zowe.extensionDirectory) is not defined in Zowe
YAML configuration file.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
Exit
Error code code Error message
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
Exit
Error code code Error message
Description
Disable a Zowe component.
IMPORTANT NOTES, this command will modify your YAML configuration.
Examples
Parameters
Full name Alias Type Required Help message
--component-name,--component -o string yes
--ha-instance -i string no
Errors
Error code Exit code Error message
ZWEL0152E 152 Cannot find component %s.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
Exit
Error code code Error message
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
Exit
Error code code Error message
Description
Enable a Zowe component.
IMPORTANT NOTES, this command will modify your YAML configuration.
Examples
Parameters
Full name Alias Type Required Help message
--component-name,--component -o string yes
--ha-instance -i string no
Errors
Error code Exit code Error message
ZWEL0152E 152 Cannot find component %s.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
Exit
Error code code Error message
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
Exit
Error code code Error message
Sub-commands
disable
enable
install
Examples
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
Exit
Error code code Error message
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe init apfauth
Version: v2.0.x LTS
Description
This command will APF authorize load library for you.
NOTE: You require proper permission to run APF authorize command.
These Zowe YAML configurations showing with sample values are used:
zowe.setup.dataset.prefix shows where the SZWEAUTH data set is installed.
zowe.setup.dataset.authLoadlib is the user custom APF LOADLIB. This field is optional. If it's
not defined, SZWEAUTH from zowe.setup.dataset.prefix data set will be APF authorized.
zowe.setup.dataset.authPluginLib is the user custom APF PLUGINLIB. You can install Zowe
ZIS plugins into this load library.
Examples
Parameters
Full name Alias Type Required Help message
--security-dry-run boolean no
--ignore-security-failures boolean no
Errors
Error code Exit code Error message
ZWEL0157E 157 %s (%s) is not defined in Zowe YAML configuration file.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
Exit
Error code code Error message
Description
This command will generate certificate used by Zowe services.
If you specify --update-config with this command, these configurations could be written back to your
Zowe YAML configuration file:
zowe.certificate based on your zowe.setup.certificate configuration.
These Zowe YAML configurations showing with sample values are used:
zowe.setup.certificate.type is the type of certificate. Valid values are "PKCS12" (USS
keystore) or "JCERACFKS" (z/OS keyring).
zowe.setup.certificate.dname is the distinguished name of the certificate. You can define
caCommonName , commonName , orgUnit , org , locality , state , and / or country .
These configurations are optional.
zowe.setup.certificate.validity is the validity days of the certificate. This is optional.
If you want to import certificate stored in MVS data set into Zowe keyring,
zowe.setup.certificate.keyring.connect.dsName is required in this case. It tells Zowe
the data set where the certificate stored.
zowe.setup.certificate.keyring.connect.password is the password when importing
the certificate.
The certificate will be imported with label defined in
zowe.setup.certificate.keyring.label .
Examples
Parameters
Full name Alias Type Required Help message
--allow-overwrite,--allow-overwritten boolean no
--update-config boolean no
--ignore-security-failures boolean no
Errors
Error code Exit Error message
code
ZWEL0157E 157 %s (%s) is not defined in Zowe YAML configuration file.
ZWEL0164E 164 Value of %s (%s) defined in Zowe YAML configuration file is invalid. Valid
values are %s.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
Exit
Error code code Error message
Description
This command will prepare Zowe custom data sets.
These Zowe YAML configurations showing with sample values are used:
zowe.setup.dataset.prefix shows where the SZWESAMP and SZWEAUTH data sets are installed.
Examples
Parameters
Full name Alias Type Required Help message
Full name Alias Type Required Help message
--allow-overwrite,--allow-overwritten boolean no
Errors
Error code Exit Error message
code
Error code Exit Error message
code
ZWEL0157E 157 %s (%s) is not defined in Zowe YAML configuration file.
ZWEL0300W %s already exists. This data set member will be overwritten during
configuration.
ZWEL0301W %s already exists and will not be overwritten. For upgrades, you must use --
allow-overwrite.
ZWEL0158E 158 %s already exists.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
Exit
Error code code Error message
Description
This command will run ZWESECUR jcl.
NOTE: You require proper permission to run security configuration.
These Zowe YAML configurations showing with sample values are used:
zowe.setup.dataset.prefix shows where the SZWESAMP data set is installed,
zowe.setup.dataset.jcllib is the custom JCL library. Zowe will create customized ZWESECUR
JCL here before applying it.
zowe.setup.security.product is security product. Can be RACF , ACF2 , or TSS . This
configuration is optional. Default value is RACF .
zowe.setup.security.groups.admin is the group for Zowe administrators. This configuration is
optional. Default value is ZWEADMIN .
zowe.setup.security.groups.stc is the group for Zowe started tasks. This configuration is
optional. Default value is ZWEADMIN .
zowe.setup.security.groups.sysProg is system programmer user ID/group. This configuration
is optional. Default value is ZWEADMIN .
zowe.setup.security.users.zowe is the userid for Zowe started task. This configuration is
optional. Default value is ZWESVUSR .
zowe.setup.security.users.zis is userid for ZIS started task. This configuration is optional.
Default value is ZWESIUSR .
zowe.setup.security.stcs.zowe is Zowe started task name. This configuration is optional.
Default value is ZWESLSTC .
zowe.setup.security.stcs.zis is ZIS started task name. This configuration is optional. Default
value is ZWESISTC .
zowe.setup.security.stcs.aux is ZIS auxiliary started task name. This configuration is optional.
Default value is ZWESASTC .
Examples
Parameters
Full name Alias Type Required Help message
--security-dry-run boolean no
--ignore-security-failures boolean no
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
Exit
Error code code Error message
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
Exit
Error code code Error message
Description
This command will copy Zowe started tasks ZWESLSTC , ZWESISTC , ZWESASTC to your target
procedure library.
NOTE: You require proper permission to write to target procedure library.
These Zowe YAML configurations showing with sample values are used:
zowe.setup.dataset.prefix shows where the SZWESAMP data set is installed,
zowe.setup.dataset.parmlib is the user custom parameter library. Zowe server command may
generate sample PARMLIB members and stores here.
zowe.setup.dataset.jcllib is the custom JCL library. Zowe will create temporary started tasks
here before putting into target procedure library.
zowe.setup.dataset.authLoadlib is the user custom APF LOADLIB. This field is optional. If this
is not defined, SZWEAUTH from zowe.setup.dataset.prefix data set will be used as STEPLIB in
STCs.
zowe.setup.security.stcs.zowe is Zowe started task name. This configuration is optional.
Default value is ZWESLSTC .
zowe.setup.security.stcs.zis is ZIS started task name. This configuration is optional. Default
value is ZWESISTC .
zowe.setup.security.stcs.aux is ZIS auxiliary started task name. This configuration is optional.
Default value is ZWESASTC .
Examples
Parameters
Full name Alias Type Required Help message
--allow-overwrite,--allow-overwritten boolean no
Errors
Error code Exit Error message
code
Error code Exit Error message
code
ZWEL0157E 157 %s (%s) is not defined in Zowe YAML configuration file.
ZWEL0300W %s already exists. This data set member will be overwritten during
configuration.
ZWEL0301W %s already exists and will not be overwritten. For upgrades, you must use --
allow-overwrite.
ZWEL0143E 143 Cannot find data set member %s. You may need to re-run zwe install .
ZWEL0158E 158 %s already exists.
ZWEL0159E 159 Failed to modify %s.
ZWEL0160E 160 Failed to write to %s. Please check if target data set is opened by others.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
Exit
Error code code Error message
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe init vsam
Version: v2.0.x LTS
Description
This command will run ZWECSVSM jcl to create VSAM data set for Zowe APIML Caching Service.
These Zowe YAML configurations showing with sample values are used:
zowe.setup.dataset.prefix shows where the SZWESAMP data set is installed,
zowe.setup.dataset.jcllib is the custom JCL library. Zowe will create customized ZWESECUR
JCL here before applying it.
zowe.setup.vsam.mode indicates whether the VSAM will utilize Record Level Sharing (RLS)
services or not. Valid value is RLS or NONRLS .
zowe.setup.vsam.volume indicates the name of volume. This field is required if VSAM mode is
NONRLS .
zowe.setup.vsam.storageClass indicates the name of RLS storage class. This field is required if
VSAM mode is RLS .
components.caching-service.storage.mode indicates what storage Zowe Caching Service will
use. Only if this value is VSAM , this command will try to create VSAM data set.
components.caching-service.storage.vsam.name defines the VSAM data set name.
Examples
Parameters
Full name Alias Type Required Help message
--allow-overwrite,--allow-overwritten boolean no
Errors
Error code Exit Error message
code
ZWEL0157E 157 %s (%s) is not defined in Zowe YAML configuration file.
ZWEL0300W %s already exists. This data set member will be overwritten during
configuration.
ZWEL0301W %s already exists and will not be overwritten. For upgrades, you must use --
allow-overwrite.
Error code Exit Error message
code
ZWEL0158E 158 %s already exists.
ZWEL0159E 159 Failed to modify %s.
ZWEL0160E 160 Failed to write to %s. Please check if target data set is opened by others.
ZWEL0161E 161 Failed to run JCL %s.
ZWEL0162E 162 Failed to find job %s result.
ZWEL0163E 163 Job %s ends with code %s.
ZWEL0301W 0 Zowe Caching Service is not configured to use VSAM. Command skipped.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe init
Version: v2.0.x LTS
Sub-commands
apfauth
certificate
mvs
security
stc
vsam
Description
Init Zowe instance based on zowe.yaml configuration.
You can find an example zowe.yaml in Zowe runtime directory folder.
This command will run these sub-commands in sequence:
zwe init mvs
If you pass --skip-security-setup with this command, zwe init apfauth and zwe init
security steps will be skipped.
If you pass --update-config with this command, these configurations could be written back to your
Zowe YAML configuration file:
zowe.runtimeDirectory based on where your zwe command is located, and if it is not defined,
zowe.certificate based on your zowe.setup.certificate configuration,
IMPORTANT, if you modify any of the values below, it's suggested to re-run relevant zwe init command
to make them taking effect.
These Zowe YAML configurations showing with sample values are used:
zowe.setup.dataset.prefix shows where the SZWEAUTH data set is installed.
zowe.setup.dataset.parmlib is the user custom parameter library. Zowe server command may
generate sample PARMLIB members and stores here.
zowe.setup.dataset.jcllib is the custom JCL library. Zowe server command may generate
sample JCLs and put into this data set.
zowe.setup.dataset.authLoadlib is the user custom APF LOADLIB. This field is optional. If this
is defined, members of SZWEAUTH will be copied over to this data set and it will be APF authorized. If
it's not defined, SZWEAUTH from zowe.setup.dataset.prefix data set will be APF authorized.
zowe.setup.dataset.authPluginLib is the user custom APF PLUGINLIB. You can install Zowe
ZIS plugins into this load library. This loadlib requires APF authorize.
zowe.setup.security.product is security product. Can be RACF , ACF2 , or TSS . This
configuration is optional. Default value is RACF .
zowe.setup.security.groups.admin is the group for Zowe administrators. This configuration is
optional. Default value is ZWEADMIN .
zowe.setup.security.groups.stc is the group for Zowe started tasks. This configuration is
optional. Default value is ZWEADMIN .
zowe.setup.security.groups.sysProg is system programmer user ID/group. This configuration
is optional. Default value is ZWEADMIN .
zowe.setup.security.users.zowe is the userid for Zowe started task. This configuration is
optional. Default value is ZWESVUSR .
zowe.setup.security.users.zis is userid for ZIS started task. This configuration is optional.
Default value is ZWESIUSR .
zowe.setup.security.stcs.zowe is Zowe started task name. This configuration is optional.
Default value is ZWESLSTC .
zowe.setup.security.stcs.zis is ZIS started task name. This configuration is optional. Default
value is ZWESISTC .
zowe.setup.security.stcs.aux is ZIS auxiliary started task name. This configuration is optional.
Default value is ZWESASTC .
zowe.setup.certificate.type is the type of certificate. Valid values are "PKCS12" (USS
keystore) or "JCERACFKS" (z/OS keyring).
zowe.setup.certificate.dname is the distinguished name of the certificate. You can define
caCommonName , commonName , orgUnit , org , locality , state , and / or country .
These configurations are optional.
zowe.setup.certificate.validity is the validity days of the certificate. This is optional.
If you want to import certificate stored in MVS data set into Zowe keyring,
zowe.setup.certificate.keyring.connect.dsName is required in this case. It tells Zowe
the data set where the certificate stored.
zowe.setup.certificate.keyring.connect.password is the password when importing
the certificate.
The certificate will be imported with label defined in
zowe.setup.certificate.keyring.label .
zowe.setup.vsam.storageClass indicates the name of RLS storage class. This field is required if
VSAM mode is RLS .
zowe.verifyCertificates indicates how Zowe should validate the certificate of services
registered under Zowe APIML. Valid values are "STRICT", "NONSTRICT" or "DISABLED". If this is
"STRICT", this command will try to validate the z/OSMF service certificate if z/OSMF is defined.
zOSMF.host and zOSMF.port is the z/OSMF service information. This is required if you are using
z/OSMF as authentication service.
components.caching-service.storage.mode indicates what storage Zowe Caching Service will
use. Only if this value is VSAM , this command will try to create VSAM data set.
components.caching-service.storage.vsam.name defines the VSAM data set name.
Examples
Parameters
Full name Alias Type Required Help message
--allow-overwrite,--allow-overwritten boolean no
--skip-security-setup boolean no
--security-dry-run boolean no
--ignore-security-failures boolean no
--update-config boolean no
Errors
Inherited from parent command
Exit
Error code code Error message
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe internal config get
Version: v2.0.x LTS
Description
Return value of a configuration defined in YAML configuration.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--ha-instance -i string no
--path -p string yes
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
Exit
Error code code Error message
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
Exit
Error code code Error message
Description
Set value of a configuration and write back to the YAML configuration.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--ha-instance -i string no
--path -p string yes
--value -e string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
Exit
Error code code Error message
Sub-commands
get
set
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
Exit
Error code code Error message
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe internal container cleanup
Version: v2.0.x LTS
Description
Clean up Kubernetes runtime.
Currently this command will remove all outdated static definitions.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
Exit
Error code code Error message
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe internal container init
Version: v2.0.x LTS
Description
Initialize special runtime environment required by Zowe containerization.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe internal container prestop
Version: v2.0.x LTS
Description
Actions will be executed before a service is stopped.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Parameters
Full name Alias Type Required Help message
--ha-instance -i string no
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
Exit
Error code code Error message
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe internal container
Version: v2.0.x LTS
Sub-commands
cleanup
init
prestop
Description
Internal commands to help manager workloads in Zowe containers.
NOTE: these internal commands are only used by Zowe Containerization use scenario.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
Full name Alias Type Required Help message
--log-dir,--log -l string no
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
Exit
Error code code Error message
Examples
Parameters
Full name Alias Type Required Help message
--component -o string yes
--run-in-background boolean no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
Exit
Error code code Error message
Examples
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--ha-instance -i string no
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Error code Exit Error message
code
ZWEL0141E 141 User %s does not have write permission on %s.
ZWEL0302W You are running the Zowe process under user id IZUSVR. This is not
recommended and may impact your z/OS MF server negatively.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
Exit
Error code code Error message
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
Exit
Error code code Error message
Sub-commands
component
prepare
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--ha-instance -i string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
Exit
Error code code Error message
Description
Return component list should be started in specified HA instance.
NOTE: This command only returns a list of enabled components with start command.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--ha-instance -i string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
Exit
Error code code Error message
Sub-commands
config
container
get-launch-components
start
Description
Commands will be executed internally by other Zowe commands.
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
Full name Alias Type Required Help message
--log-dir,--log -l string no
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
Exit
Error code code Error message
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
Exit
Error code code Error message
Description
Migrate your YAML configuration on z/OS for Kubernetes.
This script will create zowe-config ConfigMap and zowe-certificates-secret Secret for
Kubernetes deployment.
To manually create zowe-config ConfigMap , the data section should contain a key zowe.yaml
with string value of your zowe.yaml used on z/OS.
To manually create zowe-certificates-secret Secret , you need 2 entries under data section:
keystore.p12 : which is base64 encoded PKCS#12 keystore,
In order to make certificates working in Kubernetes, the certificate you are using should have these domains
defined in certificate Subject Alt Name (SAN):
your external domains to access Zowe APIML Gateway Service running in Kubernetes cluster,
*.<k8s-namespace>.svc.<k8s-cluster-name>
*.discovery-service.<k8s-namespace>.svc.<k8s-cluster-name>
*.gateway-service.<k8s-namespace>.svc.<k8s-cluster-name>
*.<k8s-namespace>.pod.<k8s-cluster-name>
<k8s-namespace> is the Kubernetes Namespace you installed Zowe into. And <k8s-cluster-name>
is the Kubernetes cluster name, which usually should be cluster.local .
Without the additional domains in SAN, you may see warnings/errors related to certificate validation.
If you cannot add those domains into certificate Subject Alt Name (SAN), you can change
zowe.verifyCertificates to NONSTRICT mode. Zowe components will not validate domain names
but will continue to validate certificate chain, validity and whether it's trusted in Zowe truststore.
IMPORTANT: It's not recommended to disable zowe.verifyCertificates .
NOTES: With below conditions, this migration script will re-generate a new set of certificate for you with
proper domain names listed above.
you use zwe init command to initialize Zowe,
use PKCS#12 format keystore by defining zowe.setup.certificate.type: PKCS12
did not define zowe.setup.certificate.pkcs12.import.keystore and let zwe command to
generate PKCS12 keystore for you
enabled STRICT mode zowe.verifyCertificates .
Parameters
Full name Alias Type Required Help message
--domains -d string no
--external-port string no
--k8s-namespace string no
--k8s-cluster-name string no
--alias -a string no
--password -p string no
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe migrate for
Version: v2.0.x LTS
Sub-commands
kubernetes
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
Exit
Error code code Error message
Sub-commands
for
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
Exit
Error code code Error message
Description
Sample of deep embedded sub-command.
Also inherit parameters from upper level.
NOTE: This command is to demonstrate how zwe command works. There are no real meaningful
functionalities defined in this command and sub-commands.
WARNING: This command is for experimental purposes and could be changed in the future releases.###
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--another-parameter -p boolean no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
Exit
Error code code Error message
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe sample sub second
Version: v2.0.x LTS
Description
Sample of second sub-command.
NOTE: This command is to demonstrate how zwe command works. There are no real meaningful
functionalities defined in this command and sub-commands.
WARNING: This command is for experimental purposes and could be changed in the future releases.###
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--target-dir,--target -d string yes
--auto-encoding -e string no
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
Full name Alias Type Required Help message
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
Exit
Error code code Error message
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
Exit
Error code code Error message
Sub-commands
deep
second
Description
A sample sub-command.
NOTE: This command is to demonstrate how zwe command works. There are no real meaningful
functionalities defined in this command and sub-commands.
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Full name Alias Type Required Help message
--target-dir,--target -d string yes
--auto-encoding -e string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe sample test
Version: v2.0.x LTS
Description
A sample command.
NOTE: This command is to demonstrate how zwe command works. There are no real meaningful
functionalities defined in this command and sub-commands.
WARNING: This command is for experimental purposes and could be changed in the future releases.###
Inherited from parent command
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
Full name Alias Type Required Help message
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
Exit
Error code code Error message
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
Exit
Error code code Error message
Sub-commands
sub
test
Description
This is a sample command.
NOTE: This command is to demonstrate how zwe command works. There are no real meaningful
functionalities defined in this command and sub-commands.
WARNING: This command is for experimental purposes and could be changed in the future releases.
Examples
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
Full name Alias Type Required Help message
--log-dir,--log -l string no
--config -c string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
Exit
Error code code Error message
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--target-dir string no
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Error code Exit Error message
code
ZWEL0113E 113 Failed to find Zowe version. Please validate your Zowe directory.
ZWEL0150E 150 Failed to find file %s. Zowe runtimeDirectory is invalid.
Error code Exit Error message
code
ZWEL0151E 151 Failed to create temporary file %s. Please check permission or volume free
space.
ZWEL0181E 181 Failed to verify Zowe file fingerprints.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
Exit
Error code code Error message
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
Exit
Error code code Error message
Sub-commands
verify-fingerprints
Description
Collect and package Zowe runtime information for support purpose.
This command will collect these information:
Environment
z/OS version
Java version
Node.js version
Zowe configurations
Zowe manifest.json
Zowe configuration file
Zowe installation logs
Zowe PKCS#12 keystore if used
Zowe temporary configuration files under <workspace>/.env
Zowe APIML static registration files under <workspace>/api-mediation/api-defs
Zowe runtime
Active running Zowe processes
Zowe job log
Zowe fingerprints and validation result
Parameters
Full name Alias Type Required Help message
--target-dir string no
Errors
Inherited from parent command
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
Exit
Error code code Error message
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
Exit
Error code code Error message
Description
After you extract Zowe convenience build, you can run this command to install MVS data sets.
If you are using SMPE build, you can skip this command since MVS data sets are already prepared during
SMPE install.
These Zowe YAML configurations showing with sample values are used:
Expected outputs:
Will create these data sets under zowe.setup.dataset.prefix definition:
SZWEAUTH contains few Zowe load modules (++PROGRAM).
Examples
Parameters
Full name Alias Type Required Help message
--allow-overwrite,--allow-overwritten boolean no
--dataset-prefix,--ds-prefix string no
Errors
Error code Exit Error message
code
ZWEL0157E 157 %s (%s) is not defined in Zowe YAML configuration file.
ZWEL0300W %s already exists. Members in this data set will be overwritten.
ZWEL0301W %s already exists and will not be overwritten. For upgrades, you must use --
allow-overwrite.
ZWEL0158E 158 %s already exists.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
Exit
Error code code Error message
Description
Start Zowe with main started task.
These Zowe YAML configurations showing with sample values are used:
zowe.setup.security.stcs.zowe is Zowe started task name. This configuration is optional.
Default value is ZWESLSTC .
zowe.jobname is the optional customized job name to start Zowe. If it's empty, the start command
will not pass JOBNAME= option to S command.
haInstances.<ha-instance>.sysname is the SYSNAME of the target HA instance. If you pass -
-ha-instance parameter, this is the SYSNAME the start command will be routed to.
Examples
Parameters
Full name Alias Type Required Help message
--ha-instance -i string no
Errors
Error code Exit code Error message
ZWEL0165E 165 Failed to start job %s: %s.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe stop
Version: v2.0.x LTS
Description
Stop Zowe main job.
These Zowe YAML configurations showing with sample values are used:
zowe.setup.security.stcs.zowe is Zowe started task name. This configuration is optional.
Default value is ZWESLSTC .
zowe.jobname is the optional customized job name to start Zowe. If it's empty, the stop command
will try to use value of zowe.setup.security.stcs.zowe as job name to stop.
haInstances.<ha-instance>.sysname is the SYSNAME of the target HA instance. If you pass -
-ha-instance parameter, this is the SYSNAME the start command will be routed to.
Examples
Parameters
Full name Alias Type Required Help message
--ha-instance -i string no
Errors
Error code Exit code Error message
ZWEL0166E 166 Failed to stop job %s: %s.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
Exit
Error code code Error message
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
Exit
Error code code Error message
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
ZWEL0172E Component %s has %s defined but the file is missing.
zwe version
Version: v2.0.x LTS
Description
Display Zowe version.
Examples
Parameters
Inherited from parent command
Full name Alias Type Required Help message
--help -h boolean no
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Error code Exit code Error message
Error code Exit code Error message
ZWEL0150E 150 Failed to find file %s. Zowe runtimeDirectory is invalid.
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
Exit
Error code code Error message
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
ZWEL0139E 139 Failed to create directory %s.
ZWEL0140E 140 Failed to translate Zowe configuration (%s).
ZWEL0142E 142 Failed to refresh APIML static registrations.
Exit
Error code code Error message
zwe
Sub-commands
certificate
components
init
install
internal
migrate
sample
start
stop
support
version
Description
A command line utility helps you managing Zowe instance.
You can issue --help or -h to find information for all commands it supports.
Examples
Parameters
Full name Alias Type Required Help message
--help -h boolean no
Full name Alias Type Required Help message
--debug,--verbose -v boolean no
--trace -vv boolean no
--silent -s boolean no
--log-dir,--log -l string no
--config -c string no
Errors
Exit
Error code code Error message
100 If the user pass --help or -h parameter, the zwe command always exits
with 100 code.
ZWEL0101E 101 ZWE_zowe_runtimeDirectory is not defined.
ZWEL0102E 102 Invalid parameter %s.
ZWEL0103E 103 Invalid type of parameter %s.
ZWEL0104E 104 Invalid command %s.
ZWEL0105E 105 The Zowe YAML config file is associated to Zowe runtime "%s", which is not
same as where zwe command is located.
ZWEL0106E 106 %s parameter is required.
ZWEL0107E 107 No handler defined for command %s.
ZWEL0108E 108 Zowe YAML config file is required.
Exit
Error code code Error message
ZWEL0109E 109 The Zowe YAML config file specified does not exist.
ZWEL0110E 110 Doesn't have write permission on %s directory.
ZWEL0111E 111 Command aborts with error.
ZWEL0112E 112 Zowe runtime environment must be prepared first with "zwe internal start
prepare" command.
ZWEL0120E 120 This command must run on a z/OS system.
ZWEL0121E 121 Cannot find node. Please define NODE_HOME environment variable.
ZWEL0122E 122 Cannot find java. Please define JAVA_HOME environment variable.
ZWEL0123E 123 This function is only available in Zowe Containerization deployment.
ZWEL0131E 131 Cannot find key %s defined in file %s.
ZWEL0132E 132 No manifest file found in component %s.
ZWEL0133E 133 Data set %s already exists.
ZWEL0134E 134 Failed to find SMS status of data set %s.
ZWEL0135E 135 Failed to find volume of data set %s.
ZWEL0136E 136 Failed to APF authorize data set %s.
ZWEL0137E 137 z/OSMF root certificate authority is not provided (or cannot be detected) with
trusting z/OSMF option enabled.
ZWEL0138E 138 Failed to update key %s of file %s.
Exit
Error code code Error message
Zowe v2 uses a YAML configuration file during installation, configuration and runtime. This file is usually
referred to as zowe.yaml . YAML is a human-friendly data serialization language for all programming
languages. To learn more about YAML specifications, see https://yaml.org/.
Note: In the following sections, we refer to configuration keys by using concatenation of key names and
dots. For example, if you want to update the configuration key zowe.certificate.keystore.type with
value PKCS12 , you should set value for this entry in the zowe.yaml :
Table of Contents
High-level overview of YAML configuration file
Extract sharable configuration out of zowe.yaml
Configuration override
YAML configurations - certificate
YAML configurations - zowe
YAML configurations - java
YAML configurations - node
YAML configurations - zOSMF
YAML configurations - components
Configure component gateway
Configure component discovery
Configure component api-catalog
Configure component caching-service
Configure component app-server
Configure component zss
Configure component jobs-api
Configure component files-api
Configure component explorer-jes
Configure component explorer-mvs
Configure component explorer-uss
Configure external extension
YAML configurations - haInstances
Auto-generated environment variables
High-level overview of YAML configuration file
The YAML configuration file has few high-level sections:
zowe
Defines global configurations specific to Zowe, including default values.
java
Defines Java configurations used by Zowe components.
node
Defines node.js configurations used by Zowe components.
zOSMF
Tells Zowe your z/OSMF configurations.
components
Defines detailed configurations for each Zowe component or extension. Each component or extension
may have a key entry under this section. For example, components.gateway is configuration for API
Mediation Layer Gateway service.
haInstances
Defines customized configurations for each High Availability (HA) instance. You should predefine all
Zowe HA instances you want to start within your Sysplex.
Extract sharable configuration out of zowe.yaml
The Zowe YAML configuration file supports a special @include annotation that can be used in any level of
the configuration. This enables you to organize your YAML configuration files and extract sharable
configurations to a separate YAML file.
For example, you can define a sharable certificate configuration file <keystore-dir>/zowe-
certificates.yaml like this:
Then in your zowe.yaml , you can import this certification file like this:
Configuration override
Inside zowe.yaml , you can define default values and they may be overridden in more granular level
configurations. This can happen in several ways:
The component can override the default certificate configuration. For the specific entry of certification
configuration, if it's not overridden, it falls back to default configurations.
Example:
App Server will use the certificate alias app-server instead of localhost from the same keystore
defined in zowe.certificate.keystore.file . And it will use the exact same truststore defined in
zowe.certificate.truststore.file .
keystore.type
Defines the type of the keystore. If you are using keystore, this value usually should be PKCS12 . If you
are using keyring, this value should be JCERACFKS .
keystore.file
Defines the path of the keystore file. If you are using keyring, this should look like
safkeyring:////<keyring-owner>/<keyring-name> . For example,
safkeyring:////ZWESVUSR/ZoweKeyring .
keystore.password
Defines the password of the keystore.
keystore.alias
Represents the alias name of the certificate stored in keystore. If you are using keyring, this is the
certificate label connected to the keyring.
truststore.type
Defines the type of the truststore file. If you are using keystore, this value usually should be PKCS12 . If
you are using keyring, this value should be JCERACFKS .
truststore.file
Defines the path to the truststore file. If you are using keyring, this should look like
safkeyring:////<keyring-owner>/<keyring-name> , usually will be the same value of
keystore.file .
truststore.password
Defines the password of the truststore.
pem.key
Defines the private key file in PEM format. This can be used by applications that do not support either
PKCS12 keystore format or z/OS keyring.
pem.certificate
Defines the public key file in PEM format. This can be used by applications that do not support either
PKCS12 keystore format or z/OS keyring.
pem.certificateAuthorities
Defines certificate authorities in PEM format. This can be used by applications that do not support
either PKCS12 keystore format or z/OS keyring.
YAML configurations - zowe
The high-level configuration zowe supports these definitions:
Directories
zowe.runtimeDirectory
Tells Zowe the runtime directory where it's installed.
zowe.logDirectory
Some Zowe components write logs to file system. This tells Zowe which directory should be used to
store log files.
zowe.workspaceDirectory Tells Zowe components where they can write temporary runtime files.
zowe.extensionDirectory
Tells Zowe where you put the runtime of all your extensions.
Zowe Job
zowe.job.name
Defines the Zowe job name for the ZWESLSTC started task.
zowe.job.prefix
Defines the Zowe address space prefix for Zowe components.
Domain and port to access Zowe
zowe.externalDomains
Defines a list of external domains that will be used by the Zowe instance. This configuration is an array
of domain name strings. In Sysplex deployment, this is the DVIPA domain name defined in Sysplex
Distributor. For example,
In Kubernetes deployment, this is the domain name you will use to access your Zowe running in
Kubernetes cluster.
zowe.externalPort
Defines the port that will be exposed to external Zowe users. By default, this value is set based on Zowe
APIML Gateway port. In Sysplex deployment, this is the DVIPA port defined in Sysplex Distributor. See
Configure Sysplex Distributor for more information. In Kubernetes deployment, this is the gateway
Service port will be exposed to external.
Extra environment variables
zowe.environments
Defines extra environment variables to customize the Zowe runtime. This configuration is a list of key /
value pairs. Example:
Please be aware that variables defined here are global to all Zowe components, on all HA instances.
Certificate
zowe.certificate
Defines the northbound certificate facing Zowe users.
zowe.verifyCertificates Defines how Zowe should validate the certificates used by
components or external service(s) like z/OSMF. It can be a value of:
STRICT : This is the default value. Zowe will validate if the certificate is trusted in our trust store
and if the certificate Command Name and Subject Alternative Name (SAN)is validated. This is
recommended for the best security.
NONSTRICT : Zowe will validate if the certificate is trusted in our trust store. In this mode, Zowe
does not validate certificate Common Name and Subject Alternative Name (SAN). This option does
not have the best security but allows you to try out Zowe when you don't have permission to fix
certificate used by external services like z/OSMF.
DISABLED : This will disable certificate validation completely. This is NOT recommended for
security purpose.
Launcher and launch scripts
Launcher is the program behind ZWESLSTC started task.
zowe.launcher
The launcher section defines defaults about how the Zowe launcher should act upon components.
zowe.launcher.restartIntervals
An array of positive integers that defines how many times a component should be tried to be restarted if
it fails, and how much time to wait in seconds for that restart to succeed before retrying.
zowe.launcher.minUptime
The minimum amount of time a zowe component should be running in order to be declared as started
successfully.
zowe.launcher.shareAs
Whether or not the launcher should start components in the same address space as it. See
documentation for _BPX_SHAREAS for details.
zowe.launchScript.logLevel You can set it to debug or trace to enable different level of
debug messages from Zowe launch scripts. This may help to troubleshoot issues during Zowe start.
Setup
Zowe YAML configuration uses zowe.setup section to instruct how Zowe should be installed and
configured. This section is optional for Zowe runtime but only be used for zwe install and zwe init
commands.
zowe.setup.dataset.prefix shows where the SZWEAUTH data set is installed.
zowe.setup.dataset.parmlib is the user custom parameter library. Zowe server command may
generate sample PARMLIB members and stores here.
zowe.setup.dataset.jcllib is the custom JCL library. Zowe server command may generate
sample JCLs and put into this data set.
zowe.setup.dataset.authLoadlib is the user custom APF LOADLIB. This field is optional. If this
is defined, members of SZWEAUTH will be copied over to this data set and it will be APF authorized. If
it's not defined, SZWEAUTH from zowe.setup.dataset.prefix will be APF authorized.
zowe.setup.dataset.authPluginLib is the user custom APF PLUGINLIB. You can install Zowe
ZIS plug-ins into this load library. This loadlib requires APF authorize.
zowe.setup.security.product is security product. Can be RACF , ACF2 , or TSS . This
configuration is optional. Default value is RACF .
zowe.setup.security.groups.admin is the group for Zowe administrators. This configuration is
optional. Default value is ZWEADMIN .
zowe.setup.security.groups.stc is the group for Zowe started tasks. This configuration is
optional. Default value is ZWEADMIN .
zowe.setup.security.groups.sysProg is system programmer user ID/group. This configuration
is optional. Default value is ZWEADMIN .
zowe.setup.security.users.zowe is the userid for Zowe started task. This configuration is
optional. Default value is ZWESVUSR .
zowe.setup.security.users.zis is userid for ZIS started task. This configuration is optional.
Default value is ZWESIUSR .
zowe.setup.security.stcs.zowe is Zowe started task name. This configuration is optional.
Default value is ZWESLSTC .
zowe.setup.security.stcs.zis is ZIS started task name. This configuration is optional. Default
value is ZWESISTC .
zowe.setup.security.stcs.aux is ZIS AUX started task name. This configuration is optional.
Default value is ZWESASTC .
zowe.setup.certificate.type is the type of certificate. Valid values are PKCS1 (USS keystore)
or JCERACFKS (z/OS keyring).
zowe.setup.certificate.dname is the distinguished name of the certificate. You can define
caCommonName , commonName , orgUnit , org , locality , state , and / or country .
These configurations are optional.
zowe.setup.certificate.validity is the validity days of the certificate. This is optional.
If you want to import certificate stored in MVS data set into Zowe keyring,
zowe.setup.certificate.keyring.connect.dsName is required in this case. It tells Zowe
the data set where the certificate stored.
zowe.setup.certificate.keyring.connect.password is the password when importing
the certificate.
The certificate will be imported with label defined in
zowe.setup.certificate.keyring.label .
apiml.service.preferIpAddress
Set this parameter to true to advertise a service IP address instead of its hostname. Note: This
configuration is deprecated. Zowe start script will ignore this value and always set it to false .
apiml.gateway.timeoutMillis
Specifies the timeout for connection to the services in milliseconds.
apiml.security.x509.enabled
Set this parameter to true to enable the client certificate authentication functionality through ZSS.
apiml.security.x509.externalMapperUrl
Defines the URL where Gateway can query the mapping of client certificates.
apiml.security.auth.provider
Defines the authentication provider used by the API Gateway.
apiml.security.authorization.endpoint.url
Defines the URL to the authorization endpoint. This endpoint tells Gateway if a user has a particular
permission on SAF profile. For example, permission to the APIML.SERVICES profile of ZOWE class.
apiml.security.ssl.verifySslCertificatesOfServices
Defines whether APIML should verify certificates of services in strict mode. Setting to true will
enable the strict mode where APIML will validate if the certificate is trusted in turststore, and also if
the certificate Common Name or Subject Alternate Name (SAN) matches the service hostname.
apiml.security.ssl.nonStrictVerifySslCertificatesOfServices
Defines whether APIML should verify certificates of services in non-strict mode. Setting the value to
true will enable the non-strict mode where APIML will validate if the certificate is trusted in
turststore, but ignore the certificate Common Name or Subject Alternate Name (SAN) check. Zowe will
ignore this configuration when strict mode is enabled with
apiml.security.ssl.verifySslCertificatesOfServices .
apiml.server.maxConnectionsPerRoute
Specifies the maximum connections for each service.
apiml.server.maxTotalConnections
Specifies the total connections for all services registered under API Mediation Layer.
Configure component discovery
These configurations can be used under the components.discovery section:
port
Defines the port which discovery should be started on. This may be defined as a valid port number or as
an offset from the Gateway component's port. To define an offset enter "+{offset}" or "-
{offset}" as a string. The offset must start with + or - .
debug
Defines whether to enable debug mode for the Discovery Service.
apiml.service.preferIpAddress
Set this parameter to true to advertise a service IP address instead of its hostname. Note: This
configuration is deprecated. The Zowe start script will ignore this value and always set it to false .
apiml.security.ssl.verifySslCertificatesOfServices
Defines whether APIML should verify certificates of services in strict mode. Setting to true will
enable the strict mode where APIML will validate both if the certificate is trusted in turststore, and
also if the certificate Common Name or Subject Alternate Name (SAN) matches the service hostname.
apiml.security.ssl.nonStrictVerifySslCertificatesOfServices
Defines whether APIML should verify certificates of services in non-strict mode. Setting to true will
enable the non-strict mode where APIML will validate if the certificate is trusted in turststore, but
ignore the certificate Common Name or Subject Alternate Name (SAN) check. Zowe will ignore this
configuration if strict mode is enabled with
apiml.security.ssl.verifySslCertificatesOfServices .
alternativeStaticApiDefinitionsDirectories
Specifies the alternative directories of static definitions.
apiml.server.maxTotalConnections
Specifies the total connections for all services registered under API Mediation Layer.
apiml.discovery.serviceIdPrefixReplacer
Modifies the service ID of a service instance before it registers to API Mediation Layer. Using this
parameter ensures compatibility of services that use a non-conformant organization prefix with v2,
based on Zowe v2 conformance.
Configure component api-catalog
These configurations can be used under the components.api-catalog section:
port
Defines the port which API Catalog should be started on.
debug
Defines if we want to enable debug mode for the API Catalog. This is equivalent to the
APIML_DEBUG_MODE_ENABLED variable but with better granular level.
environment.preferIpAddress
Set this parameter to true to advertise a service IP address instead of its hostname.
Note: This configuration is deprecated. Zowe start script will ignore this value and always set it to
false .
storage.redis.timeout
Specifies the timeout second to Redis. Defaults to 60 seconds.
storage.redis.sentinel.masterInstance : Specifies the Redis master instance ID used by the
Redis Sentinel instances.
storage.redis.sentinel.nodes
Specifies the array of URIs used to connect to a Redis Sentinel instances in the form
username:password@host:port .
storage.redis.ssl.enabled
Specifies the boolean flag indicating if Redis is being used with SSL/TLS support. Defaults to true .
storage.redis.ssl.keystore
Specifies the keystore file used to store the private key.
storage.redis.ssl.keystorePassword
Specifies the password used to unlock the keystore.
storage.redis.ssl.truststore
Specifies the truststore file used to keep other parties public keys and certificates.
storage.redis.ssl.truststorePassword
Specifies the password used to unlock the truststore.
environment.preferIpAddress
Set this parameter to true to advertise a service IP address instead of its hostname. Note: this
configuration is deprecated. Zowe start script will ignore this value and always set it to false .
apiml.security.ssl.verifySslCertificatesOfServices
Specifies whether APIML should verify certificates of services in strict mode. Set to true will enable
strict mode that APIML will validate both if the certificate is trusted in turststore, and also if the
certificate Common Name or Subject Alternate Name (SAN) match the service hostname.
apiml.security.ssl.nonStrictVerifySslCertificatesOfServices
Defines whether APIML should verify certificates of services in non-strict mode. Setting to true will
enable non-strict mode where APIML will validate if the certificate is trusted in turststore, but
ignore the certificate Common Name or Subject Alternate Name (SAN) check. Zowe will ignore this
configuration if strict mode is enabled with
apiml.security.ssl.verifySslCertificatesOfServices .
debug
Defines whether to enable debug logging for the Files API.
Configure external extension
You can define a components.<extension-id> section and use common component configuration
entries.
For example, enable my-extension :
YAML configurations - haInstances
All Zowe high availability instances should have a dedicated section under the haInstances high-level
configuration.
In this section, <ha-instance> represents any Zowe high availability instance ID.
For all high availability instances, these are the common definitions.
haInstances.<ha-instance>.hostname
Defines the host name where you want to start this instance. This could be the host name of one LPAR
in your Sysplex.
haInstances.<ha-instance>.sysname
Defines the system name of the LPAR where the instance is running. Zowe will use ROUTE command
to send JES2 start or stop command to this HA instance.
haInstances.<ha-instance>.components.<component>
Optional settings you can override component configurations for this high availability instance. See
Configuration override for more details.
Auto-generated environment variables
Each line of Zowe YAML configuration will have a matching environment variable during runtime. This is
converted based on pre-defined pattern:
All configurations under zowe , components , haInstances will be converted to a variable with
name:
prefixed with ZWE_ ,
any non-alphabetic-numeric characters will be converted to underscore _ ,
and no double underscores like __ .
Calculated configurations of haInstance , which is portion of haInstances.<current-ha-
instance> will be converted same way.
ZWE_zowe_setup_dataset_prefix is the high-level qualifier where Zowe MVS data sets are
installed.
ZWE_zowe_setup_dataset_parmlib is the data set configured to store customized version of
parameter library members.
ZWE_zowe_setup_dataset_authPluginLib is the data set configured to store APF authorized ZIS
plug-ins load library.
ZWE_zowe_setup_security_users_zowe is the name of Zowe runtime user.
ZWE_configs_port is your component port number you can use in your start script. It points to the
value of haInstances.<current-ha-instance>.components.<your-component>.port , or
fall back to components.<my-component>.port , or fall back to configs.port defined in your
component manifest.
Server component manifest file reference
Version: v2.0.x LTS
Zowe server component manifest file defines the name and purpose of the component. It also provides
information about how this component should be installed, configured, and started. It can be named as
manifest.yaml , manifest.yml , or manifest.json and should be located in the root directory of
the component. Currently, only YAML or JSON format are supported.
The manifest file contains the following properties:
name
(Required) Defines a short, computer-readable name of the component. This component name is used
as directory name after it is installed. The allowed characters in the name are alphabets, numbers,
hyphen ( - ) and underscore ( _ ). For example, explorer-jes is a valid extension name.
id
(Optional) Defines a long, computer-readable identifier of the component. If the component is hosted
as one of the projects in Open Mainframe Project, the identifier also matches the component path in the
Zowe Artifactory. For example, org.zowe.explorer-jes is a valid identifier. You can locate the
component's official releases by looking into the libs-release-local/org/zowe/explorer-
jes/ directory in the Zowe Artifactory.
version :
(Optional but recommended) This is the current version of the component without the prefix of v . For
example, 2.0.0 is a valid version value.
title
(Optional) Defines a short human-readable name for this component. This value will also be used as the
default title for API Catalog tile, or App Framework plug-in title. For example, JES Explorer is a valid
title for the explorer-jes component.
description
(Optional but recommended) Defines the license code of the component. For example, Zowe core
components have EPL-2.0 value in this field.
schemas
(Required) Defines the location of json schema files that are compatible with certain portions of Zowe
as denoted by each child property.
configs
(Required) Defines the location of the json schema file which extends the Zowe Component base
schema.
build
(Optional but strongly recommended) Defines the build information of the current package, including git
commit hash, and so on. When Zowe core components define manifest file, these fields are left as
template variables. The template will be updated when a publishable package is created. It supports the
following subfields:
branch
You may create multiple packages in the same branch. This is the sequential number of the current
package.
commitHash
This is the commit hash of the package that can be used to match the exact source code in the
repository. Zowe core components usually use git rev-parse --verify HEAD to retrieve the
commit hash.
timestamp
This defines actions that should be taken when the component is installed, configured, started, or
tested. You must issue this command with one or more subfields as listed below. For example,
commands.install . All subfields are optional and usually should point to a USS command or script.
install
This defines extra steps when installing this component. It will be automatically executed if you
install your component with the zwe components install server command.
validate
This defines extra validations that the component requires other than global validations. It is for
runtime purpose, and will be automatically executed each time Zowe is started.
configure
This defines extra configuration steps before starting the component. It is for runtime purpose, and
will be automatically executed each time Zowe is started.
start
This tells the Zowe launch script how to start the component. It is for runtime purpose, and will be
automatically executed each time Zowe is started.
apimlServices
This section defines how the component will be registered to the API Mediation Layer Discovery
Service. All subfields are optional.
dynamic
Array of objects. This information will tell Zowe and users what services you will register under the
Discovery service.
serviceId
Defines the path to the static definition file. This file is supposed to be a template.
basePackage
Defines the base package name of the extension. It is used to notify the extended service of
the location for component scan.
appfwPlugins
Array of objects. This section defines how the component will be registered to the App Framework
plug-in. All subfields are optional.
path
This points to the directory where App Framework pluginDefinition.json file is located.
When Zowe is starting, the launch script will check this field and register the plug-in to Zowe App
Framework Server.
gatewaySharedLibs : Array of objects. This section defines the API ML extension(s) attributes which
will get installed and used by API ML.
path
This points to the directory where the JAR files are housed for an extension and later on copied into
the API ML extensions workspace directory. If there is more than 1 extension to a single manifest
(say for a product family of multiple extensions), then multiple path variables can be contained
within the manifest denoted by individual folders, for example path/to/yourextension1/ .
Alternatively, path can be the JAR file path rather than a directory path.
zisPlugins
List of ZIS plugin objects. This section defines the ZIS plugin(s) attributes necessary for ZIS plugin
installation and automation.
id
This points to the directory where the load modules are housed for a plugin, for example
/zisServer . If there is more than 1 plugin to a single manifest (say for a product family of
multiple plugins), then multiple path variables can be contained within the manifest denoted by
individual folders, for example yourplugin1/zisServer . The parameters for the Zowe parmlib
are assumed to be in <PATH>/samplib . The names of the plugin executables are assumed to be
in <PATH>/loadlib .
For example,
configs
Component can define it's own configuration in this section in desired hierarchy. This is the brief
guidance for component user to learn what are the configurations and what are the default values. Any
configurations defined here can be placed into zowe.yaml components.<component-name>
section for customization.
For example, if the component has this defined in component manifest,
You can choose to put those configurations into components.myextension or haInstance.<ha-
instance>.components.myextension of zowe.yaml like this:
Component can use auto-generate environment variables in lifecycle scripts to learn how the
component is configured for current HA instance. In the preceding use case,
For HA instance lpar1 , ZWE_configs_port value is 14567 ,
ZWE_configs_another_config value is my-value , which are default values.
From another component, you can find myextension configurations like this,
For HA instance lpar1 , ZWE_components_myextension_port value is 14567 ,
ZWE_components_myextension_another_config value is my-value , which are default
values.
For HA instance lpar2 , ZWE_components_myextension_port value is 24567 ,
ZWE_components_myextension_another_config value is my-value2 .
Note: All paths of directories or files mentioned previously should be relative paths to the root directory
where manifest is located.
Bill of Materials
Version: v2.0.x LTS
Zowe™ uses the SPDX SBOM format to represent its bill of materials. To read more about why SBOMs and
SPDX are used, see this blog. The hash codes can be used to validate your download is authentic using a
command like openssl dgst -sha1 <downloaded_sbom.zip> . Zowe SBOMs are as follows: