---
- name: Test tunl0 routes
  command: "/sbin/ip route"
  register: routes
  failed_when: routes.stdout_lines
    | select('contains', '/' ~ calico_pool_blocksize|d(26))
    | select('contains', 'tunl0') | length == 0
  when:
    - ('kube_node' in group_names)
    - (calico_ipip_mode is defined and calico_ipip_mode != 'Never')
    - kube_network_plugin | default('calico') == 'calico'

- import_role:  # noqa name[missing]
    name: cluster-dump

- name: Create macvlan network conf
  command:
    cmd: "{{ bin_dir }}/kubectl create -f -"
    stdin: |
      apiVersion: "k8s.cni.cncf.io/v1"
      kind: NetworkAttachmentDefinition
      metadata:
        name: macvlan-conf
      spec:
        config: '{
          "cniVersion": "0.4.0",
          "type": "macvlan",
          "master": "eth0",
          "mode": "bridge",
          "ipam": {
            "type": "host-local",
            "subnet": "192.168.1.0/24",
            "rangeStart": "192.168.1.200",
            "rangeEnd": "192.168.1.216",
            "routes": [
              { "dst": "0.0.0.0/0" }
            ],
          "gateway": "192.168.1.1"
        }
      }'
      ---
      apiVersion: v1
      kind: Pod
      metadata:
        name: samplepod
        annotations:
          k8s.v1.cni.cncf.io/networks: macvlan-conf
      spec:
        containers:
        - name: samplepod
          command: ["/bin/bash", "-c", "sleep 2000000000000"]
          image: dougbtv/centos-network
  delegate_to: groups['kube_control_plane'][0]
  run_once: true
  when:
    - kube_network_plugin_multus | default(false) | bool

- name: Check secondary macvlan interface
  command: "{{ bin_dir }}/kubectl exec samplepod -- ip addr show dev net1"
  register: output
  until: output.rc == 0
  retries: 90
  changed_when: false
  delegate_to: groups['kube_control_plane'][0]
  run_once: true
  when:
    - kube_network_plugin_multus | default(false) | bool
