k8s minor bug fixes (#56168)

Ensure `wait_condition`s with `Status: Unknown` actually
complete

Return k8s object after wait rather than k8s object before
wait when object is patched.
This commit is contained in:
Will Thames 2019-05-22 16:08:22 +10:00 committed by René Moser
parent 3e8ca0285f
commit 4065692e13
3 changed files with 9 additions and 2 deletions

View file

@ -0,0 +1,3 @@
bugfixes:
- k8s - ensure wait_condition works when Status is Unknown
- k8s - ensure k8s returns result of a resource update as it is at the end of the wait period

View file

@ -347,7 +347,6 @@ class KubernetesRawModule(KubernetesAnsibleModule):
if wait: if wait:
success, result['result'], result['duration'] = self.wait(resource, definition, wait_timeout, condition=wait_condition) success, result['result'], result['duration'] = self.wait(resource, definition, wait_timeout, condition=wait_condition)
match, diffs = self.diff_objects(existing.to_dict(), result['result']) match, diffs = self.diff_objects(existing.to_dict(), result['result'])
result['result'] = k8s_obj
result['changed'] = not match result['changed'] = not match
result['method'] = 'patch' result['method'] = 'patch'
result['diff'] = diffs result['diff'] = diffs
@ -437,6 +436,11 @@ class KubernetesRawModule(KubernetesAnsibleModule):
# There should never be more than one condition of a specific type # There should never be more than one condition of a specific type
match = match[0] match = match[0]
if match.status == 'Unknown': if match.status == 'Unknown':
if match.status == condition['status']:
if 'reason' not in condition:
return True
if condition['reason']:
return match.reason == condition['reason']
return False return False
status = True if match.status == 'True' else False status = True if match.status == 'True' else False
if status == condition['status']: if status == condition['status']:

View file

@ -265,7 +265,7 @@
- condition.reason == "DeploymentPaused" - condition.reason == "DeploymentPaused"
- condition.status == "Unknown" - condition.status == "Unknown"
vars: vars:
condition: '{{ pause_deploy.result.status.conditions | selectattr("type", "Progressing")).0 }}' condition: '{{ pause_deploy.result.status.conditions | json_query("[?type==`Progressing`]") | first }}'
- name: add a service based on the deployment - name: add a service based on the deployment
k8s: k8s: