diff options
Diffstat (limited to 'tests/integration/targets/vyos_interface')
7 files changed, 460 insertions, 0 deletions
| diff --git a/tests/integration/targets/vyos_interface/aliases b/tests/integration/targets/vyos_interface/aliases new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/tests/integration/targets/vyos_interface/aliases diff --git a/tests/integration/targets/vyos_interface/defaults/main.yaml b/tests/integration/targets/vyos_interface/defaults/main.yaml new file mode 100644 index 00000000..9ef5ba51 --- /dev/null +++ b/tests/integration/targets/vyos_interface/defaults/main.yaml @@ -0,0 +1,3 @@ +--- +testcase: "*" +test_items: [] diff --git a/tests/integration/targets/vyos_interface/tasks/cli.yaml b/tests/integration/targets/vyos_interface/tasks/cli.yaml new file mode 100644 index 00000000..890d3acf --- /dev/null +++ b/tests/integration/targets/vyos_interface/tasks/cli.yaml @@ -0,0 +1,22 @@ +--- +- name: collect all cli test cases +  find: +    paths: "{{ role_path }}/tests/cli" +    patterns: "{{ testcase }}.yaml" +  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 }} ansible_connection=network_cli" +  with_items: "{{ test_items }}" +  loop_control: +    loop_var: test_case_to_run + +- name: run test case (connection=local) +  include: "{{ test_case_to_run }} ansible_connection=local" +  with_first_found: "{{ test_items }}" +  loop_control: +    loop_var: test_case_to_run diff --git a/tests/integration/targets/vyos_interface/tasks/main.yaml b/tests/integration/targets/vyos_interface/tasks/main.yaml new file mode 100644 index 00000000..415c99d8 --- /dev/null +++ b/tests/integration/targets/vyos_interface/tasks/main.yaml @@ -0,0 +1,2 @@ +--- +- { include: cli.yaml, tags: ['cli'] } diff --git a/tests/integration/targets/vyos_interface/tests/cli/basic.yaml b/tests/integration/targets/vyos_interface/tests/cli/basic.yaml new file mode 100644 index 00000000..22957e14 --- /dev/null +++ b/tests/integration/targets/vyos_interface/tests/cli/basic.yaml @@ -0,0 +1,220 @@ +--- +- debug: msg="START cli/basic.yaml on connection={{ ansible_connection }}" + +- name: Run vyos lsmod command +  vyos.vyos.vyos_command: +    commands: +      - lsmod +  register: lsmod_out + +- name: Set up - delete interface +  vyos.vyos.vyos_interface: +    name: eth1 +    state: absent + +- name: Set up - Create interface +  vyos.vyos.vyos_interface: +    name: eth1 +    state: present +    description: test-interface +  register: result + +- assert: +    that: +      - 'result.changed == true' +      - '"set interfaces ethernet eth1" in result.commands' +      - '"set interfaces ethernet eth1 description ''test-interface''" in result.commands' + +- name: Configure interface params +  vyos.vyos.vyos_interface: +    name: eth1 +    state: present +    description: test-interface-1 +    speed: 100 +    duplex: half +    mtu: 256 +  when: "'virtio_net' not in lsmod_out.stdout[0]" +  register: result + +- assert: +    that: +      - 'result.changed == true' +      - '"set interfaces ethernet eth1 description ''test-interface-1''" in result.commands' +      - '"set interfaces ethernet eth1 speed 100" in result.commands' +      - '"set interfaces ethernet eth1 duplex half" in result.commands' +      - '"set interfaces ethernet eth1 mtu 256" in result.commands' +  when: "'virtio_net' not in lsmod_out.stdout[0]" + +- name: Configure interface params (idempotent) +  vyos.vyos.vyos_interface: +    name: eth1 +    state: present +    description: test-interface-1 +    speed: 100 +    duplex: half +    mtu: 256 +  register: result +  when: "'virtio_net' not in lsmod_out.stdout[0]" + +- assert: +    that: +      - 'result.changed == false' +  when: "'virtio' not in lsmod_out.stdout[0]" + +- name: Change interface params +  vyos.vyos.vyos_interface: +    name: eth1 +    state: present +    description: test-interface-2 +    speed: 1000 +    duplex: full +    mtu: 512 +  register: result +  when: "'virtio_net' not in lsmod_out.stdout[0]" + +- assert: +    that: +      - 'result.changed == true' +      - '"set interfaces ethernet eth1 description ''test-interface-2''" in result.commands' +      - '"set interfaces ethernet eth1 speed 1000" in result.commands' +      - '"set interfaces ethernet eth1 duplex full" in result.commands' +      - '"set interfaces ethernet eth1 mtu 512" in result.commands' +  when: "'virtio_net' not in lsmod_out.stdout[0]" + +- name: Disable interface +  vyos.vyos.vyos_interface: +    name: eth1 +    enabled: False +  register: result + +- assert: +    that: +      - 'result.changed == true' +      - '"set interfaces ethernet eth1 disable" in result.commands' + +- name: Enable interface +  vyos.vyos.vyos_interface: +    name: eth1 +    enabled: True +  register: result + +- assert: +    that: +      - 'result.changed == true' +      - '"delete interfaces ethernet eth1 disable" in result.commands' + +- name: Delete interface +  vyos.vyos.vyos_interface: +    name: eth1 +    state: absent +  register: result + +- assert: +    that: +      - 'result.changed == true' +      - '"delete interfaces ethernet eth1" in result.commands' + +- name: Delete interface (idempotent) +  vyos.vyos.vyos_interface: +    name: eth1 +    state: absent +  register: result + +- assert: +    that: +      - 'result.changed == false' + +- name: Aggregate setup- delete interface +  vyos.vyos.vyos_interface: +    name: eth2 +    state: absent +  register: result + +- name: Set interface on aggregate +  vyos.vyos.vyos_interface: +    aggregate: +      - { name: eth1, description: test-interface-1,  speed: 100, duplex: half, mtu: 512} +      - { name: eth2, description: test-interface-2,  speed: 1000, duplex: full, mtu: 256} +  register: result +  when: "'virtio_net' not in lsmod_out.stdout[0]" + +- assert: +    that: +      - 'result.changed == true' +      - '"set interfaces ethernet eth1 description ''test-interface-1''" in result.commands' +      - '"set interfaces ethernet eth1 speed 100" in result.commands' +      - '"set interfaces ethernet eth1 duplex half" in result.commands' +      - '"set interfaces ethernet eth1 mtu 512" in result.commands' +      - '"set interfaces ethernet eth2 description ''test-interface-2''" in result.commands' +      - '"set interfaces ethernet eth2 speed 1000" in result.commands' +      - '"set interfaces ethernet eth2 duplex full" in result.commands' +      - '"set interfaces ethernet eth2 mtu 256" in result.commands' +  when: "'virtio_net' not in lsmod_out.stdout[0]" + +- name: Set interface on aggregate (idempotent) +  vyos.vyos.vyos_interface: +    aggregate: +      - { name: eth1, description: test-interface-1,  speed: 100, duplex: half, mtu: 512} +      - { name: eth2, description: test-interface-2,  speed: 1000, duplex: full, mtu: 256} +  register: result +  when: "'virtio_net' not in lsmod_out.stdout[0]" + +- assert: +    that: +      - 'result.changed == false' +  when: "'virtio_net' not in lsmod_out.stdout[0]" + +- name: Disable interface on aggregate +  vyos.vyos.vyos_interface: +    aggregate: +      - name: eth1 +      - name: eth2 +    description: test-interface +    enabled: False +  register: result + +- assert: +    that: +      - 'result.changed == true' +      - '"set interfaces ethernet eth1 disable" in result.commands' +      - '"set interfaces ethernet eth2 disable" in result.commands' + +- name: Enable interface on aggregate +  vyos.vyos.vyos_interface: +    aggregate: +      - name: eth1 +      - name: eth2 +    enabled: True +  register: result + +- assert: +    that: +      - 'result.changed == true' +      - '"delete interfaces ethernet eth1 disable" in result.commands' +      - '"delete interfaces ethernet eth2 disable" in result.commands' + +- name: Delete interface aggregate +  vyos.vyos.vyos_interface: +    aggregate: +      - name: eth1 +      - name: eth2 +    state: absent +  register: result + +- assert: +    that: +      - 'result.changed == true' +      - '"delete interfaces ethernet eth1" in result.commands' +      - '"delete interfaces ethernet eth2" in result.commands' + +- name: Delete interface aggregate (idempotent) +  vyos.vyos.vyos_interface: +    aggregate: +      - name: eth1 +      - name: eth2 +    state: absent +  register: result + +- assert: +    that: +      - 'result.changed == false' diff --git a/tests/integration/targets/vyos_interface/tests/cli/intent.yaml b/tests/integration/targets/vyos_interface/tests/cli/intent.yaml new file mode 100644 index 00000000..946728db --- /dev/null +++ b/tests/integration/targets/vyos_interface/tests/cli/intent.yaml @@ -0,0 +1,157 @@ +--- +- debug: msg="START cli/intent.yaml on connection={{ ansible_connection }}" #" + +# To be able to run the lldp test we need to have a neighbor configured to talk to +# In DCI & Zuul we (currently) only spin up a single network VM, so we can't configure a neighbor +# In the future when we have multi-network-nodes running we can run these tests again +# https://github.com/ansible/ansible/issues/39667 + +- name: Detect if we have existing lldp neighbors configured +  vyos.vyos.vyos_command: +    commands: +      - show lldp neighbors detail +  register: neighbors_out + +- name: Should we run lldp tests? +  set_fact: +    run_lldp_tests: "'PortDescr:    eth0' in neighbors_out.stdout[0]" + +- name: Enable LLDP service +  vyos.vyos.vyos_lldp: +    state: present +  when: run_lldp_tests + +- name: Create LLDP configuration +  vyos.vyos.vyos_lldp_interface: +    name: eth1 +    state: present +  when: run_lldp_tests + +- name: Setup (interface is up) +  vyos.vyos.vyos_interface: +    name: eth1 +    enabled: True +    state: present +  register: result + +- name: Check intent arguments +  vyos.vyos.vyos_interface: +    name: eth1 +    state: up +  register: result + +- assert: +    that: +      - "result.failed == false" + +- name: Check lldp neighbors intent arguments +  vyos.vyos.vyos_interface: +    name: eth0 +    neighbors: +    - port: eth0 +  when: run_lldp_tests +  register: result + +- assert: +    that: +      - "result.failed == false" +  when: run_lldp_tests + +- name: Check intent arguments (failed condition) +  vyos.vyos.vyos_interface: +    name: eth1 +    state: down +  ignore_errors: yes +  register: result + +- assert: +    that: +      - "result.failed == true" +      - "'state eq(down)' in result.failed_conditions" + +- name: Check lldp neighbors intent arguments (failed) +  vyos.vyos.vyos_interface: +    name: eth0 +    neighbors: +    - port: dummy_port +      host: dummy_host +  ignore_errors: yes +  when: run_lldp_tests +  register: result + +- assert: +    that: +      - "result.failed == true" +      - "'host dummy_host' in result.failed_conditions" +      - "'port dummy_port' in result.failed_conditions" +  when: run_lldp_tests + +- name: Config + intent +  vyos.vyos.vyos_interface: +    name: eth1 +    enabled: False +    state: down +  register: result + +- assert: +    that: +      - "result.failed == false" + +- name: Config + intent (fail) +  vyos.vyos.vyos_interface: +    name: eth1 +    enabled: False +    state: up +  ignore_errors: yes +  register: result + +- assert: +    that: +      - "result.failed == true" +      - "'state eq(up)' in result.failed_conditions" + +- name: Aggregate config + intent (pass) +  vyos.vyos.vyos_interface: +    aggregate: +    - name: eth1 +      enabled: True +      state: up +  ignore_errors: yes +  register: result + +- assert: +    that: +      - "result.failed == false" + +- name: Check lldp neighbors intent aggregate arguments +  vyos.vyos.vyos_interface: +    aggregate: +    - name: eth0 +      neighbors: +      - port: eth0 +  when: run_lldp_tests +  register: result + +- assert: +    that: +      - "result.failed == false" +  when: run_lldp_tests + +- name: Check lldp neighbors intent aggregate arguments (failed) +  vyos.vyos.vyos_interface: +    aggregate: +    - name: eth0 +      neighbors: +      - port: eth0 +      - port: dummy_port +        host: dummy_host +  ignore_errors: yes +  when: run_lldp_tests +  register: result + +- assert: +    that: +      - "result.failed == true" +      - "'host dummy_host' in result.failed_conditions" +      - "'port dummy_port' in result.failed_conditions" +  when: run_lldp_tests diff --git a/tests/integration/targets/vyos_interface/tests/cli/net_interface.yaml b/tests/integration/targets/vyos_interface/tests/cli/net_interface.yaml new file mode 100644 index 00000000..4bdb6ecc --- /dev/null +++ b/tests/integration/targets/vyos_interface/tests/cli/net_interface.yaml @@ -0,0 +1,56 @@ +--- +- debug: msg="START vyos cli/net_interface.yaml on connection={{ ansible_connection }}" + +# Add minimal testcase to check args are passed correctly to +# implementation module and module run is successful. + +- name: Run vyos lsmod command +  vyos.vyos.vyos_command: +    commands: +      - lsmod +  register: lsmod_out + +- name: Set up - delete interface +  net_interface: +    name: eth1 +    state: absent + +- name: Create interface using platform agnostic module +  net_interface: +    name: eth1 +    state: present +    description: test-interface +  register: result + +- assert: +    that: +      - 'result.changed == true' +      - '"set interfaces ethernet eth1" in result.commands' +      - '"set interfaces ethernet eth1 description ''test-interface''" in result.commands' + +- name: Configure interface params using platform agnostic module +  net_interface: +    name: eth1 +    state: present +    description: test-interface-1 +    speed: 100 +    duplex: half +    mtu: 256 +  when: "'virtio_net' not in lsmod_out.stdout[0]" +  register: result + +- assert: +    that: +      - 'result.changed == true' +      - '"set interfaces ethernet eth1 description ''test-interface-1''" in result.commands' +      - '"set interfaces ethernet eth1 speed 100" in result.commands' +      - '"set interfaces ethernet eth1 duplex half" in result.commands' +      - '"set interfaces ethernet eth1 mtu 256" in result.commands' +  when: "'virtio_net' not in lsmod_out.stdout[0]" + +- name: teardown - delete interface +  net_interface: +    name: eth1 +    state: absent + +- debug: msg="END vyos cli/net_interface.yaml on connection={{ ansible_connection }}" | 
