Método de llamada de script wsadmin jython en script

Sep 25 2020

¿Hay alguna forma de llamar a funciones específicas en un script jython a través del programa wsadmin?

# BusAndBusMemeber.py

def devCreateBus:
    AdminTask.createSIBus('[-bus intjmsbus -description [SIBus intjmsbus] -busSecurity false]')
    AdminTask.addSIBusMember('[-bus intjmsbus -node ctgNode01 -server MXServer]')
    AdminConfig.save()

def devDeleteBus:
    AdminTask.deleteSIBus('[-bus intjmsbus]')
    AdminConfig.save()

desde el indicador de cmd del servidor:

C: \ IBM \ WebSphere .... \ bin> wsadmin -conntype SOAP -user myUsername -password myPassword -lang jython -f BusAndBusMember.py devCreateBus

O

C: \ IBM \ WebSphere .... \ bin> wsadmin -conntype SOAP -user myUsername -password myPassword -lang jython -f BusAndBusMember.py [devCreateBus]

Hasta ahora, la única forma en que he podido ejecutar el script jython es simplemente escribiendo las AdminTasks.

Gracias.

Respuestas

1 covener Sep 25 2020 at 21:32

Es un truco, pero puede agregar esto a su script:

globals()[sys.argv[0]]()

Una alternativa es mantener sus funciones en este archivo y escribir un segundo script de Python que haga la lógica de qué funciones llamar:

import sys
execfile("BusAndBusMemeber.py")
if sys.argv[0] == "devCreateBus":
  devCreateBus();
else:
  print("Unknown arg %s" % sys.argv[0])
1 ScottKurz Sep 25 2020 at 22:16

También puede combinar las opciones -profiley -ccomo:

.wsadmin.sh -profile "functions.py" -c "print devCreateBus ()"

Todavía se ejecutará a través de todo el script de perfil, por lo que probablemente solo desee funciones allí, no una "principal".