Open
Description
It looks like the design of the YAML group source loading is to fail if the same source exists in two files. Is this a behavior that can be changed? Below is an example of YAML files compiled for 3 clusters. Ideally I'd have the roles
source merged from all 3 files as that's set as the default group source. I wasn't sure if changing this behavior is something that would be open to changing?
==> groups.d/oakley.yaml <==
roles:
oakley-compute: 'n0[004-080,082-496,505-641,643-646,648-693]'
oakley-login: 'oakley0[1-2]'
oakley-gpu: 'n0[281-319,641,643-646,648-660,689-692]'
==> groups.d/owens.yaml <==
roles:
owens-compute: 'o0[001-824]'
owens-login: 'owens-login0[1-4]'
owens-gpu: 'o0[649-802,805-808]'
==> groups.d/ruby.yaml <==
roles:
ruby-compute: 'r[0001-0240,0501-0506,1001]'
ruby-login: 'ruby0[1-2]'
ruby-gpu: 'r0[201-220,506]'
# nodeset -ll
Traceback (most recent call last):
File "/bin/nodeset", line 9, in <module>
load_entry_point('ClusterShell==1.7.3', 'console_scripts', 'nodeset')()
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/usr/lib/python2.7/site-packages/ClusterShell/CLI/Nodeset.py", line 35, in <module>
from ClusterShell.CLI.Error import GENERIC_ERRORS, handle_generic_error
File "/usr/lib/python2.7/site-packages/ClusterShell/CLI/Error.py", line 30, in <module>
from ClusterShell.CLI.Utils import GroupResolverConfigError # dummy but safe
File "/usr/lib/python2.7/site-packages/ClusterShell/CLI/Utils.py", line 30, in <module>
from ClusterShell.NodeSet import NodeSet
File "/usr/lib/python2.7/site-packages/ClusterShell/NodeSet.py", line 69, in <module>
ILLEGAL_GROUP_CHARS)
File "/usr/lib/python2.7/site-packages/ClusterShell/NodeUtils.py", line 501, in __init__
self._parse_config(os.path.dirname(parsed[-1]))
File "/usr/lib/python2.7/site-packages/ClusterShell/NodeUtils.py", line 558, in _parse_config
self._sources_from_yaml(autosfn)
File "/usr/lib/python2.7/site-packages/ClusterShell/NodeUtils.py", line 614, in _sources_from_yaml
self.add_source(source)
File "/usr/lib/python2.7/site-packages/ClusterShell/NodeUtils.py", line 371, in add_source
group_source.name)
ValueError: GroupSource 'roles': name collision