Измените MailSession в WebSphere для подключений HCL с обнаружением изменений, если что-то нужно изменить или было изменено

Я хочу изменить значение по умолчанию lcnotificationпочтовый сеанс HCL Connections 6.5 / 7 в WAS. Поскольку это автоматизировано с помощью Ansible, я хотел бы определить, остались ли желаемые настройки или их нужно установить, включая полную синхронизацию узлов в случае, если что-то было изменено. Я изо всех сил пытаюсь определить это правильно, поскольку ни AdminConfig.modify ни AdminConfig.save подскажите, было ли что-то изменено или нет.

Итак, я попытался получить MailSession объект и проверьте, соответствует ли каждое из моих свойств, которое я хотел бы установить:

      properties = [
    ["mailTransportHost", "{{ mail_host }}"],
    ["mailTransportUser", "{{ mail_user }}"],
    ["mailTransportPassword", "{{ mail_pw }}"],
    ["mailFrom", "{{ mail_sender }}"],
    ["debug", "{{ mail_debug | lower }}"]
]

session = AdminConfig.list('MailSession', 'lcnotification*')
existing = AdminConfig.showall(session)
isModified = 0
for line in existing.splitlines():
    noBrackets = line[1:-1]
    firstSpace = noBrackets.index(" ")
    key = noBrackets[0:firstSpace]
    val = noBrackets[firstSpace:].strip()
#       print key + " -> " + val

    for prop in properties:
        propKey = prop[0]
        propVal = prop[1]
        if propKey == key and val != propVal:
            print(propKey + " not maching:\n\tPresent: " + val + "\n\tWanted: " +
                  propVal)
            isModified = 1

if isModified:
    AdminConfig.modify(session, properties)
    AdminConfig.save()

    import shared
    shared.synchAllNodes()

В вызове Ansible я использую changed_when чтобы проверить, если not machingприсутствует в stdout. Это не работает должным образом, потому что WAS возвращает звезды вместо mailTransportPassword - поэтому я не могу проверить, совпадает ли он:

        stdout: |-
    WASX7209I: Connected to process "dmgr" on node CnxCell-dmgr using SOAP connector;  The type of process is: DeploymentManager
    mailTransportPassword not maching:
            Present: *****
            Wanted: dummypw
    Syncronizing nodeCnxNode01
    -----------------------------------------------------------------------------------------
    Full Resyncronization completed

Я не вижу чистого способа исправить это. Есть ли другой (возможно, даже более чистый) способ проверить, не было ли что-то изменено, и нужно ли выполнить полную повторную синхронизацию?

1 ответ

Я посмотрел на состояние синхронизации узла, и кажется, что WAS правильно определяет, есть ли изменения, которые необходимо синхронизировать. Итак, я пишу свои свойства и проверяю узел синхронизации. Если он не синхронизирован, что-то было изменено -> Нам нужно выполнить полную синхронизацию. Если выводится на стандартный вывод, Ansible может пометить задачу как измененную.

      AdminConfig.modify(session, properties)
AdminConfig.save()

node = AdminControl.completeObjectName('type=NodeSync,*')
isSynced = AdminControl.invoke(node, 'isNodeSynchronized')
print node + "\n\tIs synced: " + isSynced

# Nasty, but the old included Python of WAS still can't handle boolean values
if isSynced == "false":
    # For the change detection
    print "Modified, starting full sync"
    import shared
    shared.synchAllNodes()
Другие вопросы по тегам