mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-05-31 05:19:09 -07:00
Nxos vxlan vtep vni netcfg fix (#23620)
* Code cleanup Removed 'add' method from CustomNetworkConfig. It is identical to the one inherited from NetworkConfig * Removed unused CustomNetworkConfig import * Replaced ``` def get_existing(module, args): existing = {} netcfg = get_config(module) config = netcfg.get_section(parents) ``` with ``` netcfg = CustomNetworkConfig(indent=2, contents=get_config(module)) ``` get_config returns a string, not an object in 2.3. * Removed non-functioning get_object method in CustomNetworkConfig in favor of the inherited method. Added child_objs property so that expand_selection would work. The original verion never worked correctly as it compared NetworkConfig obj's and str's. * Removed ShellError method in favor or new load_config method. * Removed ShellError method in favor or new load_config method. fixes #20260 * nxos requires a "no" statement to change mcase group. Corrected. Corrected changed logic. * Corrected deleted CustomNetworkConfig import
This commit is contained in:
parent
e518b6f5b4
commit
bbb9f3164c
44 changed files with 35 additions and 112 deletions
|
@ -66,6 +66,10 @@ class ConfigLine(object):
|
|||
def children(self):
|
||||
return _obj_to_text(self._children)
|
||||
|
||||
@property
|
||||
def child_objs(self):
|
||||
return self._children
|
||||
|
||||
@property
|
||||
def parents(self):
|
||||
return _obj_to_text(self._parents)
|
||||
|
@ -368,19 +372,12 @@ class CustomNetworkConfig(NetworkConfig):
|
|||
if S is None:
|
||||
S = list()
|
||||
S.append(configobj)
|
||||
for child in configobj.children:
|
||||
for child in configobj.child_objs:
|
||||
if child in S:
|
||||
continue
|
||||
self.expand_section(child, S)
|
||||
return S
|
||||
|
||||
def get_object(self, path):
|
||||
for item in self.items:
|
||||
if item.text == path[-1]:
|
||||
parents = [p.text for p in item.parents]
|
||||
if parents == path[:-1]:
|
||||
return item
|
||||
|
||||
def to_block(self, section):
|
||||
return '\n'.join([item.raw for item in section])
|
||||
|
||||
|
@ -398,55 +395,3 @@ class CustomNetworkConfig(NetworkConfig):
|
|||
if not obj:
|
||||
raise ValueError('path does not exist in config')
|
||||
return self.expand_section(obj)
|
||||
|
||||
|
||||
def add(self, lines, parents=None):
|
||||
"""Adds one or lines of configuration
|
||||
"""
|
||||
|
||||
ancestors = list()
|
||||
offset = 0
|
||||
obj = None
|
||||
|
||||
## global config command
|
||||
if not parents:
|
||||
for line in to_list(lines):
|
||||
item = ConfigLine(line)
|
||||
item.raw = line
|
||||
if item not in self.items:
|
||||
self.items.append(item)
|
||||
|
||||
else:
|
||||
for index, p in enumerate(parents):
|
||||
try:
|
||||
i = index + 1
|
||||
obj = self.get_section_objects(parents[:i])[0]
|
||||
ancestors.append(obj)
|
||||
|
||||
except ValueError:
|
||||
# add parent to config
|
||||
offset = index * self.indent
|
||||
obj = ConfigLine(p)
|
||||
obj.raw = p.rjust(len(p) + offset)
|
||||
if ancestors:
|
||||
obj.parents = list(ancestors)
|
||||
ancestors[-1].children.append(obj)
|
||||
self.items.append(obj)
|
||||
ancestors.append(obj)
|
||||
|
||||
# add child objects
|
||||
for line in to_list(lines):
|
||||
# check if child already exists
|
||||
for child in ancestors[-1].children:
|
||||
if child.text == line:
|
||||
break
|
||||
else:
|
||||
offset = len(parents) * self.indent
|
||||
item = ConfigLine(line)
|
||||
item.raw = line.rjust(len(line) + offset)
|
||||
item.parents = ancestors
|
||||
ancestors[-1].children.append(item)
|
||||
self.items.append(item)
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue