Skip to content

Commit

Permalink
T7010: fix: integration tests add unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
gaige committed Feb 3, 2025
1 parent de7a011 commit 725539a
Show file tree
Hide file tree
Showing 22 changed files with 230 additions and 60 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
minor_changes:
- fix integration tests for `lag_interfaces`
- add unit tests for `lag_interfaces`
Original file line number Diff line number Diff line change
Expand Up @@ -300,10 +300,9 @@ def _add_bond_members(self, want, have):
for key in diff_members:
commands.append(
self._compute_command(
key["member"],
"bond-group",
want["name"],
type="ethernet",
"member interface",
key["member"],
),
)
return commands
Expand Down Expand Up @@ -337,11 +336,10 @@ def _delete_bond_members(self, have):
for member in have["members"]:
commands.append(
self._compute_command(
member["member"],
"bond-group",
have["name"],
"member interface",
member["member"],
remove=True,
type="ethernet",
),
)
return commands
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,14 @@ def __init__(self, module, subspec="config", options="options"):

self.generated_spec = utils.generate_dict(facts_argument_spec)

def get_config(self, connection):
"""Get the configuration from the device
:param connection: the device connection
:rtype: string
:returns: The configuration
"""
return connection.get_config()

def populate_facts(self, connection, ansible_facts, data=None):
"""Populate the facts for lag_interfaces
:param module: the module instance
Expand All @@ -50,7 +58,7 @@ def populate_facts(self, connection, ansible_facts, data=None):
:returns: facts
"""
if not data:
data = connection.get_config()
data = self.get_config(connection)

objs = []
lag_names = findall(r"^set interfaces bonding (\S+)", data, M)
Expand All @@ -62,13 +70,13 @@ def populate_facts(self, connection, ansible_facts, data=None):
members = []
member = {}

group_regex = r".*eth.* '%s'" % lag
group_regex = r"%s member interface .*eth.*" % lag
g_cfg = findall(group_regex, data, M)
for item in g_cfg:
output = search("^set interfaces ethernet (\\S+)", item, M)
output = search("member interface '(\\S+)'", item, M)
if output:
member["member"] = output.group(1).strip("'")
members.append(member)
members.append(deepcopy(member))
obj["name"] = lag.strip("'")
if members:
obj["members"] = members
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---

- name: ensure facts
include_tasks: _get_version.yaml

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---

- name: ensure facts
include_tasks: _get_version.yaml

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
- ansible.builtin.include_tasks: _remove_bond.yaml

- name: Add Bond
vars:
lines: "set interfaces bonding bond0\nset interfaces bonding bond1\n"
ansible.netcommon.cli_config:
config: "{{ lines }}"
config: |-
set interfaces bonding bond0
set interfaces bonding bond1
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ set interfaces bonding bond0 primary 'eth1'
set interfaces bonding bond1 hash-policy 'layer2+3'
set interfaces bonding bond1 mode 'active-backup'
set interfaces bonding bond1 primary 'eth2'
set interfaces ethernet eth1 bond-group 'bond0'
set interfaces ethernet eth2 bond-group 'bond1'
set interfaces bonding bond0 member interface 'eth1'
set interfaces bonding bond1 member interface 'eth2'
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
set interfaces bonding bond0
set interfaces bonding bond0 hash-policy 'layer2'
set interfaces bonding bond0 mode 'active-backup'
set interfaces ethernet eth1 bond-group bond0
set interfaces bonding bond0 member interface 'eth1'
set interfaces bonding bond1
set interfaces bonding bond0 primary 'eth1'
set interfaces bonding bond1 hash-policy 'layer2+3'
set interfaces bonding bond1 mode 'active-backup'
set interfaces ethernet eth2 bond-group bond1
set interfaces bonding bond1 member interface 'eth2'
set interfaces bonding bond1 primary 'eth2'
ansible.netcommon.cli_config:
config: "{{ lines }}"
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
vars:
lines: |-
delete interfaces bonding bond0 hash-policy
delete interfaces ethernet eth1 bond-group bond0
delete interfaces bonding bond0 member interface 'eth1'
delete interfaces bonding bond0 mode
delete interfaces bonding bond0 primary
delete interfaces bonding bond1 hash-policy
delete interfaces ethernet eth2 bond-group bond1
delete interfaces bonding bond1 member interface 'eth2'
delete interfaces bonding bond1 mode
delete interfaces bonding bond1 primary
ansible.netcommon.cli_config:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,17 @@
- name: Assert that the before dicts were correctly generated
assert:
that:
- "{{ populate | symmetric_difference(result['before']) |length == 0 }}"
- populate | symmetric_difference(result['before']) |length == 0

- name: Assert that the correct set of commands were generated
assert:
that:
- "{{ deleted['commands'] | symmetric_difference(result['commands']) |length == 0 }}"
- deleted['commands'] | symmetric_difference(result['commands']) |length == 0

- name: Assert that the after dicts were correctly generated
assert:
that:
- "{{ deleted['after'] | symmetric_difference(result['after']) |length == 0 }}"
- deleted['after'] | symmetric_difference(result['after']) |length == 0

- name: Delete attributes of given interfaces (IDEMPOTENT)
register: result
Expand All @@ -41,6 +41,6 @@
- name: Assert that the before dicts were correctly generated
assert:
that:
- "{{ deleted['after'] | symmetric_difference(result['before']) |length == 0 }}"
- deleted['after'] | symmetric_difference(result['before']) |length == 0
always:
- include_tasks: _remove_bond.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
- name: Assert that gathered dicts was correctly generated
assert:
that:
- "{{ populate | symmetric_difference(result['gathered']) |length == 0 }}"
- populate | symmetric_difference(result['gathered']) |length == 0

always:
- include_tasks: _remove_bond.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,17 @@

- name: Assert that before dicts were correctly generated
assert:
that: "{{ merged['before'] | symmetric_difference(result['before']) |length == 0 }}"
that: merged['before'] | symmetric_difference(result['before']) |length == 0

- name: Assert that correct set of commands were generated
assert:
that:
- "{{ merged['commands'] | symmetric_difference(result['commands']) |length == 0 }}"
- merged['commands'] | symmetric_difference(result['commands']) |length == 0

- name: Assert that after dicts was correctly generated
assert:
that:
- "{{ merged['after'] | symmetric_difference(result['after']) |length == 0 }}"
- merged['after'] | symmetric_difference(result['after']) |length == 0

- name: Merge the provided configuration with the existing running configuration (IDEMPOTENT)
register: result
Expand All @@ -50,6 +50,6 @@
- name: Assert that before dicts were correctly generated
assert:
that:
- "{{ merged['after'] | symmetric_difference(result['before']) |length == 0 }}"
- merged['after'] | symmetric_difference(result['before']) |length == 0
always:
- include_tasks: _remove_bond.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,17 @@
- name: Assert that before dicts were correctly generated
assert:
that:
- "{{ populate | symmetric_difference(result['before']) |length == 0 }}"
- populate | symmetric_difference(result['before']) |length == 0

- name: Assert that correct commands were generated
assert:
that:
- "{{ overridden['commands'] | symmetric_difference(result['commands']) |length == 0 }}"
- overridden['commands'] | symmetric_difference(result['commands']) |length == 0

- name: Assert that after dicts were correctly generated
assert:
that:
- "{{ overridden['after'] | symmetric_difference(result['after']) |length == 0 }}"
- overridden['after'] | symmetric_difference(result['after']) |length == 0

- name: Overrides all device configuration with provided configurations (IDEMPOTENT)
register: result
Expand All @@ -44,6 +44,6 @@
- name: Assert that before dicts were correctly generated
assert:
that:
- "{{ overridden['after'] | symmetric_difference(result['before']) |length == 0 }}"
- overridden['after'] | symmetric_difference(result['before']) |length == 0
always:
- include_tasks: _remove_bond.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

- name: Assert that correct parsing done
assert:
that: "{{ ansible_facts['network_resources']['lag_interfaces'] | symmetric_difference(result['parsed']) |length == 0 }}"
that: ansible_facts['network_resources']['lag_interfaces'] | symmetric_difference(result['parsed']) |length == 0

always:
- include_tasks: _remove_bond.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
- name: Assert that correct set of commands were generated
assert:
that:
- "{{ rendered['commands'] | symmetric_difference(result['rendered']) |length == 0 }}"
- rendered['commands'] | symmetric_difference(result['rendered']) |length == 0

always:
- include_tasks: _remove_bond.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@
- name: Assert that correct set of commands were generated
assert:
that:
- "{{ replaced['commands'] | symmetric_difference(result['commands']) |length == 0 }}"
- replaced['commands'] | symmetric_difference(result['commands']) |length == 0

- name: Assert that before dicts are correctly generated
assert:
that:
- "{{ populate | symmetric_difference(result['before']) |length == 0 }}"
- populate | symmetric_difference(result['before']) |length == 0

- name: Assert that after dict is correctly generated
assert:
that:
- "{{ replaced['after'] | symmetric_difference(result['after']) |length == 0 }}"
- replaced['after'] | symmetric_difference(result['after']) |length == 0

- name: Replace device configurations of listed LAG interfaces with provided configurarions (IDEMPOTENT)
register: result
Expand All @@ -43,6 +43,6 @@
- name: Assert that before dict is correctly generated
assert:
that:
- "{{ replaced['after'] | symmetric_difference(result['before']) |length == 0 }}"
- replaced['after'] | symmetric_difference(result['before']) |length == 0
always:
- include_tasks: _remove_bond.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,20 @@
config:
- name: bond0
hash_policy: layer2+3
mode: 802.3ad
mode: transmit-load-balance
members:
- member: eth1

- name: bond1
hash_policy: layer2
mode: xor-hash
mode: adaptive-load-balance
members:
- member: eth2
state: merged

- name: Assert that changes were applied
assert:
that: "{{ round_trip['after'] | symmetric_difference(result['after']) |length == 0 }}"
that: round_trip['after'] | symmetric_difference(result['after']) |length == 0

- name: Revert back to base config using facts round trip
register: revert
Expand All @@ -60,6 +60,6 @@

- name: Assert that config was reverted
assert:
that: "{{ base_config['after'] | symmetric_difference(revert['after']) |length == 0 }}"
that: base_config['after'] | symmetric_difference(revert['after']) |length == 0
always:
- include_tasks: _remove_bond.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,17 @@

- name: Assert that before dicts were correctly generated
assert:
that: "{{ merged['before'] | symmetric_difference(result['before']) |length == 0 }}"
that: merged['before'] | symmetric_difference(result['before']) |length == 0

- name: Assert that correct set of commands were generated
assert:
that:
- "{{ merged['commands'] | symmetric_difference(result['commands']) |length == 0 }}"
- merged['commands'] | symmetric_difference(result['commands']) |length == 0

- name: Assert that after dicts was correctly generated
assert:
that:
- "{{ merged['after'] | symmetric_difference(result['after']) |length == 0 }}"
- merged['after'] | symmetric_difference(result['after']) |length == 0

- name: Merge the provided configuration with the existing running configuration (IDEMPOTENT)
register: result
Expand All @@ -50,6 +50,6 @@
- name: Assert that before dicts were correctly generated
assert:
that:
- "{{ merged['after'] | symmetric_difference(result['before']) |length == 0 }}"
- merged['after'] | symmetric_difference(result['before']) |length == 0
always:
- include_tasks: _remove_bond.yaml
Loading

0 comments on commit 725539a

Please sign in to comment.