Skip to content

Commit

Permalink
sap_swpm: Improved SUM handling and lint fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Rob Dobozy committed Jan 3, 2025
1 parent 10330eb commit 489bdac
Showing 1 changed file with 83 additions and 75 deletions.
158 changes: 83 additions & 75 deletions roles/sap_swpm/tasks/post_install/sum_push_to_finish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,16 @@

# Check if the SUMup process is running, give it 5 minutes to start
- name: Check if SAPup_real process is running (wait for 5 minutes until it starts)
ansible.builtin.shell: pgrep -c -u "{{ sap_swpm_sid | lower }}adm" -f SAPup_real
ansible.builtin.command: pgrep -c -u "{{ sap_swpm_sid | lower }}adm" -f SAPup_real
register: _sapup_process
retries: 5
delay: 60
until: _sapup_process.rc == 0 and _sapup_process.stdout|int > 0
failed_when: _sapup_process.rc != 0
changed_when: false

# Check the SUM status via SUMOBSEVER.XML, wait for 60 minutes until we are in BIND_PATCH phase
- name: Checking the status of SUM
- name: Checking the status of SUM (BIND_PATCH)
ansible.builtin.uri:
url: "https://localhost:1129/lmsl/sumobserver/{{ sap_swpm_sid | upper }}/analysis/SUMOBSERVER.XML"
method: GET
Expand All @@ -30,7 +31,7 @@
failed_when: _sap_swpm_sum_push.status != 200 or '<dialogId>SUM4ABAP|CONFIGURE|PREP_EXTENSION|BIND_PATCH|PatchSelection</dialogId>' not in _sap_swpm_sum_push.content

# Get the config XML from SUM, repeat 3 times in case SUM is still busy and doesn't respond promptly
- name: Get the config XML from SUM
- name: Get the config XML from SUM (BIND_PATCH)
ansible.builtin.uri:
url: "https://localhost:1129/slp/sumabap/{{ sap_swpm_sid | upper }}/config"
method: GET
Expand All @@ -48,7 +49,7 @@
failed_when: _sap_swpm_sum_push_config.status != 200

# Get the CSRF token from SUM by calling config
- name: Get the CSRF token from SUM
- name: Get the CSRF token from SUM (BIND_PATCH)
ansible.builtin.uri:
url: "https://localhost:1129/slp/sumabap/{{ sap_swpm_sid | upper }}/config"
method: GET
Expand All @@ -65,7 +66,7 @@
failed_when: _sap_swpm_sum_push.status != 200

# Post the config XML back to SUM unchanged as we want to keep the default patch levels as per the XML file. This will move SUM to the next step.
- name: Move SUM to the next step
- name: Move SUM to the next step (SPAUINFO)
ansible.builtin.uri:
url: "https://localhost:1129/slp/sumabap/{{ sap_swpm_sid | upper }}/config"
method: POST
Expand All @@ -86,7 +87,7 @@
# At this point SUM should be running. This will take anything between 6-12 hours to complete.
# Patiently check every 10 minutes to see if SUM has completed all the steps and is now in the SPAUINFO step.
# Check the SUM status via SUMOBSEVER.XML
- name: Checking the status of SUM
- name: Checking the status of SUM (SPAUINFO)
ansible.builtin.uri:
url: "https://localhost:1129/lmsl/sumobserver/{{ sap_swpm_sid | upper }}/analysis/SUMOBSERVER.XML"
method: GET
Expand All @@ -96,78 +97,85 @@
user: "{{ sap_swpm_sid | lower }}adm"
password: "{{ sap_swpm_sap_sidadm_password }}"
register: _sap_swpm_sum_push
until: _sap_swpm_sum_push.status == 200 and '<dialogId>SUM4ABAP|POST-EXECUTE|MAIN_POSTPROC|SPAUINFO|FinishSPAU</dialogId>' in _sap_swpm_sum_push.content
until: _sap_swpm_sum_push.status == 200 and ('<dialogId>SUM4ABAP|POST-EXECUTE|MAIN_POSTPROC|SPAUINFO|FinishSPAU</dialogId>' in _sap_swpm_sum_push.content or '<dialogId>SUM4ABAP|MAIN_POSTCLEAN|EXIT|UnitWizard</dialogId>' in _sap_swpm_sum_push.content)
retries: 72 # 12 hours
delay: 600 # 10 minutes
failed_when: _sap_swpm_sum_push.status != 200 or '<dialogId>SUM4ABAP|POST-EXECUTE|MAIN_POSTPROC|SPAUINFO|FinishSPAU</dialogId>' not in _sap_swpm_sum_push.content
failed_when: _sap_swpm_sum_push.status != 200 or
('<dialogId>SUM4ABAP|POST-EXECUTE|MAIN_POSTPROC|SPAUINFO|FinishSPAU</dialogId>' not in _sap_swpm_sum_push.content and
'<dialogId>SUM4ABAP|MAIN_POSTCLEAN|EXIT|UnitWizard</dialogId>' not in _sap_swpm_sum_push.content)

# Get the config XML from SUM, repeat 3 times in case SUM is still busy and doesn't respond promptly
# Need to get config XML even through we are not going to use it. This is to get the diagtime cookie.
- name: Get the config XML from SUM
ansible.builtin.uri:
url: "https://localhost:1129/slp/sumabap/{{ sap_swpm_sid | upper }}/config"
method: GET
validate_certs: false
return_content: true
status_code: 200
user: "{{ sap_swpm_sid | lower }}adm"
password: "{{ sap_swpm_sap_sidadm_password }}"
# headers:
# Cookie: "{{ _sap_swpm_sum_push.cookies_string }}"
register: _sap_swpm_sum_push_config
until: _sap_swpm_sum_push_config.status == 200
retries: 3
delay: 60
failed_when: _sap_swpm_sum_push_config.status != 200
# If SUM is already in MAIN_POSTCLEAN|EXIT phase it has skipped SPAUINFO and has finished
# No need to do anything else
- name: Check if SUM has skipped SPAUINFO and has finished
block:
# Get the config XML from SUM, repeat 3 times in case SUM is still busy and doesn't respond promptly
# Need to get config XML even through we are not going to use it. This is to get the diagtime cookie.
- name: Get the config XML from SUM (SPAUINFO)
ansible.builtin.uri:
url: "https://localhost:1129/slp/sumabap/{{ sap_swpm_sid | upper }}/config"
method: GET
validate_certs: false
return_content: true
status_code: 200
user: "{{ sap_swpm_sid | lower }}adm"
password: "{{ sap_swpm_sap_sidadm_password }}"
# headers:
# Cookie: "{{ _sap_swpm_sum_push.cookies_string }}"
register: _sap_swpm_sum_push_config
until: _sap_swpm_sum_push_config.status == 200
retries: 3
delay: 60
failed_when: _sap_swpm_sum_push_config.status != 200

# Get the CSRF token from SUM by calling config
- name: Get the CSRF token from SUM
ansible.builtin.uri:
url: "https://localhost:1129/slp/sumabap/{{ sap_swpm_sid | upper }}/config"
method: GET
validate_certs: false
return_content: false
status_code: 200
user: "{{ sap_swpm_sid | lower }}adm"
password: "{{ sap_swpm_sap_sidadm_password }}"
headers:
Cookie: "{{ _sap_swpm_sum_push_config.cookies_string }}"
X-CSRF-Token: Fetch
# X-Requested-With: XMLHttpRequest
register: _sap_swpm_sum_push
failed_when: _sap_swpm_sum_push.status != 200
# Get the CSRF token from SUM by calling config
- name: Get the CSRF token from SUM (SPAUINFO)
ansible.builtin.uri:
url: "https://localhost:1129/slp/sumabap/{{ sap_swpm_sid | upper }}/config"
method: GET
validate_certs: false
return_content: false
status_code: 200
user: "{{ sap_swpm_sid | lower }}adm"
password: "{{ sap_swpm_sap_sidadm_password }}"
headers:
Cookie: "{{ _sap_swpm_sum_push_config.cookies_string }}"
X-CSRF-Token: Fetch
# X-Requested-With: XMLHttpRequest
register: _sap_swpm_sum_push
failed_when: _sap_swpm_sum_push.status != 200

# Post confirmation to SUM that no SPAU is required. This will move SUM to the next step.
- name: Move SUM to the next step
ansible.builtin.uri:
url: "https://localhost:1129/slp/sumabap/{{ sap_swpm_sid | upper }}/config"
method: POST
validate_certs: false
return_content: true
status_code: 200
user: "{{ sap_swpm_sid | lower }}adm"
password: "{{ sap_swpm_sap_sidadm_password }}"
headers:
Cookie: "{{ _sap_swpm_sum_push_config.cookies_string }}"
X-CSRF-Token: "{{ _sap_swpm_sum_push.x_csrf_token }}"
body_format: raw
body: '<config xmlns="http://www.sap.com/lmsl/slp"><Parameter><id>DialogueValue</id><type>slp.parameter.type.SCALAR</type><required>1</required><secure>0</secure><value>yes</value><structure></structure><tuplevalue></tuplevalue><tablevalue></tablevalue><validationResult/></Parameter></config>'
register: _sap_swpm_sum_push
failed_when: _sap_swpm_sum_push.status != 200
# Post confirmation to SUM that no SPAU is required. This will move SUM to the next step.
- name: Move SUM to the next step (Past SPAUINFO)
ansible.builtin.uri:
url: "https://localhost:1129/slp/sumabap/{{ sap_swpm_sid | upper }}/config"
method: POST
validate_certs: false
return_content: true
status_code: 200
user: "{{ sap_swpm_sid | lower }}adm"
password: "{{ sap_swpm_sap_sidadm_password }}"
headers:
Cookie: "{{ _sap_swpm_sum_push_config.cookies_string }}"
X-CSRF-Token: "{{ _sap_swpm_sum_push.x_csrf_token }}"
body_format: raw
body: '<config xmlns="http://www.sap.com/lmsl/slp"><Parameter><id>DialogueValue</id><type>slp.parameter.type.SCALAR</type><required>1</required><secure>0</secure><value>yes</value><structure></structure><tuplevalue></tuplevalue><tablevalue></tablevalue><validationResult/></Parameter></config>'
register: _sap_swpm_sum_push
failed_when: _sap_swpm_sum_push.status != 200

# Finally wait for SUM to finish the final steps. This shouldn't take more than 1 hour.
# Check the SUM status via SUMOBSEVER.XML, wait for 60 minutes until the status is 'MAIN_POSTCLEAN|EXIT'
- name: Checking the status of SUM and making sure it has finished
ansible.builtin.uri:
url: "https://localhost:1129/lmsl/sumobserver/{{ sap_swpm_sid | upper }}/analysis/SUMOBSERVER.XML"
method: GET
validate_certs: false
return_content: true
status_code: 200
user: "{{ sap_swpm_sid | lower }}adm"
password: "{{ sap_swpm_sap_sidadm_password }}"
register: _sap_swpm_sum_push
until: _sap_swpm_sum_push.status == 200 and '<dialogId>SUM4ABAP|MAIN_POSTCLEAN|EXIT|UnitWizard</dialogId>' in _sap_swpm_sum_push.content
retries: 60
delay: 60
failed_when: _sap_swpm_sum_push.status != 200 or '<dialogId>SUM4ABAP|MAIN_POSTCLEAN|EXIT|UnitWizard</dialogId>' not in _sap_swpm_sum_push.content
# Finally wait for SUM to finish the final steps. This shouldn't take more than 1 hour.
# Check the SUM status via SUMOBSEVER.XML, wait for 60 minutes until the status is 'MAIN_POSTCLEAN|EXIT'
- name: Checking the status of SUM and making sure it has finished (MAIN_POSTCLEAN|EXIT)
ansible.builtin.uri:
url: "https://localhost:1129/lmsl/sumobserver/{{ sap_swpm_sid | upper }}/analysis/SUMOBSERVER.XML"
method: GET
validate_certs: false
return_content: true
status_code: 200
user: "{{ sap_swpm_sid | lower }}adm"
password: "{{ sap_swpm_sap_sidadm_password }}"
register: _sap_swpm_sum_push
until: _sap_swpm_sum_push.status == 200 and '<dialogId>SUM4ABAP|MAIN_POSTCLEAN|EXIT|UnitWizard</dialogId>' in _sap_swpm_sum_push.content
retries: 60
delay: 60
failed_when: _sap_swpm_sum_push.status != 200 or '<dialogId>SUM4ABAP|MAIN_POSTCLEAN|EXIT|UnitWizard</dialogId>' not in _sap_swpm_sum_push.content
when: "'<dialogId>SUM4ABAP|POST-EXECUTE|MAIN_POSTPROC|SPAUINFO|FinishSPAU</dialogId>' not in _sap_swpm_sum_push.content"

0 comments on commit 489bdac

Please sign in to comment.