Я хочу получить текущую политику перезапуска AppServer (RUNNING, STOPPED или PREVIOUS) с использованием Jython.
servers = AdminTask.listServers('[-serverType APPLICATION_SERVER]').splitlines()
for server in servers:
print server
print AdminConfig.showAttribute(server, "monitoringPolicy")
break
Это дало мне исключение, что атрибут недействителен:
Исключение произошло при выполнении файла "test.py". Информация об исключении: com.ibm.ws.scripting.ScriptingException: WASX7080E: Неверные атрибуты для типа «Сервер» - «monitorPolicy».
Но я мог получить атрибут, используя print AdminConfig.showall(server)
:
...
[monitoringPolicy [[autoRestart true]
[maximumStartupAttempts 3]
[nodeRestartState STOPPED]
[pingInterval 60]
[pingTimeout 300]]]
...
Для меня это выглядит так: monitoringPolicy
является ключом массива, поэтому должно быть возможно получить состояние перезапуска с помощью
policy = AdminConfig.showAttribute(server, "monitoringPolicy")
restartState = policy["restartState"] # Should be "STOPPED"
В чем проблема?
Редактировать
После более глубокого изучения вывода списка я обнаружил, что пропустил свойство верхнего уровня processDefinitions
, которое является родителем monitoringPolicy
.
* 1025. *
Это печатает:
[(cells/CnxCell/nodes/CnxNode01/servers/UtilCluster_server1|server.xml#JavaProcessDef_1578492353152)]
Но я не могу получить какие-либо дочерние свойства из этого объекта:
# TypeError: sequence subscript must be integer or slice
print pd["monitoringPolicy"]
# AttributeError: 'string' object has no attribute 'monitoringPolicy'
print pd.monitoringPolicy