wsadmin méthode d'appel de script jython dans un script

Sep 25 2020

Existe-t-il un moyen d'appeler des fonctions spécifiques dans un script jython via le programme 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()

à partir de l'invite cmd du serveur:

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

Ou alors

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

Jusqu'à présent, la seule façon dont j'ai pu exécuter le script jython est simplement de créer un script pour les AdminTasks.

Merci.

Réponses

1 covener Sep 25 2020 at 21:32

C'est un peu un hack mais vous pouvez ajouter ceci à votre script:

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

Une alternative est de conserver vos fonctions dans ce fichier et d'écrire un deuxième script python qui fait la logique des fonctions à appeler:

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

Vous pouvez également combiner les options -profileet -ccomme:

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

Il fonctionnera toujours à travers tout le script -profile donc vous ne voulez probablement que des fonctions là-dedans et non un "main".