arista-eos 1.1.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.
- data/.gitignore +41 -0
- data/.rubocop.yml +21 -0
- data/Gemfile +57 -0
- data/Guardfile +21 -0
- data/LICENSE +28 -0
- data/README.md +178 -0
- data/Rakefile +46 -0
- data/eos.gemspec +36 -0
- data/guide/.gitignore +2 -0
- data/guide/Makefile +177 -0
- data/guide/_static/arista_logo_jpg-11.jpg +0 -0
- data/guide/_static/favicon.ico +0 -0
- data/guide/conf.py +282 -0
- data/guide/cookbook.rst +135 -0
- data/guide/developing.rst +55 -0
- data/guide/faq.rst +30 -0
- data/guide/index.rst +25 -0
- data/guide/installation.rst +174 -0
- data/guide/license.rst +5 -0
- data/guide/overview.rst +35 -0
- data/guide/quickstart.rst +184 -0
- data/guide/release-notes-1.0.rst +37 -0
- data/guide/release-notes-1.1.rst +25 -0
- data/guide/release-notes.rst +10 -0
- data/guide/testing.rst +8 -0
- data/guide/troubleshooting.rst +26 -0
- data/guide/typedoc.rst +928 -0
- data/guide/types.rst +44 -0
- data/lib/eos.rb +8 -0
- data/lib/eos/version.rb +5 -0
- data/lib/puppet/provider/eos_acl_entry/default.rb +122 -0
- data/lib/puppet/provider/eos_command/default.rb +61 -0
- data/lib/puppet/provider/eos_ethernet/default.rb +96 -0
- data/lib/puppet/provider/eos_interface/default.rb +89 -0
- data/lib/puppet/provider/eos_ipinterface/default.rb +89 -0
- data/lib/puppet/provider/eos_mlag/default.rb +86 -0
- data/lib/puppet/provider/eos_mlag_interface/default.rb +90 -0
- data/lib/puppet/provider/eos_ntp_config/default.rb +68 -0
- data/lib/puppet/provider/eos_ntp_server/default.rb +69 -0
- data/lib/puppet/provider/eos_portchannel/default.rb +117 -0
- data/lib/puppet/provider/eos_snmp/default.rb +77 -0
- data/lib/puppet/provider/eos_stp_interface/default.rb +73 -0
- data/lib/puppet/provider/eos_switchport/default.rb +100 -0
- data/lib/puppet/provider/eos_system/default.rb +63 -0
- data/lib/puppet/provider/eos_vlan/default.rb +93 -0
- data/lib/puppet/provider/eos_vxlan/default.rb +104 -0
- data/lib/puppet/provider/eos_vxlan_vlan/default.rb +89 -0
- data/lib/puppet/provider/eos_vxlan_vtep/default.rb +70 -0
- data/lib/puppet/type/eos_acl_entry.rb +126 -0
- data/lib/puppet/type/eos_command.rb +75 -0
- data/lib/puppet/type/eos_ethernet.rb +101 -0
- data/lib/puppet/type/eos_interface.rb +79 -0
- data/lib/puppet/type/eos_ipinterface.rb +116 -0
- data/lib/puppet/type/eos_mlag.rb +133 -0
- data/lib/puppet/type/eos_mlag_interface.rb +85 -0
- data/lib/puppet/type/eos_ntp_config.rb +70 -0
- data/lib/puppet/type/eos_ntp_server.rb +52 -0
- data/lib/puppet/type/eos_portchannel.rb +189 -0
- data/lib/puppet/type/eos_snmp.rb +127 -0
- data/lib/puppet/type/eos_stp_interface.rb +94 -0
- data/lib/puppet/type/eos_switchport.rb +150 -0
- data/lib/puppet/type/eos_system.rb +69 -0
- data/lib/puppet/type/eos_vlan.rb +130 -0
- data/lib/puppet/type/eos_vxlan.rb +150 -0
- data/lib/puppet/type/eos_vxlan_vlan.rb +78 -0
- data/lib/puppet/type/eos_vxlan_vtep.rb +62 -0
- data/lib/puppet_x/eos/provider.rb +86 -0
- data/lib/puppet_x/eos/utils/helpers.rb +34 -0
- data/metadata.json +20 -0
- data/spec/fixtures/README +61 -0
- data/spec/fixtures/ethernet.json +9 -0
- data/spec/fixtures/fixture_stp.yaml +11 -0
- data/spec/fixtures/fixture_vxlan_get.yaml +11 -0
- data/spec/fixtures/ospf.json +13 -0
- data/spec/fixtures/snmp.json +6 -0
- data/spec/fixtures/varp.json +11 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/support/fixtures.rb +74 -0
- data/spec/support/shared_examples_for_providers.rb +7 -0
- data/spec/support/shared_examples_for_types.rb +451 -0
- data/spec/unit/puppet/provider/eos_acl_entry/default_spec.rb +226 -0
- data/spec/unit/puppet/provider/eos_acl_entry/fixture_acl_entry.yaml +20 -0
- data/spec/unit/puppet/provider/eos_ethernet/default_spec.rb +226 -0
- data/spec/unit/puppet/provider/eos_ethernet/fixture_ethernet.yaml +8 -0
- data/spec/unit/puppet/provider/eos_interface/default_spec.rb +176 -0
- data/spec/unit/puppet/provider/eos_interface/fixture_interfaces.yaml +5 -0
- data/spec/unit/puppet/provider/eos_ipinterface/default_spec.rb +223 -0
- data/spec/unit/puppet/provider/eos_ipinterface/fixture_ipinterfaces.yaml +5 -0
- data/spec/unit/puppet/provider/eos_mlag/default_spec.rb +203 -0
- data/spec/unit/puppet/provider/eos_mlag/fixture_mlag.yaml +11 -0
- data/spec/unit/puppet/provider/eos_mlag_interface/default_spec.rb +177 -0
- data/spec/unit/puppet/provider/eos_mlag_interface/fixture_mlag.yaml +11 -0
- data/spec/unit/puppet/provider/eos_ntp_config/default_spec.rb +150 -0
- data/spec/unit/puppet/provider/eos_ntp_config/fixture_ntp.yaml +3 -0
- data/spec/unit/puppet/provider/eos_ntp_server/default_spec.rb +152 -0
- data/spec/unit/puppet/provider/eos_ntp_server/fixture_ntp.yaml +3 -0
- data/spec/unit/puppet/provider/eos_portchannel/default_spec.rb +271 -0
- data/spec/unit/puppet/provider/eos_portchannel/fixture_portchannels.yaml +10 -0
- data/spec/unit/puppet/provider/eos_snmp/default_spec.rb +193 -0
- data/spec/unit/puppet/provider/eos_snmp/fixture_snmp.yaml +6 -0
- data/spec/unit/puppet/provider/eos_stp_interface/default_spec.rb +138 -0
- data/spec/unit/puppet/provider/eos_switchport/default_spec.rb +250 -0
- data/spec/unit/puppet/provider/eos_switchport/fixture_switchports.yaml +7 -0
- data/spec/unit/puppet/provider/eos_system/default_spec.rb +129 -0
- data/spec/unit/puppet/provider/eos_system/fixture_system.yaml +2 -0
- data/spec/unit/puppet/provider/eos_vlan/default_spec.rb +228 -0
- data/spec/unit/puppet/provider/eos_vlan/fixture_vlans.yaml +6 -0
- data/spec/unit/puppet/provider/eos_vxlan/default_spec.rb +229 -0
- data/spec/unit/puppet/provider/eos_vxlan/fixture_vxlan.yaml +9 -0
- data/spec/unit/puppet/provider/eos_vxlan_vlan/default_spec.rb +148 -0
- data/spec/unit/puppet/provider/eos_vxlan_vtep/default_spec.rb +140 -0
- data/spec/unit/puppet/type/eos_acl_entry_spec.rb +103 -0
- data/spec/unit/puppet/type/eos_command_spec.rb +67 -0
- data/spec/unit/puppet/type/eos_ethernet_spec.rb +87 -0
- data/spec/unit/puppet/type/eos_interface_spec.rb +67 -0
- data/spec/unit/puppet/type/eos_ipinterface_spec.rb +84 -0
- data/spec/unit/puppet/type/eos_mlag_interface_spec.rb +62 -0
- data/spec/unit/puppet/type/eos_mlag_spec.rb +98 -0
- data/spec/unit/puppet/type/eos_ntp_config_spec.rb +58 -0
- data/spec/unit/puppet/type/eos_ntp_server_spec.rb +51 -0
- data/spec/unit/puppet/type/eos_portchannel_spec.rb +99 -0
- data/spec/unit/puppet/type/eos_snmp_spec.rb +87 -0
- data/spec/unit/puppet/type/eos_stp_interface_spec.rb +77 -0
- data/spec/unit/puppet/type/eos_switchport_spec.rb +88 -0
- data/spec/unit/puppet/type/eos_system_spec.rb +57 -0
- data/spec/unit/puppet/type/eos_vlan_spec.rb +86 -0
- data/spec/unit/puppet/type/eos_vxlan_spec.rb +100 -0
- data/spec/unit/puppet/type/eos_vxlan_vlan_spec.rb +73 -0
- data/spec/unit/puppet/type/eos_vxlan_vtep_spec.rb +52 -0
- data/tests/init.pp +12 -0
- metadata +437 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2015, Arista Networks, Inc.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
#
|
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
|
6
|
+
# modification, are permitted provided that the following conditions are
|
|
7
|
+
# met:
|
|
8
|
+
#
|
|
9
|
+
# Redistributions of source code must retain the above copyright notice,
|
|
10
|
+
# this list of conditions and the following disclaimer.
|
|
11
|
+
#
|
|
12
|
+
# Redistributions in binary form must reproduce the above copyright
|
|
13
|
+
# notice, this list of conditions and the following disclaimer in the
|
|
14
|
+
# documentation and/or other materials provided with the distribution.
|
|
15
|
+
#
|
|
16
|
+
# Neither the name of Arista Networks nor the names of its
|
|
17
|
+
# contributors may be used to endorse or promote products derived from
|
|
18
|
+
# this software without specific prior written permission.
|
|
19
|
+
#
|
|
20
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
21
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
22
|
+
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
23
|
+
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARISTA NETWORKS
|
|
24
|
+
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
25
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
26
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
|
27
|
+
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
28
|
+
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
|
29
|
+
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
|
30
|
+
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
31
|
+
#
|
|
32
|
+
require 'puppet/type'
|
|
33
|
+
require 'pathname'
|
|
34
|
+
|
|
35
|
+
module_lib = Pathname.new(__FILE__).parent.parent.parent.parent
|
|
36
|
+
require File.join module_lib, 'puppet_x/eos/provider'
|
|
37
|
+
|
|
38
|
+
Puppet::Type.type(:eos_vxlan_vtep).provide(:eos) do
|
|
39
|
+
# Create methods that set the @property_hash for the #flush method
|
|
40
|
+
mk_resource_methods
|
|
41
|
+
|
|
42
|
+
# Mix in the api as instance methods
|
|
43
|
+
include PuppetX::Eos::EapiProviderMixin
|
|
44
|
+
|
|
45
|
+
# Mix in the api as class methods
|
|
46
|
+
extend PuppetX::Eos::EapiProviderMixin
|
|
47
|
+
|
|
48
|
+
def self.instances
|
|
49
|
+
resources = node.api('interfaces').get('Vxlan1')
|
|
50
|
+
return [] unless resources
|
|
51
|
+
resources[:flood_list].map do |name|
|
|
52
|
+
provider_hash = { name: name, ensure: :present }
|
|
53
|
+
new(provider_hash)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def exists?
|
|
58
|
+
@property_hash[:ensure] == :present
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def create
|
|
62
|
+
node.api('interfaces').add_vtep('Vxlan1', resource[:name])
|
|
63
|
+
@property_hash = { name: resource[:name], ensure: :present }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def destroy
|
|
67
|
+
node.api('interfaces').remove_vtep('Vxlan1', resource[:name])
|
|
68
|
+
@property_hash = { name: resource[:name], ensure: :absent }
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2015, Arista Networks, Inc.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
#
|
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
|
6
|
+
# modification, are permitted provided that the following conditions are
|
|
7
|
+
# met:
|
|
8
|
+
#
|
|
9
|
+
# Redistributions of source code must retain the above copyright notice,
|
|
10
|
+
# this list of conditions and the following disclaimer.
|
|
11
|
+
#
|
|
12
|
+
# Redistributions in binary form must reproduce the above copyright
|
|
13
|
+
# notice, this list of conditions and the following disclaimer in the
|
|
14
|
+
# documentation and/or other materials provided with the distribution.
|
|
15
|
+
#
|
|
16
|
+
# Neither the name of Arista Networks nor the names of its
|
|
17
|
+
# contributors may be used to endorse or promote products derived from
|
|
18
|
+
# this software without specific prior written permission.
|
|
19
|
+
#
|
|
20
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
21
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
22
|
+
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
23
|
+
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARISTA NETWORKS
|
|
24
|
+
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
25
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
26
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
|
27
|
+
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
28
|
+
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
|
29
|
+
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
|
30
|
+
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
31
|
+
#
|
|
32
|
+
|
|
33
|
+
require 'puppet_x/eos/utils/helpers'
|
|
34
|
+
|
|
35
|
+
Puppet::Type.newtype(:eos_acl_entry) do
|
|
36
|
+
@doc = <<-EOS
|
|
37
|
+
This type provides management of ACLs on the Arista EOS node from
|
|
38
|
+
within Puppet.
|
|
39
|
+
EOS
|
|
40
|
+
|
|
41
|
+
ensurable
|
|
42
|
+
|
|
43
|
+
# Parameters
|
|
44
|
+
|
|
45
|
+
newparam(:name) do
|
|
46
|
+
desc <<-EOS
|
|
47
|
+
The name parameter is a composite namevar that combines the
|
|
48
|
+
access-list name and the sequence number delimited by the
|
|
49
|
+
colon (:) character
|
|
50
|
+
|
|
51
|
+
For example, if the access-list name is foo and the sequence
|
|
52
|
+
number for this rule is 10 the namvar would be constructed as
|
|
53
|
+
"foo:10"
|
|
54
|
+
|
|
55
|
+
The composite namevar is required to uniquely identify the
|
|
56
|
+
specific list and rule to configure
|
|
57
|
+
EOS
|
|
58
|
+
|
|
59
|
+
validate do |value|
|
|
60
|
+
fail "value #{value.inspect} must contain a colon" unless value =~ /:/
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Properties (state management)
|
|
65
|
+
|
|
66
|
+
newproperty(:acltype) do
|
|
67
|
+
desc <<-EOS
|
|
68
|
+
The ACL type which is either standard and extended. Standard ACLs
|
|
69
|
+
filter only on the source IP address. Extended ACLs allow
|
|
70
|
+
specification of source and destination IP addresses.
|
|
71
|
+
EOS
|
|
72
|
+
newvalues(:standard, :extended)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
newproperty(:action) do
|
|
76
|
+
desc <<-EOS
|
|
77
|
+
The action for the rule can be either permit or deny. Deny is the
|
|
78
|
+
default value. Packets filtered by a permit rule are accepted by
|
|
79
|
+
interfaces to which the ACL is applied. Packets filtered by a
|
|
80
|
+
deny rule are dropped by interfaces to which the ACL is applied.
|
|
81
|
+
EOS
|
|
82
|
+
newvalues(:permit, :deny)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
newproperty(:srcaddr) do
|
|
86
|
+
desc <<-EOS
|
|
87
|
+
The source IP address. The following options are supported:
|
|
88
|
+
|
|
89
|
+
network_address - subnet address where srcprefixlen defines mask
|
|
90
|
+
any - Packets from all addresses are filtered.
|
|
91
|
+
host ip_addr - IP address (dotted decimal notation)
|
|
92
|
+
EOS
|
|
93
|
+
|
|
94
|
+
validate do |value|
|
|
95
|
+
w = value.split
|
|
96
|
+
unless value =~ IPADDR_REGEXP || value =~ /^any$/ ||
|
|
97
|
+
(w.length == 2 && w[0].eql?('host') && w[1] =~ IPADDR_REGEXP)
|
|
98
|
+
fail "value #{value.inspect} is invalid, must be a network " \
|
|
99
|
+
"address, 'any', or 'host IP address'"
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
newproperty(:srcprefixlen) do
|
|
105
|
+
desc <<-EOS
|
|
106
|
+
The source address prefix len used when srcaddr is a network address
|
|
107
|
+
to define the subnet. Values range from 0 to 32.
|
|
108
|
+
EOS
|
|
109
|
+
|
|
110
|
+
munge { |value| Integer(value) }
|
|
111
|
+
|
|
112
|
+
validate do |value|
|
|
113
|
+
unless value.to_i.between?(0, 32)
|
|
114
|
+
fail "value #{value.inspect} must be between 0 and 32"
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
newproperty(:log, boolean: false) do
|
|
120
|
+
desc <<-EOS
|
|
121
|
+
When set to true, triggers an informational log message to the
|
|
122
|
+
console about hte matching packet.
|
|
123
|
+
EOS
|
|
124
|
+
newvalues(:true, :false)
|
|
125
|
+
end
|
|
126
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2015, Arista Networks, Inc.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
#
|
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
|
6
|
+
# modification, are permitted provided that the following conditions are
|
|
7
|
+
# met:
|
|
8
|
+
#
|
|
9
|
+
# Redistributions of source code must retain the above copyright notice,
|
|
10
|
+
# this list of conditions and the following disclaimer.
|
|
11
|
+
#
|
|
12
|
+
# Redistributions in binary form must reproduce the above copyright
|
|
13
|
+
# notice, this list of conditions and the following disclaimer in the
|
|
14
|
+
# documentation and/or other materials provided with the distribution.
|
|
15
|
+
#
|
|
16
|
+
# Neither the name of Arista Networks nor the names of its
|
|
17
|
+
# contributors may be used to endorse or promote products derived from
|
|
18
|
+
# this software without specific prior written permission.
|
|
19
|
+
#
|
|
20
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
21
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
22
|
+
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
23
|
+
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARISTA NETWORKS
|
|
24
|
+
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
25
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
26
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
|
27
|
+
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
28
|
+
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
|
29
|
+
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
|
30
|
+
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
31
|
+
#
|
|
32
|
+
# encoding: utf-8
|
|
33
|
+
|
|
34
|
+
Puppet::Type.newtype(:eos_command) do
|
|
35
|
+
@doc = <<-EOS
|
|
36
|
+
Execute commands on the EOS node. Commands can be either priviledged
|
|
37
|
+
mode (enable) commands or configuration commands.
|
|
38
|
+
EOS
|
|
39
|
+
|
|
40
|
+
# Parameters
|
|
41
|
+
|
|
42
|
+
newparam(:name) do
|
|
43
|
+
desc <<-EOS
|
|
44
|
+
The resource name for the command instance.
|
|
45
|
+
EOS
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Properties (state management)
|
|
49
|
+
|
|
50
|
+
newproperty(:mode) do
|
|
51
|
+
desc <<-EOS
|
|
52
|
+
Specifies the command mode to execute the commands in. If this
|
|
53
|
+
value is config then the command list is executed in config mode.
|
|
54
|
+
If the value is enable, then the command list is executed in
|
|
55
|
+
privileged (enable) mode. The default is enable mode.
|
|
56
|
+
EOS
|
|
57
|
+
newvalues(:enable, :config)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
newproperty(:commands, array_matching: :all) do
|
|
61
|
+
desc <<-EOS
|
|
62
|
+
Array of commands to execute on the node. Mutliple commands can be
|
|
63
|
+
sent to the node as a comma delimited set of values.
|
|
64
|
+
EOS
|
|
65
|
+
|
|
66
|
+
validate do |value|
|
|
67
|
+
case value
|
|
68
|
+
when String
|
|
69
|
+
super(value)
|
|
70
|
+
validate_features_per_value(value)
|
|
71
|
+
else fail 'value #{value.inspect} is invalid, must be a string.'
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2014, Arista Networks, Inc.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
#
|
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
|
6
|
+
# modification, are permitted provided that the following conditions are
|
|
7
|
+
# met:
|
|
8
|
+
#
|
|
9
|
+
# Redistributions of source code must retain the above copyright notice,
|
|
10
|
+
# this list of conditions and the following disclaimer.
|
|
11
|
+
#
|
|
12
|
+
# Redistributions in binary form must reproduce the above copyright
|
|
13
|
+
# notice, this list of conditions and the following disclaimer in the
|
|
14
|
+
# documentation and/or other materials provided with the distribution.
|
|
15
|
+
#
|
|
16
|
+
# Neither the name of Arista Networks nor the names of its
|
|
17
|
+
# contributors may be used to endorse or promote products derived from
|
|
18
|
+
# this software without specific prior written permission.
|
|
19
|
+
#
|
|
20
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
21
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
22
|
+
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
23
|
+
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARISTA NETWORKS
|
|
24
|
+
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
25
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
26
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
|
27
|
+
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
28
|
+
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
|
29
|
+
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
|
30
|
+
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
31
|
+
#
|
|
32
|
+
# encoding: utf-8
|
|
33
|
+
|
|
34
|
+
Puppet::Type.newtype(:eos_ethernet) do
|
|
35
|
+
@doc = <<-EOS
|
|
36
|
+
This type provides management of physical Ethernet interfaces on
|
|
37
|
+
Arista EOS nodes from within Puppet. Physical Ethernet interfaces
|
|
38
|
+
include the physical characteristics of front panel data plane
|
|
39
|
+
ports with but does not include the out-of-band Management interface.
|
|
40
|
+
EOS
|
|
41
|
+
|
|
42
|
+
# Parameters
|
|
43
|
+
newparam(:name) do
|
|
44
|
+
desc <<-EOS
|
|
45
|
+
The name of the physical interface to configure. The interface
|
|
46
|
+
name must coorelate to the full physical interface identifier
|
|
47
|
+
in EOS.
|
|
48
|
+
EOS
|
|
49
|
+
isnamevar
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Properties (state management)
|
|
53
|
+
|
|
54
|
+
newproperty(:description) do
|
|
55
|
+
desc <<-EOS
|
|
56
|
+
The one line description to configure for the interface. The
|
|
57
|
+
description can be any valid alphanumeric string including symbols
|
|
58
|
+
and spaces.
|
|
59
|
+
EOS
|
|
60
|
+
|
|
61
|
+
validate do |value|
|
|
62
|
+
case value
|
|
63
|
+
when String then super(value)
|
|
64
|
+
else fail "value #{value.inspect} is invalid, must be a String."
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
newproperty(:enable) do
|
|
70
|
+
desc <<-EOS
|
|
71
|
+
The enable value configures the administrative state of the physical
|
|
72
|
+
Ethernet interfaces. Valid values for enable are:
|
|
73
|
+
|
|
74
|
+
* true - Administratively enables the Ethernet interface
|
|
75
|
+
* false - Administratively disables the Ethernet interface
|
|
76
|
+
EOS
|
|
77
|
+
newvalues(:true, :false)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
newproperty(:flowcontrol_send) do
|
|
81
|
+
desc <<-EOS
|
|
82
|
+
This property configures the flowcontrol send value for the
|
|
83
|
+
specified Ethernet interface. Valid values for flowcontrol are:
|
|
84
|
+
|
|
85
|
+
* on - Configures flowcontrol send on
|
|
86
|
+
* off - Configures flowcontrol send off
|
|
87
|
+
EOS
|
|
88
|
+
newvalues(:on, :off)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
newproperty(:flowcontrol_receive) do
|
|
92
|
+
desc <<-EOS
|
|
93
|
+
This property configures the flowcontrol receive value for the
|
|
94
|
+
specified Ethernet interface. Valid values for flowcontrol are:
|
|
95
|
+
|
|
96
|
+
* on - Configures flowcontrol receive on
|
|
97
|
+
* off - Configures flowcontrol receive off
|
|
98
|
+
EOS
|
|
99
|
+
newvalues(:on, :off)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2014, Arista Networks, Inc.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
#
|
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
|
6
|
+
# modification, are permitted provided that the following conditions are
|
|
7
|
+
# met:
|
|
8
|
+
#
|
|
9
|
+
# Redistributions of source code must retain the above copyright notice,
|
|
10
|
+
# this list of conditions and the following disclaimer.
|
|
11
|
+
#
|
|
12
|
+
# Redistributions in binary form must reproduce the above copyright
|
|
13
|
+
# notice, this list of conditions and the following disclaimer in the
|
|
14
|
+
# documentation and/or other materials provided with the distribution.
|
|
15
|
+
#
|
|
16
|
+
# Neither the name of Arista Networks nor the names of its
|
|
17
|
+
# contributors may be used to endorse or promote products derived from
|
|
18
|
+
# this software without specific prior written permission.
|
|
19
|
+
#
|
|
20
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
21
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
22
|
+
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
23
|
+
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARISTA NETWORKS
|
|
24
|
+
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
25
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
26
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
|
27
|
+
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
28
|
+
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
|
29
|
+
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
|
30
|
+
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
31
|
+
#
|
|
32
|
+
# encoding: utf-8
|
|
33
|
+
|
|
34
|
+
Puppet::Type.newtype(:eos_interface) do
|
|
35
|
+
@doc = <<-EOS
|
|
36
|
+
This type provides management of Arista EOS interfaces. The type
|
|
37
|
+
is used as a basis type for any interface available in EOS and
|
|
38
|
+
therefore the properties are common across all interface types
|
|
39
|
+
EOS
|
|
40
|
+
|
|
41
|
+
ensurable
|
|
42
|
+
|
|
43
|
+
# Parameters
|
|
44
|
+
newparam(:name) do
|
|
45
|
+
desc <<-EOS
|
|
46
|
+
The name parameter specifies the full interface identifier of
|
|
47
|
+
the Arista EOS interface to manage. This value must correspond
|
|
48
|
+
to a valid interface identifier in EOS.
|
|
49
|
+
EOS
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Properties (state management)
|
|
53
|
+
|
|
54
|
+
newproperty(:description) do
|
|
55
|
+
desc <<-EOS
|
|
56
|
+
The one line description to configure for the interface. The
|
|
57
|
+
description can be any valid alphanumeric string including symbols
|
|
58
|
+
and spaces.
|
|
59
|
+
EOS
|
|
60
|
+
|
|
61
|
+
validate do |value|
|
|
62
|
+
case value
|
|
63
|
+
when String then super(value)
|
|
64
|
+
else fail "value #{value.inspect} is invalid, must be a String."
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
newproperty(:enable) do
|
|
70
|
+
desc <<-EOS
|
|
71
|
+
The enable value configures the administrative state of the
|
|
72
|
+
specified interface. Valid values for enable are:
|
|
73
|
+
|
|
74
|
+
* true - Administratively enables the interface
|
|
75
|
+
* false - Administratively disables the interface
|
|
76
|
+
EOS
|
|
77
|
+
newvalues(:true, :false)
|
|
78
|
+
end
|
|
79
|
+
end
|