diff --git a/nuage_topology_collector/filter_plugins/ipv4.py b/nuage_topology_collector/filter_plugins/ipv4.py new file mode 100644 index 0000000..644c8de --- /dev/null +++ b/nuage_topology_collector/filter_plugins/ipv4.py @@ -0,0 +1,13 @@ +#!/usr/bin/python +from netaddr import valid_ipv4 + +def ipv4(addr): + return valid_ipv4(addr) + +class FilterModule(object): + ''' Query filter ''' + + def filters(self): + return { + 'ipv4': ipv4, + } diff --git a/nuage_topology_collector/roles/topology/tasks/main.yml b/nuage_topology_collector/roles/topology/tasks/main.yml index ad38fa1..ee65114 100644 --- a/nuage_topology_collector/roles/topology/tasks/main.yml +++ b/nuage_topology_collector/roles/topology/tasks/main.yml @@ -21,15 +21,30 @@ - name: Set interfaces fact from OVS agent block: + - name: Set facts for ipv4 + set_fact: + ipversion: 'ipv4' + iptables: 'iptables' + iphost: "{{ hostvars[inventory_hostname]['ansible_host'] }}" + when: hostvars[inventory_hostname]['ansible_host'] | ipv4 + + - name: set facts for ipv6 + set_fact: + ipversion: 'ipv6' + iptables: 'ip6tables' + iphost: "[{{ hostvars[inventory_hostname]['ansible_host'] }}]" + when: not hostvars[inventory_hostname]['ansible_host'] | ipv4 + - name: Compute iptables rule number become: yes shell: > - iptables -L INPUT -n --line-numbers | awk '/DROP/{print $1}' + {{ iptables }} -L INPUT -n --line-numbers | awk '/DROP/{print $1}' register: rulenum - name: Allow incoming ovsdb connections become: yes iptables: + ip_version: "{{ ipversion }}" chain: INPUT protocol: tcp destination: "{{ hostvars[inventory_hostname]['ansible_host'] }}" @@ -42,14 +57,14 @@ become: yes command: > ovs-vsctl --timeout=5 --id=@manager -- create Manager - "target=\"ptcp:{{ ovs_manager_port | default(6640) }}:{{ hostvars[inventory_hostname]['ansible_host'] }}\"" + "target=\"ptcp:{{ ovs_manager_port | default(6640) }}:{{ iphost }}\"" -- add Open_vSwitch . manager_options @manager register: mgr_id - name: Get OVS bridge topologies delegate_to: localhost bridgeinfo: - host: "{{ hostvars[inventory_hostname]['ansible_host'] }}" + host: "{{ iphost }}" port: "{{ ovs_manager_port | default(omit) }}" bridge_mappings: "{{ agents[inventory_hostname]['configurations']['bridge_mappings'] }}" register: brinfo @@ -61,6 +76,7 @@ - name: Remove proviously installed iptables rule become: yes iptables: + ip_version: "{{ ipversion }}" chain: INPUT protocol: tcp destination: "{{ hostvars[inventory_hostname]['ansible_host'] }}"