Support to wait for node deployment to complete

The original os_ironic_node module, nor bifrost as a whole
lacks a concept of waiting for a node deployment to reach an
active state where the conductor no longer has to take any
additional action upon the node.

In order to allow users to utilize the Ansible serial option,
we need to support the ability to wait so the conductor is not
overloaded by the user in specific edge cases.

Change-Id: I1fe3353a56a54ecde25f9f237b85ca009813f541
Depends-On: I69eee2d254cde2fffcf0c1ac7679a623fa7f97a5
This commit is contained in:
Julia Kreger 2015-12-07 08:56:12 -05:00
parent e490f27ada
commit 697bb2d2b3
4 changed files with 19 additions and 0 deletions

View File

@ -42,3 +42,10 @@ testing_user: root
# will be generated using diskimage-builder.
# deploy_image_filename: "deployment_image.qcow2"
# deploy_image: "{{http_boot_folder}}/{{deploy_image_filename}}"
# Under normal circumstances, the os_ironic_node module does not wait for
# the node to reach active state before continuing with the deployment
# process. This means we may have to timeout, to figure out a deployment
# failed. Change wait_for_node_deploy to true to cause bifrost to wait for
# Ironic to show the instance in Active state.
wait_for_node_deploy: false

View File

@ -14,3 +14,11 @@ inventory_dhcp_static_ip: true
inventory_dns: false
deploy_url_protocol: "http"
noauth_mode: true
# Under normal circumstances, the os_ironic_node module does not wait for
# the node to reach active state before continuing with the deployment
# process. This means we may have to timeout, to figure out a deployment
# failed. Change wait_for_node_deploy to true to cause bifrost to wait for
# Ironic to show the instance in Active state.
wait_for_node_deploy: false
wait_timeout: 1800

View File

@ -95,5 +95,7 @@
image_checksum: "{{ test_deploy_image.stat.md5 }}"
image_disk_format: "qcow2"
root_gb: 10
wait: "{{ wait_for_node_deploy }}"
timeout: " {{ wait_timeout | default(1800) }}"
delegate_to: localhost
when: instance_info is not defined or ( instance_info is defined and instance_info | to_json == '{}' )

View File

@ -39,6 +39,7 @@ PROVISION_WAIT_TIMEOUT=${PROVISION_WAIT_TIMEOUT:-900}
NOAUTH_MODE=true
ENABLE_KEYSTONE=false
CLOUD_CONFIG=""
WAIT_FOR_DEPLOY=true
# NOTE(cinerama): We could remove this if we change the CI job to use
# USE_DHCP, BUILD_IMAGE, etc.
@ -148,6 +149,7 @@ ${ANSIBLE} -vvvv \
-e wait_timeout=${PROVISION_WAIT_TIMEOUT} \
-e noauth_mode=${NOAUTH_MODE} \
-e enable_keystone=${ENABLE_KEYSTONE} \
-e wait_for_node_deploy=${WAIT_FOR_DEPLOY} \
${CLOUD_CONFIG}
EXITCODE=$?