diff --git a/roles/sap_software_download/README.md b/roles/sap_software_download/README.md index 93fdd7b..e26dbe0 100644 --- a/roles/sap_software_download/README.md +++ b/roles/sap_software_download/README.md @@ -256,6 +256,13 @@ A list of SAP software file names to download.
The name or display ID of a transaction from the SAP Maintenance Planner.
If provided, the role will download all files associated with this Maintenance Plan transaction.
+### sap_software_download_mp_stack_xml +- _Type:_ `boolean`
+- _Default:_ `true`
+ +Enables download of Maintenance Plan Stack XML file together with files.
+If set to `false`, Stack XML file will not be downloaded.
+ ### sap_software_download_find_alternatives - _Type:_ `boolean`
- _Default:_ `true`
diff --git a/roles/sap_software_download/defaults/main.yml b/roles/sap_software_download/defaults/main.yml index 50ac01f..d4a209f 100644 --- a/roles/sap_software_download/defaults/main.yml +++ b/roles/sap_software_download/defaults/main.yml @@ -43,6 +43,10 @@ sap_software_download_files: [] # If provided, the role will download all files associated with this Maintenance Plan transaction. sap_software_download_mp_transaction: '' +# Enables download of Maintenance Plan Stack XML file together with files. +# If set to `false`, Stack XML file will not be downloaded. +sap_software_download_mp_stack_xml: true + # Enables searching for alternative files if the requested file is not found. # Only applies to files specified in `sap_software_download_files`. # If set to `false`, the role will not search for alternatives. diff --git a/roles/sap_software_download/meta/argument_spec.yml b/roles/sap_software_download/meta/argument_spec.yml index 6a64e3e..f62f9da 100644 --- a/roles/sap_software_download/meta/argument_spec.yml +++ b/roles/sap_software_download/meta/argument_spec.yml @@ -82,6 +82,14 @@ argument_specs: - The name or display ID of a transaction from the SAP Maintenance Planner. - If provided, the role will download all files associated with this Maintenance Plan transaction. + sap_software_download_mp_stack_xml: + type: bool + required: false + default: true + description: + - Enables download of Maintenance Plan Stack XML file together with files. + - If set to `false`, Stack XML file will not be downloaded. + sap_software_download_find_alternatives: type: bool required: true diff --git a/roles/sap_software_download/tasks/download_stack.yml b/roles/sap_software_download/tasks/download_stack.yml new file mode 100644 index 0000000..c7d6ff2 --- /dev/null +++ b/roles/sap_software_download/tasks/download_stack.yml @@ -0,0 +1,49 @@ +# SPDX-License-Identifier: Apache-2.0 +--- + +- name: Download - Maintenance Plan Stack XML - Get file with Python venv + when: sap_software_download_use_venv | d(true) + community.sap_launchpad.maintenance_planner_stack_xml_download: + suser_id: "{{ sap_software_download_suser_id }}" + suser_password: "{{ sap_software_download_suser_password }}" + transaction_name: "{{ sap_software_download_mp_transaction }}" + dest: "{{ sap_software_download_directory }}" + register: __sap_software_download_stack_results_venv + retries: 1 + environment: + PATH: "{{ __sap_software_download_venv.path }}/bin:{{ ansible_env.PATH }}" + PYTHONPATH: "{{ __sap_software_download_venv.path }}/lib/{{ sap_software_download_python_interpreter }}/site-packages" + VIRTUAL_ENV: "{{ __sap_software_download_venv.path }}" + vars: + ansible_python_interpreter: "{{ __sap_software_download_venv.path ~ '/bin/' ~ sap_software_download_python_interpreter }}" + ignore_errors: true # Errors are ignored and validated afterwards + + +- name: Download - Maintenance Plan Stack XML - Get file with Python system default + when: not sap_software_download_use_venv | d(true) + community.sap_launchpad.maintenance_planner_stack_xml_download: + suser_id: "{{ sap_software_download_suser_id }}" + suser_password: "{{ sap_software_download_suser_password }}" + transaction_name: "{{ sap_software_download_mp_transaction }}" + dest: "{{ sap_software_download_directory }}" + register: __sap_software_download_stack_results_default + retries: 1 + vars: + ansible_python_interpreter: "{{ '/usr/bin/' ~ sap_software_download_python_interpreter }}" + ignore_errors: true # Errors are ignored and validated afterwards + + +- name: Download - Maintenance Plan Stack XML - Set fact with maintenance_planner_stack_xml_download output + ansible.builtin.set_fact: + __sap_software_download_stack_results: "{{ __sap_software_download_stack_results_venv + if sap_software_download_use_venv | d(true) else __sap_software_download_stack_results_default }}" + +- name: Download - Maintenance Plan Stack XML - Show failed results + ansible.builtin.fail: + msg: | + Download of Stack XML failed. + Either ensure correct value in `sap_software_download_mp_transaction` + or ignore this error with `sap_software_download_ignore_plan_not_found` set to `true`. + when: + - not sap_software_download_ignore_plan_not_found | d(false) + - __sap_software_download_stack_results.failed diff --git a/roles/sap_software_download/tasks/main.yml b/roles/sap_software_download/tasks/main.yml index 299dcf5..4763943 100644 --- a/roles/sap_software_download/tasks/main.yml +++ b/roles/sap_software_download/tasks/main.yml @@ -29,6 +29,13 @@ - sap_software_download_validate_relationships +- name: SAP Software Download - Download - Stack XML {{ sap_software_download_mp_transaction | d('') }} + ansible.builtin.include_tasks: + file: download_stack.yml + when: + - sap_software_download_mp_transaction | length > 0 + - sap_software_download_mp_stack_xml | d(true) + - name: SAP Software Download - Download - Maintenance Plan {{ sap_software_download_mp_transaction | d('') }} ansible.builtin.include_tasks: file: download_plan.yml