diff options
Diffstat (limited to 'test/units')
132 files changed, 0 insertions, 11111 deletions
diff --git a/test/units/modules/network/nxos/fixtures/_nxos_interface/show_interface b/test/units/modules/network/nxos/fixtures/_nxos_interface/show_interface deleted file mode 100644 index f50b8f24e9..0000000000 --- a/test/units/modules/network/nxos/fixtures/_nxos_interface/show_interface +++ /dev/null @@ -1,129 +0,0 @@ -{ - "TABLE_interface": { - "ROW_interface": [ - { - "interface": "Ethernet2/1", - "state": "up", - "admin_state": "up", - "share_state": "Dedicated", - "eth_hw_desc": "Ethernet", - "eth_hw_addr": "fa16.3e50.6647", - "eth_bia_addr": "fa16.3e50.6619", - "desc": "Test aggregation on first interface", - "eth_mtu": "1500", - "eth_bw": 1000000, - "eth_dly": 10, - "eth_reliability": "255", - "eth_txload": "1", - "eth_rxload": "1", - "medium": "broadcast", - "eth_mode": "routed", - "eth_duplex": "full", - "eth_speed": "1000 Mb/s", - "eth_beacon": "off", - "eth_autoneg": "off", - "eth_in_flowctrl": "off", - "eth_out_flowctrl": "off", - "eth_mdix": "off", - "eth_swt_monitor": "off", - "eth_ethertype": "0x8100", - "eth_eee_state": "n/a", - "eth_link_flapped": "4d15h", - "eth_clear_counters": "never", - "eth_reset_cntr": 87, - "eth_load_interval1_rx": 0, - "eth_inrate1_bits": 0, - "eth_inrate1_pkts": 0, - "eth_load_interval1_tx": 0, - "eth_outrate1_bits": 0, - "eth_outrate1_pkts": 0, - "eth_inrate1_summary_bits": "0 bps", - "eth_inrate1_summary_pkts": "0 pps", - "eth_outrate1_summary_bits": "0 bps", - "eth_outrate1_summary_pkts": "0 pps", - "eth_load_interval2_rx": 0, - "eth_inrate2_bits": 0, - "eth_inrate2_pkts": 0, - "eth_load_interval2_tx": 0, - "eth_outrate2_bits": 0, - "eth_outrate2_pkts": 0, - "eth_inrate2_summary_bits": "0 bps", - "eth_inrate2_summary_pkts": "0 pps", - "eth_outrate2_summary_bits": "0 bps", - "eth_outrate2_summary_pkts": "0 pps", - "eth_inucast": 0, - "eth_inmcast": 0, - "eth_inbcast": 0, - "eth_inpkts": 0, - "eth_inbytes": 0, - "eth_jumbo_inpkts": 0, - "eth_storm_supp": 0, - "eth_runts": 0, - "eth_giants": 0, - "eth_crc": 0, - "eth_nobuf": 0, - "eth_inerr": 0, - "eth_frame": 0, - "eth_overrun": 0, - "eth_underrun": 0, - "eth_ignored": 0, - "eth_watchdog": 0, - "eth_bad_eth": 0, - "eth_bad_proto": 0, - "eth_in_ifdown_drops": 0, - "eth_dribble": 0, - "eth_indiscard": 0, - "eth_inpause": 0, - "eth_outucast": 0, - "eth_outmcast": 0, - "eth_outbcast": 0, - "eth_outpkts": 0, - "eth_outbytes": 0, - "eth_jumbo_outpkts": 0, - "eth_outerr": 0, - "eth_coll": 0, - "eth_deferred": 0, - "eth_latecoll": 0, - "eth_lostcarrier": 0, - "eth_nocarrier": 0, - "eth_babbles": 0, - "eth_outdiscard": 0, - "eth_outpause": 0 - }, - { - "interface": "loopback0", - "state": "up", - "admin_state": "up", - "eth_hw_desc": "Loopback", - "desc": "Loopback", - "eth_ip_addr": "192.168.255.1", - "eth_ip_mask": 32, - "eth_ip_prefix": "192.168.255.1", - "eth_mtu": "1500", - "eth_bw": 8000000, - "eth_dly": 5000, - "eth_reliability": "255", - "eth_txload": "1", - "eth_rxload": "1", - "medium": "broadcast", - "eth_mode": "routed", - "eth_mdix": "off", - "loop_in_pkts": 1451854, - "loop_in_bytes": 75138128, - "loop_in_mcast": 0, - "loop_in_compressed": 0, - "loop_in_errors": 0, - "loop_in_frame": 0, - "loop_in_overrun": 0, - "loop_in_fifo": 0, - "loop_out_pkts": 0, - "loop_out_bytes": 0, - "loop_out_underruns": 0, - "loop_out_errors": 0, - "loop_out_collisions": 0, - "loop_out_fifo": 0, - "loop_out_carriers": 0 - } - ] - } -} diff --git a/test/units/modules/network/nxos/fixtures/_nxos_interface/show_interface_Ethernet2_1 b/test/units/modules/network/nxos/fixtures/_nxos_interface/show_interface_Ethernet2_1 deleted file mode 100644 index f478350f0d..0000000000 --- a/test/units/modules/network/nxos/fixtures/_nxos_interface/show_interface_Ethernet2_1 +++ /dev/null @@ -1,96 +0,0 @@ -{ - "TABLE_interface": { - "ROW_interface": { - "interface": "Ethernet2/1", - "state": "up", - "admin_state": "up", - "share_state": "Dedicated", - "eth_hw_desc": "Ethernet", - "eth_hw_addr": "fa16.3e00.0001", - "eth_bia_addr": "fa16.3e27.f279", - "desc": "to nxos03", - "eth_ip_addr": "10.0.0.45", - "eth_ip_mask": 30, - "eth_ip_prefix": "10.0.0.44", - "eth_mtu": "1500", - "eth_bw": 1000000, - "eth_dly": 10, - "eth_reliability": "255", - "eth_txload": "1", - "eth_rxload": "1", - "medium": "broadcast", - "eth_mode": "routed", - "eth_duplex": "full", - "eth_speed": "1000 Mb/s", - "eth_beacon": "off", - "eth_autoneg": "off", - "eth_in_flowctrl": "off", - "eth_out_flowctrl": "off", - "eth_mdix": "off", - "eth_swt_monitor": "off", - "eth_ethertype": "0x8100", - "eth_eee_state": "n/a", - "eth_link_flapped": "14week(s) 0day(s)", - "eth_clear_counters": "never", - "eth_reset_cntr": 1, - "eth_load_interval1_rx": 0, - "eth_inrate1_bits": 0, - "eth_inrate1_pkts": 0, - "eth_load_interval1_tx": 0, - "eth_outrate1_bits": 0, - "eth_outrate1_pkts": 0, - "eth_inrate1_summary_bits": "0 bps", - "eth_inrate1_summary_pkts": "0 pps", - "eth_outrate1_summary_bits": "0 bps", - "eth_outrate1_summary_pkts": "0 pps", - "eth_load_interval2_rx": 0, - "eth_inrate2_bits": 0, - "eth_inrate2_pkts": 0, - "eth_load_interval2_tx": 0, - "eth_outrate2_bits": 0, - "eth_outrate2_pkts": 0, - "eth_inrate2_summary_bits": "0 bps", - "eth_inrate2_summary_pkts": "0 pps", - "eth_outrate2_summary_bits": "0 bps", - "eth_outrate2_summary_pkts": "0 pps", - "eth_inucast": 0, - "eth_inmcast": 0, - "eth_inbcast": 0, - "eth_inpkts": 0, - "eth_inbytes": 0, - "eth_jumbo_inpkts": 0, - "eth_storm_supp": 0, - "eth_runts": 0, - "eth_giants": 0, - "eth_crc": 0, - "eth_nobuf": 0, - "eth_inerr": 0, - "eth_frame": 0, - "eth_overrun": 0, - "eth_underrun": 0, - "eth_ignored": 0, - "eth_watchdog": 0, - "eth_bad_eth": 0, - "eth_bad_proto": 0, - "eth_in_ifdown_drops": 0, - "eth_dribble": 0, - "eth_indiscard": 0, - "eth_inpause": 0, - "eth_outucast": 0, - "eth_outmcast": 0, - "eth_outbcast": 0, - "eth_outpkts": 0, - "eth_outbytes": 0, - "eth_jumbo_outpkts": 0, - "eth_outerr": 0, - "eth_coll": 0, - "eth_deferred": 0, - "eth_latecoll": 0, - "eth_lostcarrier": 0, - "eth_nocarrier": 0, - "eth_babbles": 0, - "eth_outdiscard": 0, - "eth_outpause": 0 - } - } -} diff --git a/test/units/modules/network/nxos/fixtures/_nxos_interface/show_interface_loopback0 b/test/units/modules/network/nxos/fixtures/_nxos_interface/show_interface_loopback0 deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/nxos/fixtures/_nxos_interface/show_interface_loopback0 +++ /dev/null diff --git a/test/units/modules/network/nxos/fixtures/_nxos_interface/show_run_interface_Ethernet2_1 b/test/units/modules/network/nxos/fixtures/_nxos_interface/show_run_interface_Ethernet2_1 deleted file mode 100644 index e60c3b4c01..0000000000 --- a/test/units/modules/network/nxos/fixtures/_nxos_interface/show_run_interface_Ethernet2_1 +++ /dev/null @@ -1,8 +0,0 @@ -interface Ethernet1/5 - description to csr02 - no switchport - speed 1000 - mtu 1500 - mac-address fa16.3e00.000b - ip address 172.31.0.66/30 - no shutdown diff --git a/test/units/modules/network/nxos/fixtures/_nxos_interface/show_run_interface_loopback0 b/test/units/modules/network/nxos/fixtures/_nxos_interface/show_run_interface_loopback0 deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/nxos/fixtures/_nxos_interface/show_run_interface_loopback0 +++ /dev/null diff --git a/test/units/modules/network/nxos/fixtures/_nxos_ip_interface.cfg b/test/units/modules/network/nxos/fixtures/_nxos_ip_interface.cfg deleted file mode 100644 index 3ca37d78ee..0000000000 --- a/test/units/modules/network/nxos/fixtures/_nxos_ip_interface.cfg +++ /dev/null @@ -1,30 +0,0 @@ -IP Interface Status for VRF "default"(1) -Ethernet2/4, Interface status: protocol-up/link-up/admin-up, iod: 39, - IP address: 192.0.2.1, IP subnet: 1.1.1.0/8 route-preference: 0, tag: 0 - IP broadcast address: 255.255.255.255 - IP multicast groups locally joined: none - IP MTU: 1500 bytes (using link MTU) - IP primary address route-preference: 0, tag: 0 - IP proxy ARP : disabled - IP Local Proxy ARP : disabled - IP multicast routing: disabled - IP icmp redirects: enabled - IP directed-broadcast: disabled - IP Forwarding: disabled - IP icmp unreachables (except port): disabled - IP icmp port-unreachable: enabled - IP unicast reverse path forwarding: none - IP load sharing: none - IP interface statistics last reset: never - IP interface software stats: (sent/received/forwarded/originated/consumed) - Unicast packets : 0/0/0/0/0 - Unicast bytes : 0/0/0/0/0 - Multicast packets : 0/0/0/0/0 - Multicast bytes : 0/0/0/0/0 - Broadcast packets : 0/0/0/0/0 - Broadcast bytes : 0/0/0/0/0 - Labeled packets : 0/0/0/0/0 - Labeled bytes : 0/0/0/0/0 - WCCP Redirect outbound: disabled - WCCP Redirect inbound: disabled - WCCP Redirect exclude: disabled diff --git a/test/units/modules/network/nxos/fixtures/_nxos_switchport/show_interface_ethernet b/test/units/modules/network/nxos/fixtures/_nxos_switchport/show_interface_ethernet deleted file mode 100644 index 60e729b2c3..0000000000 --- a/test/units/modules/network/nxos/fixtures/_nxos_switchport/show_interface_ethernet +++ /dev/null @@ -1,97 +0,0 @@ -{ - "TABLE_interface": { - "ROW_interface": { - "interface": "Ethernet2/1", - "state": "up", - "admin_state": "up", - "share_state": "Dedicated", - "eth_hw_desc": "Ethernet", - "eth_hw_addr": "fa16.3e00.0001", - "eth_bia_addr": "fa16.3e27.f279", - "desc": "to nxos03", - "eth_ip_addr": "10.0.0.45", - "eth_ip_mask": 30, - "eth_ip_prefix": "10.0.0.44", - "eth_mtu": "1500", - "eth_bw": 1000000, - "eth_dly": 10, - "eth_reliability": "255", - "eth_txload": "1", - "eth_rxload": "1", - "medium": "broadcast", - "eth_mode": "access", - "eth_bundle": 0, - "eth_duplex": "full", - "eth_speed": "1000 Mb/s", - "eth_beacon": "off", - "eth_autoneg": "off", - "eth_in_flowctrl": "off", - "eth_out_flowctrl": "off", - "eth_mdix": "off", - "eth_swt_monitor": "off", - "eth_ethertype": "0x8100", - "eth_eee_state": "n/a", - "eth_link_flapped": "13week(s) 0day(s)", - "eth_clear_counters": "never", - "eth_reset_cntr": 1, - "eth_load_interval1_rx": 0, - "eth_inrate1_bits": 0, - "eth_inrate1_pkts": 0, - "eth_load_interval1_tx": 0, - "eth_outrate1_bits": 0, - "eth_outrate1_pkts": 0, - "eth_inrate1_summary_bits": "0 bps", - "eth_inrate1_summary_pkts": "0 pps", - "eth_outrate1_summary_bits": "0 bps", - "eth_outrate1_summary_pkts": "0 pps", - "eth_load_interval2_rx": 0, - "eth_inrate2_bits": 0, - "eth_inrate2_pkts": 0, - "eth_load_interval2_tx": 0, - "eth_outrate2_bits": 0, - "eth_outrate2_pkts": 0, - "eth_inrate2_summary_bits": "0 bps", - "eth_inrate2_summary_pkts": "0 pps", - "eth_outrate2_summary_bits": "0 bps", - "eth_outrate2_summary_pkts": "0 pps", - "eth_inucast": 0, - "eth_inmcast": 0, - "eth_inbcast": 0, - "eth_inpkts": 0, - "eth_inbytes": 0, - "eth_jumbo_inpkts": 0, - "eth_storm_supp": 0, - "eth_runts": 0, - "eth_giants": 0, - "eth_crc": 0, - "eth_nobuf": 0, - "eth_inerr": 0, - "eth_frame": 0, - "eth_overrun": 0, - "eth_underrun": 0, - "eth_ignored": 0, - "eth_watchdog": 0, - "eth_bad_eth": 0, - "eth_bad_proto": 0, - "eth_in_ifdown_drops": 0, - "eth_dribble": 0, - "eth_indiscard": 0, - "eth_inpause": 0, - "eth_outucast": 0, - "eth_outmcast": 0, - "eth_outbcast": 0, - "eth_outpkts": 0, - "eth_outbytes": 0, - "eth_jumbo_outpkts": 0, - "eth_outerr": 0, - "eth_coll": 0, - "eth_deferred": 0, - "eth_latecoll": 0, - "eth_lostcarrier": 0, - "eth_nocarrier": 0, - "eth_babbles": 0, - "eth_outdiscard": 0, - "eth_outpause": 0 - } - } -} diff --git a/test/units/modules/network/nxos/fixtures/_nxos_switchport/show_interface_ethernet_switchport b/test/units/modules/network/nxos/fixtures/_nxos_switchport/show_interface_ethernet_switchport deleted file mode 100644 index 352da5e7a3..0000000000 --- a/test/units/modules/network/nxos/fixtures/_nxos_switchport/show_interface_ethernet_switchport +++ /dev/null @@ -1,14 +0,0 @@ -{ - "TABLE_interface": { - "ROW_interface": { - "interface": "Ethernet2/1", - "oper_mode": "access", - "switchport": "Enabled", - "access_vlan": 2, - "access_vlan_name": "VLAN2", - "native_vlan": 10, - "native_vlan_name": "VLAN10", - "trunk_vlans": "1-50" - } - } -} diff --git a/test/units/modules/network/nxos/fixtures/_nxos_switchport/show_vlan b/test/units/modules/network/nxos/fixtures/_nxos_switchport/show_vlan deleted file mode 100644 index 407267bb00..0000000000 --- a/test/units/modules/network/nxos/fixtures/_nxos_switchport/show_vlan +++ /dev/null @@ -1,18 +0,0 @@ -{ - "TABLE_vlanbrief": { - "ROW_vlanbrief": { - "vlanshowbr-vlanid": 1, - "vlanshowbr-vlanid-utf": 1, - "vlanshowbr-vlanname": "VLAN1", - "vlanshowbr-vlanstate": "active", - "vlanshowbr-shutstate": "noshutdown" - } - }, - "TABLE_mtuinfo": { - "ROW_mtuinfo": { - "vlanshowinfo-vlanid": 1, - "vlanshowinfo-media-type": "enet", - "vlanshowinfo-vlanmode": "ce-vlan" - } - } -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_acl/show_ip_access-list.txt b/test/units/modules/network/nxos/fixtures/nxos_acl/show_ip_access-list.txt deleted file mode 100644 index 37be9f7d78..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_acl/show_ip_access-list.txt +++ /dev/null @@ -1,227 +0,0 @@ -{ - "TABLE_ip_ipv6_mac": { - "ROW_ip_ipv6_mac": [ - { - "op_ip_ipv6_mac": "ip", - "acl_name": "copp-system-p-acl-bgp", - "TABLE_seqno": { - "ROW_seqno": [ - { - "seqno": 10, - "permitdeny": "permit", - "proto_str": "tcp", - "src_any": "any", - "src_port_op": "gt", - "src_port1_num": "1024", - "dest_any": "any", - "dest_port_op": "eq", - "dest_port1_str": "bgp", - "dest_port1_num": "179" - }, - { - "seqno": 20, - "permitdeny": "permit", - "proto_str": "tcp", - "src_any": "any", - "src_port_op": "eq", - "src_port1_str": "bgp", - "src_port1_num": "179", - "dest_any": "any", - "dest_port_op": "gt", - "dest_port1_num": "1024" - } - ] - } - }, - { - "op_ip_ipv6_mac": "ip", - "acl_name": "copp-system-p-acl-cts", - "TABLE_seqno": { - "ROW_seqno": [ - { - "seqno": 10, - "permitdeny": "permit", - "proto_str": "tcp", - "src_any": "any", - "dest_any": "any", - "dest_port_op": "eq", - "dest_port1_num": "64999" - }, - { - "seqno": 20, - "permitdeny": "permit", - "proto_str": "tcp", - "src_any": "any", - "src_port_op": "eq", - "src_port1_num": "64999", - "dest_any": "any" - } - ] - } - }, - { - "op_ip_ipv6_mac": "ip", - "acl_name": "copp-system-p-acl-dhcp", - "TABLE_seqno": { - "ROW_seqno": [ - { - "seqno": 10, - "permitdeny": "permit", - "proto_str": "udp", - "src_any": "any", - "src_port_op": "eq", - "src_port1_str": "bootpc", - "src_port1_num": "68", - "dest_any": "any" - }, - { - "seqno": 20, - "permitdeny": "permit", - "proto_str": "udp", - "src_any": "any", - "src_port_op": "neq", - "src_port1_str": "bootps", - "src_port1_num": "67", - "dest_any": "any", - "dest_port_op": "eq", - "dest_port1_str": "bootps", - "dest_port1_num": "67" - } - ] - } - }, - { - "op_ip_ipv6_mac": "ip", - "acl_name": "copp-system-p-acl-dhcp-relay-response", - "TABLE_seqno": { - "ROW_seqno": [ - { - "seqno": 10, - "permitdeny": "permit", - "proto_str": "udp", - "src_any": "any", - "src_port_op": "eq", - "src_port1_str": "bootps", - "src_port1_num": "67", - "dest_any": "any" - }, - { - "seqno": 20, - "permitdeny": "permit", - "proto_str": "udp", - "src_any": "any", - "dest_any": "any", - "dest_port_op": "eq", - "dest_port1_str": "bootpc", - "dest_port1_num": "68" - } - ] - } - }, - { - "op_ip_ipv6_mac": "ip", - "acl_name": "copp-system-p-acl-eigrp", - "TABLE_seqno": { - "ROW_seqno": { - "seqno": 10, - "permitdeny": "permit", - "proto_str": "eigrp", - "src_any": "any", - "dest_any": "any" - } - } - }, - { - "op_ip_ipv6_mac": "ip", - "acl_name": "copp-system-p-acl-ftp", - "TABLE_seqno": { - "ROW_seqno": [ - { - "seqno": 10, - "permitdeny": "permit", - "proto_str": "tcp", - "src_any": "any", - "dest_any": "any", - "dest_port_op": "eq", - "dest_port1_str": "ftp-data", - "dest_port1_num": "20" - }, - { - "seqno": 20, - "permitdeny": "permit", - "proto_str": "tcp", - "src_any": "any", - "dest_any": "any", - "dest_port_op": "eq", - "dest_port1_str": "ftp", - "dest_port1_num": "21" - }, - { - "seqno": 30, - "permitdeny": "permit", - "proto_str": "tcp", - "src_any": "any", - "src_port_op": "eq", - "src_port1_str": "ftp-data", - "src_port1_num": "20", - "dest_any": "any" - }, - { - "seqno": 40, - "permitdeny": "permit", - "proto_str": "tcp", - "src_any": "any", - "src_port_op": "eq", - "src_port1_str": "ftp", - "src_port1_num": "21", - "dest_any": "any" - } - ] - } - }, - { - "op_ip_ipv6_mac": "ip", - "acl_name": "copp-system-p-acl-glbp", - "TABLE_seqno": { - "ROW_seqno": { - "seqno": 10, - "permitdeny": "permit", - "proto_str": "udp", - "src_any": "any", - "src_port_op": "eq", - "src_port1_num": "3222", - "dest_ip_prefix": "224.0.0.0/24", - "dest_port_op": "eq", - "dest_port1_num": "3222" - } - } - }, - { - "op_ip_ipv6_mac": "ip", - "acl_name": "copp-system-p-acl-hsrp", - "TABLE_seqno": { - "ROW_seqno": [ - { - "seqno": 10, - "permitdeny": "permit", - "proto_str": "udp", - "src_any": "any", - "dest_ip_prefix": "224.0.0.2/32", - "dest_port_op": "eq", - "dest_port1_num": "1985" - }, - { - "seqno": 20, - "permitdeny": "permit", - "proto_str": "udp", - "src_any": "any", - "dest_ip_prefix": "224.0.0.102/32", - "dest_port_op": "eq", - "dest_port1_num": "1985" - } - ] - } - } - ] - } -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_acl_interface/show_running-config_aclmgr.txt b/test/units/modules/network/nxos/fixtures/nxos_acl_interface/show_running-config_aclmgr.txt deleted file mode 100644 index ccf92c9913..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_acl_interface/show_running-config_aclmgr.txt +++ /dev/null @@ -1,4 +0,0 @@ -ip access-list ANSIBLE_OUT - 10 permit tcp 192.0.2.1/24 any -interface Ethernet1/41 - ip access-group copp-system-p-acl-bgp out diff --git a/test/units/modules/network/nxos/fixtures/nxos_acl_interfaces/nxos_acl_interfaces.cfg b/test/units/modules/network/nxos/fixtures/nxos_acl_interfaces/nxos_acl_interfaces.cfg deleted file mode 100644 index 199244e784..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_acl_interfaces/nxos_acl_interfaces.cfg +++ /dev/null @@ -1,2 +0,0 @@ -interface Ethernet1/2 - ip access-group ACL1v4 out
\ No newline at end of file diff --git a/test/units/modules/network/nxos/fixtures/nxos_bfd_global/N7K.cfg b/test/units/modules/network/nxos/fixtures/nxos_bfd_global/N7K.cfg deleted file mode 100644 index efe9626869..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_bfd_global/N7K.cfg +++ /dev/null @@ -1,16 +0,0 @@ -feature bfd - -bfd echo-interface loopback2 -bfd echo-rx-interval 56 -bfd interval 51 min_rx 52 multiplier 4 -bfd slow-timer 2001 -bfd startup-timer 6 -bfd ipv4 echo-rx-interval 54 -bfd ipv4 interval 54 min_rx 54 multiplier 4 -bfd ipv4 slow-timer 2004 -bfd ipv6 echo-rx-interval 56 -bfd ipv6 interval 56 min_rx 56 multiplier 6 -bfd ipv6 slow-timer 2006 -bfd fabricpath slow-timer 2008 -bfd fabricpath interval 58 min_rx 58 multiplier 8 -bfd fabricpath vlan 2 diff --git a/test/units/modules/network/nxos/fixtures/nxos_bfd_global/N9K.cfg b/test/units/modules/network/nxos/fixtures/nxos_bfd_global/N9K.cfg deleted file mode 100644 index ab1d2d4a51..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_bfd_global/N9K.cfg +++ /dev/null @@ -1,13 +0,0 @@ -feature bfd - -bfd echo-interface loopback2 -bfd echo-rx-interval 56 -bfd interval 51 min_rx 52 multiplier 4 -bfd slow-timer 2001 -bfd startup-timer 6 -bfd ipv4 echo-rx-interval 54 -bfd ipv4 interval 54 min_rx 54 multiplier 4 -bfd ipv4 slow-timer 2004 -bfd ipv6 echo-rx-interval 56 -bfd ipv6 interval 56 min_rx 56 multiplier 6 -bfd ipv6 slow-timer 2006 diff --git a/test/units/modules/network/nxos/fixtures/nxos_bgp/config.cfg b/test/units/modules/network/nxos/fixtures/nxos_bgp/config.cfg deleted file mode 100644 index 2ef5533e42..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_bgp/config.cfg +++ /dev/null @@ -1,17 +0,0 @@ -feature bgp - -router bgp 65535 - router-id 192.168.1.1 - event-history cli size medium - event-history detail - vrf test2 - address-family ipv4 unicast - timers bgp 1 10 - neighbor 1.1.1.1 - neighbor 1.1.1.2 - bfd - neighbor 3.3.3.4 - remove-private-as all - neighbor 3.3.3.5 - address-family ipv4 unicast - maximum-prefix 30 30 diff --git a/test/units/modules/network/nxos/fixtures/nxos_bgp/config_32_bits_as.cfg b/test/units/modules/network/nxos/fixtures/nxos_bgp/config_32_bits_as.cfg deleted file mode 100644 index 03db9936fd..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_bgp/config_32_bits_as.cfg +++ /dev/null @@ -1,6 +0,0 @@ -feature bgp - -router bgp 65535.65535 - router-id 192.168.1.1 - vrf test - address-family ipv4 unicast diff --git a/test/units/modules/network/nxos/fixtures/nxos_command/show_version.txt b/test/units/modules/network/nxos/fixtures/nxos_command/show_version.txt deleted file mode 100644 index ba9ae66515..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_command/show_version.txt +++ /dev/null @@ -1,68 +0,0 @@ -Cisco NX-OS Software -Copyright (c) 2002-2016, Cisco Systems, Inc. All rights reserved. -NX-OSv software ("NX-OSv Software") and related documentation, -files or other reference materials ("Documentation") are -the proprietary property and confidential information of Cisco -Systems, Inc. ("Cisco") and are protected, without limitation, -pursuant to United States and International copyright and trademark -laws in the applicable jurisdiction which provide civil and criminal -penalties for copying or distribution without Cisco's authorization. - -Any use or disclosure, in whole or in part, of the NX-OSv Software -or Documentation to any third party for any purposes is expressly -prohibited except as otherwise authorized by Cisco in writing. -The copyrights to certain works contained herein are owned by other -third parties and are used and distributed under license. Some parts -of this software may be covered under the GNU Public License or the -GNU Lesser General Public License. A copy of each such license is -available at -http://www.gnu.org/licenses/gpl.html and -http://www.gnu.org/licenses/lgpl.html -*************************************************************************** -* NX-OSv is strictly limited to use for evaluation, demonstration and * -* NX-OS education. NX-OSv is provided as-is and is not supported by * -* Cisco's Technical Advisory Center. Any use or disclosure, in whole or * -* in part of the NX-OSv Software or Documentation to any third party for * -* any purposes is expressly prohibited except as otherwise authorized by * -* Cisco in writing. * -*************************************************************************** -nxos01# show version -Cisco Nexus Operating System (NX-OS) Software -TAC support: http://www.cisco.com/tac -Documents: http://www.cisco.com/en/US/products/ps9372/tsd_products_support_series_home.html -Copyright (c) 2002-2016, Cisco Systems, Inc. All rights reserved. -The copyrights to certain works contained herein are owned by -other third parties and are used and distributed under license. -Some parts of this software are covered under the GNU Public -License. A copy of the license is available at -http://www.gnu.org/licenses/gpl.html. - -NX-OSv is a demo version of the Nexus Operating System - -Software - loader: version N/A - kickstart: version 7.3(0)D1(1) - system: version 7.3(0)D1(1) - kickstart image file is: bootflash:///titanium-d1-kickstart.7.3.0.D1.1.bin - kickstart compile time: 1/11/2016 16:00:00 [02/11/2016 10:30:12] - system image file is: bootflash:///titanium-d1.7.3.0.D1.1.bin - system compile time: 1/11/2016 16:00:00 [02/11/2016 13:08:11] - - -Hardware - cisco NX-OSv Chassis ("NX-OSv Supervisor Module") - QEMU Virtual CPU version 2.0 with 3064860 kB of memory. - Processor Board ID TM3E35B910B - - Device name: nxos01 - bootflash: 3184776 kB - -Kernel uptime is 7 day(s), 17 hour(s), 0 minute(s), 23 second(s) - - -plugin - Core Plugin, Ethernet Plugin - -Active Package(s) - - diff --git a/test/units/modules/network/nxos/fixtures/nxos_config/candidate.cfg b/test/units/modules/network/nxos/fixtures/nxos_config/candidate.cfg deleted file mode 100644 index b11bc93e25..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_config/candidate.cfg +++ /dev/null @@ -1,7 +0,0 @@ -hostname switch01 -! -interface Ethernet1 - description test interface - no shutdown -! -ip routing diff --git a/test/units/modules/network/nxos/fixtures/nxos_config/config.cfg b/test/units/modules/network/nxos/fixtures/nxos_config/config.cfg deleted file mode 100644 index 6a471371a5..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_config/config.cfg +++ /dev/null @@ -1,26 +0,0 @@ -! -hostname localhost -ip domain-name eng.ansible.com -! -vrf definition mgmt -! -vrf definition test -! -interface Management1 - ip address 192.168.1.1/24 -! -interface Ethernet1 - shutdown -! -interface Ethernet2 - shutdown -! -interface Ethernet3 - shutdown -! -interface Ethernet4 - shutdown -! -interface Ethernet5 - shutdown -! diff --git a/test/units/modules/network/nxos/fixtures/nxos_devicealias/shdadatabse.cfg b/test/units/modules/network/nxos/fixtures/nxos_devicealias/shdadatabse.cfg deleted file mode 100644 index cc526a7146..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_devicealias/shdadatabse.cfg +++ /dev/null @@ -1,5 +0,0 @@ -device-alias name test1_add pwwn 56:02:22:11:22:88:11:67 -device-alias name test2_add pwwn 65:22:22:11:22:22:11:0d -device-alias name tieHost-1 pwwn 10:00:00:00:89:a1:01:01 -device-alias name tieHost-2 pwwn 10:00:00:00:89:a1:01:02 - diff --git a/test/units/modules/network/nxos/fixtures/nxos_devicealias/shdastatus.cfg b/test/units/modules/network/nxos/fixtures/nxos_devicealias/shdastatus.cfg deleted file mode 100644 index 7db8803456..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_devicealias/shdastatus.cfg +++ /dev/null @@ -1,4 +0,0 @@ -Fabric Distribution : Enabled -Database:- Device Aliases 3831 Mode: Enhanced - Checksum: 0xdc7b6c6c124abd8fe28cf6a1ab293c - diff --git a/test/units/modules/network/nxos/fixtures/nxos_devicealias/shdastatus_mansi.cfg b/test/units/modules/network/nxos/fixtures/nxos_devicealias/shdastatus_mansi.cfg deleted file mode 100644 index aa399b6410..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_devicealias/shdastatus_mansi.cfg +++ /dev/null @@ -1,4 +0,0 @@ -Fabric Distribution : Disabled -Database:- Device Aliases 3831 Mode: Basic - Checksum: 0xdc7b6c6c124abd8fe28cf6a1ab293c - diff --git a/test/units/modules/network/nxos/fixtures/nxos_devicealias/shdastatuslock.cfg b/test/units/modules/network/nxos/fixtures/nxos_devicealias/shdastatuslock.cfg deleted file mode 100644 index 65cb052f5f..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_devicealias/shdastatuslock.cfg +++ /dev/null @@ -1,6 +0,0 @@ -Fabric Distribution : Enabled -Database:- Device Aliases 3831 Mode: Enhanced - Checksum: 0xdc7b6c6c124abd8fe28cf6a1ab293c -Locked By:- User "CLI/SNMPv3:admin" SWWN 20:00:54:7f:ee:1b:13:f0 -Pending Database:- Device Aliases 3831 Mode: Enhanced - diff --git a/test/units/modules/network/nxos/fixtures/nxos_evpn_global/configured.cfg b/test/units/modules/network/nxos/fixtures/nxos_evpn_global/configured.cfg deleted file mode 100644 index 32504f6bfb..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_evpn_global/configured.cfg +++ /dev/null @@ -1,3 +0,0 @@ -hostname switch01 -nv overlay evpn - diff --git a/test/units/modules/network/nxos/fixtures/nxos_evpn_global/unconfigured.cfg b/test/units/modules/network/nxos/fixtures/nxos_evpn_global/unconfigured.cfg deleted file mode 100644 index c555eaaf96..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_evpn_global/unconfigured.cfg +++ /dev/null @@ -1 +0,0 @@ -hostname switch01 diff --git a/test/units/modules/network/nxos/fixtures/nxos_evpn_vni_config.cfg b/test/units/modules/network/nxos/fixtures/nxos_evpn_vni_config.cfg deleted file mode 100644 index b1c8352f58..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_evpn_vni_config.cfg +++ /dev/null @@ -1,8 +0,0 @@ -nv overlay evpn -feature nv overlay - -evpn - vni 6000 l2 - rd auto - route-target import auto - route-target export auto diff --git a/test/units/modules/network/nxos/fixtures/nxos_feature/show_feature.txt b/test/units/modules/network/nxos/fixtures/nxos_feature/show_feature.txt deleted file mode 100644 index cf6dbdbde8..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_feature/show_feature.txt +++ /dev/null @@ -1,4 +0,0 @@ -Feature Name Instance State --------------------- -------- ----- -nve 1 disabled -ospf 1 enabled diff --git a/test/units/modules/network/nxos/fixtures/nxos_interface_ospf/config.cfg b/test/units/modules/network/nxos/fixtures/nxos_interface_ospf/config.cfg deleted file mode 100644 index 2061d4d71a..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_interface_ospf/config.cfg +++ /dev/null @@ -1,17 +0,0 @@ -interface Ethernet1/33 -interface Ethernet1/33.101 - ip router ospf 1 area 0.0.0.1 -interface Ethernet1/34 - ip router ospf 1 area 0.0.0.1 - ip ospf passive-interface -interface Ethernet1/35 - ip router ospf 1 area 0.0.0.1 - no ip ospf passive-interface - -interface Ethernet1/36 - ip router ospf 1 area 0.0.0.1 - ip ospf bfd - -interface Ethernet1/37 - ip router ospf 1 area 0.0.0.1 - ip ospf bfd disable diff --git a/test/units/modules/network/nxos/fixtures/nxos_l3_interface/ethernet_noshut b/test/units/modules/network/nxos/fixtures/nxos_l3_interface/ethernet_noshut deleted file mode 100644 index b0407edc49..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_l3_interface/ethernet_noshut +++ /dev/null @@ -1,3 +0,0 @@ -interface Ethernet1/1 - description Configured by Ansible - no shutdown diff --git a/test/units/modules/network/nxos/fixtures/nxos_l3_interface/ethernet_noshut_ipv4_ipv6 b/test/units/modules/network/nxos/fixtures/nxos_l3_interface/ethernet_noshut_ipv4_ipv6 deleted file mode 100644 index 3e4f197876..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_l3_interface/ethernet_noshut_ipv4_ipv6 +++ /dev/null @@ -1,5 +0,0 @@ -interface Ethernet1/1 - description Configured by Ansible - ip address 192.168.0.1/24 - ipv6 address 2001:db8::1/124 - no shutdown diff --git a/test/units/modules/network/nxos/fixtures/nxos_l3_interface/ethernet_noshut_multiple_ipv6 b/test/units/modules/network/nxos/fixtures/nxos_l3_interface/ethernet_noshut_multiple_ipv6 deleted file mode 100644 index 9013b1348e..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_l3_interface/ethernet_noshut_multiple_ipv6 +++ /dev/null @@ -1,7 +0,0 @@ -interface Ethernet1/1 - description Configured by Ansible - ip address 192.168.0.1/24 - ipv6 address 2001:db8:1::1/124 - ipv6 address 2001:db8:2::1/124 - ipv6 address 2001:db8::1/124 - no shutdown diff --git a/test/units/modules/network/nxos/fixtures/nxos_nxapi/n3k/show_run_all b/test/units/modules/network/nxos/fixtures/nxos_nxapi/n3k/show_run_all deleted file mode 100644 index da0dfaa79f..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_nxapi/n3k/show_run_all +++ /dev/null @@ -1,2 +0,0 @@ -feature nxapi -nxapi http port 80 diff --git a/test/units/modules/network/nxos/fixtures/nxos_nxapi/n7k/show_run_all b/test/units/modules/network/nxos/fixtures/nxos_nxapi/n7k/show_run_all deleted file mode 100644 index 0c4a3ea5a6..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_nxapi/n7k/show_run_all +++ /dev/null @@ -1,5 +0,0 @@ -feature nxapi -nxapi http port 80 -no nxapi https -no nxapi sandbox - diff --git a/test/units/modules/network/nxos/fixtures/nxos_overlay_global_config.cfg b/test/units/modules/network/nxos/fixtures/nxos_overlay_global_config.cfg deleted file mode 100644 index 45a6ff99c7..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_overlay_global_config.cfg +++ /dev/null @@ -1 +0,0 @@ -fabric forwarding anycast-gateway-mac 000B.000B.000B diff --git a/test/units/modules/network/nxos/fixtures/nxos_pim/config.cfg b/test/units/modules/network/nxos/fixtures/nxos_pim/config.cfg deleted file mode 100644 index 9771622d6f..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_pim/config.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ip pim bfd -ip pim ssm range 127.0.0.0/31 diff --git a/test/units/modules/network/nxos/fixtures/nxos_pim_interface/config.cfg b/test/units/modules/network/nxos/fixtures/nxos_pim_interface/config.cfg deleted file mode 100644 index 2120e607bf..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_pim_interface/config.cfg +++ /dev/null @@ -1,11 +0,0 @@ -!Command: show running-config interface Ethernet2/1 -!Time: Mon Aug 21 17:22:02 2017 - -version 7.3(0)D1(1) - -interface Ethernet2/1 - description Configured by Ansible - Layer3 - no switchport - mac-address fa16.3e00.0006 - ip address 10.0.0.69/30 - no shutdown diff --git a/test/units/modules/network/nxos/fixtures/nxos_pim_interface/sh_run_interface_eth2_1_all b/test/units/modules/network/nxos/fixtures/nxos_pim_interface/sh_run_interface_eth2_1_all deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_pim_interface/sh_run_interface_eth2_1_all +++ /dev/null diff --git a/test/units/modules/network/nxos/fixtures/nxos_pim_interface/show_interface_eth2_1 b/test/units/modules/network/nxos/fixtures/nxos_pim_interface/show_interface_eth2_1 deleted file mode 100644 index f478350f0d..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_pim_interface/show_interface_eth2_1 +++ /dev/null @@ -1,96 +0,0 @@ -{ - "TABLE_interface": { - "ROW_interface": { - "interface": "Ethernet2/1", - "state": "up", - "admin_state": "up", - "share_state": "Dedicated", - "eth_hw_desc": "Ethernet", - "eth_hw_addr": "fa16.3e00.0001", - "eth_bia_addr": "fa16.3e27.f279", - "desc": "to nxos03", - "eth_ip_addr": "10.0.0.45", - "eth_ip_mask": 30, - "eth_ip_prefix": "10.0.0.44", - "eth_mtu": "1500", - "eth_bw": 1000000, - "eth_dly": 10, - "eth_reliability": "255", - "eth_txload": "1", - "eth_rxload": "1", - "medium": "broadcast", - "eth_mode": "routed", - "eth_duplex": "full", - "eth_speed": "1000 Mb/s", - "eth_beacon": "off", - "eth_autoneg": "off", - "eth_in_flowctrl": "off", - "eth_out_flowctrl": "off", - "eth_mdix": "off", - "eth_swt_monitor": "off", - "eth_ethertype": "0x8100", - "eth_eee_state": "n/a", - "eth_link_flapped": "14week(s) 0day(s)", - "eth_clear_counters": "never", - "eth_reset_cntr": 1, - "eth_load_interval1_rx": 0, - "eth_inrate1_bits": 0, - "eth_inrate1_pkts": 0, - "eth_load_interval1_tx": 0, - "eth_outrate1_bits": 0, - "eth_outrate1_pkts": 0, - "eth_inrate1_summary_bits": "0 bps", - "eth_inrate1_summary_pkts": "0 pps", - "eth_outrate1_summary_bits": "0 bps", - "eth_outrate1_summary_pkts": "0 pps", - "eth_load_interval2_rx": 0, - "eth_inrate2_bits": 0, - "eth_inrate2_pkts": 0, - "eth_load_interval2_tx": 0, - "eth_outrate2_bits": 0, - "eth_outrate2_pkts": 0, - "eth_inrate2_summary_bits": "0 bps", - "eth_inrate2_summary_pkts": "0 pps", - "eth_outrate2_summary_bits": "0 bps", - "eth_outrate2_summary_pkts": "0 pps", - "eth_inucast": 0, - "eth_inmcast": 0, - "eth_inbcast": 0, - "eth_inpkts": 0, - "eth_inbytes": 0, - "eth_jumbo_inpkts": 0, - "eth_storm_supp": 0, - "eth_runts": 0, - "eth_giants": 0, - "eth_crc": 0, - "eth_nobuf": 0, - "eth_inerr": 0, - "eth_frame": 0, - "eth_overrun": 0, - "eth_underrun": 0, - "eth_ignored": 0, - "eth_watchdog": 0, - "eth_bad_eth": 0, - "eth_bad_proto": 0, - "eth_in_ifdown_drops": 0, - "eth_dribble": 0, - "eth_indiscard": 0, - "eth_inpause": 0, - "eth_outucast": 0, - "eth_outmcast": 0, - "eth_outbcast": 0, - "eth_outpkts": 0, - "eth_outbytes": 0, - "eth_jumbo_outpkts": 0, - "eth_outerr": 0, - "eth_coll": 0, - "eth_deferred": 0, - "eth_latecoll": 0, - "eth_lostcarrier": 0, - "eth_nocarrier": 0, - "eth_babbles": 0, - "eth_outdiscard": 0, - "eth_outpause": 0 - } - } -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_pim_interface/show_ip_pim_interface_eth2_1 b/test/units/modules/network/nxos/fixtures/nxos_pim_interface/show_ip_pim_interface_eth2_1 deleted file mode 100644 index e013423ba4..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_pim_interface/show_ip_pim_interface_eth2_1 +++ /dev/null @@ -1,68 +0,0 @@ -{ - "TABLE_vrf": { - "ROW_vrf": { - "vrf-name": "default", - "TABLE_iod": { - "ROW_iod": { - "if-name": "Ethernet2/1", - "if-status": "protocol-up/link-up/admin-up", - "if-addr-summary": "IP address: 10.0.0.45, IP subnet: 10.0.0.44/30", - "pim-dr-address": "10.0.0.45", - "dr-priority": 2, - "nbr-cnt": 0, - "hello-interval-sec": 35, - "hello-timer": "PT3S", - "holdtime-sec": 105, - "if-conf-dr-priority": 1, - "if-conf-delay": 3, - "is-border": "true", - "genid": "38c4b959", - "isauth-config": "false", - "nbr-policy-name": "none configured", - "jp-interval": 1, - "jp-next-send": 1, - "pim-bfd-enabled": "no", - "is-passive": "false", - "is-pim-vpc-svi": "no", - "is-auto-enabled": "no", - "last-cleared": "PT0S", - "hello-sent": 23, - "hello-rcvd": 0, - "hello-early-sent": 0, - "jp-sent": 0, - "jp-rcvd": 0, - "assert-sent": 0, - "assert-rcvd": 0, - "graft-sent": 0, - "graft-rcvd": 0, - "graft-ack-sent": 0, - "graft-ack-rcvd": 0, - "df-offer-sent": 0, - "df-offer-rcvd": 0, - "df-winner-sent": 0, - "df-winner-rcvd": 0, - "df-backoff-sent": 0, - "df-backoff-rcvd": 0, - "pass-sent": 0, - "pass-rcvd": 0, - "cksum-errors": 0, - "invalid-errors": 0, - "invalid-df-errors": 0, - "auth-failed": 0, - "pak-len-errors": 0, - "ver-errors": 0, - "pkts-self": 0, - "pkts-non-nbr": 0, - "pkts-on-passive": 0, - "jp-rcvd-on-rpf": 0, - "jp-rcvd-no-rp": 0, - "jp-rcvd-wrong-rp": 0, - "jp-rcvd-for-ssm": 0, - "jp-rcvd-for-bidir": 0, - "jp-in-policy-filter": 0, - "jp-out-policy-filter": 0 - } - } - } - } -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_pim_rp_address/config.cfg b/test/units/modules/network/nxos/fixtures/nxos_pim_rp_address/config.cfg deleted file mode 100644 index ca9730ec7e..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_pim_rp_address/config.cfg +++ /dev/null @@ -1 +0,0 @@ -ip pim rp-address 1.2.3.4 diff --git a/test/units/modules/network/nxos/fixtures/nxos_static_route.cfg b/test/units/modules/network/nxos/fixtures/nxos_static_route.cfg deleted file mode 100644 index 8b1a6fe863..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_static_route.cfg +++ /dev/null @@ -1,3 +0,0 @@ -ip route 10.10.30.0/24 1.2.4.8 -vrf context test - ip route 10.8.0.0/14 15.16.17.18 diff --git a/test/units/modules/network/nxos/fixtures/nxos_system_config.cfg b/test/units/modules/network/nxos/fixtures/nxos_system_config.cfg deleted file mode 100644 index 362b733215..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_system_config.cfg +++ /dev/null @@ -1,16 +0,0 @@ -hostname nxos01 -system jumbomtu 1500 -! -no ip domain-lookup -ip domain-name ansible.com -ip domain-list ansible.com -ip domain-list redhat.com -ip name-server 8.8.8.8 172.26.1.1 -! -vrf context management - ip domain-name eng.ansible.com - ip domain-list ansible.com - ip domain-list redhat.com - ip name-server 172.26.1.1 8.8.8.8 - ip route 172.26.0.0/16 172.26.4.1 - diff --git a/test/units/modules/network/nxos/fixtures/nxos_telemetry/N9K.cfg b/test/units/modules/network/nxos/fixtures/nxos_telemetry/N9K.cfg deleted file mode 100644 index 697c2c18bf..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_telemetry/N9K.cfg +++ /dev/null @@ -1,43 +0,0 @@ -feature telemetry - -telemetry - certificate /bootflash/server.key localhost - destination-profile - use-vrf management - use-compression gzip - source-interface loopback55 - destination-group 2 - ip address 192.168.0.1 port 50001 protocol gRPC encoding GPB - ip address 192.168.0.2 port 60001 protocol gRPC encoding GPB - destination-group 10 - ip address 192.168.0.1 port 50001 protocol gRPC encoding GPB - ip address 192.168.0.2 port 60001 protocol gRPC encoding GPB - sensor-group 2 - data-source DME - path boo depth 0 - path sys/ospf depth 0 query-condition qc filter-condition fc - path interfaces depth 0 - path sys/bgp - path sys/bgp/inst depth 0 query-condition foo filter-condition foo - path sys/bgp/inst/dom-default/peer-[10.10.10.11]/ent-[10.10.10.11] - path sys/bgp/inst/dom-default/peer-[20.20.20.11]/ent-[20.20.20.11] - path too depth 0 filter-condition foo - sensor-group 55 - sensor-group 56 - data-source DME - path environment - path interface - path resources - path vxlan - subscription 3 - subscription 4 - dst-grp 2 - snsr-grp 2 sample-interval 1000 - subscription 5 - dst-grp 2 - snsr-grp 2 sample-interval 1000 - subscription 6 - dst-grp 10 - subscription 7 - dst-grp 10 - snsr-grp 2 sample-interval 1000 diff --git a/test/units/modules/network/nxos/fixtures/nxos_telemetry/N9K_SGs.cfg b/test/units/modules/network/nxos/fixtures/nxos_telemetry/N9K_SGs.cfg deleted file mode 100644 index 1729ad813a..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_telemetry/N9K_SGs.cfg +++ /dev/null @@ -1,19 +0,0 @@ -feature telemetry - -telemetry - sensor-group 1 - path sys/ch depth 4 - path sys/procsys depth 1 - sensor-group 2 - data-source NX-API - path "show bgp l2vpn evpn summary" - path "show isis adjacency" - path "show mac address-table count" depth 2 - path "show bgp sessions" - sensor-group 3 - data-source NX-API - path "show interface ethernet1/1-52" - sensor-group 4 - path sys/bd depth 2 - path sys/eps/epId-1/nws depth 2 - path sys/eps/epId-1/peers depth 2 diff --git a/test/units/modules/network/nxos/fixtures/nxos_vlan/agg_show_vlan_brief.txt b/test/units/modules/network/nxos/fixtures/nxos_vlan/agg_show_vlan_brief.txt deleted file mode 100644 index 4ba12553ed..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vlan/agg_show_vlan_brief.txt +++ /dev/null @@ -1,27 +0,0 @@ -{ - "TABLE_vlanbriefxbrief": { - "ROW_vlanbriefxbrief": [ - { - "vlanshowbr-vlanid": 1, - "vlanshowbr-vlanid-utf": 1, - "vlanshowbr-vlanname": "default", - "vlanshowbr-vlanstate": "active", - "vlanshowbr-shutstate": "noshutdown" - }, - { - "vlanshowbr-vlanid": 4, - "vlanshowbr-vlanid-utf": 4, - "vlanshowbr-vlanname": "_4_", - "vlanshowbr-vlanstate": "active", - "vlanshowbr-shutstate": "noshutdown" - }, - { - "vlanshowbr-vlanid": 5, - "vlanshowbr-vlanid-utf": 5, - "vlanshowbr-vlanname": "_5_", - "vlanshowbr-vlanstate": "active", - "vlanshowbr-shutstate": "noshutdown" - } - ] - } -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_vlan/config.cfg b/test/units/modules/network/nxos/fixtures/nxos_vlan/config.cfg deleted file mode 100644 index 905d309ff0..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vlan/config.cfg +++ /dev/null @@ -1,4 +0,0 @@ -vlan 1 - mode ce - state active - no shutdown diff --git a/test/units/modules/network/nxos/fixtures/nxos_vlan/show_vlan_brief.txt b/test/units/modules/network/nxos/fixtures/nxos_vlan/show_vlan_brief.txt deleted file mode 100644 index ca90e5d494..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vlan/show_vlan_brief.txt +++ /dev/null @@ -1,11 +0,0 @@ -{ - "TABLE_vlanbriefxbrief": { - "ROW_vlanbriefxbrief": { - "vlanshowbr-vlanid": 16777216, - "vlanshowbr-vlanid-utf": 1, - "vlanshowbr-vlanname": "default", - "vlanshowbr-vlanstate": "active", - "vlanshowbr-shutstate": "noshutdown" - } - } -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_vlans/show_running-config b/test/units/modules/network/nxos/fixtures/nxos_vlans/show_running-config deleted file mode 100644 index 51e64c9967..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vlans/show_running-config +++ /dev/null @@ -1,13 +0,0 @@ -vlan 1,3-5,8 -vlan 3 - name test-vlan3 -vlan 5 - shutdown - name test-changeme - mode fabricpath - state suspend - vn-segment 942 -vlan 8 - shutdown - name test-changeme-not - state suspend diff --git a/test/units/modules/network/nxos/fixtures/nxos_vlans/show_running-config_no_facts b/test/units/modules/network/nxos/fixtures/nxos_vlans/show_running-config_no_facts deleted file mode 100644 index ef66a7fff4..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vlans/show_running-config_no_facts +++ /dev/null @@ -1 +0,0 @@ -! no data diff --git a/test/units/modules/network/nxos/fixtures/nxos_vlans/show_running-config_vlan_1 b/test/units/modules/network/nxos/fixtures/nxos_vlans/show_running-config_vlan_1 deleted file mode 100644 index 4343b9f294..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vlans/show_running-config_vlan_1 +++ /dev/null @@ -1 +0,0 @@ -vlan 1 diff --git a/test/units/modules/network/nxos/fixtures/nxos_vlans/show_vlan b/test/units/modules/network/nxos/fixtures/nxos_vlans/show_vlan deleted file mode 100644 index 9d53309f3f..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vlans/show_vlan +++ /dev/null @@ -1,45 +0,0 @@ -{ - "TABLE_vlanbrief": { - "ROW_vlanbrief": [ - { "vlanshowbr-vlanid": "1", "vlanshowbr-vlanid-utf": "1", - "vlanshowbr-vlanname": "default", - "vlanshowbr-vlanstate": "active", - "vlanshowbr-shutstate": "noshutdown" - }, - { "vlanshowbr-vlanid": "3", "vlanshowbr-vlanid-utf": "3", - "vlanshowbr-vlanname": "test-vlan3", - "vlanshowbr-vlanstate": "active", - "vlanshowbr-shutstate": "noshutdown" - }, - { "vlanshowbr-vlanid": "4", "vlanshowbr-vlanid-utf": "4", - "vlanshowbr-vlanname": "VLAN0004", - "vlanshowbr-vlanstate": "active", - "vlanshowbr-shutstate": "noshutdown" - }, - { "vlanshowbr-vlanid": "5", "vlanshowbr-vlanid-utf": "5", - "vlanshowbr-vlanname": "test-changeme", - "vlanshowbr-vlanstate": "suspend", - "vlanshowbr-shutstate": "shutdown" - }, - { "vlanshowbr-vlanid": "8", "vlanshowbr-vlanid-utf": "8", - "vlanshowbr-vlanname": "test-changeme-not", - "vlanshowbr-vlanstate": "suspend", - "vlanshowbr-shutstate": "shutdown" - } - ] - }, - "TABLE_mtuinfo": { - "ROW_mtuinfo": [ - { "vlanshowinfo-vlanid": "1", "vlanshowinfo-media-type": "enet", - "vlanshowinfo-vlanmode": "ce-vlan" }, - { "vlanshowinfo-vlanid": "3", "vlanshowinfo-media-type": "enet", - "vlanshowinfo-vlanmode": "ce-vlan" }, - { "vlanshowinfo-vlanid": "4", "vlanshowinfo-media-type": "enet", - "vlanshowinfo-vlanmode": "ce-vlan" }, - { "vlanshowinfo-vlanid": "5", "vlanshowinfo-media-type": "enet", - "vlanshowinfo-vlanmode": "fabricpath-vlan" }, - { "vlanshowinfo-vlanid": "8", "vlanshowinfo-media-type": "enet", - "vlanshowinfo-vlanmode": "ce-vlan" } - ] - } -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_vlans/show_vlan_no_facts b/test/units/modules/network/nxos/fixtures/nxos_vlans/show_vlan_no_facts deleted file mode 100644 index 0967ef424b..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vlans/show_vlan_no_facts +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/test/units/modules/network/nxos/fixtures/nxos_vlans/show_vlan_vlan_1 b/test/units/modules/network/nxos/fixtures/nxos_vlans/show_vlan_vlan_1 deleted file mode 100644 index 630ebbc34b..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vlans/show_vlan_vlan_1 +++ /dev/null @@ -1,16 +0,0 @@ -{ - "TABLE_vlanbrief": { - "ROW_vlanbrief": { - "vlanshowbr-vlanid": "1", "vlanshowbr-vlanid-utf": "1", - "vlanshowbr-vlanname": "default", - "vlanshowbr-vlanstate": "active", - "vlanshowbr-shutstate": "noshutdown" - }, - }, - "TABLE_mtuinfo": { - "ROW_mtuinfo": { - "vlanshowinfo-vlanid": "1", "vlanshowinfo-media-type": "enet", - "vlanshowinfo-vlanmode": "ce-vlan" - }, - } -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_vpc/show_vpc b/test/units/modules/network/nxos/fixtures/nxos_vpc/show_vpc deleted file mode 100644 index 7d2c2eaeee..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vpc/show_vpc +++ /dev/null @@ -1,20 +0,0 @@ -{ - "vpc-domain-id": "not configured", - "vpc-peer-status": "peer-not-configured", - "vpc-peer-status-reason": "SUCCESS", - "vpc-peer-keepalive-status": "disabled", - "vpc-peer-consistency": "inconsistent", - "vpc-peer-consistency-status": "SYSERR_MCECM_MCT_DOES_NOT_EXISTS", - "vpc-per-vlan-peer-consistency": "inconsistent", - "vpc-type-2-consistency": "inconsistent", - "vpc-type-2-consistency-status": "SYSERR_MCECM_MCT_DOES_NOT_EXISTS", - "vpc-role": "none-established", - "num-of-vpcs": "0", - "peer-gateway": "disabled", - "dual-active-excluded-vlans": "-", - "vpc-graceful-consistency-check-status": "enabled", - "vpc-auto-recovery-status": "Enabled (timeout = 240 seconds)", - "operational-l3-peer": "disabled", - "vpc-isolation-status": "disabled-user", - "vpc-check-consist-note": "disabled" -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_vpc/show_vrf_all b/test/units/modules/network/nxos/fixtures/nxos_vpc/show_vrf_all deleted file mode 100644 index 838190fb71..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vpc/show_vrf_all +++ /dev/null @@ -1,30 +0,0 @@ -{ - "TABLE_vrf": { - "ROW_vrf": [ - { - "vrf_name": "coke", - "vrf_id": 4, - "vrf_state": "Up", - "vrf_reason": "--" - }, - { - "vrf_name": "default", - "vrf_id": 1, - "vrf_state": "Up", - "vrf_reason": "--" - }, - { - "vrf_name": "management", - "vrf_id": 2, - "vrf_state": "Up", - "vrf_reason": "--" - }, - { - "vrf_name": "test-vrf", - "vrf_id": 3, - "vrf_state": "Up", - "vrf_reason": "--" - } - ] - } -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_show_hardware b/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_show_hardware deleted file mode 100644 index 612a6b3da0..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_show_hardware +++ /dev/null @@ -1,3 +0,0 @@ -{ - "kickstart_ver_str": "7.0(3)I5(3)" -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_show_inventory b/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_show_inventory deleted file mode 100644 index c1a149ddb2..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_show_inventory +++ /dev/null @@ -1,13 +0,0 @@ -{ - "TABLE_inv": { - "ROW_inv": [ - { - "name": "Chassis", - "desc": "Nexus9000 C9504 (4 Slot) Chassis", - "productid": "N9K-C9504", - "vendorid": "V01", - "serialnum": "BR-549" - } - ] - } -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_show_vpc b/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_show_vpc deleted file mode 100644 index f86daa6bda..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_show_vpc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "vpc-domain-id": "100" -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_show_vrf_all b/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_show_vrf_all deleted file mode 100644 index 3f56f8adbb..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_show_vrf_all +++ /dev/null @@ -1,36 +0,0 @@ -{ - "TABLE_vrf": { - "ROW_vrf": [ - { - "vrf_name": "my_vrf", - "vrf_id": 4, - "vrf_state": "Up", - "vrf_reason": "--" - }, - { - "vrf_name": "default", - "vrf_id": 1, - "vrf_state": "Up", - "vrf_reason": "--" - }, - { - "vrf_name": "management", - "vrf_id": 2, - "vrf_state": "Up", - "vrf_reason": "--" - }, - { - "vrf_name": "test-vrf", - "vrf_id": 3, - "vrf_state": "Up", - "vrf_reason": "--" - }, - { - "vrf_name": "obviously-different-vrf", - "vrf_id": 4, - "vrf_state": "Up", - "vrf_reason": "--" - } - ] - } -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_vpc_config b/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_vpc_config deleted file mode 100644 index e7258296fd..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vpc/vrf_test_vpc_config +++ /dev/null @@ -1,2 +0,0 @@ -vpc domain 100 - peer-keepalive destination 192.168.1.1 source 10.1.1.1 vrf my_vrf diff --git a/test/units/modules/network/nxos/fixtures/nxos_vpc_interface/show_port-channel_summary b/test/units/modules/network/nxos/fixtures/nxos_vpc_interface/show_port-channel_summary deleted file mode 100644 index d62bea661a..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vpc_interface/show_port-channel_summary +++ /dev/null @@ -1,22 +0,0 @@ -{ - "TABLE_channel": { - "ROW_channel": [ - { - "group": "10", - "port-channel": "port-channel10", - "layer": "R", - "status": "D", - "type": "Eth", - "prtcl": "NONE" - }, - { - "group": "20", - "port-channel": "port-channel20", - "layer": "R", - "status": "D", - "type": "Eth", - "prtcl": "NONE" - } - ] - } -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_vpc_interface/show_vpc_brief b/test/units/modules/network/nxos/fixtures/nxos_vpc_interface/show_vpc_brief deleted file mode 100644 index 2206eca096..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vpc_interface/show_vpc_brief +++ /dev/null @@ -1,14 +0,0 @@ -{ - "TABLE_vpc": { - "ROW_vpc": [ - { - "vpc-id": 100, - "vpc-ifindex": "Po10", - "vpc-port-state": "Up", - "vpc-thru-peerlink": 19, - "vpc-consistency": "consistent", - "vpc-consistency-status": "SUCCESS" - } - ] - } -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_vrf/show_run_all b/test/units/modules/network/nxos/fixtures/nxos_vrf/show_run_all deleted file mode 100644 index 06fe9f91d9..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vrf/show_run_all +++ /dev/null @@ -1,4 +0,0 @@ -vrf context coke -vrf context management - ip route 172.26.0.0/16 172.26.4.1 -vrf context test-vrf diff --git a/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_default b/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_default deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_default +++ /dev/null diff --git a/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_default_interface b/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_default_interface deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_default_interface +++ /dev/null diff --git a/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_management b/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_management deleted file mode 100644 index 2b6e9b5212..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_management +++ /dev/null @@ -1,10 +0,0 @@ -{ - "TABLE_vrf": { - "ROW_vrf": { - "vrf_name": "management", - "vrf_id": 2, - "vrf_state": "Up", - "vrf_reason": "--" - } - } -} diff --git a/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_management_interface b/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_management_interface deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_management_interface +++ /dev/null diff --git a/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_ntc b/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_ntc deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_ntc +++ /dev/null diff --git a/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_ntc_interface b/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_ntc_interface deleted file mode 100644 index e69de29bb2..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_ntc_interface +++ /dev/null diff --git a/test/units/modules/network/nxos/fixtures/nxos_vrf_af/config.cfg b/test/units/modules/network/nxos/fixtures/nxos_vrf_af/config.cfg deleted file mode 100644 index 1ac093f71f..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vrf_af/config.cfg +++ /dev/null @@ -1,22 +0,0 @@ -vrf context vrf1 - address-family ipv4 unicast - -vrf context vrf11 - address-family ipv4 unicast - route-target both auto evpn - -vrf context vrf21 - address-family ipv4 unicast - route-target import 65000:1000 - route-target import 65001:1000 - route-target import 65002:1000 - route-target export 65000:1000 - route-target export 65001:1000 - route-target export 65002:1000 - -vrf context vrf31 - address-family ipv4 unicast - route-target import 65000:1000 - route-target export 65001:1000 - route-target import 65002:1000 - route-target export 65003:1000
\ No newline at end of file diff --git a/test/units/modules/network/nxos/fixtures/nxos_vsan/shvsan.cfg b/test/units/modules/network/nxos/fixtures/nxos_vsan/shvsan.cfg deleted file mode 100644 index 035351a9f6..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vsan/shvsan.cfg +++ /dev/null @@ -1,35 +0,0 @@ -vsan 1 information - name:VSAN0001 state:active - interoperability mode:default - loadbalancing:src-id/dst-id/oxid - operational state:up - -vsan 10 information - name:VsanAll state:suspended - interoperability mode:default - loadbalancing:src-id/dst-id/oxid - operational state:down - -vsan 221 information - name:VSAN0221 state:active - interoperability mode:default - loadbalancing:src-id/dst-id/oxid - operational state:up - -vsan 922 information - name:vsan-SAN-A state:active - interoperability mode:default - loadbalancing:src-id/dst-id/oxid - operational state:down - -vsan 923 information - name:vsan-SAN-B state:active - interoperability mode:default - loadbalancing:src-id/dst-id/oxid - operational state:up - -vsan 4079:evfp_isolated_vsan - -vsan 4094:isolated_vsan - - diff --git a/test/units/modules/network/nxos/fixtures/nxos_vsan/shvsanmem.cfg b/test/units/modules/network/nxos/fixtures/nxos_vsan/shvsanmem.cfg deleted file mode 100644 index c57c72a2f0..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vsan/shvsanmem.cfg +++ /dev/null @@ -1,30 +0,0 @@ -vsan 1 interfaces: - fc1/4 fc1/5 fc1/6 fc1/7 - fc1/8 fc1/9 fc1/10 fc1/12 - fc1/13 fc1/14 fc1/15 fc1/16 - fc1/17 fc1/18 fc1/19 fc1/20 - fc1/22 fc1/23 fc1/24 fc1/25 - fc1/26 fc1/27 fc1/28 fc1/29 - fc1/30 fc1/31 fc1/32 fc1/33 - fc1/34 fc1/35 fc1/36 fc1/37 - fc1/38 fc1/39 fc1/40 - -vsan 10 interfaces: - - -vsan 221 interfaces: - - -vsan 922 interfaces: - fc1/1 fc1/2 fc1/3 port-channel55 - -vsan 923 interfaces: - fc1/11 fc1/21 port-channel56 - -vsan 4079(evfp_isolated_vsan) interfaces: - - -vsan 4094(isolated_vsan) interfaces: - port-channel145 - - diff --git a/test/units/modules/network/nxos/fixtures/nxos_vxlan_vtep/config.cfg b/test/units/modules/network/nxos/fixtures/nxos_vxlan_vtep/config.cfg deleted file mode 100644 index 88e2f0ba9a..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vxlan_vtep/config.cfg +++ /dev/null @@ -1,2 +0,0 @@ -interface nve1 - member vni 6000 diff --git a/test/units/modules/network/nxos/fixtures/nxos_vxlan_vtep_vni/config.cfg b/test/units/modules/network/nxos/fixtures/nxos_vxlan_vtep_vni/config.cfg deleted file mode 100644 index 88e2f0ba9a..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_vxlan_vtep_vni/config.cfg +++ /dev/null @@ -1,2 +0,0 @@ -interface nve1 - member vni 6000 diff --git a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzone_0.cfg b/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzone_0.cfg deleted file mode 100644 index 14b431b9b0..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzone_0.cfg +++ /dev/null @@ -1,8 +0,0 @@ -zone name zoneA vsan 923 - pwwn 11:11:11:11:11:11:11:11 - device-alias test123 - -zone name zoneB vsan 923 - pwwn 10:11:11:11:11:11:11:11 - pwwn 62:62:62:62:21:21:21:21 - diff --git a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzone_1.cfg b/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzone_1.cfg deleted file mode 100644 index 73d58c51e8..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzone_1.cfg +++ /dev/null @@ -1,8 +0,0 @@ -zone name zoneA vsan 922 - pwwn 11:11:11:11:11:11:11:11 - device-alias test123 both - -zone name zoneB vsan 922 - pwwn 10:11:11:11:11:11:11:11 - pwwn 62:62:62:62:21:21:21:21 - diff --git a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzone_2.cfg b/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzone_2.cfg deleted file mode 100644 index 530266d4ca..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzone_2.cfg +++ /dev/null @@ -1,6 +0,0 @@ -zone name zv221 vsan 221 - pwwn 21:01:00:1b:32:a1:c0:a8 [h181-dell-linux-top-p2] - pwwn 10:00:00:90:fa:c7:da:42 [h172-32ghost-p2] - pwwn 21:01:00:1b:32:aa:50:4b [h190-dell-linux-top-p2] - pwwn 50:06:01:6a:47:e4:6e:59 [VNX_UNITY_235_SPB-1-2] - pwwn 21:01:00:1b:32:aa:ff:4a [h189-dell-windows-bottom-p2] diff --git a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzoneset_0.cfg b/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzoneset_0.cfg deleted file mode 100644 index c1b560053d..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzoneset_0.cfg +++ /dev/null @@ -1,10 +0,0 @@ -zoneset name zsetname21 vsan 922 - zone name zone21A vsan 922 - pwwn 11:11:11:11:11:11:11:11 both - pwwn 62:62:62:62:12:12:12:12 - - zone name zone21B vsan 922 - pwwn 10:11:11:11:11:11:11:11 - pwwn 62:62:62:62:21:21:21:21 - device-alias somedummyname - diff --git a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzoneset_1.cfg b/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzoneset_1.cfg deleted file mode 100644 index 77d296229c..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzoneset_1.cfg +++ /dev/null @@ -1,9 +0,0 @@ -zoneset name zsetname1 vsan 923 - zone name zoneA vsan 923 - pwwn 11:11:11:11:11:11:11:11 - device-alias test123 - - zone name zoneB vsan 923 - pwwn 10:11:11:11:11:11:11:11 - pwwn 62:62:62:62:21:21:21:21 - diff --git a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzoneset_2.cfg b/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzoneset_2.cfg deleted file mode 100644 index 923f54e4b6..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzoneset_2.cfg +++ /dev/null @@ -1,7 +0,0 @@ -zoneset name zsv221 vsan 221 - zone name zv221 vsan 221 - pwwn 21:01:00:1b:32:a1:c0:a8 [h181-dell-linux-top-p2] - pwwn 10:00:00:90:fa:c7:da:42 [h172-32ghost-p2] - pwwn 21:01:00:1b:32:aa:50:4b [h190-dell-linux-top-p2] - pwwn 50:06:01:6a:47:e4:6e:59 [VNX_UNITY_235_SPB-1-2] - pwwn 21:01:00:1b:32:aa:ff:4a [h189-dell-windows-bottom-p2] diff --git a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonesetactive_0.cfg b/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonesetactive_0.cfg deleted file mode 100644 index 1180410a1a..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonesetactive_0.cfg +++ /dev/null @@ -1,8 +0,0 @@ -zoneset name zsv221 vsan 221 - zone name zv221 vsan 221 - * fcid 0x2f0000 [pwwn 21:01:00:1b:32:a1:c0:a8] [h181-dell-linux-top-p2] - * fcid 0xa90000 [pwwn 10:00:00:90:fa:c7:da:42] [h172-32ghost-p2] - * fcid 0xd50000 [pwwn 21:01:00:1b:32:aa:50:4b] [h190-dell-linux-top-p2] - * fcid 0xde0000 [pwwn 50:06:01:6a:47:e4:6e:59] [VNX_UNITY_235_SPB-1-2] - pwwn 21:01:00:1b:32:aa:ff:4a [h189-dell-windows-bottom-p2] - diff --git a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_0.cfg b/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_0.cfg deleted file mode 100644 index 0bfced832b..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_0.cfg +++ /dev/null @@ -1,23 +0,0 @@ -VSAN: 922 default-zone: deny distribute: active only Interop: default - mode: basic merge-control: allow - session: none - hard-zoning: enabled broadcast: unsupported - smart-zoning: enabled - rscn-format: fabric-address - activation overwrite control: disabled -Default zone: - qos: none broadcast: unsupported ronly: unsupported -Full Zoning Database : - DB size: 358 bytes - Zonesets: 1 Zones: 2 Aliases: 0 -Active Zoning Database : - DB Size: 125 bytes - Name: zsetname21 Zonesets: 1 Zones: 2 -Current Total Zone DB Usage: 483 / 2097152 bytes (0 % used) -Pending (Session) DB size: - Full DB Copy size: n/a - Active DB Copy size: n/a -SFC size: 483 / 2097152 bytes (0 % used) -Status: Activation completed at 23:50:35 IST Jul 3 2019 - - diff --git a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_1.cfg b/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_1.cfg deleted file mode 100644 index bf7a4615fb..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_1.cfg +++ /dev/null @@ -1,23 +0,0 @@ -VSAN: 922 default-zone: deny distribute: full Interop: default - mode: enhanced merge-control: allow - session: none - hard-zoning: enabled broadcast: unsupported - smart-zoning: disabled - rscn-format: fabric-address - activation overwrite control: disabled -Default zone: - qos: none broadcast: unsupported ronly: unsupported -Full Zoning Database : - DB size: 376 bytes - Zonesets: 1 Zones: 2 Aliases: 0 Attribute-groups: 1 -Active Zoning Database : - DB Size: 156 bytes - Name: zsetname21 Zonesets: 1 Zones: 2 -Current Total Zone DB Usage: 532 / 2097152 bytes (0 % used) -Pending (Session) DB size: - Full DB Copy size: 0 bytes - Active DB Copy size: 0 bytes -SFC size: 0 / 2097152 bytes (0 % used) -Status: Set zoning mode complete at 10:19:02 IST Jul 5 2019 - - diff --git a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_2.cfg b/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_2.cfg deleted file mode 100644 index eb0db28eb9..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_2.cfg +++ /dev/null @@ -1,24 +0,0 @@ -VSAN: 923 default-zone: permit distribute: full Interop: default - mode: enhanced merge-control: allow - session: none - hard-zoning: enabled broadcast: unsupported - smart-zoning: disabled - rscn-format: fabric-address - activation overwrite control: disabled -Default zone: - qos: none broadcast: unsupported ronly: unsupported -Full Zoning Database : - DB size: 356 bytes - Zonesets: 1 Zones: 2 Aliases: 0 Attribute-groups: 1 -Active Zoning Database : - DB Size: 136 bytes - Name: zsetname1 Zonesets: 1 Zones: 2 -Current Total Zone DB Usage: 492 / 2097152 bytes (0 % used) -Pending (Session) DB size: - Full DB Copy size: 0 bytes - Active DB Copy size: 0 bytes -SFC size: 0 / 2097152 bytes (0 % used) -Status: Operation failed: [Error: WARNING: Specified zoneset already active and unchanged]: - at 11:06:21 IST Jul 5 2019 - - diff --git a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_3.cfg b/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_3.cfg deleted file mode 100644 index c5c32db0b4..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_3.cfg +++ /dev/null @@ -1,24 +0,0 @@ -VSAN: 923 default-zone: permit distribute: full Interop: default - mode: basic merge-control: allow - session: none - hard-zoning: enabled broadcast: unsupported - smart-zoning: disabled - rscn-format: fabric-address - activation overwrite control: disabled -Default zone: - qos: none broadcast: unsupported ronly: unsupported -Full Zoning Database : - DB size: 356 bytes - Zonesets: 1 Zones: 2 Aliases: 0 Attribute-groups: 1 -Active Zoning Database : - DB Size: 136 bytes - Name: zsetname1 Zonesets: 1 Zones: 2 -Current Total Zone DB Usage: 492 / 2097152 bytes (0 % used) -Pending (Session) DB size: - Full DB Copy size: 0 bytes - Active DB Copy size: 0 bytes -SFC size: 0 / 2097152 bytes (0 % used) -Status: Operation failed: [Error: WARNING: Specified zoneset already active and unchanged]: - at 11:06:21 IST Jul 5 2019 - - diff --git a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_4.cfg b/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_4.cfg deleted file mode 100644 index 97c3a7156c..0000000000 --- a/test/units/modules/network/nxos/fixtures/nxos_zone_zoneset/shzonestatus_4.cfg +++ /dev/null @@ -1,23 +0,0 @@ -VSAN: 221 default-zone: deny distribute: full Interop: default - mode: enhanced merge-control: allow - session: none - hard-zoning: enabled broadcast: unsupported - smart-zoning: disabled - rscn-format: fabric-address - activation overwrite control: disabled -Default zone: - qos: none broadcast: unsupported ronly: unsupported -Full Zoning Database : - DB size: 300 bytes - Zonesets: 1 Zones: 1 Aliases: 0 Attribute-groups: 1 -Active Zoning Database : - DB Size: 112 bytes - Name: zsv221 Zonesets: 1 Zones: 1 -Current Total Zone DB Usage: 412 / 2097152 bytes (0 % used) -Pending (Session) DB size: - Full DB Copy size: 0 bytes - Active DB Copy size: 0 bytes -SFC size: 0 / 2097152 bytes (0 % used) -Status: - - diff --git a/test/units/modules/network/nxos/nxos_module.py b/test/units/modules/network/nxos/nxos_module.py deleted file mode 100644 index 07670a282c..0000000000 --- a/test/units/modules/network/nxos/nxos_module.py +++ /dev/null @@ -1,117 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import json - -from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase -from units.modules.utils import set_module_args as _set_module_args - - -def set_module_args(args, ignore_provider=None): - if 'provider' not in args and not ignore_provider: - args['provider'] = {'transport': args.get('transport') or 'cli'} - - return _set_module_args(args) - - -fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') -fixture_data = {} - - -def load_fixture(module_name, name, device=''): - path = os.path.join(fixture_path, module_name, device, name) - if not os.path.exists(path): - path = os.path.join(fixture_path, module_name, name) - - if path in fixture_data: - return fixture_data[path] - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[path] = data - return data - - -class TestNxosModule(ModuleTestCase): - - def execute_module_devices(self, failed=False, changed=False, commands=None, sort=True, defaults=False): - module_name = self.module.__name__.rsplit('.', 1)[1] - local_fixture_path = os.path.join(fixture_path, module_name) - - models = [] - for path in os.listdir(local_fixture_path): - path = os.path.join(local_fixture_path, path) - if os.path.isdir(path): - models.append(os.path.basename(path)) - if not models: - models = [''] - - retvals = {} - for model in models: - retvals[model] = self.execute_module( - failed, changed, commands, sort, device=model) - - return retvals - - def execute_module(self, failed=False, changed=False, commands=None, sort=True, device=''): - - self.load_fixtures(commands, device=device) - - if failed: - result = self.failed() - self.assertTrue(result['failed'], result) - else: - result = self.changed(changed) - self.assertEqual(result['changed'], changed, result) - if commands is not None and len(commands) > 0: - if sort: - self.assertEqual(sorted(commands), sorted( - result['commands']), result['commands']) - else: - self.assertEqual( - commands, result['commands'], result['commands']) - - return result - - def failed(self): - with self.assertRaises(AnsibleFailJson) as exc: - self.module.main() - result = exc.exception.args[0] - self.assertTrue(result['failed'], result) - return result - - def changed(self, changed=False): - with self.assertRaises(AnsibleExitJson) as exc: - self.module.main() - - result = exc.exception.args[0] - self.assertEqual(result['changed'], changed, result) - return result - - def load_fixtures(self, commands=None, device=''): - pass diff --git a/test/units/modules/network/nxos/storage/test_nxos_devicealias.py b/test/units/modules/network/nxos/storage/test_nxos_devicealias.py deleted file mode 100644 index 68080afef2..0000000000 --- a/test/units/modules/network/nxos/storage/test_nxos_devicealias.py +++ /dev/null @@ -1,229 +0,0 @@ -#!/usr/bin/env python -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -import pytest - -from units.compat.mock import patch -from units.modules.utils import AnsibleFailJson -from ansible.modules.network.nxos.storage import nxos_devicealias -from ansible.modules.network.nxos.storage.nxos_devicealias import showDeviceAliasStatus -from ansible.modules.network.nxos.storage.nxos_devicealias import showDeviceAliasDatabase - -from ..nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosDeviceAliasModule(TestNxosModule): - module = nxos_devicealias - - def setUp(self): - super(TestNxosDeviceAliasModule, self).setUp() - module_path = 'ansible.modules.network.nxos.storage.nxos_devicealias.' - - self.mock_run_commands = patch(module_path + 'run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_execute_show_cmd = patch(module_path + 'showDeviceAliasStatus.execute_show_cmd') - self.execute_show_cmd = self.mock_execute_show_cmd.start() - - self.mock_execute_show_cmd_1 = patch(module_path + 'showDeviceAliasDatabase.execute_show_cmd') - self.execute_show_cmd_1 = self.mock_execute_show_cmd_1.start() - - self.mock_load_config = patch(module_path + 'load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestNxosDeviceAliasModule, self).tearDown() - self.mock_run_commands.stop() - self.mock_execute_show_cmd.stop() - self.mock_execute_show_cmd_1.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.load_config.return_value = None - - def test_da_mode_1(self): - # Playbook mode is basic - # Switch has mode as enahnced - set_module_args(dict(mode='basic'), True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', 'no device-alias mode enhanced', - 'device-alias commit', 'no terminal dont-ask']) - - def test_da_mode_2(self): - # Playbook mode is enhanced - # Switch has mode as enahnced - set_module_args(dict(mode='enhanced'), True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_da_distribute_1(self): - # Playbook mode is enhanced , distrbute = True - # Switch has mode as enahnced, distrbute = True - set_module_args(dict(distribute=True, mode='enhanced'), True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_da_distribute_2(self): - # Playbook mode is enhanced , distrbute = False - # Switch has mode as enhanced, distrbute = True - set_module_args(dict(distribute=False, mode='enhanced'), True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['no device-alias distribute']) - - def test_da_distribute_3(self): - # Playbook mode is basic , distrbute = False - # Switch has mode as enahnced, distrbute = True - set_module_args(dict(distribute=False, mode='basic'), True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['no device-alias distribute', 'no device-alias mode enhanced']) - - def test_da_add_1(self): - # Playbook mode is enhanced , distrbute = true , some new da being added - # Switch has mode as enahnced, distrbute = True, switch doesnt have the new da being added - set_module_args(dict(distribute=True, mode='enhanced', - da=[dict(name='somename', pwwn='10:00:00:00:89:a1:01:03'), - dict(name='somename1', pwwn='10:00:00:00:89:a1:02:03')]), - True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - self.execute_show_cmd_1.return_value = load_fixture('nxos_devicealias', 'shdadatabse.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', 'device-alias database', - 'device-alias name somename pwwn 10:00:00:00:89:a1:01:03', - 'device-alias name somename1 pwwn 10:00:00:00:89:a1:02:03', - 'device-alias commit', 'no terminal dont-ask']) - - def test_da_add_2(self): - # Playbook mode is enhanced , distrbute = true , some new da being added - # Switch has mode as enahnced, distrbute = True, switch already has the pwwn:name - set_module_args(dict(distribute=True, mode='enhanced', - da=[dict(name='tieHost-2', pwwn='10:00:00:00:89:a1:01:02')]), - True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - self.execute_show_cmd_1.return_value = load_fixture('nxos_devicealias', 'shdadatabse.cfg') - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_da_add_3(self): - # Playbook mode is enhanced , distrbute = true , some new da being added - # Switch has mode as enahnced, distrbute = True, switch same name present with different pwwn - set_module_args(dict(distribute=True, mode='enhanced', - da=[dict(name='tieHost-2', pwwn='10:00:00:00:89:a1:01:ff')]), - True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - self.execute_show_cmd_1.return_value = load_fixture('nxos_devicealias', 'shdadatabse.cfg') - result = self.execute_module(changed=False, failed=True) - - def test_da_add_4(self): - # Playbook mode is enhanced , distrbute = true , some new da being added - # Switch has mode as enahnced, distrbute = True, switch same pwwn present with different name - set_module_args(dict(distribute=True, mode='enhanced', - da=[dict(name='tieHost-2222', pwwn='10:00:00:00:89:a1:01:02')]), - True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - self.execute_show_cmd_1.return_value = load_fixture('nxos_devicealias', 'shdadatabse.cfg') - result = self.execute_module(changed=False, failed=True) - - def test_da_remove_1(self): - # Playbook mode is enhanced , distrbute = true , some da being removed - # Switch has mode as enahnced, distrbute = True, switch has the da that needs to be removed - set_module_args(dict(distribute=True, mode='enhanced', - da=[dict(name='tieHost-2', pwwn='10:00:00:00:89:a1:01:02', remove=True)]), - True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - self.execute_show_cmd_1.return_value = load_fixture('nxos_devicealias', 'shdadatabse.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', 'device-alias database', - 'no device-alias name tieHost-2', - 'device-alias commit', 'no terminal dont-ask']) - - def test_da_remove_2(self): - # Playbook mode is enhanced , distrbute = true , some da being removed - # Switch has mode as enahnced, distrbute = True, switch does NOT have the da that needs to be removed - set_module_args(dict(distribute=True, mode='enhanced', - da=[dict(name='somename', pwwn='10:00:00:00:89:a1:01:02', remove=True)]), - True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - self.execute_show_cmd_1.return_value = load_fixture('nxos_devicealias', 'shdadatabse.cfg') - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_da_lock(self): - # Playbook mode with some data, but switch has cfs lock acq - set_module_args(dict(distribute=True, mode='enhanced', - da=[dict(name='somename', pwwn='10:00:00:00:89:a1:01:02', remove=True)]), - True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatuslock.cfg') - self.execute_module(failed=True) - - def test_da_paramete_not_supported(self): - # Playbook mode with some data, but switch has cfs lock acq - # the below one instead of 'mode' we are passing 'mod', kind of typo in playbook - set_module_args(dict(distribute=True, mod='enhanced', - da=[dict(name='somename', pwwn='10:00:00:00:89:a1:01:02', remove=True)]), - True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - self.execute_show_cmd_1.return_value = load_fixture('nxos_devicealias', 'shdadatabse.cfg') - with pytest.raises(AnsibleFailJson) as errinfo: - self.execute_module() - testdata = errinfo.value.args[0] - assert 'Unsupported parameters' in str(testdata['msg']) - assert testdata['failed'] - - def test_da_name_parameter_missing(self): - # Lets say you are trying to add a device alias but forgot to put 'name' in the 'da' parameter - set_module_args(dict(distribute=True, mode='enhanced', - da=[dict(pwwn='10:00:00:00:89:a1:01:02')]), - True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - self.execute_show_cmd_1.return_value = load_fixture('nxos_devicealias', 'shdadatabse.cfg') - with pytest.raises(AnsibleFailJson) as errinfo: - self.execute_module() - testdata = errinfo.value.args[0] - assert 'missing required arguments' in str(testdata['msg']) - assert testdata['failed'] - - def test_da_rename_1(self): - # rename works - set_module_args(dict(rename=[dict(old_name='test1_add', new_name='test234'), - dict(old_name='tieHost-1', new_name='tieTarget-1')]), True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - self.execute_show_cmd_1.return_value = load_fixture('nxos_devicealias', 'shdadatabse.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', 'device-alias database', - 'device-alias rename test1_add test234', - 'device-alias rename tieHost-1 tieTarget-1', - 'device-alias commit', 'no terminal dont-ask']) - - def test_da_rename_2(self): - # rename : oldname not present - set_module_args(dict(rename=[dict(old_name='test1', new_name='test234'), - dict(old_name='tie', new_name='tieTarget-1')]), True) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus.cfg') - self.execute_show_cmd_1.return_value = load_fixture('nxos_devicealias', 'shdadatabse.cfg') - result = self.execute_module(changed=False, failed=True) - self.assertEqual(result['commands'], []) - - def test_da_mansi(self): - set_module_args( - { - "distribute": True, - "mode": "enhanced", - }, - True - ) - self.execute_show_cmd.return_value = load_fixture('nxos_devicealias', 'shdastatus_mansi.cfg') - self.execute_show_cmd_1.return_value = load_fixture('nxos_devicealias', 'shdadatabse.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['device-alias distribute', 'terminal dont-ask', - 'device-alias mode enhanced', - 'device-alias commit', 'no terminal dont-ask']) diff --git a/test/units/modules/network/nxos/storage/test_nxos_vsan.py b/test/units/modules/network/nxos/storage/test_nxos_vsan.py deleted file mode 100644 index 5e94601d72..0000000000 --- a/test/units/modules/network/nxos/storage/test_nxos_vsan.py +++ /dev/null @@ -1,237 +0,0 @@ -#!/usr/bin/env python -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -import pytest - -from units.compat.mock import patch -from units.modules.utils import AnsibleFailJson -from ansible.modules.network.nxos.storage import nxos_vsan -from ansible.modules.network.nxos.storage.nxos_vsan import GetVsanInfoFromSwitch - -from ..nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosVsanModule(TestNxosModule): - module = nxos_vsan - - def setUp(self): - super(TestNxosVsanModule, self).setUp() - module_path = 'ansible.modules.network.nxos.storage.nxos_vsan.' - - self.mock_run_commands = patch(module_path + 'run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_execute_show_vsan_cmd = patch(module_path + 'GetVsanInfoFromSwitch.execute_show_vsan_cmd') - self.execute_show_vsan_cmd = self.mock_execute_show_vsan_cmd.start() - - self.mock_execute_show_vsanmemcmd = patch(module_path + 'GetVsanInfoFromSwitch.execute_show_vsan_mem_cmd') - self.execute_show_vsanmem_cmd = self.mock_execute_show_vsanmemcmd.start() - - self.mock_load_config = patch(module_path + 'load_config') - self.load_config = self.mock_load_config.start() - - self.maxDiff = None - - def tearDown(self): - super(TestNxosVsanModule, self).tearDown() - self.mock_run_commands.stop() - self.execute_show_vsan_cmd.stop() - self.execute_show_vsanmem_cmd.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.load_config.return_value = None - - def test_vsan_add_remove_but_present_in_switch(self): - margs = { - "vsan": [ - { - "interface": [ - "fc1/1", - "port-channel 55" - ], - "id": 922, - "remove": False, - "name": "vsan-SAN-A" - }, - { - "interface": [ - "fc1/11", - "fc1/21", - "port-channel 56" - ], - "id": 923, - "remove": False, - "name": "vsan-SAN-B" - }, - { - "id": 1923, - "remove": True, - "name": "vsan-SAN-Old" - } - ] - } - set_module_args(margs, True) - self.execute_show_vsan_cmd.return_value = load_fixture('nxos_vsan', 'shvsan.cfg') - self.execute_show_vsanmem_cmd.return_value = load_fixture('nxos_vsan', 'shvsanmem.cfg') - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_vsan_remove(self): - margs = { - "vsan": [ - { - "id": 922, - "remove": True - }, - { - "id": 923, - "remove": True - } - ] - } - set_module_args(margs, True) - self.execute_show_vsan_cmd.return_value = load_fixture('nxos_vsan', 'shvsan.cfg') - self.execute_show_vsanmem_cmd.return_value = load_fixture('nxos_vsan', 'shvsanmem.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ["terminal dont-ask"] + ["vsan database"] + - ["no vsan 922", "no vsan 923"] + ["no terminal dont-ask"]) - - def test_vsan_add(self): - margs = { - "vsan": [ - { - "interface": [ - "fc1/1", - "port-channel 55" - ], - "id": 924, - "name": "vsan-SAN-924" - }, - { - "interface": [ - "fc1/11", - "fc1/21", - "port-channel 56" - ], - "id": 925, - "name": "vsan-SAN-925" - } - ] - } - set_module_args(margs, True) - self.execute_show_vsan_cmd.return_value = load_fixture('nxos_vsan', 'shvsan.cfg') - self.execute_show_vsanmem_cmd.return_value = load_fixture('nxos_vsan', 'shvsanmem.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ["terminal dont-ask"] + ["vsan database"] + - ["vsan 924", "vsan 924 name vsan-SAN-924", "no vsan 924 suspend", - "vsan 924 interface fc1/1", "vsan 924 interface port-channel 55"] + - ["vsan 925", "vsan 925 name vsan-SAN-925", "no vsan 925 suspend", "vsan 925 interface fc1/11", - "vsan 925 interface fc1/21", "vsan 925 interface port-channel 56"] + - ["no terminal dont-ask"]) - - def test_vsan_suspend(self): - margs = { - "vsan": [ - { - "interface": [ - "fc1/1", - "port-channel 55" - ], - "id": 924, - "name": "vsan-SAN-924" - }, - { - "id": 925, - "name": "vsan-SAN-925", - "suspend": True - } - ] - } - set_module_args(margs, True) - self.execute_show_vsan_cmd.return_value = load_fixture('nxos_vsan', 'shvsan.cfg') - self.execute_show_vsanmem_cmd.return_value = load_fixture('nxos_vsan', 'shvsanmem.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ["terminal dont-ask"] + ["vsan database"] + - ["vsan 924", "vsan 924 name vsan-SAN-924", "no vsan 924 suspend", - "vsan 924 interface fc1/1", "vsan 924 interface port-channel 55"] + - ["vsan 925", "vsan 925 name vsan-SAN-925", "vsan 925 suspend"] + - ["no terminal dont-ask"]) - - def test_vsan_invalid_vsan(self): - margs = { - "vsan": [ - { - "id": 4096, - "name": "vsan-SAN-925", - "suspend": True - } - ] - } - set_module_args(margs, True) - self.execute_show_vsan_cmd.return_value = load_fixture('nxos_vsan', 'shvsan.cfg') - self.execute_show_vsanmem_cmd.return_value = load_fixture('nxos_vsan', 'shvsanmem.cfg') - with pytest.raises(AnsibleFailJson) as errinfo: - self.execute_module() - testdata = errinfo.value.args[0] - assert 'invalid vsan' in str(testdata['msg']) - assert testdata['failed'] - - def test_vsan_change_reserved_vsan(self): - margs = { - "vsan": [ - { - "id": 4094, - "name": "vsan-SAN-925", - "suspend": True - } - ] - } - set_module_args(margs, True) - self.execute_show_vsan_cmd.return_value = load_fixture('nxos_vsan', 'shvsan.cfg') - self.execute_show_vsanmem_cmd.return_value = load_fixture('nxos_vsan', 'shvsanmem.cfg') - result = self.execute_module(changed=False) - assert 'reserved vsan' in str(result['messages']) - self.assertEqual(result['commands'], []) - - def test_vsan_add_int_existing_vsan(self): - margs = { - "vsan": [ - { - "interface": [ - "fc1/1", - "fc1/40", - "port-channel 155" - ], - "id": 922, - }, - ] - } - set_module_args(margs, True) - self.execute_show_vsan_cmd.return_value = load_fixture('nxos_vsan', 'shvsan.cfg') - self.execute_show_vsanmem_cmd.return_value = load_fixture('nxos_vsan', 'shvsanmem.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ["terminal dont-ask"] + ["vsan database"] + - ["vsan 922 interface fc1/40", "vsan 922 interface port-channel 155"] + - ["no terminal dont-ask"]) - - def test_vsan_remove_non_existing_vsan(self): - margs = { - "vsan": [ - { - "id": 1111, - "remove": True - }, - ] - } - set_module_args(margs, True) - self.execute_show_vsan_cmd.return_value = load_fixture('nxos_vsan', 'shvsan.cfg') - self.execute_show_vsanmem_cmd.return_value = load_fixture('nxos_vsan', 'shvsanmem.cfg') - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - assert 'no vsan' in str(result['messages']) diff --git a/test/units/modules/network/nxos/storage/test_nxos_zone_zoneset.py b/test/units/modules/network/nxos/storage/test_nxos_zone_zoneset.py deleted file mode 100644 index ec85dec41f..0000000000 --- a/test/units/modules/network/nxos/storage/test_nxos_zone_zoneset.py +++ /dev/null @@ -1,496 +0,0 @@ -#!/usr/bin/env python -# Copyright: Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - -import pytest - -from units.compat.mock import patch -from units.modules.utils import AnsibleFailJson, AnsibleExitJson -from ansible.modules.network.nxos.storage import nxos_zone_zoneset -from ansible.modules.network.nxos.storage.nxos_zone_zoneset import ShowZonesetActive -from ansible.modules.network.nxos.storage.nxos_zone_zoneset import ShowZoneset -from ansible.modules.network.nxos.storage.nxos_zone_zoneset import ShowZone -from ansible.modules.network.nxos.storage.nxos_zone_zoneset import ShowZoneStatus - -from ..nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosZoneZonesetModule(TestNxosModule): - module = nxos_zone_zoneset - - def setUp(self): - super(TestNxosZoneZonesetModule, self).setUp() - module_path = 'ansible.modules.network.nxos.storage.nxos_zone_zoneset.' - - self.mock_run_commands = patch(module_path + 'run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_execute_show_cmd_zoneset_active = patch( - module_path + 'ShowZonesetActive.execute_show_zoneset_active_cmd') - self.execute_show_cmd_zoneset_active = self.mock_execute_show_cmd_zoneset_active.start() - - self.mock_execute_show_cmd_zoneset = patch(module_path + 'ShowZoneset.execute_show_zoneset_cmd') - self.execute_show_cmd_zoneset = self.mock_execute_show_cmd_zoneset.start() - - self.mock_execute_show_cmd_zone = patch(module_path + 'ShowZone.execute_show_zone_vsan_cmd') - self.execute_show_cmd_zone = self.mock_execute_show_cmd_zone.start() - - self.mock_execute_show_cmd_zone_status = patch(module_path + 'ShowZoneStatus.execute_show_zone_status_cmd') - self.execute_show_cmd_zone_status = self.mock_execute_show_cmd_zone_status.start() - - self.mock_load_config = patch(module_path + 'load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestNxosZoneZonesetModule, self).tearDown() - self.mock_run_commands.stop() - - self.execute_show_cmd_zoneset_active.stop() - self.execute_show_cmd_zoneset.stop() - self.execute_show_cmd_zone.stop() - self.execute_show_cmd_zone_status.stop() - - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.load_config.return_value = None - - # Test def zone from deny to permit and vice versa - def test_zone_defzone_deny_to_permit(self): - # switch has def-zone deny and mode basic - a = dict(zone_zoneset_details=[dict(vsan=922, default_zone='permit')]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_0.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', - 'zone default-zone permit vsan 922', - 'no terminal dont-ask']) - - def test_zone_defzone_deny_to_permit_1(self): - # switch has def-zone deny and mode enhanced - a = dict(zone_zoneset_details=[dict(vsan=922, default_zone='permit')]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_1.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', - 'zone default-zone permit vsan 922', - 'zone commit vsan 922', - 'no terminal dont-ask']) - - def test_zone_defzone_permit_to_deny_1(self): - # switch has def-zone deny and mode enhanced - a = dict(zone_zoneset_details=[dict(vsan=923, default_zone='deny')]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_2.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', - 'no zone default-zone permit vsan 923', - 'zone commit vsan 923', - 'no terminal dont-ask']) - - def test_zone_defzone_permit_to_deny_2(self): - # switch has def-zone deny and mode enhanced - a = dict(zone_zoneset_details=[dict(vsan=923, default_zone='deny')]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_3.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', - 'no zone default-zone permit vsan 923', - 'no terminal dont-ask']) - - # Test zone mode from basic to enhanced and vice versa - def test_zone_mode_basic_to_enh(self): - # switch has def-zone deny and mode basic - a = dict(zone_zoneset_details=[dict(vsan=922, mode='enhanced')]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_0.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', - 'zone mode enhanced vsan 922', - 'zone commit vsan 922', - 'no terminal dont-ask']) - - # Test zone mode from basic to enhanced and vice versa - def test_zone_mode_basic_to_enh_1(self): - # switch has def-zone deny and mode basic - a = dict(zone_zoneset_details=[dict(vsan=922, mode='basic')]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_1.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', - 'no zone mode enhanced vsan 922', - 'no terminal dont-ask']) - - # Test zone smart-zone from enabled to disabled and vice versa - def test_zone_smart_zone(self): - # switch has def-zone deny and mode basic - a = dict(zone_zoneset_details=[dict(vsan=922, smart_zoning=False)]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_0.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', - 'no zone smart-zoning enable vsan 922', - 'no terminal dont-ask']) - - def test_zone_smart_zone_1(self): - # switch has def-zone deny and mode basic - a = dict(zone_zoneset_details=[dict(vsan=923, smart_zoning=True)]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_1.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', - 'zone smart-zoning enable vsan 923', - 'zone commit vsan 923', - 'no terminal dont-ask']) - - # Test zone add/removal - def test_zone_add_rem(self): - a = dict(zone_zoneset_details=[dict( - vsan=923, - zone=[ - dict( - name='zoneB', - remove=True) - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_1.cfg') - self.execute_show_cmd_zone.return_value = load_fixture('nxos_zone_zoneset', 'shzone_0.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], - ['terminal dont-ask', 'no zone name zoneB vsan 923', 'zone commit vsan 923', - 'no terminal dont-ask']) - - def test_zone_add_rem_1(self): - a = dict(zone_zoneset_details=[dict( - vsan=923, - zone=[ - dict( - name='zoneC', - remove=True) - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_1.cfg') - self.execute_show_cmd_zone.return_value = load_fixture('nxos_zone_zoneset', 'shzone_0.cfg') - result = self.execute_module(changed=False, failed=False) - m = "zone 'zoneC' is not present in vsan 923" - assert m in str(result['messages']) - self.assertEqual(result['commands'], []) - - def test_zone_add_rem_2(self): - a = dict(zone_zoneset_details=[dict( - vsan=923, - zone=[ - dict( - name='zoneBNew') - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_1.cfg') - self.execute_show_cmd_zone.return_value = load_fixture('nxos_zone_zoneset', 'shzone_0.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', - 'zone name zoneBNew vsan 923', - 'zone commit vsan 923', - 'no terminal dont-ask']) - - def test_zone_add_rem_3(self): - a = dict(zone_zoneset_details=[dict( - vsan=923, - zone=[ - dict( - name='zoneB') - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_1.cfg') - self.execute_show_cmd_zone.return_value = load_fixture('nxos_zone_zoneset', 'shzone_0.cfg') - result = self.execute_module(changed=False, failed=False) - m = "zone 'zoneB' is already present in vsan 923" - assert m in str(result['messages']) - self.assertEqual(result['commands'], []) - - # Test zone mem add/removal - def test_zonemem_add_rem(self): - mem1 = {'pwwn': '10:00:10:94:00:00:00:01'} - mem2 = {'device_alias': 'somename'} - a = dict(zone_zoneset_details=[dict( - vsan=923, - zone=[ - dict( - name='zoneBNew', - members=[mem1, mem2]) - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_1.cfg') - self.execute_show_cmd_zone.return_value = load_fixture('nxos_zone_zoneset', 'shzone_0.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', - 'zone name zoneBNew vsan 923', - 'member pwwn 10:00:10:94:00:00:00:01', - 'member device-alias somename', - 'zone commit vsan 923', - 'no terminal dont-ask']) - - # Test zone mem add/removal - def test_zonemem_add_rem_1(self): - mem1 = {'pwwn': '11:11:11:11:11:11:11:11', 'remove': True} - mem2 = {'device_alias': 'test123', 'remove': True} - a = dict(zone_zoneset_details=[dict( - vsan=923, - zone=[ - dict( - name='zoneA', - members=[mem1, mem2]) - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_1.cfg') - self.execute_show_cmd_zone.return_value = load_fixture('nxos_zone_zoneset', 'shzone_0.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', - 'zone name zoneA vsan 923', - 'no member pwwn 11:11:11:11:11:11:11:11', - 'no member device-alias test123', - 'zone commit vsan 923', - 'no terminal dont-ask']) - - # Test zone mem add/removal - def test_zonemem_add_rem_2(self): - mem1 = {'pwwn': '11:11:11:11:11:11:11:11', 'remove': True} - mem2 = {'device_alias': 'test123', 'remove': True} - a = dict(zone_zoneset_details=[dict( - vsan=923, - zone=[ - dict( - name='zoneA1', - members=[mem1, mem2]) - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_1.cfg') - self.execute_show_cmd_zone.return_value = load_fixture('nxos_zone_zoneset', 'shzone_0.cfg') - result = self.execute_module(changed=False, failed=False) - m = "zone 'zoneA1' is not present in vsan 923 , hence cannot remove the members" - assert m in str(result['messages']) - self.assertEqual(result['commands'], []) - - def test_zonemem_add_rem_3(self): - mem1 = {'pwwn': '10:00:10:94:00:00:00:01', 'devtype': 'initiator'} - mem2 = {'device_alias': 'somename', 'devtype': 'target'} - mem3 = {'device_alias': 'somenameWithBoth', 'devtype': 'both'} - - a = dict(zone_zoneset_details=[dict( - vsan=922, - zone=[ - dict( - name='zoneBNew', - members=[mem1, mem2, mem3]) - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_0.cfg') - self.execute_show_cmd_zone.return_value = load_fixture('nxos_zone_zoneset', 'shzone_1.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], - ['terminal dont-ask', 'zone name zoneBNew vsan 922', - 'member pwwn 10:00:10:94:00:00:00:01 initiator', - 'member device-alias somename target', - 'member device-alias somenameWithBoth both', - 'no terminal dont-ask']) - - # Test zone mem add/removal with devtype - def test_zonemem_add_rem_4(self): - mem2 = {'device_alias': 'test123', 'devtype': 'both', 'remove': True} - - a = dict(zone_zoneset_details=[dict( - vsan=922, - zone=[ - dict( - name='zoneA', - members=[mem2]) - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_0.cfg') - self.execute_show_cmd_zone.return_value = load_fixture('nxos_zone_zoneset', 'shzone_1.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], - ['terminal dont-ask', 'zone name zoneA vsan 922', - 'no member device-alias test123 both', - 'no terminal dont-ask']) - - # Test zoneset add/removal - def test_zoneset_add_rem(self): - a = dict(zone_zoneset_details=[ - dict(vsan=922, - zoneset=[ - dict(name='zsetname21', remove=True) - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_0.cfg') - self.execute_show_cmd_zoneset.return_value = load_fixture('nxos_zone_zoneset', 'shzoneset_0.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], - ['terminal dont-ask', 'no zoneset name zsetname21 vsan 922', 'no terminal dont-ask'] - ) - - def test_zoneset_add_rem_1(self): - a = dict(zone_zoneset_details=[ - dict(vsan=922, - zoneset=[ - dict(name='zsetname21New') - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_0.cfg') - self.execute_show_cmd_zoneset.return_value = load_fixture('nxos_zone_zoneset', 'shzoneset_0.cfg') - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], - ['terminal dont-ask', 'zoneset name zsetname21New vsan 922', 'no terminal dont-ask'] - ) - - def test_zoneset_add_rem_2(self): - a = dict(zone_zoneset_details=[ - dict(vsan=922, - zoneset=[ - dict(name='zsetname21') - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_0.cfg') - self.execute_show_cmd_zoneset.return_value = load_fixture('nxos_zone_zoneset', 'shzoneset_0.cfg') - result = self.execute_module(changed=False, failed=False) - m = "zoneset 'zsetname21' is already present in vsan 922" - self.assertEqual(result['commands'], []) - self.assertEqual(result['messages'], [m]) - - def test_zoneset_add_rem_3(self): - a = dict(zone_zoneset_details=[ - dict(vsan=922, - zoneset=[ - dict(name='zsetname21New', remove=True) - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_0.cfg') - self.execute_show_cmd_zoneset.return_value = load_fixture('nxos_zone_zoneset', 'shzoneset_0.cfg') - result = self.execute_module(changed=False, failed=False) - m = "zoneset 'zsetname21New' is not present in vsan 922 ,hence there is nothing to remove" - self.assertEqual(result['commands'], []) - self.assertEqual(result['messages'], [m]) - - # Test zoneset mem add/removal - def test_zoneset_mem_add_rem(self): - mem1 = {'name': 'newZoneV100'} - - a = dict(zone_zoneset_details=[ - dict(vsan=922, - zoneset=[ - dict(name='zsetname21', members=[mem1]) - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_0.cfg') - self.execute_show_cmd_zoneset.return_value = load_fixture('nxos_zone_zoneset', 'shzoneset_0.cfg') - result = self.execute_module(changed=True, failed=False) - self.assertEqual(result['commands'], - ['terminal dont-ask', 'zoneset name zsetname21 vsan 922', 'member newZoneV100', - 'no terminal dont-ask'] - ) - - # Test zoneset mem add/removal - def test_zoneset_mem_add_rem_1(self): - mem1 = {'name': 'zone21A', 'remove': True} - - a = dict(zone_zoneset_details=[ - dict(vsan=922, - zoneset=[ - dict(name='zsetname21', members=[mem1]) - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_0.cfg') - self.execute_show_cmd_zoneset.return_value = load_fixture('nxos_zone_zoneset', 'shzoneset_0.cfg') - result = self.execute_module(changed=True, failed=False) - self.assertEqual(result['commands'], - ['terminal dont-ask', 'zoneset name zsetname21 vsan 922', 'no member zone21A', - 'no terminal dont-ask'] - ) - - # Test zoneset mem add/removal - def test_zoneset_mem_add_rem_2(self): - mem1 = {'name': 'zone21', 'remove': True} - - a = dict(zone_zoneset_details=[ - dict(vsan=922, - zoneset=[ - dict(name='zsetname21', members=[mem1]) - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_0.cfg') - self.execute_show_cmd_zoneset.return_value = load_fixture('nxos_zone_zoneset', 'shzoneset_0.cfg') - result = self.execute_module(changed=False, failed=False) - m = "zoneset member 'zone21' is not present in zoneset 'zsetname21' in vsan 922 ,hence there is nothing to remove" - self.assertEqual(result['commands'], []) - self.assertEqual(result['messages'], [m]) - - # Test zoneset activate/deactivate - def test_zoneset_activate_deactivate(self): - a = dict(zone_zoneset_details=[ - dict(vsan=221, - zoneset=[ - dict(name='zsv221', action='activate') - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_4.cfg') - self.execute_show_cmd_zoneset.return_value = load_fixture('nxos_zone_zoneset', 'shzoneset_2.cfg') - self.execute_show_cmd_zoneset_active.return_value = load_fixture('nxos_zone_zoneset', 'shzonesetactive_0.cfg') - result = self.execute_module(changed=False, failed=False) - m = "zoneset 'zsv221' is already present in vsan 221" - m1 = "zoneset 'zsv221' in vsan 221 is already activated" - self.assertEqual(result['commands'], []) - self.assertEqual(result['messages'], [m, m1]) - - def test_zoneset_activate_deactivate_1(self): - a = dict(zone_zoneset_details=[ - dict(vsan=221, - zoneset=[ - dict(name='zsv221', action='deactivate') - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_4.cfg') - self.execute_show_cmd_zoneset.return_value = load_fixture('nxos_zone_zoneset', 'shzoneset_2.cfg') - self.execute_show_cmd_zoneset_active.return_value = load_fixture('nxos_zone_zoneset', 'shzonesetactive_0.cfg') - result = self.execute_module(changed=True, failed=False) - self.assertEqual(result['commands'], ['terminal dont-ask', - 'no zoneset activate name zsv221 vsan 221', - 'zone commit vsan 221', - 'no terminal dont-ask']) - - def test_zoneset_activate_deactivate_2(self): - a = dict(zone_zoneset_details=[ - dict(vsan=221, - zoneset=[ - dict(name='zsv221New', action='activate') - ]) - ]) - set_module_args(a, True) - self.execute_show_cmd_zone_status.return_value = load_fixture('nxos_zone_zoneset', 'shzonestatus_4.cfg') - self.execute_show_cmd_zoneset.return_value = load_fixture('nxos_zone_zoneset', 'shzoneset_2.cfg') - self.execute_show_cmd_zoneset_active.return_value = load_fixture('nxos_zone_zoneset', 'shzonesetactive_0.cfg') - result = self.execute_module(changed=True, failed=False) - self.assertEqual(result['commands'], ['terminal dont-ask', 'zoneset name zsv221New vsan 221', - 'zoneset activate name zsv221New vsan 221', - 'zone commit vsan 221', - 'no terminal dont-ask']) diff --git a/test/units/modules/network/nxos/test_nxos_acl.py b/test/units/modules/network/nxos/test_nxos_acl.py deleted file mode 100644 index 39fb0b0486..0000000000 --- a/test/units/modules/network/nxos/test_nxos_acl.py +++ /dev/null @@ -1,79 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_acl -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosAclModule(TestNxosModule): - - module = nxos_acl - - def setUp(self): - super(TestNxosAclModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.nxos.nxos_acl.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_acl.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestNxosAclModule, self).tearDown() - self.mock_run_commands.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, device=''): - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item) - command = obj['command'] - except ValueError: - command = item - filename = '%s.txt' % str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture('nxos_acl', filename)) - return output - - self.run_commands.side_effect = load_from_file - self.load_config.return_value = None - - def test_nxos_acl(self): - set_module_args(dict(name='ANSIBLE', seq=10, action='permit', - proto='tcp', src='192.0.2.1/24', dest='any')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['ip access-list ANSIBLE', '10 permit tcp 192.0.2.1/24 any']) - - def test_nxos_acl_remove(self): - set_module_args(dict(name='copp-system-p-acl-bgp', seq=10, state='absent')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['ip access-list copp-system-p-acl-bgp', 'no 10']) - - def test_nxos_acl_delete_acl(self): - set_module_args(dict(name='copp-system-p-acl-bgp', state='delete_acl')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['no ip access-list copp-system-p-acl-bgp']) diff --git a/test/units/modules/network/nxos/test_nxos_acl_interface.py b/test/units/modules/network/nxos/test_nxos_acl_interface.py deleted file mode 100644 index bfcab65a94..0000000000 --- a/test/units/modules/network/nxos/test_nxos_acl_interface.py +++ /dev/null @@ -1,71 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metacl_interfaceass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_acl_interface -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosAclInterfaceModule(TestNxosModule): - - module = nxos_acl_interface - - def setUp(self): - super(TestNxosAclInterfaceModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.nxos.nxos_acl_interface.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_acl_interface.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestNxosAclInterfaceModule, self).tearDown() - self.mock_run_commands.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, device=''): - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - command = item['command'] - except ValueError: - command = item - filename = '%s.txt' % str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture('nxos_acl_interface', filename)) - return output - - self.run_commands.side_effect = load_from_file - self.load_config.return_value = None - - def test_nxos_acl_interface(self): - set_module_args(dict(name='ANSIBLE', interface='ethernet1/41', direction='egress')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface ethernet1/41', 'ip access-group ANSIBLE out']) - - def test_nxos_acl_interface_remove(self): - set_module_args(dict(name='copp-system-p-acl-bgp', interface='ethernet1/41', - direction='egress', state='absent')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface ethernet1/41', 'no ip access-group copp-system-p-acl-bgp out']) diff --git a/test/units/modules/network/nxos/test_nxos_acl_interfaces.py b/test/units/modules/network/nxos/test_nxos_acl_interfaces.py deleted file mode 100644 index 8c55cd9480..0000000000 --- a/test/units/modules/network/nxos/test_nxos_acl_interfaces.py +++ /dev/null @@ -1,303 +0,0 @@ -# -# (c) 2019, Ansible by Red Hat, inc -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from ansible.modules.network.nxos import nxos_acl_interfaces -from units.compat.mock import patch, MagicMock -from units.modules.utils import set_module_args -from .nxos_module import TestNxosModule, load_fixture - - -class TestNxosAclInterfacesModule(TestNxosModule): - - module = nxos_acl_interfaces - - def setUp(self): - super(TestNxosAclInterfacesModule, self).setUp() - - self.mock_get_config = patch( - 'ansible.module_utils.network.common.network.Config.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.common.network.Config.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_resource_connection_config = patch( - 'ansible.module_utils.network.common.cfg.base.get_resource_connection' - ) - self.get_resource_connection_config = self.mock_get_resource_connection_config.start( - ) - - self.mock_get_resource_connection_facts = patch( - 'ansible.module_utils.network.common.facts.facts.get_resource_connection' - ) - self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start() - - self.mock_edit_config = patch( - 'ansible.module_utils.network.nxos.config.acl_interfaces.acl_interfaces.Acl_interfaces.edit_config' - ) - self.edit_config = self.mock_edit_config.start() - - self.mock_execute_show_command = patch( - 'ansible.module_utils.network.nxos.facts.acl_interfaces.acl_interfaces.Acl_interfacesFacts.get_device_data' - ) - self.execute_show_command = self.mock_execute_show_command.start() - - def tearDown(self): - super(TestNxosAclInterfacesModule, self).tearDown() - self.mock_get_resource_connection_config.stop() - self.mock_get_resource_connection_facts.stop() - self.mock_edit_config.stop() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_execute_show_command.stop() - - def load_fixtures(self, commands=None, device=''): - def load_from_file(*args, **kwargs): - output = '''interface Ethernet1/2\n ip access-group ACL1v4 out\n interface Ethernet1/4\n ipv6 port traffic-filter ACL2v6 in\n''' - return output - - self.execute_show_command.side_effect = load_from_file - - def test_nxos_acl_interfaces_merged(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/3", - access_groups=[ - dict(afi="ipv4", - acls=[ - dict( - name="ACL1v4", - direction="in", - ) - ] - ) - ] - ) - ], state="merged")) - commands = ['interface Ethernet1/3', - 'ip access-group ACL1v4 in'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_acl_interfaces_merged_idempotent(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/2", - access_groups=[ - dict(afi="ipv4", - acls=[ - dict( - name="ACL1v4", - direction="out", - ) - ] - ) - ] - ), - dict(name="Ethernet1/4", - access_groups=[ - dict(afi="ipv6", - acls=[ - dict( - name="ACL2v6", - direction="in", - port=True - ) - ] - ) - ] - ), - - ], state="merged")) - self.execute_module(changed=False, commands=[]) - - def test_nxos_acl_interfaces_replaced(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/2", - access_groups=[ - dict(afi="ipv6", - acls=[ - dict( - name="ACL1v6", - direction="in", - port=True - ) - ] - ) - ] - ), - dict(name="Ethernet1/5", - access_groups=[ - dict(afi="ipv4", - acls=[ - dict( - name="ACL2v4", - direction="in", - port=True - ) - ] - ) - ] - ) - ], state="replaced")) - commands = ['interface Ethernet1/2', 'no ip access-group ACL1v4 out', - 'ipv6 port traffic-filter ACL1v6 in', 'interface Ethernet1/5', 'ip port access-group ACL2v4 in'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_acl_interfaces_replaced_idempotent(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/2", - access_groups=[ - dict(afi="ipv4", - acls=[ - dict( - name="ACL1v4", - direction="out", - ) - ] - ) - ] - )], state="replaced")) - self.execute_module(changed=False, commands=[]) - - def test_nxos_acl_interfaces_overridden(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/3", - access_groups=[ - dict(afi="ipv4", - acls=[ - dict( - name="ACL2v4", - direction="out" - ), - dict( - name="PortACL", - direction="in", - port=True - ), - ] - ) - ] - )], state="overridden")) - commands = ['interface Ethernet1/2', 'no ip access-group ACL1v4 out', 'interface Ethernet1/4', - 'no ipv6 port traffic-filter ACL2v6 in', 'interface Ethernet1/3', 'ip access-group ACL2v4 out', 'ip port access-group PortACL in'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_acl_interfaces_overridden_idempotent(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/2", - access_groups=[ - dict(afi="ipv4", - acls=[ - dict( - name="ACL1v4", - direction="out", - ) - ] - ) - ] - ), - dict(name="Ethernet1/4", - access_groups=[ - dict(afi="ipv6", - acls=[ - dict( - name="ACL2v6", - direction="in", - port=True - ) - ] - ) - ] - ), - ], state="overridden")) - self.execute_module(changed=False, commands=[]) - - def test_nxos_acl_interfaces_deletedname(self): - set_module_args( - dict(config=[dict(name="Ethernet1/2")], state="deleted")) - commands = ['interface Ethernet1/2', 'no ip access-group ACL1v4 out'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_acl_interfaces_deletedafi(self): - set_module_args( - dict(config=[dict(name="Ethernet1/2", access_groups=[ - dict(afi="ipv4") - ])], state="deleted")) - commands = ['interface Ethernet1/2', 'no ip access-group ACL1v4 out'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_acl_interfaces_deletedacl(self): - set_module_args( - dict(config=[dict(name="Ethernet1/2", access_groups=[ - dict(afi="ipv4", acls=[ - dict( - name="ACL1v4", - direction="out" - ) - ]) - ])], state="deleted")) - commands = ['interface Ethernet1/2', 'no ip access-group ACL1v4 out'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_acl_interfaces_rendered(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/2", - access_groups=[ - dict(afi="ipv4", - acls=[ - dict( - name="ACL1v4", - direction="out", - ) - ] - ) - ] - ), - dict(name="Ethernet1/4", - access_groups=[ - dict(afi="ipv6", - acls=[ - dict( - name="ACL2v6", - direction="in", - port=True - ) - ] - ) - ] - ), - ], state="rendered")) - commands = ['interface Ethernet1/2', 'ip access-group ACL1v4 out', - 'interface Ethernet1/4', 'ipv6 port traffic-filter ACL2v6 in'] - result = self.execute_module(changed=False) - self.assertEqual(sorted(result['rendered']), sorted( - commands), result['rendered']) - - def test_nxos_acl_interfaces_parsed(self): - set_module_args(dict(running_config='''interface Ethernet1/2\n ip access-group ACL1v4 out\n interface Ethernet1/4\n \ - ipv6 port traffic-filter ACL2v6 in''', - state="parsed")) - result = self.execute_module(changed=False) - compare_list = [{'access_groups': [{'acls': [{'direction': 'out', 'name': 'ACL1v4'}], 'afi': 'ipv4'}], 'name': 'Ethernet1/2'}, - {'access_groups': [{'acls': [{'direction': 'in', 'name': 'ACL2v6', 'port': True}], 'afi': 'ipv6'}], 'name': 'Ethernet1/4'}] - self.assertEqual(result['parsed'], - compare_list, result['parsed']) - - def test_nxos_acl_interfaces_gathered(self): - set_module_args(dict(config=[], state="gathered")) - result = self.execute_module(changed=False) - compare_list = [{'access_groups': [{'acls': [{'direction': 'out', 'name': 'ACL1v4'}], 'afi': 'ipv4'}], 'name': 'Ethernet1/2'}, - {'access_groups': [{'acls': [{'direction': 'in', 'name': 'ACL2v6', 'port': True}], 'afi': 'ipv6'}], 'name': 'Ethernet1/4'}] - self.assertEqual(result['gathered'], - compare_list, result['gathered']) diff --git a/test/units/modules/network/nxos/test_nxos_acls.py b/test/units/modules/network/nxos/test_nxos_acls.py deleted file mode 100644 index 32cfbdc168..0000000000 --- a/test/units/modules/network/nxos/test_nxos_acls.py +++ /dev/null @@ -1,370 +0,0 @@ -# -# (c) 2019, Ansible by Red Hat, inc -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from ansible.modules.network.nxos import nxos_acls -from units.compat.mock import patch, MagicMock -from units.modules.utils import set_module_args -from .nxos_module import TestNxosModule, load_fixture - - -class TestNxosAclsModule(TestNxosModule): - - module = nxos_acls - - def setUp(self): - super(TestNxosAclsModule, self).setUp() - - self.mock_get_config = patch( - 'ansible.module_utils.network.common.network.Config.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.common.network.Config.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_resource_connection_config = patch( - 'ansible.module_utils.network.common.cfg.base.get_resource_connection' - ) - self.get_resource_connection_config = self.mock_get_resource_connection_config.start( - ) - - self.mock_get_resource_connection_facts = patch( - 'ansible.module_utils.network.common.facts.facts.get_resource_connection' - ) - self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start() - - self.mock_edit_config = patch( - 'ansible.module_utils.network.nxos.config.acls.acls.Acls.edit_config' - ) - self.edit_config = self.mock_edit_config.start() - - self.mock_execute_show_command = patch( - 'ansible.module_utils.network.nxos.facts.acls.acls.AclsFacts.get_device_data' - ) - self.execute_show_command = self.mock_execute_show_command.start() - - def tearDown(self): - super(TestNxosAclsModule, self).tearDown() - self.mock_get_resource_connection_config.stop() - self.mock_get_resource_connection_facts.stop() - self.mock_edit_config.stop() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_execute_show_command.stop() - - def load_fixtures(self, commands=None, device=''): - def load_from_file(*args, **kwargs): - v4 = '''\nip access-list ACL1v4\n 10 permit ip any any\n 20 deny udp any any''' - v6 = '''\nipv6 access-list ACL1v6\n 10 permit sctp any any''' - return v4 + v6 - - self.execute_show_command.side_effect = load_from_file - - def test_nxos_acls_merged(self): - set_module_args( - dict(config=[ - dict(afi="ipv4", - acls=[ - dict(name="ACL2v4", - aces=[ - dict( - grant="deny", - destination=dict(any=True), - source=dict(any=True), - fragments=True, - sequence=20, - protocol="tcp", - protocol_options=dict( - tcp=dict(ack=True)) - ) - ] - ) - ] - ), - dict(afi="ipv6", - acls=[ - dict(name="ACL2v6") - ]) - ], state="merged")) - commands = ['ip access-list ACL2v4', - '20 deny tcp any any ack fragments', - 'ipv6 access-list ACL2v6'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_acls_merged_idempotent(self): - set_module_args( - dict(config=[ - dict(afi="ipv4", - acls=[ - dict(name="ACL1v4", - aces=[ - dict( - grant="permit", - destination=dict(any=True), - source=dict(any=True), - sequence=10, - protocol="ip" - ), - dict( - grant="deny", - destination=dict(any=True), - source=dict(any=True), - sequence=20, - protocol="udp") - ] - ), - ] - ), - dict(afi="ipv6", - acls=[ - dict(name="ACL1v6", - aces=[ - dict( - grant="permit", - destination=dict(any=True), - source=dict(any=True), - sequence=10, - protocol="sctp", - ) - ]) - ]) - ], state="merged")) - self.execute_module(changed=False, commands=[]) - - def test_nxos_acls_replaced(self): - set_module_args( - dict(config=[ - dict(afi="ipv4", - acls=[ - dict(name="ACL1v4", - aces=[ - dict( - grant="permit", - destination=dict(host="192.0.2.28"), - source=dict(any=True), - log=True, - sequence=50, - protocol="icmp", - protocol_options=dict( - icmp=dict(administratively_prohibited=True)) - ) - ] - ) - ] - ) - ], state="replaced")) - commands = ['ip access-list ACL1v4', 'no 20 deny udp any any', - 'no 10 permit ip any any', - '50 permit icmp any host 192.0.2.28 administratively-prohibited log'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_acls_replaced_idempotent(self): - set_module_args( - dict(config=[ - dict(afi="ipv4", - acls=[ - dict(name="ACL1v4", - aces=[ - dict( - grant="permit", - destination=dict(any=True), - source=dict(any=True), - sequence=10, - protocol="ip", - ), - dict( - grant="deny", - destination=dict(any=True), - source=dict(any=True), - sequence=20, - protocol="udp") - ] - ), - ] - ), - dict(afi="ipv6", - acls=[ - dict(name="ACL1v6", - aces=[ - dict( - grant="permit", - destination=dict(any=True), - source=dict(any=True), - sequence=10, - protocol="sctp", - ) - ]) - ]) - ], state="replaced")) - self.execute_module(changed=False, commands=[]) - - def test_nxos_acls_overridden(self): - set_module_args( - dict(config=[ - dict(afi="ipv4", - acls=[ - dict(name="ACL2v4", - aces=[ - dict( - grant="permit", - destination=dict(host="192.0.2.28"), - source=dict(any=True), - log=True, - sequence=50, - protocol="icmp", - protocol_options=dict( - icmp=dict(administratively_prohibited=True)) - ), - dict( - remark="Overridden ACL" - ) - ] - ) - ] - ) - ], state="overridden")) - commands = ['no ip access-list ACL1v4', 'no ipv6 access-list ACL1v6', 'ip access-list ACL2v4', - '50 permit icmp any host 192.0.2.28 administratively-prohibited log', 'remark Overridden ACL'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_acls_overridden_idempotent(self): - set_module_args( - dict(config=[ - dict(afi="ipv4", - acls=[ - dict(name="ACL1v4", - aces=[ - dict( - grant="permit", - destination=dict(any=True), - source=dict(any=True), - sequence=10, - protocol="ip", - ), - dict( - grant="deny", - destination=dict(any=True), - source=dict(any=True), - sequence=20, - protocol="udp") - ] - ), - ] - ), - dict(afi="ipv6", - acls=[ - dict(name="ACL1v6", - aces=[ - dict( - grant="permit", - destination=dict(any=True), - source=dict(any=True), - sequence=10, - protocol="sctp", - ) - ]) - ]) - ], state="overridden")) - self.execute_module(changed=False, commands=[]) - - def test_nxos_acls_deletedafi(self): - set_module_args( - dict(config=[dict(afi="ipv4")], state="deleted")) - commands = ['no ip access-list ACL1v4'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_acls_deletedace(self): - set_module_args( - dict(config=[dict(afi="ipv6", - acls=[ - dict(name="ACL1v6", - aces=[ - dict( - grant="permit", - destination=dict(any=True), - source=dict(any=True), - sequence=10, - protocol="sctp", - ) - ]) - ])], state="deleted")) - commands = ['ipv6 access-list ACL1v6', 'no 10 permit sctp any any'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_acls_deletedall(self): - set_module_args(dict(config=[], state='deleted')) - commands = ['no ipv6 access-list ACL1v6', 'no ip access-list ACL1v4'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_acls_rendered(self): - set_module_args( - dict(config=[ - dict(afi="ipv4", - acls=[ - dict(name="ACL1v4", - aces=[ - dict( - grant="permit", - destination=dict(any=True), - source=dict(any=True), - sequence=10, - protocol="ip", - ), - dict( - grant="deny", - destination=dict(any=True), - source=dict(any=True), - sequence=20, - protocol="udp") - ] - ), - ] - ), - dict(afi="ipv6", - acls=[ - dict(name="ACL1v6", - aces=[ - dict( - grant="permit", - destination=dict(any=True), - source=dict(any=True), - sequence=10, - protocol="sctp", - ) - ]) - ]) - ], state="rendered")) - commands = ['ip access-list ACL1v4', '10 permit ip any any', '20 deny udp any any', - 'ipv6 access-list ACL1v6', '10 permit sctp any any'] - result = self.execute_module(changed=False) - self.assertEqual(sorted(result['rendered']), sorted( - commands), result['rendered']) - - def test_nxos_acls_parsed(self): - set_module_args(dict(running_config='''\nip access-list ACL1v4\n 10 permit ip any any\n 20 deny udp any any dscp AF23 precedence critical''', - state="parsed")) - result = self.execute_module(changed=False) - compare_list = [{'afi': 'ipv4', 'acls': [{'name': 'ACL1v4', - 'aces': [{'grant': 'permit', 'sequence': 10, 'protocol': 'ip', 'source': {'any': True}, - 'destination': {'any': True}}, {'grant': 'deny', 'sequence': 20, - 'protocol': 'udp', 'source': {'any': True}, - 'destination': {'any': True}, - 'dscp': 'AF23', 'precedence': 'critical'}]}]}] - self.assertEqual(result['parsed'], compare_list, result['parsed']) - - def test_nxos_acls_gathered(self): - set_module_args(dict(config=[], state="gathered")) - result = self.execute_module(changed=False) - compare_list = [{'acls': [{'aces': [{'destination': {'any': True}, 'sequence': 10, 'protocol': 'sctp', 'source': {'any': True}, 'grant': 'permit'}], - 'name': 'ACL1v6'}], 'afi': 'ipv6'}, {'acls': [{'aces': [{'destination': {'any': True}, 'sequence': 10, 'protocol': 'ip', - 'source': {'any': True}, 'grant': 'permit'}, - {'destination': {'any': True}, 'sequence': 20, 'protocol': 'udp', - 'source': {'any': True}, 'grant': 'deny'}], 'name': 'ACL1v4'}], - 'afi': 'ipv4'}] - self.assertEqual(result['gathered'], - compare_list, result['gathered']) diff --git a/test/units/modules/network/nxos/test_nxos_banner.py b/test/units/modules/network/nxos/test_nxos_banner.py deleted file mode 100644 index 326f9a3088..0000000000 --- a/test/units/modules/network/nxos/test_nxos_banner.py +++ /dev/null @@ -1,83 +0,0 @@ -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_banner -from .nxos_module import TestNxosModule, set_module_args - - -class TestNxosBannerModule(TestNxosModule): - - module = nxos_banner - - def setUp(self): - super(TestNxosBannerModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.nxos.nxos_banner.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_banner.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestNxosBannerModule, self).tearDown() - self.mock_run_commands.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.load_config.return_value = dict(diff=None, session='session') - - def test_nxos_banner_exec_create(self): - set_module_args(dict(banner='exec', text='test\nbanner\nstring')) - commands = ['banner exec @\ntest\nbanner\nstring\n@'] - self.run_commands.return_value = commands - self.execute_module(changed=True, commands=commands) - - def test_nxos_banner_exec_remove(self): - set_module_args(dict(banner='exec', state='absent')) - commands = ['no banner exec'] - self.run_commands.return_value = commands - self.execute_module(changed=True, commands=commands) - - def test_nxos_banner_exec_fail_create(self): - set_module_args(dict(banner='exec', text='test\nbanner\nstring')) - commands = ['banner exec @\ntest\nbanner\nstring\n@'] - err_rsp = ['Invalid command'] - self.run_commands.return_value = err_rsp - result = self.execute_module(failed=True, changed=True) - self.assertEqual(result['msg'], 'banner: exec may not be supported on this platform. Possible values are : exec | motd') - - def test_nxos_banner_exec_fail_remove(self): - set_module_args(dict(banner='exec', state='absent')) - commands = ['no banner exec'] - err_rsp = ['Invalid command'] - self.run_commands.return_value = err_rsp - result = self.execute_module(failed=True, changed=True) - self.assertEqual(result['msg'], 'banner: exec may not be supported on this platform. Possible values are : exec | motd') - - def test_nxos_banner_motd_create(self): - set_module_args(dict(banner='motd', text='test\nbanner\nstring')) - commands = ['banner motd @\ntest\nbanner\nstring\n@'] - self.run_commands.return_value = commands - self.execute_module(changed=True, commands=commands) - - def test_nxos_banner_motd_remove(self): - set_module_args(dict(banner='motd', state='absent')) - commands = ['no banner motd'] - self.run_commands.return_value = commands - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/nxos/test_nxos_bfd_global.py b/test/units/modules/network/nxos/test_nxos_bfd_global.py deleted file mode 100644 index 67891d0fc6..0000000000 --- a/test/units/modules/network/nxos/test_nxos_bfd_global.py +++ /dev/null @@ -1,284 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_bfd_global -from ansible.module_utils.network.nxos.nxos import NxosCmdRef -from .nxos_module import TestNxosModule, load_fixture, set_module_args - -# TBD: These imports / import checks are only needed as a workaround for -# shippable, which fails this test due to import yaml & import ordereddict. -import pytest -from ansible.module_utils.network.nxos.nxos import nxosCmdRef_import_check -msg = nxosCmdRef_import_check() -@pytest.mark.skipif(len(msg), reason=msg) -class TestNxosBfdGlobalModule(TestNxosModule): - - module = nxos_bfd_global - - def setUp(self): - super(TestNxosBfdGlobalModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_bfd_global.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_execute_show_command = patch('ansible.module_utils.network.nxos.nxos.NxosCmdRef.execute_show_command') - self.execute_show_command = self.mock_execute_show_command.start() - - self.mock_get_platform_shortname = patch('ansible.module_utils.network.nxos.nxos.NxosCmdRef.get_platform_shortname') - self.get_platform_shortname = self.mock_get_platform_shortname.start() - - def tearDown(self): - super(TestNxosBfdGlobalModule, self).tearDown() - self.mock_load_config.stop() - self.execute_show_command.stop() - self.get_platform_shortname.stop() - - def load_fixtures(self, commands=None, device=''): - self.load_config.return_value = None - - def test_bfd_defaults_n9k(self): - # feature bfd is enabled, no non-defaults are set. - self.execute_show_command.return_value = "feature bfd" - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - echo_interface='deleted', - echo_rx_interval=50, - interval={'tx': 50, 'min_rx': 50, 'multiplier': 3}, - slow_timer=2000, - startup_timer=5, - ipv4_echo_rx_interval=50, - ipv4_interval={'tx': 50, 'min_rx': 50, 'multiplier': 3}, - ipv4_slow_timer=2000, - ipv6_echo_rx_interval=50, - ipv6_interval={'tx': 50, 'min_rx': 50, 'multiplier': 3}, - ipv6_slow_timer=2000 - )) - self.execute_module(changed=False) - - def test_bfd_non_defaults_n9k(self): - # feature bfd is enabled, apply all non-default values. - # This testcase also tests reordering of echo_interface to make sure - # it gets applied last. - self.execute_show_command.return_value = "feature bfd" - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - echo_interface='loopback1', - echo_rx_interval=51, - interval={'tx': 51, 'min_rx': 51, 'multiplier': 4}, - slow_timer=2001, - startup_timer=6, - ipv4_echo_rx_interval=51, - ipv4_interval={'tx': 51, 'min_rx': 51, 'multiplier': 4}, - ipv4_slow_timer=2001, - ipv6_echo_rx_interval=51, - ipv6_interval={'tx': 51, 'min_rx': 51, 'multiplier': 4}, - ipv6_slow_timer=2001 - )) - self.execute_module(changed=True, commands=[ - 'bfd interval 51 min_rx 51 multiplier 4', - 'bfd ipv4 echo-rx-interval 51', - 'bfd ipv4 interval 51 min_rx 51 multiplier 4', - 'bfd ipv4 slow-timer 2001', - 'bfd ipv6 echo-rx-interval 51', - 'bfd ipv6 interval 51 min_rx 51 multiplier 4', - 'bfd ipv6 slow-timer 2001', - 'bfd slow-timer 2001', - 'bfd startup-timer 6', - 'bfd echo-interface loopback1', - 'bfd echo-rx-interval 51' - ]) - - def test_bfd_defaults_n3k(self): - # feature bfd is enabled, no non-defaults are set. - self.execute_show_command.return_value = "feature bfd" - self.get_platform_shortname.return_value = 'N3K' - set_module_args(dict( - echo_interface='deleted', - echo_rx_interval=250, - interval={'tx': 250, 'min_rx': 250, 'multiplier': 3}, - slow_timer=2000, - startup_timer=5, - ipv4_echo_rx_interval=250, - ipv4_interval={'tx': 250, 'min_rx': 250, 'multiplier': 3}, - ipv4_slow_timer=2000, - ipv6_echo_rx_interval=250, - ipv6_interval={'tx': 250, 'min_rx': 250, 'multiplier': 3}, - ipv6_slow_timer=2000 - )) - self.execute_module(changed=False) - - def test_bfd_defaults_n35(self): - # feature bfd is enabled, no non-defaults are set. - self.execute_show_command.return_value = "feature bfd" - self.get_platform_shortname.return_value = 'N35' - set_module_args(dict( - echo_interface='deleted', - echo_rx_interval=50, - interval={'tx': 50, 'min_rx': 50, 'multiplier': 3}, - slow_timer=2000, - startup_timer=5, - ipv4_echo_rx_interval=50, - ipv4_interval={'tx': 50, 'min_rx': 50, 'multiplier': 3}, - ipv4_slow_timer=2000, - )) - self.execute_module(changed=False) - - def test_bfd_defaults_n6k(self): - # feature bfd is enabled, no non-defaults are set. - self.execute_show_command.return_value = "feature bfd" - self.get_platform_shortname.return_value = 'N6K' - set_module_args(dict( - echo_interface='deleted', - interval={'tx': 50, 'min_rx': 50, 'multiplier': 3}, - slow_timer=2000, - fabricpath_interval={'tx': 50, 'min_rx': 50, 'multiplier': 3}, - fabricpath_slow_timer=2000, - fabricpath_vlan=1 - )) - self.execute_module(changed=False) - - def test_bfd_defaults_n7k(self): - # feature bfd is enabled, no non-defaults are set. - self.execute_show_command.return_value = "feature bfd" - self.get_platform_shortname.return_value = 'N7K' - set_module_args(dict( - echo_interface='deleted', - echo_rx_interval=50, - interval={'tx': 50, 'min_rx': 50, 'multiplier': 3}, - slow_timer=2000, - ipv4_echo_rx_interval=50, - ipv4_interval={'tx': 50, 'min_rx': 50, 'multiplier': 3}, - ipv4_slow_timer=2000, - ipv6_echo_rx_interval=50, - ipv6_interval={'tx': 50, 'min_rx': 50, 'multiplier': 3}, - ipv6_slow_timer=2000, - fabricpath_interval={'tx': 50, 'min_rx': 50, 'multiplier': 3}, - fabricpath_slow_timer=2000, - fabricpath_vlan=1 - )) - self.execute_module(changed=False) - - def test_bfd_existing_n9k(self): - module_name = self.module.__name__.rsplit('.', 1)[1] - self.execute_show_command.return_value = load_fixture(module_name, 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - echo_interface='deleted', - echo_rx_interval=51, - interval={'tx': 51, 'min_rx': 51, 'multiplier': 3}, - slow_timer=2000, - startup_timer=5, - ipv4_echo_rx_interval=50, - ipv4_interval={'tx': 51, 'min_rx': 51, 'multiplier': 3}, - ipv4_slow_timer=2000, - ipv6_echo_rx_interval=50, - ipv6_interval={'tx': 51, 'min_rx': 51, 'multiplier': 3}, - ipv6_slow_timer=2000 - )) - self.execute_module(changed=True, commands=[ - 'no bfd echo-interface loopback2', - 'bfd echo-rx-interval 51', - 'bfd interval 51 min_rx 51 multiplier 3', - 'bfd slow-timer 2000', - 'bfd startup-timer 5', - 'bfd ipv4 echo-rx-interval 50', - 'bfd ipv4 interval 51 min_rx 51 multiplier 3', - 'bfd ipv4 slow-timer 2000', - 'bfd ipv6 echo-rx-interval 50', - 'bfd ipv6 interval 51 min_rx 51 multiplier 3', - 'bfd ipv6 slow-timer 2000', - ]) - - def test_bfd_idempotence_n9k(self): - module_name = self.module.__name__.rsplit('.', 1)[1] - self.execute_show_command.return_value = load_fixture(module_name, 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - echo_interface='loopback2', - echo_rx_interval=56, - interval={'tx': 51, 'min_rx': 52, 'multiplier': 4}, - slow_timer=2001, - startup_timer=6, - ipv4_echo_rx_interval=54, - ipv4_interval={'tx': 54, 'min_rx': 54, 'multiplier': 4}, - ipv4_slow_timer=2004, - ipv6_echo_rx_interval=56, - ipv6_interval={'tx': 56, 'min_rx': 56, 'multiplier': 6}, - ipv6_slow_timer=2006 - )) - self.execute_module(changed=False) - - def test_bfd_existing_n7k(self): - module_name = self.module.__name__.rsplit('.', 1)[1] - self.execute_show_command.return_value = load_fixture(module_name, 'N7K.cfg') - self.get_platform_shortname.return_value = 'N7K' - set_module_args(dict( - echo_interface='deleted', - echo_rx_interval=51, - interval={'tx': 51, 'min_rx': 51, 'multiplier': 3}, - slow_timer=2002, - ipv4_echo_rx_interval=51, - ipv4_interval={'tx': 51, 'min_rx': 51, 'multiplier': 3}, - ipv4_slow_timer=2002, - ipv6_echo_rx_interval=51, - ipv6_interval={'tx': 51, 'min_rx': 51, 'multiplier': 3}, - ipv6_slow_timer=2002, - fabricpath_interval={'tx': 51, 'min_rx': 51, 'multiplier': 3}, - fabricpath_slow_timer=2003, - fabricpath_vlan=3, - )) - self.execute_module(changed=True, commands=[ - 'no bfd echo-interface loopback2', - 'bfd echo-rx-interval 51', - 'bfd interval 51 min_rx 51 multiplier 3', - 'bfd slow-timer 2002', - 'bfd ipv4 echo-rx-interval 51', - 'bfd ipv4 interval 51 min_rx 51 multiplier 3', - 'bfd ipv4 slow-timer 2002', - 'bfd ipv6 echo-rx-interval 51', - 'bfd ipv6 interval 51 min_rx 51 multiplier 3', - 'bfd ipv6 slow-timer 2002', - 'bfd fabricpath interval 51 min_rx 51 multiplier 3', - 'bfd fabricpath slow-timer 2003', - 'bfd fabricpath vlan 3', - ]) - - def test_bfd_idempotence_n7k(self): - module_name = self.module.__name__.rsplit('.', 1)[1] - self.execute_show_command.return_value = load_fixture(module_name, 'N7K.cfg') - self.get_platform_shortname.return_value = 'N7K' - set_module_args(dict( - echo_interface='loopback2', - echo_rx_interval=56, - interval={'tx': 51, 'min_rx': 52, 'multiplier': 4}, - slow_timer=2001, - ipv4_echo_rx_interval=54, - ipv4_interval={'tx': 54, 'min_rx': 54, 'multiplier': 4}, - ipv4_slow_timer=2004, - ipv6_echo_rx_interval=56, - ipv6_interval={'tx': 56, 'min_rx': 56, 'multiplier': 6}, - ipv6_slow_timer=2006, - fabricpath_interval={'tx': 58, 'min_rx': 58, 'multiplier': 8}, - fabricpath_slow_timer=2008, - fabricpath_vlan=2, - )) - self.execute_module(changed=False) diff --git a/test/units/modules/network/nxos/test_nxos_bfd_interfaces.py b/test/units/modules/network/nxos/test_nxos_bfd_interfaces.py deleted file mode 100644 index 83630f2937..0000000000 --- a/test/units/modules/network/nxos/test_nxos_bfd_interfaces.py +++ /dev/null @@ -1,303 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from textwrap import dedent -from units.compat.mock import patch -from units.modules.utils import AnsibleFailJson -from ansible.modules.network.nxos import nxos_bfd_interfaces -from ansible.module_utils.network.nxos.config.bfd_interfaces.bfd_interfaces import Bfd_interfaces -from .nxos_module import TestNxosModule, load_fixture, set_module_args - -ignore_provider_arg = True - - -class TestNxosBfdInterfacesModule(TestNxosModule): - - module = nxos_bfd_interfaces - - def setUp(self): - super(TestNxosBfdInterfacesModule, self).setUp() - - self.mock_FACT_LEGACY_SUBSETS = patch('ansible.module_utils.network.nxos.facts.facts.FACT_LEGACY_SUBSETS') - self.FACT_LEGACY_SUBSETS = self.mock_FACT_LEGACY_SUBSETS.start() - - self.mock_get_resource_connection_config = patch('ansible.module_utils.network.common.cfg.base.get_resource_connection') - self.get_resource_connection_config = self.mock_get_resource_connection_config.start() - - self.mock_get_resource_connection_facts = patch('ansible.module_utils.network.common.facts.facts.get_resource_connection') - self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start() - - self.mock_edit_config = patch('ansible.module_utils.network.nxos.config.bfd_interfaces.bfd_interfaces.Bfd_interfaces.edit_config') - self.edit_config = self.mock_edit_config.start() - - def tearDown(self): - super(TestNxosBfdInterfacesModule, self).tearDown() - self.mock_FACT_LEGACY_SUBSETS.stop() - self.mock_get_resource_connection_config.stop() - self.mock_get_resource_connection_facts.stop() - self.mock_edit_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.mock_FACT_LEGACY_SUBSETS.return_value = dict() - self.get_resource_connection_config.return_value = None - self.edit_config.return_value = None - - # --------------------------- - # Bfd_interfaces Test Cases - # --------------------------- - - # 'state' logic behaviors - # - # - 'merged' : Update existing device state with any differences in the play. - # - 'deleted' : Reset existing device state to default values. Ignores any - # play attrs other than 'name'. Scope is limited to interfaces - # in the play. - # - 'overridden': The play is the source of truth. Similar to replaced but the - # scope includes all interfaces; ie. it will also reset state - # on interfaces not found in the play. - # - 'replaced' : Scope is limited to the interfaces in the play. - - SHOW_CMD = "show running-config | section '^interface|^feature bfd'" - - def test_1(self): - # Setup: No BFD configs shown on device interfaces - # NOTE: The bfd 'enable' state is the default and does not nvgen. - existing = dedent('''\ - feature bfd - interface Ethernet1/1 - interface Ethernet1/2 - interface Ethernet1/3 - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict( - name='Ethernet1/1', - bfd='disable', - echo='disable'), - dict( - name='Ethernet1/2', - bfd='disable'), - ]) - # Expected result commands for each 'state' - merged = ['interface Ethernet1/1', 'no bfd', 'no bfd echo', - 'interface Ethernet1/2', 'no bfd'] - deleted = [] - overridden = merged - replaced = merged - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False, commands=deleted) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - def test_2(self): - # Change existing BFD configs - existing = dedent('''\ - feature bfd - interface Ethernet1/1 - no bfd - interface Ethernet1/2 - no bfd echo - interface Ethernet1/3 - no bfd - no bfd echo - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict( - name='Ethernet1/1', - bfd='enable', - echo='disable'), - dict( - name='Ethernet1/2'), - # Eth1/3 not present! Thus overridden should set Eth1/3 to defaults; - # replaced should ignore Eth1/3. - ]) - # Expected result commands for each 'state' - merged = ['interface Ethernet1/1', 'bfd', 'no bfd echo'] - deleted = ['interface Ethernet1/1', 'bfd', - 'interface Ethernet1/2', 'bfd echo'] - overridden = ['interface Ethernet1/3', 'bfd', 'bfd echo', - 'interface Ethernet1/1', 'bfd', 'no bfd echo', - 'interface Ethernet1/2', 'bfd echo'] - replaced = ['interface Ethernet1/1', 'bfd', 'no bfd echo', - 'interface Ethernet1/2', 'bfd echo'] - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - def test_3(self): - # Device has bfd configs, playbook has no values - existing = dedent('''\ - feature bfd - interface Ethernet1/1 - no bfd - interface Ethernet1/2 - no bfd echo - interface Ethernet1/3 - no bfd - no bfd echo - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict(name='Ethernet1/1'), - ]) - # Expected result commands for each 'state' - merged = [] - deleted = ['interface Ethernet1/1', 'bfd'] - overridden = ['interface Ethernet1/1', 'bfd', - 'interface Ethernet1/2', 'bfd echo', - 'interface Ethernet1/3', 'bfd', 'bfd echo'] - replaced = ['interface Ethernet1/1', 'bfd'] - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - def test_4(self): - # Test with interface that doesn't exist yet - existing = dedent('''\ - feature bfd - interface Ethernet1/1 - no bfd - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict( - name='Ethernet1/1.42', - bfd='enable', - echo='disable'), - ]) - # Expected result commands for each 'state' - merged = ['interface Ethernet1/1.42', 'bfd', 'no bfd echo'] - deleted = [] - overridden = ['interface Ethernet1/1.42', 'bfd', 'no bfd echo', - 'interface Ethernet1/1', 'bfd'] - replaced = ['interface Ethernet1/1.42', 'bfd', 'no bfd echo'] - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False, commands=deleted) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - def test_5(self): - # idempotence - existing = dedent('''\ - feature bfd - interface Ethernet1/1 - no bfd - no bfd echo - interface Ethernet1/2 - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict( - name='Ethernet1/1', - bfd='disable', - echo='disable'), - dict( - name='Ethernet1/2', - bfd='enable', - echo='enable'), - ]) - # Expected result commands for each 'state' - merged = [] - deleted = ['interface Ethernet1/1', 'bfd', 'bfd echo'] - overridden = [] - replaced = [] - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False, commands=overridden) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False, commands=replaced) - - -def build_args(data, type, state=None, check_mode=None): - if state is None: - state = 'merged' - if check_mode is None: - check_mode = False - args = { - 'state': state, - '_ansible_check_mode': check_mode, - 'config': { - type: data - } - } - return args diff --git a/test/units/modules/network/nxos/test_nxos_bgp.py b/test/units/modules/network/nxos/test_nxos_bgp.py deleted file mode 100644 index cc3ae8c890..0000000000 --- a/test/units/modules/network/nxos/test_nxos_bgp.py +++ /dev/null @@ -1,134 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_bgp -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosBgpModule(TestNxosModule): - - module = nxos_bgp - - def setUp(self): - super(TestNxosBgpModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_bgp.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_bgp.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosBgpModule, self).tearDown() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('nxos_bgp', 'config.cfg') - self.load_config.return_value = [] - - def test_nxos_bgp(self): - set_module_args(dict(asn=65535, router_id='192.0.2.1')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['router bgp 65535', 'router-id 192.0.2.1']) - - def test_nxos_bgp_change_nothing(self): - set_module_args(dict(asn=65535, router_id='192.168.1.1')) - self.execute_module(changed=False) - - def test_nxos_bgp_wrong_asn(self): - set_module_args(dict(asn=10, router_id='192.168.1.1')) - result = self.execute_module(failed=True) - self.assertEqual(result['msg'], 'Another BGP ASN already exists.') - - def test_nxos_bgp_remove(self): - set_module_args(dict(asn=65535, state='absent')) - self.execute_module(changed=True, commands=['no router bgp 65535']) - - def test_nxos_bgp_remove_vrf(self): - set_module_args(dict(asn=65535, vrf='test2', state='absent')) - self.execute_module(changed=True, commands=['router bgp 65535', 'no vrf test2']) - - def test_nxos_bgp_remove_nonexistant_vrf(self): - set_module_args(dict(asn=65535, vrf='foo', state='absent')) - self.execute_module(changed=False) - - def test_nxos_bgp_remove_wrong_asn(self): - set_module_args(dict(asn=10, state='absent')) - self.execute_module(changed=False) - - def test_nxos_bgp_vrf(self): - set_module_args(dict(asn=65535, vrf='test', router_id='192.0.2.1')) - result = self.execute_module(changed=True, commands=['router bgp 65535', 'vrf test', 'router-id 192.0.2.1']) - self.assertEqual(result['warnings'], ["VRF test doesn't exist."]) - - def test_nxos_bgp_global_param(self): - set_module_args(dict(asn=65535, shutdown=True)) - self.execute_module(changed=True, commands=['router bgp 65535', 'shutdown']) - - def test_nxos_bgp_global_param_outside_default(self): - set_module_args(dict(asn=65535, vrf='test', shutdown=True)) - result = self.execute_module(failed=True) - self.assertEqual(result['msg'], 'Global params can be modified only under "default" VRF.') - - def test_nxos_bgp_default_value(self): - set_module_args(dict(asn=65535, graceful_restart_timers_restart='default')) - self.execute_module( - changed=True, - commands=['router bgp 65535', 'graceful-restart restart-time 120'] - ) - - -class TestNxosBgp32BitsAS(TestNxosModule): - - module = nxos_bgp - - def setUp(self): - super(TestNxosBgp32BitsAS, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_bgp.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_bgp.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosBgp32BitsAS, self).tearDown() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('nxos_bgp', 'config_32_bits_as.cfg') - self.load_config.return_value = [] - - def test_nxos_bgp_change_nothing(self): - set_module_args(dict(asn='65535.65535', router_id='192.168.1.1')) - self.execute_module(changed=False) - - def test_nxos_bgp_wrong_asn(self): - set_module_args(dict(asn='65535.10', router_id='192.168.1.1')) - result = self.execute_module(failed=True) - self.assertEqual(result['msg'], 'Another BGP ASN already exists.') - - def test_nxos_bgp_remove(self): - set_module_args(dict(asn='65535.65535', state='absent')) - self.execute_module(changed=True, commands=['no router bgp 65535.65535']) diff --git a/test/units/modules/network/nxos/test_nxos_bgp_af.py b/test/units/modules/network/nxos/test_nxos_bgp_af.py deleted file mode 100644 index 452caef80f..0000000000 --- a/test/units/modules/network/nxos/test_nxos_bgp_af.py +++ /dev/null @@ -1,103 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_bgp_af -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosBgpAfModule(TestNxosModule): - - module = nxos_bgp_af - - def setUp(self): - super(TestNxosBgpAfModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_bgp_af.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_bgp_af.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosBgpAfModule, self).tearDown() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('nxos_bgp', 'config.cfg') - self.load_config.return_value = None - - def test_nxos_bgp_af(self): - set_module_args(dict(asn=65535, afi='ipv4', safi='unicast')) - self.execute_module( - changed=True, sort=False, - commands=['router bgp 65535', 'address-family ipv4 unicast'] - ) - - def test_nxos_bgp_af_vrf(self): - set_module_args(dict(asn=65535, vrf='test', afi='ipv4', safi='unicast')) - self.execute_module( - changed=True, sort=False, - commands=['router bgp 65535', 'vrf test', 'address-family ipv4 unicast'] - ) - - def test_nxos_bgp_af_vrf_exists(self): - set_module_args(dict(asn=65535, vrf='test2', afi='ipv4', safi='unicast')) - self.execute_module(changed=False, commands=[]) - - def test_nxos_bgp_af_dampening_routemap(self): - set_module_args(dict(asn=65535, afi='ipv4', safi='unicast', - dampening_routemap='route-map-a')) - self.execute_module( - changed=True, - commands=['router bgp 65535', 'address-family ipv4 unicast', - 'dampening route-map route-map-a'] - ) - - def test_nxos_bgp_af_dampening_manual(self): - set_module_args(dict(asn=65535, afi='ipv4', safi='unicast', - dampening_half_time=5, dampening_suppress_time=2000, - dampening_reuse_time=1900, dampening_max_suppress_time=10)) - self.execute_module( - changed=True, - commands=['router bgp 65535', 'address-family ipv4 unicast', - 'dampening 5 1900 2000 10'] - ) - - def test_nxos_bgp_af_dampening_mix(self): - set_module_args(dict(asn=65535, afi='ipv4', safi='unicast', - dampening_routemap='route-map-a', - dampening_half_time=5, dampening_suppress_time=2000, - dampening_reuse_time=1900, dampening_max_suppress_time=10)) - result = self.execute_module(failed=True) - self.assertEqual(result['msg'], 'parameters are mutually exclusive: dampening_routemap|dampening_half_time, ' - 'dampening_routemap|dampening_suppress_time, dampening_routemap|dampening_reuse_time, ' - 'dampening_routemap|dampening_max_suppress_time') - - def test_nxos_bgp_af_client(self): - set_module_args(dict(asn=65535, afi='ipv4', safi='unicast', - client_to_client=False)) - self.execute_module( - changed=True, - commands=['router bgp 65535', 'address-family ipv4 unicast', - 'no client-to-client reflection'] - ) diff --git a/test/units/modules/network/nxos/test_nxos_bgp_neighbor.py b/test/units/modules/network/nxos/test_nxos_bgp_neighbor.py deleted file mode 100644 index 564ef301e4..0000000000 --- a/test/units/modules/network/nxos/test_nxos_bgp_neighbor.py +++ /dev/null @@ -1,81 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_bgp_neighbor -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosBgpNeighborModule(TestNxosModule): - - module = nxos_bgp_neighbor - - def setUp(self): - super(TestNxosBgpNeighborModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_bgp_neighbor.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_bgp_neighbor.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosBgpNeighborModule, self).tearDown() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('nxos_bgp', 'config.cfg') - self.load_config.return_value = [] - - def test_nxos_bgp_neighbor_bfd_1(self): - # None (disable) -> enable - set_module_args(dict(asn=65535, neighbor='1.1.1.1', bfd='enable')) - self.execute_module(changed=True, commands=['router bgp 65535', 'neighbor 1.1.1.1', 'bfd']) - - # enable -> enable (idempotence) - set_module_args(dict(asn=65535, neighbor='1.1.1.2', bfd='enable')) - self.execute_module(changed=False) - - def test_nxos_bgp_neighbor_bfd_2(self): - # enable -> None (disable) - set_module_args(dict(asn=65535, neighbor='1.1.1.2', bfd='disable')) - self.execute_module(changed=True, commands=['router bgp 65535', 'neighbor 1.1.1.2', 'no bfd']) - - # None (disable) -> disable (idempotence) - set_module_args(dict(asn=65535, neighbor='1.1.1.1', bfd='disable')) - self.execute_module(changed=False) - - def test_nxos_bgp_neighbor(self): - set_module_args(dict(asn=65535, neighbor='192.0.2.3', description='some words')) - self.execute_module(changed=True, commands=['router bgp 65535', 'neighbor 192.0.2.3', 'description some words']) - - def test_nxos_bgp_neighbor_absent(self): - set_module_args(dict(asn=65535, neighbor='1.1.1.1', state='absent')) - self.execute_module(changed=True, commands=['router bgp 65535', 'no neighbor 1.1.1.1']) - - def test_nxos_bgp_neighbor_remove_private_as(self): - set_module_args(dict(asn=65535, neighbor='3.3.3.4', remove_private_as='all')) - self.execute_module(changed=False, commands=[]) - - def test_nxos_bgp_neighbor_remove_private_as_changed(self): - set_module_args(dict(asn=65535, neighbor='3.3.3.4', remove_private_as='replace-as')) - self.execute_module(changed=True, commands=['router bgp 65535', 'neighbor 3.3.3.4', 'remove-private-as replace-as']) diff --git a/test/units/modules/network/nxos/test_nxos_bgp_neighbor_af.py b/test/units/modules/network/nxos/test_nxos_bgp_neighbor_af.py deleted file mode 100644 index 78cb1e3307..0000000000 --- a/test/units/modules/network/nxos/test_nxos_bgp_neighbor_af.py +++ /dev/null @@ -1,108 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_bgp_neighbor_af -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosBgpNeighborAfModule(TestNxosModule): - - module = nxos_bgp_neighbor_af - - def setUp(self): - super(TestNxosBgpNeighborAfModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_bgp_neighbor_af.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_bgp_neighbor_af.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosBgpNeighborAfModule, self).tearDown() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('nxos_bgp', 'config.cfg') - self.load_config.return_value = [] - - def test_nxos_bgp_neighbor_af(self): - set_module_args(dict(asn=65535, neighbor='192.0.2.3', afi='ipv4', - safi='unicast', route_reflector_client=True)) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], [ - 'router bgp 65535', 'neighbor 192.0.2.3', 'address-family ipv4 unicast', - 'route-reflector-client' - ]) - - def test_nxos_bgp_neighbor_af_exists(self): - set_module_args(dict(asn=65535, neighbor='3.3.3.5', afi='ipv4', safi='unicast')) - self.execute_module(changed=False, commands=[]) - - def test_nxos_bgp_neighbor_af_absent(self): - set_module_args(dict(asn=65535, neighbor='3.3.3.5', afi='ipv4', safi='unicast', state='absent')) - self.execute_module( - changed=True, sort=False, - commands=['router bgp 65535', 'neighbor 3.3.3.5', 'no address-family ipv4 unicast'] - ) - - def test_nxos_bgp_neighbor_af_advertise_map(self): - set_module_args(dict(asn=65535, neighbor='3.3.3.5', afi='ipv4', safi='unicast', - advertise_map_exist=['my_advertise_map', 'my_exist_map'])) - self.execute_module( - changed=True, sort=False, - commands=['router bgp 65535', 'neighbor 3.3.3.5', 'address-family ipv4 unicast', 'advertise-map my_advertise_map exist-map my_exist_map'] - ) - - def test_nxos_bgp_neighbor_af_advertise_map_non_exist(self): - set_module_args(dict(asn=65535, neighbor='3.3.3.5', afi='ipv4', safi='unicast', - advertise_map_non_exist=['my_advertise_map', 'my_non_exist_map'])) - self.execute_module( - changed=True, sort=False, - commands=['router bgp 65535', 'neighbor 3.3.3.5', 'address-family ipv4 unicast', 'advertise-map my_advertise_map non-exist-map my_non_exist_map'] - ) - - def test_nxos_bgp_neighbor_af_max_prefix_limit_default(self): - set_module_args(dict(asn=65535, neighbor='3.3.3.5', afi='ipv4', - safi='unicast', max_prefix_limit='default')) - self.execute_module( - changed=True, sort=False, - commands=['router bgp 65535', 'neighbor 3.3.3.5', 'address-family ipv4 unicast', 'no maximum-prefix'] - ) - - def test_nxos_bgp_neighbor_af_max_prefix(self): - set_module_args(dict(asn=65535, neighbor='3.3.3.5', afi='ipv4', - safi='unicast', max_prefix_threshold=20, - max_prefix_limit=20)) - self.execute_module( - changed=True, sort=False, - commands=['router bgp 65535', 'neighbor 3.3.3.5', 'address-family ipv4 unicast', 'maximum-prefix 20 20'] - ) - - def test_nxos_bgp_neighbor_af_disable_peer_as_check(self): - set_module_args(dict(asn=65535, neighbor='3.3.3.5', afi='ipv4', - safi='unicast', disable_peer_as_check=True)) - self.execute_module( - changed=True, - commands=['router bgp 65535', 'neighbor 3.3.3.5', 'address-family ipv4 unicast', 'disable-peer-as-check'] - ) diff --git a/test/units/modules/network/nxos/test_nxos_command.py b/test/units/modules/network/nxos/test_nxos_command.py deleted file mode 100644 index a3c148212a..0000000000 --- a/test/units/modules/network/nxos/test_nxos_command.py +++ /dev/null @@ -1,106 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_command -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosCommandModule(TestNxosModule): - - module = nxos_command - - def setUp(self): - super(TestNxosCommandModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.nxos.nxos_command.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestNxosCommandModule, self).tearDown() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None, device=''): - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item['command']) - command = obj['command'] - except ValueError: - command = item['command'] - filename = '%s.txt' % str(command).replace(' ', '_') - output.append(load_fixture('nxos_command', filename)) - return output - - self.run_commands.side_effect = load_from_file - - def test_nxos_command_simple(self): - set_module_args(dict(commands=['show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 1) - self.assertTrue(result['stdout'][0].startswith('Cisco')) - - def test_nxos_command_multiple(self): - set_module_args(dict(commands=['show version', 'show version'])) - result = self.execute_module() - self.assertEqual(len(result['stdout']), 2) - self.assertTrue(result['stdout'][0].startswith('Cisco')) - - def test_nxos_command_wait_for(self): - wait_for = 'result[0] contains "NX-OS"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module() - - def test_nxos_command_wait_for_fails(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 10) - - def test_nxos_command_retries(self): - wait_for = 'result[0] contains "test string"' - set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2)) - self.execute_module(failed=True) - self.assertEqual(self.run_commands.call_count, 2) - - def test_nxos_command_match_any(self): - wait_for = ['result[0] contains "Cisco"', - 'result[0] contains "test string"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any')) - self.execute_module() - - def test_nxos_command_match_all(self): - wait_for = ['result[0] contains "Cisco"', - 'result[0] contains "image file"'] - set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all')) - self.execute_module() - - def test_nxos_command_match_all_failure(self): - wait_for = ['result[0] contains "Cisco"', - 'result[0] contains "test string"'] - commands = ['show version', 'show version'] - set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) - self.execute_module(failed=True) diff --git a/test/units/modules/network/nxos/test_nxos_config.py b/test/units/modules/network/nxos/test_nxos_config.py deleted file mode 100644 index 37d1f164e8..0000000000 --- a/test/units/modules/network/nxos/test_nxos_config.py +++ /dev/null @@ -1,224 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch, MagicMock -from ansible.modules.network.nxos import nxos_config -from ansible.plugins.cliconf.nxos import Cliconf -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosConfigModule(TestNxosModule): - - module = nxos_config - - def setUp(self): - super(TestNxosConfigModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_config.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_config.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_save_config = patch('ansible.modules.network.nxos.nxos_config.save_config') - self.save_config = self.mock_save_config.start() - - self.mock_get_connection = patch('ansible.modules.network.nxos.nxos_config.get_connection') - self.get_connection = self.mock_get_connection.start() - - self.conn = self.get_connection() - self.conn.edit_config = MagicMock() - - self.mock_run_commands = patch('ansible.modules.network.nxos.nxos_config.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.cliconf_obj = Cliconf(MagicMock()) - self.running_config = load_fixture('nxos_config', 'config.cfg') - - def tearDown(self): - super(TestNxosConfigModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_run_commands.stop() - self.mock_get_connection.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('nxos_config', 'config.cfg') - self.load_config.return_value = None - - def test_nxos_config_no_change(self): - lines = ['hostname localhost'] - args = dict(lines=lines) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config)) - set_module_args(args) - result = self.execute_module() - - def test_nxos_config_src(self): - src = load_fixture('nxos_config', 'candidate.cfg') - args = dict(src=src) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, self.running_config)) - set_module_args(args) - - result = self.execute_module(changed=True) - config = ['hostname switch01', 'interface Ethernet1', - 'description test interface', 'no shutdown', 'ip routing'] - - self.assertEqual(sorted(config), sorted(result['commands']), result['commands']) - - def test_nxos_config_replace_src(self): - set_module_args(dict(replace_src='bootflash:config', replace='config')) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(self.running_config, self.running_config, diff_replace='config')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['config replace bootflash:config']) - - def test_nxos_config_lines(self): - lines = ['hostname switch01', 'ip domain-name eng.ansible.com'] - args = dict(lines=lines) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config)) - set_module_args(args) - - result = self.execute_module(changed=True) - config = ['hostname switch01'] - - self.assertEqual(sorted(config), sorted(result['commands']), result['commands']) - - def test_nxos_config_before(self): - lines = ['hostname switch01', 'ip domain-name eng.ansible.com'] - args = dict(lines=lines, - before=['before command']) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config)) - set_module_args(args) - - result = self.execute_module(changed=True) - config = ['before command', 'hostname switch01'] - - self.assertEqual(sorted(config), sorted(result['commands']), result['commands']) - self.assertEqual('before command', result['commands'][0]) - - def test_nxos_config_after(self): - lines = ['hostname switch01', 'ip domain-name eng.ansible.com'] - args = dict(lines=lines, - after=['after command']) - - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config)) - set_module_args(args) - - result = self.execute_module(changed=True) - config = ['after command', 'hostname switch01'] - - self.assertEqual(sorted(config), sorted(result['commands']), result['commands']) - self.assertEqual('after command', result['commands'][-1]) - - def test_nxos_config_parents(self): - lines = ['ip address 1.2.3.4/5', 'no shutdown'] - parents = ['interface Ethernet10'] - args = dict(lines=lines, parents=parents) - self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(parents + lines), self.running_config, path=parents)) - set_module_args(args) - - result = self.execute_module(changed=True) - config = ['interface Ethernet10', 'ip address 1.2.3.4/5', 'no shutdown'] - - self.assertEqual(config, result['commands'], result['commands']) - - def test_nxos_config_src_and_lines_fails(self): - args = dict(src='foo', lines='foo') - set_module_args(args) - result = self.execute_module(failed=True) - - def test_nxos_config_src_and_parents_fails(self): - args = dict(src='foo', parents='foo') - set_module_args(args) - result = self.execute_module(failed=True) - - def test_nxos_config_match_exact_requires_lines(self): - args = dict(match='exact') - set_module_args(args) - result = self.execute_module(failed=True) - - def test_nxos_config_match_strict_requires_lines(self): - args = dict(match='strict') - set_module_args(args) - result = self.execute_module(failed=True) - - def test_nxos_config_replace_block_requires_lines(self): - args = dict(replace='block') - set_module_args(args) - result = self.execute_module(failed=True) - - def test_nxos_config_replace_config_requires_src(self): - args = dict(replace='config') - set_module_args(args) - result = self.execute_module(failed=True) - - def test_nxos_config_backup_returns__backup__(self): - args = dict(backup=True) - set_module_args(args) - result = self.execute_module() - self.assertIn('__backup__', result) - - def test_nxos_config_save_always(self): - args = dict(save_when='always') - set_module_args(args) - self.execute_module() - self.assertEqual(self.save_config.call_count, 1) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.load_config.call_count, 0) - - def test_nxos_config_save_changed_true(self): - args = dict(save_when='changed', lines=['hostname foo', 'interface GigabitEthernet0/0', 'no ip address']) - set_module_args(args) - self.execute_module(changed=True) - self.assertEqual(self.save_config.call_count, 1) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.load_config.call_count, 1) - - def test_nxos_config_save_changed_false(self): - args = dict(save_when='changed') - set_module_args(args) - self.execute_module() - self.assertEqual(self.save_config.call_count, 0) - self.assertEqual(self.get_config.call_count, 0) - self.assertEqual(self.load_config.call_count, 0) - - def test_nxos_config_defaults_false(self): - set_module_args(dict(lines=['hostname localhost'], defaults=False)) - result = self.execute_module(changed=True) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.get_config.call_args[1], dict(flags=[])) - - def test_nxos_config_defaults_true(self): - set_module_args(dict(lines=['hostname localhost'], defaults=True)) - result = self.execute_module(changed=True) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.get_config.call_args[1], dict(flags=['all'])) - - def test_nxos_config_defaults_false_backup_true(self): - set_module_args(dict(lines=['hostname localhost'], defaults=False, backup=True)) - result = self.execute_module(changed=True) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.get_config.call_args[1], dict(flags=[])) - - def test_nxos_config_defaults_true_backup_true(self): - set_module_args(dict(lines=['hostname localhost'], defaults=True, backup=True)) - result = self.execute_module(changed=True) - self.assertEqual(self.get_config.call_count, 1) - self.assertEqual(self.get_config.call_args[1], dict(flags=['all'])) diff --git a/test/units/modules/network/nxos/test_nxos_evpn_global.py b/test/units/modules/network/nxos/test_nxos_evpn_global.py deleted file mode 100644 index f83e242d20..0000000000 --- a/test/units/modules/network/nxos/test_nxos_evpn_global.py +++ /dev/null @@ -1,69 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_evpn_global -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosEvpnGlobalModule(TestNxosModule): - - module = nxos_evpn_global - - def setUp(self): - super(TestNxosEvpnGlobalModule, self).setUp() - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_evpn_global.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_evpn_global.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_capabilities = patch('ansible.modules.network.nxos.nxos_evpn_global.get_capabilities') - self.get_capabilities = self.mock_get_capabilities.start() - self.get_capabilities.return_value = {'network_api': 'cliconf'} - - def tearDown(self): - super(TestNxosEvpnGlobalModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_get_capabilities.stop() - - def load_fixtures(self, commands=None, device=''): - self.load_config.return_value = None - - def start_configured(self, *args, **kwargs): - self.get_config.return_value = load_fixture('nxos_evpn_global', 'configured.cfg') - return self.execute_module(*args, **kwargs) - - def start_unconfigured(self, *args, **kwargs): - self.get_config.return_value = load_fixture('nxos_evpn_global', 'unconfigured.cfg') - return self.execute_module(*args, **kwargs) - - def test_nxos_evpn_global_enable(self): - set_module_args(dict(nv_overlay_evpn=True)) - commands = ['nv overlay evpn'] - self.start_unconfigured(changed=True, commands=commands) - - def test_nxos_evpn_global_disable(self): - set_module_args(dict(nv_overlay_evpn=False)) - commands = ['no nv overlay evpn'] - self.start_configured(changed=True, commands=commands) diff --git a/test/units/modules/network/nxos/test_nxos_evpn_vni.py b/test/units/modules/network/nxos/test_nxos_evpn_vni.py deleted file mode 100644 index 64e55e4410..0000000000 --- a/test/units/modules/network/nxos/test_nxos_evpn_vni.py +++ /dev/null @@ -1,67 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_evpn_vni -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosEvpnVniModule(TestNxosModule): - - module = nxos_evpn_vni - - def setUp(self): - super(TestNxosEvpnVniModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_evpn_vni.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_evpn_vni.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosEvpnVniModule, self).tearDown() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('', 'nxos_evpn_vni_config.cfg') - self.load_config.return_value = None - - def test_nxos_evpn_vni_present(self): - set_module_args(dict(vni='6000', - route_target_import='5000:10', - state='present')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['evpn', - 'vni 6000 l2', - 'route-target import 5000:10', - 'no route-target import auto']) - - def test_nxos_evpn_vni_absent_not_existing(self): - set_module_args(dict(vni='12000', state='absent')) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_evpn_vni_absent_existing(self): - set_module_args(dict(vni='6000', state='absent')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['evpn', 'no vni 6000 l2']) diff --git a/test/units/modules/network/nxos/test_nxos_feature.py b/test/units/modules/network/nxos/test_nxos_feature.py deleted file mode 100644 index d0ca483410..0000000000 --- a/test/units/modules/network/nxos/test_nxos_feature.py +++ /dev/null @@ -1,77 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_feature -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosFeatureModule(TestNxosModule): - - module = nxos_feature - - def setUp(self): - super(TestNxosFeatureModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.nxos.nxos_feature.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_feature.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_capabilities = patch('ansible.modules.network.nxos.nxos_feature.get_capabilities') - self.get_capabilities = self.mock_get_capabilities.start() - self.get_capabilities.return_value = {'network_api': 'cliconf'} - - def tearDown(self): - super(TestNxosFeatureModule, self).tearDown() - self.mock_run_commands.stop() - self.mock_load_config.stop() - self.mock_get_capabilities.stop() - - def load_fixtures(self, commands=None, device=''): - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item['command']) - command = obj['command'] - except ValueError: - command = item['command'] - filename = '%s.txt' % str(command).replace(' ', '_') - output.append(load_fixture('nxos_feature', filename)) - return output - - self.run_commands.side_effect = load_from_file - self.load_config.return_value = None - - def test_nxos_feature_enable(self): - set_module_args(dict(feature='nve', state='enabled')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', 'feature nv overlay']) - - def test_nxos_feature_disable(self): - set_module_args(dict(feature='ospf', state='disabled')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['terminal dont-ask', 'no feature ospf']) diff --git a/test/units/modules/network/nxos/test_nxos_hsrp.py b/test/units/modules/network/nxos/test_nxos_hsrp.py deleted file mode 100644 index dc459ab9cd..0000000000 --- a/test/units/modules/network/nxos/test_nxos_hsrp.py +++ /dev/null @@ -1,66 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_hsrp -from .nxos_module import TestNxosModule, set_module_args - - -class TestNxosHsrpModule(TestNxosModule): - - module = nxos_hsrp - - def setUp(self): - super(TestNxosHsrpModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.nxos.nxos_hsrp.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_hsrp.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_capabilities = patch('ansible.modules.network.nxos.nxos_hsrp.get_capabilities') - self.get_capabilities = self.mock_get_capabilities.start() - self.get_capabilities.return_value = {'network_api': 'cliconf'} - - def tearDown(self): - super(TestNxosHsrpModule, self).tearDown() - self.mock_run_commands.stop() - self.mock_load_config.stop() - self.mock_get_capabilities.stop() - - def load_fixtures(self, commands=None, device=''): - self.load_config.return_value = None - - def test_nxos_hsrp(self): - set_module_args(dict(group='10', - vip='192.0.2.2/8', - priority='150', - interface='Ethernet1/2', - preempt='enabled', - )) - result = self.execute_module(changed=True) - self.assertEqual(sorted(result['commands']), sorted(['config t', - 'interface ethernet1/2', - 'hsrp version 1', - 'hsrp 10', - 'priority 150', - 'ip 192.0.2.2/8', - 'preempt'])) diff --git a/test/units/modules/network/nxos/test_nxos_hsrp_interfaces.py b/test/units/modules/network/nxos/test_nxos_hsrp_interfaces.py deleted file mode 100644 index 91225520f2..0000000000 --- a/test/units/modules/network/nxos/test_nxos_hsrp_interfaces.py +++ /dev/null @@ -1,293 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from textwrap import dedent -from units.compat.mock import patch -from units.modules.utils import AnsibleFailJson -from ansible.modules.network.nxos import nxos_hsrp_interfaces -from ansible.module_utils.network.nxos.config.hsrp_interfaces.hsrp_interfaces import Hsrp_interfaces -from .nxos_module import TestNxosModule, load_fixture, set_module_args - -ignore_provider_arg = True - - -class TestNxosHsrpInterfacesModule(TestNxosModule): - - module = nxos_hsrp_interfaces - - def setUp(self): - super(TestNxosHsrpInterfacesModule, self).setUp() - - self.mock_FACT_LEGACY_SUBSETS = patch('ansible.module_utils.network.nxos.facts.facts.FACT_LEGACY_SUBSETS') - self.FACT_LEGACY_SUBSETS = self.mock_FACT_LEGACY_SUBSETS.start() - - self.mock_get_resource_connection_config = patch('ansible.module_utils.network.common.cfg.base.get_resource_connection') - self.get_resource_connection_config = self.mock_get_resource_connection_config.start() - - self.mock_get_resource_connection_facts = patch('ansible.module_utils.network.common.facts.facts.get_resource_connection') - self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start() - - self.mock_edit_config = patch('ansible.module_utils.network.nxos.config.hsrp_interfaces.hsrp_interfaces.Hsrp_interfaces.edit_config') - self.edit_config = self.mock_edit_config.start() - - def tearDown(self): - super(TestNxosHsrpInterfacesModule, self).tearDown() - self.mock_FACT_LEGACY_SUBSETS.stop() - self.mock_get_resource_connection_config.stop() - self.mock_get_resource_connection_facts.stop() - self.mock_edit_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.mock_FACT_LEGACY_SUBSETS.return_value = dict() - self.get_resource_connection_config.return_value = None - self.edit_config.return_value = None - - # --------------------------- - # Hsrp_interfaces Test Cases - # --------------------------- - - # 'state' logic behaviors - # - # - 'merged' : Update existing device state with any differences in the play. - # - 'deleted' : Reset existing device state to default values. Ignores any - # play attrs other than 'name'. Scope is limited to interfaces - # in the play. - # - 'overridden': The play is the source of truth. Similar to replaced but the - # scope includes all interfaces; ie. it will also reset state - # on interfaces not found in the play. - # - 'replaced' : Scope is limited to the interfaces in the play. - - SHOW_CMD = 'show running-config | section ^interface' - - def test_1(self): - # Setup: No HSRP BFD configs shown on device interfaces - existing = dedent('''\ - interface Ethernet1/1 - interface Ethernet1/2 - interface Ethernet1/3 - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict( - name='Ethernet1/1', - bfd='enable'), - dict( - name='Ethernet1/2', - bfd='disable'), - ]) - # Expected result commands for each 'state' - merged = ['interface Ethernet1/1', 'hsrp bfd'] - deleted = [] - overridden = merged - replaced = merged - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False, commands=deleted) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - def test_2(self): - # Change existing HSRP configs - existing = dedent('''\ - interface Ethernet1/1 - hsrp bfd - interface Ethernet1/2 - hsrp bfd - interface Ethernet1/3 - hsrp bfd - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict( - name='Ethernet1/1', - bfd='disable'), - dict(name='Ethernet1/2'), - # Eth1/3 not present! Thus overridden should set Eth1/3 to defaults; - # replaced should ignore Eth1/3. - ]) - # Expected result commands for each 'state' - merged = ['interface Ethernet1/1', 'no hsrp bfd'] - deleted = ['interface Ethernet1/1', 'no hsrp bfd', - 'interface Ethernet1/2', 'no hsrp bfd'] - overridden = ['interface Ethernet1/3', 'no hsrp bfd', - 'interface Ethernet1/1', 'no hsrp bfd', - 'interface Ethernet1/2', 'no hsrp bfd'] - replaced = ['interface Ethernet1/1', 'no hsrp bfd', - 'interface Ethernet1/2', 'no hsrp bfd'] - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - def test_3(self): - # Device has hsrp bfd configs, playbook has no values - existing = dedent('''\ - interface Ethernet1/1 - hsrp bfd - interface Ethernet1/2 - hsrp bfd - interface Ethernet1/3 - hsrp bfd - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict(name='Ethernet1/1'), - dict(name='Ethernet1/2'), - ]) - # Expected result commands for each 'state' - merged = [] - deleted = ['interface Ethernet1/1', 'no hsrp bfd', - 'interface Ethernet1/2', 'no hsrp bfd'] - overridden = ['interface Ethernet1/3', 'no hsrp bfd', - 'interface Ethernet1/1', 'no hsrp bfd', - 'interface Ethernet1/2', 'no hsrp bfd'] - replaced = ['interface Ethernet1/1', 'no hsrp bfd', - 'interface Ethernet1/2', 'no hsrp bfd'] - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - def test_4(self): - # Test with interface that doesn't exist yet - existing = dedent('''\ - interface Ethernet1/1 - hsrp bfd - interface Ethernet1/2 - hsrp bfd - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict( - name='Ethernet1/1.42', - bfd='enable'), - ]) - # Expected result commands for each 'state' - merged = ['interface Ethernet1/1.42', 'hsrp bfd'] - deleted = [] - overridden = ['interface Ethernet1/1.42', 'hsrp bfd', - 'interface Ethernet1/1', 'no hsrp bfd', - 'interface Ethernet1/2', 'no hsrp bfd'] - replaced = ['interface Ethernet1/1.42', 'hsrp bfd'] - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False, commands=deleted) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - def test_5(self): - # idempotence - existing = dedent('''\ - interface Ethernet1/1 - hsrp bfd - interface Ethernet1/2 - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict( - name='Ethernet1/1', - bfd='enable'), - dict( - name='Ethernet1/2', - bfd='disable'), - ]) - # Expected result commands for each 'state' - merged = [] - deleted = ['interface Ethernet1/1', 'no hsrp bfd'] - overridden = [] - replaced = [] - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False, commands=overridden) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False, commands=replaced) - - -def build_args(data, type, state=None, check_mode=None): - if state is None: - state = 'merged' - if check_mode is None: - check_mode = False - args = { - 'state': state, - '_ansible_check_mode': check_mode, - 'config': { - type: data - } - } - return args diff --git a/test/units/modules/network/nxos/test_nxos_interface.py b/test/units/modules/network/nxos/test_nxos_interface.py deleted file mode 100644 index f9a2fbc870..0000000000 --- a/test/units/modules/network/nxos/test_nxos_interface.py +++ /dev/null @@ -1,91 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import _nxos_interface -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosInterfaceModule(TestNxosModule): - - module = _nxos_interface - - def setUp(self): - super(TestNxosInterfaceModule, self).setUp() - self.mock_run_commands = patch('ansible.modules.network.nxos._nxos_interface.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_load_config = patch('ansible.modules.network.nxos._nxos_interface.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestNxosInterfaceModule, self).tearDown() - self.mock_run_commands.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, device=''): - module_name = self.module.__name__.rsplit('.', 1)[1] - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for command in commands: - if type(command) == dict: - command = command['command'] - filename = str(command).split(' | ')[0].replace(' ', '_').replace('/', '_') - print(filename) - output.append(load_fixture(module_name, filename)) - return output - - self.load_config.return_value = None - self.run_commands.side_effect = load_from_file - - def test_nxos_interface_up(self): - set_module_args(dict(interface='loopback0')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface loopback0', 'no shutdown']) - - def test_nxos_interface_down(self): - set_module_args(dict(interface='loopback0', admin_state='down')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface loopback0', 'shutdown']) - - def test_nxos_interface_delete(self): - set_module_args(dict(interface='loopback0', state='absent')) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_interface_type(self): - set_module_args(dict(interface_type='loopback', state='absent')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['no interface loopback0']) - - def test_nxos_interface_mtu(self): - set_module_args(dict(interface='Ethernet2/1', mode='layer2', mtu='1800')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface Ethernet2/1', 'switchport', 'mtu 1800', - 'interface Ethernet2/1', 'no shutdown']) - - def test_nxos_interface_speed_idempotence(self): - set_module_args(dict(interface='Ethernet2/1', speed='1000')) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) diff --git a/test/units/modules/network/nxos/test_nxos_interface_ospf.py b/test/units/modules/network/nxos/test_nxos_interface_ospf.py deleted file mode 100644 index d4156b43dd..0000000000 --- a/test/units/modules/network/nxos/test_nxos_interface_ospf.py +++ /dev/null @@ -1,141 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_interface_ospf -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosInterfaceOspfModule(TestNxosModule): - - module = nxos_interface_ospf - - def setUp(self): - super(TestNxosInterfaceOspfModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_interface_ospf.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_interface_ospf.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestNxosInterfaceOspfModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, device=''): - module_name = self.module.__name__.rsplit('.', 1)[1] - self.get_config.return_value = load_fixture(module_name, 'config.cfg') - self.load_config.return_value = None - - def test_nxos_interface_ospf(self): - set_module_args(dict(interface='ethernet1/32', ospf=1, area=1)) - self.execute_module(changed=True, commands=['interface Ethernet1/32', 'ip router ospf 1 area 0.0.0.1']) - - def test_bfd_1(self): - # default -> enable - set_module_args(dict(interface='ethernet1/33', ospf=1, area=1, bfd='enable')) - self.execute_module(changed=True, commands=['interface Ethernet1/33', 'ip router ospf 1 area 0.0.0.1', 'ip ospf bfd']) - - # default -> disable - set_module_args(dict(interface='ethernet1/33', ospf=1, area=1, bfd='disable')) - self.execute_module(changed=True, commands=['interface Ethernet1/33', 'ip router ospf 1 area 0.0.0.1', 'ip ospf bfd disable']) - - def test_bfd_2(self): - # default -> default - set_module_args(dict(interface='ethernet1/33.101', ospf=1, area=1, bfd='default')) - self.execute_module(changed=False) - - # enable -> default - set_module_args(dict(interface='ethernet1/36', ospf=1, area=1, bfd='default')) - self.execute_module(changed=True, commands=['interface Ethernet1/36', 'no ip ospf bfd']) - - # disable -> default - set_module_args(dict(interface='ethernet1/37', ospf=1, area=1, bfd='default')) - self.execute_module(changed=True, commands=['interface Ethernet1/37', 'no ip ospf bfd']) - - def test_bfd_3(self): - # enable -> idempotence - set_module_args(dict(interface='ethernet1/36', ospf=1, area=1, bfd='enable')) - self.execute_module(changed=False) - - # disable -> idempotence - set_module_args(dict(interface='ethernet1/37', ospf=1, area=1, bfd='disable')) - self.execute_module(changed=False) - - def test_bfd_4(self): - # None -> absent - set_module_args(dict(interface='ethernet1/33.101', ospf=1, area=1, state='absent')) - self.execute_module(changed=True, commands=['interface Ethernet1/33.101', 'no ip router ospf 1 area 0.0.0.1']) - - # enable -> absent - set_module_args(dict(interface='ethernet1/36', ospf=1, area=1, bfd='enable', state='absent')) - self.execute_module(changed=True, commands=['interface Ethernet1/36', 'no ip router ospf 1 area 0.0.0.1', 'no ip ospf bfd']) - - # disable -> absent - set_module_args(dict(interface='ethernet1/37', ospf=1, area=1, bfd='disable', state='absent')) - self.execute_module(changed=True, commands=['interface Ethernet1/37', 'no ip router ospf 1 area 0.0.0.1', 'no ip ospf bfd']) - - def test_absent_1(self): - # area only -> absent - set_module_args(dict(interface='ethernet1/33.101', ospf=1, area=1, state='absent')) - self.execute_module(changed=True, commands=['interface Ethernet1/33.101', 'no ip router ospf 1 area 0.0.0.1']) - - # None -> absent - set_module_args(dict(interface='ethernet1/33', ospf=1, area=1, state='absent')) - self.execute_module(changed=False) - - def test_loopback_interface_failed(self): - set_module_args(dict(interface='loopback0', ospf=1, area=0, passive_interface=True)) - self.execute_module(failed=True, changed=False) - set_module_args(dict(interface='loopback0', ospf=1, area=0, network='broadcast')) - self.execute_module(failed=True, changed=False) - - def test_nxos_interface_ospf_passive(self): - # default -> True - set_module_args(dict(interface='ethernet1/33', ospf=1, area=1, passive_interface=True)) - self.execute_module(changed=True, commands=['interface Ethernet1/33', - 'ip router ospf 1 area 0.0.0.1', - 'ip ospf passive-interface']) - # default -> False - set_module_args(dict(interface='ethernet1/33', ospf=1, area=1, passive_interface=False)) - self.execute_module(changed=True, commands=['interface Ethernet1/33', - 'ip router ospf 1 area 0.0.0.1', - 'no ip ospf passive-interface']) - # True -> False - set_module_args(dict(interface='ethernet1/34', ospf=1, area=1, passive_interface=False)) - self.execute_module(changed=True, commands=['interface Ethernet1/34', - 'no ip ospf passive-interface']) - # True -> default (absent) - set_module_args(dict(interface='ethernet1/34', ospf=1, area=1, state='absent')) - self.execute_module(changed=True, commands=['interface Ethernet1/34', - 'no ip router ospf 1 area 0.0.0.1', - 'default ip ospf passive-interface']) - # False -> True - set_module_args(dict(interface='ethernet1/35', ospf=1, area=1, passive_interface=True)) - self.execute_module(changed=True, commands=['interface Ethernet1/35', - 'ip ospf passive-interface']) - # False -> default (absent) - set_module_args(dict(interface='ethernet1/35', ospf=1, area=1, state='absent')) - self.execute_module(changed=True, commands=['interface Ethernet1/35', - 'no ip router ospf 1 area 0.0.0.1', - 'default ip ospf passive-interface']) diff --git a/test/units/modules/network/nxos/test_nxos_interfaces.py b/test/units/modules/network/nxos/test_nxos_interfaces.py deleted file mode 100644 index 26467abfd6..0000000000 --- a/test/units/modules/network/nxos/test_nxos_interfaces.py +++ /dev/null @@ -1,461 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from textwrap import dedent -from units.compat.mock import patch -from units.modules.utils import AnsibleFailJson -from ansible.modules.network.nxos import nxos_interfaces -from ansible.module_utils.network.nxos.config.interfaces.interfaces import Interfaces -from ansible.module_utils.network.nxos.facts.interfaces.interfaces import InterfacesFacts -from .nxos_module import TestNxosModule, load_fixture, set_module_args - -ignore_provider_arg = True - - -class TestNxosInterfacesModule(TestNxosModule): - - module = nxos_interfaces - - def setUp(self): - super(TestNxosInterfacesModule, self).setUp() - - self.mock_FACT_LEGACY_SUBSETS = patch('ansible.module_utils.network.nxos.facts.facts.FACT_LEGACY_SUBSETS') - self.FACT_LEGACY_SUBSETS = self.mock_FACT_LEGACY_SUBSETS.start() - - self.mock_get_resource_connection_config = patch('ansible.module_utils.network.common.cfg.base.get_resource_connection') - self.get_resource_connection_config = self.mock_get_resource_connection_config.start() - - self.mock_get_resource_connection_facts = patch('ansible.module_utils.network.common.facts.facts.get_resource_connection') - self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start() - - self.mock_edit_config = patch('ansible.module_utils.network.nxos.config.interfaces.interfaces.Interfaces.edit_config') - self.edit_config = self.mock_edit_config.start() - self.mock__device_info = patch('ansible.module_utils.network.nxos.facts.interfaces.interfaces.InterfacesFacts._device_info') - self._device_info = self.mock__device_info.start() - - def tearDown(self): - super(TestNxosInterfacesModule, self).tearDown() - self.mock_FACT_LEGACY_SUBSETS.stop() - self.mock_get_resource_connection_config.stop() - self.mock_get_resource_connection_facts.stop() - self.mock_edit_config.stop() - self.mock__device_info.stop() - - def load_fixtures(self, commands=None, device=''): - self.mock_FACT_LEGACY_SUBSETS.return_value = dict() - self.get_resource_connection_config.return_value = None - self.edit_config.return_value = None - if device == 'legacy': - # call execute_module() with device='legacy' to use this codepath - self._device_info.return_value = {'network_os_platform': 'N3K-Cxxx'} - else: - self._device_info.return_value = {'network_os_platform': 'N9K-Cxxx'} - - SHOW_RUN_SYSDEF = "show running-config all | incl 'system default switchport'" - SHOW_RUN_INTF = 'show running-config | section ^interface' - - def test_1(self): - # Overall general test for each state: merged, deleted, overridden, replaced - sysdefs = dedent('''\ - ! - ! Interfaces default to L3 !! - ! - no system default switchport - no system default switchport shutdown - ''') - intf = dedent('''\ - interface mgmt0 - description do not manage mgmt0! - interface Ethernet1/1 - description foo - interface Ethernet1/2 - description bar - speed 1000 - duplex full - mtu 4096 - ip forward - fabric forwarding mode anycast-gateway - interface Ethernet1/3 - interface Ethernet1/4 - interface Ethernet1/5 - interface Ethernet1/6 - no shutdown - interface loopback0 - description test-loopback - ''') - self.get_resource_connection_facts.return_value = { - self.SHOW_RUN_SYSDEF: sysdefs, - self.SHOW_RUN_INTF: intf - } - playbook = dict(config=[ - dict(name='Ethernet1/1', description='ansible', mode='layer3'), - dict(name='Ethernet1/2', speed=10000, duplex='auto', mtu=1500, - ip_forward=False, fabric_forwarding_anycast_gateway=False), - dict(name='Ethernet1/3', description='ansible', mode='layer3'), - dict(name='Ethernet1/3.101', description='test-sub-intf', enabled=False), - dict(name='Ethernet1/4', mode='layer2'), - dict(name='Ethernet1/5'), - dict(name='loopback1', description='test-loopback') - ]) - merged = [ - # Update existing device states with any differences in the playbook. - 'interface Ethernet1/1', 'description ansible', - 'interface Ethernet1/2', 'speed 10000', 'duplex auto', 'mtu 1500', - 'no ip forward', 'no fabric forwarding mode anycast-gateway', - 'interface Ethernet1/3', 'description ansible', - 'interface Ethernet1/3.101', 'description test-sub-intf', - 'interface Ethernet1/4', 'switchport', - 'interface loopback1', 'description test-loopback' - ] - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - deleted = [ - # Reset existing device state to default values. Scope is limited to - # objects in the play. Ignores any play attrs other than 'name'. - 'interface Ethernet1/1', 'no description', - 'interface Ethernet1/2', 'no description', 'no speed', 'no duplex', 'no mtu', - 'no ip forward', 'no fabric forwarding mode anycast-gateway', - ] - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - replaced = [ - # Scope is limited to objects in the play. The play is the source of - # truth for the objects that are explicitly listed. - 'interface Ethernet1/1', 'description ansible', - 'interface Ethernet1/2', 'no description', - 'no ip forward', 'no fabric forwarding mode anycast-gateway', - 'speed 10000', 'duplex auto', 'mtu 1500', - 'interface Ethernet1/3', 'description ansible', - 'interface Ethernet1/3.101', 'description test-sub-intf', - 'interface Ethernet1/4', 'switchport', - 'interface loopback1', 'description test-loopback' - ] - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - overridden = [ - # The play is the source of truth. Similar to replaced but the scope - # includes all objects on the device; i.e. it will also reset state - # on objects not found in the play. - 'interface Ethernet1/1', 'description ansible', - 'interface Ethernet1/2', 'no description', - 'no ip forward', 'no fabric forwarding mode anycast-gateway', - 'speed 10000', 'duplex auto', 'mtu 1500', - 'interface Ethernet1/6', 'shutdown', - 'interface loopback0', 'no description', - 'interface Ethernet1/3', 'description ansible', - 'interface Ethernet1/4', 'switchport', - 'interface Ethernet1/3.101', 'description test-sub-intf', - 'interface loopback1', 'description test-loopback' - ] - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - def test_2(self): - # 'enabled'/shutdown behaviors are tricky: - # - different default states for different interface types for different - # platforms, based on 'system default switchport' settings - # - virtual interfaces may not exist yet - # - idempotence for interfaces with all default states - sysdefs = dedent('''\ - ! - ! Interfaces default to L3 !! - ! - no system default switchport - no system default switchport shutdown - ''') - intf = dedent('''\ - interface mgmt0 - interface Ethernet1/1 - interface Ethernet1/2 - switchport - shutdown - interface Ethernet1/3 - switchport - interface loopback1 - interface loopback2 - shutdown - interface loopback3 - interface loopback8 - interface loopback9 - shutdown - interface port-channel2 - interface port-channel3 - shutdown - ''') - self.get_resource_connection_facts.return_value = { - self.SHOW_RUN_SYSDEF: sysdefs, - self.SHOW_RUN_INTF: intf - } - playbook = dict(config=[ - # Set non-default states on existing objs - dict(name='Ethernet1/1', mode='layer3', enabled=True), - dict(name='loopback1', enabled=False), - # Set default states on existing objs - dict(name='Ethernet1/2', enabled=True), - dict(name='loopback2', enabled=True), - # Set explicit default state on existing objs (no chg) - dict(name='Ethernet1/3', enabled=True), - dict(name='loopback3', enabled=True), - dict(name='port-channel3', enabled=True), - # Set default state on non-existent objs; no state changes but need to create intf - dict(name='loopback4', enabled=True), - dict(name='port-channel4', enabled=True), - dict(name='Ethernet1/4.101') - ]) - # Testing with newer code version - merged = [ - 'interface Ethernet1/1', 'no shutdown', - 'interface loopback1', 'shutdown', - 'interface Ethernet1/2', 'no shutdown', - 'interface loopback2', 'no shutdown', - 'interface port-channel3', 'no shutdown', - 'interface loopback4', - 'interface port-channel4', - 'interface Ethernet1/4.101' - ] - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - deleted = [ - # e1/2 becomes L3 so enable default changes to false - 'interface Ethernet1/2', 'no switchport', - 'interface loopback2', 'no shutdown', - 'interface Ethernet1/3', 'no switchport', - 'interface port-channel3', 'no shutdown' - ] - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - replaced = [ - 'interface Ethernet1/1', 'no shutdown', - 'interface loopback1', 'shutdown', - 'interface Ethernet1/2', 'no switchport', 'no shutdown', - 'interface loopback2', 'no shutdown', - 'interface Ethernet1/3', 'no switchport', 'no shutdown', - 'interface port-channel3', 'no shutdown', - 'interface loopback4', - 'interface port-channel4', - 'interface Ethernet1/4.101' - ] - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - overridden = [ - 'interface Ethernet1/2', 'no switchport', 'no shutdown', - 'interface Ethernet1/3', 'no switchport', 'no shutdown', - 'interface loopback2', 'no shutdown', - 'interface loopback9', 'no shutdown', - 'interface port-channel3', 'no shutdown', - 'interface Ethernet1/1', 'no shutdown', - 'interface loopback1', 'shutdown', - 'interface loopback4', - 'interface port-channel4', - 'interface Ethernet1/4.101' - ] - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - def test_3(self): - # Testing 'enabled' with different 'system default' settings. - # This is the same as test_2 with some minor changes. - sysdefs = dedent('''\ - ! - ! Interfaces default to L2 !! - ! - system default switchport - system default switchport shutdown - ''') - intf = dedent('''\ - interface mgmt0 - interface Ethernet1/1 - interface Ethernet1/2 - no switchport - no shutdown - interface Ethernet1/3 - no switchport - interface loopback1 - interface loopback2 - shutdown - interface loopback3 - interface loopback8 - interface loopback9 - shutdown - interface port-channel2 - interface port-channel3 - shutdown - ''') - self.get_resource_connection_facts.return_value = { - self.SHOW_RUN_SYSDEF: sysdefs, - self.SHOW_RUN_INTF: intf - } - playbook = dict(config=[ - # Set non-default states on existing objs - dict(name='Ethernet1/1', mode='layer3', enabled=True), - dict(name='loopback1', enabled=False), - # Set default states on existing objs - dict(name='Ethernet1/2', enabled=False), - dict(name='loopback2', enabled=True), - # Set explicit default state on existing objs (no chg) - dict(name='Ethernet1/3', enabled=False), - dict(name='loopback3', enabled=True), - dict(name='port-channel3', enabled=True), - # Set default state on non-existent objs; no state changes but need to create intf - dict(name='loopback4', enabled=True), - dict(name='port-channel4', enabled=True), - dict(name='Ethernet1/4.101') - ]) - merged = [ - 'interface Ethernet1/1', 'no switchport', 'no shutdown', - 'interface loopback1', 'shutdown', - 'interface Ethernet1/2', 'shutdown', - 'interface loopback2', 'no shutdown', - 'interface port-channel3', 'no shutdown', - 'interface loopback4', - 'interface port-channel4', - 'interface Ethernet1/4.101' - ] - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - # Test with an older image version which has different defaults - merged_legacy = [ - 'interface Ethernet1/1', 'no switchport', - 'interface loopback1', 'shutdown', - 'interface Ethernet1/2', 'shutdown', - 'interface loopback2', 'no shutdown', - 'interface Ethernet1/3', 'shutdown', - 'interface port-channel3', 'no shutdown', - 'interface loopback4', - 'interface port-channel4', - 'interface Ethernet1/4.101' - ] - self.execute_module(changed=True, commands=merged_legacy, device='legacy') - - deleted = [ - 'interface Ethernet1/2', 'switchport', 'shutdown', - 'interface loopback2', 'no shutdown', - 'interface Ethernet1/3', 'switchport', - 'interface port-channel3', 'no shutdown' - ] - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - replaced = [ - 'interface Ethernet1/1', 'no switchport', 'no shutdown', - 'interface loopback1', 'shutdown', - 'interface Ethernet1/2', 'switchport', 'shutdown', - 'interface loopback2', 'no shutdown', - 'interface Ethernet1/3', 'switchport', - 'interface port-channel3', 'no shutdown', - 'interface loopback4', - 'interface port-channel4', - 'interface Ethernet1/4.101' - ] - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - overridden = [ - 'interface Ethernet1/2', 'switchport', 'shutdown', - 'interface Ethernet1/3', 'switchport', - 'interface loopback2', 'no shutdown', - 'interface loopback9', 'no shutdown', - 'interface port-channel3', 'no shutdown', - 'interface Ethernet1/1', 'no switchport', 'no shutdown', - 'interface loopback1', 'shutdown', - 'interface loopback4', - 'interface port-channel4', - 'interface Ethernet1/4.101' - ] - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - def test_4(self): - # Basic idempotence test - sysdefs = dedent('''\ - ! - ! Interfaces default to L3 !! - ! - no system default switchport - no system default switchport shutdown - ''') - intf = dedent('''\ - interface Ethernet1/1 - interface Ethernet1/2 - switchport - speed 1000 - shutdown - ''') - self.get_resource_connection_facts.return_value = { - self.SHOW_RUN_SYSDEF: sysdefs, - self.SHOW_RUN_INTF: intf - } - playbook = dict(config=[ - dict(name='Ethernet1/1', mode='layer3'), - dict(name='Ethernet1/2', mode='layer2', enabled=False) - ]) - merged = [] - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False, commands=merged) - - def test_5(self): - # 'state: deleted' without 'config'; clean all objects. - sysdefs = dedent('''\ - ! - ! Interfaces default to L3 !! - ! - no system default switchport - no system default switchport shutdown - ''') - intf = dedent('''\ - interface Ethernet1/1 - switchport - interface Ethernet1/2 - speed 1000 - no shutdown - ''') - self.get_resource_connection_facts.return_value = { - self.SHOW_RUN_SYSDEF: sysdefs, - self.SHOW_RUN_INTF: intf - } - playbook = dict() - deleted = [ - 'interface Ethernet1/1', 'no switchport', - 'interface Ethernet1/2', 'no speed', 'shutdown' - ] - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) diff --git a/test/units/modules/network/nxos/test_nxos_l3_interface.py b/test/units/modules/network/nxos/test_nxos_l3_interface.py deleted file mode 100644 index 9e23f5702c..0000000000 --- a/test/units/modules/network/nxos/test_nxos_l3_interface.py +++ /dev/null @@ -1,226 +0,0 @@ -# Copyright: (c) 2019, Olivier Blin <olivier.oblin@gmail.com> -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import _nxos_l3_interface -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosL3InterfaceModule(TestNxosModule): - - module = _nxos_l3_interface - - def setUp(self): - super(TestNxosL3InterfaceModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos._nxos_l3_interface.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos._nxos_l3_interface.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosL3InterfaceModule, self).tearDown() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.load_config.return_value = None - self.get_config.return_value = load_fixture('nxos_l3_interface', self.mode) - - def test_nxos_l3_interface_unknonw_ethernet(self): - self.mode = 'ethernet_noshut' - set_module_args(dict(name='Ethernet1/2', ipv4='192.168.0.1/24')) - result = self.execute_module(changed=False) - - # Add when missing - def test_nxos_l3_interface_add_missing_ipv4(self): - self.mode = 'ethernet_noshut' - set_module_args(dict(name='Ethernet1/1', ipv4='192.168.0.1/24')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface Ethernet1/1', 'ip address 192.168.0.1/24', 'exit']) - - def test_nxos_l3_interface_add_missing_ipv4_on_e11(self): - self.mode = 'ethernet_noshut' - set_module_args(dict(name='et1/1', ipv4='192.168.0.1/24')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface Ethernet1/1', 'ip address 192.168.0.1/24', 'exit']) - - def test_nxos_l3_interface_add_missing_ipv6(self): - self.mode = 'ethernet_noshut' - set_module_args(dict(name='Ethernet1/1', ipv6='2001:db8::1/124')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface Ethernet1/1', 'ipv6 address 2001:db8::1/124', 'exit']) - - def test_nxos_l3_interface_add_missing_ipv4_and_ipv6(self): - self.mode = 'ethernet_noshut' - set_module_args(dict(name='Ethernet1/1', ipv4='192.168.0.1/24', ipv6='2001:db8::1/124')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface Ethernet1/1', 'ip address 192.168.0.1/24', 'ipv6 address 2001:db8::1/124', 'exit']) - - # Add when existing - def test_nxos_l3_interface_add_existing_ipv4(self): - self.mode = 'ethernet_noshut_ipv4_ipv6' - set_module_args(dict(name='Ethernet1/1', ipv4='192.168.0.1/24')) - result = self.execute_module() - - def test_nxos_l3_interface_add_existing_ipv4_on_e11(self): - self.mode = 'ethernet_noshut_ipv4_ipv6' - set_module_args(dict(name='et1/1', ipv4='192.168.0.1/24')) - result = self.execute_module() - - def test_nxos_l3_interface_add_existing_ipv6(self): - self.mode = 'ethernet_noshut_ipv4_ipv6' - set_module_args(dict(name='Ethernet1/1', ipv6='2001:db8::1/124')) - result = self.execute_module() - - def test_nxos_l3_interface_add_existing_ipv4_and_ipv6(self): - self.mode = 'ethernet_noshut_ipv4_ipv6' - set_module_args(dict(name='Ethernet1/1', ipv4='192.168.0.1/24', ipv6='2001:db8::1/124')) - result = self.execute_module() - - def test_nxos_l3_interface_new_ipv4_and_ipv6(self): - self.mode = 'ethernet_noshut_ipv4_ipv6' - set_module_args(dict(name='Ethernet1/1', ipv4='192.168.0.2/24', ipv6='2001:db8::2/124')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface Ethernet1/1', 'ip address 192.168.0.2/24', 'ipv6 address 2001:db8::2/124', 'exit']) - - # Add when existing with multiple IPv6 - def test_nxos_l3_interface_multiple_ipv6_add_first(self): - self.mode = 'ethernet_noshut_multiple_ipv6' - set_module_args(dict(name='Ethernet1/1', ipv6='2001:db8::1/124')) - result = self.execute_module() - - def test_nxos_l3_interface_multiple_ipv6_add_last(self): - self.mode = 'ethernet_noshut_multiple_ipv6' - set_module_args(dict(name='Ethernet1/1', ipv6='2001:db8:2::1/124')) - result = self.execute_module() - - # Add aggregate - def test_nxos_l3_interface_add_missing_with_empty_aggregate(self): - self.mode = 'ethernet_noshut' - set_module_args(dict(aggregate=[])) - result = self.execute_module() - - def test_nxos_l3_interface_add_missing_with_aggregate(self): - self.mode = 'ethernet_noshut' - set_module_args(dict(aggregate=[ - dict(name='Ethernet1/1', ipv4='192.168.0.2/24', ipv6='2001:db8::2/124'), - dict(name='Ethernet1/1', ipv6='2001:db8:1::2/124'), - dict(name='Ethernet1/1', ipv6='2001:db8:2::2/124')])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], [ - 'interface Ethernet1/1', 'ip address 192.168.0.2/24', 'ipv6 address 2001:db8::2/124', 'exit', - 'interface Ethernet1/1', 'ipv6 address 2001:db8:1::2/124', 'exit', - 'interface Ethernet1/1', 'ipv6 address 2001:db8:2::2/124', 'exit']) - - # Rem when missing - def test_nxos_l3_interface_rem_missing_ipv4(self): - self.mode = 'ethernet_noshut' - set_module_args(dict(name='Ethernet1/1', ipv4='192.168.0.1/24', state='absent')) - result = self.execute_module() - - def test_nxos_l3_interface_rem_missing_ipv4_on_e11(self): - self.mode = 'ethernet_noshut' - set_module_args(dict(name='et1/1', ipv4='192.168.0.1/24', state='absent')) - result = self.execute_module() - - def test_nxos_l3_interface_rem_missing_ipv6(self): - self.mode = 'ethernet_noshut' - set_module_args(dict(name='Ethernet1/1', ipv6='2001:db8::1/124', state='absent')) - result = self.execute_module() - - def test_nxos_l3_interface_rem_missing_ipv4_and_ipv6(self): - self.mode = 'ethernet_noshut' - set_module_args(dict(name='Ethernet1/1', ipv4='192.168.0.1/24', ipv6='2001:db8::1/124', state='absent')) - result = self.execute_module() - - # Rem when existing - def test_nxos_l3_interface_rem_existing_ipv4(self): - self.mode = 'ethernet_noshut_ipv4_ipv6' - set_module_args(dict(name='Ethernet1/1', ipv4='192.168.0.1/24', state='absent')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface Ethernet1/1', 'no ip address 192.168.0.1/24', 'exit']) - - def test_nxos_l3_interface_rem_existing_ipv4_on_e11(self): - self.mode = 'ethernet_noshut_ipv4_ipv6' - set_module_args(dict(name='et1/1', ipv4='192.168.0.1/24', state='absent')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface Ethernet1/1', 'no ip address 192.168.0.1/24', 'exit']) - - def test_nxos_l3_interface_rem_existing_ipv6(self): - self.mode = 'ethernet_noshut_ipv4_ipv6' - set_module_args(dict(name='Ethernet1/1', ipv6='2001:db8::1/124', state='absent')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface Ethernet1/1', 'no ipv6 address 2001:db8::1/124', 'exit']) - - def test_nxos_l3_interface_rem_existing_ipv4_and_ipv6(self): - self.mode = 'ethernet_noshut_ipv4_ipv6' - set_module_args(dict(name='Ethernet1/1', ipv4='192.168.0.1/24', ipv6='2001:db8::1/124', state='absent')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface Ethernet1/1', 'no ip address 192.168.0.1/24', 'no ipv6 address 2001:db8::1/124', 'exit']) - - # Rem when existing with multiple IPv6 - def test_nxos_l3_interface_multiple_ipv6_rem_first(self): - self.mode = 'ethernet_noshut_multiple_ipv6' - set_module_args(dict(name='Ethernet1/1', ipv6='2001:db8::1/124', state='absent')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface Ethernet1/1', 'no ipv6 address 2001:db8::1/124', 'exit']) - - def test_nxos_l3_interface_multiple_ipv6_rem_last(self): - self.mode = 'ethernet_noshut_multiple_ipv6' - set_module_args(dict(name='Ethernet1/1', ipv6='2001:db8:2::1/124', state='absent')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface Ethernet1/1', 'no ipv6 address 2001:db8:2::1/124', 'exit']) - - # Rem when missing with aggregate - def test_nxos_l3_interface_rem_with_empty_aggregate(self): - self.mode = 'ethernet_noshut_multiple_ipv6' - set_module_args(dict(aggregate=[], state='absent')) - result = self.execute_module() - - def test_nxos_l3_interface_rem_missing_with_aggregate(self): - self.mode = 'ethernet_noshut_multiple_ipv6' - set_module_args(dict(state='absent', aggregate=[ - dict(name='Ethernet1/1', ipv4='192.168.0.2/24', ipv6='2001:db8::2/124'), - dict(name='Ethernet1/1', ipv6='2001:db8:1::2/124'), - dict(name='Ethernet1/1', ipv6='2001:db8:2::2/124')])) - result = self.execute_module() - - # Rem when existing with aggregate - def test_nxos_l3_interface_rem_existing_with_aggregate(self): - self.mode = 'ethernet_noshut_multiple_ipv6' - set_module_args(dict(state='absent', aggregate=[ - dict(name='Ethernet1/1', ipv4='192.168.0.1/24', ipv6='2001:db8::1/124'), - dict(name='Ethernet1/1', ipv6='2001:db8:1::1/124'), - dict(name='Ethernet1/1', ipv6='2001:db8:2::1/124')])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], [ - 'interface Ethernet1/1', 'no ip address 192.168.0.1/24', 'no ipv6 address 2001:db8::1/124', 'exit', - 'interface Ethernet1/1', 'no ipv6 address 2001:db8:1::1/124', 'exit', - 'interface Ethernet1/1', 'no ipv6 address 2001:db8:2::1/124', 'exit']) - - # Add itf only - def test_nxos_l3_interface_add_on_itf_only(self): - self.mode = 'ethernet_noshut' - set_module_args(dict(name='Ethernet1/1')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface Ethernet1/1']) - - # Add unknown interface - def test_nxos_l3_interface_add_on_unknown_itf(self): - self.mode = 'ethernet_noshut' - set_module_args(dict(name='Ethernet1/2', ipv4='192.168.0.1/24')) - result = self.execute_module() - self.assertEqual(result['warnings'], ['Unknown interface Ethernet1/2']) - - # Rem unknown interface - def test_nxos_l3_interface_rem_on_unknown_itf(self): - self.mode = 'ethernet_noshut' - set_module_args(dict(name='Ethernet1/2', ipv4='192.168.0.1/24', state='absent')) - result = self.execute_module() - self.assertEqual(result['warnings'], ['Unknown interface Ethernet1/2']) diff --git a/test/units/modules/network/nxos/test_nxos_l3_interfaces.py b/test/units/modules/network/nxos/test_nxos_l3_interfaces.py deleted file mode 100644 index 79ca244ef4..0000000000 --- a/test/units/modules/network/nxos/test_nxos_l3_interfaces.py +++ /dev/null @@ -1,580 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from textwrap import dedent -from units.compat.mock import patch -from units.modules.utils import AnsibleFailJson -from ansible.modules.network.nxos import nxos_l3_interfaces -from ansible.module_utils.network.nxos.config.l3_interfaces.l3_interfaces import L3_interfaces -from .nxos_module import TestNxosModule, load_fixture, set_module_args - -ignore_provider_arg = True - - -class TestNxosL3InterfacesModule(TestNxosModule): - - module = nxos_l3_interfaces - - def setUp(self): - super(TestNxosL3InterfacesModule, self).setUp() - - self.mock_FACT_LEGACY_SUBSETS = patch('ansible.module_utils.network.nxos.facts.facts.FACT_LEGACY_SUBSETS') - self.FACT_LEGACY_SUBSETS = self.mock_FACT_LEGACY_SUBSETS.start() - - self.mock_get_resource_connection_config = patch('ansible.module_utils.network.common.cfg.base.get_resource_connection') - self.get_resource_connection_config = self.mock_get_resource_connection_config.start() - - self.mock_get_resource_connection_facts = patch('ansible.module_utils.network.common.facts.facts.get_resource_connection') - self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start() - - self.mock_edit_config = patch('ansible.module_utils.network.nxos.config.l3_interfaces.l3_interfaces.L3_interfaces.edit_config') - self.edit_config = self.mock_edit_config.start() - - self.mock_get_platform_type = patch('ansible.module_utils.network.nxos.config.l3_interfaces.l3_interfaces.L3_interfaces.get_platform_type') - self.get_platform_type = self.mock_get_platform_type.start() - - def tearDown(self): - super(TestNxosL3InterfacesModule, self).tearDown() - self.mock_FACT_LEGACY_SUBSETS.stop() - self.mock_get_resource_connection_config.stop() - self.mock_get_resource_connection_facts.stop() - self.mock_edit_config.stop() - self.mock_get_platform_type.stop() - - def load_fixtures(self, commands=None, device='N9K'): - self.mock_FACT_LEGACY_SUBSETS.return_value = dict() - self.get_resource_connection_config.return_value = None - self.edit_config.return_value = None - self.get_platform_type.return_value = device - - # --------------------------- - # L3_interfaces Test Cases - # --------------------------- - - # 'state' logic behaviors - # - # - 'merged' : Update existing device state with any differences in the play. - # - 'deleted' : Reset existing device state to default values. Ignores any - # play attrs other than 'name'. Scope is limited to interfaces - # in the play. - # - 'overridden': The play is the source of truth. Similar to replaced but the - # scope includes all interfaces; ie. it will also reset state - # on interfaces not found in the play. - # - 'replaced' : Scope is limited to the interfaces in the play. - - SHOW_CMD = 'show running-config | section ^interface' - - def test_1(self): - # Verify raise when playbook specifies mgmt0 - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: ''} - playbook = dict(config=[dict(name='mgmt0')]) - set_module_args(playbook, ignore_provider_arg) - self.execute_module({'failed': True, 'msg': "The 'mgmt0' interface is not allowed to be managed by this module"}) - - def test_2(self): - # basic tests - existing = dedent('''\ - interface mgmt0 - ip address 10.0.0.254/24 - interface Ethernet1/1 - ip address 10.1.1.1/24 - interface Ethernet1/2 - ip address 10.1.2.1/24 - interface Ethernet1/3 - ip address 10.1.3.1/24 - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict( - name='Ethernet1/1', - ipv4=[{'address': '192.168.1.1/24'}]), - dict(name='Ethernet1/2'), - # Eth1/3 not present! Thus overridden should set Eth1/3 to defaults; - # replaced should ignore Eth1/3. - ]) - # Expected result commands for each 'state' - merged = ['interface Ethernet1/1', 'ip address 192.168.1.1/24'] - deleted = ['interface Ethernet1/1', 'no ip address', - 'interface Ethernet1/2', 'no ip address'] - replaced = ['interface Ethernet1/1', 'ip address 192.168.1.1/24', - 'interface Ethernet1/2', 'no ip address'] - overridden = ['interface Ethernet1/1', 'ip address 192.168.1.1/24', - 'interface Ethernet1/2', 'no ip address', - 'interface Ethernet1/3', 'no ip address'] - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - def test_3(self): - # encap testing - existing = dedent('''\ - interface mgmt0 - ip address 10.0.0.254/24 - interface Ethernet1/1.41 - encapsulation dot1q 4100 - ip address 10.1.1.1/24 - interface Ethernet1/1.42 - encapsulation dot1q 42 - interface Ethernet1/1.44 - encapsulation dot1q 44 - interface Ethernet1/1.45 - encapsulation dot1q 45 - ip address 10.5.5.5/24 - ipv6 address 10::5/128 - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict(name='Ethernet1/1.41', dot1q=41, ipv4=[{'address': '10.2.2.2/24'}]), - dict(name='Ethernet1/1.42', dot1q=42), - dict(name='Ethernet1/1.43', dot1q=43, ipv6=[{'address': '10::2/128'}]), - dict(name='Ethernet1/1.44') - ]) - # Expected result commands for each 'state' - merged = [ - 'interface Ethernet1/1.41', 'encapsulation dot1q 41', 'ip address 10.2.2.2/24', - 'interface Ethernet1/1.43', 'encapsulation dot1q 43', 'ipv6 address 10::2/128', - ] - deleted = [ - 'interface Ethernet1/1.41', 'no encapsulation dot1q', 'no ip address', - 'interface Ethernet1/1.42', 'no encapsulation dot1q', - 'interface Ethernet1/1.44', 'no encapsulation dot1q' - ] - replaced = [ - 'interface Ethernet1/1.41', 'encapsulation dot1q 41', 'ip address 10.2.2.2/24', - # 42 no chg - 'interface Ethernet1/1.43', 'encapsulation dot1q 43', 'ipv6 address 10::2/128', - 'interface Ethernet1/1.44', 'no encapsulation dot1q' - ] - overridden = [ - 'interface Ethernet1/1.41', 'encapsulation dot1q 41', 'ip address 10.2.2.2/24', - # 42 no chg - 'interface Ethernet1/1.44', 'no encapsulation dot1q', - 'interface Ethernet1/1.45', 'no encapsulation dot1q', 'no ip address', 'no ipv6 address', - 'interface Ethernet1/1.43', 'encapsulation dot1q 43', 'ipv6 address 10::2/128' - ] - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - def test_4(self): - # IPv4-centric testing - existing = dedent('''\ - interface mgmt0 - ip address 10.0.0.254/24 - interface Ethernet1/1 - no ip redirects - ip address 10.1.1.1/24 tag 11 - ip address 10.2.2.2/24 secondary tag 12 - ip address 10.3.3.3/24 secondary - ip address 10.4.4.4/24 secondary tag 14 - ip address 10.5.5.5/24 secondary tag 15 - ip address 10.6.6.6/24 secondary tag 16 - interface Ethernet1/2 - ip address 10.12.12.12/24 - interface Ethernet1/3 - ip address 10.13.13.13/24 - interface Ethernet1/5 - no ip redirects - ip address 10.15.15.15/24 - ip address 10.25.25.25/24 secondary - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict(name='Ethernet1/1', - ipv4=[{'address': '10.1.1.1/24', 'secondary': True}, # prim->sec - {'address': '10.2.2.2/24', 'secondary': True}, # rmv tag - {'address': '10.3.3.3/24', 'tag': 3}, # become prim - {'address': '10.4.4.4/24', 'secondary': True, 'tag': 14}, # no chg - {'address': '10.5.5.5/24', 'secondary': True, 'tag': 55}, # chg tag - {'address': '10.7.7.7/24', 'secondary': True, 'tag': 77}]), # new ip - dict(name='Ethernet1/2'), - dict(name='Ethernet1/4', - ipv4=[{'address': '10.40.40.40/24'}, - {'address': '10.41.41.41/24', 'secondary': True}]), - dict(name='Ethernet1/5'), - ]) - # Expected result commands for each 'state' - merged = [ - 'interface Ethernet1/1', - 'no ip address 10.5.5.5/24 secondary', - 'no ip address 10.2.2.2/24 secondary', - 'no ip address 10.3.3.3/24 secondary', - 'ip address 10.3.3.3/24 tag 3', # Changes primary - 'ip address 10.1.1.1/24 secondary', - 'ip address 10.2.2.2/24 secondary', - 'ip address 10.7.7.7/24 secondary tag 77', - 'ip address 10.5.5.5/24 secondary tag 55', - 'interface Ethernet1/4', - 'ip address 10.40.40.40/24', - 'ip address 10.41.41.41/24 secondary' - ] - deleted = [ - 'interface Ethernet1/1', 'no ip address', - 'interface Ethernet1/2', 'no ip address', - 'interface Ethernet1/5', 'no ip address' - ] - replaced = [ - 'interface Ethernet1/1', - 'no ip address 10.5.5.5/24 secondary', - 'no ip address 10.2.2.2/24 secondary', - 'no ip address 10.3.3.3/24 secondary', - 'ip address 10.3.3.3/24 tag 3', # Changes primary - 'ip address 10.1.1.1/24 secondary', - 'ip address 10.2.2.2/24 secondary', - 'ip address 10.7.7.7/24 secondary tag 77', - 'ip address 10.5.5.5/24 secondary tag 55', - 'interface Ethernet1/2', - 'no ip address', - 'interface Ethernet1/4', - 'ip address 10.40.40.40/24', - 'ip address 10.41.41.41/24 secondary', - 'interface Ethernet1/5', - 'no ip address' - ] - overridden = [ - 'interface Ethernet1/1', - 'no ip address 10.6.6.6/24 secondary', - 'no ip address 10.5.5.5/24 secondary', - 'no ip address 10.2.2.2/24 secondary', - 'no ip address 10.3.3.3/24 secondary', - 'ip address 10.3.3.3/24 tag 3', # Changes primary - 'ip address 10.1.1.1/24 secondary', - 'ip address 10.2.2.2/24 secondary', - 'ip address 10.7.7.7/24 secondary tag 77', - 'ip address 10.5.5.5/24 secondary tag 55', - 'interface Ethernet1/2', - 'no ip address', - 'interface Ethernet1/3', - 'no ip address', - 'interface Ethernet1/4', - 'ip address 10.40.40.40/24', - 'ip address 10.41.41.41/24 secondary', - 'interface Ethernet1/5', - 'no ip address', - ] - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - def test_5(self): - # IPv6-centric testing - existing = dedent('''\ - interface Ethernet1/1 - ipv6 address 10::1/128 - ipv6 address 10::2/128 tag 12 - ipv6 address 10::3/128 tag 13 - ipv6 address 10::4/128 tag 14 - interface Ethernet1/2 - ipv6 address 10::12/128 - interface Ethernet1/3 - ipv6 address 10::13/128 - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict(name='Ethernet1/1', - ipv6=[{'address': '10::1/128'}, # no chg - {'address': '10::3/128'}, # tag rmv - {'address': '10::4/128', 'tag': 44}, # tag chg - {'address': '10::5/128'}, # new addr - {'address': '10::6/128', 'tag': 66}]), # new addr+tag - dict(name='Ethernet1/2'), - ]) - # Expected result commands for each 'state' - merged = [ - 'interface Ethernet1/1', - 'ipv6 address 10::4/128 tag 44', - 'ipv6 address 10::5/128', - 'ipv6 address 10::6/128 tag 66', - ] - deleted = [ - 'interface Ethernet1/1', 'no ipv6 address', - 'interface Ethernet1/2', 'no ipv6 address', - ] - replaced = [ - 'interface Ethernet1/1', - 'no ipv6 address 10::3/128', - 'no ipv6 address 10::2/128', - 'ipv6 address 10::4/128 tag 44', - 'ipv6 address 10::3/128', - 'ipv6 address 10::5/128', - 'ipv6 address 10::6/128 tag 66', - 'interface Ethernet1/2', - 'no ipv6 address 10::12/128' - ] - overridden = [ - 'interface Ethernet1/1', - 'no ipv6 address 10::3/128', - 'no ipv6 address 10::2/128', - 'ipv6 address 10::4/128 tag 44', - 'ipv6 address 10::3/128', - 'ipv6 address 10::5/128', - 'ipv6 address 10::6/128 tag 66', - 'interface Ethernet1/2', - 'no ipv6 address 10::12/128', - 'interface Ethernet1/3', - 'no ipv6 address' - ] - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - # - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - # - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - def test_6(self): - # misc tests - existing = dedent('''\ - interface Ethernet1/1 - ip address 10.1.1.1/24 - no ip redirects - ip unreachables - interface Ethernet1/2 - interface Ethernet1/3 - interface Ethernet1/4 - interface Ethernet1/5 - no ip redirects - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict(name='Ethernet1/1', redirects=True, unreachables=False, - ipv4=[{'address': '192.168.1.1/24'}]), - dict(name='Ethernet1/2'), - dict(name='Ethernet1/3', redirects=True, unreachables=False), # defaults - dict(name='Ethernet1/4', redirects=False, unreachables=True), - ]) - merged = [ - 'interface Ethernet1/1', - 'ip redirects', - 'no ip unreachables', - 'ip address 192.168.1.1/24', - 'interface Ethernet1/4', - 'no ip redirects', - 'ip unreachables' - ] - deleted = [ - 'interface Ethernet1/1', - 'ip redirects', - 'no ip unreachables', - 'no ip address' - ] - replaced = [ - 'interface Ethernet1/1', - 'ip redirects', - 'no ip unreachables', - 'ip address 192.168.1.1/24', - 'interface Ethernet1/4', - 'no ip redirects', - 'ip unreachables' - ] - overridden = [ - 'interface Ethernet1/1', - 'ip redirects', - 'no ip unreachables', - 'ip address 192.168.1.1/24', - 'interface Ethernet1/5', - 'ip redirects', - 'interface Ethernet1/4', - 'no ip redirects', - 'ip unreachables' - ] - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - def test_7(self): - # idempotence - existing = dedent('''\ - interface Ethernet1/1 - ip address 10.1.1.1/24 - ip address 10.2.2.2/24 secondary tag 2 - ip address 10.3.3.3/24 secondary tag 3 - ip address 10.4.4.4/24 secondary - ipv6 address 10::1/128 - ipv6 address 10::2/128 tag 2 - no ip redirects - ip unreachables - interface Ethernet1/2 - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict(name='Ethernet1/1', redirects=False, unreachables=True, - ipv4=[{'address': '10.1.1.1/24'}, - {'address': '10.2.2.2/24', 'secondary': True, 'tag': 2}, - {'address': '10.3.3.3/24', 'secondary': True, 'tag': 3}, - {'address': '10.4.4.4/24', 'secondary': True}], - ipv6=[{'address': '10::1/128'}, - {'address': '10::2/128', 'tag': 2}]), - dict(name='Ethernet1/2') - ]) - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False) - - # Modify output for deleted idempotence test - existing = dedent('''\ - interface Ethernet1/1 - interface Ethernet1/2 - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False) - - def test_8(self): - # no 'config' key in playbook - existing = dedent('''\ - interface Ethernet1/1 - ip address 10.1.1.1/24 - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict() - - for i in ['merged', 'replaced', 'overridden']: - playbook['state'] = i - set_module_args(playbook, ignore_provider_arg) - self.execute_module(failed=True) - - deleted = [ - 'interface Ethernet1/1', - 'no ip address', - ] - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - def test_9(self): - # Platform specific checks - # 'ip redirects' has platform-specific behaviors - existing = dedent('''\ - interface mgmt0 - ip address 10.0.0.254/24 - interface Ethernet1/3 - ip address 10.13.13.13/24 - interface Ethernet1/5 - no ip redirects - ip address 10.15.15.15/24 - ip address 10.25.25.25/24 secondary - ''') - self.get_resource_connection_facts.return_value = {self.SHOW_CMD: existing} - playbook = dict(config=[ - dict(name='Ethernet1/3'), - dict(name='Ethernet1/5'), - ]) - # Expected result commands for each 'state' - deleted = [ - 'interface Ethernet1/3', 'no ip address', - 'interface Ethernet1/5', 'no ip address', 'ip redirects' - ] - replaced = [ - 'interface Ethernet1/3', 'no ip address', - 'interface Ethernet1/5', 'no ip address', 'ip redirects' - ] - overridden = [ - 'interface Ethernet1/3', 'no ip address', - 'interface Ethernet1/5', 'no ip address', 'ip redirects' - ] - platform = 'N3K' - - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=False, device=platform) - - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted, device=platform) - - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced, device=platform) - - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden, device=platform) diff --git a/test/units/modules/network/nxos/test_nxos_lldp_interfaces.py b/test/units/modules/network/nxos/test_nxos_lldp_interfaces.py deleted file mode 100644 index fb70ed2e1c..0000000000 --- a/test/units/modules/network/nxos/test_nxos_lldp_interfaces.py +++ /dev/null @@ -1,236 +0,0 @@ -# -# (c) 2019, Ansible by Red Hat, inc -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from ansible.modules.network.nxos import nxos_lldp_interfaces -from units.compat.mock import patch, MagicMock -from units.modules.utils import set_module_args -from .nxos_module import TestNxosModule, load_fixture - - -class TestNxosLldpInterfacesModule(TestNxosModule): - - module = nxos_lldp_interfaces - - def setUp(self): - super(TestNxosLldpInterfacesModule, self).setUp() - - self.mock_get_config = patch( - 'ansible.module_utils.network.common.network.Config.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch( - 'ansible.module_utils.network.common.network.Config.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_resource_connection_config = patch( - 'ansible.module_utils.network.common.cfg.base.get_resource_connection' - ) - self.get_resource_connection_config = self.mock_get_resource_connection_config.start( - ) - - self.mock_get_resource_connection_facts = patch( - 'ansible.module_utils.network.common.facts.facts.get_resource_connection' - ) - self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start() - - self.mock_edit_config = patch( - 'ansible.module_utils.network.nxos.config.lldp_interfaces.lldp_interfaces.Lldp_interfaces.edit_config' - ) - self.edit_config = self.mock_edit_config.start() - - self.mock_execute_show_command = patch( - 'ansible.module_utils.network.nxos.facts.lldp_interfaces.lldp_interfaces.Lldp_interfacesFacts.get_device_data' - ) - self.execute_show_command = self.mock_execute_show_command.start() - - def tearDown(self): - super(TestNxosLldpInterfacesModule, self).tearDown() - self.mock_get_resource_connection_config.stop() - self.mock_get_resource_connection_facts.stop() - self.mock_edit_config.stop() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_execute_show_command.stop() - - def load_fixtures(self, commands=None, device=''): - def load_from_file(*args, **kwargs): - output = '''interface Ethernet1/1 - lldp receive - no lldp transmit - interface Ethernet1/2 - no lldp receive - lldp tlv-set vlan 12''' - return output - - self.execute_show_command.side_effect = load_from_file - - def test_nxos_lldp_interfaces_merged(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/3", - receive=False, - tlv_set=dict( - vlan=123 - ) - ) - ], state="merged")) - commands = ['interface Ethernet1/3', - 'no lldp receive', - 'lldp tlv-set vlan 123'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_lldp_interfaces_merged_idempotent(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/2", - receive=False, - tlv_set=dict( - vlan=12 - ) - ), - dict(name="Ethernet1/1", - receive=True, - transmit=False) - ], state="merged")) - self.execute_module(changed=False, commands=[]) - - def test_nxos_lldp_interfaces_replaced(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/2", - receive=True, - transmit=False, - tlv_set=dict( - management_address='192.0.2.123' - ) - ) - ], state="replaced")) - commands = ['interface Ethernet1/2', - 'lldp receive', - 'no lldp transmit', - 'no lldp tlv-set vlan 12', - 'lldp tlv-set management-address 192.0.2.123'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_lldp_interfaces_replaced_idempotent(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/2", - receive=False, - tlv_set=dict( - vlan=12 - ) - ), - dict(name="Ethernet1/1", - receive=True, - transmit=False) - ], state="replaced")) - self.execute_module(changed=False, commands=[]) - - def test_nxos_lldp_interfaces_overridden(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/4", - receive=True, - transmit=False - ) - ], state="overridden")) - commands = ['interface Ethernet1/4', - 'lldp receive', - 'no lldp transmit', - 'interface Ethernet1/1', - 'lldp receive', - 'lldp transmit', - 'interface Ethernet1/2', - 'lldp receive', - 'no lldp tlv-set vlan 12'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_lldp_interfaces_overridden_idempotent(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/2", - receive=False, - tlv_set=dict( - vlan=12 - ) - ), - dict(name="Ethernet1/1", - receive=True, - transmit=False) - ], state="overridden")) - self.execute_module(changed=False, commands=[]) - - def test_nxos_lldp_interfaces_deleted_intf(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/2") - ], state="deleted")) - commands = ['interface Ethernet1/2', - 'lldp receive', - 'no lldp tlv-set vlan 12'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_lldp_interfaces_deleted_all(self): - set_module_args( - dict(state="deleted")) - commands = ['interface Ethernet1/2', - 'lldp receive', - 'no lldp tlv-set vlan 12', - 'interface Ethernet1/1', - 'lldp receive', - 'lldp transmit'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_lldp_interfaces_rendered(self): - set_module_args( - dict(config=[ - dict(name="Ethernet1/2", - receive=False, - tlv_set=dict( - vlan=12 - ) - ), - dict(name="Ethernet1/1", - receive=True, - transmit=False) - ], state="rendered")) - commands = ['interface Ethernet1/1', - 'lldp receive', - 'no lldp transmit', - 'interface Ethernet1/2', - 'no lldp receive', - 'lldp tlv-set vlan 12'] - result = self.execute_module(changed=False) - self.assertEqual(sorted(result['rendered']), sorted( - commands), result['rendered']) - - def test_nxos_lldp_interfaces_parsed(self): - set_module_args(dict(running_config='''interface Ethernet1/1 - lldp receive - no lldp transmit - interface Ethernet1/2 - no lldp receive - lldp tlv-set vlan 12''', state="parsed")) - result = self.execute_module(changed=False) - compare_list = [{'name': 'Ethernet1/1', 'receive': True, 'transmit': False}, - {'name': 'Ethernet1/2', 'receive': False, 'tlv_set': { - 'vlan': 12 - }}] - self.assertEqual(result['parsed'], - compare_list, result['parsed']) - - def test_nxos_lldp_interfaces_gathered(self): - set_module_args(dict(state="gathered")) - result = self.execute_module(changed=False) - compare_list = [{'name': 'Ethernet1/1', 'receive': True, 'transmit': False}, - {'name': 'Ethernet1/2', 'receive': False, 'tlv_set': { - 'vlan': 12 - }}] - self.assertEqual(result['gathered'], - compare_list, result['gathered']) diff --git a/test/units/modules/network/nxos/test_nxos_nxapi.py b/test/units/modules/network/nxos/test_nxos_nxapi.py deleted file mode 100644 index c0eae1a341..0000000000 --- a/test/units/modules/network/nxos/test_nxos_nxapi.py +++ /dev/null @@ -1,74 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_nxapi -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosNxapiModule(TestNxosModule): - - module = nxos_nxapi - - def setUp(self): - super(TestNxosNxapiModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.nxos.nxos_nxapi.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_nxapi.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_capabilities = patch('ansible.modules.network.nxos.nxos_nxapi.get_capabilities') - self.get_capabilities = self.mock_get_capabilities.start() - self.get_capabilities.return_value = {'device_info': {'network_os_platform': 'N7K-C7018', 'network_os_version': '8.3(1)'}, 'network_api': 'cliconf'} - - def tearDown(self): - super(TestNxosNxapiModule, self).tearDown() - self.mock_run_commands.stop() - self.mock_load_config.stop() - self.mock_get_capabilities.stop() - - def load_fixtures(self, commands=None, device=''): - def load_from_file(*args, **kwargs): - module, commands = args - module_name = self.module.__name__.rsplit('.', 1)[1] - - output = list() - for command in commands: - filename = str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture(module_name, filename, device)) - return output - - self.run_commands.side_effect = load_from_file - self.load_config.return_value = None - - def test_nxos_nxapi_no_change(self): - set_module_args(dict(http=True, https=False, http_port=80, https_port=443, sandbox=False)) - self.execute_module_devices(changed=False, commands=[]) - - def test_nxos_nxapi_disable(self): - set_module_args(dict(state='absent')) - self.execute_module_devices(changed=True, commands=['no feature nxapi']) - - def test_nxos_nxapi_no_http(self): - set_module_args(dict(https=True, http=False, https_port=8443)) - self.execute_module_devices(changed=True, commands=['no nxapi http', 'nxapi https port 8443']) diff --git a/test/units/modules/network/nxos/test_nxos_ospf.py b/test/units/modules/network/nxos/test_nxos_ospf.py deleted file mode 100644 index 6f5cb3df82..0000000000 --- a/test/units/modules/network/nxos/test_nxos_ospf.py +++ /dev/null @@ -1,56 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_ospf -from .nxos_module import TestNxosModule, set_module_args - - -class TestNxosOspfModule(TestNxosModule): - - module = nxos_ospf - - def setUp(self): - super(TestNxosOspfModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_ospf.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_ospf.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosOspfModule, self).tearDown() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.load_config.return_value = None - - def test_nxos_ospf_present(self): - set_module_args(dict(ospf=1, state='present')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['router ospf 1']) - - def test_nxos_ospf_absent(self): - set_module_args(dict(ospf=1, state='absent')) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) diff --git a/test/units/modules/network/nxos/test_nxos_ospf_vrf.py b/test/units/modules/network/nxos/test_nxos_ospf_vrf.py deleted file mode 100644 index 165d127437..0000000000 --- a/test/units/modules/network/nxos/test_nxos_ospf_vrf.py +++ /dev/null @@ -1,128 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_ospf_vrf -from .nxos_module import TestNxosModule, set_module_args - - -class TestNxosOspfVrfModule(TestNxosModule): - - module = nxos_ospf_vrf - - def setUp(self): - super(TestNxosOspfVrfModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_ospf_vrf.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_ospf_vrf.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosOspfVrfModule, self).tearDown() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.load_config.return_value = None - - def test_nxos_ospf_vrf_present(self): - set_module_args(dict(ospf=1, - vrf='test', - timer_throttle_spf_start=50, - timer_throttle_spf_hold=1000, - timer_throttle_spf_max=2000, - timer_throttle_lsa_start=60, - timer_throttle_lsa_hold=1100, - timer_throttle_lsa_max=3000, - bfd='enable', - state='present')) - result = self.execute_module(changed=True) - self.assertEqual(sorted(result['commands']), - sorted(['router ospf 1', - 'vrf test', - 'timers throttle lsa 60 1100 3000', - 'timers throttle spf 50 1000 2000', - 'bfd', - ])) - - def test_nxos_ospf_vrf_absent(self): - set_module_args(dict(ospf=1, vrf='test', state='absent')) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_bfd_1(self): - self.get_config.return_value = 'router ospf 1\n bfd\nrouter ospf 2' - # enable -> disable - set_module_args(dict( - ospf=1, - bfd='disable', - )) - self.execute_module(changed=True, commands=[ - 'router ospf 1', - 'no bfd', - ]) - - # disable -> enable - set_module_args(dict( - ospf=2, - bfd='enable', - )) - self.execute_module(changed=True, commands=[ - 'router ospf 2', - 'bfd', - ]) - - def test_bfd_2(self): - # enable idempotence - self.get_config.return_value = 'router ospf 1\n bfd\nrouter ospf 2' - set_module_args(dict( - ospf=1, - bfd='enable', - )) - self.execute_module(changed=False) - - # disable idempotence - set_module_args(dict( - ospf=2, - bfd='disable', - )) - self.execute_module(changed=False) - - def test_bfd_3(self): - # absent tests - self.get_config.return_value = 'router ospf 1\n bfd\nrouter ospf 2' - set_module_args(dict( - ospf=1, - state='absent' - )) - self.execute_module(changed=True, commands=[ - 'router ospf 1', - 'no bfd', - ]) - - # absent w/bfd disable - set_module_args(dict( - ospf=2, - state='absent' - )) - self.execute_module(changed=False) diff --git a/test/units/modules/network/nxos/test_nxos_overlay_global.py b/test/units/modules/network/nxos/test_nxos_overlay_global.py deleted file mode 100644 index ffbfe73e8d..0000000000 --- a/test/units/modules/network/nxos/test_nxos_overlay_global.py +++ /dev/null @@ -1,51 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_overlay_global -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosOverlayGlobalModule(TestNxosModule): - - module = nxos_overlay_global - - def setUp(self): - super(TestNxosOverlayGlobalModule, self).setUp() - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_overlay_global.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_overlay_global.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosOverlayGlobalModule, self).tearDown() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('', 'nxos_overlay_global_config.cfg') - self.load_config.return_value = None - - def test_nxos_overlay_global_up(self): - set_module_args(dict(anycast_gateway_mac="a.a.a")) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['fabric forwarding anycast-gateway-mac 000A.000A.000A']) diff --git a/test/units/modules/network/nxos/test_nxos_pim.py b/test/units/modules/network/nxos/test_nxos_pim.py deleted file mode 100644 index f4aa433245..0000000000 --- a/test/units/modules/network/nxos/test_nxos_pim.py +++ /dev/null @@ -1,100 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_pim -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosPimModule(TestNxosModule): - - module = nxos_pim - - def setUp(self): - super(TestNxosPimModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_pim.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_pim.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestNxosPimModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.load_config.return_value = None - - def test_nxos_pim_1(self): - # Add/ Modify - self.get_config.return_value = load_fixture('nxos_pim', 'config.cfg') - set_module_args(dict(ssm_range='233.0.0.0/8')) - self.execute_module(changed=True, commands=[ - 'ip pim ssm range 233.0.0.0/8', - ]) - - def test_nxos_pim_2(self): - # Remove existing values - self.get_config.return_value = load_fixture('nxos_pim', 'config.cfg') - set_module_args(dict(bfd='disable', ssm_range='none')) - self.execute_module(changed=True, commands=[ - 'no ip pim bfd', - 'ip pim ssm range none', - ]) - - def test_nxos_pim_3(self): - # bfd None (disable)-> enable - self.get_config.return_value = None - set_module_args(dict(bfd='enable')) - self.execute_module(changed=True, commands=['ip pim bfd']) - - # bfd None (disable) -> disable - set_module_args(dict(bfd='disable')) - self.execute_module(changed=False) - - # ssm None to 'default' - set_module_args(dict(ssm_range='default')) - self.execute_module(changed=False) - - def test_nxos_pim_4(self): - # SSM 'none' - self.get_config.return_value = load_fixture('nxos_pim', 'config.cfg') - set_module_args(dict(ssm_range='none')) - self.execute_module(changed=True, commands=['ip pim ssm range none']) - - def test_nxos_pim_5(self): - # SSM 'default' - self.get_config.return_value = load_fixture('nxos_pim', 'config.cfg') - set_module_args(dict(ssm_range='default')) - self.execute_module(changed=True, commands=['no ip pim ssm range none']) - - # SSM 'default' idempotence - self.get_config.return_value = None - set_module_args(dict(ssm_range='default')) - self.execute_module(changed=False) - - def test_nxos_pim_6(self): - # Idempotence - self.get_config.return_value = load_fixture('nxos_pim', 'config.cfg') - set_module_args(dict(bfd='enable', ssm_range='127.0.0.0/31')) - self.execute_module(changed=False, commands=[]) diff --git a/test/units/modules/network/nxos/test_nxos_pim_interface.py b/test/units/modules/network/nxos/test_nxos_pim_interface.py deleted file mode 100644 index 0248d77401..0000000000 --- a/test/units/modules/network/nxos/test_nxos_pim_interface.py +++ /dev/null @@ -1,249 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_pim_interface -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosIPInterfaceModule(TestNxosModule): - - module = nxos_pim_interface - - def setUp(self): - super(TestNxosIPInterfaceModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_pim_interface.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_pim_interface.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_run_commands = patch('ansible.modules.network.nxos.nxos_pim_interface.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestNxosIPInterfaceModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None, device=''): - module_name = self.module.__name__.rsplit('.', 1)[1] - - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for command in commands: - if type(command) == dict: - command = command['command'] - filename = str(command).split(' | ')[0].replace(' ', '_').replace('/', '_') - output.append(load_fixture(module_name, filename)) - return output - - self.get_config.return_value = load_fixture(module_name, 'config.cfg') - self.load_config.return_value = None - self.run_commands.side_effect = load_from_file - - def test_nxos_pim_interface_present(self): - set_module_args(dict(interface='eth2/1', dr_prio=10, hello_interval=40, sparse=True, border=False)) - self.execute_module( - changed=True, - commands=[ - 'interface eth2/1', 'ip pim dr-priority 10', 'ip pim hello-interval 40000', - 'ip pim sparse-mode'] - ) - - def test_nxos_pim_interface_jp(self): - set_module_args(dict( - interface='eth2/1', jp_policy_in='JPIN', jp_policy_out='JPOUT', - jp_type_in='routemap', jp_type_out='routemap', - )) - self.execute_module( - changed=True, - commands=['interface eth2/1', 'ip pim jp-policy JPOUT out', - 'ip pim jp-policy JPIN in'] - ) - - def test_nxos_pim_interface_default(self): - set_module_args(dict(interface='eth2/1', state='default')) - self.execute_module( - changed=False, - commands=[] - ) - - def test_nxos_pim_interface_ip_absent(self): - set_module_args(dict(interface='eth2/1', state='absent')) - self.execute_module(changed=False, commands=[]) - - -class TestNxosPimInterfaceBfdModule(TestNxosModule): - - module = nxos_pim_interface - - def setUp(self): - super(TestNxosPimInterfaceBfdModule, self).setUp() - - self.mock_get_interface_mode = patch('ansible.modules.network.nxos.nxos_pim_interface.get_interface_mode') - self.get_interface_mode = self.mock_get_interface_mode.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_pim_interface.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_pim_interface.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_run_commands = patch('ansible.modules.network.nxos.nxos_pim_interface.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestNxosPimInterfaceBfdModule, self).tearDown() - self.mock_get_interface_mode.stop() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None, device=''): - self.load_config.return_value = None - - def test_bfd_1(self): - # default (None) -> enable - self.get_config.return_value = None - set_module_args(dict(interface='eth2/1', bfd='enable')) - self.execute_module( - changed=True, - commands=[ - 'interface eth2/1', - 'ip pim bfd-instance', - ]) - - # default (None) -> disable - set_module_args(dict(interface='eth2/1', bfd='disable')) - self.execute_module( - changed=True, - commands=[ - 'interface eth2/1', - 'ip pim bfd-instance disable', - ]) - - # default (None) -> default (None) (idempotence) - set_module_args(dict(interface='eth2/1', bfd='default')) - self.execute_module(changed=False,) - - # default (None) -> interface state 'default' - set_module_args(dict(interface='Ethernet9/3', state='default')) - self.execute_module(changed=False,) - - # default (None) -> interface state 'absent' - set_module_args(dict(interface='Ethernet9/3', state='absent')) - self.execute_module(changed=False,) - - def test_bfd_2(self): - # From disable - self.get_config.return_value = ''' - interface Ethernet9/2 - ip pim bfd-instance disable - ''' - # disable -> enable - set_module_args(dict(interface='Ethernet9/2', bfd='enable')) - self.execute_module( - changed=True, - commands=[ - 'interface Ethernet9/2', - 'ip pim bfd-instance', - ]) - - # disable -> disable (idempotence) - set_module_args(dict(interface='Ethernet9/2', bfd='disable')) - self.execute_module(changed=False,) - - # disable -> default (None) - set_module_args(dict(interface='Ethernet9/2', bfd='default')) - self.execute_module( - changed=True, - commands=[ - 'interface Ethernet9/2', - 'no ip pim bfd-instance', - ]) - # disable -> interface state 'default' - set_module_args(dict(interface='Ethernet9/3', state='default')) - self.execute_module( - changed=True, - commands=[ - 'interface Ethernet9/3', - 'no ip pim bfd-instance', - ]) - - # disable -> interface state 'absent' - set_module_args(dict(interface='Ethernet9/3', state='absent')) - self.execute_module( - changed=True, - commands=[ - 'interface Ethernet9/3', - 'no ip pim bfd-instance', - ]) - - def test_bfd_3(self): - # From enable - self.get_config.return_value = ''' - interface Ethernet9/2 - ip pim bfd-instance - ''' - # enable -> disabled - set_module_args(dict(interface='Ethernet9/3', bfd='disable')) - self.execute_module( - changed=True, - commands=[ - 'interface Ethernet9/3', - 'ip pim bfd-instance disable', - ]) - - # enable -> enable (idempotence) - set_module_args(dict(interface='Ethernet9/3', bfd='enable')) - self.execute_module(changed=False,) - - # enable -> default (None) - set_module_args(dict(interface='Ethernet9/3', bfd='default')) - self.execute_module( - changed=True, - commands=[ - 'interface Ethernet9/3', - 'no ip pim bfd-instance', - ]) - - # enable -> interface state 'default' - set_module_args(dict(interface='Ethernet9/3', state='default')) - self.execute_module( - changed=True, - commands=[ - 'interface Ethernet9/3', - 'no ip pim bfd-instance', - ]) - - # enable -> interface state 'absent' - set_module_args(dict(interface='Ethernet9/3', state='absent')) - self.execute_module( - changed=True, - commands=[ - 'interface Ethernet9/3', - 'no ip pim bfd-instance', - ]) diff --git a/test/units/modules/network/nxos/test_nxos_pim_rp_address.py b/test/units/modules/network/nxos/test_nxos_pim_rp_address.py deleted file mode 100644 index f6e8919daf..0000000000 --- a/test/units/modules/network/nxos/test_nxos_pim_rp_address.py +++ /dev/null @@ -1,63 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_pim_rp_address -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosPimRpAddressModule(TestNxosModule): - - module = nxos_pim_rp_address - - def setUp(self): - super(TestNxosPimRpAddressModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_pim_rp_address.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_pim_rp_address.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosPimRpAddressModule, self).tearDown() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('nxos_pim_rp_address', 'config.cfg') - self.load_config.return_value = None - - def test_nxos_pim_rp_address(self): - set_module_args(dict(rp_address='5.6.7.8')) - self.execute_module(changed=True, commands=['ip pim rp-address 5.6.7.8']) - - def test_nxos_pim_rp_address_no_change(self): - set_module_args(dict(rp_address='1.2.3.4')) - self.execute_module(changed=False, commands=[]) - - def test_nxos_pim_rp_address_absent(self): - set_module_args(dict(rp_address='1.2.3.4', state='absent')) - self.execute_module(changed=True, commands=['no ip pim rp-address 1.2.3.4']) - - def test_nxos_pim_rp_address_absent_no_change(self): - set_module_args(dict(rp_address='5.6.7.8', state='absent')) - self.execute_module(changed=False, commands=[]) diff --git a/test/units/modules/network/nxos/test_nxos_static_route.py b/test/units/modules/network/nxos/test_nxos_static_route.py deleted file mode 100644 index cb9d13cc1a..0000000000 --- a/test/units/modules/network/nxos/test_nxos_static_route.py +++ /dev/null @@ -1,79 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_static_route -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosStaticRouteModule(TestNxosModule): - - module = nxos_static_route - - def setUp(self): - super(TestNxosStaticRouteModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_static_route.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_static_route.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosStaticRouteModule, self).tearDown() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('', 'nxos_static_route.cfg') - self.load_config.return_value = None - - def test_nxos_static_route_present(self): - set_module_args(dict(prefix='192.168.20.64/24', next_hop='192.0.2.3')) - self.execute_module(changed=True, commands=['ip route 192.168.20.0/24 192.0.2.3']) - - def test_nxos_static_route_present_no_defaults(self): - set_module_args(dict(prefix='192.168.20.64/24', next_hop='192.0.2.3', - route_name='testing', pref=100)) - self.execute_module(changed=True, commands=['ip route 192.168.20.0/24 192.0.2.3 name testing 100']) - - def test_nxos_static_route_present_vrf(self): - set_module_args(dict(prefix='192.168.20.64/24', next_hop='192.0.2.3', vrf='test')) - self.execute_module(changed=True, sort=False, commands=['vrf context test', 'ip route 192.168.20.0/24 192.0.2.3']) - - def test_nxos_static_route_no_change(self): - set_module_args(dict(prefix='10.10.30.64/24', next_hop='1.2.4.8')) - self.execute_module(changed=False, commands=[]) - - def test_nxos_static_route_absent(self): - set_module_args(dict(prefix='10.10.30.12/24', next_hop='1.2.4.8', state='absent')) - self.execute_module(changed=True, commands=['no ip route 10.10.30.0/24 1.2.4.8']) - - def test_nxos_static_route_absent_no_change(self): - set_module_args(dict(prefix='192.168.20.6/24', next_hop='192.0.2.3', state='absent')) - self.execute_module(changed=False, commands=[]) - - def test_nxos_static_route_absent_vrf(self): - set_module_args(dict(prefix='10.11.12.13/14', next_hop='15.16.17.18', vrf='test', state='absent')) - self.execute_module( - changed=True, sort=False, - commands=['vrf context test', 'no ip route 10.8.0.0/14 15.16.17.18'] - ) diff --git a/test/units/modules/network/nxos/test_nxos_system.py b/test/units/modules/network/nxos/test_nxos_system.py deleted file mode 100644 index 6f38dd3893..0000000000 --- a/test/units/modules/network/nxos/test_nxos_system.py +++ /dev/null @@ -1,130 +0,0 @@ -# -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_system -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosSystemModule(TestNxosModule): - - module = nxos_system - - def setUp(self): - super(TestNxosSystemModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_system.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_system.load_config') - self.load_config = self.mock_load_config.start() - - def tearDown(self): - super(TestNxosSystemModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('', 'nxos_system_config.cfg') - self.load_config.return_value = None - - def test_nxos_system_hostname_changed(self): - set_module_args(dict(hostname='foo')) - commands = ['hostname foo'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_system_domain_lookup(self): - set_module_args(dict(domain_lookup=True)) - commands = ['ip domain-lookup'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_system_missing_vrf(self): - domain_name = dict(name='example.com', vrf='example') - set_module_args(dict(domain_name=domain_name)) - self.execute_module(failed=True) - - def test_nxos_system_domain_name(self): - set_module_args(dict(domain_name=['example.net'])) - commands = ['no ip domain-name ansible.com', - 'vrf context management', 'no ip domain-name eng.ansible.com', 'exit', - 'ip domain-name example.net'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_system_domain_name_complex(self): - domain_name = dict(name='example.net', vrf='management') - set_module_args(dict(domain_name=[domain_name])) - commands = ['no ip domain-name ansible.com', - 'vrf context management', 'no ip domain-name eng.ansible.com', 'exit', - 'vrf context management', 'ip domain-name example.net', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_system_domain_search(self): - set_module_args(dict(domain_search=['example.net'])) - commands = ['vrf context management', 'no ip domain-list ansible.com', 'exit', - 'vrf context management', 'no ip domain-list redhat.com', 'exit', - 'no ip domain-list ansible.com', 'no ip domain-list redhat.com', - 'ip domain-list example.net'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_system_domain_search_complex(self): - domain_search = dict(name='example.net', vrf='management') - set_module_args(dict(domain_search=[domain_search])) - commands = ['vrf context management', 'no ip domain-list ansible.com', 'exit', - 'vrf context management', 'no ip domain-list redhat.com', 'exit', - 'no ip domain-list ansible.com', 'no ip domain-list redhat.com', - 'vrf context management', 'ip domain-list example.net', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_system_name_servers(self): - set_module_args(dict(name_servers=['1.2.3.4', '8.8.8.8'])) - commands = ['no ip name-server 172.26.1.1', - 'vrf context management', 'no ip name-server 8.8.8.8', 'exit', - 'vrf context management', 'no ip name-server 172.26.1.1', 'exit', - 'ip name-server 1.2.3.4'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_system_name_servers_complex(self): - name_servers = dict(server='1.2.3.4', vrf='management') - set_module_args(dict(name_servers=[name_servers])) - commands = ['no ip name-server 8.8.8.8', 'no ip name-server 172.26.1.1', - 'vrf context management', 'no ip name-server 8.8.8.8', 'exit', - 'vrf context management', 'no ip name-server 172.26.1.1', 'exit', - 'vrf context management', 'ip name-server 1.2.3.4', 'exit'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_system_system_mtu(self): - set_module_args(dict(system_mtu=2000)) - commands = ['system jumbomtu 2000'] - self.execute_module(changed=True, commands=commands) - - def test_nxos_system_state_absent(self): - set_module_args(dict(state='absent')) - commands = ['no hostname', 'no ip domain-name ansible.com', - 'vrf context management', 'no ip domain-name eng.ansible.com', 'exit', - 'no ip domain-list ansible.com', 'no ip domain-list redhat.com', - 'vrf context management', 'no ip domain-list ansible.com', 'exit', - 'vrf context management', 'no ip domain-list redhat.com', 'exit', - 'no ip name-server 8.8.8.8', 'no ip name-server 172.26.1.1', - 'vrf context management', 'no ip name-server 8.8.8.8', 'exit', - 'vrf context management', 'no ip name-server 172.26.1.1', 'exit', - 'no system jumbomtu'] - self.execute_module(changed=True, commands=commands) diff --git a/test/units/modules/network/nxos/test_nxos_telemetry.py b/test/units/modules/network/nxos/test_nxos_telemetry.py deleted file mode 100644 index a752ab8615..0000000000 --- a/test/units/modules/network/nxos/test_nxos_telemetry.py +++ /dev/null @@ -1,1256 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from units.modules.utils import AnsibleFailJson -from ansible.modules.network.nxos import nxos_telemetry -from ansible.module_utils.network.nxos.nxos import NxosCmdRef -from ansible.module_utils.network.nxos.config.telemetry.telemetry import Telemetry -from .nxos_module import TestNxosModule, load_fixture, set_module_args - -# TBD: These imports / import checks are only needed as a workaround for -# shippable, which fails this test due to import yaml & import ordereddict. -import pytest -from ansible.module_utils.network.nxos.nxos import nxosCmdRef_import_check -msg = nxosCmdRef_import_check() -ignore_provider_arg = True - - -@pytest.mark.skipif(len(msg), reason=msg) -class TestNxosTelemetryModule(TestNxosModule): - - module = nxos_telemetry - - def setUp(self): - super(TestNxosTelemetryModule, self).setUp() - - self.mock_FACT_LEGACY_SUBSETS = patch('ansible.module_utils.network.nxos.facts.facts.FACT_LEGACY_SUBSETS') - self.FACT_LEGACY_SUBSETS = self.mock_FACT_LEGACY_SUBSETS.start() - - self.mock_get_resource_connection_config = patch('ansible.module_utils.network.common.cfg.base.get_resource_connection') - self.get_resource_connection_config = self.mock_get_resource_connection_config.start() - - self.mock_get_resource_connection_facts = patch('ansible.module_utils.network.common.facts.facts.get_resource_connection') - self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start() - - self.mock_edit_config = patch('ansible.module_utils.network.nxos.config.telemetry.telemetry.Telemetry.edit_config') - self.edit_config = self.mock_edit_config.start() - - self.mock_execute_show_command = patch('ansible.module_utils.network.nxos.nxos.NxosCmdRef.execute_show_command') - self.execute_show_command = self.mock_execute_show_command.start() - - self.mock_get_platform_shortname = patch('ansible.module_utils.network.nxos.nxos.NxosCmdRef.get_platform_shortname') - self.get_platform_shortname = self.mock_get_platform_shortname.start() - - def tearDown(self): - super(TestNxosTelemetryModule, self).tearDown() - self.mock_FACT_LEGACY_SUBSETS.stop() - self.mock_get_resource_connection_config.stop() - self.mock_get_resource_connection_facts.stop() - self.mock_edit_config.stop() - self.mock_execute_show_command.stop() - self.get_platform_shortname.stop() - - def load_fixtures(self, commands=None, device=''): - self.mock_FACT_LEGACY_SUBSETS.return_value = dict() - self.get_resource_connection_config.return_value = 'Connection' - self.get_resource_connection_facts.return_value = 'Connection' - self.edit_config.return_value = None - - # --------------------------- - # Telemetry Global Test Cases - # --------------------------- - - def test_tms_global_merged_n9k(self): - # Assumes feature telemetry is disabled - # TMS global config is not present. - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - config=dict( - certificate={'key': '/bootflash/sample.key', 'hostname': 'server.example.com'}, - compression='gzip', - source_interface='Ethernet2/1', - vrf='blue', - ) - ), ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'certificate /bootflash/sample.key server.example.com', - 'destination-profile', - 'use-compression gzip', - 'source-interface Ethernet2/1', - 'use-vrf blue' - ]) - - def test_tms_global_checkmode_n9k(self): - # Assumes feature telemetry is disabled - # TMS global config is not present. - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - _ansible_check_mode=True, - config=dict( - certificate={'key': '/bootflash/sample.key', 'hostname': 'server.example.com'}, - compression='gzip', - source_interface='Ethernet2/1', - vrf='blue', - ) - ), ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'certificate /bootflash/sample.key server.example.com', - 'destination-profile', - 'use-compression gzip', - 'source-interface Ethernet2/1', - 'use-vrf blue' - ]) - - def test_tms_global_merged2_n9k(self): - # Assumes feature telemetry is disabled - # TMS global config is not present. - # Configure only vrf - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - config=dict( - vrf='blue', - ) - ), ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'destination-profile', - 'use-vrf blue' - ]) - - def test_tms_global_idempotent_n9k(self): - # Assumes feature telemetry is enabled - # TMS global config is present. - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - config=dict( - certificate={'key': '/bootflash/server.key', 'hostname': 'localhost'}, - compression='gzip', - source_interface='loopback55', - vrf='management', - ) - ), ignore_provider_arg) - self.execute_module(changed=False) - - def test_tms_global_change_cert_n9k(self): - # Assumes feature telemetry is enabled - # TMS global config is present - # Change certificate - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - config=dict( - certificate={'key': '/bootflash/server.key', 'hostname': 'my_host'}, - compression='gzip', - source_interface='loopback55', - vrf='management', - ) - ), ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'telemetry', - 'certificate /bootflash/server.key my_host' - ]) - - def test_tms_global_change_interface_n9k(self): - # Assumes feature telemetry is enabled - # TMS global config is present - # Change interface - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - config=dict( - certificate={'key': '/bootflash/server.key', 'hostname': 'localhost'}, - compression='gzip', - source_interface='Ethernet8/1', - vrf='management', - ) - ), ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'telemetry', - 'destination-profile', - 'source-interface Ethernet8/1' - ]) - - def test_tms_global_change_several_n9k(self): - # Assumes feature telemetry is enabled - # TMS global config is present - # Change source_interface, vrf and cert - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - config=dict( - certificate={'key': '/bootflash/server_5.key', 'hostname': 'my_host'}, - compression='gzip', - source_interface='Ethernet8/1', - vrf='blue', - ) - ), ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'telemetry', - 'certificate /bootflash/server_5.key my_host', - 'destination-profile', - 'source-interface Ethernet8/1', - 'use-vrf blue', - ]) - - # ------------------------------ - # Telemetry DestGroup Test Cases - # ------------------------------ - - def test_tms_destgroup_input_validation_1(self): - # Mandatory parameter 'id' missing. - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'destination': {'ip': '192.168.1.1', 'port': '5001', 'protocol': 'GRPC', 'encoding': 'GPB'}} - ], 'destination_groups') - set_module_args(args, ignore_provider_arg) - with pytest.raises(AnsibleFailJson) as errinfo: - self.execute_module() - testdata = errinfo.value.args[0] - assert 'Parameter <id> under <destination_groups> is required' in str(testdata['msg']) - assert testdata['failed'] - - def test_tms_destgroup_input_validation_2(self): - # Parameter 'destination' is not a dict. - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '88', - 'destination': '192.168.1.1', - } - ], 'destination_groups') - set_module_args(args, ignore_provider_arg) - with pytest.raises(AnsibleFailJson) as errinfo: - self.execute_module() - testdata = errinfo.value.args[0] - assert "Parameter <destination> under <destination_groups> must be a dict" in str(testdata['msg']) - assert testdata['failed'] - - def test_tms_destgroup_input_validation_3(self): - # Parameter 'destination' is not a dict. - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '88', - 'ip': '192.168.1.1', - 'port': '5001' - } - ], 'destination_groups') - set_module_args(args, ignore_provider_arg) - with pytest.raises(AnsibleFailJson) as errinfo: - self.execute_module() - testdata = errinfo.value.args[0] - assert 'Playbook entry contains unrecongnized parameters' in str(testdata['msg']) - assert testdata['failed'] - - def test_tms_destgroup_merged_n9k(self): - # Assumes feature telemetry is enabled - # TMS destgroup config is not present. - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '88', - 'destination': {'ip': '192.168.1.1', 'port': '5001', 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - {'id': '88', - 'destination': {'ip': '192.168.1.2', 'port': '6001', 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - {'id': '99', - 'destination': {'ip': '192.168.1.2', 'port': '6001', 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - {'id': '99', - 'destination': {'ip': '192.168.1.1', 'port': '5001', 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - ], 'destination_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'destination-group 88', - 'ip address 192.168.1.1 port 5001 protocol grpc encoding gpb', - 'ip address 192.168.1.2 port 6001 protocol grpc encoding gpb', - 'destination-group 99', - 'ip address 192.168.1.2 port 6001 protocol grpc encoding gpb', - 'ip address 192.168.1.1 port 5001 protocol grpc encoding gpb', - ]) - - def test_tms_destgroup_checkmode_n9k(self): - # Assumes feature telemetry is enabled - # TMS destgroup config is not present. - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '88', - 'destination': {'ip': '192.168.1.1', 'port': '5001', 'protocol': 'GRPC', 'encoding': 'GPB'}, - } - ], 'destination_groups', state='merged', check_mode=True) - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'destination-group 88', - 'ip address 192.168.1.1 port 5001 protocol grpc encoding gpb' - ]) - - def test_tms_destgroup_merged2_n9k(self): - # Assumes feature telemetry is enabled - # TMS destgroup config is not present. - # Configure only identifier - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '88'} - ], 'destination_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'destination-group 88', - ]) - - def test_tms_destgroup_idempotent_n9k(self): - # Assumes feature telemetry is enabled - # TMS destgroup config is not present. - # Configure only identifier - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '2', - 'destination': {'ip': '192.168.0.2', 'port': '60001', 'protocol': 'grpc', 'encoding': 'gpb'}, - } - ], 'destination_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=False) - - def test_tms_destgroup_idempotent2_n9k(self): - # Assumes feature telemetry is enabled - # TMS destgroup config is not present. - # Configure only identifier - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '2'} - ], 'destination_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=False) - - def test_tms_destgroup_merged_aggregate_idempotent_n9k(self): - # Assumes feature telemetry is enabled - # TMS destgroup config is present. - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '2', - 'destination': {'ip': '192.168.0.1', 'port': '50001', 'protocol': 'gRPC', 'encoding': 'gpb'} - }, - {'id': '10', - 'destination': {'ip': '192.168.0.1', 'port': '50001', 'protocol': 'gRPC', 'encoding': 'gpb'} - } - ], 'destination_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=False) - - def test_tms_destgroup_change_n9k(self): - # TMS destgroup config is not present. - # Change protocol and encoding for dest group 2 - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '2', - 'destination': {'ip': '192.168.0.1', 'port': '50001', 'protocol': 'http', 'encoding': 'JSON'} - }, - {'id': '10', - 'destination': {'ip': '192.168.0.1', 'port': '50001', 'protocol': 'gRPC', 'encoding': 'gpb'} - } - ], 'destination_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'telemetry', 'destination-group 2', - 'ip address 192.168.0.1 port 50001 protocol http encoding json' - ]) - - def test_tms_destgroup_add_n9k(self): - # TMS destgroup config is not present. - # Add destinations to destgroup 10 - # Add new destgroup 55 and 56 - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '10', - 'destination': {'ip': '192.168.0.1', 'port': '50001', 'protocol': 'gRPC', 'encoding': 'gpb'} - }, - {'id': '10', - 'destination': {'ip': '192.168.0.10', 'port': '50001', 'protocol': 'gRPC', 'encoding': 'gpb'} - }, - {'id': '55', - 'destination': {'ip': '192.168.0.2', 'port': '50001', 'protocol': 'gRPC', 'encoding': 'gpb'} - }, - {'id': '56'}, - ], 'destination_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'telemetry', - 'destination-group 10', - 'ip address 192.168.0.10 port 50001 protocol grpc encoding gpb', - 'destination-group 55', - 'ip address 192.168.0.2 port 50001 protocol grpc encoding gpb', - 'destination-group 56' - ]) - - # -------------------------------- - # Telemetry SensorGroup Test Cases - # -------------------------------- - - def test_tms_sensorgroup_merged_n9k(self): - # Assumes feature telemetry is enabled - # TMS sensorgroup config is not present. - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - td55_name = 'sys/bgp/inst/dom-default/peer-[10.10.10.11]/ent-[10.10.10.11]' - td55_fc = 'or(eq(ethpmPhysIf.operSt,"down"),eq(ethpmPhysIf.operSt,"up"))' - args = build_args([ - {'id': '2', - 'data_source': 'NX-API', - 'path': {'name': 'sys/bgp', 'depth': 0, 'query_condition': 'foo', 'filter_condition': 'foo'}, - }, - {'id': '2', - 'data_source': 'NX-API', - 'path': {'name': 'sys/bgp/inst', 'depth': 'unbounded', 'query_condition': 'foo', 'filter_condition': 'foo'}, - }, - {'id': '55', - 'data_source': 'DME', - 'path': {'name': td55_name, 'depth': 0, 'query_condition': 'foo', 'filter_condition': 'foo'}, - }, - {'id': '55', - 'data_source': 'DME', - 'path': {'name': 'sys/ospf', 'depth': 0, 'query_condition': 'foo', 'filter_condition': td55_fc}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'sensor-group 2', - 'data-source NX-API', - 'path sys/bgp depth 0 query-condition foo filter-condition foo', - 'path sys/bgp/inst depth unbounded query-condition foo filter-condition foo', - 'sensor-group 55', - 'data-source DME', - 'path sys/bgp/inst/dom-default/peer-[10.10.10.11]/ent-[10.10.10.11] depth 0 query-condition foo filter-condition foo', - 'path sys/ospf depth 0 query-condition foo filter-condition or(eq(ethpmPhysIf.operSt,"down"),eq(ethpmPhysIf.operSt,"up"))', - ]) - - def test_tms_sensorgroup_input_validation_1(self): - # Mandatory parameter 'id' missing. - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'data_source': 'DME', - 'path': {'name': 'sys/bgp', 'depth': 0, 'query_condition': 'query_condition_xyz', 'filter_condition': 'filter_condition_xyz'}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - with pytest.raises(AnsibleFailJson) as errinfo: - self.execute_module() - testdata = errinfo.value.args[0] - assert 'Parameter <id> under <sensor_groups> is required' in str(testdata['msg']) - assert testdata['failed'] - - def test_tms_sensorgroup_input_validation_2(self): - # Path present but mandatory 'name' key is not - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '77', - 'data_source': 'DME', - 'path': {'depth': 0, 'query_condition': 'query_condition_xyz', 'filter_condition': 'filter_condition_xyz'}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - with pytest.raises(AnsibleFailJson) as errinfo: - self.execute_module() - testdata = errinfo.value.args[0] - assert 'Parameter <path> under <sensor_groups> requires <name> key' in str(testdata['msg']) - assert testdata['failed'] - - def test_tms_sensorgroup_resource_key_n9k(self): - # TMS sensorgroup config is not present. - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '77'} - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'sensor-group 77', - ]) - - def test_tms_sensorgroup_merged_variable_args1_n9k(self): - # TMS sensorgroup config is not present. - # Only path key name provided - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '77', - 'data_source': 'DME', - 'path': {'name': 'sys/bgp'}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'sensor-group 77', - 'data-source DME', - 'path sys/bgp', - ]) - - def test_tms_sensorgroup_merged_variable_args2_n9k(self): - # TMS sensorgroup config is not present. - # Only path keys name and depth provided - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '77', - 'data_source': 'DME', - 'path': {'name': 'sys/bgp', 'depth': 0}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'sensor-group 77', - 'data-source DME', - 'path sys/bgp depth 0', - ]) - - def test_tms_sensorgroup_merged_variable_args3_n9k(self): - # TMS sensorgroup config is not present. - # Only path keys name, depth and query_condition provided - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '77', - 'data_source': 'DME', - 'path': {'name': 'sys/bgp', 'depth': 0, 'query_condition': 'query_condition_xyz'}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'sensor-group 77', - 'data-source DME', - 'path sys/bgp depth 0 query-condition query_condition_xyz', - ]) - - def test_tms_sensorgroup_merged_variable_args4_n9k(self): - # TMS sensorgroup config is not present. - # Only path keys name, depth and filter_condition provided - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '77', - 'data_source': 'DME', - 'path': {'name': 'sys/bgp', 'depth': 0, 'filter_condition': 'filter_condition_xyz'}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'sensor-group 77', - 'data-source DME', - 'path sys/bgp depth 0 filter-condition filter_condition_xyz', - ]) - - def test_tms_sensorgroup_merged_idempotent_n9k(self): - # Assumes feature telemetry is enabled - # TMS sensorgroup config is not present. - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '2', - 'data_source': 'DME', - 'path': {'name': 'sys/ospf', 'depth': 0, 'query_condition': 'qc', 'filter_condition': 'fc'}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=False) - - def test_tms_sensorgroup_quotes_merged_idempotent_n9k(self): - # Assumes feature telemetry is enabled - # TMS sensorgroup config is present with quotes in NX-API path. - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K_SGs.cfg') - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '2', - 'data_source': 'NX-API', - 'path': {'name': '"show mac address-table count"', 'depth': 2}, - }, - {'id': '3', - 'data_source': 'NX-API', - 'path': {'name': '"show interface ethernet1/1-52"'}, - }, - {'id': '1', - 'path': {'name': 'sys/procsys', 'depth': 1}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=False) - - def test_tms_sensorgroup_vxlan_idempotent_n9k(self): - # TMS sensorgroup config present. - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '56', - 'data_source': 'DME', - 'path': {'name': 'vxlan'}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=False) - - def test_tms_sensorgroup_idempotent_variable1_n9k(self): - # TMS sensorgroup config is present with path key name. - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '2', - 'data_source': 'DME', - 'path': {'name': 'sys/bgp/inst/dom-default/peer-[10.10.10.11]/ent-[10.10.10.11]'}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=False) - - def test_tms_sensorgroup_idempotent_variable2_n9k(self): - # TMS sensorgroup config is present with path key name and depth. - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '2', - 'data_source': 'DME', - 'path': {'name': 'boo', 'depth': 0}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=False) - - def test_tms_sensorgroup_idempotent_resource_key_n9k(self): - # TMS sensorgroup config is present resource key only. - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '55'} - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=False) - - def test_tms_sensorgroup_present_path_environment_n9k(self): - # TMS sensorgroup config is not present. - # Path name 'environment' test - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '77', - 'data_source': 'YANG', - 'path': {'name': 'environment'}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'sensor-group 77', - 'data-source YANG', - 'path environment', - ]) - - def test_tms_sensorgroup_present_path_interface_n9k(self): - # TMS sensorgroup config is not present. - # Path name 'interface' test - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '77', - 'data_source': 'NATIVE', - 'path': {'name': 'interface'}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'sensor-group 77', - 'data-source NATIVE', - 'path interface', - ]) - - def test_tms_sensorgroup_present_path_interface_n9k(self): - # TMS sensorgroup config is not present. - # Path name 'resources' test - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': '77', - 'data_source': 'NX-API', - 'path': {'name': 'resources'}, - }, - ], 'sensor_groups') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'sensor-group 77', - 'data-source NX-API', - 'path resources', - ]) - - # --------------------------------- - # Telemetry Subscription Test Cases - # --------------------------------- - - def test_tms_subscription_merged_n9k(self): - # TMS subscription config is not present. - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': 5, - 'destination_group': 55, - 'sensor_group': {'id': 1, 'sample_interval': 1000}, - }, - {'id': 88, - 'destination_group': 3, - 'sensor_group': {'id': 4, 'sample_interval': 2000}, - }, - ], 'subscriptions') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'subscription 5', - 'dst-grp 55', - 'snsr-grp 1 sample-interval 1000', - 'subscription 88', - 'dst-grp 3', - 'snsr-grp 4 sample-interval 2000' - ]) - - def test_tms_subscription_merged_idempotent_n9k(self): - # TMS subscription config is not present. - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': 3, - }, - {'id': 7, - 'destination_group': 10, - 'sensor_group': {'id': 2, 'sample_interval': 1000}, - }, - {'id': 5, - 'destination_group': 2, - 'sensor_group': {'id': 2, 'sample_interval': 1000}, - }, - ], 'subscriptions') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=False) - - def test_tms_subscription_merged_change1_n9k(self): - # TMS subscription config present. - # Change sample interval for sensor group 2 - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': 3, - }, - {'id': 7, - 'destination_group': 10, - 'sensor_group': {'id': 2, 'sample_interval': 3000}, - }, - {'id': 5, - 'destination_group': 2, - 'sensor_group': {'id': 2, 'sample_interval': 1000}, - }, - ], 'subscriptions') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'telemetry', - 'subscription 7', - 'snsr-grp 2 sample-interval 3000' - ]) - - def test_tms_subscription_add_n9k(self): - # TMS subscription config present. - # Add new destination_group and sensor_group to subscription 5 - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - args = build_args([ - {'id': 3, - }, - {'id': 7, - 'destination_group': 10, - 'sensor_group': {'id': 2, 'sample_interval': 1000}, - }, - {'id': 5, - 'destination_group': 2, - 'sensor_group': {'id': 2, 'sample_interval': 1000}, - }, - {'id': 5, - 'destination_group': 7, - 'sensor_group': {'id': 2, 'sample_interval': 1000}, - }, - {'id': 5, - 'destination_group': 8, - 'sensor_group': {'id': 9, 'sample_interval': 1000}, - }, - {'id': 5, - 'destination_group': 9, - 'sensor_group': {'id': 10, 'sample_interval': 1000}, - }, - ], 'subscriptions') - set_module_args(args, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'telemetry', - 'subscription 5', - 'dst-grp 7', - 'dst-grp 8', - 'dst-grp 9', - 'snsr-grp 9 sample-interval 1000', - 'snsr-grp 10 sample-interval 1000' - ]) - - def test_telemetry_full_n9k(self): - # Assumes feature telemetry is disabled - # TMS global config is not present. - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - set_module_args({ - 'state': 'merged', - 'config': { - 'certificate': {'key': '/bootflash/sample.key', 'hostname': 'server.example.com'}, - 'compression': 'gzip', - 'source_interface': 'Ethernet2/1', - 'vrf': 'blue', - 'destination_groups': [ - {'id': '88', - 'destination': {'ip': '192.168.1.1', 'port': '5001', 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - {'id': '88', - 'destination': {'ip': '192.168.1.2', 'port': '6001', 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - {'id': '99', - 'destination': {'ip': '192.168.1.2', 'port': '6001', 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - {'id': '99', - 'destination': {'ip': '192.168.1.1', 'port': '5001', 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - ], - 'sensor_groups': [ - {'id': '77', - 'data_source': 'DME', - 'path': {'name': 'sys/bgp', 'depth': 0, 'query_condition': 'query_condition_xyz', 'filter_condition': 'filter_condition_xyz'}, - }, - {'id': '99', - 'data_source': 'DME', - 'path': {'name': 'sys/bgp', 'depth': 0, 'query_condition': 'query_condition_xyz', 'filter_condition': 'filter_condition_xyz'}, - }, - ], - 'subscriptions': [ - {'id': 5, - 'destination_group': 88, - 'sensor_group': {'id': 77, 'sample_interval': 1000}, - }, - {'id': 5, - 'destination_group': 99, - 'sensor_group': {'id': 77, 'sample_interval': 1000}, - }, - {'id': 88, - 'destination_group': 99, - 'sensor_group': {'id': 99, 'sample_interval': 2000}, - }, - ], - } - }, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'feature telemetry', - 'telemetry', - 'certificate /bootflash/sample.key server.example.com', - 'destination-profile', - 'use-compression gzip', - 'source-interface Ethernet2/1', - 'use-vrf blue', - 'destination-group 88', - 'ip address 192.168.1.1 port 5001 protocol grpc encoding gpb', - 'ip address 192.168.1.2 port 6001 protocol grpc encoding gpb', - 'destination-group 99', - 'ip address 192.168.1.2 port 6001 protocol grpc encoding gpb', - 'ip address 192.168.1.1 port 5001 protocol grpc encoding gpb', - 'sensor-group 77', - 'data-source DME', - 'path sys/bgp depth 0 query-condition query_condition_xyz filter-condition filter_condition_xyz', - 'sensor-group 99', - 'data-source DME', - 'path sys/bgp depth 0 query-condition query_condition_xyz filter-condition filter_condition_xyz', - 'subscription 5', - 'dst-grp 88', - 'dst-grp 99', - 'snsr-grp 77 sample-interval 1000', - 'subscription 88', - 'dst-grp 99', - 'snsr-grp 99 sample-interval 2000' - ]) - - def test_telemetry_deleted_input_validation_n9k(self): - # State is 'deleted' and 'config' key present. - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - state='deleted', - config=dict( - certificate={'key': '/bootflash/server.key', 'hostname': 'localhost'}, - compression='gzip', - source_interface='loopback55', - vrf='management', - ) - ), ignore_provider_arg) - with pytest.raises(AnsibleFailJson) as errinfo: - self.execute_module() - testdata = errinfo.value.args[0] - assert 'Remove config key from playbook when state is <deleted>' in str(testdata['msg']) - assert testdata['failed'] - - def test_telemetry_deleted_n9k(self): - # Assumes feature telemetry is enabled - # TMS global config is present. - # Make absent with all playbook keys provided - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - state='deleted', - ), ignore_provider_arg) - self.execute_module(changed=True, commands=['no telemetry']) - - def test_telemetry_deleted_idempotent_n9k(self): - # Assumes feature telemetry is enabled - # TMS global config is present. - # Make absent with all playbook keys provided - self.execute_show_command.return_value = None - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - state='deleted', - ), ignore_provider_arg) - self.execute_module(changed=False) - - def test_tms_replaced1_n9k(self): - # Assumes feature telemetry is enabled - # Modify global config and remove everything else - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - set_module_args(dict( - state='replaced', - config=dict( - certificate={'key': '/bootflash/sample.key', 'hostname': 'server.example.com'}, - compression='gzip', - vrf='blue', - ) - ), ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'telemetry', - 'no subscription 3', - 'no subscription 4', - 'no subscription 5', - 'no subscription 6', - 'no subscription 7', - 'no sensor-group 2', - 'no sensor-group 55', - 'no sensor-group 56', - 'no destination-group 2', - 'no destination-group 10', - 'certificate /bootflash/sample.key server.example.com', - 'destination-profile', - 'no source-interface loopback55', - 'use-vrf blue' - ]) - - def test_tms_replaced2_n9k(self): - # Assumes feature telemetry is enabled - # Remove/default all global config - # Modify destination-group 10, add 11 and 99, remove 2 - # Modify sensor-group 55, 56 - # remove all subscriptions - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - set_module_args({ - 'state': 'replaced', - 'config': { - 'destination_groups': [ - {'id': 10, - 'destination': {'ip': '192.168.1.1', 'port': '5001', 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - {'id': 11, - 'destination': {'ip': '192.168.1.2', 'port': '6001', 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - {'id': 99, - 'destination': {'ip': '192.168.1.2', 'port': '6001', 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - {'id': '99', - 'destination': {'ip': '192.168.1.1', 'port': '5001', 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - ], - 'sensor_groups': [ - {'id': 55, - 'data_source': 'NX-API', - 'path': {'name': 'sys/bgp', 'depth': 0, 'query_condition': 'query_condition_xyz', 'filter_condition': 'filter_condition_xyz'}, - }, - {'id': '56', - 'data_source': 'NX-API', - 'path': {'name': 'sys/bgp', 'depth': 0, 'query_condition': 'query_condition_xyz', 'filter_condition': 'filter_condition_xyz'}, - }, - ], - } - }, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'telemetry', - 'no subscription 3', - 'no subscription 5', - 'no subscription 4', - 'no subscription 7', - 'no subscription 6', - 'sensor-group 56', - 'no data-source DME', - 'no path environment', - 'no path interface', - 'no path resources', - 'no path vxlan', - 'no sensor-group 2', - 'destination-group 10', - 'no ip address 192.168.0.1 port 50001 protocol grpc encoding gpb', - 'no ip address 192.168.0.2 port 60001 protocol grpc encoding gpb', - 'no destination-group 2', - 'destination-group 11', - 'ip address 192.168.1.2 port 6001 protocol grpc encoding gpb', - 'destination-group 10', - 'ip address 192.168.1.1 port 5001 protocol grpc encoding gpb', - 'destination-group 99', - 'ip address 192.168.1.2 port 6001 protocol grpc encoding gpb', - 'ip address 192.168.1.1 port 5001 protocol grpc encoding gpb', - 'sensor-group 55', - 'data-source NX-API', - 'path sys/bgp depth 0 query-condition query_condition_xyz filter-condition filter_condition_xyz', - 'sensor-group 56', - 'data-source NX-API', - 'path sys/bgp depth 0 query-condition query_condition_xyz filter-condition filter_condition_xyz', - 'no certificate /bootflash/server.key localhost', - 'no destination-profile' - ]) - - def test_tms_replaced3_n9k(self): - # Assumes feature telemetry is enabled - # Modify vrf global config, remove default all other global config. - # destination-group 2 destination '192.168.0.1' idempotent - # destination-group 2 destination '192.168.0.2' remove - # remove all other destination-groups - # Modify sensor-group 55 and delete all others - # Modify subscription 7, add 10 and delete all others - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - set_module_args({ - 'state': 'replaced', - 'config': { - 'vrf': 'blue', - 'destination_groups': [ - {'id': 2, - 'destination': {'ip': '192.168.0.1', 'port': 50001, 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - ], - 'sensor_groups': [ - {'id': 55, - 'data_source': 'NX-API', - 'path': {'name': 'sys/bgp', 'depth': 0, 'query_condition': 'query_condition_xyz', 'filter_condition': 'filter_condition_xyz'}, - }, - ], - 'subscriptions': [ - {'id': 7, - 'destination_group': 10, - 'sensor_group': {'id': 55, 'sample_interval': 1000}, - }, - {'id': 10, - 'destination_group': 2, - 'sensor_group': {'id': 55, 'sample_interval': 1000}, - }, - ], - } - }, ignore_provider_arg) - self.execute_module(changed=True, commands=[ - 'telemetry', - 'no subscription 3', - 'no subscription 5', - 'no subscription 4', - 'subscription 7', - 'no snsr-grp 2 sample-interval 1000', - 'no subscription 6', - 'no sensor-group 56', - 'no sensor-group 2', - 'no destination-group 10', - 'destination-group 2', - 'no ip address 192.168.0.2 port 60001 protocol grpc encoding gpb', - 'sensor-group 55', - 'data-source NX-API', - 'path sys/bgp depth 0 query-condition query_condition_xyz filter-condition filter_condition_xyz', - 'subscription 10', - 'dst-grp 2', - 'snsr-grp 55 sample-interval 1000', - 'subscription 7', - 'snsr-grp 55 sample-interval 1000', - 'no certificate /bootflash/server.key localhost', - 'destination-profile', - 'no use-compression gzip', - 'no source-interface loopback55', - 'use-vrf blue' - ]) - - def test_tms_replaced_idempotent_n9k(self): - # Assumes feature telemetry is enabled - # Modify vrf global config, remove default all other global config. - # destination-group 2 destination '192.168.0.1' idempotent - # destination-group 2 destination '192.168.0.2' remove - # remove all other destination-groups - # Modify sensor-group 55 and delete all others - # Modify subscription 7, add 10 and delete all others - self.execute_show_command.return_value = load_fixture('nxos_telemetry', 'N9K.cfg') - self.get_platform_shortname.return_value = 'N9K' - set_module_args({ - 'state': 'replaced', - 'config': { - 'certificate': {'key': '/bootflash/server.key', 'hostname': 'localhost'}, - 'compression': 'gzip', - 'vrf': 'management', - 'source_interface': 'loopback55', - 'destination_groups': [ - {'id': 2, - 'destination': {'ip': '192.168.0.1', 'port': 50001, 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - {'id': 2, - 'destination': {'ip': '192.168.0.2', 'port': 60001, 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - {'id': 10, - 'destination': {'ip': '192.168.0.1', 'port': 50001, 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - {'id': 10, - 'destination': {'ip': '192.168.0.2', 'port': 60001, 'protocol': 'GRPC', 'encoding': 'GPB'}, - }, - ], - 'sensor_groups': [ - {'id': 2, - 'data_source': 'DME', - 'path': {'name': 'boo', 'depth': 0}, - }, - {'id': 2, - 'path': {'name': 'sys/ospf', 'depth': 0, 'query_condition': 'qc', 'filter_condition': 'fc'}, - }, - {'id': 2, - 'path': {'name': 'interfaces', 'depth': 0}, - }, - {'id': 2, - 'path': {'name': 'sys/bgp'}, - }, - {'id': 2, - 'path': {'name': 'sys/bgp/inst', 'depth': 0, 'query_condition': 'foo', 'filter_condition': 'foo'}, - }, - {'id': 2, - 'path': {'name': 'sys/bgp/inst/dom-default/peer-[10.10.10.11]/ent-[10.10.10.11]'}, - }, - {'id': 2, - 'path': {'name': 'sys/bgp/inst/dom-default/peer-[20.20.20.11]/ent-[20.20.20.11]'}, - }, - {'id': 2, - 'path': {'name': 'too', 'depth': 0, 'filter_condition': 'foo'}, - }, - {'id': 55}, - {'id': 56, - 'data_source': 'DME', - }, - {'id': 56, - 'path': {'name': 'environment'}, - }, - {'id': 56, - 'path': {'name': 'interface'}, - }, - {'id': 56, - 'path': {'name': 'resources'}, - }, - {'id': 56, - 'path': {'name': 'vxlan'}, - }, - ], - 'subscriptions': [ - {'id': 3}, - {'id': 4, - 'destination_group': 2, - 'sensor_group': {'id': 2, 'sample_interval': 1000}, - }, - {'id': 5, - 'destination_group': 2, - }, - {'id': 5, - 'sensor_group': {'id': 2, 'sample_interval': 1000}, - }, - {'id': 6, - 'destination_group': 10, - }, - {'id': 7, - 'destination_group': 10, - 'sensor_group': {'id': 2, 'sample_interval': 1000}, - }, - ], - } - }, ignore_provider_arg) - self.execute_module(changed=False, commands=[]) - - -def build_args(data, type, state=None, check_mode=None): - if state is None: - state = 'merged' - if check_mode is None: - check_mode = False - args = { - 'state': state, - '_ansible_check_mode': check_mode, - 'config': { - type: data - } - } - return args diff --git a/test/units/modules/network/nxos/test_nxos_vlan.py b/test/units/modules/network/nxos/test_nxos_vlan.py deleted file mode 100644 index 30c9f076f5..0000000000 --- a/test/units/modules/network/nxos/test_nxos_vlan.py +++ /dev/null @@ -1,181 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import json - -from units.compat.mock import patch -from ansible.modules.network.nxos import _nxos_vlan -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosVlanModule(TestNxosModule): - - module = _nxos_vlan - - def setUp(self): - super(TestNxosVlanModule, self).setUp() - - self.mock_run_commands = patch('ansible.modules.network.nxos._nxos_vlan.run_commands') - self.run_commands = self.mock_run_commands.start() - - self.mock_load_config = patch('ansible.modules.network.nxos._nxos_vlan.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos._nxos_vlan.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_get_capabilities = patch('ansible.modules.network.nxos._nxos_vlan.get_capabilities') - self.get_capabilities = self.mock_get_capabilities.start() - self.get_capabilities.return_value = {'device_info': {'network_os_platform': 'N9K-9000v'}, 'network_api': 'cliconf'} - - def tearDown(self): - super(TestNxosVlanModule, self).tearDown() - self.mock_run_commands.stop() - self.mock_load_config.stop() - self.mock_get_config.stop() - self.mock_get_capabilities.stop() - - def load_fixtures(self, commands=None, device=''): - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for item in commands: - try: - obj = json.loads(item) - command = obj['command'] - except ValueError: - command = item - filename = '%s.txt' % str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture('nxos_vlan', filename)) - return output - - def agg_load_from_file(*args, **kwargs): - """Load vlan output for aggregate/purge tests""" - return([load_fixture('nxos_vlan', 'agg_show_vlan_brief.txt')]) - - if '_agg_' in self._testMethodName: - self.run_commands.side_effect = agg_load_from_file - else: - self.run_commands.side_effect = load_from_file - - self.load_config.return_value = None - self.get_config.return_value = load_fixture('nxos_vlan', 'config.cfg') - - def test_nxos_vlan_agg_1(self): - # Aggregate: vlan 4/5 exist -> Add 6 - set_module_args(dict(aggregate=[ - {'name': '_5_', 'vlan_id': 5}, - {'name': '_6_', 'vlan_id': 6} - ])) - self.execute_module(changed=True, commands=[ - 'vlan 6', - 'name _6_', - 'state active', - 'no shutdown', - 'exit' - ]) - - def test_nxos_vlan_agg_2(self): - # Aggregate: vlan 4/5 exist -> Add none (idempotence) - set_module_args(dict(aggregate=[ - {'name': '_5_', 'vlan_id': 5}, - {'name': '_4_', 'vlan_id': 4} - ])) - self.execute_module(changed=False) - - def test_nxos_vlan_agg_3(self): - # Aggregate/Purge: vlan 4/5 exist -> Add 6, Purge 4 - set_module_args(dict(aggregate=[ - {'name': '_5_', 'vlan_id': 5}, - {'name': '_6_', 'vlan_id': 6} - ], purge=True)) - self.execute_module(changed=True, commands=[ - 'vlan 6', - 'name _6_', - 'state active', - 'no shutdown', - 'exit', - 'no vlan 4' - ]) - - def test_nxos_vlan_agg_4(self): - # Aggregate/Purge: vlan 4/5 exist -> Purge None (idempotence) - set_module_args(dict(aggregate=[ - {'name': '_5_', 'vlan_id': 5}, - {'name': '_4_', 'vlan_id': 4} - ])) - self.execute_module(changed=False) - - def test_nxos_vlan_agg_5(self): - # Purge with Single Vlan: vlan 4/5 exist -> Add 6, Purge 4/5 - set_module_args(dict(vlan_id=6, name='_6_', purge=True)) - self.execute_module(changed=True, commands=[ - 'vlan 6', - 'name _6_', - 'state active', - 'no shutdown', - 'exit', - 'no vlan 4', - 'no vlan 5' - ]) - - def test_nxos_vlan_agg_6(self): - # Purge All: vlan 4/5 exist -> Purge 4/5 - set_module_args(dict(vlan_id=1, purge=True)) - self.execute_module(changed=True, commands=[ - 'no vlan 4', - 'no vlan 5' - ]) - - def test_nxos_vlan_range(self): - set_module_args(dict(vlan_range='6-10')) - self.execute_module(changed=True, commands=['vlan 6', 'vlan 7', 'vlan 8', 'vlan 9', 'vlan 10']) - - def test_nxos_vlan_range_absent(self): - set_module_args(dict(vlan_range='1-5', state='absent')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['no vlan 1']) - - def test_nxos_vlan_id(self): - set_module_args(dict(vlan_id='15', state='present')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vlan 15', 'state active', 'no shutdown', 'exit']) - - def test_nxos_vlan_id_absent(self): - set_module_args(dict(vlan_id='1', state='absent')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['no vlan 1']) - - def test_nxos_vlan_named_vlan(self): - set_module_args(dict(vlan_id='15', name='WEB')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vlan 15', 'name WEB', 'state active', 'no shutdown', 'exit']) - - def test_nxos_vlan_shut_down(self): - set_module_args(dict(vlan_id='1', admin_state='down')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vlan 1', 'shutdown', 'exit']) - - def test_nxos_vlan_no_change(self): - set_module_args(dict(vlan_id='1', name='default', vlan_state='active', admin_state='up')) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) diff --git a/test/units/modules/network/nxos/test_nxos_vlans.py b/test/units/modules/network/nxos/test_nxos_vlans.py deleted file mode 100644 index b8939c668d..0000000000 --- a/test/units/modules/network/nxos/test_nxos_vlans.py +++ /dev/null @@ -1,210 +0,0 @@ -# (c) 2019 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from textwrap import dedent -from units.compat.mock import patch -from units.modules.utils import AnsibleFailJson -from ansible.modules.network.nxos import nxos_vlans -from ansible.module_utils.network.nxos.config.vlans.vlans import Vlans -from .nxos_module import TestNxosModule, load_fixture, set_module_args - -ignore_provider_arg = True - - -class TestNxosVlansModule(TestNxosModule): - - module = nxos_vlans - - def setUp(self): - super(TestNxosVlansModule, self).setUp() - - self.mock_FACT_LEGACY_SUBSETS = patch('ansible.module_utils.network.nxos.facts.facts.FACT_LEGACY_SUBSETS') - self.FACT_LEGACY_SUBSETS = self.mock_FACT_LEGACY_SUBSETS.start() - - self.mock_get_resource_connection_config = patch('ansible.module_utils.network.common.cfg.base.get_resource_connection') - self.get_resource_connection_config = self.mock_get_resource_connection_config.start() - - self.mock_get_resource_connection_facts = patch('ansible.module_utils.network.common.facts.facts.get_resource_connection') - self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start() - - self.mock_edit_config = patch('ansible.module_utils.network.nxos.config.vlans.vlans.Vlans.edit_config') - self.edit_config = self.mock_edit_config.start() - - self.mock_get_device_data = patch('ansible.module_utils.network.nxos.facts.vlans.vlans.VlansFacts.get_device_data') - self.get_device_data = self.mock_get_device_data.start() - - def tearDown(self): - super(TestNxosVlansModule, self).tearDown() - self.mock_FACT_LEGACY_SUBSETS.stop() - self.mock_get_resource_connection_config.stop() - self.mock_get_resource_connection_facts.stop() - self.mock_edit_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.mock_FACT_LEGACY_SUBSETS.return_value = dict() - self.edit_config.return_value = None - - def load_from_file(*args, **kwargs): - cmd = args[1] - filename = str(cmd).split(' | ')[0].replace(' ', '_') - return load_fixture('nxos_vlans', filename) - - def load_from_file_no_facts(*args, **kwargs): - cmd = args[1] - filename = str(cmd).split(' | ')[0].replace(' ', '_') - filename += '_no_facts' - return load_fixture('nxos_vlans', filename) - - def load_from_file_vlan_1(*args, **kwargs): - cmd = args[1] - filename = str(cmd).split(' | ')[0].replace(' ', '_') - filename += '_vlan_1' - return load_fixture('nxos_vlans', filename) - - if device == '': - self.get_device_data.side_effect = load_from_file - elif device == '_no_facts': - self.get_device_data.side_effect = load_from_file_no_facts - elif device == '_vlan_1': - self.get_device_data.side_effect = load_from_file_vlan_1 - - def test_1(self): - ''' - **NOTE** This config is for reference only! See fixtures files for real data. - vlan 1,3-5,8 - vlan 3 - name test-vlan3 - !Note:vlan 4 is present with default settings - vlan 5 - shutdown - name test-changeme - mode fabricpath - state suspend - vn-segment 942 - !Note:vlan 7 is not present - vlan 8 - shutdown - name test-changeme-not - state suspend - ''' - playbook = dict(config=[ - dict(vlan_id=4), - dict(vlan_id=5, mapped_vni=555, mode='ce'), - dict(vlan_id=7, mapped_vni=777, name='test-vlan7', enabled=False), - dict(vlan_id='8', state='active', name='test-changeme-not') - # vlan 3 is not present in playbook. - ]) - - merged = [ - # Update existing device states with any differences in the playbook. - 'vlan 5', 'vn-segment 555', 'mode ce', - 'vlan 7', 'vn-segment 777', 'name test-vlan7', 'shutdown', - 'vlan 8', 'state active' - ] - playbook['state'] = 'merged' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=merged) - - deleted = [ - # Reset existing device state to default values. Scope is limited to - # objects in the play when the 'config' key is specified. For vlans - # this means deleting each vlan listed in the playbook and ignoring - # any play attrs other than 'vlan_id'. - 'no vlan 4', - 'no vlan 5', - 'no vlan 8' - ] - playbook['state'] = 'deleted' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - overridden = [ - # The play is the source of truth. Similar to replaced but the scope - # includes all objects on the device; i.e. it will also reset state - # on objects not found in the play. - 'no vlan 3', - 'vlan 5', 'mode ce', 'vn-segment 555', 'no state', 'no shutdown', 'no name', - 'vlan 8', 'no shutdown', 'state active', - 'vlan 7', 'name test-vlan7', 'shutdown', 'vn-segment 777' - ] - playbook['state'] = 'overridden' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=overridden) - - replaced = [ - # Scope is limited to objects in the play. - # replaced should ignore existing vlan 3. - 'vlan 5', 'mode ce', 'vn-segment 555', 'no state', 'no shutdown', 'no name', - 'vlan 7', 'shutdown', 'name test-vlan7', 'vn-segment 777', - 'vlan 8', 'no shutdown', 'state active' - ] - playbook['state'] = 'replaced' - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) - - def test_2(self): - # vlan 1 in playbook should raise - playbook = dict(config=[dict(vlan_id=1)], state='merged') - set_module_args(playbook, ignore_provider_arg) - self.execute_module(failed=True) - - def test_3(self): - # Test when no 'config' key is used in playbook. - deleted = [ - # Reset existing device state for all vlans found on device other than vlan 1. - 'no vlan 3', - 'no vlan 4', - 'no vlan 5', - 'no vlan 8' - ] - playbook = dict(state='deleted') - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=deleted) - - for test_state in ['merged', 'replaced', 'overridden']: - set_module_args(dict(state=test_state), ignore_provider_arg) - self.execute_module(failed=True) - - def test_4(self): - # Test only vlan 1 found - playbook = dict(state='deleted') - set_module_args(playbook, ignore_provider_arg) - self.execute_module(device='_vlan_1', changed=False) - - def test_5(self): - # Test no facts returned - playbook = dict(state='deleted') - set_module_args(playbook, ignore_provider_arg) - self.execute_module(device='_no_facts', changed=False) - - def test_6(self): - # Misc tests to hit codepaths highlighted by code coverage tool as missed. - playbook = dict(config=[ - dict(vlan_id=8, enabled=True) - ]) - replaced = [ - # Update existing device states with any differences in the playbook. - 'vlan 8', 'no shutdown', 'no state', 'no name' - ] - playbook['state'] = 'replaced' - playbook['_ansible_check_mode'] = True - set_module_args(playbook, ignore_provider_arg) - self.execute_module(changed=True, commands=replaced) diff --git a/test/units/modules/network/nxos/test_nxos_vpc.py b/test/units/modules/network/nxos/test_nxos_vpc.py deleted file mode 100644 index a65d14a6d0..0000000000 --- a/test/units/modules/network/nxos/test_nxos_vpc.py +++ /dev/null @@ -1,182 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_vpc -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosVpcModule(TestNxosModule): - - module = nxos_vpc - - def setUp(self): - super(TestNxosVpcModule, self).setUp() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_vpc.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_vpc.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_run_commands = patch('ansible.modules.network.nxos.nxos_vpc.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestNxosVpcModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None, device=''): - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for command in commands: - filename = str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture('nxos_vpc', filename)) - return output - - def vrf_load_from_file(*args, **kwargs): - """Load vpc output for vrf tests""" - module, commands = args - output = list() - for command in commands: - filename = 'vrf_test_' + str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture('nxos_vpc', filename)) - return output - - self.load_config.return_value = None - if device == '_vrf_test': - self.run_commands.side_effect = vrf_load_from_file - else: - self.run_commands.side_effect = load_from_file - - def test_nxos_vpc_present(self): - set_module_args(dict(domain=100, role_priority=32667, system_priority=2000, - pkl_dest='192.168.100.4', pkl_src='10.1.100.20', - peer_gw=True, auto_recovery=True)) - self.execute_module(changed=True, commands=[ - 'vpc domain 100', 'terminal dont-ask', 'role priority 32667', 'system-priority 2000', - 'peer-keepalive destination 192.168.100.4 source 10.1.100.20', - 'peer-gateway', 'auto-recovery', - ]) - - def test_nxos_vpc_vrf_1(self): - # No vrf -> vrf 'default' - set_module_args(dict( - domain=100, - pkl_dest='192.168.1.1', - pkl_src='10.1.1.1', - pkl_vrf='default', - )) - self.execute_module(changed=True, commands=[ - 'vpc domain 100', - 'peer-keepalive destination 192.168.1.1 source 10.1.1.1 vrf default' - ]) - - def test_nxos_vpc_vrf_2(self): - # vrf 'my_vrf'-> vrf 'test-vrf' - # All pkl commands should be present - self.get_config.return_value = load_fixture('nxos_vpc', 'vrf_test_vpc_config') - set_module_args(dict( - domain=100, - pkl_dest='192.168.1.1', - pkl_src='10.1.1.1', - pkl_vrf='test-vrf', - )) - self.execute_module(changed=True, device='_vrf_test', commands=[ - 'vpc domain 100', - 'peer-keepalive destination 192.168.1.1 source 10.1.1.1 vrf test-vrf' - ]) - - def test_nxos_vpc_vrf_3(self): - # vrf 'my_vrf' -> vrf 'obviously-different-vrf' - # Existing pkl_src should be retained even though playbook does not specify it - self.get_config.return_value = load_fixture('nxos_vpc', 'vrf_test_vpc_config') - set_module_args(dict( - domain=100, - pkl_dest='192.168.1.1', - pkl_vrf='obviously-different-vrf' - )) - self.execute_module(changed=True, device='_vrf_test', commands=[ - 'vpc domain 100', - 'peer-keepalive destination 192.168.1.1 source 10.1.1.1 vrf obviously-different-vrf' - ]) - - def test_nxos_vpc_vrf_4(self): - # vrf 'my_vrf'-> vrf 'management' - # 'management' is the default value for vrf, it will not nvgen - self.get_config.return_value = load_fixture('nxos_vpc', 'vrf_test_vpc_config') - set_module_args(dict( - domain=100, - pkl_dest='192.168.1.1', - pkl_vrf='management', - )) - self.execute_module(changed=True, device='_vrf_test', commands=[ - 'vpc domain 100', - 'peer-keepalive destination 192.168.1.1 source 10.1.1.1 vrf management' - ]) - - def test_nxos_vpc_vrf_5(self): - # vrf 'my_vrf' -> vrf 'my_vrf' (idempotence) - self.get_config.return_value = load_fixture('nxos_vpc', 'vrf_test_vpc_config') - set_module_args(dict( - domain=100, - pkl_dest='192.168.1.1', - pkl_src='10.1.1.1', - pkl_vrf='my_vrf', - )) - self.execute_module(changed=False, device='_vrf_test') - - def test_nxos_vpc_vrf_6(self): - # vrf 'my_vrf' -> absent tests - self.get_config.return_value = load_fixture('nxos_vpc', 'vrf_test_vpc_config') - set_module_args(dict( - domain=100, - state='absent' - )) - self.execute_module(changed=True, device='_vrf_test', commands=[ - 'terminal dont-ask', - 'no vpc domain 100', - ]) - - def test_nxos_vpc_vrf_7(self): - # dest 192.168.1.1 source 10.1.1.1 vrf my_vrf -> (dest only) (idempotence) - # pkl_src/pkl_vrf not in playbook but exists on device. - self.get_config.return_value = load_fixture('nxos_vpc', 'vrf_test_vpc_config') - set_module_args(dict( - domain=100, - pkl_dest='192.168.1.1', - )) - self.execute_module(changed=False, device='_vrf_test') - - def test_nxos_vpc_vrf_8(self): - # dest 192.168.1.1 source 10.1.1.1 vrf my_vrf -> (optional vrf) (idempotence) - # pkl_src not in playbook but exists on device. - self.get_config.return_value = load_fixture('nxos_vpc', 'vrf_test_vpc_config') - set_module_args(dict( - domain=100, - pkl_dest='192.168.1.1', - pkl_vrf='my_vrf', - )) - self.execute_module(changed=False, device='_vrf_test') diff --git a/test/units/modules/network/nxos/test_nxos_vpc_interface.py b/test/units/modules/network/nxos/test_nxos_vpc_interface.py deleted file mode 100644 index d61dbbfc4f..0000000000 --- a/test/units/modules/network/nxos/test_nxos_vpc_interface.py +++ /dev/null @@ -1,69 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_vpc_interface -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosVpcModule(TestNxosModule): - - module = nxos_vpc_interface - - def setUp(self): - super(TestNxosVpcModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_vpc_interface.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_vpc_interface.get_config') - self.get_config = self.mock_get_config.start() - - self.mock_run_commands = patch('ansible.modules.network.nxos.nxos_vpc_interface.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestNxosVpcModule, self).tearDown() - self.mock_load_config.stop() - self.mock_get_config.stop() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None, device=''): - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - for command in commands: - filename = str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture('nxos_vpc_interface', filename)) - return output - - self.run_commands.side_effect = load_from_file - self.load_config.return_value = None - - def test_nxos_vpc_interface_absent(self): - set_module_args(dict(portchannel=10, vpc=100, state='absent')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface port-channel10', 'no vpc']) - - def test_nxos_vpc_interface_present(self): - set_module_args(dict(portchannel=20, vpc=200, state='present')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['interface port-channel20', 'vpc 200']) diff --git a/test/units/modules/network/nxos/test_nxos_vrf.py b/test/units/modules/network/nxos/test_nxos_vrf.py deleted file mode 100644 index 6479a9f2ba..0000000000 --- a/test/units/modules/network/nxos/test_nxos_vrf.py +++ /dev/null @@ -1,79 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_vrf -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosVrfModule(TestNxosModule): - - module = nxos_vrf - - def setUp(self): - super(TestNxosVrfModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_vrf.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_run_commands = patch('ansible.modules.network.nxos.nxos_vrf.run_commands') - self.run_commands = self.mock_run_commands.start() - - def tearDown(self): - super(TestNxosVrfModule, self).tearDown() - self.mock_load_config.stop() - self.mock_run_commands.stop() - - def load_fixtures(self, commands=None, device=''): - def load_from_file(*args, **kwargs): - module, commands = args - output = list() - - for command in commands: - if isinstance(command, dict): - command = command['command'] - filename = str(command).split(' | ')[0].replace(' ', '_') - output.append(load_fixture('nxos_vrf', filename)) - return output - - self.load_config.return_value = None - self.run_commands.side_effect = load_from_file - - def test_nxos_vrf_present(self): - set_module_args(dict(vrf='ntc', state='present', admin_state='up')) - self.execute_module(changed=True, commands=['vrf context ntc', 'no shutdown', 'exit']) - - def test_nxos_vrf_present_no_change(self): - set_module_args(dict(vrf='management', state='present', admin_state='up')) - self.execute_module(changed=False, commands=[]) - - def test_nxos_vrf_absent(self): - set_module_args(dict(vrf='management', state='absent')) - self.execute_module(changed=True, commands=['no vrf context management']) - - def test_nxos_vrf_absent_no_change(self): - set_module_args(dict(vrf='ntc', state='absent')) - self.execute_module(changed=False, commands=[]) - - def test_nxos_vrf_default(self): - set_module_args(dict(vrf='default')) - result = self.execute_module(failed=True) - self.assertEqual(result['msg'], 'cannot use default as name of a VRF') diff --git a/test/units/modules/network/nxos/test_nxos_vrf_af.py b/test/units/modules/network/nxos/test_nxos_vrf_af.py deleted file mode 100644 index 296f5656bb..0000000000 --- a/test/units/modules/network/nxos/test_nxos_vrf_af.py +++ /dev/null @@ -1,791 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_vrf_af -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosVrfafModule(TestNxosModule): - - module = nxos_vrf_af - - def setUp(self): - super(TestNxosVrfafModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_vrf_af.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_vrf_af.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosVrfafModule, self).tearDown() - self.mock_load_config.stop() - self.mock_get_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('nxos_vrf_af', 'config.cfg') - self.load_config.return_value = None - - def test_nxos_vrf_af_present_current_non_existing(self): - set_module_args(dict(vrf='vrf0', afi='ipv4', state='present')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf0', - 'address-family ipv4 unicast']) - - def test_nxos_vrf_af_present_current_existing(self): - set_module_args(dict(vrf='vrf1', afi='ipv4', state='present')) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_absent_current_non_existing(self): - set_module_args(dict(vrf='vrf0', afi='ipv4', state='absent')) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_absent_current_existing(self): - set_module_args(dict(vrf='vrf1', afi='ipv4', state='absent')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf1', - 'no address-family ipv4 unicast']) - - def test_nxos_vrf_af_auto_evpn_route_target_present_current_existing(self): - set_module_args(dict(vrf='vrf11', afi='ipv4', route_target_both_auto_evpn=True)) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_auto_evpn_route_target_present_current_non_existing(self): - set_module_args(dict(vrf='vrf10', afi='ipv4', route_target_both_auto_evpn=True)) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf10', - 'address-family ipv4 unicast', - 'route-target both auto evpn']) - - def test_nxos_vrf_af_auto_evpn_route_target_absent_current_existing(self): - set_module_args(dict(vrf='vrf11', afi='ipv4', route_target_both_auto_evpn=False)) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf11', - 'address-family ipv4 unicast', - 'no route-target both auto evpn']) - - def test_nxos_vrf_af_auto_evpn_route_target_absent_current_non_existing(self): - set_module_args(dict(vrf='vrf1', afi='ipv4', route_target_both_auto_evpn=False)) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_route_target_import_present_current_non_existing(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - route_targets=[{"rt": "65000:1000", - "direction": "import", - "state": "present"}])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf1', - 'address-family ipv4 unicast', - 'route-target import 65000:1000']) - - def test_nxos_vrf_af_route_target_default_direction_present_current_non_existing(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - route_targets=[{"rt": "65000:1000", - "state": "present"}])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf1', - 'address-family ipv4 unicast', - 'route-target import 65000:1000', - 'route-target export 65000:1000']) - - def test_nxos_vrf_af_route_target_import_present_current_existing(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[{ - "rt": "65000:1000", - "direction": "import", - "state": "present"} - ])) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_route_target_default_direction_present_current_existing(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[{ - "rt": "65000:1000", - "state": "present"} - ])) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_route_target_multi_import_present_current_non_existing(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "import", - "state": "present" - }, - { - "rt": "65001:1000", - "direction": "import", - "state": "present" - }, - { - "rt": "65002:1000", - "direction": "import", - "state": "present" - }])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf1', - 'address-family ipv4 unicast', - 'route-target import 65000:1000', - 'route-target import 65001:1000', - 'route-target import 65002:1000']) - - def test_nxos_vrf_af_route_target_multi_import_present_current_existing(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "import", - "state": "present" - }, - { - "rt": "65001:1000", - "direction": "import", - "state": "present" - }, - { - "rt": "65002:1000", - "direction": "import", - "state": "present" - } - ])) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_route_target_import_absent_current_non_existing(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "import", - "state": "absent" - } - ])) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_route_target_import_absent_current_existing(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "import", - "state": "absent" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf21', - 'address-family ipv4 unicast', - 'no route-target import 65000:1000']) - - def test_nxos_vrf_af_route_target_multi_import_absent_current_non_existing(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "import", - "state": "absent" - }, - { - "rt": "65001:1000", - "direction": "import", - "state": "absent" - }, - { - "rt": "65002:1000", - "direction": "import", - "state": "absent" - } - ])) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_route_target_multi_import_absent_current_existing(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "import", - "state": "absent" - }, - { - "rt": "65001:1000", - "direction": "import", - "state": "absent" - }, - { - "rt": "65002:1000", - "direction": "import", - "state": "absent" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf21', - 'address-family ipv4 unicast', - 'no route-target import 65000:1000', - 'no route-target import 65001:1000', - 'no route-target import 65002:1000']) - - def test_nxos_vrf_af_route_target_multi_import_absent_current_mix(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "import", - "state": "present" - }, - { - "rt": "65001:1000", - "direction": "import", - "state": "present" - }, - { - "rt": "65002:1000", - "direction": "import", - "state": "absent" - }, - { - "rt": "65003:1000", - "direction": "import", - "state": "present" - }, - { - "rt": "65004:1000", - "direction": "import", - "state": "absent" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf21', - 'address-family ipv4 unicast', - 'no route-target import 65002:1000', - 'route-target import 65003:1000']) - - def test_nxos_vrf_af_route_target_export_present_current_non_existing(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "export", - "state": "present" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf1', - 'address-family ipv4 unicast', - 'route-target export 65000:1000']) - - def test_nxos_vrf_af_route_target_export_present_current_existing(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "export", - "state": "present" - } - ])) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_route_target_multi_export_present_current_non_existing(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "export", - "state": "present" - }, - { - "rt": "65001:1000", - "direction": "export", - "state": "present" - }, - { - "rt": "65002:1000", - "direction": "export", - "state": "present" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf1', - 'address-family ipv4 unicast', - 'route-target export 65000:1000', - 'route-target export 65001:1000', - 'route-target export 65002:1000']) - - def test_nxos_vrf_af_route_target_multi_export_present_current_existing(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "export", - "state": "present" - }, - { - "rt": "65001:1000", - "direction": "export", - "state": "present" - }, - { - "rt": "65002:1000", - "direction": "export", - "state": "present" - } - ])) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_route_target_export_absent_current_non_existing(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "export", - "state": "absent" - } - ])) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_route_target_export_absent_current_existing(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "export", - "state": "absent" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf21', - 'address-family ipv4 unicast', - 'no route-target export 65000:1000']) - - def test_nxos_vrf_af_route_target_multi_export_absent_current_non_existing(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "export", - "state": "absent" - }, - { - "rt": "65001:1000", - "direction": "export", - "state": "absent" - }, - { - "rt": "65002:1000", - "direction": "export", - "state": "absent" - } - ])) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_route_target_multi_export_absent_current_existing(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "export", - "state": "absent" - }, - { - "rt": "65001:1000", - "direction": "export", - "state": "absent" - }, - { - "rt": "65002:1000", - "direction": "export", - "state": "absent" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf21', - 'address-family ipv4 unicast', - 'no route-target export 65000:1000', - 'no route-target export 65001:1000', - 'no route-target export 65002:1000']) - - def test_nxos_vrf_af_route_target_multi_export_absent_current_mix(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "export", - "state": "present" - }, - { - "rt": "65001:1000", - "direction": "export", - "state": "present" - }, - { - "rt": "65002:1000", - "direction": "export", - "state": "absent" - }, - { - "rt": "65003:1000", - "direction": "export", - "state": "present" - }, - { - "rt": "65004:1000", - "direction": "export", - "state": "absent" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf21', - 'address-family ipv4 unicast', - 'no route-target export 65002:1000', - 'route-target export 65003:1000']) - - def test_nxos_vrf_af_route_target_both_present_current_non_existing(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "both", - "state": "present" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf1', - 'address-family ipv4 unicast', - 'route-target import 65000:1000', - 'route-target export 65000:1000']) - - def test_nxos_vrf_af_route_target_both_present_current_existing(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "both", - "state": "present" - } - ])) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_route_target_multi_both_present_current_non_existing(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "both", - "state": "present" - }, - { - "rt": "65001:1000", - "direction": "both", - "state": "present" - }, - { - "rt": "65002:1000", - "direction": "both", - "state": "present" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf1', - 'address-family ipv4 unicast', - 'route-target import 65000:1000', - 'route-target export 65000:1000', - 'route-target import 65001:1000', - 'route-target export 65001:1000', - 'route-target import 65002:1000', - 'route-target export 65002:1000']) - - def test_nxos_vrf_af_route_target_multi_both_present_current_existing(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "both", - "state": "present" - }, - { - "rt": "65001:1000", - "direction": "both", - "state": "present" - }, - { - "rt": "65002:1000", - "direction": "both", - "state": "present" - } - ])) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_route_target_both_absent_current_non_existing(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "both", - "state": "absent" - } - ])) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_route_target_both_absent_current_existing(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "both", - "state": "absent" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf21', - 'address-family ipv4 unicast', - 'no route-target import 65000:1000', - 'no route-target export 65000:1000']) - - def test_nxos_vrf_af_route_target_multi_both_absent_current_non_existing(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "both", - "state": "absent" - }, - { - "rt": "65001:1000", - "direction": "both", - "state": "absent" - }, - { - "rt": "65002:1000", - "direction": "both", - "state": "absent" - } - ])) - result = self.execute_module(changed=False) - self.assertEqual(result['commands'], []) - - def test_nxos_vrf_af_route_target_multi_both_absent_current_existing(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "both", - "state": "absent" - }, - { - "rt": "65001:1000", - "direction": "both", - "state": "absent" - }, - { - "rt": "65002:1000", - "direction": "both", - "state": "absent" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf21', - 'address-family ipv4 unicast', - 'no route-target import 65000:1000', - 'no route-target export 65000:1000', - 'no route-target import 65001:1000', - 'no route-target export 65001:1000', - 'no route-target import 65002:1000', - 'no route-target export 65002:1000']) - - def test_nxos_vrf_af_route_target_multi_both_absent_current_mix(self): - set_module_args(dict(vrf='vrf21', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "both", - "state": "present" - }, - { - "rt": "65001:1000", - "direction": "both", - "state": "present" - }, - { - "rt": "65002:1000", - "direction": "both", - "state": "absent" - }, - { - "rt": "65003:1000", - "direction": "both", - "state": "present" - }, - { - "rt": "65004:1000", - "direction": "both", - "state": "absent" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf21', - 'address-family ipv4 unicast', - 'no route-target import 65002:1000', - 'no route-target export 65002:1000', - 'route-target import 65003:1000', - 'route-target export 65003:1000']) - - def test_nxos_vrf_af_route_target_multi_both_current_only_import_or_export(self): - set_module_args(dict(vrf='vrf31', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "both", - "state": "present" - }, - { - "rt": "65001:1000", - "direction": "both", - "state": "present" - }, - { - "rt": "65002:1000", - "direction": "both", - "state": "absent" - }, - { - "rt": "65003:1000", - "direction": "both", - "state": "absent" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf31', - 'address-family ipv4 unicast', - 'route-target export 65000:1000', - 'route-target import 65001:1000', - 'no route-target import 65002:1000', - 'no route-target export 65003:1000']) - - def test_nxos_vrf_af_route_target_multi_direction_current_only_import_or_export(self): - set_module_args(dict(vrf='vrf31', - afi='ipv4', - route_targets=[ - { - "rt": "65000:1000", - "direction": "both", - "state": "present" - }, - { - "rt": "65001:1000", - "state": "present" - }, - { - "rt": "65002:1000", - "direction": "export", - "state": "absent" - }, - { - "rt": "65003:1000", - "direction": "export", - "state": "absent" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf31', - 'address-family ipv4 unicast', - 'route-target export 65000:1000', - 'route-target import 65001:1000', - 'no route-target export 65003:1000']) - - def test_nxos_vrf_af_auto_evpn_route_target_and_manual_route_target(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - route_target_both_auto_evpn=True, - route_targets=[ - { - "rt": "65000:1000", - "direction": "both", - "state": "present" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf1', - 'address-family ipv4 unicast', - 'route-target both auto evpn', - 'route-target import 65000:1000', - 'route-target export 65000:1000']) - - def test_nxos_vrf_af_auto_evpn_route_target_and_manual_route_targets_with_absent_vrf(self): - set_module_args(dict(vrf='vrf1', - afi='ipv4', - state='absent', - route_target_both_auto_evpn=True, - route_targets=[ - { - "rt": "65000:1000", - "direction": "both", - "state": "present" - } - ])) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['vrf context vrf1', - 'no address-family ipv4 unicast']) diff --git a/test/units/modules/network/nxos/test_nxos_vxlan_vtep.py b/test/units/modules/network/nxos/test_nxos_vxlan_vtep.py deleted file mode 100644 index c609f515e6..0000000000 --- a/test/units/modules/network/nxos/test_nxos_vxlan_vtep.py +++ /dev/null @@ -1,63 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_vxlan_vtep -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosVxlanVtepVniModule(TestNxosModule): - - module = nxos_vxlan_vtep - - def setUp(self): - super(TestNxosVxlanVtepVniModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_vxlan_vtep.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_vxlan_vtep.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosVxlanVtepVniModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('nxos_vxlan_vtep', 'config.cfg') - self.load_config.return_value = None - - def test_nxos_vxlan_vtep(self): - set_module_args(dict(interface='nve1', description='simple description')) - self.execute_module(changed=True, commands=['interface nve1', 'terminal dont-ask', 'description simple description']) - - def test_nxos_vxlan_vtep_present_no_change(self): - set_module_args(dict(interface='nve1')) - self.execute_module(changed=False, commands=[]) - - def test_nxos_vxlan_vtep_absent(self): - set_module_args(dict(interface='nve1', state='absent')) - self.execute_module(changed=True, commands=['no interface nve1']) - - def test_nxos_vxlan_vtep_absent_no_change(self): - set_module_args(dict(interface='nve2', state='absent')) - self.execute_module(changed=False, commands=[]) diff --git a/test/units/modules/network/nxos/test_nxos_vxlan_vtep_vni.py b/test/units/modules/network/nxos/test_nxos_vxlan_vtep_vni.py deleted file mode 100644 index 798dd7ae05..0000000000 --- a/test/units/modules/network/nxos/test_nxos_vxlan_vtep_vni.py +++ /dev/null @@ -1,63 +0,0 @@ -# (c) 2016 Red Hat Inc. -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from units.compat.mock import patch -from ansible.modules.network.nxos import nxos_vxlan_vtep_vni -from .nxos_module import TestNxosModule, load_fixture, set_module_args - - -class TestNxosVxlanVtepVniModule(TestNxosModule): - - module = nxos_vxlan_vtep_vni - - def setUp(self): - super(TestNxosVxlanVtepVniModule, self).setUp() - - self.mock_load_config = patch('ansible.modules.network.nxos.nxos_vxlan_vtep_vni.load_config') - self.load_config = self.mock_load_config.start() - - self.mock_get_config = patch('ansible.modules.network.nxos.nxos_vxlan_vtep_vni.get_config') - self.get_config = self.mock_get_config.start() - - def tearDown(self): - super(TestNxosVxlanVtepVniModule, self).tearDown() - self.mock_get_config.stop() - self.mock_load_config.stop() - - def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('nxos_vxlan_vtep_vni', 'config.cfg') - self.load_config.return_value = None - - def test_nxos_vxlan_vtep_vni_present_no_change(self): - set_module_args(dict(interface='nve1', vni=6000)) - self.execute_module(changed=False, commands=[]) - - def test_nxos_vxlan_vtep_vni(self): - set_module_args(dict(interface='nve1', vni=5000)) - self.execute_module(changed=True, commands=['interface nve1', 'member vni 5000']) - - def test_nxos_vxlan_vtep_vni_absent(self): - set_module_args(dict(interface='nve1', vni=6000, state='absent')) - self.execute_module(changed=True, commands=['interface nve1', 'no member vni 6000']) - - def test_nxos_vxlan_vtep_vni_absent_no_change(self): - set_module_args(dict(interface='nve2', vni=6000, state='absent')) - self.execute_module(changed=False, commands=[]) |