diff --git a/cluster/juju/layers/kubernetes-master/reactive/kubernetes_master.py b/cluster/juju/layers/kubernetes-master/reactive/kubernetes_master.py index f866471f934..79af30d6f96 100644 --- a/cluster/juju/layers/kubernetes-master/reactive/kubernetes_master.py +++ b/cluster/juju/layers/kubernetes-master/reactive/kubernetes_master.py @@ -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') diff --git a/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py b/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py index 82b7d3abca9..6d6e7875a42 100644 --- a/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py +++ b/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py @@ -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')