diff options
Diffstat (limited to 'tests/integration/targets/vyos_interfaces')
12 files changed, 559 insertions, 0 deletions
| diff --git a/tests/integration/targets/vyos_interfaces/defaults/main.yaml b/tests/integration/targets/vyos_interfaces/defaults/main.yaml new file mode 100644 index 00000000..164afead --- /dev/null +++ b/tests/integration/targets/vyos_interfaces/defaults/main.yaml @@ -0,0 +1,3 @@ +--- +testcase: "[^_].*" +test_items: [] diff --git a/tests/integration/targets/vyos_interfaces/meta/main.yaml b/tests/integration/targets/vyos_interfaces/meta/main.yaml new file mode 100644 index 00000000..e380a13e --- /dev/null +++ b/tests/integration/targets/vyos_interfaces/meta/main.yaml @@ -0,0 +1,2 @@ +dependencies: +  - prepare_vyos_tests
\ No newline at end of file diff --git a/tests/integration/targets/vyos_interfaces/tasks/cli.yaml b/tests/integration/targets/vyos_interfaces/tasks/cli.yaml new file mode 100644 index 00000000..655e51ee --- /dev/null +++ b/tests/integration/targets/vyos_interfaces/tasks/cli.yaml @@ -0,0 +1,19 @@ +--- +- name: Collect all cli test cases +  find: +    paths: "{{ role_path }}/tests/cli" +    patterns: "{{ testcase }}.yaml" +    use_regex: true +  register: test_cases +  delegate_to: localhost + +- name: Set test_items +  set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + +- name: Run test case (connection=network_cli) +  include: "{{ test_case_to_run }}" +  vars: +    ansible_connection: network_cli +  with_items: "{{ test_items }}" +  loop_control: +    loop_var: test_case_to_run diff --git a/tests/integration/targets/vyos_interfaces/tasks/main.yaml b/tests/integration/targets/vyos_interfaces/tasks/main.yaml new file mode 100644 index 00000000..415c99d8 --- /dev/null +++ b/tests/integration/targets/vyos_interfaces/tasks/main.yaml @@ -0,0 +1,2 @@ +--- +- { include: cli.yaml, tags: ['cli'] } diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml new file mode 100644 index 00000000..0a44fa45 --- /dev/null +++ b/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml @@ -0,0 +1,17 @@ +--- +- name: Setup +  network.cli.cli_config: +    config: "{{ lines }}" +  vars: +    lines: | +      set interfaces ethernet "{{ intf }}" description 'Configured by Ansible' +      set interfaces ethernet "{{ intf }}" speed 'auto' +      set interfaces ethernet "{{ intf }}" duplex 'auto' +      set interfaces ethernet "{{ intf }}" mtu '1500' +      set interfaces ethernet "{{ intf }}" vif 200 +      set interfaces ethernet "{{ intf }}" vif 200 description 'VIF - 200' +  loop: +    - eth1 +    - eth2 +  loop_control: +    loop_var: intf
\ No newline at end of file diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/_remove_config.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/_remove_config.yaml new file mode 100644 index 00000000..ce4723df --- /dev/null +++ b/tests/integration/targets/vyos_interfaces/tests/cli/_remove_config.yaml @@ -0,0 +1,17 @@ +--- +- name: Remove Config +  network.cli.cli_config: +    config: "{{ lines }}" +  vars: +    lines: | +      delete interfaces ethernet "{{ intf }}" description +      delete interfaces ethernet "{{ intf }}" speed +      delete interfaces ethernet "{{ intf }}" duplex +      delete interfaces ethernet "{{ intf }}" mtu +      delete interfaces ethernet "{{ intf }}" disable +      delete interfaces ethernet "{{ intf }}" vif +  loop: +    - eth1 +    - eth2 +  loop_control: +    loop_var: intf
\ No newline at end of file diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/deleted.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/deleted.yaml new file mode 100644 index 00000000..b48f916e --- /dev/null +++ b/tests/integration/targets/vyos_interfaces/tests/cli/deleted.yaml @@ -0,0 +1,46 @@ +--- +- debug: +    msg: "Start vyos_interfaces deleted integration tests ansible_connection={{ ansible_connection }}" + +- include_tasks: _populate.yaml + +- block:   +    - name: Delete attributes of given interfaces +      vyos.vyos.vyos_interfaces: &deleted +        config: +          - name: eth1 +          - name: eth2 +        state: deleted +      register: result + +    - name: Assert that the before dicts were correctly generated +      assert: +        that: +          - "{{ 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 }}" + +    - name: Assert that the after dicts were correctly generated +      assert: +        that: +          - "{{ deleted['after'] | symmetric_difference(result['after']) |length == 0 }}" + +    - name: Delete attributes of given interfaces (IDEMPOTENT) +      vyos.vyos.vyos_interfaces: *deleted +      register: result + +    - name: Assert that the previous task was idempotent +      assert: +        that: +          - "result.changed == false" + +    - name: Assert that the before dicts were correctly generated +      assert: +        that: +          - "{{ deleted['after'] | symmetric_difference(result['before']) |length == 0 }}" + +  always: +    - include_tasks: _remove_config.yaml diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/merged.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/merged.yaml new file mode 100644 index 00000000..89ed893e --- /dev/null +++ b/tests/integration/targets/vyos_interfaces/tests/cli/merged.yaml @@ -0,0 +1,59 @@ +--- +- debug: +      msg: "START vyos_interfaces merged integration tests on connection={{ ansible_connection }}" + +- include_tasks: _remove_config.yaml + +- block: +    - name: Merge the provided configuration with the exisiting running configuration +      vyos.vyos.vyos_interfaces: &merged +        config: +          - name: eth1 +            description: "Configured by Ansible - Interface 1" +            mtu: 1500 +            speed: auto +            duplex: auto +            vifs: +              - vlan_id: 100 +                description: "Eth1 - VIF 100" +                mtu: 400 + +              - vlan_id: 101 +                description: "Eth1 - VIF 101" + +          - name: eth2 +            description: "Configured by Ansible - Interface 2 (ADMIN DOWN)" +            mtu: 600 +            enabled: false +        state: merged +      register: result + +    - name: Assert that before dicts were correctly generated +      assert: +        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 }}" + +    - name: Assert that after dicts was correctly generated +      assert: +        that: +          - "{{ merged['after'] | symmetric_difference(result['after']) |length == 0 }}" + +    - name: Merge the provided configuration with the existing running configuration (IDEMPOTENT) +      vyos.vyos.vyos_interfaces: *merged +      register: result + +    - name: Assert that the previous task was idempotent +      assert: +        that: +          - "result['changed'] == false" + +    - name: Assert that before dicts were correctly generated +      assert: +        that: +          - "{{ merged['after'] | symmetric_difference(result['before']) |length == 0 }}" +  always: +      - include_tasks: _remove_config.yaml diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/overridden.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/overridden.yaml new file mode 100644 index 00000000..c9eb1b76 --- /dev/null +++ b/tests/integration/targets/vyos_interfaces/tests/cli/overridden.yaml @@ -0,0 +1,52 @@ +--- +- debug: +      msg: "START vyos_interfaces overridden integration tests on connection={{ ansible_connection }}" + +- include_tasks: _remove_config.yaml + +- include_tasks: _populate.yaml + +- block: +    - name: Overrides all device configuration with provided configuration +      vyos.vyos.vyos_interfaces: &overridden +        config: +          - name: eth0 +            speed: "auto" +            duplex: "auto" +          - name: eth2 +            description: "Overridden by Ansible" +            mtu: 1200 +        state: overridden +      register: result + +    - name: Assert that before dicts were correctly generated +      assert: +        that: +         - "{{ populate | symmetric_difference(result['before']) |length == 0 }}" + +    - name: Assert that correct commands were generated +      assert: +        that: +          - "{{ 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 }}" + +    - name: Overrides all device configuration with provided configurations (IDEMPOTENT) +      vyos.vyos.vyos_interfaces: *overridden +      register: result + +    - name: Assert that the previous task was idempotent +      assert: +        that: +          - "result['changed'] == false" + +    - name: Assert that before dicts were correctly generated +      assert: +        that: +          - "{{ overridden['after'] | symmetric_difference(result['before']) |length == 0 }}" +   +  always: +    - include_tasks: _remove_config.yaml diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml new file mode 100644 index 00000000..1211f63e --- /dev/null +++ b/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml @@ -0,0 +1,55 @@ +--- +- debug: +      msg: "START vyos_interfaces replaced integration tests on connection={{ ansible_connection }}" + +- include_tasks: _remove_config.yaml + +- include_tasks: _populate.yaml + +- block: +    - name: Replace device configurations of listed interfaces with provided configurations +      vyos.vyos.vyos_interfaces: &replaced +        config: +          - name: eth1 +            description: "Replaced by Ansible" +            vifs: +                - vlan_id: 100 +                  description: "VIF 100 - Replaced by Ansible" + +          - name: eth2 +            mtu: 1400 +            description: "Replaced by Ansible" +        state: replaced +      register: result + +    - name: Assert that correct set of commands were generated +      assert: +       that: +         - "{{ 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 }}" + +    - name: Assert that after dict is correctly generated +      assert: +        that: +          - "{{ replaced['after'] | symmetric_difference(result['after']) |length == 0 }}" + +    - name: Replace device configurations of listed interfaces with provided configurarions (IDEMPOTENT) +      vyos.vyos.vyos_interfaces: *replaced +      register: result + +    - name: Assert that task was idempotent +      assert: +       that: +         - "result['changed'] == false" + +    - name: Assert that before dict is correctly generated +      assert: +       that: +         - "{{ replaced['after'] | symmetric_difference(result['before']) |length == 0 }}" + +  always: +    - include_tasks: _remove_config.yaml
\ No newline at end of file diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/rtt.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/rtt.yaml new file mode 100644 index 00000000..3ec4d3de --- /dev/null +++ b/tests/integration/targets/vyos_interfaces/tests/cli/rtt.yaml @@ -0,0 +1,78 @@ +--- +- debug: +    msg: "START vyos_interfaces round trip integration tests on connection={{ ansible_connection }}" + +- include_tasks: _remove_config.yaml + +- block: +    - name: Apply the provided configuration (base config) +      vyos.vyos.vyos_interfaces: +        config: +          - name: eth0 +            enabled: true +            duplex: "auto" +            speed: "auto" + +          - name: eth1 +            description: "Interface - 1" +            mtu: 1500 +            vifs: +              - vlan_id: 100 +                description: "Eth1 - VIF 100" +                mtu: 200 + +              - vlan_id: 101 +                enabled: false + +          - name: eth2 +            description: "Interface - 2" +            enabled: true +            mtu: 900 +        state: merged +      register: base_config + +    - name: Gather interfaces facts +      vyos.vyos.vyos_facts: +        gather_subset: +          - default +        gather_network_resources: +          - interfaces + +    - name: Apply the provided configuration (config to be reverted) +      vyos.vyos.vyos_interfaces: +        config: +          - name: eth1 +            description: "Interface 1 - Description (WILL BE REVERTED)" +            mtu: 1200 +            vifs: +              - vlan_id: 100 +                description: "Eth1 - VIF 100 (WILL BE REVERTED)" +                mtu: 400 + +              - vlan_id: 101 +                description: "Eth1 - VIF 101 (WILL BE REMOVED)" +                enabled: true + +          - name: eth2 +            description: "Interface 2 (ADMIN DOWN) (WILL BE REVERTED)" +            mtu: 600 +            enabled: false +        state: merged +      register: result + +    - name: Assert that changes were applied +      assert: +        that: "{{ round_trip['after'] | symmetric_difference(result['after']) |length == 0 }}" + +    - name: Revert back to base config using facts round trip +      vyos.vyos.vyos_interfaces: +        config: "{{ ansible_facts['network_resources']['interfaces'] }}" +        state: replaced +      register: revert + +    - name: Assert that config was reverted +      assert: +        that: "{{ base_config['after'] | symmetric_difference(revert['after']) |length == 0 }}" +   +  always: +    - include_tasks: _remove_config.yaml diff --git a/tests/integration/targets/vyos_interfaces/vars/main.yaml b/tests/integration/targets/vyos_interfaces/vars/main.yaml new file mode 100644 index 00000000..b9737522 --- /dev/null +++ b/tests/integration/targets/vyos_interfaces/vars/main.yaml @@ -0,0 +1,209 @@ +--- +merged: +  before: +    - name: "eth0" +      enabled: true +      speed: "auto" +      duplex: "auto" + +    - name: "eth1" +      enabled: true + +    - name: "eth2" +      enabled: true + +  commands: +    - "set interfaces ethernet eth1 description 'Configured by Ansible - Interface 1'" +    - "set interfaces ethernet eth1 mtu '1500'" +    - "set interfaces ethernet eth1 duplex 'auto'" +    - "set interfaces ethernet eth1 speed 'auto'" +    - "set interfaces ethernet eth1 vif 100 description 'Eth1 - VIF 100'" +    - "set interfaces ethernet eth1 vif 100 mtu '400'" +    - "set interfaces ethernet eth1 vif 101 description 'Eth1 - VIF 101'" +    - "set interfaces ethernet eth2 description 'Configured by Ansible - Interface 2 (ADMIN DOWN)'" +    - "set interfaces ethernet eth2 mtu '600'" +    - "set interfaces ethernet eth2 disable" + +  after: +    - name: "eth0" +      enabled: true +      duplex: "auto" +      speed: "auto" + +    - name: "eth1" +      description: "Configured by Ansible - Interface 1" +      mtu: 1500 +      speed: "auto" +      duplex: "auto" +      enabled: true +      vifs: +        - vlan_id: 100 +          description: "Eth1 - VIF 100" +          mtu: 400 +          enabled: true + +        - vlan_id: 101 +          description: "Eth1 - VIF 101" +          enabled: true + +    - name: "eth2" +      description: "Configured by Ansible - Interface 2 (ADMIN DOWN)" +      mtu: 600 +      enabled: false + +populate: +  - name: "eth1" +    enabled: true +    speed: "auto" +    duplex: "auto" +    description: "Configured by Ansible" +    mtu: 1500 +    vifs: +      - vlan_id: 200 +        enabled: true +        description: "VIF - 200" + +  - name: "eth2" +    enabled: true +    speed: "auto" +    duplex: "auto" +    description: "Configured by Ansible" +    mtu: 1500 +    vifs: +      - vlan_id: 200 +        enabled: true +        description: "VIF - 200" + +  - name: "eth0" +    enabled: true +    duplex: "auto" +    speed: "auto" + +replaced: +  commands: +    - "delete interfaces ethernet eth1 mtu" +    - "delete interfaces ethernet eth1 speed" +    - "delete interfaces ethernet eth1 duplex" +    - "delete interfaces ethernet eth1 vif 200 description" +    - "set interfaces ethernet eth1 description 'Replaced by Ansible'" +    - "set interfaces ethernet eth1 vif 100 description 'VIF 100 - Replaced by Ansible'" +    - "delete interfaces ethernet eth2 speed" +    - "delete interfaces ethernet eth2 duplex" +    - "delete interfaces ethernet eth2 vif 200 description" +    - "set interfaces ethernet eth2 description 'Replaced by Ansible'" +    - "set interfaces ethernet eth2 mtu '1400'" + +  after: +    - name: "eth1" +      description: "Replaced by Ansible" +      enabled: true +      vifs: +        - vlan_id: 100 +          enabled: true +          description: "VIF 100 - Replaced by Ansible" + +        - vlan_id: 200 +          enabled: true + +    - name: "eth2" +      mtu: 1400 +      description: "Replaced by Ansible" +      enabled: true +      vifs: +        - vlan_id: 200 +          enabled: true + +    - name: "eth0" +      enabled: true +      duplex: "auto" +      speed: "auto" + +overridden: +  commands: +    - "delete interfaces ethernet eth1 description" +    - "delete interfaces ethernet eth1 speed" +    - "delete interfaces ethernet eth1 duplex" +    - "delete interfaces ethernet eth1 mtu" +    - "delete interfaces ethernet eth1 vif 200 description" +    - "delete interfaces ethernet eth2 speed" +    - "delete interfaces ethernet eth2 duplex" +    - "delete interfaces ethernet eth2 vif 200 description" +    - "set interfaces ethernet eth2 description 'Overridden by Ansible'" +    - "set interfaces ethernet eth2 mtu '1200'" + +  after: +    - name: "eth0" +      enabled: true +      speed: "auto" +      duplex: "auto" + +    - name: "eth1" +      enabled: true +      vifs: +        - vlan_id: 200 +          enabled: true + +    - name: "eth2" +      enabled: true +      description: "Overridden by Ansible" +      mtu: 1200 +      vifs: +        - vlan_id: 200 +          enabled: true + +deleted: +  commands: +    - "delete interfaces ethernet eth1 description" +    - "delete interfaces ethernet eth1 speed" +    - "delete interfaces ethernet eth1 duplex" +    - "delete interfaces ethernet eth1 mtu" +    - "delete interfaces ethernet eth1 vif 200 description" +    - "delete interfaces ethernet eth2 description" +    - "delete interfaces ethernet eth2 speed" +    - "delete interfaces ethernet eth2 duplex" +    - "delete interfaces ethernet eth2 mtu" +    - "delete interfaces ethernet eth2 vif 200 description" + +  after: +    - name: "eth0" +      enabled: true +      speed: "auto" +      duplex: "auto" + +    - name: "eth1" +      enabled: true +      vifs: +        - vlan_id: 200 +          enabled: true + +    - name: "eth2" +      enabled: true +      vifs: +        - vlan_id: 200 +          enabled: true + +round_trip: +  after: +    - name: "eth0" +      enabled: true +      speed: "auto" +      duplex: "auto" + +    - name: "eth1" +      description: "Interface 1 - Description (WILL BE REVERTED)" +      enabled: true +      mtu: 1200 +      vifs: +        - vlan_id: 100 +          description: "Eth1 - VIF 100 (WILL BE REVERTED)" +          mtu: 400 +          enabled: true + +        - vlan_id: 101 +          description: "Eth1 - VIF 101 (WILL BE REMOVED)" +          enabled: true + +    - name: "eth2" +      description: "Interface 2 (ADMIN DOWN) (WILL BE REVERTED)" +      mtu: 600 +      enabled: false | 
