---
- debug: msg="START netconf/facts.yaml"


- name: Collect default facts from device
  junos_facts:
    provider: "{{ netconf }}"
  register: result

- assert:
    that:
      - "result.changed == false"
      - "'ansible_net_hostname' in result['ansible_facts']"
      - "'ansible_net_interfaces' in result['ansible_facts']"
      - "'ansible_net_memfree_mb' in result['ansible_facts']"

- name: Collect config facts from device
  junos_facts:
    gather_subset: config
    provider: "{{ netconf }}"
  register: result

- assert:
    that:
      - "result.changed == false"
      - "'ansible_net_config' in result['ansible_facts']"
      - "'ansible_net_interfaces' not in result['ansible_facts']"
      - "'ansible_net_memfree_mb' not in result['ansible_facts']"

- name: Collect all facts from device except hardware
  junos_facts:
    gather_subset: "!hardware"
    provider: "{{ netconf }}"
  register: result

- assert:
    that:
      - "result.changed == false"
      - "'ansible_net_config' in result['ansible_facts']"
      - "'ansible_net_interfaces' in result['ansible_facts']"
      - "'ansible_net_memfree_mb' not in result['ansible_facts']"

- name: Invalid facts subset value
  junos_facts:
    gather_subset: test
    provider: "{{ netconf }}"
  ignore_errors: yes
  register: result

- assert:
    that:
      - "result.failed == true"
      - "result.msg == 'Subset must be one of [hardware, default, interfaces, config], got test'"

- name: Collect config facts from device in set format
  junos_facts:
    gather_subset: config
    config_format: set
    provider: "{{ netconf }}"
  register: result

- assert:
    that:
      - "result.changed == false"
      - "'set system host-name {{ inventory_hostname_short }}' in result['ansible_facts']['ansible_net_config']"

- name: Collect config facts from device in xml format
  junos_facts:
    gather_subset: config
    config_format: xml
    provider: "{{ netconf }}"
  register: result

- assert:
    that:
      - "result.changed == false"
      - "'<host-name>{{ inventory_hostname_short }}</host-name>' in result['ansible_facts']['ansible_net_config']"

- name: Collect config facts from device in json format
  junos_facts:
    gather_subset: config
    config_format: json
    provider: "{{ netconf }}"
  register: result

- assert:
    that:
      - "result.changed == false"
      - "'\"data\" : \"{{ inventory_hostname_short }}\"' in result['ansible_facts']['ansible_net_config']"

- name: Collect config facts from device in text format
  junos_facts:
    gather_subset: config
    config_format: text
    provider: "{{ netconf }}"
  register: result

- assert:
    that:
      - "result.changed == false"
      - "'system {\n    host-name {{ inventory_hostname_short }};' in result['ansible_facts']['ansible_net_config']"

- debug: msg="END netconf/facts.yaml"
