From 8e275ab2bd081e459ea1644f9155d64ea53289a7 Mon Sep 17 00:00:00 2001 From: Sascha Marcel Schmidt Date: Wed, 27 Jun 2018 12:30:14 +0200 Subject: [PATCH] change order and validation of bootstrap and rest tasks as well as volumes --- .../heketi/roles/provision/tasks/setup.yml | 22 ++++++++++--------- .../roles/provision/tasks/setup/rest.yml | 7 +----- .../roles/provision/tasks/setup/volumes.yml | 1 + 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/contrib/network-storage/heketi/roles/provision/tasks/setup.yml b/contrib/network-storage/heketi/roles/provision/tasks/setup.yml index 1de5073a7..c2eb0502c 100644 --- a/contrib/network-storage/heketi/roles/provision/tasks/setup.yml +++ b/contrib/network-storage/heketi/roles/provision/tasks/setup.yml @@ -1,17 +1,19 @@ --- -- name: "Test REST endpoint." - uri: { url: "http://localhost:48080/hello", method: "GET", return_content: true } - register: "rest_hello_check" - ignore_errors: true - # Bootstrap heketi -- name: "Bootstrap heketi and start REST endpoint." - when: "rest_hello_check.content != \"Hello from Heketi\"" - include_tasks: "{{ item }}" - with_items: [ "setup/boot.yml", "setup/rest.yml" ] +- name: "Get state of heketi service, deployment and pods." + register: "initial_heketi_state" + changed_when: false + command: "kubectl get services,deployments,pods --selector=deploy-heketi --output=json" - name: "Bootstrap heketi." - when: "rest_hello_check.content == \"Hello from Heketi\"" + when: + - "(initial_heketi_state.stdout|from_json|json_query(\"items[?kind=='Service']\"))|length == 0" + - "(initial_heketi_state.stdout|from_json|json_query(\"items[?kind=='Deployment']\"))|length == 0" + - "(initial_heketi_state.stdout|from_json|json_query(\"items[?kind=='Pod']\"))|length == 0" include_tasks: "setup/boot.yml" +- name: "Test rest endpoint port." + wait_for: { host: "localhost", port: "48080", state: "absent" } +- name: "Start REST endpoint." + include_tasks: "setup/rest.yml" # Prepare heketi topology - name: "Test heketi topology." diff --git a/contrib/network-storage/heketi/roles/provision/tasks/setup/rest.yml b/contrib/network-storage/heketi/roles/provision/tasks/setup/rest.yml index b78395eeb..120768fd2 100644 --- a/contrib/network-storage/heketi/roles/provision/tasks/setup/rest.yml +++ b/contrib/network-storage/heketi/roles/provision/tasks/setup/rest.yml @@ -1,26 +1,22 @@ --- # Enable local REST-Interface - name: "Get heketi initial pod state." - tags: ["test"] register: "initial_heketi_pod" command: "kubectl get pods --selector=deploy-heketi=pod,glusterfs=heketi-pod,name=deploy-heketi --output=json" changed_when: false - name: "Ensure heketi bootstrap pod is up." - tags: ["test"] assert: that: "(initial_heketi_pod.stdout|from_json|json_query('items[*]'))|length == 1" - name: "Temporarily enable local port forwarding to heketi REST interface" - tags: ["test"] vars: initial_heketi_pod_name: "{{ initial_heketi_pod.stdout|from_json|json_query(\"items[*].metadata.name|[0]\") }}" command: "kubectl port-forward {{ initial_heketi_pod_name }} 48080:8080" - async: 180 + async: 600 poll: 0 ignore_errors: "yes" register: "heketi_port_forwarding" changed_when: false - name: "Ensure port forwarding is enabled." - tags: ["test"] retries: 10 delay: 5 assert: @@ -30,7 +26,6 @@ - "heketi_port_forwarding.failed == false" msg: "Port forwarding does not work." - name: "Test REST endpoint." - tags: ["test"] uri: { url: "http://localhost:48080/hello", method: "GET", return_content: true } register: "rest_hello_check" until: "rest_hello_check.content == \"Hello from Heketi\"" diff --git a/contrib/network-storage/heketi/roles/provision/tasks/setup/volumes.yml b/contrib/network-storage/heketi/roles/provision/tasks/setup/volumes.yml index 268ca94a2..e2103973d 100644 --- a/contrib/network-storage/heketi/roles/provision/tasks/setup/volumes.yml +++ b/contrib/network-storage/heketi/roles/provision/tasks/setup/volumes.yml @@ -17,6 +17,7 @@ when: "volume.name == 'heketidbstorage'" - name: "Provision database volume." command: "heketi-cli -s http://localhost:48080 setup-openshift-heketi-storage" + args: { chdir: "{{ artifacts_dir }}", creates: "{{ artifacts_dir }}/{{ heketi-storage.json }}" } when: "heketi_database_volume_exists is undefined" - name: "Get heketi volume ids." command: "heketi-cli -s http://localhost:48080 volume list --json"