set more accurate status based on charm goal_state

pull/8/head
Kevin W Monroe 2018-06-18 09:24:23 -05:00
parent 6d3f5b75f5
commit ace790c07a
2 changed files with 29 additions and 6 deletions

View File

@ -396,12 +396,25 @@ def set_app_version():
@hookenv.atexit
def set_final_status():
''' Set the final status of the charm as we leave hook execution '''
try:
goal_state = hookenv.goal_state()
except NotImplementedError:
goal_state = {}
if not is_state('kube-api-endpoint.available'):
hookenv.status_set('blocked', 'Waiting for kube-api-endpoint relation')
if 'relations' in goal_state and 'kube-api-endpoint' in goal_state['relations']:
status = 'waiting'
else:
status = 'blocked'
hookenv.status_set(status, 'Waiting for kube-api-endpoint relation')
return
if not is_state('kube-control.connected'):
hookenv.status_set('blocked', 'Waiting for workers.')
if 'relations' in goal_state and 'kube-control' in goal_state['relations']:
status = 'waiting'
else:
status = 'blocked'
hookenv.status_set(status, 'Waiting for workers.')
return
upgrade_needed = is_state('kubernetes-master.upgrade-needed')

View File

@ -1008,10 +1008,20 @@ def missing_kube_control():
missing.
"""
hookenv.status_set(
'blocked',
'Relate {}:kube-control kubernetes-master:kube-control'.format(
hookenv.service_name()))
try:
goal_state = hookenv.goal_state()
except NotImplementedError:
goal_state = {}
if 'relations' in goal_state and 'kube-control' in goal_state['relations']:
hookenv.status_set(
'waiting',
'Waiting for kubernetes-master to become ready')
else:
hookenv.status_set(
'blocked',
'Relate {}:kube-control kubernetes-master:kube-control'.format(
hookenv.service_name()))
@when('docker.ready')