CA OPS/MVS

Expand all | Collapse all

dynamic rule not loading before command issued.

Jump to Best Answer
  • 1.  dynamic rule not loading before command issued.

    Posted 08-23-2016 04:10 PM

    I am working on our IPL process, the last thing for me to get working is the vary XCF command to take the lpar out of the plex.  I have a dynamic rule loading in the SHUTSYS Rule to reply to the wtor IXC371D, but it is not enabling until after the command is issued.  I have a delay on the command, what is the trick to get the rule to enable?

     

          clearq=OPSCLEDQ()                                  

          queue ")MSG IXC371D"                               

          queue ")Proc"                                      

          queue "TRACE 'i'"                                  

          queue "smfid = OPSINFO('SMFID')"                   

          queue "REPID = MSG.REPLYID"                        

          queue "address oper ""r ""repid"",sysname=""smfid" 

          Address AOF                                        

          "Enable *DYNAMIC.IXC371D"                          

    address OPER                                            

      "Command(V XCF,"SYSID",OFF) delay(7)"                 

     

     

    Chris



  • 2.  Re: dynamic rule not loading before command issued.

    Posted 08-23-2016 04:15 PM

    OPSLOG output

     

    OPS0997T *-* 381:       clearq=OPSCLEDQ()                                     

    OPS0997T >F>                                                                  

    OPS0997T >>>     CLEARQ=                                                      

    OPS0997T *-* 382:       queue ")MSG IXC371D"                                  

    OPS0997T >L>     )MSG IXC371D                                                 

    OPS0997T *-* 383:       queue ")Proc"                                         

    OPS0997T >L>     )Proc                                                        

    OPS0997T *-* 384:       queue "TRACE 'i'"                                     

    OPS0997T >L>     TRACE 'i'                                                    

    OPS0997T *-* 385:       queue "smfid = OPSINFO('SMFID')"                      

    OPS0997T >L>     smfid = OPSINFO('SMFID')                                     

    OPS0997T *-* 386:       queue "REPID = MSG.REPLYID"                           

    OPS0997T >L>     REPID = MSG.REPLYID                                          

    OPS0997T *-* 387:       queue "address oper ""r ""repid"",sysname=""smfid"    

    OPS0997T >L>     address oper "r "repid",sysname="smfid                       

    OPS0997T *-* 388:       Address AOF                                           

    OPS0997T >L>     AOF                                                          

    OPS0997T *-* 389:       "Enable *DYNAMIC.IXC371D"                             

    OPS0997T >L>     Enable *DYNAMIC.IXC371D                                      

    OPS4320H OPSMAIN  OPSS *LOCAL* AOF verb ENABLE           command ENABLE *DYNAMI

    OPS0997T *-* 390:  address OPER                                               

    OPS0997T >L>     OPER                                                         

    OPS0997T *-* 391:   "Command(V XCF,"SYSID",OFF) delay(7)"                     

    OPS0997T >L>     Command(V XCF,                                  

    OPS0997T >V>     SYSJ                                            

    OPS0997T >O>     Command(V XCF,SYSJ                              

    OPS0997T >L>     ,OFF) delay(7)                                  

    OPS0997T >O>     Command(V XCF,SYSJ,OFF) delay(7)                

    OPS1181H OPSMAIN  OPSS (*Local*) MVS N/A SSM.SHUTSYS V XCF,SYSJ,OFF           

    V XCF,SYSJ,OFF                                                                

    V XCF,SYSJ,OFF                                                                

    97 IXC371D CONFIRM REQUEST TO VARY SYSTEM SYSJ OFFLINE. REPLY SYSNAME=SYSJ TO R

    OPS0997T *-* 395:  address AOF                                                

    OPS0997T >L>     AOF                                                          

    OPS0997T *-* 396:  "Disable "OPSINFO('PROGRAM')                               

    OPS0997T >L>     Disable                                                      

    OPS0997T >L>     PROGRAM                                                      

    OPS0997T >F>     SSM.SHUTSYS                                                  

    OPS0997T >O>     Disable SSM.SHUTSYS                                          

    OPS4320H OPSMAIN  OPSS *LOCAL* AOF verb DISABLE          command DISABLE SSM.SH

    OPS0997T *-* 405:if upcount = 0 & shutrequest = 'SHUTMAINT' then              

    OPS0997T >V>     0                                                            

    OPS0997T >L>     0                                                            

    OPS0997T >O>     1                                                            

    OPS0997T >V>     SHUTSYS                                                      

    OPS0997T >L>     SHUTMAINT                                                    

    OPS0997T >O>     0                                                            

    OPS0997T >O>     0                                                            

    OPS0997T *-* 433:if upcount ¬= 0 & firecnt = 11 & shutrequest = 'SHUTMAINT' the

    OPS0997T >V>     0                                                            

    OPS0997T >L>     0                                                            

    OPS0997T >O>     0                                                            

    OPS0997T >V>     10                                                           

    OPS0997T >L>     11                                                           

    OPS0997T >O>     0                                                            

    OPS0997T >O>     0                                                            

    OPS0997T >V>     SHUTSYS                                                     

    OPS0997T >L>     SHUTMAINT                                                   

    OPS0997T >O>     0                                                           

    OPS0997T >O>     0                                                           

    OPS0997T *-* 461:if upcount ¬= 0 & firecnt = 11 & shutrequest = 'SHUTSYS' then

    OPS0997T >V>     0                                                           

    OPS0997T >L>     0                                                           

    OPS0997T >O>     0                                                           

    OPS0997T >V>     10                                                          

    OPS0997T >L>     11                                                          

    OPS0997T >O>     0                                                           

    OPS0997T >O>     0                                                           

    OPS0997T >V>     SHUTSYS                                                     

    OPS0997T >L>     SHUTSYS                                                     

    OPS0997T >O>     1                                                           

    OPS0997T >O>     0                                                           

    OPS0997T *-* 490:exit                                                        

    OPS3900O RULE SSM.SHUTSYS  FOR TOD 2016/08/23 11:52:48 SET                   

    ENABLE *DYNAMIC.IXC371D                                                      

    OPS3900O RULE *DYNAMIC.IXC371D  FOR MSG IXC371D           NOW ENABLED        

    DISABLE SSM.SHUTSYS                                                          

    OPS3900O RULE SSM.SHUTSYS  FOR TOD 2016/08/23 11:52:48 NOW DISABLED         



  • 3.  Re: dynamic rule not loading before command issued.

    Broadcom Employee
    Posted 08-23-2016 04:32 PM

    Hi Chris,

     

    I'm an an Automation Point tech with no experience supporting OPS/MVS yet, but I read the manual for the ADDRESS AOF ENABLE DYNAMIC command, and I noticed that your rule snippet does not include a matching DISABLE *DYNAMIC.IXC371D command. Curious, does this command exist in your code currently and you just did not copy it into your snippet, or is it actually missing from your code? Maybe you deliberately left out the DISABLE command for some reason?

     

    In any event, surely one of the experienced OPS/MVS techs will chime in with a solution soon :-)

     

    Cheers,

    Stephen W. Slaughter



  • 4.  Re: dynamic rule not loading before command issued.

    Posted 08-24-2016 09:02 AM

    Stephen, Disable is not a required command, yes, it is used frequently with dynamic rules since they are short term or single fire.  Since this rule is loaded as the last part of shutting down for an IPL there is really no need, right after this rule fires the system is completely down and out of the Sysplex. 

     

     

    Thanks

    Chris



  • 5.  Re: dynamic rule not loading before command issued.

    Broadcom Employee
    Posted 09-01-2016 09:53 AM

    Hi Chris,

     

    Sorry for the delay in my response, but thanks for the insight :-)



  • 6.  Re: dynamic rule not loading before command issued.
    Best Answer

    Broadcom Employee
    Posted 08-23-2016 04:42 PM

    Chris,

    Try moving the command into the INIT section of the Dynamic Message rule.  That way the command will only be issued once the rule is enabled

     

          clearq=OPSCLEDQ()                                

          queue ")MSG IXC371D"  

          queue ")INIT

          queue " address OPER"                                          

          queue " "Command(V XCF,"SYSID",OFF) NOOUTPUT""   <- These quotes are not right, need to verify this

          queue ")Proc"                                    

          queue "TRACE 'i'"                                

          queue "smfid = OPSINFO('SMFID')"                 

          queue "REPID = MSG.REPLYID"                      

          queue "address oper ""r ""repid"",sysname=""smfid"

          Address AOF                                      

          "Enable *DYNAMIC.IXC371D"                         



  • 7.  Re: dynamic rule not loading before command issued.

    Posted 08-26-2016 10:48 AM

    Chris,

     

    Definite timing issue caused by the code to enable the dynamic rule to fire on IXC371D being sent to the AOF queue, and not 'performed' until the triggering SHUTSYS rule completed/exited. Thus, the VARY command was issued before the rule was enabled to reply to it. While adding the VARY command in the INIT section may help, there still 'may' be some timing exposure caused by the VARY command being issued (which generates IXC371D) before or at same time rule is enabled. Here are some other suggestions to consider:

    1) Enable the dynamic IXC371D rule 'earlier' in the shutdown procedure. Then, issue the VARY at the end of your shutdown logic.

    2) Create and auto-enable a permanent IXC371D rule, and include logic to only reply if some shutdown variable is set (probably setting some shutdown flag at the beginning of system shutdown) 

    3) Reply to XCF and final IPL actions within outboard automation (Automation Point) if being utilized

    4) At the end of SHUTSYS rule, trigger a 'final' OPS/REXX pgm that has logic that not only does final cleanup  and IPL related actions (such as cancel any SSM job that may be up, stop OPS and security, etc) but also obtains an ACTIVE system in the sysplex and then triggers automation on that system to - 1) monitor shutdown of OPS and security package on the system being shutdown then - 2) issues the VARY XCF command and reply to XCF WTORS and then - 3) Recognizes when the system is removed from the sysplex so you can automatically trigger AP (if using) to HMC reset or send banner alert to operations indicating it is good to re-IPL.

     

    I can send you a sample of the SHUTXCF rule and pgm that I use in-house and have distributed as well if you want to see more details of #4.

     

    Dave       



  • 8.  Re: dynamic rule not loading before command issued.

    Posted 09-01-2016 01:46 PM

    Micheal, I would like to see your SHUTXCF rule, that may come in useful in the future, but here is what I ended up doing.  

     

    I kept it simple, I didn't really want a perm rule, in case something happened and it got stuck enabled for some reason.   One of the other requirements was that I leave Operations the ability to stop the reply to XCF, just in case (who knows ).   So I created two dynamic TOD rules, the first one fires 5 seconds after being enabled and issues the Vary XCF command.  Then I have a 20 second delay on the reply rule that uses OPSTATUS to find the wtor.     

     

    This will be changed up again in the near future I have been told I will be allowed to set up the AUTOIPL function, so there will need to be some wtor's in the beginning of the shutdown that will ask if this is a straight up and down with the same address.  Then us the V XCF,sysid,OFF,REIPL command for a no delay activate.

     

    clearq=OPSCLEDQ()                                                    
    queue ")tod *+25 seconds"                                            
    queue ")Proc"                                                        
    queue "smfid = OPSINFO('SMFID')"                                     
    queue "TRACE 'i'"                                                    
    queue "wtor = OPSTATUS('R','X','*')"                                 
    queue "do while QUEUED() > 0"                                        
    queue "  parse pull Repid msgtxt"                                    
    queue "  if pos('IXC371D',MSGTXT) > 0 then do "                      
    queue "  ADDRESS OPER ""r ""repid"",sysname=""smfid"                 
    queue "  end"                                                        
    queue "end"                                                          
    queue "ADDRESS AOF ""Disable SSM.SSMSHUTM"""                         
    Address AOF                                                          
    "Enable *DYNAMIC.IXC371D"                                            
    clearq=OPSCLEDQ()                                                    
    queue ")TOD *+5 seconds"                                             
    queue ")INIT"                                                        
    queue "smfid = OPSINFO('SMFID')"                                     
    queue ")Proc"                                                        
    queue "/*TRACE 'i'*/"                                                
    queue "msg1 ='The vary XCF cmd is being issued for 'smfid', there'"  
    queue "msg2 ='is a 20 second delay before ops responds'              "
    queue "msg3 = '**YOU CAN ABORT VARY BY ISSUING ##CANCEL**'"          
    queue "mlwtxt.1 = COPIES('*',55)"                                    
    queue "mlwtxt.2 = '* '||CENTER(msg1,50)||' **'"                      
    queue "mlwtxt.3 = '* '||CENTER(msg2,50)||' **'"                
    queue "mlwtxt.4 = '* '||CENTER(msg3,50)||' **'"                
    queue "mlwtxt.5 = COPIES('*',55)"                              
    queue "address WTO"                                            
    queue """Msgid(OPSSHUTI) TEXTVAR(mlwtxt.) ROUTE(2) hilite"""   
    queue "address oper ""command(V XCF,""smfid"",OFF)"""          
    Address AOF                                                    
    "Enable *DYNAMIC.VXCFOFF"