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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/CHANGELOG.md +126 -1
- data/README.md +19 -12
- data/Rakefile +1 -0
- data/bin/git/hooks/commit-msg/enforce_style +8 -0
- data/cisco_node_utils.gemspec +4 -3
- data/docs/README-develop-best-practices.md +127 -109
- data/docs/README-develop-node-utils-APIs.md +47 -39
- data/docs/template-router.rb +3 -7
- data/lib/.rubocop.yml +4 -4
- data/lib/cisco_node_utils.rb +1 -1
- data/lib/cisco_node_utils/aaa_authentication_login.rb +96 -0
- data/lib/cisco_node_utils/aaa_authentication_login_service.rb +133 -0
- data/lib/cisco_node_utils/aaa_authorization_service.rb +150 -0
- data/lib/cisco_node_utils/ace.rb +196 -0
- data/lib/cisco_node_utils/acl.rb +100 -0
- data/lib/cisco_node_utils/bgp.rb +301 -163
- data/lib/cisco_node_utils/bgp_af.rb +187 -19
- data/lib/cisco_node_utils/bgp_neighbor.rb +18 -33
- data/lib/cisco_node_utils/bgp_neighbor_af.rb +25 -48
- data/lib/cisco_node_utils/cisco_cmn_utils.rb +23 -4
- data/lib/cisco_node_utils/cmd_ref/README_YAML.md +593 -0
- data/lib/cisco_node_utils/cmd_ref/aaa_auth_login_service.yaml +22 -0
- data/lib/cisco_node_utils/cmd_ref/aaa_authentication_login.yaml +31 -0
- data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +22 -0
- data/lib/cisco_node_utils/cmd_ref/acl.yaml +43 -0
- data/lib/cisco_node_utils/cmd_ref/bgp.yaml +242 -0
- data/lib/cisco_node_utils/cmd_ref/bgp_af.yaml +164 -0
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +131 -0
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +179 -0
- data/lib/cisco_node_utils/cmd_ref/dnsclient.yaml +34 -0
- data/lib/cisco_node_utils/cmd_ref/evpn_vni.yaml +42 -0
- data/lib/cisco_node_utils/cmd_ref/fabricpath.yaml +172 -0
- data/lib/cisco_node_utils/cmd_ref/fabricpath_topology.yaml +35 -0
- data/lib/cisco_node_utils/cmd_ref/feature.yaml +42 -0
- data/lib/cisco_node_utils/cmd_ref/fex.yaml +9 -0
- data/lib/cisco_node_utils/cmd_ref/images.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/interface.yaml +339 -0
- data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +28 -0
- data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +61 -0
- data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +54 -0
- data/lib/cisco_node_utils/cmd_ref/interface_service_vni.yaml +32 -0
- data/lib/cisco_node_utils/cmd_ref/inventory.yaml +45 -0
- data/lib/cisco_node_utils/cmd_ref/memory.yaml +13 -0
- data/lib/cisco_node_utils/cmd_ref/ntp_config.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/ntp_server.yaml +14 -0
- data/lib/cisco_node_utils/cmd_ref/ospf.yaml +74 -0
- data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +33 -0
- data/lib/cisco_node_utils/cmd_ref/pim.yaml +40 -0
- data/lib/cisco_node_utils/cmd_ref/portchannel_global.yaml +69 -0
- data/lib/cisco_node_utils/cmd_ref/radius_global.yaml +25 -0
- data/lib/cisco_node_utils/cmd_ref/radius_server.yaml +64 -0
- data/lib/cisco_node_utils/cmd_ref/radius_server_group.yaml +14 -0
- data/lib/cisco_node_utils/cmd_ref/show_system.yaml +5 -0
- data/lib/cisco_node_utils/cmd_ref/show_version.yaml +72 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +23 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_group.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +50 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +51 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +55 -0
- data/lib/cisco_node_utils/cmd_ref/snmpnotification.yaml +11 -0
- data/lib/cisco_node_utils/cmd_ref/syslog_server.yaml +18 -0
- data/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/system.yaml +6 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +49 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server_group.yaml +33 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server_host.yaml +35 -0
- data/lib/cisco_node_utils/cmd_ref/vdc.yaml +38 -0
- data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +6 -0
- data/lib/cisco_node_utils/cmd_ref/vlan.yaml +56 -0
- data/lib/cisco_node_utils/cmd_ref/vni.yaml +76 -0
- data/lib/cisco_node_utils/cmd_ref/vpc.yaml +197 -0
- data/lib/cisco_node_utils/cmd_ref/vrf.yaml +88 -0
- data/lib/cisco_node_utils/cmd_ref/vtp.yaml +38 -0
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +60 -0
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +39 -0
- data/lib/cisco_node_utils/cmd_ref/yum.yaml +13 -0
- data/lib/cisco_node_utils/command_reference.rb +359 -187
- data/lib/cisco_node_utils/configparser_lib.rb +1 -1
- data/lib/cisco_node_utils/dns_domain.rb +19 -5
- data/lib/cisco_node_utils/domain_name.rb +4 -8
- data/lib/cisco_node_utils/evpn_vni.rb +157 -0
- data/lib/cisco_node_utils/fabricpath_global.rb +388 -0
- data/lib/cisco_node_utils/fabricpath_topology.rb +150 -0
- data/lib/cisco_node_utils/feature.rb +111 -0
- data/lib/cisco_node_utils/interface.rb +390 -97
- data/lib/cisco_node_utils/interface_channel_group.rb +124 -0
- data/lib/cisco_node_utils/interface_ospf.rb +11 -34
- data/lib/cisco_node_utils/interface_portchannel.rb +157 -0
- data/lib/cisco_node_utils/interface_service_vni.rb +132 -0
- data/lib/cisco_node_utils/name_server.rb +1 -1
- data/lib/cisco_node_utils/node.rb +55 -249
- data/lib/cisco_node_utils/node_util.rb +5 -1
- data/lib/cisco_node_utils/ntp_config.rb +2 -2
- data/lib/cisco_node_utils/ntp_server.rb +14 -5
- data/lib/cisco_node_utils/overlay_global.rb +153 -0
- data/lib/cisco_node_utils/pim.rb +124 -0
- data/lib/cisco_node_utils/pim_group_list.rb +108 -0
- data/lib/cisco_node_utils/pim_rp_address.rb +102 -0
- data/lib/cisco_node_utils/platform.rb +8 -9
- data/lib/cisco_node_utils/portchannel_global.rb +277 -0
- data/lib/cisco_node_utils/radius_global.rb +9 -19
- data/lib/cisco_node_utils/radius_server.rb +31 -41
- data/lib/cisco_node_utils/radius_server_group.rb +117 -0
- data/lib/cisco_node_utils/router_ospf.rb +1 -1
- data/lib/cisco_node_utils/router_ospf_vrf.rb +14 -19
- data/lib/cisco_node_utils/snmp_notification_receiver.rb +158 -0
- data/lib/cisco_node_utils/snmpcommunity.rb +3 -5
- data/lib/cisco_node_utils/snmpgroup.rb +1 -1
- data/lib/cisco_node_utils/snmpnotification.rb +57 -0
- data/lib/cisco_node_utils/snmpserver.rb +8 -17
- data/lib/cisco_node_utils/snmpuser.rb +67 -28
- data/lib/cisco_node_utils/syslog_server.rb +3 -9
- data/lib/cisco_node_utils/syslog_settings.rb +2 -10
- data/lib/cisco_node_utils/tacacs_server.rb +9 -14
- data/lib/cisco_node_utils/tacacs_server_group.rb +145 -0
- data/lib/cisco_node_utils/tacacs_server_host.rb +5 -9
- data/lib/cisco_node_utils/vdc.rb +88 -0
- data/lib/cisco_node_utils/version.rb +5 -2
- data/lib/cisco_node_utils/vlan.rb +71 -8
- data/lib/cisco_node_utils/vni.rb +227 -0
- data/lib/cisco_node_utils/vpc.rb +377 -0
- data/lib/cisco_node_utils/vrf.rb +60 -9
- data/lib/cisco_node_utils/vrf_af.rb +191 -0
- data/lib/cisco_node_utils/vtp.rb +8 -6
- data/lib/cisco_node_utils/vxlan_vtep.rb +151 -0
- data/lib/cisco_node_utils/vxlan_vtep_vni.rb +234 -0
- data/lib/cisco_node_utils/yum.rb +1 -1
- data/tests/.rubocop.yml +1 -1
- data/tests/basetest.rb +16 -7
- data/tests/ciscotest.rb +55 -13
- data/tests/cmd_config.yaml +2 -2
- data/tests/platform_info.rb +3 -2
- data/tests/test_aaa_authentication_login.rb +219 -0
- data/tests/test_aaa_authentication_login_service.rb +759 -0
- data/tests/test_aaa_authorization_service.rb +1041 -0
- data/tests/test_ace.rb +160 -0
- data/tests/test_acl.rb +176 -0
- data/tests/test_bgp_af.rb +269 -13
- data/tests/test_bgp_neighbor.rb +38 -40
- data/tests/test_bgp_neighbor_af.rb +92 -32
- data/tests/test_command_config.rb +5 -5
- data/tests/test_command_reference.rb +284 -101
- data/tests/test_dns_domain.rb +1 -1
- data/tests/test_domain_name.rb +1 -1
- data/tests/test_evpn_vni.rb +106 -0
- data/tests/test_fabricpath_global.rb +243 -0
- data/tests/test_fabricpath_topology.rb +98 -0
- data/tests/test_interface.rb +292 -74
- data/tests/test_interface_channel_group.rb +74 -0
- data/tests/test_interface_ospf.rb +9 -4
- data/tests/test_interface_portchannel.rb +105 -0
- data/tests/test_interface_service_vni.rb +232 -0
- data/tests/test_interface_svi.rb +77 -62
- data/tests/test_interface_switchport.rb +17 -5
- data/tests/test_name_server.rb +1 -1
- data/tests/test_node.rb +1 -1
- data/tests/test_node_ext.rb +10 -20
- data/tests/test_ntp_config.rb +1 -1
- data/tests/test_ntp_server.rb +18 -6
- data/tests/test_overlay_global.rb +102 -0
- data/tests/test_pim.rb +177 -0
- data/tests/test_pim_group_list.rb +181 -0
- data/tests/test_pim_rp_address.rb +153 -0
- data/tests/test_platform.rb +3 -3
- data/tests/test_portchannel_global.rb +202 -0
- data/tests/test_radius_global.rb +1 -1
- data/tests/test_radius_server.rb +92 -57
- data/tests/test_radius_server_group.rb +149 -0
- data/tests/test_router_bgp.rb +283 -112
- data/tests/test_router_ospf.rb +2 -2
- data/tests/test_router_ospf_vrf.rb +4 -4
- data/tests/test_snmp_notification_receiver.rb +167 -0
- data/tests/test_snmpcommunity.rb +1 -1
- data/tests/test_snmpgroup.rb +1 -1
- data/tests/test_snmpnotification.rb +72 -0
- data/tests/test_snmpserver.rb +29 -105
- data/tests/test_snmpuser.rb +32 -30
- data/tests/test_syslog_server.rb +36 -10
- data/tests/test_syslog_settings.rb +1 -1
- data/tests/test_tacacs_server.rb +1 -1
- data/tests/test_tacacs_server_group.rb +405 -0
- data/tests/test_tacacs_server_host.rb +1 -1
- data/tests/test_vdc.rb +78 -0
- data/tests/test_vlan.rb +74 -19
- data/tests/test_vlan_mt_full.rb +95 -0
- data/tests/test_vni.rb +106 -0
- data/tests/test_vpc.rb +361 -0
- data/tests/test_vrf.rb +172 -29
- data/tests/test_vtp.rb +1 -1
- data/tests/test_vxlan_vtep.rb +214 -0
- data/tests/test_vxlan_vtep_vni.rb +201 -0
- data/tests/test_yum.rb +1 -1
- metadata +120 -11
- data/lib/cisco_node_utils/README_YAML.md +0 -325
- data/lib/cisco_node_utils/command_reference_common.yaml +0 -1051
- data/lib/cisco_node_utils/command_reference_common_bgp.yaml +0 -535
- data/lib/cisco_node_utils/command_reference_n3064.yaml +0 -13
- data/lib/cisco_node_utils/command_reference_n7k.yaml +0 -52
- data/lib/cisco_node_utils/command_reference_n9k.yaml +0 -26
- 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
|
data/lib/cisco_node_utils/vrf.rb
CHANGED
@@ -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', @
|
46
|
+
config_set('vrf', 'create', vrf: @name)
|
47
47
|
end
|
48
48
|
|
49
49
|
def destroy
|
50
|
-
config_set('vrf', 'destroy', @
|
50
|
+
config_set('vrf', 'destroy', vrf: @name)
|
51
51
|
end
|
52
52
|
|
53
|
+
########################################################
|
54
|
+
# PROPERTIES #
|
55
|
+
########################################################
|
56
|
+
|
53
57
|
def description
|
54
|
-
|
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
|
-
|
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
|