resolve problem with DefuncDevice
renew envlist even when not changed if not, devices in envlist are not exchanged by new instances.
This commit is contained in:
26
devices.py
26
devices.py
@ -632,8 +632,6 @@ class FrappyConfig(Device):
|
|||||||
to_remove = to_remove.difference(addedenv)
|
to_remove = to_remove.difference(addedenv)
|
||||||
prevenv = [k for k in session.experiment.envlist if k not in to_remove]
|
prevenv = [k for k in session.experiment.envlist if k not in to_remove]
|
||||||
envlist = prevenv + [k for k in addedenv if k not in prevenv]
|
envlist = prevenv + [k for k in addedenv if k not in prevenv]
|
||||||
if set(envlist) == set(prevenv):
|
|
||||||
envlist = None
|
|
||||||
|
|
||||||
predef_changes = []
|
predef_changes = []
|
||||||
for aliasname, cfg in predef_aliases:
|
for aliasname, cfg in predef_aliases:
|
||||||
@ -644,7 +642,7 @@ class FrappyConfig(Device):
|
|||||||
|
|
||||||
def check_envalias(self):
|
def check_envalias(self):
|
||||||
envlist, new_aliases, predef_aliases = self.needed_envalias()
|
envlist, new_aliases, predef_aliases = self.needed_envalias()
|
||||||
if envlist:
|
if set(envlist) != set(session.experiment.envlist):
|
||||||
return f"envlist should be {', '.join(envlist)}"
|
return f"envlist should be {', '.join(envlist)}"
|
||||||
anew = [k for k, v in new_aliases.items() if v is not None]
|
anew = [k for k, v in new_aliases.items() if v is not None]
|
||||||
removed = set(new_aliases).difference(anew)
|
removed = set(new_aliases).difference(anew)
|
||||||
@ -695,15 +693,19 @@ class FrappyConfig(Device):
|
|||||||
|
|
||||||
applyAliasConfig() # for other aliases
|
applyAliasConfig() # for other aliases
|
||||||
|
|
||||||
if envlist is not None:
|
prev = set(session.experiment.envlist)
|
||||||
prev = session.experiment.envlist
|
remove = ', '.join(prev.difference(envlist))
|
||||||
removed = set(prev).difference(envlist)
|
session.experiment.setEnvironment(envlist)
|
||||||
session.experiment.setEnvironment(envlist)
|
show = []
|
||||||
if removed:
|
keep = ', '.join(d for d in envlist if d in prev)
|
||||||
session.log.info('removed %s from environment', ', '.join(removed))
|
if keep:
|
||||||
added = set(envlist).difference(prev)
|
show.append(f'keep {keep}')
|
||||||
if added:
|
add = ', '.join(d for d in envlist if d not in prev)
|
||||||
session.log.info('added %s to environment', ', '.join(added))
|
if add:
|
||||||
|
show.append(f'add {add}')
|
||||||
|
if remove:
|
||||||
|
show.append(f'remove {remove}')
|
||||||
|
session.log.info('environment: %s', '; '.join(show))
|
||||||
|
|
||||||
|
|
||||||
class FrappyNode(SecNodeDevice, Moveable):
|
class FrappyNode(SecNodeDevice, Moveable):
|
||||||
|
Reference in New Issue
Block a user