master/slave => leader/follower
This commit is contained in:
@ -488,7 +488,7 @@ class SpaceAnnotator(object):
|
||||
leader_space.path = leader_fullname
|
||||
|
||||
|
||||
def manage_slave(self,
|
||||
def manage_follower(self,
|
||||
namespace: str,
|
||||
leader_family_name: str,
|
||||
variable: 'Variable',
|
||||
@ -512,8 +512,8 @@ class SpaceAnnotator(object):
|
||||
def convert_groups(self): # pylint: disable=C0111
|
||||
if hasattr(self.space, 'constraints') and hasattr(self.space.constraints, 'group'):
|
||||
for group in self.space.constraints.group:
|
||||
leader_fullname = group.master
|
||||
follower_names = list(group.slave.keys())
|
||||
leader_fullname = group.leader
|
||||
follower_names = list(group.follower.keys())
|
||||
leader_family_name = self.paths.get_variable_family_name(leader_fullname)
|
||||
namespace = self.paths.get_variable_namespace(leader_fullname)
|
||||
leader_name = self.paths.get_variable_name(leader_fullname)
|
||||
@ -527,8 +527,8 @@ class SpaceAnnotator(object):
|
||||
has_a_leader = True
|
||||
else:
|
||||
if has_a_leader:
|
||||
# it's a slave
|
||||
self.manage_slave(namespace,
|
||||
# it's a follower
|
||||
self.manage_follower(namespace,
|
||||
leader_family_name,
|
||||
variable,
|
||||
leader_name,
|
||||
@ -537,7 +537,7 @@ class SpaceAnnotator(object):
|
||||
)
|
||||
ori_leader_family.variable.pop(variable.name)
|
||||
if follower_names == []:
|
||||
# no more slave
|
||||
# no more follower
|
||||
break
|
||||
elif variable.name == leader_name:
|
||||
# it's a leader
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
# Forked by:
|
||||
# Cadoles (http://www.cadoles.com)
|
||||
# Copyright (C) 2019
|
||||
# Copyright (C) 2019-2020
|
||||
|
||||
# distribued with GPL-2 or later license
|
||||
|
||||
@ -172,8 +172,8 @@
|
||||
<!ATTLIST condition source CDATA #REQUIRED>
|
||||
<!ATTLIST condition fallback (True|False) "False">
|
||||
|
||||
<!ELEMENT group (slave+)>
|
||||
<!ATTLIST group master CDATA #REQUIRED>
|
||||
<!ELEMENT group (follower+)>
|
||||
<!ATTLIST group leader CDATA #REQUIRED>
|
||||
<!ATTLIST group description CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT param (#PCDATA)>
|
||||
@ -186,6 +186,6 @@
|
||||
<!ATTLIST target type (family|variable|filelist|iplist|portlist|tcpwrapperlist|packagelist|actionlist) "variable">
|
||||
<!ATTLIST target optional (True|False) "False">
|
||||
|
||||
<!ELEMENT slave (#PCDATA)>
|
||||
<!ELEMENT follower (#PCDATA)>
|
||||
|
||||
<!ELEMENT help ((variable* | family*)*)>
|
||||
|
@ -34,8 +34,8 @@ from .annotator import ERASED_ATTRIBUTES, ActionAnnotator, ServiceAnnotator, Spa
|
||||
from .utils import normalize_family
|
||||
from .error import CreoleOperationError, SpaceObjShallNotBeUpdated, CreoleDictConsistencyError
|
||||
|
||||
# CreoleObjSpace's elements like 'family' or 'slave', that shall be forced to the Redefinable type
|
||||
FORCE_REDEFINABLES = ('family', 'slave', 'service', 'disknod', 'variables', 'family_action')
|
||||
# CreoleObjSpace's elements like 'family' or 'follower', that shall be forced to the Redefinable type
|
||||
FORCE_REDEFINABLES = ('family', 'follower', 'service', 'disknod', 'variables', 'family_action')
|
||||
# CreoleObjSpace's elements that shall be forced to the UnRedefinable type
|
||||
FORCE_UNREDEFINABLES = ('value', 'input', 'profile', 'ewtapp', 'tag', 'saltaction')
|
||||
# CreoleObjSpace's elements that shall be set to the UnRedefinable type
|
||||
|
@ -59,11 +59,11 @@ class IsDefined:
|
||||
if '.' in varname:
|
||||
splitted_var = varname.split('.')
|
||||
if len(splitted_var) != 2:
|
||||
msg = _("Group variables must be of type master.slave")
|
||||
msg = _("Group variables must be of type leader.follower")
|
||||
raise KeyError(msg)
|
||||
master, slave = splitted_var
|
||||
if master in self.context:
|
||||
return slave in self.context[master].slave.keys()
|
||||
leader, follower = splitted_var
|
||||
if leader in self.context:
|
||||
return follower in self.context[leader].follower.keys()
|
||||
return False
|
||||
else:
|
||||
return varname in self.context
|
||||
@ -133,7 +133,7 @@ class CheetahTemplate(ChtTemplate):
|
||||
|
||||
|
||||
class CreoleLeader:
|
||||
def __init__(self, value, slave=None, index=None):
|
||||
def __init__(self, value, follower=None, index=None):
|
||||
"""
|
||||
On rend la variable itérable pour pouvoir faire:
|
||||
for ip in iplist:
|
||||
@ -143,20 +143,20 @@ class CreoleLeader:
|
||||
index is used for CreoleLint
|
||||
"""
|
||||
self._value = value
|
||||
if slave is not None:
|
||||
self.slave = slave
|
||||
if follower is not None:
|
||||
self.follower = follower
|
||||
else:
|
||||
self.slave = {}
|
||||
self.follower = {}
|
||||
self._index = index
|
||||
|
||||
def __getattr__(self, name):
|
||||
"""Get slave variable or attribute of master value.
|
||||
"""Get follower variable or attribute of leader value.
|
||||
|
||||
If the attribute is a name of a slave variable, return its value.
|
||||
Otherwise, returns the requested attribute of master value.
|
||||
If the attribute is a name of a follower variable, return its value.
|
||||
Otherwise, returns the requested attribute of leader value.
|
||||
"""
|
||||
if name in self.slave:
|
||||
value = self.slave[name]
|
||||
if name in self.follower:
|
||||
value = self.follower[name]
|
||||
if isinstance(value, PropertiesOptionError):
|
||||
raise AttributeError()
|
||||
return value
|
||||
@ -164,36 +164,36 @@ class CreoleLeader:
|
||||
return getattr(self._value, name)
|
||||
|
||||
def __getitem__(self, index):
|
||||
"""Get a master.slave at requested index.
|
||||
"""Get a leader.follower at requested index.
|
||||
"""
|
||||
ret = {}
|
||||
for key, values in self.slave.items():
|
||||
for key, values in self.follower.items():
|
||||
ret[key] = values[index]
|
||||
return CreoleLeader(self._value[index], ret, index)
|
||||
|
||||
def __iter__(self):
|
||||
"""Iterate over master.slave.
|
||||
"""Iterate over leader.follower.
|
||||
|
||||
Return synchronised value of master.slave.
|
||||
Return synchronised value of leader.follower.
|
||||
"""
|
||||
for i in range(len(self._value)):
|
||||
ret = {}
|
||||
for key, values in self.slave.items():
|
||||
for key, values in self.follower.items():
|
||||
ret[key] = values[i]
|
||||
yield CreoleLeader(self._value[i], ret, i)
|
||||
|
||||
def __len__(self):
|
||||
"""Delegate to master value
|
||||
"""Delegate to leader value
|
||||
"""
|
||||
return len(self._value)
|
||||
|
||||
def __repr__(self):
|
||||
"""Show CreoleLeader as dictionary.
|
||||
|
||||
The master value is stored under 'value' key.
|
||||
The slaves are stored under 'slave' key.
|
||||
The leader value is stored under 'value' key.
|
||||
The followers are stored under 'follower' key.
|
||||
"""
|
||||
return repr({'value': self._value, 'slave': self.slave})
|
||||
return repr({'value': self._value, 'follower': self.follower})
|
||||
|
||||
def __eq__(self, value):
|
||||
return value == self._value
|
||||
@ -214,7 +214,7 @@ class CreoleLeader:
|
||||
return self._value >= value
|
||||
|
||||
def __str__(self):
|
||||
"""Delegate to master value
|
||||
"""Delegate to leader value
|
||||
"""
|
||||
return str(self._value)
|
||||
|
||||
@ -227,7 +227,7 @@ class CreoleLeader:
|
||||
def __contains__(self, item):
|
||||
return item in self._value
|
||||
|
||||
async def add_slave(self, config, name, path):
|
||||
async def add_follower(self, config, name, path):
|
||||
if isinstance(self._value, list):
|
||||
values = []
|
||||
for idx in range(len(self._value)):
|
||||
@ -237,7 +237,7 @@ class CreoleLeader:
|
||||
values.append(err)
|
||||
else:
|
||||
raise Exception('hu?')
|
||||
self.slave[name] = values
|
||||
self.follower[name] = values
|
||||
|
||||
|
||||
class CreoleExtra:
|
||||
@ -285,7 +285,7 @@ class CreoleTemplateEngine:
|
||||
leader = CreoleLeader(await suboption.value.get())
|
||||
self.creole_variables_dict[await suboption.option.name()] = leader
|
||||
else:
|
||||
await leader.add_slave(self.config,
|
||||
await leader.add_follower(self.config,
|
||||
await suboption.option.name(),
|
||||
await suboption.option.path())
|
||||
else:
|
||||
@ -306,7 +306,7 @@ class CreoleTemplateEngine:
|
||||
leader = CreoleLeader(await suboption.value.get())
|
||||
leader_name = await suboption.option.name()
|
||||
else:
|
||||
await leader.add_slave(self.config,
|
||||
await leader.add_follower(self.config,
|
||||
await suboption.option.name(),
|
||||
await suboption.option.path())
|
||||
variables[leader_name] = leader
|
||||
|
Reference in New Issue
Block a user