---
- 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_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_facts:
        gather_subset:
          - default
        gather_network_resources:
          - interfaces

    - name: Apply the provided configuration (config to be reverted)
      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_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
