X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=sdnc-a1-controller%2Foam%2Finstallation%2Fansible-server%2Fsrc%2Fmain%2FPlaybooks%2Fansible_huawei_upgrade%400.01.yml;fp=sdnc-a1-controller%2Foam%2Finstallation%2Fansible-server%2Fsrc%2Fmain%2FPlaybooks%2Fansible_huawei_upgrade%400.01.yml;h=c4b76b0f91c38b3d9104a68e6aba245bc6c77ba7;hb=b6fe5a1bbad372357f6b441e1657dd8bbe48dc1a;hp=0000000000000000000000000000000000000000;hpb=4e0c72d8a2570e256911eab7cc34f770a1aa327a;p=nonrtric.git diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_upgrade@0.01.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_upgrade@0.01.yml new file mode 100644 index 00000000..c4b76b0f --- /dev/null +++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_upgrade@0.01.yml @@ -0,0 +1,190 @@ +--- +- hosts: all + tasks: + + - name: compatible with parameter targetSwVersion + set_fact: + sw_to_be_downloaded: "{{targetSwVersion}}" + when: targetSwVersion is defined + + - name: support new parameter swToBeDownloaded + set_fact: + sw_to_be_downloaded: "{{swToBeDownloaded}}" + when: swToBeDownloaded is defined + + - name: compatible with parameter pnfId + set_fact: + ne_identifier: "{{pnfId}}" + when: pnfId is defined + + - name: support new parameter neIdentifier + set_fact: + ne_identifier: "{{neIdentifier}}" + when: neIdentifier is defined + + - name: support new parameter swToBeInstalled + set_fact: + sw_to_be_installed: "{{swToBeInstalled}}" + when: swToBeInstalled is defined + + - name: check if swToBeInstalled is empty + fail: + when: swToBeInstalled is defined and sw_to_be_installed | length == 0 + + - name: support new parameter swVersionToBeActivated + set_fact: + sw_version_to_be_activated: "{{swVersionToBeActivated}}" + when: swVersionToBeActivated is defined + + - name: execute downloadNESw operation + shell: ./swm/downloadNESw --swToBeDownloaded {{sw_to_be_downloaded}} --neIdentifier {{ne_identifier}} + ignore_errors: yes + register: download_result + + - name: build error message for downloadNESw + set_fact: + download_err_msg: + "reason": "downloadNESw failure" + "result": "Failure" + when: download_result is failed + + - name: write error message to file for downloadNESw + local_action: copy content="{{download_err_msg}}" dest="{{inventory_dir}}/{{inventory_hostname}}_results.txt" + when: download_result is failed + + - name: use result of downloadNESw as the result of Playbook + fail: + msg: "{{download_err_msg}}" + when: download_result is failed + + - name: parse response of downloadNESw + set_fact: + download_response: "{{ download_result.stdout | from_json }}" + when: swToBeInstalled is not defined + + - name: fetch file of Notification notifyDownloadNESwStatusChanged + fetch: + dest: "{{inventory_dir}}" + src: "/tmp/notifyDownloadNESwStatusChanged-{{download_response.downloadProcessId}}" + when: swToBeInstalled is not defined + + - name: read contents of Notification notifyDownloadNESwStatusChanged + set_fact: + download_notification: "{{ lookup('file', '{{inventory_dir}}/{{inventory_hostname}}/tmp/notifyDownloadNESwStatusChanged-{{download_response.downloadProcessId}}') | from_json }}" + when: swToBeInstalled is not defined + + - name: delete file of Notification notifyDownloadNESwStatusChanged + local_action: file path="{{inventory_dir}}/{{inventory_hostname}}/tmp/notifyDownloadNESwStatusChanged-{{download_response.downloadProcessId}}" state=absent + when: swToBeInstalled is not defined + + - name: set downloadedNESwInfo + set_fact: + downloaded_ne_sw_info: "{{ download_notification.downloadedNESwInfo }}" + when: swToBeInstalled is not defined + + - name: execute installNESw operation + shell: ./swm/installNESw --swToBeInstalled {{item}} --neIdentifier {{ne_identifier}} + ignore_errors: yes + register: install_result + with_items: "{{ downloaded_ne_sw_info | default([]) }}" + + - name: execute installNESw operation using new parameter + shell: ./swm/installNESw --swToBeInstalled {{item}} --neIdentifier {{ne_identifier}} + ignore_errors: yes + register: install_result_new + with_items: "{{ sw_to_be_installed | default([]) }}" + + - name: unify install result + set_fact: + install_result: "{{ install_result_new }}" + when: swToBeInstalled is defined + + - name: build error message for installNESw + set_fact: + install_err_msg: + "reason": "installNESw failure" + "result": "Failure" + when: install_result is failed + + - name: write error message to file for installNESw + local_action: copy content="{{install_err_msg}}" dest="{{inventory_dir}}/{{inventory_hostname}}_results.txt" + when: install_result is failed + + - name: use result of installNESw as the result of Playbook + fail: + msg: "{{install_err_msg}}" + when: install_result is failed + + - name: set install results list + set_fact: + install_results_list: "{{ install_result.results }}" + when: swVersionToBeActivated is not defined + + - name: parse responses of all the installNESws + set_fact: + install_responses: "{{ install_responses | default([]) + [item.stdout | from_json] }}" + with_items: "{{ install_results_list | default([]) }}" + + - name: fetch files of all the Notifications notifyInstallNESwStatusChanged + fetch: + dest: "{{inventory_dir}}" + src: "/tmp/notifyInstallNESwStatusChanged-{{item.installProcessId}}" + with_items: "{{ install_responses | default([]) }}" + + - name: read contents of all the Notifications notifyInstallNESwStatusChanged + set_fact: + install_notifications: "{{ install_notifications | default([]) + [lookup('file', '{{inventory_dir}}/{{inventory_hostname}}/tmp/notifyInstallNESwStatusChanged-{{item.installProcessId}}') | from_json] }}" + with_items: "{{ install_responses | default([]) }}" + + - name: delete files of all the Notifications notifyInstallNESwStatusChanged + local_action: file path="{{inventory_dir}}/{{inventory_hostname}}/tmp/notifyInstallNESwStatusChanged-{{item.installProcessId}}" state=absent + with_items: "{{ install_responses | default([]) }}" + + - name: parse all the installed NE SW info + set_fact: + installed_ne_sw_info: "{{ installed_ne_sw_info | default([]) + item.installedNESwInfo }}" + with_items: "{{ install_notifications | default([]) }}" + + - name: execute activateNESw operation + shell: ./swm/activateNESw --swVersionToBeActivated {{item}} --neIdentifier {{ne_identifier}} + ignore_errors: yes + register: activate_result + with_items: "{{ installed_ne_sw_info | default([]) }}" + + - name: execute activateNESw operation using new parameter + shell: ./swm/activateNESw --swVersionToBeActivated {{sw_version_to_be_activated}} --neIdentifier {{ne_identifier}} + ignore_errors: yes + register: activate_result_new + when: swVersionToBeActivated is defined + + - name: unify activate result + set_fact: + activate_result: "{{ activate_result_new }}" + when: swVersionToBeActivated is defined + + - name: build error message for activateNESw + set_fact: + activate_err_msg: + "reason": "activateNESw failure" + "result": "Failure" + when: activate_result is failed + + - name: write error message to file for activateNESw + local_action: copy content="{{activate_err_msg}}" dest="{{inventory_dir}}/{{inventory_hostname}}_results.txt" + when: activate_result is failed + + - name: use result of activateNESw as the result of Playbook + fail: + msg: "{{activate_err_msg}}" + when: activate_result is failed + + - name: build success message for activateNESw + set_fact: + activate_success_msg: + "result": "Success" + when: activate_result is not failed + + - name: write success message to file for activateNESw + local_action: copy content="{{activate_success_msg}}" dest="{{inventory_dir}}/{{inventory_hostname}}_results.txt" + when: activate_result is not failed +