Endevor

 View Only

Package Automation - what are you waiting for?

By Joseph Walther posted Jul 11, 2023 03:10 PM

  

Introduction

Some things are so easily seen as part of a routine, that even the family dog can recognize them. You might see ready and eager eyes looking at you and suggesting “What are you waiting for”?

Similar identifiable routines exist for Endevor packages. For example, when a package is approved, the next thing that must happen to the package is its execution. If a package is approved and is ready to run but does not immediately execute, one might ask “What are you waiting for”?  Is it really necessary to wait for a manual step or a scheduled sweep? One might consider the time spent waiting as an unnecessary delay. 

For some Endevor sites, a second package action comes with delays. The manual examinations of executed packages, the determinations of “if” and “where” to ship, and the submissions of package shipments are additional delays. The package shipment should routinely follow the package execution.

This blog offers a solution that automates routine package actions and eliminates unnecessary wait times. If you implement objects from this Broadcom Github repository, then these features can be running on your site. Items in this repository have been used since 2006, and are now available to every Endevor site. Additionally, if you need help with the implementation, Broadcom is happy to assist.  Keep in mind however that these are not officially part of the core product and should be considered as something you may need to maintain in the future.  “What are you waiting for”?  

Eliminate the waiting for package executions

To only automate your package executions, only a few items from the Broadcom Github repository are necessary. Then, when an Endevor package status obtains a value of “APPROVED”, a job to Execute the package is automatically submitted.  If however, a package has an execution window that points to the future, nothing happens. 

PKGEXECT.rex and WHERE@M1.rex

You can place these REXX members unchanged into a library of your choice. The name of the library must also be entered into C1UEXT07.COB. 

PKGEEXEC.tbl

A “table” member that you can place unchanged into a library of your choice. By default, the table is coded to allow every package to be automatically executed. You may install the table as is, or modify it so that only specific package prefixes are selected. The name of the library that you choose to contain the table must be entered as the “MyDATALibrary” within the renamed @site.rex member.

@site.rex

A copy of this member must be created and named for each LPAR where these items will run. WHEREIAM.rex is provided solely for the purpose of helping to determine the name(s) to use for @site.rex. Just execute WHEREIAM.rex on the LPARs you want these items to run, and use the displayed name as the name of a renamed @site.rex member. Place the renamed member into the same library as the other REXX items. 

The content of each @site.rex member reflects specific values for an LPAR.

C1UEXT07.cob 

This Endevor exit program is called by Endevor and initiates the automation of package actions. Enter the dataset name where you placed the REXX members. 

PKG#MODL.skl

Tailor this JCL image for your site. It contains your JCL's “Model” or “Skeleton” for executing packages.

Eliminate the waiting for package shipments

To automate your package shipments, install the items listed below from the Broadcom Github repository. Then, when an Endevor package is successfully EXECUTED, this routine examines the package content, determines whether any package shipments are expected based on your “Rules”, and submits zero or more package shipments automatically. 

Before attempting to adopt this method for automating shipments, it is expected that you have already established manual package shipments at your site. Then you can capture one or more package shipment jobs to convert into shipment “models. The package name, destination name, and other details from a captured job(s) will be converted into variables for automated shipments from this solution.

See the Shipping Model(s) section below and the README.md file for more information.

REX members

Place these REXX members unchanged into a library of your choice. The name of the library must also be entered into C1UEXT07.COB (or your alternative choice).

  • BILDTGGR.rex 

  • PKGESHIP.rex 

  • PULLTGGR.rex 

  • UPDTTGGR.rex 

  • WHERE@M1.rex

 

If you elect to submit package shipments under the Endevor alternate id, then also copy these members from the Processor-Tools-and-Processor-Snippets section of GitHub.

  • SWAP2ALT.rex 

  • SWAP2USR.rex

SHIPRULE.tbl

A “table” member that you tailor to designate how a package content determines shipment destinations. Create the member named “SHIPRULE” and place it into the library name assigned to “MyDATALibrary” within your renamed @site.rex member. Enter your Environment, Stage, System, Subsys, Destination, and Jobname values. If you leave the Date and Time values set to “+0” and “0000” then shipments occur immediately after package execution. You can increase those values if you want a delay in the package shipments

@site.rex

A copy of this member must be created and named for each LPAR where these items will run. WHEREIAM.rex is provided solely for the purpose of helping to determine the name(s) to use for @site.rex. Just execute WHEREIAM.rex on the LPARs you want these items to run, and use the displayed name as the name of a renamed @site.rex member. Place the renamed member into the same library as the other REXX items. 

The content of each @site.rex member reflects specific values for an LPAR.

C1UEXT07.cob or C1UEXSHP.asm or C1UEXSHP.cob

Choose an Endevor exit program to initiate the automation of package actions. Enter the dataset name where you placed the REXX members.  

If you want only to automate shipments and not package executions, you may consider an alternative exit named C1UEXSHP.  This alternative is provided as an assembler and as a COBOL version smaller than C1UEXT07.

 

Shipping Model(s)

Create at least one Shipment “Model”. Three examples are provided named SHIP#FTP.skl,   SHIPLOCL.skl  and SHIPMODL.skl. To create your own, submit a manual package shipment. Capture the submitted JCL and make the following changes:

 

c all '2#ULGS2841111807' '&Package' 

c all 20201207 '&Date8'   

c all 19312963 '&Time8'

c all word userid '&Userid'   

c TSO31 ALL  '&Destination'  

c all 201207 '&Date6'  

c all 193129 '&Time6'

 

Where:

  • 2#ULGS2841111807 is the package name for your manual shipment. 

  • 20201207  is the 8-character date of your manual package shipment

  • 19312963 is the 8-character time of your manual package shipment

  • userid is your userid

  • TSO31 is the destination for your manual package shipment

  • 201207 is the 6-character date of your manual package shipment

  • 193129 is the 6-character time of your manual package shipment

 

Save each “model” and reference it within your renamed @site.rex member. 

Create a “model” for each kind of shipment you want to be automated. 

Choice of Run-Time Userid

By default, the package shipment jobs run under the userid of the person who performed the last action on the package. You can change this behavior and cause shipments to be run under the Endevor Alternate id by completing these steps:

  • Modify the C1UEXITS table for your C1UEXT07 entry to include the clause

USE_ALTID=+

  • Modify PKGESHIP.rex so that  

RunUnderAltid  = 'Y'

Other Considerations

You might want to use only one of the automated functions, but not both with the C1UEXT07 exit. Controlling which actions to be initiated can be selected within the C1UEXT07 program. Locate where the SETUP-EXIT-OPTIONS are set to values.

To disable an action, change the corresponding “MOVE ‘Y’” statement to “MOVE ‘N’”.

 

           IF  SETUP-EXIT-OPTIONS

*********    to support automated package shipping

               MOVE 'Y'   TO PECB-AFTER-EXEC

               MOVE 'Y'   TO PECB-REQ-ELEMENT-ACTION-BIBO

               MOVE 'Y'   TO PECB-AFTER-BACKOUT

               MOVE 'Y'   TO PECB-AFTER-BACKIN

*********    to enforce package backout = Y

*********      MOVE 'Y'   TO PECB-BEFORE-CAST

*********      MOVE 'Y'   TO PECB-MID-CAST

               MOVE 'Y'   TO PECB-BEFORE-CREATE-BLD

               MOVE 'Y'   TO PECB-BEFORE-CREATE-COPY

               MOVE 'Y'   TO PECB-BEFORE-CREATE-EDIT

               MOVE 'Y'   TO PECB-BEFORE-CREATE-IMPT

               MOVE 'Y'   TO PECB-BEFORE-MOD-BLD

               MOVE 'Y'   TO PECB-BEFORE-MOD-CPY

               MOVE 'Y'   TO PECB-BEFORE-MOD-EDIT

               MOVE 'Y'   TO PECB-BEFORE-MOD-IMPT

*********    to support submission of package Execute jobs

               MOVE 'Y'   TO PECB-AFTER-REV-APPR

               MOVE 'Y'   TO PECB-AFTER-CAST



If you need help, just reach out to joseph.walther@broadcom.com and very likely we can quickly get you on your way. 

0 comments
64 views

Permalink