cisco_node_utils 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (202) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/CHANGELOG.md +126 -1
  4. data/README.md +19 -12
  5. data/Rakefile +1 -0
  6. data/bin/git/hooks/commit-msg/enforce_style +8 -0
  7. data/cisco_node_utils.gemspec +4 -3
  8. data/docs/README-develop-best-practices.md +127 -109
  9. data/docs/README-develop-node-utils-APIs.md +47 -39
  10. data/docs/template-router.rb +3 -7
  11. data/lib/.rubocop.yml +4 -4
  12. data/lib/cisco_node_utils.rb +1 -1
  13. data/lib/cisco_node_utils/aaa_authentication_login.rb +96 -0
  14. data/lib/cisco_node_utils/aaa_authentication_login_service.rb +133 -0
  15. data/lib/cisco_node_utils/aaa_authorization_service.rb +150 -0
  16. data/lib/cisco_node_utils/ace.rb +196 -0
  17. data/lib/cisco_node_utils/acl.rb +100 -0
  18. data/lib/cisco_node_utils/bgp.rb +301 -163
  19. data/lib/cisco_node_utils/bgp_af.rb +187 -19
  20. data/lib/cisco_node_utils/bgp_neighbor.rb +18 -33
  21. data/lib/cisco_node_utils/bgp_neighbor_af.rb +25 -48
  22. data/lib/cisco_node_utils/cisco_cmn_utils.rb +23 -4
  23. data/lib/cisco_node_utils/cmd_ref/README_YAML.md +593 -0
  24. data/lib/cisco_node_utils/cmd_ref/aaa_auth_login_service.yaml +22 -0
  25. data/lib/cisco_node_utils/cmd_ref/aaa_authentication_login.yaml +31 -0
  26. data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +22 -0
  27. data/lib/cisco_node_utils/cmd_ref/acl.yaml +43 -0
  28. data/lib/cisco_node_utils/cmd_ref/bgp.yaml +242 -0
  29. data/lib/cisco_node_utils/cmd_ref/bgp_af.yaml +164 -0
  30. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +131 -0
  31. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +179 -0
  32. data/lib/cisco_node_utils/cmd_ref/dnsclient.yaml +34 -0
  33. data/lib/cisco_node_utils/cmd_ref/evpn_vni.yaml +42 -0
  34. data/lib/cisco_node_utils/cmd_ref/fabricpath.yaml +172 -0
  35. data/lib/cisco_node_utils/cmd_ref/fabricpath_topology.yaml +35 -0
  36. data/lib/cisco_node_utils/cmd_ref/feature.yaml +42 -0
  37. data/lib/cisco_node_utils/cmd_ref/fex.yaml +9 -0
  38. data/lib/cisco_node_utils/cmd_ref/images.yaml +7 -0
  39. data/lib/cisco_node_utils/cmd_ref/interface.yaml +339 -0
  40. data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +28 -0
  41. data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +61 -0
  42. data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +54 -0
  43. data/lib/cisco_node_utils/cmd_ref/interface_service_vni.yaml +32 -0
  44. data/lib/cisco_node_utils/cmd_ref/inventory.yaml +45 -0
  45. data/lib/cisco_node_utils/cmd_ref/memory.yaml +13 -0
  46. data/lib/cisco_node_utils/cmd_ref/ntp_config.yaml +7 -0
  47. data/lib/cisco_node_utils/cmd_ref/ntp_server.yaml +14 -0
  48. data/lib/cisco_node_utils/cmd_ref/ospf.yaml +74 -0
  49. data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +33 -0
  50. data/lib/cisco_node_utils/cmd_ref/pim.yaml +40 -0
  51. data/lib/cisco_node_utils/cmd_ref/portchannel_global.yaml +69 -0
  52. data/lib/cisco_node_utils/cmd_ref/radius_global.yaml +25 -0
  53. data/lib/cisco_node_utils/cmd_ref/radius_server.yaml +64 -0
  54. data/lib/cisco_node_utils/cmd_ref/radius_server_group.yaml +14 -0
  55. data/lib/cisco_node_utils/cmd_ref/show_system.yaml +5 -0
  56. data/lib/cisco_node_utils/cmd_ref/show_version.yaml +72 -0
  57. data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +23 -0
  58. data/lib/cisco_node_utils/cmd_ref/snmp_group.yaml +7 -0
  59. data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +50 -0
  60. data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +51 -0
  61. data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +55 -0
  62. data/lib/cisco_node_utils/cmd_ref/snmpnotification.yaml +11 -0
  63. data/lib/cisco_node_utils/cmd_ref/syslog_server.yaml +18 -0
  64. data/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml +7 -0
  65. data/lib/cisco_node_utils/cmd_ref/system.yaml +6 -0
  66. data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +49 -0
  67. data/lib/cisco_node_utils/cmd_ref/tacacs_server_group.yaml +33 -0
  68. data/lib/cisco_node_utils/cmd_ref/tacacs_server_host.yaml +35 -0
  69. data/lib/cisco_node_utils/cmd_ref/vdc.yaml +38 -0
  70. data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +6 -0
  71. data/lib/cisco_node_utils/cmd_ref/vlan.yaml +56 -0
  72. data/lib/cisco_node_utils/cmd_ref/vni.yaml +76 -0
  73. data/lib/cisco_node_utils/cmd_ref/vpc.yaml +197 -0
  74. data/lib/cisco_node_utils/cmd_ref/vrf.yaml +88 -0
  75. data/lib/cisco_node_utils/cmd_ref/vtp.yaml +38 -0
  76. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +60 -0
  77. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +39 -0
  78. data/lib/cisco_node_utils/cmd_ref/yum.yaml +13 -0
  79. data/lib/cisco_node_utils/command_reference.rb +359 -187
  80. data/lib/cisco_node_utils/configparser_lib.rb +1 -1
  81. data/lib/cisco_node_utils/dns_domain.rb +19 -5
  82. data/lib/cisco_node_utils/domain_name.rb +4 -8
  83. data/lib/cisco_node_utils/evpn_vni.rb +157 -0
  84. data/lib/cisco_node_utils/fabricpath_global.rb +388 -0
  85. data/lib/cisco_node_utils/fabricpath_topology.rb +150 -0
  86. data/lib/cisco_node_utils/feature.rb +111 -0
  87. data/lib/cisco_node_utils/interface.rb +390 -97
  88. data/lib/cisco_node_utils/interface_channel_group.rb +124 -0
  89. data/lib/cisco_node_utils/interface_ospf.rb +11 -34
  90. data/lib/cisco_node_utils/interface_portchannel.rb +157 -0
  91. data/lib/cisco_node_utils/interface_service_vni.rb +132 -0
  92. data/lib/cisco_node_utils/name_server.rb +1 -1
  93. data/lib/cisco_node_utils/node.rb +55 -249
  94. data/lib/cisco_node_utils/node_util.rb +5 -1
  95. data/lib/cisco_node_utils/ntp_config.rb +2 -2
  96. data/lib/cisco_node_utils/ntp_server.rb +14 -5
  97. data/lib/cisco_node_utils/overlay_global.rb +153 -0
  98. data/lib/cisco_node_utils/pim.rb +124 -0
  99. data/lib/cisco_node_utils/pim_group_list.rb +108 -0
  100. data/lib/cisco_node_utils/pim_rp_address.rb +102 -0
  101. data/lib/cisco_node_utils/platform.rb +8 -9
  102. data/lib/cisco_node_utils/portchannel_global.rb +277 -0
  103. data/lib/cisco_node_utils/radius_global.rb +9 -19
  104. data/lib/cisco_node_utils/radius_server.rb +31 -41
  105. data/lib/cisco_node_utils/radius_server_group.rb +117 -0
  106. data/lib/cisco_node_utils/router_ospf.rb +1 -1
  107. data/lib/cisco_node_utils/router_ospf_vrf.rb +14 -19
  108. data/lib/cisco_node_utils/snmp_notification_receiver.rb +158 -0
  109. data/lib/cisco_node_utils/snmpcommunity.rb +3 -5
  110. data/lib/cisco_node_utils/snmpgroup.rb +1 -1
  111. data/lib/cisco_node_utils/snmpnotification.rb +57 -0
  112. data/lib/cisco_node_utils/snmpserver.rb +8 -17
  113. data/lib/cisco_node_utils/snmpuser.rb +67 -28
  114. data/lib/cisco_node_utils/syslog_server.rb +3 -9
  115. data/lib/cisco_node_utils/syslog_settings.rb +2 -10
  116. data/lib/cisco_node_utils/tacacs_server.rb +9 -14
  117. data/lib/cisco_node_utils/tacacs_server_group.rb +145 -0
  118. data/lib/cisco_node_utils/tacacs_server_host.rb +5 -9
  119. data/lib/cisco_node_utils/vdc.rb +88 -0
  120. data/lib/cisco_node_utils/version.rb +5 -2
  121. data/lib/cisco_node_utils/vlan.rb +71 -8
  122. data/lib/cisco_node_utils/vni.rb +227 -0
  123. data/lib/cisco_node_utils/vpc.rb +377 -0
  124. data/lib/cisco_node_utils/vrf.rb +60 -9
  125. data/lib/cisco_node_utils/vrf_af.rb +191 -0
  126. data/lib/cisco_node_utils/vtp.rb +8 -6
  127. data/lib/cisco_node_utils/vxlan_vtep.rb +151 -0
  128. data/lib/cisco_node_utils/vxlan_vtep_vni.rb +234 -0
  129. data/lib/cisco_node_utils/yum.rb +1 -1
  130. data/tests/.rubocop.yml +1 -1
  131. data/tests/basetest.rb +16 -7
  132. data/tests/ciscotest.rb +55 -13
  133. data/tests/cmd_config.yaml +2 -2
  134. data/tests/platform_info.rb +3 -2
  135. data/tests/test_aaa_authentication_login.rb +219 -0
  136. data/tests/test_aaa_authentication_login_service.rb +759 -0
  137. data/tests/test_aaa_authorization_service.rb +1041 -0
  138. data/tests/test_ace.rb +160 -0
  139. data/tests/test_acl.rb +176 -0
  140. data/tests/test_bgp_af.rb +269 -13
  141. data/tests/test_bgp_neighbor.rb +38 -40
  142. data/tests/test_bgp_neighbor_af.rb +92 -32
  143. data/tests/test_command_config.rb +5 -5
  144. data/tests/test_command_reference.rb +284 -101
  145. data/tests/test_dns_domain.rb +1 -1
  146. data/tests/test_domain_name.rb +1 -1
  147. data/tests/test_evpn_vni.rb +106 -0
  148. data/tests/test_fabricpath_global.rb +243 -0
  149. data/tests/test_fabricpath_topology.rb +98 -0
  150. data/tests/test_interface.rb +292 -74
  151. data/tests/test_interface_channel_group.rb +74 -0
  152. data/tests/test_interface_ospf.rb +9 -4
  153. data/tests/test_interface_portchannel.rb +105 -0
  154. data/tests/test_interface_service_vni.rb +232 -0
  155. data/tests/test_interface_svi.rb +77 -62
  156. data/tests/test_interface_switchport.rb +17 -5
  157. data/tests/test_name_server.rb +1 -1
  158. data/tests/test_node.rb +1 -1
  159. data/tests/test_node_ext.rb +10 -20
  160. data/tests/test_ntp_config.rb +1 -1
  161. data/tests/test_ntp_server.rb +18 -6
  162. data/tests/test_overlay_global.rb +102 -0
  163. data/tests/test_pim.rb +177 -0
  164. data/tests/test_pim_group_list.rb +181 -0
  165. data/tests/test_pim_rp_address.rb +153 -0
  166. data/tests/test_platform.rb +3 -3
  167. data/tests/test_portchannel_global.rb +202 -0
  168. data/tests/test_radius_global.rb +1 -1
  169. data/tests/test_radius_server.rb +92 -57
  170. data/tests/test_radius_server_group.rb +149 -0
  171. data/tests/test_router_bgp.rb +283 -112
  172. data/tests/test_router_ospf.rb +2 -2
  173. data/tests/test_router_ospf_vrf.rb +4 -4
  174. data/tests/test_snmp_notification_receiver.rb +167 -0
  175. data/tests/test_snmpcommunity.rb +1 -1
  176. data/tests/test_snmpgroup.rb +1 -1
  177. data/tests/test_snmpnotification.rb +72 -0
  178. data/tests/test_snmpserver.rb +29 -105
  179. data/tests/test_snmpuser.rb +32 -30
  180. data/tests/test_syslog_server.rb +36 -10
  181. data/tests/test_syslog_settings.rb +1 -1
  182. data/tests/test_tacacs_server.rb +1 -1
  183. data/tests/test_tacacs_server_group.rb +405 -0
  184. data/tests/test_tacacs_server_host.rb +1 -1
  185. data/tests/test_vdc.rb +78 -0
  186. data/tests/test_vlan.rb +74 -19
  187. data/tests/test_vlan_mt_full.rb +95 -0
  188. data/tests/test_vni.rb +106 -0
  189. data/tests/test_vpc.rb +361 -0
  190. data/tests/test_vrf.rb +172 -29
  191. data/tests/test_vtp.rb +1 -1
  192. data/tests/test_vxlan_vtep.rb +214 -0
  193. data/tests/test_vxlan_vtep_vni.rb +201 -0
  194. data/tests/test_yum.rb +1 -1
  195. metadata +120 -11
  196. data/lib/cisco_node_utils/README_YAML.md +0 -325
  197. data/lib/cisco_node_utils/command_reference_common.yaml +0 -1051
  198. data/lib/cisco_node_utils/command_reference_common_bgp.yaml +0 -535
  199. data/lib/cisco_node_utils/command_reference_n3064.yaml +0 -13
  200. data/lib/cisco_node_utils/command_reference_n7k.yaml +0 -52
  201. data/lib/cisco_node_utils/command_reference_n9k.yaml +0 -26
  202. data/tests/platform_info.yaml +0 -10
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2014-2015 Cisco and/or its affiliates.
1
+ # Copyright (c) 2014-2016 Cisco and/or its affiliates.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -19,6 +19,27 @@ include Cisco
19
19
 
20
20
  # TestSvi - Minitest for Interface configuration of SVI interfaces.
21
21
  class TestSvi < CiscoTestCase
22
+ @@pre_clean_needed = true # rubocop:disable Style/ClassVars
23
+
24
+ def remove_all_svis
25
+ Interface.interfaces.each do |int, obj|
26
+ next unless int[/vlan/]
27
+ next if int[/vlan1/]
28
+ obj.destroy
29
+ end
30
+ end
31
+
32
+ def setup
33
+ super
34
+ remove_all_svis if @@pre_clean_needed
35
+ @@pre_clean_needed = false # rubocop:disable Style/ClassVars
36
+ end
37
+
38
+ def teardown
39
+ super
40
+ remove_all_svis
41
+ end
42
+
22
43
  def cmd_ref_autostate
23
44
  ref = cmd_ref.lookup('interface', 'svi_autostate')
24
45
  assert(ref, 'Error, reference not found for autostate')
@@ -35,11 +56,17 @@ class TestSvi < CiscoTestCase
35
56
  end
36
57
  end
37
58
 
59
+ def skip_autostate_test?
60
+ skip('svi autostate properties are not supported on this platform') if
61
+ node.product_id =~ /N(5|6)K/
62
+ end
63
+
38
64
  def system_default_svi_autostate(state='')
39
65
  config("#{state}system default interface-vlan autostate")
40
66
  end
41
67
 
42
- def test_svi_prop_nil_when_ethernet
68
+ def test_prop_nil_when_ethernet
69
+ skip_autostate_test?
43
70
  intf = Interface.new(interfaces[0])
44
71
  assert_nil(intf.svi_autostate,
45
72
  'Error: svi_autostate should be nil when interface is ethernet')
@@ -47,7 +74,7 @@ class TestSvi < CiscoTestCase
47
74
  'Error: svi_management should be nil when interface is ethernet')
48
75
  end
49
76
 
50
- def test_svi_create_valid
77
+ def test_create_valid
51
78
  svi = Interface.new('Vlan23')
52
79
  s = @device.cmd('show run interface all | inc Vlan')
53
80
  cmd = 'interface Vlan1'
@@ -63,25 +90,25 @@ class TestSvi < CiscoTestCase
63
90
  refute(s.include?(cmd), 'Error: svi Vlan23 still configured')
64
91
  end
65
92
 
66
- def test_svi_create_vlan_invalid
93
+ def test_create_vlan_invalid
67
94
  assert_raises(CliError) { Interface.new('10.1.1.1') }
68
95
  end
69
96
 
70
- def test_svi_create_vlan_invalid_value
97
+ def test_create_vlan_invalid_value
71
98
  assert_raises(CliError) { Interface.new('Vlan0') }
72
99
  end
73
100
 
74
- def test_svi_create_vlan_nil
101
+ def test_create_vlan_nil
75
102
  assert_raises(TypeError) { Interface.new(nil) }
76
103
  end
77
104
 
78
- def test_svi_name
105
+ def test_name
79
106
  svi = Interface.new('Vlan23')
80
107
  assert_equal('vlan23', svi.name, 'Error: svi vlan name is wrong')
81
108
  svi.destroy
82
109
  end
83
110
 
84
- def test_svi_assignment
111
+ def test_assignment
85
112
  svi = Interface.new('Vlan23')
86
113
  svi.svi_management = true
87
114
  assert(svi.svi_management, 'Error: svi svi_management, false')
@@ -90,32 +117,26 @@ class TestSvi < CiscoTestCase
90
117
  svi.destroy
91
118
  end
92
119
 
93
- def test_svi_get_autostate_false
120
+ def test_get_autostate_false
121
+ skip_autostate_test?
94
122
  svi = Interface.new('Vlan23')
95
123
 
96
124
  config('interface vlan 23', 'no autostate')
97
- ref = cmd_ref_autostate
98
- result = ref.default_value
99
- result = false if ref.config_set
100
- assert_equal(result, svi.svi_autostate,
101
- 'Error: svi autostate not correct.')
125
+ refute(svi.svi_autostate, 'Error: svi autostate not correct.')
102
126
  svi.destroy
103
127
  end
104
128
 
105
- def test_svi_get_autostate_true
129
+ def test_get_autostate_true
130
+ skip_autostate_test?
106
131
  svi = Interface.new('Vlan23')
107
132
 
108
133
  config('interface vlan 23', 'autostate')
109
-
110
- ref = cmd_ref_autostate
111
- result = ref.default_value
112
- result = true if ref.config_set
113
- assert_equal(result, svi.svi_autostate,
114
- 'Error: svi autostate not correct.')
134
+ assert(svi.svi_autostate, 'Error: svi autostate not correct.')
115
135
  svi.destroy
116
136
  end
117
137
 
118
- def test_svi_set_autostate_false
138
+ def test_set_autostate_false
139
+ skip_autostate_test?
119
140
  ref = cmd_ref_autostate
120
141
  svi = Interface.new('Vlan23')
121
142
  assert_result(ref.test_config_result(false),
@@ -125,7 +146,8 @@ class TestSvi < CiscoTestCase
125
146
  svi.destroy
126
147
  end
127
148
 
128
- def test_svi_set_autostate_true
149
+ def test_set_autostate_true
150
+ skip_autostate_test?
129
151
  svi = Interface.new('Vlan23')
130
152
  ref = cmd_ref_autostate
131
153
  assert_result(ref.test_config_result(true),
@@ -135,7 +157,8 @@ class TestSvi < CiscoTestCase
135
157
  svi.destroy
136
158
  end
137
159
 
138
- def test_svi_set_autostate_default
160
+ def test_set_autostate_default
161
+ skip_autostate_test?
139
162
  svi = Interface.new('Vlan23')
140
163
  ref = cmd_ref_autostate
141
164
  default_value = ref.default_value
@@ -146,7 +169,7 @@ class TestSvi < CiscoTestCase
146
169
  svi.destroy
147
170
  end
148
171
 
149
- def test_svi_get_management_true
172
+ def test_get_management_true
150
173
  svi = Interface.new('Vlan23')
151
174
 
152
175
  config('interface vlan 23', 'management')
@@ -155,21 +178,21 @@ class TestSvi < CiscoTestCase
155
178
  svi.destroy
156
179
  end
157
180
 
158
- def test_svi_set_management_false
181
+ def test_set_management_false
159
182
  svi = Interface.new('Vlan23')
160
183
  svi.svi_management = false
161
184
  refute(svi.svi_management)
162
185
  svi.destroy
163
186
  end
164
187
 
165
- def test_svi_set_management_true
188
+ def test_set_management_true
166
189
  svi = Interface.new('Vlan23')
167
190
  svi.svi_management = true
168
191
  assert(svi.svi_management)
169
192
  svi.destroy
170
193
  end
171
194
 
172
- def test_svi_set_management_default
195
+ def test_set_management_default
173
196
  svi = Interface.new('Vlan23')
174
197
  svi.svi_management = true
175
198
  assert(svi.svi_management)
@@ -179,47 +202,38 @@ class TestSvi < CiscoTestCase
179
202
  svi.destroy
180
203
  end
181
204
 
182
- def test_svi_get_svis
183
- count = 5
184
-
185
- ref = cmd_ref_autostate
186
- # Have to account for interface Vlan1 why we add 1 to count
187
- (2..count + 1).each do |i|
188
- str = 'Vlan' + i.to_s
189
- svi = Interface.new(str)
190
- assert_result(ref.test_config_result(false),
191
- 'Error: svi autostate not set to false') do
192
- svi.svi_autostate = false
193
- end
194
- svi.svi_management = true
205
+ def config_svi_properties(state)
206
+ # Skip default vlan1
207
+ (2..6).each do |i|
208
+ svi = Interface.new('Vlan' + i.to_s)
209
+ svi.svi_autostate = state unless /N(5|6)K/.match(node.product_id)
210
+ svi.svi_management = state
195
211
  end
212
+ end
196
213
 
197
- svis = Interface.interfaces
198
- ref = cmd_ref_autostate
199
- result = ref.default_value
200
- svis.each do |id, svi|
201
- case id
202
- when /^vlan1$/
203
- result = true if ref.config_set
204
- assert_equal(result, svi.svi_autostate,
205
- 'Error: svis collection, Vlan1, incorrect autostate')
206
- refute(svi.svi_management,
207
- 'Error: svis collection, Vlan1, incorrect management')
208
- when /^vlan/
209
- result = false if ref.config_set
210
- assert_equal(result, svi.svi_autostate,
211
- "Error: svis collection, Vlan#{id}, incorrect autostate")
212
- assert(svi.svi_management,
213
- "Error: svis collection, Vlan#{id}, incorrect management")
214
+ def test_get_svis
215
+ config_svi_properties(true)
216
+ Interface.interfaces.each do |id, obj|
217
+ next if id[/vlan1/]
218
+ next unless id[/vlan/]
219
+ unless /N(5|6)K/.match(node.product_id)
220
+ assert(obj.svi_autostate, "svi autostate should be enabled #{id}")
214
221
  end
222
+ assert(obj.svi_management, "svi management should be enabled #{id}")
215
223
  end
216
224
 
217
- svis.each_key do |id|
218
- config("no interface #{id}") if id[/^vlan/]
225
+ config_svi_properties(false)
226
+ Interface.interfaces.each do |id, obj|
227
+ next if id[/vlan1/]
228
+ next unless id[/vlan/]
229
+ unless /N(5|6)K/.match(node.product_id)
230
+ refute(obj.svi_autostate, "svi autostate should be disabled #{id}")
231
+ end
232
+ refute(obj.svi_management, "svi management should be disabled #{id}")
219
233
  end
220
234
  end
221
235
 
222
- def test_svi_create_interface_description
236
+ def test_create_interface_description
223
237
  svi = Interface.new('Vlan23')
224
238
 
225
239
  description = 'Test description'
@@ -230,7 +244,8 @@ class TestSvi < CiscoTestCase
230
244
  end
231
245
 
232
246
  def test_system_default_svi_autostate_on_off
233
- interface = Interface.new('Eth1/1')
247
+ skip_autostate_test?
248
+ interface = Interface.new(interfaces[0])
234
249
 
235
250
  system_default_svi_autostate('no ')
236
251
  refute(interface.system_default_svi_autostate,
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2014-2015 Cisco and/or its affiliates.
1
+ # Copyright (c) 2014-2016 Cisco and/or its affiliates.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -49,6 +49,11 @@ class TestInterfaceSwitchport < CiscoTestCase
49
49
  end
50
50
  end
51
51
 
52
+ def platform_supports_vtp_switchport_access?
53
+ skip('Platform does not support VTP when switchport mode is access') if
54
+ node.product_id =~ /N(5|6|7)/
55
+ end
56
+
52
57
  def system_default_switchport(state='')
53
58
  config("#{state} system default switchport")
54
59
  end
@@ -100,6 +105,7 @@ class TestInterfaceSwitchport < CiscoTestCase
100
105
  end
101
106
 
102
107
  def test_switchport_vtp_enabled_access
108
+ platform_supports_vtp_switchport_access?
103
109
  vtp = Vtp.new(true)
104
110
  interface = Interface.new(interfaces[0])
105
111
  interface.switchport_mode = :access
@@ -147,6 +153,7 @@ class TestInterfaceSwitchport < CiscoTestCase
147
153
  end
148
154
 
149
155
  def test_set_switchport_vtp_default_access
156
+ platform_supports_vtp_switchport_access?
150
157
  vtp = Vtp.new(true)
151
158
  interface = Interface.new(interfaces[0])
152
159
  interface.switchport_mode = :access
@@ -188,6 +195,7 @@ class TestInterfaceSwitchport < CiscoTestCase
188
195
  end
189
196
 
190
197
  def test_set_switchport_vtp_true_access
198
+ platform_supports_vtp_switchport_access?
191
199
  vtp = Vtp.new(true)
192
200
  interface = Interface.new(interfaces[0])
193
201
 
@@ -304,7 +312,7 @@ class TestInterfaceSwitchport < CiscoTestCase
304
312
  'switchport autostate exclude')
305
313
 
306
314
  cmd_ref = cmd_ref_switchport_autostate_exclude
307
- if cmd_ref.config_set
315
+ if cmd_ref.config_set?
308
316
  assert(interface.switchport_autostate_exclude,
309
317
  'Error: interface, access, autostate exclude not enabled')
310
318
  else
@@ -333,7 +341,7 @@ class TestInterfaceSwitchport < CiscoTestCase
333
341
  'switchport autostate exclude')
334
342
 
335
343
  cmd_ref = cmd_ref_switchport_autostate_exclude
336
- if cmd_ref.config_set
344
+ if cmd_ref.config_set?
337
345
  assert(interface.switchport_autostate_exclude,
338
346
  'Error: interface, access, autostate exclude not enabled')
339
347
  else
@@ -715,7 +723,7 @@ class TestInterfaceSwitchport < CiscoTestCase
715
723
  # end
716
724
 
717
725
  def test_system_default_switchport_on_off
718
- interface = Interface.new('Eth1/1')
726
+ interface = Interface.new(interfaces[0])
719
727
 
720
728
  system_default_switchport('')
721
729
  assert(interface.system_default_switchport,
@@ -725,10 +733,14 @@ class TestInterfaceSwitchport < CiscoTestCase
725
733
  system_default_switchport('no ')
726
734
  refute(interface.system_default_switchport,
727
735
  'Test for disabled - failed')
736
+ rescue RuntimeError => e
737
+ skip('NX-OS defect: system default switchport nvgens twice') if
738
+ e.message[/Expected zero.one value/]
739
+ flunk(e.message)
728
740
  end
729
741
 
730
742
  def test_system_default_switchport_shutdown_on_off
731
- interface = Interface.new('Eth1/1')
743
+ interface = Interface.new(interfaces[0])
732
744
 
733
745
  system_default_switchport_shutdown('no ')
734
746
  refute(interface.system_default_switchport_shutdown,
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Minitest for NameServer class
3
3
  #
4
- # Copyright (c) 2014-2015 Cisco and/or its affiliates.
4
+ # Copyright (c) 2014-2016 Cisco and/or its affiliates.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
data/tests/test_node.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2013-2015 Cisco and/or its affiliates.
1
+ # Copyright (c) 2013-2016 Cisco and/or its affiliates.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2013-2015 Cisco and/or its affiliates.
1
+ # Copyright (c) 2013-2016 Cisco and/or its affiliates.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -84,17 +84,7 @@ vrf blue",
84
84
  node.client.config(['interface loopback1', 'no shutdown'])
85
85
 
86
86
  result = node.config_get('interface', 'shutdown', 'loopback1')
87
- assert_nil(result)
88
- end
89
-
90
- def test_node_token_str_to_regexp
91
- token = ['/%s/i', '/%s foo %s/', '/zzz/i']
92
- args = %w(LoopBack2 no bar)
93
- expected = [/LoopBack2/i, /no foo bar/, /zzz/i]
94
-
95
- result = node.token_str_to_regexp(token, args)
96
- # puts "intersection: #{result & expected}, diff: #{result - expected}"
97
- assert_equal(expected, result)
87
+ refute(result)
98
88
  end
99
89
 
100
90
  def test_node_config_get_invalid
@@ -126,13 +116,13 @@ vrf blue",
126
116
  def test_node_config_set
127
117
  node.config_set('snmp_server', 'aaa_user_cache_timeout', '', 100)
128
118
  run = node.client.show('show run all | inc snmp')
129
- val = find_one_ascii(run, /snmp-server aaa-user cache-timeout (\d+)/)
130
- assert_equal('100', val)
119
+ val = find_ascii(run, /snmp-server aaa-user cache-timeout (\d+)/)
120
+ assert_equal(['100'], val)
131
121
 
132
122
  node.config_set('snmp_server', 'aaa_user_cache_timeout', 'no', 100)
133
123
  run = node.client.show('show run all | inc snmp')
134
- val = find_one_ascii(run, /snmp-server aaa-user cache-timeout (\d+)/)
135
- assert_equal('3600', val)
124
+ val = find_ascii(run, /snmp-server aaa-user cache-timeout (\d+)/)
125
+ assert_equal(['3600'], val)
136
126
  end
137
127
 
138
128
  def test_node_config_set_invalid
@@ -236,8 +226,8 @@ vrf blue",
236
226
  assert_equal('switch', name)
237
227
 
238
228
  return unless configured_name
239
- config("hostname #{configured_name}") if (switchname == false)
240
- config("switchname #{configured_name}") if (switchname == true)
229
+ config("hostname #{configured_name}") if switchname == false
230
+ config("switchname #{configured_name}") if switchname == true
241
231
  end
242
232
 
243
233
  def test_node_get_host_name_when_set
@@ -266,8 +256,8 @@ vrf blue",
266
256
  assert_equal('xyz', host_name)
267
257
 
268
258
  if configured_name
269
- config("hostname #{configured_name}") if (switchname == false)
270
- config("switchname #{configured_name}") if (switchname == true)
259
+ config("hostname #{configured_name}") if switchname == false
260
+ config("switchname #{configured_name}") if switchname == true
271
261
  else
272
262
  switchname ? config('no switchname') : config('no hostname')
273
263
  end
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Minitest for NtpConfig class
3
3
  #
4
- # Copyright (c) 2015 Cisco and/or its affiliates.
4
+ # Copyright (c) 2015-2016 Cisco and/or its affiliates.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Minitest for NtpServer class
3
3
  #
4
- # Copyright (c) 2014-2015 Cisco and/or its affiliates.
4
+ # Copyright (c) 2014-2016 Cisco and/or its affiliates.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ class TestNtpServer < CiscoTestCase
35
35
  def no_ntpserver_uk
36
36
  # Turn the feature off for a clean test.
37
37
  config('no ntpserver 130.88.203.12',
38
- 'no ntpserver 194.207.34.9')
38
+ 'no ntpserver 2003::5')
39
39
  end
40
40
 
41
41
  # TESTS
@@ -46,7 +46,19 @@ class TestNtpServer < CiscoTestCase
46
46
 
47
47
  ntp = Cisco::NtpServer.new(id, false)
48
48
  assert_includes(Cisco::NtpServer.ntpservers, id)
49
- assert_equal(Cisco::NtpServer.ntpservers[id], ntp)
49
+ assert_equal(ntp, Cisco::NtpServer.ntpservers[id])
50
+
51
+ ntp.destroy
52
+ refute_includes(Cisco::NtpServer.ntpservers, id)
53
+ end
54
+
55
+ def test_ntpserver_create_destroy_single_ipv6
56
+ id = '2003::5'
57
+ refute_includes(Cisco::NtpServer.ntpservers, id)
58
+
59
+ ntp = Cisco::NtpServer.new(id, false)
60
+ assert_includes(Cisco::NtpServer.ntpservers, id)
61
+ assert_equal(ntp, Cisco::NtpServer.ntpservers[id])
50
62
 
51
63
  ntp.destroy
52
64
  refute_includes(Cisco::NtpServer.ntpservers, id)
@@ -54,7 +66,7 @@ class TestNtpServer < CiscoTestCase
54
66
 
55
67
  def test_ntpserver_create_destroy_multiple
56
68
  id1 = '130.88.203.12'
57
- id2 = '194.207.34.9'
69
+ id2 = '2003::5'
58
70
  refute_includes(Cisco::NtpServer.ntpservers, id1)
59
71
  refute_includes(Cisco::NtpServer.ntpservers, id2)
60
72
 
@@ -63,8 +75,8 @@ class TestNtpServer < CiscoTestCase
63
75
  refute_equal(ntp1, ntp2)
64
76
  assert_includes(Cisco::NtpServer.ntpservers, id1)
65
77
  assert_includes(Cisco::NtpServer.ntpservers, id2)
66
- assert_equal(Cisco::NtpServer.ntpservers[id1], ntp1)
67
- assert_equal(Cisco::NtpServer.ntpservers[id2], ntp2)
78
+ assert_equal(ntp1, Cisco::NtpServer.ntpservers[id1])
79
+ assert_equal(ntp2, Cisco::NtpServer.ntpservers[id2])
68
80
 
69
81
  ntp1.destroy
70
82
  ntp2.destroy