---
# eos_config -> NetworkConfig, dumps

- debug: msg="START cli/common_config.yaml on connection={{ ansible_connection }}"

- name: setup
  eos_config:
    lines: hostname {{ inventory_hostname_short }}
    match: none
    provider: "{{ cli }}"
  become: yes

- name: get current running-config
  eos_command:
    commands: show running-config
    provider: "{{ cli }}"
  become: yes
  register: config

- name: configure hostname
  eos_config:
    lines: hostname foo
    config: "{{ config.stdout[0] }}"
    provider: "{{ cli }}"
  become: yes
  register: result

- assert:
    that:
      - "result.changed == true"
      - "'hostname foo' in result.updates"

- name: get current running-config
  eos_command:
    commands: show running-config
    provider: "{{ cli }}"
  become: yes
  register: config

- name: teardown
  eos_config:
    lines: hostname {{ inventory_hostname_short }}
    match: none
    provider: "{{ cli }}"
  become: yes

# hit block and diffs
- block:
    - name: setup
      eos_config:
        lines:
          - 10 permit ip host 192.0.2.1 any log
          - 20 permit ip host 192.0.2.2 any log
          - 30 permit ip host 192.0.2.3 any log
        parents: ip access-list test
        before: no ip access-list test
        after: exit
        match: strict
        provider: "{{ cli }}"
      become: yes

    - name: configure sub level command using block replace
      eos_config:
        lines:
          - 10 permit ip host 192.0.2.1 any log
          - 20 permit ip host 192.0.2.2 any log
          - 30 permit ip host 192.0.2.3 any log
          - 40 permit ip host 192.0.2.4 any log
        parents: ip access-list test
        replace: block
        after: exit
        provider: "{{ cli }}"
        match: line
      become: yes
      register: result

    - assert:
        that:
          - "result.changed == true"
          - "'ip access-list test' in result.updates"
          - "'10 permit ip host 192.0.2.1 any log' in result.updates"
          - "'20 permit ip host 192.0.2.2 any log' in result.updates"
          - "'30 permit ip host 192.0.2.3 any log' in result.updates"
          - "'40 permit ip host 192.0.2.4 any log' in result.updates"

    - name: check sub level command using block replace
      eos_config:
        lines:
          - 10 permit ip host 192.0.2.1 any log
          - 20 permit ip host 192.0.2.2 any log
          - 30 permit ip host 192.0.2.3 any log
          - 40 permit ip host 192.0.2.4 any log
        parents: ip access-list test
        replace: block
        after: exit
        provider: "{{ cli }}"
        match: exact
      become: yes
      register: result

  always:
    - name: teardown
      eos_config:
        lines: no ip access-list test
        match: none
        provider: "{{ cli }}"
      become: yes

- debug: msg="END cli/common_config.yaml on connection={{ ansible_connection }}"
