Skip to content

Commit

Permalink
Fix upgrade failure when leader is attached to k8s-master (#47)
Browse files Browse the repository at this point in the history
  • Loading branch information
George Kraft authored and kwmonroe committed Oct 2, 2019
1 parent 1670fa0 commit a1ecead
Showing 1 changed file with 18 additions and 9 deletions.
27 changes: 18 additions & 9 deletions reactive/calico.py
Expand Up @@ -11,7 +11,7 @@

from charms.leadership import leader_get, leader_set
from charms.reactive import when, when_not, when_any, set_state, remove_state
from charms.reactive import hook
from charms.reactive import hook, is_state
from charms.reactive import endpoint_from_flag
from charms.reactive import data_changed
from charmhelpers.core.hookenv import (
Expand All @@ -22,7 +22,8 @@
unit_private_ip,
is_leader,
local_unit,
config as charm_config
config as charm_config,
atexit
)
from charmhelpers.core.host import (
arch,
Expand Down Expand Up @@ -383,7 +384,7 @@ def reconfigure_cni():


@when('etcd.available', 'calico.cni.configured',
'calico.service.installed', 'cni.is-worker',
'calico.service.installed', 'leadership.is_leader',
'leadership.set.calico-v3-data-ready')
@when_not('calico.npc.deployed')
def deploy_network_policy_controller():
Expand Down Expand Up @@ -553,15 +554,23 @@ def reconfigure_bgp_peers():
remove_state('calico.bgp.peers.configured')


@when('calico.service.installed', 'calico.pool.configured',
'calico.cni.configured', 'calico.bgp.globals.configured',
'calico.node.configured', 'calico.bgp.peers.configured')
@when_any('cni.is-master', 'calico.npc.deployed')
@atexit
def ready():
preconditions = [
'calico.service.installed', 'calico.pool.configured',
'calico.cni.configured', 'calico.bgp.globals.configured',
'calico.node.configured', 'calico.bgp.peers.configured'
]
for precondition in preconditions:
if not is_state(precondition):
return
if is_leader() and not is_state('calico.npc.deployed'):
status_set('waiting', 'Waiting to retry deploying policy controller')
return
if not service_running('calico-node'):
status_set('waiting', 'Waiting for service: calico-node')
else:
status_set('active', 'Calico is active')
return
status_set('active', 'Calico is active')


def calicoctl(*args):
Expand Down

0 comments on commit a1ecead

Please sign in to comment.