Skip to content

Commit

Permalink
Interpret scale=0 as a scaler without slaves yet
Browse files Browse the repository at this point in the history
Instead of 'not a scaler'.
  • Loading branch information
cvaroqui committed Feb 8, 2018
1 parent 89d1182 commit 2508d0a
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 22 deletions.
24 changes: 13 additions & 11 deletions lib/osvcd_mon.py
Original file line number Diff line number Diff line change
Expand Up @@ -592,7 +592,7 @@ def service_orchestrator_auto(self, svc, smon, status):
#self.log.info("service %s orchestrator out (hard affinity with %s)",
# svc.svcname, ','.join(intersection))
return
if svc.scale_target and smon.global_expect is None:
if svc.scale_target is not None and smon.global_expect is None:
target_children = set([self.scale_svcname(svc.svcname, idx) for idx in range(svc.scale_target)])
current_children = set([svcname for svcname in shared.SERVICES \
if re.match("^[0-9]+\."+svc.svcname+"$", svcname)])
Expand Down Expand Up @@ -870,16 +870,18 @@ def service_orchestrator_manual(self, svc, smon, status):
self.service_start(svc.svcname)

def scaling_worker(self, svc):
for idx in range(svc.scale_target):
svcname = self.scale_svcname(svc.svcname, idx)
if svcname not in shared.SERVICES:
self.service_create_provision_from(svcname, svc)
for svcname in shared.SERVICES:
if re.match("^[0-9]+\."+svc.svcname+"$", svcname):
idx = int(svcname.split(".")[0])
if idx >= svc.scale_target:
self.set_smon(svcname, global_expect="purged")
self.set_smon(svc.svcname, global_expect="unset", status="idle")
if svc.scale_target is None:
return
for idx in range(svc.scale_target):
svcname = self.scale_svcname(svc.svcname, idx)
if svcname not in shared.SERVICES:
self.service_create_provision_from(svcname, svc)
for svcname in shared.SERVICES:
if re.match("^[0-9]+\."+svc.svcname+"$", svcname):
idx = int(svcname.split(".")[0])
if idx >= svc.scale_target:
self.set_smon(svcname, global_expect="purged")
self.set_smon(svc.svcname, global_expect="unset", status="idle")

def non_leaders_stopped(self, svc):
for nodename, instance in self.get_service_instances(svc.svcname).items():
Expand Down
8 changes: 4 additions & 4 deletions lib/svc.py
Original file line number Diff line number Diff line change
Expand Up @@ -464,7 +464,7 @@ def __init__(self, svcname=None, node=None, cf=None):
# set by the builder
self.conf = os.path.join(rcEnv.paths.pathetc, svcname+".conf")
self.comment = ""
self.scale_target = 0
self.scale_target = None
self.orchestrate = "ha"
self.topology = "failover"
self.placement = "nodes order"
Expand Down Expand Up @@ -630,7 +630,7 @@ def constraints(self):

@lazy
def enslave_children(self):
if self.scale_target:
if self.scale_target is not None:
return True
try:
return self.conf_get("DEFAULT", "enslave_children")
Expand Down Expand Up @@ -4062,9 +4062,9 @@ def scale(self):
"""
try:
value = int(self.options.destination_node)
assert value > 0
assert value >= 0
except Exception:
raise ex.excError("invalid scale target: set '--to <n>' where n>0")
raise ex.excError("invalid scale target: set '--to <n>' where n>=0")
self._set("DEFAULT", "scale", str(value))

def switch(self):
Expand Down
13 changes: 8 additions & 5 deletions lib/svcBuilder.py
Original file line number Diff line number Diff line change
Expand Up @@ -2059,6 +2059,8 @@ def build(name, minimal=False, svcconf=None, node=None):

try:
svc.scale_target = svc.conf_get("DEFAULT", "scale")
if isinstance(svc.scale_target, int) and svc.scale_target < 0:
svc.scale_target = 0
except ex.OptNotFound as exc:
svc.scale_target = exc.default

Expand All @@ -2072,10 +2074,11 @@ def build(name, minimal=False, svcconf=None, node=None):
except ex.OptNotFound as exc:
svc.placement = exc.default

for i in range(svc.scale_target):
name = str(i)+"."+svc.svcname
if name not in svc.children:
svc.children.append(name)
if svc.scale_target is not None:
for i in range(svc.scale_target):
name = str(i)+"."+svc.svcname
if name not in svc.children:
svc.children.append(name)

try:
svc.orchestrate = svc.conf_get("DEFAULT", "orchestrate")
Expand Down Expand Up @@ -2172,7 +2175,7 @@ def build(name, minimal=False, svcconf=None, node=None):
if minimal:
svc.options.minimal = True
return svc
if svc.scale_target:
if svc.scale_target is not None:
return svc

svc.options.minimal = False
Expand Down
3 changes: 1 addition & 2 deletions lib/svcdict.py
Original file line number Diff line number Diff line change
Expand Up @@ -840,8 +840,7 @@ def __init__(self):
at=True,
order=15,
convert="integer",
default=0,
text="If set to more than 0, create and provision <scale> enslaved child services named <n>.<svcname>."
text="If set, create and provision <scale> enslaved child services named <n>.<svcname>."
)

class KeywordOrchestrate(Keyword):
Expand Down

0 comments on commit 2508d0a

Please sign in to comment.