cisco_node_utils 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +13 -0
  5. data/.travis.yml +4 -1
  6. data/CHANGELOG.md +81 -2
  7. data/CONTRIBUTING.md +2 -17
  8. data/Gemfile +5 -0
  9. data/README.md +92 -47
  10. data/Rakefile +23 -1
  11. data/bin/git/hooks/hook_lib +7 -0
  12. data/bin/git/hooks/pre-commit/check_unstaged_changes +18 -0
  13. data/bin/git/hooks/pre-commit/rubocop +7 -2
  14. data/bin/git/hooks/pre-commit/validate-diffs +18 -4
  15. data/bin/git/hooks/pre-commit/validate-yaml +18 -0
  16. data/bin/git/update-hooks +64 -6
  17. data/cisco_node_utils.gemspec +9 -6
  18. data/docs/README-develop-best-practices.md +149 -50
  19. data/docs/README-develop-node-utils-APIs.md +92 -42
  20. data/docs/README-maintainers.md +7 -4
  21. data/docs/README-test-execution.md +57 -0
  22. data/docs/cisco_node_utils.yaml.example +30 -0
  23. data/docs/template-router.rb +4 -0
  24. data/ext/mkrf_conf.rb +63 -0
  25. data/lib/.rubocop.yml +2 -2
  26. data/lib/cisco_node_utils.rb +5 -0
  27. data/lib/cisco_node_utils/aaa_authentication_login.rb +5 -6
  28. data/lib/cisco_node_utils/aaa_authorization_service.rb +1 -1
  29. data/lib/cisco_node_utils/ace.rb +165 -12
  30. data/lib/cisco_node_utils/acl.rb +2 -1
  31. data/lib/cisco_node_utils/bgp.rb +184 -21
  32. data/lib/cisco_node_utils/bgp_af.rb +94 -249
  33. data/lib/cisco_node_utils/bgp_neighbor.rb +94 -14
  34. data/lib/cisco_node_utils/bgp_neighbor_af.rb +75 -8
  35. data/lib/cisco_node_utils/bridge_domain.rb +183 -0
  36. data/lib/cisco_node_utils/bridge_domain_vni.rb +206 -0
  37. data/lib/cisco_node_utils/cisco_cmn_utils.rb +85 -2
  38. data/lib/cisco_node_utils/client.rb +35 -0
  39. data/lib/cisco_node_utils/client/client.rb +234 -0
  40. data/lib/cisco_node_utils/client/grpc.rb +33 -0
  41. data/lib/cisco_node_utils/client/grpc/client.rb +311 -0
  42. data/lib/cisco_node_utils/client/grpc/ems.proto +148 -0
  43. data/lib/cisco_node_utils/client/grpc/ems.rb +111 -0
  44. data/lib/cisco_node_utils/client/grpc/ems_services.rb +49 -0
  45. data/lib/cisco_node_utils/client/nxapi.rb +31 -0
  46. data/lib/cisco_node_utils/client/nxapi/client.rb +305 -0
  47. data/lib/cisco_node_utils/client/utils.rb +164 -0
  48. data/lib/cisco_node_utils/cmd_ref/README_YAML.md +222 -254
  49. data/lib/cisco_node_utils/cmd_ref/aaa_auth_login_service.yaml +11 -8
  50. data/lib/cisco_node_utils/cmd_ref/aaa_authentication_login.yaml +22 -15
  51. data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +11 -8
  52. data/lib/cisco_node_utils/cmd_ref/acl.yaml +21 -16
  53. data/lib/cisco_node_utils/cmd_ref/bgp.yaml +239 -109
  54. data/lib/cisco_node_utils/cmd_ref/bgp_af.yaml +114 -55
  55. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +76 -52
  56. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +106 -62
  57. data/lib/cisco_node_utils/cmd_ref/bridge_domain.yaml +71 -0
  58. data/lib/cisco_node_utils/cmd_ref/bridge_domain_vni.yaml +33 -0
  59. data/lib/cisco_node_utils/cmd_ref/dnsclient.yaml +35 -14
  60. data/lib/cisco_node_utils/cmd_ref/encapsulation.yaml +25 -0
  61. data/lib/cisco_node_utils/cmd_ref/evpn_vni.yaml +23 -17
  62. data/lib/cisco_node_utils/cmd_ref/fabricpath.yaml +94 -83
  63. data/lib/cisco_node_utils/cmd_ref/fabricpath_topology.yaml +22 -17
  64. data/lib/cisco_node_utils/cmd_ref/feature.yaml +76 -26
  65. data/lib/cisco_node_utils/cmd_ref/images.yaml +3 -2
  66. data/lib/cisco_node_utils/cmd_ref/interface.yaml +381 -153
  67. data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +21 -11
  68. data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +21 -21
  69. data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +30 -21
  70. data/lib/cisco_node_utils/cmd_ref/interface_service_vni.yaml +18 -13
  71. data/lib/cisco_node_utils/cmd_ref/inventory.yaml +26 -31
  72. data/lib/cisco_node_utils/cmd_ref/itd_device_group.yaml +83 -0
  73. data/lib/cisco_node_utils/cmd_ref/itd_service.yaml +119 -0
  74. data/lib/cisco_node_utils/cmd_ref/memory.yaml +17 -6
  75. data/lib/cisco_node_utils/cmd_ref/ntp_config.yaml +10 -3
  76. data/lib/cisco_node_utils/cmd_ref/ntp_server.yaml +17 -5
  77. data/lib/cisco_node_utils/cmd_ref/ospf.yaml +33 -29
  78. data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +12 -10
  79. data/lib/cisco_node_utils/cmd_ref/pim.yaml +16 -19
  80. data/lib/cisco_node_utils/cmd_ref/portchannel_global.yaml +40 -25
  81. data/lib/cisco_node_utils/cmd_ref/radius_global.yaml +17 -12
  82. data/lib/cisco_node_utils/cmd_ref/radius_server.yaml +71 -35
  83. data/lib/cisco_node_utils/cmd_ref/radius_server_group.yaml +10 -5
  84. data/lib/cisco_node_utils/cmd_ref/show_system.yaml +6 -2
  85. data/lib/cisco_node_utils/cmd_ref/show_version.yaml +47 -43
  86. data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +13 -11
  87. data/lib/cisco_node_utils/cmd_ref/snmp_group.yaml +4 -2
  88. data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +23 -21
  89. data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +26 -22
  90. data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +19 -17
  91. data/lib/cisco_node_utils/cmd_ref/snmpnotification.yaml +18 -6
  92. data/lib/cisco_node_utils/cmd_ref/stp_global.yaml +234 -0
  93. data/lib/cisco_node_utils/cmd_ref/syslog_server.yaml +24 -9
  94. data/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml +5 -3
  95. data/lib/cisco_node_utils/cmd_ref/system.yaml +4 -3
  96. data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +22 -20
  97. data/lib/cisco_node_utils/cmd_ref/tacacs_server_group.yaml +27 -15
  98. data/lib/cisco_node_utils/cmd_ref/tacacs_server_host.yaml +45 -16
  99. data/lib/cisco_node_utils/cmd_ref/vdc.yaml +21 -11
  100. data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +3 -2
  101. data/lib/cisco_node_utils/cmd_ref/vlan.yaml +60 -32
  102. data/lib/cisco_node_utils/cmd_ref/vpc.yaml +118 -101
  103. data/lib/cisco_node_utils/cmd_ref/vrf.yaml +54 -58
  104. data/lib/cisco_node_utils/cmd_ref/vrf_af.yaml +118 -0
  105. data/lib/cisco_node_utils/cmd_ref/vtp.yaml +19 -25
  106. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +28 -18
  107. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +34 -17
  108. data/lib/cisco_node_utils/cmd_ref/yum.yaml +6 -4
  109. data/lib/cisco_node_utils/command_reference.rb +261 -142
  110. data/lib/cisco_node_utils/constants.rb +33 -0
  111. data/lib/cisco_node_utils/encapsulation.rb +112 -0
  112. data/lib/cisco_node_utils/environment.rb +102 -0
  113. data/lib/cisco_node_utils/evpn_vni.rb +5 -3
  114. data/lib/cisco_node_utils/exceptions.rb +111 -0
  115. data/lib/cisco_node_utils/fabricpath_global.rb +52 -35
  116. data/lib/cisco_node_utils/fabricpath_topology.rb +44 -57
  117. data/lib/cisco_node_utils/feature.rb +165 -3
  118. data/lib/cisco_node_utils/interface.rb +1051 -260
  119. data/lib/cisco_node_utils/interface_channel_group.rb +11 -10
  120. data/lib/cisco_node_utils/interface_ospf.rb +1 -2
  121. data/lib/cisco_node_utils/interface_portchannel.rb +4 -12
  122. data/lib/cisco_node_utils/interface_service_vni.rb +7 -7
  123. data/lib/cisco_node_utils/itd_device_group.rb +248 -0
  124. data/lib/cisco_node_utils/itd_device_group_node.rb +144 -0
  125. data/lib/cisco_node_utils/itd_service.rb +523 -0
  126. data/lib/cisco_node_utils/logger.rb +75 -0
  127. data/lib/cisco_node_utils/node.rb +62 -192
  128. data/lib/cisco_node_utils/node_util.rb +56 -10
  129. data/lib/cisco_node_utils/overlay_global.rb +2 -2
  130. data/lib/cisco_node_utils/pim.rb +2 -13
  131. data/lib/cisco_node_utils/pim_group_list.rb +1 -1
  132. data/lib/cisco_node_utils/pim_rp_address.rb +1 -1
  133. data/lib/cisco_node_utils/platform.rb +52 -21
  134. data/lib/cisco_node_utils/portchannel_global.rb +89 -19
  135. data/lib/cisco_node_utils/radius_server.rb +168 -37
  136. data/lib/cisco_node_utils/router_ospf.rb +20 -35
  137. data/lib/cisco_node_utils/router_ospf_vrf.rb +4 -4
  138. data/lib/cisco_node_utils/snmpserver.rb +1 -6
  139. data/lib/cisco_node_utils/snmpuser.rb +6 -4
  140. data/lib/cisco_node_utils/stp_global.rb +676 -0
  141. data/lib/cisco_node_utils/syslog_server.rb +77 -18
  142. data/lib/cisco_node_utils/syslog_settings.rb +1 -1
  143. data/lib/cisco_node_utils/tacacs_server_group.rb +8 -4
  144. data/lib/cisco_node_utils/tacacs_server_host.rb +115 -25
  145. data/lib/cisco_node_utils/vdc.rb +12 -0
  146. data/lib/cisco_node_utils/version.rb +1 -1
  147. data/lib/cisco_node_utils/vlan.rb +147 -29
  148. data/lib/cisco_node_utils/vpc.rb +55 -3
  149. data/lib/cisco_node_utils/vrf.rb +72 -11
  150. data/lib/cisco_node_utils/vrf_af.rb +114 -29
  151. data/lib/cisco_node_utils/vtp.rb +34 -52
  152. data/lib/cisco_node_utils/vxlan_vtep.rb +34 -8
  153. data/lib/cisco_node_utils/vxlan_vtep_vni.rb +36 -4
  154. data/lib/minitest/environment_plugin.rb +31 -0
  155. data/lib/minitest/log_level_plugin.rb +41 -0
  156. data/spec/client_spec.rb +7 -0
  157. data/spec/environment_spec.rb +263 -0
  158. data/spec/grpc_client_spec.rb +23 -0
  159. data/spec/isolate/all_clients_spec.rb +9 -0
  160. data/spec/isolate/grpc_only_spec.rb +16 -0
  161. data/spec/isolate/no_clients_spec.rb +26 -0
  162. data/spec/isolate/nxapi_only_spec.rb +16 -0
  163. data/spec/nxapi_client_spec.rb +42 -0
  164. data/spec/schema.yaml +75 -0
  165. data/spec/shared_examples_for_clients.rb +14 -0
  166. data/spec/spec_helper.rb +91 -0
  167. data/spec/whitespace_spec.rb +10 -0
  168. data/spec/yaml_spec.rb +42 -0
  169. data/tests/.rubocop.yml +2 -2
  170. data/tests/CSCuxdublin-1.0.0-7.0.3.I3.1.lib32_n9000.rpm +0 -0
  171. data/tests/basetest.rb +96 -36
  172. data/tests/ciscotest.rb +220 -12
  173. data/tests/cmd_config.yaml +71 -49
  174. data/tests/cmd_config_invalid.yaml +1 -1
  175. data/tests/test_aaa_authentication_login.rb +1 -0
  176. data/tests/test_aaa_authentication_login_service.rb +9 -0
  177. data/tests/test_aaa_authorization_service.rb +173 -367
  178. data/tests/test_ace.rb +171 -100
  179. data/tests/test_acl.rb +10 -1
  180. data/tests/test_bgp_af.rb +395 -728
  181. data/tests/test_bgp_neighbor.rb +274 -115
  182. data/tests/test_bgp_neighbor_af.rb +178 -77
  183. data/tests/test_bridge_domain.rb +191 -0
  184. data/tests/test_bridge_domain_vni.rb +116 -0
  185. data/tests/test_client_utils.rb +111 -0
  186. data/tests/test_command_config.rb +9 -5
  187. data/tests/test_command_reference.rb +380 -102
  188. data/tests/test_dns_domain.rb +13 -3
  189. data/tests/test_domain_name.rb +13 -3
  190. data/tests/test_encapsulation.rb +77 -0
  191. data/tests/test_evpn_vni.rb +25 -7
  192. data/tests/test_fabricpath_global.rb +167 -163
  193. data/tests/test_fabricpath_topology.rb +12 -33
  194. data/tests/test_feature.rb +215 -0
  195. data/tests/test_grpc.rb +166 -0
  196. data/tests/test_interface.rb +585 -344
  197. data/tests/test_interface_bdi.rb +80 -0
  198. data/tests/test_interface_channel_group.rb +6 -3
  199. data/tests/test_interface_ospf.rb +26 -24
  200. data/tests/test_interface_portchannel.rb +1 -0
  201. data/tests/test_interface_private_vlan.rb +724 -0
  202. data/tests/test_interface_service_vni.rb +37 -66
  203. data/tests/test_interface_svi.rb +98 -101
  204. data/tests/test_interface_switchport.rb +419 -549
  205. data/tests/test_itd_device_group.rb +145 -0
  206. data/tests/test_itd_device_group_node.rb +199 -0
  207. data/tests/test_itd_service.rb +298 -0
  208. data/tests/test_logger.rb +43 -0
  209. data/tests/test_name_server.rb +11 -2
  210. data/tests/test_node.rb +16 -75
  211. data/tests/test_node_ext.rb +174 -163
  212. data/tests/test_node_util.rb +119 -0
  213. data/tests/test_ntp_config.rb +5 -1
  214. data/tests/test_ntp_server.rb +2 -2
  215. data/tests/test_nxapi.rb +221 -0
  216. data/tests/test_overlay_global.rb +47 -38
  217. data/tests/test_pim.rb +2 -0
  218. data/tests/test_pim_group_list.rb +2 -0
  219. data/tests/test_pim_rp_address.rb +2 -0
  220. data/tests/test_platform.rb +86 -39
  221. data/tests/test_portchannel_global.rb +211 -135
  222. data/tests/test_radius_global.rb +13 -5
  223. data/tests/test_radius_server.rb +256 -104
  224. data/tests/test_radius_server_group.rb +2 -0
  225. data/tests/test_router_bgp.rb +781 -485
  226. data/tests/test_router_ospf.rb +26 -103
  227. data/tests/test_router_ospf_vrf.rb +52 -57
  228. data/tests/test_snmp_notification_receiver.rb +2 -0
  229. data/tests/test_snmpcommunity.rb +2 -0
  230. data/tests/test_snmpgroup.rb +2 -0
  231. data/tests/test_snmpnotification.rb +40 -21
  232. data/tests/test_snmpserver.rb +2 -0
  233. data/tests/test_snmpuser.rb +2 -0
  234. data/tests/test_stp_global.rb +563 -0
  235. data/tests/test_syslog_server.rb +32 -8
  236. data/tests/test_syslog_settings.rb +22 -9
  237. data/tests/test_tacacs_server.rb +32 -27
  238. data/tests/test_tacacs_server_group.rb +100 -45
  239. data/tests/test_tacacs_server_host.rb +135 -43
  240. data/tests/test_vdc.rb +2 -16
  241. data/tests/test_vlan.rb +106 -54
  242. data/tests/test_vlan_mt_full.rb +11 -21
  243. data/tests/test_vlan_private.rb +669 -0
  244. data/tests/test_vpc.rb +312 -159
  245. data/tests/test_vrf.rb +122 -113
  246. data/tests/test_vrf_af.rb +238 -0
  247. data/tests/test_vtp.rb +58 -102
  248. data/tests/test_vxlan_vtep.rb +38 -17
  249. data/tests/test_vxlan_vtep_vni.rb +61 -9
  250. data/tests/test_yum.rb +49 -25
  251. metadata +122 -36
  252. data/lib/cisco_node_utils/cmd_ref/fex.yaml +0 -9
  253. data/lib/cisco_node_utils/cmd_ref/vni.yaml +0 -76
  254. data/lib/cisco_node_utils/vni.rb +0 -227
  255. data/tests/test_vni.rb +0 -106
@@ -1,9 +0,0 @@
1
- # fex
2
- ---
3
- feature:
4
- config_get: "show feature-set"
5
- config_get_token: '/^fex[\s\d]+(\w+)/'
6
- config_set: "%s feature-set fex"
7
-
8
- feature_install:
9
- config_set: "%s install feature-set fex"
@@ -1,76 +0,0 @@
1
- # vni
2
- ---
3
- _exclude: [/N(5|6)/]
4
- all_vnis:
5
- multiple:
6
- /N7/:
7
- # MT-full only
8
- config_get: 'show vni'
9
- config_get_token: '/^(\d+)\s/'
10
- /N(3|9)/:
11
- # MT-lite only
12
- config_get: 'show running vlan'
13
- config_get_token: '/vn-segment (\d+)/'
14
-
15
- bridge_domain:
16
- # MT-full only
17
- config_get: 'show vni'
18
- config_get_token: [ '/^%d\s+\S+\s+(\d+)/' ]
19
- config_set: ['bridge-domain <domain>', '<state> member vni <vni>', 'end']
20
- default_value: ~
21
-
22
- bridge_domain_activate:
23
- config_set: ['<state> system bridge-domain add <domain>', 'end']
24
-
25
- create:
26
- config_set: ['vni <vni>' , 'end']
27
-
28
- destroy:
29
- /N7/:
30
- # MT-full only
31
- config_set: 'no vni <vni>'
32
- /N(3|9)/:
33
- # MT-lite only
34
- config_set: ['vlan <vlan>', 'no vn-segment <vni> ; end']
35
-
36
- encap_dot1q:
37
- config_set: ["encapsulation profile vni %s", "%s dot1q %s vni %s", "end"]
38
- default_value: ~
39
-
40
- feature:
41
- config_get: 'show running | i ^feature'
42
- /N7/:
43
- # MT-Full only
44
- config_get_token: '/^feature vni$/'
45
- config_set: 'feature vni'
46
- /N(3|9)/:
47
- # MT-lite only
48
- config_get_token: '/^feature vn-segment-vlan-based$/'
49
- config_set: 'feature vn-segment-vlan-based'
50
-
51
- mt_full_support:
52
- # This is only used for determining support for Multi-Tenancy Full
53
- kind: boolean
54
- /N7/:
55
- default_only: true
56
- else:
57
- # this feature is always off on these platforms and cannot be changed
58
- default_only: false
59
-
60
- mt_lite_support:
61
- # This is only used for determining support for Multi-Tenancy Lite
62
- kind: boolean
63
- /N(3|9)/:
64
- default_only: true
65
- else:
66
- # this feature is always off on these platforms and cannot be changed
67
- default_only: false
68
-
69
- shutdown:
70
- # MT-Full only
71
- /N7/:
72
- kind: boolean
73
- config_get: 'show vni'
74
- config_get_token: '/^<vni> +Down/'
75
- config_set: ['vni <vni>', '<state> shutdown', 'end']
76
- default_value: false
@@ -1,227 +0,0 @@
1
- # VNI provider class
2
- #
3
- # Deepak Cherian, September 2015
4
- #
5
- # Copyright (c) 2014-2016 Cisco and/or its affiliates.
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
- # ----
20
- # This provider supports both MT-full (N7K) and MT-lite (N3K/N9K),
21
- # each of which have their own feature requirements and clis.
22
- #
23
- # MT-full cli: MT-lite cli:
24
- # feature nv overlay feature nv overlay
25
- # feature nvi feature vn-segment-vlan-based
26
- # system bridge-domain 100-113
27
- # bridge-domain 100
28
- # member vni 100
29
- # vni 10001 vlan 100
30
- # shutdown vn-segment 10001
31
- #
32
- require_relative 'node_util'
33
- require_relative 'feature'
34
-
35
- module Cisco
36
- # node_utils class for Vni
37
- class Vni < NodeUtil
38
- attr_reader :name, :vni_id
39
-
40
- def initialize(vni_id, instantiate=true)
41
- @vni_id = vni_id.to_s
42
- fail ArgumentError,
43
- 'Invalid value(non-numeric VNI id)' unless @vni_id[/^\d+$/]
44
- create if instantiate
45
- end
46
-
47
- def self.vnis
48
- hash = {}
49
- vni_list = config_get('vni', 'all_vnis')
50
- return hash if vni_list.nil?
51
-
52
- vni_list.each do |id|
53
- hash[id] = Vni.new(id, false)
54
- end
55
- hash
56
- end
57
-
58
- # feature vni
59
- def self.feature_vni_enabled
60
- config_get('vni', 'feature')
61
- rescue Cisco::CliError => e
62
- # cmd will syntax reject when feature is not enabled
63
- raise unless e.clierror =~ /Syntax error/
64
- return false
65
- end
66
-
67
- def self.feature_vni_enable # TBD: move this to feature.rb
68
- Feature.nv_overlay_enable
69
- config_set('vni', 'feature')
70
- end
71
-
72
- def self.mt_full_support
73
- config_get('vni', 'mt_full_support')
74
- end
75
-
76
- def self.mt_lite_support
77
- config_get('vni', 'mt_lite_support')
78
- end
79
-
80
- def create
81
- Vni.feature_vni_enable unless Vni.feature_vni_enabled
82
- config_set('vni', 'create', vni: @vni_id) if Vni.mt_full_support
83
- end
84
-
85
- def destroy
86
- config_set('vni', 'destroy', vni: @vni_id)
87
- end
88
-
89
- def cli_error_check(result)
90
- # The NXOS vni cli does not raise an exception in some conditions and
91
- # instead just displays a STDOUT error message; thus NXAPI does not detect
92
- # the failure and we must catch it by inspecting the "body" hash entry
93
- # returned by NXAPI. This cli behavior is unlikely to change.
94
- fail result[2]['body'] if /ERROR:/.match(result[2]['body'].to_s)
95
- end
96
-
97
- # TODO: This method will be refactored as part of US52662
98
- # def encap_dot1q
99
- # final_hash = {}
100
- # show = show("sh encapsulation profile | inc 'vni [0-9,]*' p 1")
101
- # debug("show class is #{show.class} and show op is #{show}")
102
- # return final_hash if show == {}
103
- # match_pat = /vni (\S+).*dot1q\s+([ 0-9,\-]+)vni ([ 0-9,\-]+)/m
104
- # split_pat = /encapsulation profile /
105
- # pair_arr = show.split(split_pat)
106
- # pair_arr.each do |pair|
107
- # match_arr = match_pat.match(pair)
108
- # next if match_arr.nil?
109
- # debug "match arr 1 : #{match_arr[1]} 2: #{match_arr[2]} " \
110
- # "3: #{match_arr[3]}"
111
- # key_arr = (match_arr[3].split(/,/)).map do |x|
112
- # x.strip!
113
- # if /-/.match(x)
114
- # x.gsub!('-', '..')
115
- # else
116
- # x
117
- # end
118
- # end
119
- # val_arr = (match_arr[2].split(/,/)).map do |x|
120
- # x.strip!
121
- # if /-/.match(x)
122
- # x.gsub!('-', '..')
123
- # else
124
- # x
125
- # end
126
- # end
127
- #
128
- # debug "key_arr = #{key_arr} val_arr = #{val_arr}"
129
- #
130
- # index = 0
131
- # value = nil
132
- # key_arr.each do |key|
133
- # # puts "checking |#{key}| against |#{@vni_id}|"
134
- # # puts "checking #{key.class} against #{my_vni.class}"
135
- # if /\.\./.match(key)
136
- # range = eval(key) ###################### *MUSTFIX* REMOVE eval
137
- # if range.include?(@vni_id.to_i)
138
- # val_range = eval(val_arr[index]) ##### *MUSTFIX* REMOVE eval
139
- # position = @vni_id.to_i - range.begin
140
- # value = val_range.begin + position
141
- # value = value.to_s
142
- # debug "matched #{@vni_id} value is #{value}"
143
- # break
144
- # end
145
- # elsif key == @vni_id
146
- # value = val_arr[index]
147
- # debug "matched #{key} value is #{value}"
148
- # end
149
- # index += 1
150
- # end
151
- # unless value.nil?
152
- # # final_hash[match_arr[1]] = value.to_i
153
- # final_hash[match_arr[1]] = value
154
- # end
155
- # end # pair.each
156
- # final_hash
157
- # end # end of encap_dot1q
158
-
159
- def encap_dot1q=(val, prev_val=nil) # TBD REFACTOR
160
- debug "val is of class #{val.class} and is #{val} prev is #{prev_val}"
161
- # When prev_val is nil, HashDiff doesn't do a `+' on each element, so this
162
- if prev_val.nil?
163
- val.each do |fresh_profile, fresh_dot1q|
164
- config_set('vni', 'encap_dot1q', fresh_profile, '',
165
- fresh_dot1q, @vni_id)
166
- end
167
- return
168
- end
169
- require 'hashdiff'
170
- hash_diff = HashDiff.diff(prev_val, val)
171
- debug "hsh diff ; #{hash_diff}"
172
- return if hash_diff == []
173
- hash_diff.each do |diff|
174
- result =
175
- case diff[0]
176
- when /\+/
177
- config_set('vni', 'encap_dot1q', diff[1], '', diff[2], @vni_id)
178
- when /\-/
179
- config_set('vni', 'encap_dot1q', diff[1], 'no', diff[2], @vni_id)
180
- when /~/
181
- config_set('vni', 'encap_dot1q', diff[1], 'no', diff[2], @vni_id)
182
- config_set('vni', 'encap_dot1q', diff[1], '', diff[3], @vni_id)
183
- end
184
- cli_error_check(result)
185
- end
186
- rescue CliError => e
187
- raise "[vni #{@vni_id}] '#{e.command}' : #{e.clierror}"
188
- end
189
-
190
- def default_encap_dot1q
191
- config_get_default('vni', 'encap_dot1q')
192
- end
193
-
194
- def bridge_domain
195
- bd_arr = config_get('vni', 'bridge_domain', vni: @vni_id)
196
- bd_arr.first.to_i
197
- end
198
-
199
- def bridge_domain=(domain)
200
- # TBD: ACTIVATE SHOULD BE SEPARATE SETTER AND POSSIBLY RENAMED
201
- state = (domain) ? '' : 'no'
202
- config_set('vni', 'bridge_domain_activate', state: state, domain: domain)
203
- config_set('vni', 'bridge_domain', state: state, domain: domain,
204
- vni: @vni_id)
205
- end
206
-
207
- def default_bridge_domain
208
- config_get_default('vni', 'bridge_domain')
209
- end
210
-
211
- def shutdown
212
- config_get('vni', 'shutdown', vni: @vni_id)
213
- end
214
-
215
- def shutdown=(state)
216
- state = (state) ? '' : 'no'
217
- result = config_set('vni', 'shutdown', state: state, vni: @vni_id)
218
- cli_error_check(result)
219
- rescue CliError => e
220
- raise "[vni #{@vni_id}] '#{e.command}' : #{e.clierror}"
221
- end
222
-
223
- def default_shutdown
224
- config_get_default('vni', 'shutdown')
225
- end
226
- end # class
227
- end # module
data/tests/test_vni.rb DELETED
@@ -1,106 +0,0 @@
1
- # Copyright (c) 2013-2016 Cisco and/or its affiliates.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- require_relative 'ciscotest'
16
- require_relative '../lib/cisco_node_utils/feature'
17
- require_relative '../lib/cisco_node_utils/vni'
18
- require_relative '../lib/cisco_node_utils/vdc'
19
-
20
- include Cisco
21
-
22
- # TestVni - Minitest for Vni node utility
23
- class TestVni < CiscoTestCase
24
- def setup
25
- super
26
- skip('Platform does not support MT-full or MT-lite') unless
27
- Vni.mt_full_support || Vni.mt_lite_support
28
- end
29
-
30
- def teardown
31
- return unless Vdc.vdc_support
32
- # Reset the vdc module type back to default
33
- v = Vdc.new('default')
34
- v.limit_resource_module_type = '' if v.limit_resource_module_type == 'f3'
35
- end
36
-
37
- def compatible_interface?
38
- # This test requires specific linecards; find a compatible linecard
39
- # and create an appropriate interface name from it.
40
- # Example 'show mod' output to match against:
41
- # '9 12 10/40 Gbps Ethernet Module N7K-F312FQ-25 ok'
42
- sh_mod = @device.cmd("sh mod | i '^[0-9]+.*N7K-F3'")[/^(\d+)\s.*N7K-F3/]
43
- slot = sh_mod.nil? ? nil : Regexp.last_match[1]
44
- skip('Unable to find compatible interface in chassis') if slot.nil?
45
-
46
- "ethernet#{slot}/1"
47
- end
48
-
49
- def mt_full_env_setup
50
- skip('Platform does not support MT-full') unless Vni.mt_full_support
51
- compatible_interface?
52
- v = Vdc.new('default')
53
- v.limit_resource_module_type = 'f3' unless
54
- v.limit_resource_module_type == 'f3'
55
- config('no feature vni')
56
- config('no feature nv overlay')
57
- end
58
-
59
- def mt_lite_env_setup
60
- skip('Platform does not support MT-lite') unless Vni.mt_lite_support
61
- config('no feature vn-segment-vlan-based')
62
- config('no feature nv overlay')
63
- end
64
-
65
- def test_mt_full_vni_create_destroy
66
- mt_full_env_setup
67
-
68
- v1 = Vni.new(10_001)
69
- v2 = Vni.new(10_002)
70
- v3 = Vni.new(10_003)
71
- assert_equal(3, Vni.vnis.keys.count)
72
-
73
- v2.destroy
74
- assert_equal(2, Vni.vnis.keys.count)
75
-
76
- v1.destroy
77
- v3.destroy
78
- assert_equal(0, Vni.vnis.keys.count)
79
- end
80
-
81
- # def test_mt_full_encapsulation_dot1q
82
- # TBD
83
- # mt_full_env_setup
84
- # end
85
-
86
- # def test_mt_full_mapped_bd
87
- # TBD
88
- # mt_full_env_setup
89
- # end
90
-
91
- def test_mt_full_shutdown
92
- mt_full_env_setup
93
- vni = Vni.new(10_000)
94
- vni.shutdown = true
95
- assert(vni.shutdown)
96
-
97
- vni.shutdown = false
98
- refute(vni.shutdown)
99
-
100
- vni.shutdown = !vni.default_shutdown
101
- assert_equal(!vni.default_shutdown, vni.shutdown)
102
-
103
- vni.shutdown = vni.default_shutdown
104
- assert_equal(vni.default_shutdown, vni.shutdown)
105
- end
106
- end