Menschen-freundliche WebSphere scripting-tool/library?

Entwickle ich viele Skripte für die Verwaltung der Infrastruktur WAR und bin ich immer den Eindruck, dass jemand bei IBM hat geschraubt wsadmin auf Zweck. Es konnte kein Unfall.

Hier ist ein "einfaches" Beispiel:

for node in AdminConfig.list('Node').splitlines():
    nodeName = AdminConfig.showAttribute(node, 'name')
    for srv in AdminConfig.list('Server', node).splitlines():
        if AdminConfig.showAttribute(srv, 'serverType') == 'APPLICATION_SERVER':
            serverName = AdminConfig.showAttribute(srv, 'name')
            prop = AdminConfig.getid('/Node:%s/Server:%s/JavaProcessDef:/JavaVirtualMachine:/Property:java.awt.headless/' % (nodeName, serverName))
            if prop:
                AdminConfig.modify(prop, [ ['value','true'] ])
            else:
                jvm = AdminConfig.getid('/Node:%s/Server:%s/JavaProcessDef:/JavaVirtualMachine:/' % (nodeName, serverName))
                AdminConfig.create('Property', jvm, [ ['name', 'java.awt.headless'], ['value', 'true'] ], 'systemProperties')

Dem obigen Skript ist nicht nur nicht wartbar, es ist nur nicht lesbar. Die wsadmin Werkzeug ist ein nur-schreiben-tool! Man schreibt ein Skript und am nächsten Tag kann nicht verstehen, wie es funktioniert oder auch was Sie tut!

Wäre es nicht einfacher so?:

for node in list('Node'):
    nodeName = node.name
    for srv in node.list('Server'):
        if srv.serverType == 'APPLICATION_SERVER':
            jvm = srv.processDefinitions[0].jvmEntries[0]
            jvm.createOrModify('Property', { 'name': 'java.awt.headless' }, { 'value': 'true' })

... man könnte sich leicht ausrechnen, was das Skript tut, ohne dafür Minuten auf den Versuch, zu verstehen, dass hektisch API, wenn nur scripting wurde freundlicher. Nicht zu vergessen die einfache Wartung.

Hat sich schon mal jemand gesehen/versucht zu implementieren, ein freundlicher administration tool (oder wsadmin-Bibliothek)?

Ich Frage deshalb, weil ich bin eigentlich Vorhaben zu tun, entwickeln eine freundliche Jython Bibliothek, ich möchte nur vermeiden, das Rad neu erfinden.

Ich habe gesehen, viel von task-orientierte Jython Bibliotheken. Einige von Ihnen sind in neueren Versionen WAR, andere wurden bei IBM developerWorks veröffentlicht, einige Bibliotheken sind über das Internet erhältlich. Für mich sind Sie noch ein API zu lernen und Sie sind nur nützlich für die begrenzte Anzahl von Aufgaben. Ich bin eher auf der Suche für general-purpose-WAR-scripting-tool/library.

Edit: Diese Frage war Teil einer recherche vor einer größeren WebSphere-automation-Projekt. Bibliothek ich wurde gefragt, über die nicht existiert, die Zeit, daher habe ich begonnen, die Entwicklung von WDR. Sie können es hier finden: http://wdr.github.io/WDR/.

  • Für hintergrund, wsadmin begann mit nur Jacl, die eine string-basierte Sprache. Wenn Jython-Unterstützung wurde Hinzugefügt, die Bindungen für AdminConfig etc. wurden wiederverwendet, ist, was bedeutet, dass Sie haben, um die Interaktion mit der string-basierte Bindungen in Jython. Ich Stimme zu, das ist sehr unnatürlich. Ich konnte nie wickeln mein Gehirn um, das ist, warum ich immer noch alle meine wsadmin scripting in Jacl, obwohl Jython selbst ist eine viel schönere Sprache...
  • Genau, und jetzt mit, dass Jacl-legacy-wir haben alles zu tun, splitline () - Aufrufe und viele andere hacks zu handhaben Listen der config-ids und MBean-ids. Es ist eigentlich ganz lustig, dass Jacl ist veraltet im wsadmin (da WAR 5.1?) und blieb der Standard. Auch in der neuesten-und größten 8,5...
  • Jacl verwendet zu werden "veraltet", aber es wurde geändert, um "stabilisiert" in 7.0 und ist noch stabilisiert werden, wie von 8,5 (pic.dhe.ibm.com/infocenter/wasinfo/v8r5/topic/...). "deprecated" heißt, IBM, entfernen Sie die Funktion, aber nicht früher als zwei major-releases nach es ist als veraltet markiert. "stabilisiert" bedeutet, dass IBM hat nicht die Absicht, das entfernen der Funktion, aber Sie haben auch keine Absicht, wesentliche Verbesserungen.
  • Du hast Recht! Es war "undeprecated"! Ganz interessant, wie die Jacl status ändert sich von Version zu Version: WAS7: pic.dhe.ibm.com/infocenter/wasinfo/v7r0/topic/... 6,1: pic.dhe.ibm.com/infocenter/wasinfo/v6r1/topic/... WAR 6.0: pic.dhe.ibm.com/infocenter/wasinfo/v6r0/topic/...
  • Nach der Lektüre über das "undeprecation" ich hab mir überlegt Jacl als Sprache für eine Weile. Dann habe ich aber erinnert sich, dass Schmerzen, die mit "$AdminControl invoke_jmx" und den Zugriff auf die Java-APIs von Jacl. Wenn ich wählen muss, zwischen 2002 jahrgang Jython und 2005 jahrgang Jacl, werde ich lieber bleiben lassen mit Jython sowieso...
  • Es scheint, dass kein tool existiert noch, daher begann ich die Entwicklung eines für mich: github.com/mplonka/WDR. Die aktuelle version ist nur ein Jython-Bibliothek, macht wsadmin mehr "pythonic'. Ich bin noch am überlegen reimplementing es in Groovy&Java.
  • Interessant, danke für den link.

Schreibe einen Kommentar