cisco_node_utils 1.1.0 → 1.2.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 (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
@@ -0,0 +1,377 @@
1
+ # David Chuck, November 2015
2
+ #
3
+ # Copyright (c) 2014-2016 Cisco and/or its affiliates.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require_relative 'node_util'
18
+ require_relative 'interface'
19
+
20
+ # Add vpc-specific constants to Cisco namespace
21
+ module Cisco
22
+ # Vpc - node utility class for VTP configuration management
23
+ class Vpc < NodeUtil
24
+ attr_reader :domain
25
+ # Constructor for Vpc
26
+ def initialize(domain_id, instantiate=true)
27
+ @domain = domain_id
28
+ @set_params = {}
29
+
30
+ create if instantiate
31
+ end
32
+
33
+ def self.domains
34
+ hash = {}
35
+ my_domain = config_get('vpc', 'domain')
36
+ hash[my_domain] = Vpc.new(my_domain, false) unless my_domain.nil?
37
+ hash
38
+ rescue Cisco::CliError => e
39
+ # cmd will syntax reject when feature is not enabled
40
+ raise unless e.clierror =~ /Syntax error/
41
+ return {}
42
+ end
43
+
44
+ def self.enabled
45
+ config_get('vpc', 'feature')
46
+ rescue Cisco::CliError => e
47
+ # cmd will syntax reject when feature is not enabled
48
+ raise unless e.clierror =~ /Syntax error/
49
+ return false
50
+ end
51
+
52
+ def create
53
+ enable unless Vpc.enabled
54
+ config_set('vpc', 'domain', state: '', domain: @domain)
55
+ end
56
+
57
+ def destroy
58
+ config_set('vpc', 'feature', state: 'no')
59
+ end
60
+
61
+ def enable
62
+ config_set('vpc', 'feature', state: '')
63
+ end
64
+
65
+ def set_args_keys_default
66
+ keys = { domain: @domain }
67
+ @get_args = @set_args = keys
68
+ end
69
+
70
+ # rubocop:disable Style/AccessorMethodName
71
+ def set_args_keys(hash={})
72
+ set_args_keys_default
73
+ @set_args = @get_args.merge!(hash) unless hash.empty?
74
+ end
75
+ # rubocop:enable Style/AccessorMethodNamefor
76
+
77
+ ########################################################
78
+ # PROPERTIES #
79
+ ########################################################
80
+
81
+ def auto_recovery
82
+ val = config_get('vpc', 'auto_recovery')
83
+ val.nil? ? false : val
84
+ end
85
+
86
+ def auto_recovery=(val)
87
+ set_args_keys(state: val ? '' : 'no')
88
+ config_set('vpc', 'auto_recovery', @set_args)
89
+ end
90
+
91
+ def default_auto_recovery
92
+ config_get_default('vpc', 'auto_recovery')
93
+ end
94
+
95
+ def auto_recovery_reload_delay
96
+ config_get('vpc', 'auto_recovery_reload_delay')
97
+ end
98
+
99
+ def auto_recovery_reload_delay=(val)
100
+ set_args_keys(delay: val)
101
+ config_set('vpc', 'auto_recovery_reload_delay', @set_args)
102
+ end
103
+
104
+ def default_auto_recovery_reload_delay
105
+ config_get_default('vpc', 'auto_recovery_reload_delay')
106
+ end
107
+
108
+ def delay_restore
109
+ config_get('vpc', 'delay_restore')
110
+ end
111
+
112
+ def delay_restore=(delay)
113
+ set_args_keys(delay: delay)
114
+ config_set('vpc', 'delay_restore', @set_args)
115
+ end
116
+
117
+ def default_delay_restore
118
+ config_get_default('vpc', 'delay_restore')
119
+ end
120
+
121
+ def delay_restore_interface_vlan
122
+ config_get('vpc', 'delay_restore_interface_vlan')
123
+ end
124
+
125
+ def delay_restore_interface_vlan=(delay)
126
+ set_args_keys(delay: delay)
127
+ config_set('vpc', 'delay_restore_interface_vlan', @set_args)
128
+ end
129
+
130
+ def default_delay_restore_interface_vlan
131
+ config_get_default('vpc', 'delay_restore_interface_vlan')
132
+ end
133
+
134
+ def dual_active_exclude_interface_vlan_bridge_domain
135
+ config_get('vpc', 'dual_active_exclude_interface_vlan_bridge_domain')
136
+ end
137
+
138
+ def dual_active_exclude_interface_vlan_bridge_domain=(val)
139
+ set_args_keys(state: val ? '' : 'no', range: val)
140
+ config_set('vpc', 'dual_active_exclude_interface_vlan_bridge_domain',
141
+ @set_args)
142
+ end
143
+
144
+ def default_dual_active_exclude_interface_vlan_bridge_domain
145
+ config_get_default('vpc',
146
+ 'dual_active_exclude_interface_vlan_bridge_domain')
147
+ end
148
+
149
+ def graceful_consistency_check
150
+ val = config_get('vpc', 'graceful_consistency_check')
151
+ val.nil? ? false : val
152
+ end
153
+
154
+ def graceful_consistency_check=(val)
155
+ set_args_keys(state: val ? '' : 'no')
156
+ config_set('vpc', 'graceful_consistency_check', @set_args)
157
+ end
158
+
159
+ def default_graceful_consistency_check
160
+ config_get_default('vpc', 'graceful_consistency_check')
161
+ end
162
+
163
+ def layer3_peer_routing
164
+ config_get('vpc', 'layer3_peer_routing')
165
+ end
166
+
167
+ def layer3_peer_routing=(val)
168
+ set_args_keys(state: val ? '' : 'no')
169
+ # This requires peer_gateway to be set first
170
+ self.peer_gateway = true if !peer_gateway && val
171
+ config_set('vpc', 'layer3_peer_routing', @set_args)
172
+ end
173
+
174
+ def default_layer3_peer_routing
175
+ config_get_default('vpc', 'layer3_peer_routing')
176
+ end
177
+
178
+ # peer keepalive
179
+ def peer_keepalive_dest
180
+ config_get('vpc', 'peer_keepalive_dest')
181
+ end
182
+
183
+ def default_peer_keepalive_dest
184
+ config_get_default('vpc', 'peer_keepalive_dest')
185
+ end
186
+
187
+ def peer_keepalive_hold_timeout
188
+ config_get('vpc', 'peer_keepalive_hold_timeout')
189
+ end
190
+
191
+ def default_peer_keepalive_hold_timeout
192
+ config_get_default('vpc', 'peer_keepalive_hold_timeout')
193
+ end
194
+
195
+ def peer_keepalive_interval
196
+ config_get('vpc', 'peer_keepalive_interval')
197
+ end
198
+
199
+ def default_peer_keepalive_interval
200
+ config_get_default('vpc', 'peer_keepalive_interval')
201
+ end
202
+
203
+ def peer_keepalive_interval_timeout
204
+ config_get('vpc', 'peer_keepalive_timeout')
205
+ end
206
+
207
+ def default_peer_keepalive_interval_timeout
208
+ config_get_default('vpc', 'peer_keepalive_timeout')
209
+ end
210
+
211
+ def peer_keepalive_precedence
212
+ config_get('vpc', 'peer_keepalive_precedence')
213
+ end
214
+
215
+ def default_peer_keepalive_precedence
216
+ config_get_default('vpc', 'peer_keepalive_precedence')
217
+ end
218
+
219
+ def peer_keepalive_src
220
+ config_get('vpc', 'peer_keepalive_src')
221
+ end
222
+
223
+ def default_peer_keepalive_src
224
+ config_get_default('vpc', 'peer_keepalive_src')
225
+ end
226
+
227
+ def peer_keepalive_udp_port
228
+ config_get('vpc', 'peer_keepalive_udp_port')
229
+ end
230
+
231
+ def default_peer_keepalive_udp_port
232
+ config_get_default('vpc', 'peer_keepalive_udp_port')
233
+ end
234
+
235
+ def peer_keepalive_vrf
236
+ config_get('vpc', 'peer_keepalive_vrf')
237
+ end
238
+
239
+ def default_peer_keepalive_vrf
240
+ config_get_default('vpc', 'peer_keepalive_vrf')
241
+ end
242
+
243
+ # common setter
244
+ def peer_keepalive_set(dest, src, udp_port, vrf, interval, timeout,
245
+ prec, hold_timeout)
246
+ set_args_keys(dest: dest, src: src, port_num: udp_port, vrf: vrf,
247
+ interval: interval, timeout: timeout,
248
+ precedence: prec, hold_timeout: hold_timeout)
249
+ config_set('vpc', 'peer_keepalive_set', @set_args)
250
+ end
251
+
252
+ def peer_gateway
253
+ config_get('vpc', 'peer_gateway')
254
+ end
255
+
256
+ def peer_gateway=(val)
257
+ set_args_keys(state: val ? '' : 'no')
258
+ # disable layer3 routing first
259
+ self.layer3_peer_routing = false if !val && layer3_peer_routing
260
+ config_set('vpc', 'peer_gateway', @set_args)
261
+ end
262
+
263
+ def default_peer_gateway
264
+ config_get_default('vpc', 'peer_gateway')
265
+ end
266
+
267
+ def peer_gateway_exclude_bridge_domain
268
+ config_get('vpc', 'peer_gateway_exclude_bridge_domain')
269
+ end
270
+
271
+ def peer_gateway_exclude_bridge_domain=(val)
272
+ set_args_keys(state: val ? '' : 'no', range: val)
273
+ config_set('vpc', 'peer_gateway_exclude_bridge_domain', @set_args)
274
+ end
275
+
276
+ def default_peer_gateway_exclude_bridge_domain
277
+ config_get_default('vpc', 'peer_gateway_exclude_bridge_domain')
278
+ end
279
+
280
+ def peer_gateway_exclude_vlan
281
+ config_get('vpc', 'peer_gateway_exclude_vlan')
282
+ end
283
+
284
+ def peer_gateway_exclude_vlan=(val)
285
+ set_args_keys(state: val ? '' : 'no', range: val)
286
+ config_set('vpc', 'peer_gateway_exclude_vlan', @set_args)
287
+ end
288
+
289
+ def default_peer_gateway_exclude_vlan
290
+ config_get_default('vpc', 'peer_gateway_exclude_vlan')
291
+ end
292
+
293
+ def role_priority
294
+ config_get('vpc', 'role_priority')
295
+ end
296
+
297
+ def role_priority=(priority)
298
+ set_args_keys(priority: priority)
299
+ config_set('vpc', 'role_priority', @set_args)
300
+ end
301
+
302
+ def default_role_priority
303
+ config_get_default('vpc', 'role_priority')
304
+ end
305
+
306
+ def self_isolation
307
+ val = config_get('vpc', 'self_isolation')
308
+ val.nil? ? false : val
309
+ end
310
+
311
+ def self_isolation=(val)
312
+ set_args_keys(state: val ? '' : 'no')
313
+ config_set('vpc', 'self_isolation', @set_args)
314
+ end
315
+
316
+ def default_self_isolation
317
+ config_get_default('vpc', 'self_isolation')
318
+ end
319
+
320
+ def shutdown
321
+ config_get('vpc', 'shutdown')
322
+ end
323
+
324
+ def shutdown=(val)
325
+ set_args_keys(state: val ? '' : 'no')
326
+ config_set('vpc', 'shutdown', @set_args)
327
+ end
328
+
329
+ def default_shutdown
330
+ config_get_default('vpc', 'shutdown')
331
+ end
332
+
333
+ def system_mac
334
+ config_get('vpc', 'system_mac')
335
+ end
336
+
337
+ def system_mac=(mac_addr)
338
+ set_args_keys(state: mac_addr.empty? ? 'no' : '', mac_addr: mac_addr)
339
+ config_set('vpc', 'system_mac', @set_args)
340
+ end
341
+
342
+ def default_system_mac
343
+ config_get_default('vpc', 'system_mac')
344
+ end
345
+
346
+ def system_priority
347
+ config_get('vpc', 'system_priority')
348
+ end
349
+
350
+ def system_priority=(priority)
351
+ set_args_keys(priority: priority)
352
+ config_set('vpc', 'system_priority', @set_args)
353
+ end
354
+
355
+ def default_system_priority
356
+ config_get_default('vpc', 'system_priority')
357
+ end
358
+
359
+ def track
360
+ config_get('vpc', 'track')
361
+ end
362
+
363
+ def track=(val)
364
+ unless val.nil?
365
+ fail ArgumentError, 'retransmit_count must be an Integer' unless
366
+ val.is_a?(Integer)
367
+ end
368
+
369
+ set_args_keys(state: (val == track) ? 'no' : '', val: val)
370
+ config_set('vpc', 'track', @set_args)
371
+ end
372
+
373
+ def default_track
374
+ config_get_default('vpc', 'track')
375
+ end
376
+ end # class Vpc
377
+ end # module Cisco
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # Jie Yang, July 2015
4
4
  #
5
- # Copyright (c) 2015 Cisco and/or its affiliates.
5
+ # Copyright (c) 2015-2016 Cisco and/or its affiliates.
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
8
8
  # you may not use this file except in compliance with the License.
@@ -17,6 +17,7 @@
17
17
  # limitations under the License.
18
18
 
19
19
  require_relative 'node_util'
20
+ require_relative 'feature'
20
21
 
21
22
  module Cisco
22
23
  # Vrf - node utility class for VRF configuration management
@@ -26,7 +27,6 @@ module Cisco
26
27
  def initialize(name, instantiate=true)
27
28
  fail TypeError unless name.is_a?(String)
28
29
  @name = name.downcase.strip
29
- @args = { vrf: @name }
30
30
  create if instantiate
31
31
  end
32
32
 
@@ -43,17 +43,19 @@ module Cisco
43
43
  end
44
44
 
45
45
  def create
46
- config_set('vrf', 'create', @args)
46
+ config_set('vrf', 'create', vrf: @name)
47
47
  end
48
48
 
49
49
  def destroy
50
- config_set('vrf', 'destroy', @args)
50
+ config_set('vrf', 'destroy', vrf: @name)
51
51
  end
52
52
 
53
+ ########################################################
54
+ # PROPERTIES #
55
+ ########################################################
56
+
53
57
  def description
54
- desc = config_get('vrf', 'description', @args)
55
- return '' if desc.nil?
56
- desc.shift.strip
58
+ config_get('vrf', 'description', vrf: @name)
57
59
  end
58
60
 
59
61
  def description=(desc)
@@ -65,9 +67,12 @@ module Cisco
65
67
  raise "[#{@name}] '#{e.command}' : #{e.clierror}"
66
68
  end
67
69
 
70
+ def default_description
71
+ config_get_default('vrf', 'description')
72
+ end
73
+
68
74
  def shutdown
69
- result = config_get('vrf', 'shutdown', @args)
70
- result ? true : false
75
+ config_get('vrf', 'shutdown', vrf: @name)
71
76
  end
72
77
 
73
78
  def shutdown=(val)
@@ -76,5 +81,51 @@ module Cisco
76
81
  rescue Cisco::CliError => e
77
82
  raise "[vrf #{@name}] '#{e.command}' : #{e.clierror}"
78
83
  end
84
+
85
+ def default_shutdown
86
+ config_get_default('vrf', 'shutdown')
87
+ end
88
+
89
+ # route_distinguisher
90
+ # Note that this property is supported by both bgp and vrf providers.
91
+ def route_distinguisher
92
+ config_get('vrf', 'route_distinguisher', vrf: @name)
93
+ end
94
+
95
+ def route_distinguisher=(rd)
96
+ # feature bgp and nv overlay required for rd cli in NXOS
97
+ Feature.bgp_enable
98
+ Feature.nv_overlay_enable
99
+ Feature.nv_overlay_evpn_enable
100
+ if rd == default_route_distinguisher
101
+ state = 'no'
102
+ rd = ''
103
+ else
104
+ state = ''
105
+ end
106
+ config_set('vrf', 'route_distinguisher', state: state, vrf: @name, rd: rd)
107
+ end
108
+
109
+ def default_route_distinguisher
110
+ config_get_default('vrf', 'route_distinguisher')
111
+ end
112
+
113
+ # Vni (Getter/Setter/Default)
114
+ def vni
115
+ config_get('vrf', 'vni', vrf: @name)
116
+ end
117
+
118
+ def vni=(id)
119
+ Feature.vn_segment_vlan_based_enable
120
+ no_cmd = (id) ? '' : 'no'
121
+ id = (id) ? id : vni
122
+ config_set('vrf', 'vni', vrf: @name, state: no_cmd, id: id)
123
+ rescue Cisco::CliError => e
124
+ raise "[vrf #{@name}] '#{e.command}' : #{e.clierror}"
125
+ end
126
+
127
+ def default_vni
128
+ config_get_default('vrf', 'vni')
129
+ end
79
130
  end # class
80
131
  end # module