rbeapi 1.1 → 1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1dc55f02164a2136033dc85beedb95892b9c4123
4
- data.tar.gz: 834b6277842521fb9fbfd47a00364dd1ac30457b
3
+ metadata.gz: 77f57dffb48069339da41ad9ccbacb58f0ba721c
4
+ data.tar.gz: 01a8466b66a59fba98f05b90951e3dbec95cb403
5
5
  SHA512:
6
- metadata.gz: 6af640792253a287f6fc05cb940e1783c06c767d1bb592a61497e35a2c0b6db59ce5d11b0d26178219797d33554c5626e68506a0173ce1f9a43ee4fc73325442
7
- data.tar.gz: 7571e8a5ebe5cb10b0f0c77f5c2011958d3f5cfeea568d5542a13d3cc56edb1ae30309dba4053bffe5ecc83b49bb252168554ae0ba3c60cbd5f06f8fef7e1d8a
6
+ metadata.gz: 376ea7873d47cc61f196aaae4efcfa68127b0146f64b8a265f680d6ab2e2ee7dffaa3f09df21b6d2a8e4a963bd78b7fc606fed96ca87dcb4912a8b2beee43dfa
7
+ data.tar.gz: b848cbd0cd4c76935fa9e9e542f25eb94738a16ddad6862ceb9aea5b97030e653484b53ce55bec9a88ffac6ff045d61c098ca9779747caff957539b9f6ca908f
data/.rubocop.yml CHANGED
@@ -1,6 +1,7 @@
1
1
  AllCops:
2
2
  Exclude:
3
3
  - '**/*.gemspec'
4
+ - '**/*.spec'
4
5
 
5
6
  Metrics/CyclomaticComplexity:
6
7
  Max: 20
@@ -22,3 +23,16 @@ Metrics/ClassLength:
22
23
 
23
24
  Metrics/BlockLength:
24
25
  Enabled: False
26
+
27
+ # Puppet style
28
+ Style/SignalException:
29
+ Enabled: False
30
+
31
+ Layout/IndentHeredoc:
32
+ Enabled: False
33
+
34
+ Style/SymbolArray:
35
+ Enabled: False
36
+
37
+ Style/PercentLiteralDelimiters:
38
+ Enabled: False
data/CHANGELOG.md CHANGED
@@ -1,10 +1,23 @@
1
1
  # Change Log
2
2
 
3
- ## [1.1](https://github.com/arista-eosplus/rbeapi/tree/1.1) (2016-12-06)
4
- [Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v1.0...1.1)
3
+ ## [1.2](https://github.com/arista-eosplus/rbeapi/tree/1.2) (2017-06-02)
4
+ [Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v1.1...1.2)
5
5
 
6
6
  **Implemented enhancements:**
7
7
 
8
+ - add support for timezone, please review [\#167](https://github.com/arista-eosplus/rbeapi/pull/167) ([mmailand](https://github.com/mmailand))
9
+ - add the ip host function for static dns entries. [\#164](https://github.com/arista-eosplus/rbeapi/pull/164) ([mmailand](https://github.com/mmailand))
10
+
11
+ **Merged pull requests:**
12
+
13
+ - \(NETDEV-29\) Enhance netdev NTP api [\#169](https://github.com/arista-eosplus/rbeapi/pull/169) ([shermdog](https://github.com/shermdog))
14
+
15
+ ## [v1.1](https://github.com/arista-eosplus/rbeapi/tree/v1.1) (2016-12-06)
16
+ [Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v1.0...v1.1)
17
+
18
+ **Implemented enhancements:**
19
+
20
+ - Style updates for Rubocop 0.45 [\#163](https://github.com/arista-eosplus/rbeapi/pull/163) ([jerearista](https://github.com/jerearista))
8
21
  - add subinterface functionality [\#161](https://github.com/arista-eosplus/rbeapi/pull/161) ([mmailand](https://github.com/mmailand))
9
22
  - add support to set aliases [\#160](https://github.com/arista-eosplus/rbeapi/pull/160) ([mmailand](https://github.com/mmailand))
10
23
  - added support for setting the crypto in managementdefaults [\#159](https://github.com/arista-eosplus/rbeapi/pull/159) ([mmailand](https://github.com/mmailand))
@@ -14,12 +27,8 @@
14
27
  **Fixed bugs:**
15
28
 
16
29
  - Fix multiline alias support [\#165](https://github.com/arista-eosplus/rbeapi/pull/165) ([jerearista](https://github.com/jerearista))
17
- - extend and fix ospf features [\#156](https://github.com/arista-eosplus/rbeapi/pull/156) ([rknaus](https://github.com/rknaus))
18
-
19
- **Merged pull requests:**
20
-
21
- - Style updates for Rubocop 0.45 [\#163](https://github.com/arista-eosplus/rbeapi/pull/163) ([jerearista](https://github.com/jerearista))
22
30
  - fix for rspec failure on current develop [\#162](https://github.com/arista-eosplus/rbeapi/pull/162) ([mmailand](https://github.com/mmailand))
31
+ - extend and fix ospf features [\#156](https://github.com/arista-eosplus/rbeapi/pull/156) ([rknaus](https://github.com/rknaus))
23
32
 
24
33
  ## [v1.0](https://github.com/arista-eosplus/rbeapi/tree/v1.0) (2016-09-26)
25
34
  [Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v0.5.1...v1.0)
@@ -61,7 +70,7 @@
61
70
  - Fix rpm uninstall issue \#118 [\#134](https://github.com/arista-eosplus/rbeapi/pull/134) ([jerearista](https://github.com/jerearista))
62
71
  - Switchconfig rpms for chef [\#130](https://github.com/arista-eosplus/rbeapi/pull/130) ([jerearista](https://github.com/jerearista))
63
72
  - Switchconfig zap empty lines [\#128](https://github.com/arista-eosplus/rbeapi/pull/128) ([jerearista](https://github.com/jerearista))
64
- - Validate array param options [\#126](https://github.com/arista-eosplus/rbeapi/pull/126) ([websitescenes](https://github.com/websitescenes))
73
+ - Validate array param options [\#126](https://github.com/arista-eosplus/rbeapi/pull/126) ([HuntBurdick](https://github.com/HuntBurdick))
65
74
  - Wip load interval v2 [\#122](https://github.com/arista-eosplus/rbeapi/pull/122) ([n1cn0c](https://github.com/n1cn0c))
66
75
  - Created vlans set\_trunk\_groups method. [\#119](https://github.com/arista-eosplus/rbeapi/pull/119) ([devrobo](https://github.com/devrobo))
67
76
 
@@ -89,9 +98,9 @@
89
98
  - Release 0.5.1 [\#115](https://github.com/arista-eosplus/rbeapi/pull/115) ([jerearista](https://github.com/jerearista))
90
99
  - Only first trunk group was being returned. [\#114](https://github.com/arista-eosplus/rbeapi/pull/114) ([devrobo](https://github.com/devrobo))
91
100
  - Add support for DEFAULT section to eapi config file. [\#111](https://github.com/arista-eosplus/rbeapi/pull/111) ([devrobo](https://github.com/devrobo))
92
- - Remove getter for timeouts and use attr\_reader instead. [\#107](https://github.com/arista-eosplus/rbeapi/pull/107) ([websitescenes](https://github.com/websitescenes))
101
+ - Remove getter for timeouts and use attr\_reader instead. [\#107](https://github.com/arista-eosplus/rbeapi/pull/107) ([HuntBurdick](https://github.com/HuntBurdick))
93
102
  - Added doc for trunk groups to get. [\#106](https://github.com/arista-eosplus/rbeapi/pull/106) ([devrobo](https://github.com/devrobo))
94
- - Tightening up documentation. [\#105](https://github.com/arista-eosplus/rbeapi/pull/105) ([websitescenes](https://github.com/websitescenes))
103
+ - Tightening up documentation. [\#105](https://github.com/arista-eosplus/rbeapi/pull/105) ([HuntBurdick](https://github.com/HuntBurdick))
95
104
  - Added support for setting system banners. [\#104](https://github.com/arista-eosplus/rbeapi/pull/104) ([devrobo](https://github.com/devrobo))
96
105
 
97
106
  ## [v0.5.0](https://github.com/arista-eosplus/rbeapi/tree/v0.5.0) (2016-01-12)
@@ -105,15 +114,15 @@
105
114
  - switchport api should support trunk groups [\#38](https://github.com/arista-eosplus/rbeapi/issues/38)
106
115
  - Need units tests for framework [\#30](https://github.com/arista-eosplus/rbeapi/issues/30)
107
116
  - Need unit test to verify read and open timeout in eapi conf file override default [\#29](https://github.com/arista-eosplus/rbeapi/issues/29)
108
- - Unit tests for switchports [\#94](https://github.com/arista-eosplus/rbeapi/pull/94) ([websitescenes](https://github.com/websitescenes))
109
- - Ensure all parse methods are private. [\#93](https://github.com/arista-eosplus/rbeapi/pull/93) ([websitescenes](https://github.com/websitescenes))
110
- - test timeout values [\#92](https://github.com/arista-eosplus/rbeapi/pull/92) ([websitescenes](https://github.com/websitescenes))
117
+ - Unit tests for switchports [\#94](https://github.com/arista-eosplus/rbeapi/pull/94) ([HuntBurdick](https://github.com/HuntBurdick))
118
+ - Ensure all parse methods are private. [\#93](https://github.com/arista-eosplus/rbeapi/pull/93) ([HuntBurdick](https://github.com/HuntBurdick))
119
+ - test timeout values [\#92](https://github.com/arista-eosplus/rbeapi/pull/92) ([HuntBurdick](https://github.com/HuntBurdick))
111
120
  - Relax check on getall entries [\#91](https://github.com/arista-eosplus/rbeapi/pull/91) ([devrobo](https://github.com/devrobo))
112
- - Update framework tests [\#90](https://github.com/arista-eosplus/rbeapi/pull/90) ([websitescenes](https://github.com/websitescenes))
121
+ - Update framework tests [\#90](https://github.com/arista-eosplus/rbeapi/pull/90) ([HuntBurdick](https://github.com/HuntBurdick))
113
122
  - Add lacp\_mode option when setting port-channel members. [\#89](https://github.com/arista-eosplus/rbeapi/pull/89) ([devrobo](https://github.com/devrobo))
114
123
  - Added support for trunk groups. [\#88](https://github.com/arista-eosplus/rbeapi/pull/88) ([devrobo](https://github.com/devrobo))
115
- - Add basic framework tests. [\#85](https://github.com/arista-eosplus/rbeapi/pull/85) ([websitescenes](https://github.com/websitescenes))
116
- - Address code coverage gaps [\#84](https://github.com/arista-eosplus/rbeapi/pull/84) ([websitescenes](https://github.com/websitescenes))
124
+ - Add basic framework tests. [\#85](https://github.com/arista-eosplus/rbeapi/pull/85) ([HuntBurdick](https://github.com/HuntBurdick))
125
+ - Address code coverage gaps [\#84](https://github.com/arista-eosplus/rbeapi/pull/84) ([HuntBurdick](https://github.com/HuntBurdick))
117
126
 
118
127
  **Fixed bugs:**
119
128
 
@@ -124,11 +133,11 @@
124
133
  - Add terminal to configure command to work around AAA issue found in p… [\#99](https://github.com/arista-eosplus/rbeapi/pull/99) ([devrobo](https://github.com/devrobo))
125
134
  - Set enable password for a connection. [\#96](https://github.com/arista-eosplus/rbeapi/pull/96) ([devrobo](https://github.com/devrobo))
126
135
  - Catch errors and syslog them when parsing eapi conf file. [\#95](https://github.com/arista-eosplus/rbeapi/pull/95) ([devrobo](https://github.com/devrobo))
127
- - Ensure that nil is returned when you try to get nonexistent username. [\#83](https://github.com/arista-eosplus/rbeapi/pull/83) ([websitescenes](https://github.com/websitescenes))
136
+ - Ensure that nil is returned when you try to get nonexistent username. [\#83](https://github.com/arista-eosplus/rbeapi/pull/83) ([HuntBurdick](https://github.com/HuntBurdick))
128
137
 
129
138
  **Merged pull requests:**
130
139
 
131
- - Update documentation [\#97](https://github.com/arista-eosplus/rbeapi/pull/97) ([websitescenes](https://github.com/websitescenes))
140
+ - Update documentation [\#97](https://github.com/arista-eosplus/rbeapi/pull/97) ([HuntBurdick](https://github.com/HuntBurdick))
132
141
 
133
142
  ## [v0.4.0](https://github.com/arista-eosplus/rbeapi/tree/v0.4.0) (2015-11-21)
134
143
  [Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v0.3.0...v0.4.0)
@@ -155,14 +164,14 @@
155
164
 
156
165
  - Merge develop to master for Release 0.4.0 [\#81](https://github.com/arista-eosplus/rbeapi/pull/81) ([jerearista](https://github.com/jerearista))
157
166
  - Release 0.4.0 [\#80](https://github.com/arista-eosplus/rbeapi/pull/80) ([jerearista](https://github.com/jerearista))
158
- - Update rubocop version and rectify related test failures. [\#76](https://github.com/arista-eosplus/rbeapi/pull/76) ([websitescenes](https://github.com/websitescenes))
159
- - Add method to enable ip routing to the system API [\#75](https://github.com/arista-eosplus/rbeapi/pull/75) ([websitescenes](https://github.com/websitescenes))
167
+ - Update rubocop version and rectify related test failures. [\#76](https://github.com/arista-eosplus/rbeapi/pull/76) ([HuntBurdick](https://github.com/HuntBurdick))
168
+ - Add method to enable ip routing to the system API [\#75](https://github.com/arista-eosplus/rbeapi/pull/75) ([HuntBurdick](https://github.com/HuntBurdick))
160
169
  - Added vrrp api module and unit tests. [\#64](https://github.com/arista-eosplus/rbeapi/pull/64) ([devrobo](https://github.com/devrobo))
161
- - Adding feature routemap [\#63](https://github.com/arista-eosplus/rbeapi/pull/63) ([websitescenes](https://github.com/websitescenes))
162
- - varp and varp interfaces update. [\#60](https://github.com/arista-eosplus/rbeapi/pull/60) ([websitescenes](https://github.com/websitescenes))
170
+ - Adding feature routemap [\#63](https://github.com/arista-eosplus/rbeapi/pull/63) ([HuntBurdick](https://github.com/HuntBurdick))
171
+ - varp and varp interfaces update. [\#60](https://github.com/arista-eosplus/rbeapi/pull/60) ([HuntBurdick](https://github.com/HuntBurdick))
163
172
  - Fixed comment for value param for set\_lacp\_timeout method. [\#57](https://github.com/arista-eosplus/rbeapi/pull/57) ([devrobo](https://github.com/devrobo))
164
- - Feature user updates [\#56](https://github.com/arista-eosplus/rbeapi/pull/56) ([websitescenes](https://github.com/websitescenes))
165
- - Update max\_paths to maximum\_paths and max\_ecmp\_paths to maximum\_ecmp\_… [\#55](https://github.com/arista-eosplus/rbeapi/pull/55) ([websitescenes](https://github.com/websitescenes))
173
+ - Feature user updates [\#56](https://github.com/arista-eosplus/rbeapi/pull/56) ([HuntBurdick](https://github.com/HuntBurdick))
174
+ - Update max\_paths to maximum\_paths and max\_ecmp\_paths to maximum\_ecmp\_… [\#55](https://github.com/arista-eosplus/rbeapi/pull/55) ([HuntBurdick](https://github.com/HuntBurdick))
166
175
  - Fixed issues on the new bgp create call. [\#54](https://github.com/arista-eosplus/rbeapi/pull/54) ([devrobo](https://github.com/devrobo))
167
176
  - Added support for getting users information. [\#53](https://github.com/arista-eosplus/rbeapi/pull/53) ([devrobo](https://github.com/devrobo))
168
177
  - add dry-run mode [\#42](https://github.com/arista-eosplus/rbeapi/pull/42) ([kakkotetsu](https://github.com/kakkotetsu))
data/README.md CHANGED
@@ -2,19 +2,21 @@
2
2
 
3
3
  #### Table of Contents
4
4
 
5
- 1. [Overview] (#overview)
6
- * [Requirements] (#requirements)
7
- 2. [Getting Started] (#getting-started)
8
- * [Example eapi.conf File] (#example-eapiconf-file)
9
- * [Using rbeapi] (#using-rbeapi)
10
- 3. [Installation] (#installation)
11
- 4. [Upgrading] (#upgrading)
12
- 5. [Contributing] (#contributing)
13
- 6. [Testing] (#testing)
14
- 7. [License] (#license)
5
+ 1. [Overview](#overview)
6
+ * [Requirements](#requirements)
7
+ 2. [Getting Started](#getting-started)
8
+ * [Example eapi.conf File](#example-eapiconf-file)
9
+ * [Using rbeapi](#using-rbeapi)
10
+ 3. [Installation](#installation)
11
+ 4. [Upgrading](#upgrading)
12
+ 5. [Contributing](#contributing)
13
+ 6. [Testing](#testing)
14
+ 7. [License](#license)
15
15
 
16
16
  ## Build status
17
17
 
18
+ Rubygems.org: [![Gem Version](https://badge.fury.io/rb/rbeapi.svg)](https://badge.fury.io/rb/rbeapi)
19
+
18
20
  Style/package build: [![Start Build Status](https://revproxy.arista.com/eosplus/ci/buildStatus/icon?job=rbeapi_start&style=plastic)](https://revproxy.arista.com/eosplus/ci/job/rbeapi_start)
19
21
 
20
22
  Unit/System spec/coverage: [![Spec Build Status](https://revproxy.arista.com/eosplus/ci/buildStatus/icon?job=rbeapi_spec&style=plastic)](https://revproxy.arista.com/eosplus/ci/job/rbeapi_spec)
@@ -243,37 +245,37 @@ omnibus installation package in /opt/chef/bin/. For Chef, use the
243
245
  $ bundle install --path .bundle/gems/
244
246
  $ bundle exec rake all_rpms
245
247
  ...
246
- RPMs are available in rpms/noarch/
247
- Copy the RPMs to an EOS device then run the 'swix create' command.
248
- Examples:
249
- Puppet Open Source:
250
- cd /mnt/flash; \
251
- swix create rbeapi-1.0-1.swix \
252
- rubygem-rbeapi-1.0-1.eos4.noarch.rpm \
253
- rubygem-inifile-3.0.0-3.eos4.noarch.rpm \
254
- rubygem-netaddr-1.5.0-2.eos4.noarch.rpm \
255
- rubygem-net_http_unix-0.2.1-3.eos4.noarch.rpm
256
- Puppet-enterprise agent (3.x):
257
- cd/mnt/flash; \
258
- swix create rbeapi-puppet3-1.0-1.swix \
259
- rubygem-rbeapi-puppet3-1.0-1.eos4.noarch.rpm \
260
- rubygem-inifile-puppet3-3.0.0-3.eos4.noarch.rpm \
261
- rubygem-netaddr-puppet3-1.5.0-2.eos4.noarch.rpm
262
- Puppet-All-in-one agent (2015.x/4.x):
263
- cd/mnt/flash; \
264
- swix create rbeapi-puppet-aio-1.0-1.swix \
265
- rubygem-rbeapi-puppet-aio-1.0-1.eos4.noarch.rpm \
266
- rubygem-inifile-puppet-aio-3.0.0-3.eos4.noarch.rpm \
267
- rubygem-netaddr-puppet-aio-1.5.0-2.eos4.noarch.rpm \
268
- rubygem-net_http_unix-puppet-aio-0.2.1-3.eos4.noarch.rpm
269
-
270
- Chef client:
271
- cd /mnt/flash; \
272
- swix create rbeapi-chef-1.0-1.swix \
273
- rubygem-rbeapi-chef-1.0-1.eos4.noarch.rpm \
274
- rubygem-inifile-chef-3.0.0-5.eos4.noarch.rpm \
275
- rubygem-netaddr-chef-1.5.1-4.eos4.noarch.rpm \
276
- rubygem-net_http_unix-chef-0.2.2-5.eos4.noarch.rpm
248
+ RPMs are available in rpms/noarch/
249
+ Copy the RPMs to an EOS device then run the 'swix create' command.
250
+ Examples:
251
+ Puppet Open Source:
252
+ cd /mnt/flash; \
253
+ swix create rbeapi-1.2-1.swix \
254
+ rubygem-rbeapi-1.2-1.eos4.noarch.rpm \
255
+ rubygem-inifile-3.0.0-3.eos4.noarch.rpm \
256
+ rubygem-netaddr-1.5.0-2.eos4.noarch.rpm \
257
+ rubygem-net_http_unix-0.2.1-3.eos4.noarch.rpm
258
+ Puppet-enterprise agent (3.x):
259
+ cd/mnt/flash; \
260
+ swix create rbeapi-puppet3-1.2-1.swix \
261
+ rubygem-rbeapi-puppet3-1.2-1.eos4.noarch.rpm \
262
+ rubygem-inifile-puppet3-3.0.0-3.eos4.noarch.rpm \
263
+ rubygem-netaddr-puppet3-1.5.0-2.eos4.noarch.rpm
264
+ Puppet-All-in-one agent (2015.x/4.x):
265
+ cd/mnt/flash; \
266
+ swix create rbeapi-puppet-aio-1.2-1.swix \
267
+ rubygem-rbeapi-puppet-aio-1.2-1.eos4.noarch.rpm \
268
+ rubygem-inifile-puppet-aio-3.0.0-3.eos4.noarch.rpm \
269
+ rubygem-netaddr-puppet-aio-1.5.0-2.eos4.noarch.rpm \
270
+ rubygem-net_http_unix-puppet-aio-0.2.1-3.eos4.noarch.rpm
271
+
272
+ Chef client:
273
+ cd /mnt/flash; \
274
+ swix create rbeapi-chef-1.2-1.swix \
275
+ rubygem-rbeapi-chef-1.2-1.eos4.noarch.rpm \
276
+ rubygem-inifile-chef-3.0.0-5.eos4.noarch.rpm \
277
+ rubygem-netaddr-chef-1.5.1-4.eos4.noarch.rpm \
278
+ rubygem-net_http_unix-chef-0.2.2-5.eos4.noarch.rpm
277
279
  ```
278
280
 
279
281
  On EOS:
@@ -281,13 +283,13 @@ Copy the RPMs to an EOS device then run the 'swix create' command.
281
283
  Arista# copy <URI-to-RPMs> flash:
282
284
  Arista# bash
283
285
  -bash-4.1# cd /mnt/flash/
284
- -bash-4.1# swix create rbeapi-puppet3-1.0-1.swix \
285
- rubygem-rbeapi-puppet3-1.0-1.eos4.noarch.rpm \
286
+ -bash-4.1# swix create rbeapi-puppet3-1.2-1.swix \
287
+ rubygem-rbeapi-puppet3-1.2-1.eos4.noarch.rpm \
286
288
  rubygem-inifile-puppet3-3.0.0-1.eos4.noarch.rpm \
287
289
  rubygem-netaddr-puppet3-1.5.0-1.eos4.noarch.rpm
288
290
  -bash-4.1# exit
289
- Arista# copy flash:rbeapi-puppet3-1.0-1.swix extension:
290
- Arista# extension rbeapi-puppet3-1.0-1.swix
291
+ Arista# copy flash:rbeapi-puppet3-1.2-1.swix extension:
292
+ Arista# extension rbeapi-puppet3-1.2-1.swix
291
293
  Arista# copy installed-extensions boot-extensions
292
294
  ```
293
295
 
@@ -295,8 +297,8 @@ Copy the RPMs to an EOS device then run the 'swix create' command.
295
297
 
296
298
  On EOS:
297
299
  ```
298
- Arista# no extension pe-rbeapi-0.3.0-1.swix
299
- Arista# extension rbeapi-puppet3-1.0-1.swix
300
+ Arista# no extension pe-rbeapi-1.1.0-1.swix
301
+ Arista# extension rbeapi-puppet3-1.2-1.swix
300
302
  Arista# copy installed-extensions boot-extensions
301
303
  ```
302
304
 
data/Rakefile CHANGED
@@ -7,10 +7,12 @@ task :build do
7
7
  system 'gem build rbeapi.gemspec'
8
8
  end
9
9
 
10
+ # rubocop:disable Style/FormatStringToken
10
11
  RPM_OPTS = '--define "_topdir %(pwd)/rpmbuild" --define "_builddir ' \
11
12
  '%{_topdir}" --define "_rpmdir %(pwd)/rpms" --define "_srcrpmdir ' \
12
13
  '%{_rpmdir}" --define "_sourcedir %(pwd)" --define "_specdir %(pwd)" '\
13
14
  '-bb'.freeze
15
+ # rubocop:enable Style/FormatStringToken
14
16
  desc 'Generate regular and puppet-enterprise rbeapi RPMs for EOS'
15
17
  task rpm: :build do
16
18
  system "sed -e 's/^Version:.*/Version: #{Rbeapi::VERSION}/g' " \
@@ -0,0 +1,157 @@
1
+ #
2
+ # Copyright (c) 2017, 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 'rbeapi/api'
33
+
34
+ ##
35
+ # Rbeapi toplevel namespace.
36
+ module Rbeapi
37
+ ##
38
+ # Api is module namespace for working with the EOS command API.
39
+ module Api
40
+ ##
41
+ # The Iphosts class manages hosts entries on an EOS node.
42
+ class Iphosts < Entity
43
+ ##
44
+ # get returns the current ip host configuration hash extracted from the
45
+ # nodes running configuration.
46
+ #
47
+ # @example
48
+ # {
49
+ # hosts: array<strings>
50
+ # }
51
+ #
52
+ # @return [Hash<Symbol, Object>] Returns the ip host resource as a hash
53
+ # object from the nodes current configuration.
54
+ def get(name)
55
+ iphost = config.scan(/^ip host #{name} ((?:\d+\.\d+\.\d+\.\d+[ ]?)*)/)
56
+ return nil unless iphost && iphost[0]
57
+ parse_host_entry(name, iphost[0])
58
+ end
59
+
60
+ ##
61
+ # getall returns a collection of ip host resource hashes from the nodes
62
+ # running configuration. The ip host resource collection hash is keyed
63
+ # by the unique host name.
64
+ #
65
+ # @example
66
+ # [
67
+ # <host>: {
68
+ # ipaddress: <string>
69
+ # },
70
+ # <host>: {
71
+ # ipaddress: <string>
72
+ # },
73
+ # ...
74
+ # ]
75
+ #
76
+ # @return [Hash<Symbol, Object>] Returns a hash that represents the
77
+ # entire ip host collection from the nodes running configuration. If
78
+ # there are no ip hosts configured, this method will return an empty
79
+ # hash.
80
+ def getall
81
+ entries = config.scan(/^ip host ([^\s]+) (\d+\.\d+\.\d+\.\d+)/)
82
+ response = {}
83
+ entries.each do |host|
84
+ response[host[0]] = get host[0]
85
+ end
86
+ response
87
+ end
88
+
89
+ ##
90
+ # parse_host_entry maps the tokens found to the hash entries.
91
+ #
92
+ # @api private
93
+ #
94
+ # @param host [Array] An array of values returned from the regular
95
+ # expression scan of the hosts configuration.
96
+ #
97
+ # @return [Hash<Symbol, Object>] Returns the resource hash attribute.
98
+ def parse_host_entry(host, ipaddress)
99
+ hsh = {}
100
+ hsh[:name] = host
101
+ hsh[:ipaddress] = ipaddress[0].split
102
+ hsh
103
+ end
104
+ private :parse_host_entry
105
+
106
+ ##
107
+ # create will create a ip host entry in the nodes current
108
+ # configuration with the specified address.
109
+ #
110
+ # @since eos_version 4.13.7M
111
+ #
112
+ # ===Commands
113
+ # ip host <name> <address>
114
+ #
115
+ # @param name [String] The name of the host.
116
+ #
117
+ # @param opts [hash] Optional keyword arguments.
118
+ #
119
+ # @option opts ipaddress [String] Configures the host ip address
120
+ #
121
+ # @return [Boolean] Returns true if the command completed successfully.
122
+ def create(name, opts = {})
123
+ ipaddress = opts.fetch(:ipaddress, NIL)
124
+ # rubocop:disable Style/GuardClause, Style/ClassCheck
125
+ if ipaddress.kind_of?(Array)
126
+ if ipaddress.all? { |x| x =~ /(\w+\.\d+\.\d+\.\d+)/ }
127
+ ips = opts[:ipaddress].join(' ')
128
+ cmd = "ip host #{name} #{ips}"
129
+ configure(cmd)
130
+ else
131
+ fail ArgumentError, 'option ipaddress must be a valid IP'
132
+ end
133
+ else
134
+ fail ArgumentError, 'no argument given'
135
+ end
136
+ # rubocop:enable Style/GuardClause, Style/ClassCheck
137
+ end
138
+
139
+ ##
140
+ # delete will delete an existing ip host entry from the nodes current
141
+ # running configuration. If the delete method is called and the host
142
+ # entry does not exist, this method will succeed.
143
+ #
144
+ # @since eos_version 4.13.7M
145
+ #
146
+ # ===Commands
147
+ # no ip host <name>
148
+ #
149
+ # @param name [String] The host name entry to delete from the node.
150
+ #
151
+ # @return [Boolean] Returns true if the command completed successfully.
152
+ def delete(name)
153
+ configure("no ip host #{name}")
154
+ end
155
+ end
156
+ end
157
+ end