From 165724cb3d637473ba4d549ffd891df0cadfbc49 Mon Sep 17 00:00:00 2001 From: fdupont-redhat Date: Wed, 6 Feb 2019 18:13:43 +0100 Subject: [PATCH 1/3] Ansible - Make conversion host record creation idempotent --- .../install-manageiq-conversion-host.yml | 89 ++++++++++--------- ...nageiq-remove-existing-conversion-host.yml | 26 ++++++ 2 files changed, 73 insertions(+), 42 deletions(-) create mode 100644 ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-remove-existing-conversion-host.yml diff --git a/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-conversion-host.yml b/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-conversion-host.yml index c0ccc05e..0b0638ce 100644 --- a/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-conversion-host.yml +++ b/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-conversion-host.yml @@ -1,56 +1,61 @@ --- - include_tasks: "install-manageiq-build-conversion-host-resource-{{ v2v_host_type }}.yml" -- uri: - url: "{{ manageiq_url }}/api/conversion_hosts" - user: "{{ manageiq_username }}" - password: "{{ manageiq_password }}" - method: "POST" - validate_certs: "{{ manageiq_validate_certs | default(true) }}" - body_format: "json" - body: - action: "create" - resource: "{{ manageiq_post_conversion_host_resource }}" - when: - - "manageiq_post_conversion_host_resource is defined" - - block: - - set_fact: - manageiq_conversion_host_resource_tags: - - category: "v2v_transformation_host" - name: "true" - - - set_fact: - manageiq_tag_vddk_transport: - - category: "v2v_transformation_method" - name: "vddk" + - include_tasks: "install-manageiq-remove-existing-conversion-host.yml" - - set_fact: - manageiq_tag_ssh_transport: - - category: "v2v_transformation_method" - name: "ssh" - - - set_fact: - manageiq_conversion_host_resource_tags: "{{ manageiq_conversion_host_resource_tags }} + {{ manageiq_tag_vddk_transport }}" - when: - - "'vddk' in v2v_transport_methods" - - - set_fact: - manageiq_conversion_host_resource_tags: "{{ manageiq_conversion_host_resource_tags }} + {{ manageiq_tag_ssh_transport }}" - when: - - "'ssh' in v2v_transport_methods" - - - name: Tag as conversion host + - name: Create the conversion host record uri: - url: "{{ manageiq_post_conversion_host_resource_href }}/tags" + url: "{{ manageiq_url }}/api/conversion_hosts" user: "{{ manageiq_username }}" password: "{{ manageiq_password }}" method: "POST" validate_certs: "{{ manageiq_validate_certs | default(true) }}" body_format: "json" body: - action: "assign" - resources: "{{ manageiq_conversion_host_resource_tags }}" + action: "create" + resource: "{{ manageiq_post_conversion_host_resource }}" + + - block: + - set_fact: + manageiq_conversion_host_resource_tags: + - category: "v2v_transformation_host" + name: "true" + + - set_fact: + manageiq_tag_vddk_transport: + - category: "v2v_transformation_method" + name: "vddk" + + - set_fact: + manageiq_tag_ssh_transport: + - category: "v2v_transformation_method" + name: "ssh" + + - set_fact: + manageiq_conversion_host_resource_tags: "{{ manageiq_conversion_host_resource_tags }} + {{ manageiq_tag_vddk_transport }}" + when: + - "'vddk' in v2v_transport_methods" + + - set_fact: + manageiq_conversion_host_resource_tags: "{{ manageiq_conversion_host_resource_tags }} + {{ manageiq_tag_ssh_transport }}" + when: + - "'ssh' in v2v_transport_methods" + + - name: Tag as conversion host + uri: + url: "{{ manageiq_post_conversion_host_resource_href }}/tags" + user: "{{ manageiq_username }}" + password: "{{ manageiq_password }}" + method: "POST" + validate_certs: "{{ manageiq_validate_certs | default(true) }}" + body_format: "json" + body: + action: "assign" + resources: "{{ manageiq_conversion_host_resource_tags }}" + + when: + - "manageiq_post_conversion_host_resource_href is defined" when: - - "manageiq_post_conversion_host_resource_href is defined" + - "manageiq_post_conversion_host_resource is defined" diff --git a/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-remove-existing-conversion-host.yml b/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-remove-existing-conversion-host.yml new file mode 100644 index 00000000..72c3bc1d --- /dev/null +++ b/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-remove-existing-conversion-host.yml @@ -0,0 +1,26 @@ +--- +- name: Identify conversion hosts with same name + uri: + url: "{{ manageiq_url }}/api/conversion_hosts?expand=resources&attributes=resource&filter[]=name={{ manageiq_post_conversion_host_resource.name }}" + user: "{{ manageiq_username }}" + password: "{{ manageiq_password }}" + method: "GET" + validate_certs: "{{ manageiq_validate_certs | default(true) }}" + register: manageiq_conversion_hosts_json + +- block: + - name: Isolate the relevant conversion hos + set_fact: + manageiq_existing_conversion_host: "{{ manageiq_conversion_hosts_json.json | json_query('resources[*]') | first }}" + + - name: Delete the existing conversion host record + uri: + url: "{{ manageiq_existing_conversion_host.href }}" + user: "{{ manageiq_username }}" + password: "{{ manageiq_password }}" + method: "DELETE" + validate_certs: "{{ manageiq_validate_certs | default(true) }}" + status_code: 204 + + when: + - "manageiq_conversion_hosts_json.json.subcount != 0" From ddfb0ca9c255c85556dda63a6eb0f1cbd1580b52 Mon Sep 17 00:00:00 2001 From: fdupont-redhat Date: Thu, 7 Feb 2019 08:05:33 +0100 Subject: [PATCH 2/3] Fix linting errors --- .../tasks/install-manageiq-conversion-host.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-conversion-host.yml b/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-conversion-host.yml index 0b0638ce..62c25215 100644 --- a/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-conversion-host.yml +++ b/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-conversion-host.yml @@ -21,27 +21,27 @@ manageiq_conversion_host_resource_tags: - category: "v2v_transformation_host" name: "true" - + - set_fact: manageiq_tag_vddk_transport: - category: "v2v_transformation_method" name: "vddk" - + - set_fact: manageiq_tag_ssh_transport: - category: "v2v_transformation_method" name: "ssh" - + - set_fact: manageiq_conversion_host_resource_tags: "{{ manageiq_conversion_host_resource_tags }} + {{ manageiq_tag_vddk_transport }}" when: - "'vddk' in v2v_transport_methods" - + - set_fact: manageiq_conversion_host_resource_tags: "{{ manageiq_conversion_host_resource_tags }} + {{ manageiq_tag_ssh_transport }}" when: - "'ssh' in v2v_transport_methods" - + - name: Tag as conversion host uri: url: "{{ manageiq_post_conversion_host_resource_href }}/tags" @@ -53,7 +53,7 @@ body: action: "assign" resources: "{{ manageiq_conversion_host_resource_tags }}" - + when: - "manageiq_post_conversion_host_resource_href is defined" From 59b23710580967f85694eeac44b08c6b18ae4960 Mon Sep 17 00:00:00 2001 From: fdupont-redhat Date: Thu, 7 Feb 2019 17:22:57 +0100 Subject: [PATCH 3/3] Fix typo --- .../tasks/install-manageiq-remove-existing-conversion-host.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-remove-existing-conversion-host.yml b/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-remove-existing-conversion-host.yml index 72c3bc1d..79bbe106 100644 --- a/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-remove-existing-conversion-host.yml +++ b/ansible/oVirt.v2v-conversion-host/tasks/install-manageiq-remove-existing-conversion-host.yml @@ -9,7 +9,7 @@ register: manageiq_conversion_hosts_json - block: - - name: Isolate the relevant conversion hos + - name: Isolate the relevant conversion host set_fact: manageiq_existing_conversion_host: "{{ manageiq_conversion_hosts_json.json | json_query('resources[*]') | first }}"