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.
Files changed (131) hide show
  1. data/.gitignore +41 -0
  2. data/.rubocop.yml +21 -0
  3. data/Gemfile +57 -0
  4. data/Guardfile +21 -0
  5. data/LICENSE +28 -0
  6. data/README.md +178 -0
  7. data/Rakefile +46 -0
  8. data/eos.gemspec +36 -0
  9. data/guide/.gitignore +2 -0
  10. data/guide/Makefile +177 -0
  11. data/guide/_static/arista_logo_jpg-11.jpg +0 -0
  12. data/guide/_static/favicon.ico +0 -0
  13. data/guide/conf.py +282 -0
  14. data/guide/cookbook.rst +135 -0
  15. data/guide/developing.rst +55 -0
  16. data/guide/faq.rst +30 -0
  17. data/guide/index.rst +25 -0
  18. data/guide/installation.rst +174 -0
  19. data/guide/license.rst +5 -0
  20. data/guide/overview.rst +35 -0
  21. data/guide/quickstart.rst +184 -0
  22. data/guide/release-notes-1.0.rst +37 -0
  23. data/guide/release-notes-1.1.rst +25 -0
  24. data/guide/release-notes.rst +10 -0
  25. data/guide/testing.rst +8 -0
  26. data/guide/troubleshooting.rst +26 -0
  27. data/guide/typedoc.rst +928 -0
  28. data/guide/types.rst +44 -0
  29. data/lib/eos.rb +8 -0
  30. data/lib/eos/version.rb +5 -0
  31. data/lib/puppet/provider/eos_acl_entry/default.rb +122 -0
  32. data/lib/puppet/provider/eos_command/default.rb +61 -0
  33. data/lib/puppet/provider/eos_ethernet/default.rb +96 -0
  34. data/lib/puppet/provider/eos_interface/default.rb +89 -0
  35. data/lib/puppet/provider/eos_ipinterface/default.rb +89 -0
  36. data/lib/puppet/provider/eos_mlag/default.rb +86 -0
  37. data/lib/puppet/provider/eos_mlag_interface/default.rb +90 -0
  38. data/lib/puppet/provider/eos_ntp_config/default.rb +68 -0
  39. data/lib/puppet/provider/eos_ntp_server/default.rb +69 -0
  40. data/lib/puppet/provider/eos_portchannel/default.rb +117 -0
  41. data/lib/puppet/provider/eos_snmp/default.rb +77 -0
  42. data/lib/puppet/provider/eos_stp_interface/default.rb +73 -0
  43. data/lib/puppet/provider/eos_switchport/default.rb +100 -0
  44. data/lib/puppet/provider/eos_system/default.rb +63 -0
  45. data/lib/puppet/provider/eos_vlan/default.rb +93 -0
  46. data/lib/puppet/provider/eos_vxlan/default.rb +104 -0
  47. data/lib/puppet/provider/eos_vxlan_vlan/default.rb +89 -0
  48. data/lib/puppet/provider/eos_vxlan_vtep/default.rb +70 -0
  49. data/lib/puppet/type/eos_acl_entry.rb +126 -0
  50. data/lib/puppet/type/eos_command.rb +75 -0
  51. data/lib/puppet/type/eos_ethernet.rb +101 -0
  52. data/lib/puppet/type/eos_interface.rb +79 -0
  53. data/lib/puppet/type/eos_ipinterface.rb +116 -0
  54. data/lib/puppet/type/eos_mlag.rb +133 -0
  55. data/lib/puppet/type/eos_mlag_interface.rb +85 -0
  56. data/lib/puppet/type/eos_ntp_config.rb +70 -0
  57. data/lib/puppet/type/eos_ntp_server.rb +52 -0
  58. data/lib/puppet/type/eos_portchannel.rb +189 -0
  59. data/lib/puppet/type/eos_snmp.rb +127 -0
  60. data/lib/puppet/type/eos_stp_interface.rb +94 -0
  61. data/lib/puppet/type/eos_switchport.rb +150 -0
  62. data/lib/puppet/type/eos_system.rb +69 -0
  63. data/lib/puppet/type/eos_vlan.rb +130 -0
  64. data/lib/puppet/type/eos_vxlan.rb +150 -0
  65. data/lib/puppet/type/eos_vxlan_vlan.rb +78 -0
  66. data/lib/puppet/type/eos_vxlan_vtep.rb +62 -0
  67. data/lib/puppet_x/eos/provider.rb +86 -0
  68. data/lib/puppet_x/eos/utils/helpers.rb +34 -0
  69. data/metadata.json +20 -0
  70. data/spec/fixtures/README +61 -0
  71. data/spec/fixtures/ethernet.json +9 -0
  72. data/spec/fixtures/fixture_stp.yaml +11 -0
  73. data/spec/fixtures/fixture_vxlan_get.yaml +11 -0
  74. data/spec/fixtures/ospf.json +13 -0
  75. data/spec/fixtures/snmp.json +6 -0
  76. data/spec/fixtures/varp.json +11 -0
  77. data/spec/spec_helper.rb +27 -0
  78. data/spec/support/fixtures.rb +74 -0
  79. data/spec/support/shared_examples_for_providers.rb +7 -0
  80. data/spec/support/shared_examples_for_types.rb +451 -0
  81. data/spec/unit/puppet/provider/eos_acl_entry/default_spec.rb +226 -0
  82. data/spec/unit/puppet/provider/eos_acl_entry/fixture_acl_entry.yaml +20 -0
  83. data/spec/unit/puppet/provider/eos_ethernet/default_spec.rb +226 -0
  84. data/spec/unit/puppet/provider/eos_ethernet/fixture_ethernet.yaml +8 -0
  85. data/spec/unit/puppet/provider/eos_interface/default_spec.rb +176 -0
  86. data/spec/unit/puppet/provider/eos_interface/fixture_interfaces.yaml +5 -0
  87. data/spec/unit/puppet/provider/eos_ipinterface/default_spec.rb +223 -0
  88. data/spec/unit/puppet/provider/eos_ipinterface/fixture_ipinterfaces.yaml +5 -0
  89. data/spec/unit/puppet/provider/eos_mlag/default_spec.rb +203 -0
  90. data/spec/unit/puppet/provider/eos_mlag/fixture_mlag.yaml +11 -0
  91. data/spec/unit/puppet/provider/eos_mlag_interface/default_spec.rb +177 -0
  92. data/spec/unit/puppet/provider/eos_mlag_interface/fixture_mlag.yaml +11 -0
  93. data/spec/unit/puppet/provider/eos_ntp_config/default_spec.rb +150 -0
  94. data/spec/unit/puppet/provider/eos_ntp_config/fixture_ntp.yaml +3 -0
  95. data/spec/unit/puppet/provider/eos_ntp_server/default_spec.rb +152 -0
  96. data/spec/unit/puppet/provider/eos_ntp_server/fixture_ntp.yaml +3 -0
  97. data/spec/unit/puppet/provider/eos_portchannel/default_spec.rb +271 -0
  98. data/spec/unit/puppet/provider/eos_portchannel/fixture_portchannels.yaml +10 -0
  99. data/spec/unit/puppet/provider/eos_snmp/default_spec.rb +193 -0
  100. data/spec/unit/puppet/provider/eos_snmp/fixture_snmp.yaml +6 -0
  101. data/spec/unit/puppet/provider/eos_stp_interface/default_spec.rb +138 -0
  102. data/spec/unit/puppet/provider/eos_switchport/default_spec.rb +250 -0
  103. data/spec/unit/puppet/provider/eos_switchport/fixture_switchports.yaml +7 -0
  104. data/spec/unit/puppet/provider/eos_system/default_spec.rb +129 -0
  105. data/spec/unit/puppet/provider/eos_system/fixture_system.yaml +2 -0
  106. data/spec/unit/puppet/provider/eos_vlan/default_spec.rb +228 -0
  107. data/spec/unit/puppet/provider/eos_vlan/fixture_vlans.yaml +6 -0
  108. data/spec/unit/puppet/provider/eos_vxlan/default_spec.rb +229 -0
  109. data/spec/unit/puppet/provider/eos_vxlan/fixture_vxlan.yaml +9 -0
  110. data/spec/unit/puppet/provider/eos_vxlan_vlan/default_spec.rb +148 -0
  111. data/spec/unit/puppet/provider/eos_vxlan_vtep/default_spec.rb +140 -0
  112. data/spec/unit/puppet/type/eos_acl_entry_spec.rb +103 -0
  113. data/spec/unit/puppet/type/eos_command_spec.rb +67 -0
  114. data/spec/unit/puppet/type/eos_ethernet_spec.rb +87 -0
  115. data/spec/unit/puppet/type/eos_interface_spec.rb +67 -0
  116. data/spec/unit/puppet/type/eos_ipinterface_spec.rb +84 -0
  117. data/spec/unit/puppet/type/eos_mlag_interface_spec.rb +62 -0
  118. data/spec/unit/puppet/type/eos_mlag_spec.rb +98 -0
  119. data/spec/unit/puppet/type/eos_ntp_config_spec.rb +58 -0
  120. data/spec/unit/puppet/type/eos_ntp_server_spec.rb +51 -0
  121. data/spec/unit/puppet/type/eos_portchannel_spec.rb +99 -0
  122. data/spec/unit/puppet/type/eos_snmp_spec.rb +87 -0
  123. data/spec/unit/puppet/type/eos_stp_interface_spec.rb +77 -0
  124. data/spec/unit/puppet/type/eos_switchport_spec.rb +88 -0
  125. data/spec/unit/puppet/type/eos_system_spec.rb +57 -0
  126. data/spec/unit/puppet/type/eos_vlan_spec.rb +86 -0
  127. data/spec/unit/puppet/type/eos_vxlan_spec.rb +100 -0
  128. data/spec/unit/puppet/type/eos_vxlan_vlan_spec.rb +73 -0
  129. data/spec/unit/puppet/type/eos_vxlan_vtep_spec.rb +52 -0
  130. data/tests/init.pp +12 -0
  131. 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