# 2022-07-22: Moved from detected_network.yml to netplan.yml AND restart.yml (REMOVE DUPLICATE CODE LATER?!)
- name: Figure out netplan file name
  shell: ls /etc/netplan
  register: netplan
  #ignore_errors: True # pre 17.10 doesn't use netplan

# 2022-07-23: PR #3319 "Ubuntu variants [all] use NetworkManager as the backend
# for use with netplan and ship with systemd-networkd present but disabled"
- name: "Force default 'systemd_networkd_active: False' -- nec b/c network/default/main.yml is omitted when 1-prep directly invokes network/tasks/install.yml"
  set_fact:
    systemd_networkd_active: False

# 2022-07-22: Copied from detected_network.yml (REMOVE DUPLICATE CODE LATER?!)
- name: "Set 'systemd_networkd_active: True' if local_facts.systemd_networkd confirms"
  set_fact:
    systemd_networkd_active: True
  when: ansible_local.local_facts.systemd_networkd == "enabled" or ansible_local.local_facts.systemd_networkd == "enabled-runtime"


- name: Disable cloud-init the easy way
  shell: touch /etc/cloud/cloud-init.disabled
  when: item|trim == "50-cloud-init.yaml"
  with_items:
    - "{{ netplan.stdout_lines }}"

- name: Moving 50-cloud-init.yaml to 02-iiab-config.yaml
  shell: mv /etc/netplan/50-cloud-init.yaml /etc/netplan/02-iiab-config.yaml
  when: netplan.stdout.find("yaml") != -1 and item|trim == "50-cloud-init.yaml"
  with_items:
    - "{{ netplan.stdout_lines }}"

- name: Cheap way to do systemd unmask
  file:
    state: absent
    dest: /etc/systemd/system/systemd-networkd-wait-online.service

- name: Ensure systemd-networkd-wait-online is enabled
  systemd:
    name: "{{ item }}"
    enabled: yes
  with_items:
    - systemd-networkd-wait-online
  when: systemd_networkd_active

# Moved to NM-debian.yml 2020-12-07
#- name: Unmask and enable the systemd-networkd service for br0
#  systemd:
#    name: systemd-networkd
#    enabled: yes
#    masked: no
#  when: network_manager_active and iiab_lan_iface == "br0"

# Moved to NM-debian.yml 2020-12-07
#- name: Ensure systemd-networkd gets enabled for br0
#  set_fact:
#    systemd_networkd_active: True
#  when: network_manager_active and iiab_lan_iface == "br0"

# ICO will always set gui_static_wan_ip away from the default of 'unset' while
# gui_static_wan turns dhcp on/off through wan_ip in computed_network and
# overrides gui_static_wan_ip that is present. Changing wan_ip in local_vars
# is a oneway street to static.
#- name: Static IP computing CIDR
#  shell: netmask {{ wan_ip }}/{{ wan_netmask }} | awk -F "/" '{print $2}'
#  register: CIDR
#  when: wan_ip != "dhcp"

#- name: Static IP setting CIDR
#  set_fact:
#    wan_cidr: "{{ CIDR.stdout }}"
#  when: wan_ip != "dhcp"

- name: Remove stock netplan template
  file:
    state: absent
    path: /etc/netplan/{{ item }}
  when: netplan.stdout.find("yaml") != -1 and item|trim != "02-iiab-config.yaml" and wan_ip != "dhcp"
  with_items:
    - "{{ netplan.stdout_lines }}"

# 2022-06-30: Ubuntu Groovy (20.10) is ancient history but this code might now
# help Linux Mint ?
#
# 2022-05-29: @jvonau wrote on #3106 "networkd-dispatcher has a traceback,
# I suspect the cause is the same as found #2645, need to confirm the package
# version installed with apt list networkd-dispatcher before suggesting the
# workaround be extended to LinuxMint"
#
# - name: Replace networkd-dispatcher #2585 for "groovy"
#   get_url:
#     url: https://gitlab.com/craftyguy/networkd-dispatcher/-/raw/2.1/networkd-dispatcher
#     dest: /usr/bin/networkd-dispatcher
#     timeout: "{{ download_timeout }}"
#   when: iiab_stage|int < 9 and fix_dispatcher and ansible_distribution_release == "groovy"
#   # 2021-08-29 context from @jvonau: Fix is 'Groovy' specific, 21.04 and later
#   # should have the fix baked into a newer apt package installed by default.

#- name: Supply netplan template
#  template:
#    dest: /etc/netplan/01-iiab-config.yaml
#    src: network/netplan.j2
#    backup: no
#  when: iiab_wan_iface != discovered_wireless_iface and wan_ip != "dhcp"

# should blow up here if we messed up the yml file
#- name: Generate netplan config
#  shell: netplan generate --debug

#- name: Stopping services
#  include_tasks: down-debian.yml

# wants a controlling terminal for the ENTER key, so it fails
#- name: Test netplan config
#  shell: netplan try --debug --timeout=2
#  register: test-netplan
#  ignore_errors: True

# and does not apply the generated config until rebooted
# or ignore the above test - on the fence atm...
#- name: Reload netplan
#  shell: netplan apply
#  when: not no_net_restart and test-netplan == "Configuration accepted"