Browse Source

Merge pull request #6929 from tzumainn/heat-checks

Automatic merge from submit-queue.

Add OpenStack heat checks

If the openstack client is present:
 * validates the templates
 * show a clearer stack failure summary if the stack fails to create
OpenShift Merge Robot 7 years ago
parent
commit
628ce69140
1 changed files with 69 additions and 1 deletions
  1. 69 1
      roles/openshift_openstack/tasks/provision.yml

+ 69 - 1
roles/openshift_openstack/tasks/provision.yml

@@ -4,8 +4,58 @@
   when:
   - openshift_openstack_stack_state == 'present'
 
+- name: check for openstack client
+  command: openstack
+  register: openstack_cli_exists
+  ignore_errors: True
+
+- name: validate the Heat template
+  command: openstack orchestration template validate -t {{ stack_template_path }}
+  register: template_validation_output
+  when: openstack_cli_exists|succeeded
+
+- name: Check if the stack exists
+  command: openstack stack show {{ openshift_openstack_stack_name }}
+  ignore_errors: True
+  register: stack_exists
+  when: openstack_cli_exists|succeeded
+
+- name: Dry-run the stack (create)
+  command: openstack stack create --dry-run -t {{ stack_template_path }} {{ openshift_openstack_stack_name }}
+  ignore_errors: True
+  register: stack_create_dry_run_output
+  when:
+  - openstack_cli_exists|succeeded
+  - stack_exists|failed
+
+- name: Dry-run the stack (update)
+  command: openstack stack update --dry-run -t {{ stack_template_path }} {{ openshift_openstack_stack_name }}
+  ignore_errors: True
+  register: stack_update_dry_run_output
+  when:
+  - openstack_cli_exists|succeeded
+  - stack_exists|succeeded
+
+- name: Show the dry run errors (create)
+  debug: var=stack_create_dry_run_output.stderr
+  when:
+  - openstack_cli_exists|succeeded
+  - stack_create_dry_run_output|failed
+
+- name: Show the dry run errors (update)
+  debug: var=stack_update_dry_run_output.stderr
+  when:
+  - openstack_cli_exists|succeeded
+  - stack_update_dry_run_output|failed
+
+- fail:
+    msg: The Heat stack creation failed. Please inspect the message above.
+  when:
+  - openstack_cli_exists|succeeded
+  - (stack_create_dry_run_output|failed or stack_update_dry_run_output|failed)
+
 - name: Handle the Stack (create/delete)
-  ignore_errors: False
+  ignore_errors: True
   register: stack_create
   os_stack:
     name: "{{ openshift_openstack_stack_name }}"
@@ -13,6 +63,24 @@
     template: "{{ stack_template_path | default(omit) }}"
     wait: yes
 
+- name: get errors in stack creation, if any
+  command: openstack stack failures list {{ openshift_openstack_stack_name }}
+  register: stack_create_failures
+  when:
+  - openstack_cli_exists|succeeded
+  - stack_create|failed
+
+- name: show errors in stack creation, if any
+  debug: var=stack_create_failures
+  when:
+  - openstack_cli_exists|succeeded
+  - stack_create|failed
+
+- fail:
+    msg: Stack creation failed
+  when:
+  - stack_create|failed
+
 - name: Add the new nodes to the inventory
   meta: refresh_inventory