Make undercloud resources cleanup more robust
Currently if a job is aborted, job-specific undercloud resources might
not be deleted and kept forever.
This change makes it so that undercloud cleanup playbooks are now run
through the Zuul job's cleanup phase (cleanup-run [1]) instead of
post-run.
Additionally, make the cleanup tasks/playbooks carry on and not fail on
error.
[1]: https://zuul-ci.org/docs/zuul/latest/config/job.html#attr-job.cleanup-run
Change-Id: I92a6ce5c12aed9ac2504c815179ef4da0ecf9fe8
diff --git a/playbooks/kolla-setup-openstack-iscsi-multipath-storpool/post.yaml b/playbooks/kolla-setup-openstack-iscsi-multipath-storpool/post.yaml
index 297f6fa..add473f 100644
--- a/playbooks/kolla-setup-openstack-iscsi-multipath-storpool/post.yaml
+++ b/playbooks/kolla-setup-openstack-iscsi-multipath-storpool/post.yaml
@@ -2,31 +2,34 @@
vars_files:
- vars.yaml
tasks:
- - name: Remove the Kolla Ports from the OpenStack Node
- ansible.builtin.command:
- argv:
- - "{{ os_venv }}/bin/openstack"
- - --os-cloud
- - openstack-testing
- - server
- - remove
- - port
- - "{{ openstack_node }}"
- - "{{ item }}"
- loop:
- - "{{ kolla_network_interface_port }}"
- - "{{ kolla_neutron_external_interface_port }}"
+ - name: Clean Up Undercloud
+ block:
+ - name: Remove the Kolla Ports from the OpenStack Node
+ ansible.builtin.command:
+ argv:
+ - "{{ os_venv }}/bin/openstack"
+ - --os-cloud
+ - openstack-testing
+ - server
+ - remove
+ - port
+ - "{{ openstack_node }}"
+ - "{{ item }}"
+ loop:
+ - "{{ kolla_network_interface_port }}"
+ - "{{ kolla_neutron_external_interface_port }}"
- - name: Delete the Kolla Ports
- ansible.builtin.command:
- argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "port", "delete", "{{ item }}" ]
- loop:
- - "{{ kolla_network_interface_port }}"
- - "{{ kolla_neutron_external_interface_port }}"
+ - name: Delete the Kolla Ports
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "port", "delete", "{{ item }}" ]
+ loop:
+ - "{{ kolla_network_interface_port }}"
+ - "{{ kolla_neutron_external_interface_port }}"
- - name: Delete the StorPool Networks
- ansible.builtin.command:
- argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "network", "delete", "{{ item }}" ]
- loop:
- - "{{ kolla_network_interface_network }}"
- - "{{ kolla_neutron_external_interface_network }}"
\ No newline at end of file
+ - name: Delete the StorPool Networks
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "network", "delete", "{{ item }}" ]
+ loop:
+ - "{{ kolla_network_interface_network }}"
+ - "{{ kolla_neutron_external_interface_network }}"
+ ignore_errors: true
diff --git a/playbooks/setup-juju-client/post.yaml b/playbooks/setup-juju-client/post.yaml
index b57e2fe..ced982f 100644
--- a/playbooks/setup-juju-client/post.yaml
+++ b/playbooks/setup-juju-client/post.yaml
@@ -2,6 +2,8 @@
tasks:
- name: Log Out of the Controller
ansible.builtin.command: juju logout
+ ignore_errors: true
- name: Remove the Juju Configuration Directory
ansible.builtin.command: rm -rf ~/.local/share/juju
+ ignore_errors: true
diff --git a/playbooks/setup-openstack-client/post.yaml b/playbooks/setup-openstack-client/post.yaml
index d2525ac..9b3ab62 100644
--- a/playbooks/setup-openstack-client/post.yaml
+++ b/playbooks/setup-openstack-client/post.yaml
@@ -6,3 +6,4 @@
ansible.builtin.file:
path: "{{ os_creds_dir }}"
state: absent
+ ignore_errors: true
diff --git a/playbooks/setup-openstack-iscsi-multipath-storpool/post.yaml b/playbooks/setup-openstack-iscsi-multipath-storpool/post.yaml
index 0e22ac7..f35b3f2 100644
--- a/playbooks/setup-openstack-iscsi-multipath-storpool/post.yaml
+++ b/playbooks/setup-openstack-iscsi-multipath-storpool/post.yaml
@@ -2,63 +2,66 @@
vars_files:
- vars.yaml
tasks:
- - name: Remove the StorPool Ports from the StorPool Node
- ansible.builtin.command:
- argv:
- - "{{ os_venv }}/bin/openstack"
- - --os-cloud
- - openstack-testing
- - server
- - remove
- - port
- - "{{ storpool_node }}"
- - "{{ item }}"
- loop:
- - "{{ port_node_1_sp_api }}"
- - "{{ port_sp0 }}"
- - "{{ port_sp1 }}"
+ - name: Clean Up Undercloud
+ block:
+ - name: Remove the StorPool Ports from the StorPool Node
+ ansible.builtin.command:
+ argv:
+ - "{{ os_venv }}/bin/openstack"
+ - --os-cloud
+ - openstack-testing
+ - server
+ - remove
+ - port
+ - "{{ storpool_node }}"
+ - "{{ item }}"
+ loop:
+ - "{{ port_node_1_sp_api }}"
+ - "{{ port_sp0 }}"
+ - "{{ port_sp1 }}"
- - name: Remove the StorPool Ports from the OpenStack Node
- ansible.builtin.command:
- argv:
- - "{{ os_venv }}/bin/openstack"
- - --os-cloud
- - openstack-testing
- - server
- - remove
- - port
- - "{{ openstack_node }}"
- - "{{ port_node_2_sp_api }}"
+ - name: Remove the StorPool Ports from the OpenStack Node
+ ansible.builtin.command:
+ argv:
+ - "{{ os_venv }}/bin/openstack"
+ - --os-cloud
+ - openstack-testing
+ - server
+ - remove
+ - port
+ - "{{ openstack_node }}"
+ - "{{ port_node_2_sp_api }}"
- - name: Delete the StorPool Ports
- ansible.builtin.command:
- argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "port", "delete", "{{ item }}" ]
- loop:
- - "{{ port_node_1_sp_api }}"
- - "{{ port_node_2_sp_api }}"
- - "{{ port_sp0 }}"
- - "{{ port_sp1 }}"
+ - name: Delete the StorPool Ports
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "port", "delete", "{{ item }}" ]
+ loop:
+ - "{{ port_node_1_sp_api }}"
+ - "{{ port_node_2_sp_api }}"
+ - "{{ port_sp0 }}"
+ - "{{ port_sp1 }}"
- - name: Delete the StorPool Networks
- ansible.builtin.command:
- argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "network", "delete", "{{ item }}" ]
- loop:
- - "{{ network_sp_api }}"
- - "{{ network_sp0 }}"
- - "{{ network_sp1 }}"
+ - name: Delete the StorPool Networks
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "network", "delete", "{{ item }}" ]
+ loop:
+ - "{{ network_sp_api }}"
+ - "{{ network_sp0 }}"
+ - "{{ network_sp1 }}"
- - name: Remove the StorPool Volume to the StorPool Node
- ansible.builtin.command:
- argv:
- - "{{ os_venv }}/bin/openstack"
- - --os-cloud
- - openstack-testing
- - server
- - remove
- - volume
- - "{{ storpool_node }}"
- - "{{ storpool_volume }}"
+ - name: Remove the StorPool Volume to the StorPool Node
+ ansible.builtin.command:
+ argv:
+ - "{{ os_venv }}/bin/openstack"
+ - --os-cloud
+ - openstack-testing
+ - server
+ - remove
+ - volume
+ - "{{ storpool_node }}"
+ - "{{ storpool_volume }}"
- - name: Delete the StorPool Volume
- ansible.builtin.command:
- argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "volume", "delete", "{{ storpool_volume }}" ]
+ - name: Delete the StorPool Volume
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "volume", "delete", "{{ storpool_volume }}" ]
+ ignore_errors: true
\ No newline at end of file
diff --git a/playbooks/setup-openstack-iscsi-multipath/post.yaml b/playbooks/setup-openstack-iscsi-multipath/post.yaml
index e11f10d..6f9bbda 100644
--- a/playbooks/setup-openstack-iscsi-multipath/post.yaml
+++ b/playbooks/setup-openstack-iscsi-multipath/post.yaml
@@ -2,32 +2,35 @@
vars_files:
- vars.yaml
tasks:
- - name: Remove the Multipath iSCSI Ports from the StorPool Node
- ansible.builtin.command:
- argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "server", "remove", "port", "{{ storpool_node }}", "{{ item }}" ]
- loop:
- - "{{ port_node_1_iscsi0 }}"
- - "{{ port_node_1_iscsi1 }}"
+ - name: Clean Up Undercloud
+ block:
+ - name: Remove the Multipath iSCSI Ports from the StorPool Node
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "server", "remove", "port", "{{ storpool_node }}", "{{ item }}" ]
+ loop:
+ - "{{ port_node_1_iscsi0 }}"
+ - "{{ port_node_1_iscsi1 }}"
- - name: Remove the Multipath iSCSI Ports from the OpenStack Node
- ansible.builtin.command:
- argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "server", "remove", "port", "{{ openstack_node }}", "{{ item }}" ]
- loop:
- - "{{ port_node_2_iscsi0 }}"
- - "{{ port_node_2_iscsi1 }}"
+ - name: Remove the Multipath iSCSI Ports from the OpenStack Node
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "server", "remove", "port", "{{ openstack_node }}", "{{ item }}" ]
+ loop:
+ - "{{ port_node_2_iscsi0 }}"
+ - "{{ port_node_2_iscsi1 }}"
- - name: Delete the Multipath iSCSI Ports
- ansible.builtin.command:
- argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "port", "delete", "{{ item }}" ]
- loop :
- - "{{ port_node_1_iscsi0 }}"
- - "{{ port_node_1_iscsi1 }}"
- - "{{ port_node_2_iscsi0 }}"
- - "{{ port_node_2_iscsi1 }}"
+ - name: Delete the Multipath iSCSI Ports
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "port", "delete", "{{ item }}" ]
+ loop :
+ - "{{ port_node_1_iscsi0 }}"
+ - "{{ port_node_1_iscsi1 }}"
+ - "{{ port_node_2_iscsi0 }}"
+ - "{{ port_node_2_iscsi1 }}"
- - name: Delete Multipath iSCSI Networks
- ansible.builtin.command:
- argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "network", "delete", "{{ item }}" ]
- loop:
- - "{{ network_1 }}"
- - "{{ network_2 }}"
+ - name: Delete Multipath iSCSI Networks
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "network", "delete", "{{ item }}" ]
+ loop:
+ - "{{ network_1 }}"
+ - "{{ network_2 }}"
+ ignore_errors: true
diff --git a/zuul.d/setup-juju-client.yaml b/zuul.d/setup-juju-client.yaml
index 0713595..a5d71a0 100644
--- a/zuul.d/setup-juju-client.yaml
+++ b/zuul.d/setup-juju-client.yaml
@@ -19,7 +19,7 @@
parent: base
description: Prepare hosts for Juju connections
pre-run: playbooks/setup-juju-client/pre.yaml
- post-run: playbooks/setup-juju-client/post.yaml
+ cleanup-run: playbooks/setup-juju-client/post.yaml
timeout: 1800
attempts: 3
secrets:
diff --git a/zuul.d/sp-cinder.yaml b/zuul.d/sp-cinder.yaml
index efd908d..f1c4aa7 100644
--- a/zuul.d/sp-cinder.yaml
+++ b/zuul.d/sp-cinder.yaml
@@ -118,7 +118,7 @@
- playbooks/setup-openstack-iscsi-multipath/pre.yaml
- playbooks/setup-openstack-iscsi-multipath-storpool/pre.yaml
run: playbooks/tempest-and-cinderlib-run.yaml
- post-run:
+ cleanup-run:
- playbooks/setup-openstack-iscsi-multipath-storpool/post.yaml
- playbooks/setup-openstack-iscsi-multipath/post.yaml
- playbooks/setup-openstack-client/post.yaml
@@ -228,7 +228,7 @@
- playbooks/setup-openstack-iscsi-multipath-storpool/pre.yaml
- playbooks/kolla-setup-openstack-iscsi-multipath-storpool/pre.yaml
run: playbooks/kolla-setup-openstack-iscsi-multipath-storpool/run.yaml
- post-run:
+ cleanup-run:
- playbooks/kolla-setup-openstack-iscsi-multipath-storpool/post.yaml
- playbooks/setup-openstack-iscsi-multipath-storpool/post.yaml
- playbooks/setup-openstack-iscsi-multipath/post.yaml