Class: Cisco::VrfAF
Overview
VrfAF - node utility class for VRF Address-Family configuration
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from NodeUtil
client, #client, config_get, #config_get, #config_get_default, config_get_default, config_set, #config_set, #get, #ios_xr?, #nexus?, #node, node, platform, #platform, supports?, #supports?
Constructor Details
#initialize(vrf, af, instantiate = true) ⇒ VrfAF
Returns a new instance of VrfAF.
26
27
28
29
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 26
def initialize(vrf, af, instantiate=true)
validate_args(vrf, af)
create if instantiate
end
|
Class Method Details
.afs ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 35
def self.afs
hash = {}
vrfs = config_get('vrf', 'all_vrfs')
vrfs.each do |vrf|
hash[vrf] = {}
afs = config_get('vrf_af', 'all_afs', vrf: vrf)
next if afs.nil?
afs.each do |af|
hash[vrf][af] = VrfAF.new(vrf, af, false)
end
end
hash
end
|
Instance Method Details
#create ⇒ Object
50
51
52
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 50
def create
config_set('vrf', 'address_family', set_args_keys(state: ''))
end
|
#default_route_policy_export ⇒ Object
111
112
113
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 111
def default_route_policy_export
config_get_default('vrf_af', 'route_policy_export')
end
|
#default_route_policy_import ⇒ Object
132
133
134
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 132
def default_route_policy_import
config_get_default('vrf_af', 'route_policy_import')
end
|
#default_route_target_both_auto ⇒ Object
147
148
149
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 147
def default_route_target_both_auto
config_get_default('vrf_af', 'route_target_both_auto')
end
|
#default_route_target_both_auto_evpn ⇒ Object
162
163
164
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 162
def default_route_target_both_auto_evpn
config_get_default('vrf_af', 'route_target_both_auto_evpn')
end
|
#default_route_target_export ⇒ Object
177
178
179
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 177
def default_route_target_export
config_get_default('vrf_af', 'route_target_export')
end
|
#default_route_target_export_evpn ⇒ Object
193
194
195
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 193
def default_route_target_export_evpn
config_get_default('vrf_af', 'route_target_export_evpn')
end
|
#default_route_target_export_stitching ⇒ Object
208
209
210
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 208
def default_route_target_export_stitching
config_get_default('vrf_af', 'route_target_export_stitching')
end
|
#default_route_target_import ⇒ Object
223
224
225
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 223
def default_route_target_import
config_get_default('vrf_af', 'route_target_import')
end
|
#default_route_target_import_evpn ⇒ Object
239
240
241
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 239
def default_route_target_import_evpn
config_get_default('vrf_af', 'route_target_import_evpn')
end
|
#default_route_target_import_stitching ⇒ Object
254
255
256
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 254
def default_route_target_import_stitching
config_get_default('vrf_af', 'route_target_import_stitching')
end
|
#destroy ⇒ Object
54
55
56
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 54
def destroy
config_set('vrf', 'address_family', set_args_keys(state: 'no'))
end
|
#route_policy_export ⇒ Object
94
95
96
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 94
def route_policy_export
config_get('vrf_af', 'route_policy_export', @get_args)
end
|
#route_policy_export=(name) ⇒ Object
98
99
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 98
def route_policy_export=(name)
Feature.bgp_enable if platform == :nexus
if name
set_args_keys(state: '', policy_name: name)
else
remove_name = config_get('vrf_af', 'route_policy_export', @get_args)
return nil if remove_name.nil?
set_args_keys(state: 'no', policy_name: remove_name)
end
config_set('vrf_af', 'route_policy_export', @set_args)
end
|
#route_policy_import ⇒ Object
115
116
117
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 115
def route_policy_import
config_get('vrf_af', 'route_policy_import', @get_args)
end
|
#route_policy_import=(name) ⇒ Object
119
120
121
122
123
124
125
126
127
128
129
130
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 119
def route_policy_import=(name)
Feature.bgp_enable if platform == :nexus
if name
set_args_keys(state: '', policy_name: name)
else
remove_name = config_get('vrf_af', 'route_policy_import', @get_args)
return nil if remove_name.nil?
set_args_keys(state: 'no', policy_name: remove_name)
end
config_set('vrf_af', 'route_policy_import', @set_args)
end
|
#route_target_both_auto ⇒ Object
137
138
139
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 137
def route_target_both_auto
config_get('vrf_af', 'route_target_both_auto', @get_args)
end
|
#route_target_both_auto=(state) ⇒ Object
141
142
143
144
145
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 141
def route_target_both_auto=(state)
route_target_feature_enable(:require_nv_overlay)
set_args_keys(state: (state ? '' : 'no'))
config_set('vrf_af', 'route_target_both_auto', @set_args)
end
|
#route_target_both_auto_evpn ⇒ Object
152
153
154
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 152
def route_target_both_auto_evpn
config_get('vrf_af', 'route_target_both_auto_evpn', @get_args)
end
|
#route_target_both_auto_evpn=(state) ⇒ Object
156
157
158
159
160
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 156
def route_target_both_auto_evpn=(state)
route_target_feature_enable(:require_nv_overlay)
set_args_keys(state: (state ? '' : 'no'))
config_set('vrf_af', 'route_target_both_auto_evpn', @set_args)
end
|
#route_target_delta(should, is, prop) ⇒ Object
route_target_delta is a common helper function for the route_target properties. It walks the delta hash and adds/removes each target cli.
261
262
263
264
265
266
267
268
269
270
271
272
273
274
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 261
def route_target_delta(should, is, prop)
fail Cisco::UnsupportedError.new('vrf_af', prop) if is.nil?
delta_hash = Utils.delta_add_remove(should, is)
return if delta_hash.values.flatten.empty?
[:add, :remove].each do |action|
Cisco::Logger.debug("#{prop}" \
"#{@get_args}\n #{action}: #{delta_hash[action]}")
delta_hash[action].each do ||
state = (action == :add) ? '' : 'no'
set_args_keys(state: state, community: )
config_set('vrf_af', prop, @set_args)
end
end
end
|
#route_target_export ⇒ Object
167
168
169
170
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 167
def route_target_export
cmds = config_get('vrf_af', 'route_target_export', @get_args)
cmds.nil? ? nil : cmds.sort
end
|
#route_target_export=(should) ⇒ Object
172
173
174
175
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 172
def route_target_export=(should)
route_target_feature_enable
route_target_delta(should, route_target_export, 'route_target_export')
end
|
#route_target_export_evpn ⇒ Object
182
183
184
185
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 182
def route_target_export_evpn
cmds = config_get('vrf_af', 'route_target_export_evpn', @get_args)
cmds.nil? ? nil : cmds.sort
end
|
#route_target_export_evpn=(should) ⇒ Object
187
188
189
190
191
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 187
def route_target_export_evpn=(should)
route_target_feature_enable(:require_nv_overlay)
route_target_delta(should, route_target_export_evpn,
'route_target_export_evpn')
end
|
#route_target_export_stitching ⇒ Object
198
199
200
201
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 198
def route_target_export_stitching
cmds = config_get('vrf_af', 'route_target_export_stitching', @get_args)
cmds.nil? ? nil : cmds.sort
end
|
#route_target_export_stitching=(should) ⇒ Object
203
204
205
206
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 203
def route_target_export_stitching=(should)
route_target_delta(should, route_target_export_stitching,
'route_target_export_stitching')
end
|
#route_target_feature_enable(require_nv_overlay = nil) ⇒ Object
#route_target_import ⇒ Object
213
214
215
216
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 213
def route_target_import
cmds = config_get('vrf_af', 'route_target_import', @get_args)
cmds.nil? ? nil : cmds.sort
end
|
#route_target_import=(should) ⇒ Object
218
219
220
221
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 218
def route_target_import=(should)
route_target_feature_enable
route_target_delta(should, route_target_import, 'route_target_import')
end
|
#route_target_import_evpn ⇒ Object
228
229
230
231
232
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 228
def route_target_import_evpn
route_target_feature_enable(:require_nv_overlay)
cmds = config_get('vrf_af', 'route_target_import_evpn', @get_args)
cmds.nil? ? nil : cmds.sort
end
|
#route_target_import_evpn=(should) ⇒ Object
234
235
236
237
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 234
def route_target_import_evpn=(should)
route_target_delta(should, route_target_import_evpn,
'route_target_import_evpn')
end
|
#route_target_import_stitching ⇒ Object
244
245
246
247
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 244
def route_target_import_stitching
cmds = config_get('vrf_af', 'route_target_import_stitching', @get_args)
cmds.nil? ? nil : cmds.sort
end
|
#route_target_import_stitching=(should) ⇒ Object
249
250
251
252
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 249
def route_target_import_stitching=(should)
route_target_delta(should, route_target_import_stitching,
'route_target_import_stitching')
end
|
#set_args_keys(hash = {}) ⇒ Object
rubocop:disable Style/AccessorMethodName
73
74
75
76
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 73
def set_args_keys(hash={}) set_args_keys_default
@set_args = @get_args.merge!(hash) unless hash.empty?
end
|
#set_args_keys_default ⇒ Object
67
68
69
70
71
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 67
def set_args_keys_default
keys = { afi: @afi, safi: @safi }
keys[:vrf] = @vrf unless @vrf == 'default'
@get_args = @set_args = keys
end
|
#to_s ⇒ Object
31
32
33
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 31
def to_s
"VRF #{@vrf} afi #{@afi} safi #{@safi}"
end
|
#validate_args(vrf, af) ⇒ Object
58
59
60
61
62
63
64
65
|
# File 'lib/cisco_node_utils/vrf_af.rb', line 58
def validate_args(vrf, af)
fail ArgumentError unless vrf.is_a?(String) && (vrf.length > 0)
fail ArgumentError, "'af' must be an array specifying afi and safi" unless
af.is_a?(Array) || af.length == 2
@vrf = vrf.downcase
@afi, @safi = af
set_args_keys_default
end
|