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.
- 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
|