puppet_x_eos_eapi 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +24 -0
  4. data/LICENSE.txt +202 -0
  5. data/README.md +87 -0
  6. data/Rakefile +1 -0
  7. data/lib/puppet_x/eos/autoload.rb +57 -0
  8. data/lib/puppet_x/eos/eapi.rb +259 -0
  9. data/lib/puppet_x/eos/module_base.rb +37 -0
  10. data/lib/puppet_x/eos/modules/daemon.rb +109 -0
  11. data/lib/puppet_x/eos/modules/extension.rb +167 -0
  12. data/lib/puppet_x/eos/modules/interface.rb +180 -0
  13. data/lib/puppet_x/eos/modules/ipinterface.rb +133 -0
  14. data/lib/puppet_x/eos/modules/mlag.rb +268 -0
  15. data/lib/puppet_x/eos/modules/ntp.rb +129 -0
  16. data/lib/puppet_x/eos/modules/ospf.rb +129 -0
  17. data/lib/puppet_x/eos/modules/portchannel.rb +277 -0
  18. data/lib/puppet_x/eos/modules/radius.rb +367 -0
  19. data/lib/puppet_x/eos/modules/snmp.rb +177 -0
  20. data/lib/puppet_x/eos/modules/switchport.rb +255 -0
  21. data/lib/puppet_x/eos/modules/system.rb +138 -0
  22. data/lib/puppet_x/eos/modules/tacacs.rb +302 -0
  23. data/lib/puppet_x/eos/modules/vlan.rb +179 -0
  24. data/lib/puppet_x/eos/modules/vxlan.rb +132 -0
  25. data/lib/puppet_x/eos/provider.rb +71 -0
  26. data/lib/puppet_x/eos/version.rb +41 -0
  27. data/lib/puppet_x/net_dev/eos_api.rb +1011 -0
  28. data/lib/puppet_x/net_dev/eos_api/common_methods.rb +27 -0
  29. data/lib/puppet_x/net_dev/eos_api/snmp_methods.rb +647 -0
  30. data/lib/puppet_x/net_dev/eos_api/version.rb +8 -0
  31. data/lib/puppet_x_eos_eapi.rb +4 -0
  32. data/puppet_x_eos_eapi.gemspec +31 -0
  33. data/spec/fixtures/fixture_all_portchannel_modes.json +8 -0
  34. data/spec/fixtures/fixture_all_portchannels_detailed.json +15 -0
  35. data/spec/fixtures/fixture_create_vlan_error.json +17 -0
  36. data/spec/fixtures/fixture_create_vlan_success.json +12 -0
  37. data/spec/fixtures/fixture_eapi_conf.yaml +4 -0
  38. data/spec/fixtures/fixture_enable_configure_vlan_3111_name_foo.json +14 -0
  39. data/spec/fixtures/fixture_enable_configure_vlan_foo_name_bar.json +19 -0
  40. data/spec/fixtures/fixture_get_snmp_communities_non_existent_acl.yaml +2 -0
  41. data/spec/fixtures/fixture_get_snmp_location_westeros.json +5 -0
  42. data/spec/fixtures/fixture_portchannel_min_links_1.json +8 -0
  43. data/spec/fixtures/fixture_portchannel_min_links_2.json +8 -0
  44. data/spec/fixtures/fixture_running_config.yaml +1 -0
  45. data/spec/fixtures/fixture_running_configuration_radius_configured.yaml +30 -0
  46. data/spec/fixtures/fixture_running_configuration_radius_default.yaml +29 -0
  47. data/spec/fixtures/fixture_running_configuration_radius_server_groups.yaml +38 -0
  48. data/spec/fixtures/fixture_running_configuration_radius_servers.yaml +34 -0
  49. data/spec/fixtures/fixture_running_configuration_tacacs_configured.yaml +38 -0
  50. data/spec/fixtures/fixture_running_configuration_tacacs_default.yaml +38 -0
  51. data/spec/fixtures/fixture_running_configuration_tacacs_groups.yaml +1 -0
  52. data/spec/fixtures/fixture_running_configuration_tacacs_groups_3.yaml +43 -0
  53. data/spec/fixtures/fixture_running_configuration_tacacs_servers.yaml +41 -0
  54. data/spec/fixtures/fixture_s4_show_etherchannel_detailed.json +9 -0
  55. data/spec/fixtures/fixture_show_flowcontrol_et1.json +5 -0
  56. data/spec/fixtures/fixture_show_interfaces.json +297 -0
  57. data/spec/fixtures/fixture_show_interfaces_switchport_format_text.json +9 -0
  58. data/spec/fixtures/fixture_show_port_channel_summary_2_lags.json +9 -0
  59. data/spec/fixtures/fixture_show_port_channel_summary_static.json +9 -0
  60. data/spec/fixtures/fixture_show_snmp_community.yaml +2 -0
  61. data/spec/fixtures/fixture_show_snmp_contact_empty.json +5 -0
  62. data/spec/fixtures/fixture_show_snmp_contact_name.json +5 -0
  63. data/spec/fixtures/fixture_show_snmp_disabled.json +5 -0
  64. data/spec/fixtures/fixture_show_snmp_enabled.json +5 -0
  65. data/spec/fixtures/fixture_show_snmp_host.yaml +2 -0
  66. data/spec/fixtures/fixture_show_snmp_host_duplicates.yaml +2 -0
  67. data/spec/fixtures/fixture_show_snmp_host_more_duplicates.yaml +2 -0
  68. data/spec/fixtures/fixture_show_snmp_location_empty.json +5 -0
  69. data/spec/fixtures/fixture_show_snmp_trap.yaml +2 -0
  70. data/spec/fixtures/fixture_show_snmp_user.yaml +2 -0
  71. data/spec/fixtures/fixture_show_snmp_user_raw_text.yaml +1 -0
  72. data/spec/fixtures/fixture_show_vlan.json +37 -0
  73. data/spec/fixtures/fixture_show_vlan_3110.json +18 -0
  74. data/spec/fixtures/fixture_show_vlan_4000.json +18 -0
  75. data/spec/fixtures/fixture_snmp_host_opts.yaml +11 -0
  76. data/spec/spec_helper.rb +21 -0
  77. data/spec/support/fixtures.rb +104 -0
  78. data/spec/unit/puppet_x/eos/eapi_spec.rb +182 -0
  79. data/spec/unit/puppet_x/eos/module_base_spec.rb +26 -0
  80. data/spec/unit/puppet_x/eos/modules/daemon_spec.rb +110 -0
  81. data/spec/unit/puppet_x/eos/modules/extension_spec.rb +197 -0
  82. data/spec/unit/puppet_x/eos/modules/fixtures/daemon_getall.json +3 -0
  83. data/spec/unit/puppet_x/eos/modules/fixtures/extension_getall.json +28 -0
  84. data/spec/unit/puppet_x/eos/modules/fixtures/hostname.json +6 -0
  85. data/spec/unit/puppet_x/eos/modules/fixtures/interface_getall.json +509 -0
  86. data/spec/unit/puppet_x/eos/modules/fixtures/ipinterface_getall.json +56 -0
  87. data/spec/unit/puppet_x/eos/modules/fixtures/mlag_get.json +21 -0
  88. data/spec/unit/puppet_x/eos/modules/fixtures/mlag_get_interfaces.json +18 -0
  89. data/spec/unit/puppet_x/eos/modules/fixtures/ntp_get.json +5 -0
  90. data/spec/unit/puppet_x/eos/modules/fixtures/ospf_instance_getall.json +58 -0
  91. data/spec/unit/puppet_x/eos/modules/fixtures/portchannel_get.json +54 -0
  92. data/spec/unit/puppet_x/eos/modules/fixtures/portchannel_getlacpmode.json +5 -0
  93. data/spec/unit/puppet_x/eos/modules/fixtures/portchannel_getmembers.json +5 -0
  94. data/spec/unit/puppet_x/eos/modules/fixtures/portchannel_po1.json +7 -0
  95. data/spec/unit/puppet_x/eos/modules/fixtures/snmp_get.json +14 -0
  96. data/spec/unit/puppet_x/eos/modules/fixtures/switchport_get.json +5 -0
  97. data/spec/unit/puppet_x/eos/modules/fixtures/switchport_get_et1.json +7 -0
  98. data/spec/unit/puppet_x/eos/modules/fixtures/switchport_getall_interfaces.json +230 -0
  99. data/spec/unit/puppet_x/eos/modules/fixtures/system_domain_list.json +5 -0
  100. data/spec/unit/puppet_x/eos/modules/fixtures/system_domain_name.json +5 -0
  101. data/spec/unit/puppet_x/eos/modules/fixtures/system_hostname.json +6 -0
  102. data/spec/unit/puppet_x/eos/modules/fixtures/system_name_servers.json +5 -0
  103. data/spec/unit/puppet_x/eos/modules/fixtures/vlan_getall.json +123 -0
  104. data/spec/unit/puppet_x/eos/modules/fixtures/vxlan_get.json +24 -0
  105. data/spec/unit/puppet_x/eos/modules/interface_spec.rb +281 -0
  106. data/spec/unit/puppet_x/eos/modules/ipinterface_spec.rb +143 -0
  107. data/spec/unit/puppet_x/eos/modules/mlag_spec.rb +349 -0
  108. data/spec/unit/puppet_x/eos/modules/ntp_spec.rb +136 -0
  109. data/spec/unit/puppet_x/eos/modules/ospf_spec.rb +143 -0
  110. data/spec/unit/puppet_x/eos/modules/portchannel_spec.rb +357 -0
  111. data/spec/unit/puppet_x/eos/modules/radius_spec.rb +509 -0
  112. data/spec/unit/puppet_x/eos/modules/snmp_spec.rb +202 -0
  113. data/spec/unit/puppet_x/eos/modules/switchport_get_et1.json +7 -0
  114. data/spec/unit/puppet_x/eos/modules/switchport_spec.rb +307 -0
  115. data/spec/unit/puppet_x/eos/modules/system_spec.rb +170 -0
  116. data/spec/unit/puppet_x/eos/modules/tacacs_spec.rb +448 -0
  117. data/spec/unit/puppet_x/eos/modules/vlan_spec.rb +244 -0
  118. data/spec/unit/puppet_x/eos/modules/vxlan_spec.rb +189 -0
  119. data/spec/unit/puppet_x/eos/provider_spec.rb +35 -0
  120. data/spec/unit/puppet_x/net_dev/eos_api/common_methods_spec.rb +34 -0
  121. data/spec/unit/puppet_x/net_dev/eos_api/snmp_methods_spec.rb +842 -0
  122. data/spec/unit/puppet_x/net_dev/eos_api_spec.rb +1000 -0
  123. metadata +369 -0
@@ -0,0 +1,197 @@
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
+ require 'spec_helper'
33
+ require 'puppet_x/eos/modules/extension'
34
+
35
+ describe PuppetX::Eos::Extension do
36
+ let(:eapi) { double }
37
+ let(:instance) { PuppetX::Eos::Extension.new eapi }
38
+
39
+ context 'when initializing a new Extension instance' do
40
+ subject { instance }
41
+ it { is_expected.to be_a_kind_of PuppetX::Eos::Extension }
42
+ end
43
+
44
+ context '#getall' do
45
+ subject { instance.get }
46
+
47
+ let(:commands) { 'show extensions' }
48
+
49
+ let :api_response do
50
+ dir = File.dirname(__FILE__)
51
+ file = File.join(dir, 'fixtures/extension_getall.json')
52
+ JSON.load(File.read(file))
53
+ end
54
+
55
+ before :each do
56
+ allow(eapi).to receive(:enable)
57
+ .with(commands)
58
+ .and_return(api_response)
59
+ end
60
+
61
+ describe 'retreiving extensions from eAPI' do
62
+ it { is_expected.to be_a_kind_of Array }
63
+
64
+ it 'has only one entry' do
65
+ expect(subject.size).to eq 1
66
+ end
67
+
68
+ it 'has entry for extensions' do
69
+ expect(subject[0]).to have_key 'extensions'
70
+ end
71
+ end
72
+ end
73
+
74
+ context '#load' do
75
+ subject { instance.load(name, force) }
76
+
77
+ let(:name) { 'foo' }
78
+ let(:api_response) { [{}] }
79
+
80
+ before :each do
81
+ allow(eapi).to receive(:enable)
82
+ .with(commands)
83
+ .and_return(api_response)
84
+ end
85
+
86
+ describe 'load an extension with force=false (default)' do
87
+ let(:force) { false }
88
+ let(:commands) { "extension #{name}" }
89
+ it { is_expected.to be_truthy }
90
+ end
91
+
92
+ describe 'load an extension with force=true' do
93
+ let(:force) { true }
94
+ let(:commands) { "extension #{name} force" }
95
+ it { is_expected.to be_truthy }
96
+ end
97
+ end
98
+
99
+ context '#delete' do
100
+ subject { instance.delete(name) }
101
+ let(:name) { 'foo' }
102
+
103
+ before :each do
104
+ allow(instance).to receive(:set_autoload).and_return(true)
105
+
106
+ allow(eapi).to receive(:enable)
107
+ .once
108
+ .with('no extension foo')
109
+ .and_return([{}])
110
+
111
+ allow(eapi).to receive(:enable)
112
+ .once
113
+ .with('delete extension:foo')
114
+ .and_return([{}])
115
+ end
116
+
117
+ describe 'delete an existing extension' do
118
+ it { is_expected.to be_truthy }
119
+ end
120
+ end
121
+
122
+ context '#install' do
123
+ subject { instance.install(name, force) }
124
+ let(:name) { 'dummy.rpm' }
125
+ let(:force) { false }
126
+
127
+ before :each do
128
+ allow(eapi).to receive(:enable)
129
+ .once
130
+ .with("copy #{name} extension:")
131
+ .and_return([{}])
132
+
133
+ allow(eapi).to receive(:enable)
134
+ .once
135
+ .with("extension #{name}")
136
+ .and_return([{}])
137
+
138
+ allow(eapi).to receive(:enable)
139
+ .once
140
+ .with("extension #{name} force")
141
+ .and_return([{}])
142
+ end
143
+
144
+ describe 'install a new extension with force=false (default)' do
145
+ it { is_expected.to be_truthy }
146
+ end
147
+
148
+ describe 'install a new extension with force=true' do
149
+ let(:force) { true }
150
+ it { is_expected.to be_truthy }
151
+ end
152
+ end
153
+
154
+ context '#autoload?' do
155
+ subject { instance.autoload?(name) }
156
+ let(:name) { 'dummy.rpm' }
157
+ let(:file) { double }
158
+
159
+ before :each do
160
+ allow(File).to receive(:open).and_return(file)
161
+ allow(file).to receive(:read).and_return(contents)
162
+ end
163
+
164
+ describe "extension #{name} already configured" do
165
+ let(:contents) { "#{name}\n" }
166
+ it { is_expected.to be_truthy }
167
+ end
168
+
169
+ describe "extension #{name} not yet configured" do
170
+ let(:contents) { '' }
171
+ it { is_expected.to be_falsey }
172
+ end
173
+ end
174
+
175
+ context '#set_autoload' do
176
+ subject { instance.set_autoload(enabled, name, force) }
177
+ let(:enabled) { :true }
178
+ let(:name) { 'dummy.rpm' }
179
+ let(:force) { nil }
180
+ let(:file) { double }
181
+
182
+ before :each do
183
+ allow(File).to receive(:open).and_return(file)
184
+ allow(file).to receive(:read).and_return(contents)
185
+ end
186
+
187
+ describe 'extension is not yet configured' do
188
+ let(:contents) { '' }
189
+ it { is_expected.to be_truthy }
190
+ end
191
+
192
+ describe 'extension is already configured' do
193
+ let(:contents) { "#{name}\n" }
194
+ it { is_expected.to be_falsy }
195
+ end
196
+ end
197
+ end
@@ -0,0 +1,3 @@
1
+ [{
2
+ "output": "daemon myagent\n command /usr/bin/eosfacts \n!\ndaemon myagent2\n command /usr/bin/eosfacts \n"
3
+ }]
@@ -0,0 +1,28 @@
1
+ [{
2
+ "extensions": {
3
+ "ruby-1.9.3-1.swix": {
4
+ "status": "installed",
5
+ "version": "1.9.3.484",
6
+ "presence": "present",
7
+ "release": "32.eos4",
8
+ "numRpms": 10,
9
+ "error": false
10
+ },
11
+ "dummy.rpm": {
12
+ "status": "installed",
13
+ "version": "3.7.1",
14
+ "presence": "present",
15
+ "release": "1.eos4",
16
+ "numRpms": 14,
17
+ "error": false
18
+ },
19
+ "forced-dummy.rpm": {
20
+ "status": "forcedInstall",
21
+ "version": "3.7.1",
22
+ "presence": "present",
23
+ "release": "1.eos4",
24
+ "numRpms": 14,
25
+ "error": false
26
+ }
27
+ }
28
+ }]
@@ -0,0 +1,6 @@
1
+ [
2
+ {
3
+ "fqdn": "veos01.arista.com",
4
+ "hostname": "veos01"
5
+ }
6
+ ]
@@ -0,0 +1,509 @@
1
+ [{
2
+ "interfaces": {
3
+ "Management1": {
4
+ "lastStatusChangeTimestamp": 1413835446.51,
5
+ "name": "Management1",
6
+ "duplex": "duplexFull",
7
+ "autoNegotiate": "success",
8
+ "burnedInAddress": "00:1c:73:2a:00:01",
9
+ "mtu": 1500,
10
+ "hardware": "ethernet",
11
+ "interfaceStatus": "connected",
12
+ "bandwidth": 1000000000,
13
+ "forwardingModel": "routed",
14
+ "lineProtocolStatus": "up",
15
+ "interfaceCounters": {
16
+ "outBroadcastPkts": 0,
17
+ "linkStatusChanges": 3,
18
+ "totalOutErrors": 0,
19
+ "inMulticastPkts": 0,
20
+ "counterRefreshTime": 1414178978.69,
21
+ "inBroadcastPkts": 0,
22
+ "outputErrorsDetail": {
23
+ "deferredTransmissions": 0,
24
+ "txPause": 0,
25
+ "collisions": 0,
26
+ "lateCollisions": 0
27
+ },
28
+ "outOctets": 26695361,
29
+ "outDiscards": 0,
30
+ "inOctets": 83207596,
31
+ "inUcastPkts": 0,
32
+ "inputErrorsDetail": {
33
+ "runtFrames": 0,
34
+ "rxPause": 0,
35
+ "fcsErrors": 0,
36
+ "alignmentErrors": 0,
37
+ "giantFrames": 0,
38
+ "symbolErrors": 0
39
+ },
40
+ "outUcastPkts": 111834,
41
+ "outMulticastPkts": 0,
42
+ "totalInErrors": 0,
43
+ "inDiscards": 0
44
+ },
45
+ "interfaceStatistics": {
46
+ "inBitsRate": 2283.18240999,
47
+ "outBitsRate": 843.217442658,
48
+ "inPktsRate": 0,
49
+ "updateInterval": 300,
50
+ "outPktsRate": 0.591540709535
51
+ },
52
+ "interfaceAddress": [
53
+ {
54
+ "secondaryIpsOrderedList": [],
55
+ "broadcastAddress": "255.255.255.255",
56
+ "secondaryIps": {},
57
+ "primaryIp": {
58
+ "maskLen": 24,
59
+ "address": "192.168.1.16"
60
+ },
61
+ "virtualIp": {
62
+ "maskLen": 0,
63
+ "address": "0.0.0.0"
64
+ }
65
+ }
66
+ ],
67
+ "physicalAddress": "00:1c:73:2a:00:01",
68
+ "description": ""
69
+ },
70
+ "Ethernet2": {
71
+ "lastStatusChangeTimestamp": 1413835446.79,
72
+ "name": "Ethernet2",
73
+ "duplex": "duplexFull",
74
+ "autoNegotiate": "unknown",
75
+ "burnedInAddress": "00:50:56:3f:db:ec",
76
+ "mtu": 9214,
77
+ "hardware": "ethernet",
78
+ "interfaceStatus": "connected",
79
+ "bandwidth": 10000000000,
80
+ "forwardingModel": "bridged",
81
+ "lineProtocolStatus": "up",
82
+ "interfaceCounters": {
83
+ "outBroadcastPkts": 301,
84
+ "linkStatusChanges": 1,
85
+ "totalOutErrors": 0,
86
+ "inMulticastPkts": 1332,
87
+ "counterRefreshTime": 1414178978.65,
88
+ "inBroadcastPkts": 301,
89
+ "outputErrorsDetail": {
90
+ "deferredTransmissions": 0,
91
+ "txPause": 0,
92
+ "collisions": 0,
93
+ "lateCollisions": 0
94
+ },
95
+ "outOctets": 23185631,
96
+ "outDiscards": 0,
97
+ "inOctets": 262010,
98
+ "inUcastPkts": 0,
99
+ "inputErrorsDetail": {
100
+ "runtFrames": 0,
101
+ "rxPause": 0,
102
+ "fcsErrors": 0,
103
+ "alignmentErrors": 0,
104
+ "giantFrames": 0,
105
+ "symbolErrors": 0
106
+ },
107
+ "outUcastPkts": 0,
108
+ "outMulticastPkts": 181558,
109
+ "totalInErrors": 0,
110
+ "inDiscards": 0
111
+ },
112
+ "interfaceStatistics": {
113
+ "inBitsRate": 0,
114
+ "outBitsRate": 0,
115
+ "inPktsRate": 0,
116
+ "updateInterval": 300,
117
+ "outPktsRate": 0
118
+ },
119
+ "interfaceAddress": [],
120
+ "physicalAddress": "00:50:56:3f:db:ec",
121
+ "description": ""
122
+ },
123
+ "Ethernet3": {
124
+ "lastStatusChangeTimestamp": 1413835446.79,
125
+ "name": "Ethernet3",
126
+ "duplex": "duplexFull",
127
+ "autoNegotiate": "unknown",
128
+ "burnedInAddress": "00:50:56:27:98:44",
129
+ "mtu": 9214,
130
+ "hardware": "ethernet",
131
+ "interfaceStatus": "connected",
132
+ "bandwidth": 10000000000,
133
+ "forwardingModel": "bridged",
134
+ "lineProtocolStatus": "up",
135
+ "interfaceCounters": {
136
+ "outBroadcastPkts": 602,
137
+ "linkStatusChanges": 1,
138
+ "totalOutErrors": 0,
139
+ "inMulticastPkts": 0,
140
+ "counterRefreshTime": 1414178978.66,
141
+ "inBroadcastPkts": 0,
142
+ "outputErrorsDetail": {
143
+ "deferredTransmissions": 0,
144
+ "txPause": 0,
145
+ "collisions": 0,
146
+ "lateCollisions": 0
147
+ },
148
+ "outOctets": 23450434,
149
+ "outDiscards": 0,
150
+ "inOctets": 0,
151
+ "inUcastPkts": 0,
152
+ "inputErrorsDetail": {
153
+ "runtFrames": 0,
154
+ "rxPause": 0,
155
+ "fcsErrors": 0,
156
+ "alignmentErrors": 0,
157
+ "giantFrames": 0,
158
+ "symbolErrors": 0
159
+ },
160
+ "outUcastPkts": 0,
161
+ "outMulticastPkts": 182911,
162
+ "totalInErrors": 0,
163
+ "inDiscards": 0
164
+ },
165
+ "interfaceStatistics": {
166
+ "inBitsRate": 0,
167
+ "outBitsRate": 0,
168
+ "inPktsRate": 0,
169
+ "updateInterval": 300,
170
+ "outPktsRate": 0
171
+ },
172
+ "interfaceAddress": [],
173
+ "physicalAddress": "00:50:56:27:98:44",
174
+ "description": ""
175
+ },
176
+ "Ethernet1": {
177
+ "lastStatusChangeTimestamp": 1413835446.78,
178
+ "name": "Ethernet1",
179
+ "duplex": "duplexFull",
180
+ "autoNegotiate": "unknown",
181
+ "burnedInAddress": "00:50:56:3f:0c:0b",
182
+ "mtu": 9214,
183
+ "hardware": "ethernet",
184
+ "interfaceStatus": "connected",
185
+ "bandwidth": 10000000000,
186
+ "forwardingModel": "bridged",
187
+ "lineProtocolStatus": "up",
188
+ "interfaceCounters": {
189
+ "outBroadcastPkts": 301,
190
+ "linkStatusChanges": 1,
191
+ "totalOutErrors": 0,
192
+ "inMulticastPkts": 1324,
193
+ "counterRefreshTime": 1414178978.65,
194
+ "inBroadcastPkts": 301,
195
+ "outputErrorsDetail": {
196
+ "deferredTransmissions": 0,
197
+ "txPause": 0,
198
+ "collisions": 0,
199
+ "lateCollisions": 0
200
+ },
201
+ "outOctets": 23187155,
202
+ "outDiscards": 0,
203
+ "inOctets": 260609,
204
+ "inUcastPkts": 0,
205
+ "inputErrorsDetail": {
206
+ "runtFrames": 0,
207
+ "rxPause": 0,
208
+ "fcsErrors": 0,
209
+ "alignmentErrors": 0,
210
+ "giantFrames": 0,
211
+ "symbolErrors": 0
212
+ },
213
+ "outUcastPkts": 0,
214
+ "outMulticastPkts": 181567,
215
+ "totalInErrors": 0,
216
+ "inDiscards": 0
217
+ },
218
+ "interfaceStatistics": {
219
+ "inBitsRate": 0,
220
+ "outBitsRate": 0,
221
+ "inPktsRate": 0,
222
+ "updateInterval": 300,
223
+ "outPktsRate": 0
224
+ },
225
+ "interfaceAddress": [],
226
+ "physicalAddress": "00:50:56:3f:0c:0b",
227
+ "description": ""
228
+ },
229
+ "Ethernet6": {
230
+ "lastStatusChangeTimestamp": 1413835446.79,
231
+ "name": "Ethernet6",
232
+ "duplex": "duplexFull",
233
+ "autoNegotiate": "unknown",
234
+ "burnedInAddress": "00:0c:29:2a:74:40",
235
+ "mtu": 9214,
236
+ "hardware": "ethernet",
237
+ "interfaceStatus": "connected",
238
+ "bandwidth": 10000000000,
239
+ "forwardingModel": "bridged",
240
+ "lineProtocolStatus": "up",
241
+ "interfaceCounters": {
242
+ "outBroadcastPkts": 602,
243
+ "linkStatusChanges": 1,
244
+ "totalOutErrors": 0,
245
+ "inMulticastPkts": 0,
246
+ "counterRefreshTime": 1414178978.68,
247
+ "inBroadcastPkts": 0,
248
+ "outputErrorsDetail": {
249
+ "deferredTransmissions": 0,
250
+ "txPause": 0,
251
+ "collisions": 0,
252
+ "lateCollisions": 0
253
+ },
254
+ "outOctets": 23450429,
255
+ "outDiscards": 0,
256
+ "inOctets": 0,
257
+ "inUcastPkts": 0,
258
+ "inputErrorsDetail": {
259
+ "runtFrames": 0,
260
+ "rxPause": 0,
261
+ "fcsErrors": 0,
262
+ "alignmentErrors": 0,
263
+ "giantFrames": 0,
264
+ "symbolErrors": 0
265
+ },
266
+ "outUcastPkts": 0,
267
+ "outMulticastPkts": 182911,
268
+ "totalInErrors": 0,
269
+ "inDiscards": 0
270
+ },
271
+ "interfaceStatistics": {
272
+ "inBitsRate": 0,
273
+ "outBitsRate": 0,
274
+ "inPktsRate": 0,
275
+ "updateInterval": 300,
276
+ "outPktsRate": 0
277
+ },
278
+ "interfaceAddress": [],
279
+ "physicalAddress": "00:0c:29:2a:74:40",
280
+ "description": ""
281
+ },
282
+ "Ethernet7": {
283
+ "lastStatusChangeTimestamp": 1413835446.79,
284
+ "name": "Ethernet7",
285
+ "duplex": "duplexFull",
286
+ "autoNegotiate": "unknown",
287
+ "burnedInAddress": "00:0c:29:2a:74:4a",
288
+ "mtu": 9214,
289
+ "hardware": "ethernet",
290
+ "interfaceStatus": "connected",
291
+ "bandwidth": 10000000000,
292
+ "forwardingModel": "bridged",
293
+ "lineProtocolStatus": "up",
294
+ "interfaceCounters": {
295
+ "outBroadcastPkts": 602,
296
+ "linkStatusChanges": 1,
297
+ "totalOutErrors": 0,
298
+ "inMulticastPkts": 0,
299
+ "counterRefreshTime": 1414178978.68,
300
+ "inBroadcastPkts": 0,
301
+ "outputErrorsDetail": {
302
+ "deferredTransmissions": 0,
303
+ "txPause": 0,
304
+ "collisions": 0,
305
+ "lateCollisions": 0
306
+ },
307
+ "outOctets": 23447414,
308
+ "outDiscards": 0,
309
+ "inOctets": 0,
310
+ "inUcastPkts": 0,
311
+ "inputErrorsDetail": {
312
+ "runtFrames": 0,
313
+ "rxPause": 0,
314
+ "fcsErrors": 0,
315
+ "alignmentErrors": 0,
316
+ "giantFrames": 0,
317
+ "symbolErrors": 0
318
+ },
319
+ "outUcastPkts": 0,
320
+ "outMulticastPkts": 182889,
321
+ "totalInErrors": 0,
322
+ "inDiscards": 0
323
+ },
324
+ "interfaceStatistics": {
325
+ "inBitsRate": 0,
326
+ "outBitsRate": 0,
327
+ "inPktsRate": 0,
328
+ "updateInterval": 300,
329
+ "outPktsRate": 0
330
+ },
331
+ "interfaceAddress": [],
332
+ "physicalAddress": "00:0c:29:2a:74:4a",
333
+ "description": ""
334
+ },
335
+ "Ethernet4": {
336
+ "lastStatusChangeTimestamp": 1413835446.79,
337
+ "name": "Ethernet4",
338
+ "duplex": "duplexFull",
339
+ "autoNegotiate": "unknown",
340
+ "burnedInAddress": "00:50:56:2d:19:03",
341
+ "mtu": 9214,
342
+ "hardware": "ethernet",
343
+ "interfaceStatus": "connected",
344
+ "bandwidth": 10000000000,
345
+ "forwardingModel": "bridged",
346
+ "lineProtocolStatus": "up",
347
+ "interfaceCounters": {
348
+ "outBroadcastPkts": 602,
349
+ "linkStatusChanges": 1,
350
+ "totalOutErrors": 0,
351
+ "inMulticastPkts": 0,
352
+ "counterRefreshTime": 1414178978.67,
353
+ "inBroadcastPkts": 0,
354
+ "outputErrorsDetail": {
355
+ "deferredTransmissions": 0,
356
+ "txPause": 0,
357
+ "collisions": 0,
358
+ "lateCollisions": 0
359
+ },
360
+ "outOctets": 23450434,
361
+ "outDiscards": 0,
362
+ "inOctets": 0,
363
+ "inUcastPkts": 0,
364
+ "lastClear": 1413835361.8,
365
+ "inputErrorsDetail": {
366
+ "runtFrames": 0,
367
+ "rxPause": 0,
368
+ "fcsErrors": 0,
369
+ "alignmentErrors": 0,
370
+ "giantFrames": 0,
371
+ "symbolErrors": 0
372
+ },
373
+ "outUcastPkts": 0,
374
+ "outMulticastPkts": 182911,
375
+ "totalInErrors": 0,
376
+ "inDiscards": 0
377
+ },
378
+ "interfaceStatistics": {
379
+ "inBitsRate": 0,
380
+ "outBitsRate": 0,
381
+ "inPktsRate": 0,
382
+ "updateInterval": 300,
383
+ "outPktsRate": 0
384
+ },
385
+ "interfaceAddress": [],
386
+ "physicalAddress": "00:50:56:2d:19:03",
387
+ "description": ""
388
+ },
389
+ "Ethernet5": {
390
+ "lastStatusChangeTimestamp": 1413835446.79,
391
+ "name": "Ethernet5",
392
+ "duplex": "duplexFull",
393
+ "autoNegotiate": "unknown",
394
+ "burnedInAddress": "00:0c:29:2a:74:36",
395
+ "mtu": 9214,
396
+ "hardware": "ethernet",
397
+ "interfaceStatus": "connected",
398
+ "bandwidth": 10000000000,
399
+ "forwardingModel": "bridged",
400
+ "lineProtocolStatus": "up",
401
+ "interfaceCounters": {
402
+ "outBroadcastPkts": 602,
403
+ "linkStatusChanges": 1,
404
+ "totalOutErrors": 0,
405
+ "inMulticastPkts": 0,
406
+ "counterRefreshTime": 1414178978.67,
407
+ "inBroadcastPkts": 0,
408
+ "outputErrorsDetail": {
409
+ "deferredTransmissions": 0,
410
+ "txPause": 0,
411
+ "collisions": 0,
412
+ "lateCollisions": 0
413
+ },
414
+ "outOctets": 23450221,
415
+ "outDiscards": 0,
416
+ "inOctets": 0,
417
+ "inUcastPkts": 0,
418
+ "inputErrorsDetail": {
419
+ "runtFrames": 0,
420
+ "rxPause": 0,
421
+ "fcsErrors": 0,
422
+ "alignmentErrors": 0,
423
+ "giantFrames": 0,
424
+ "symbolErrors": 0
425
+ },
426
+ "outUcastPkts": 0,
427
+ "outMulticastPkts": 182910,
428
+ "totalInErrors": 0,
429
+ "inDiscards": 0
430
+ },
431
+ "interfaceStatistics": {
432
+ "inBitsRate": 0,
433
+ "outBitsRate": 0,
434
+ "inPktsRate": 0,
435
+ "updateInterval": 300,
436
+ "outPktsRate": 0
437
+ },
438
+ "interfaceAddress": [],
439
+ "physicalAddress": "00:0c:29:2a:74:36",
440
+ "description": ""
441
+ }
442
+ },
443
+ "interfaceFlowControls": {
444
+ "Management1": {
445
+ "txAdminState": "desired",
446
+ "rxAdminState": "desired",
447
+ "rxPause": 0,
448
+ "txOperState": "off",
449
+ "txPause": 0,
450
+ "rxOperState": "on"
451
+ },
452
+ "Ethernet2": {
453
+ "txAdminState": "off",
454
+ "rxAdminState": "off",
455
+ "rxPause": 0,
456
+ "txOperState": "unknown",
457
+ "txPause": 0,
458
+ "rxOperState": "unknown"
459
+ },
460
+ "Ethernet3": {
461
+ "txAdminState": "off",
462
+ "rxAdminState": "off",
463
+ "rxPause": 0,
464
+ "txOperState": "unknown",
465
+ "txPause": 0,
466
+ "rxOperState": "unknown"
467
+ },
468
+ "Ethernet1": {
469
+ "txAdminState": "off",
470
+ "rxAdminState": "off",
471
+ "rxPause": 0,
472
+ "txOperState": "unknown",
473
+ "txPause": 0,
474
+ "rxOperState": "unknown"
475
+ },
476
+ "Ethernet6": {
477
+ "txAdminState": "off",
478
+ "rxAdminState": "off",
479
+ "rxPause": 0,
480
+ "txOperState": "unknown",
481
+ "txPause": 0,
482
+ "rxOperState": "unknown"
483
+ },
484
+ "Ethernet7": {
485
+ "txAdminState": "off",
486
+ "rxAdminState": "off",
487
+ "rxPause": 0,
488
+ "txOperState": "unknown",
489
+ "txPause": 0,
490
+ "rxOperState": "unknown"
491
+ },
492
+ "Ethernet4": {
493
+ "txAdminState": "off",
494
+ "rxAdminState": "off",
495
+ "rxPause": 0,
496
+ "txOperState": "unknown",
497
+ "txPause": 0,
498
+ "rxOperState": "unknown"
499
+ },
500
+ "Ethernet5": {
501
+ "txAdminState": "off",
502
+ "rxAdminState": "off",
503
+ "rxPause": 0,
504
+ "txOperState": "unknown",
505
+ "txPause": 0,
506
+ "rxOperState": "unknown"
507
+ }
508
+ }
509
+ }]