rbeapi 0.5.1 → 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/CHANGELOG.md +211 -76
  2. data/Gemfile +14 -3
  3. data/README.md +74 -38
  4. data/Rakefile +38 -17
  5. data/gems/inifile/inifile.spec.tmpl +31 -4
  6. data/gems/net_http_unix/net_http_unix.spec.tmpl +34 -8
  7. data/gems/netaddr/netaddr.spec.tmpl +31 -5
  8. data/guide/getting-started.rst +95 -64
  9. data/guide/installation.rst +27 -6
  10. data/guide/release-notes.rst +5 -1
  11. data/guide/testing.rst +5 -2
  12. data/guide/upgrading.rst +2 -0
  13. data/lib/rbeapi/api/dns.rb +8 -2
  14. data/lib/rbeapi/api/interfaces.rb +107 -21
  15. data/lib/rbeapi/api/ipinterfaces.rb +48 -0
  16. data/lib/rbeapi/api/prefixlists.rb +53 -23
  17. data/lib/rbeapi/api/routemaps.rb +11 -0
  18. data/lib/rbeapi/api/stp.rb +6 -3
  19. data/lib/rbeapi/api/switchports.rb +5 -11
  20. data/lib/rbeapi/api/system.rb +1 -1
  21. data/lib/rbeapi/api/users.rb +2 -0
  22. data/lib/rbeapi/api/varp.rb +6 -0
  23. data/lib/rbeapi/api/vlans.rb +44 -0
  24. data/lib/rbeapi/api/vrrp.rb +13 -0
  25. data/lib/rbeapi/client.rb +19 -4
  26. data/lib/rbeapi/switchconfig.rb +330 -0
  27. data/lib/rbeapi/version.rb +1 -1
  28. data/rbeapi.gemspec +2 -0
  29. data/rbeapi.spec.tmpl +30 -3
  30. data/spec/fixtures/.gitignore +1 -0
  31. data/spec/support/matchers/switch_config_sections.rb +80 -0
  32. data/spec/system/rbeapi/api/interfaces_base_spec.rb +32 -3
  33. data/spec/system/rbeapi/api/interfaces_ethernet_spec.rb +56 -8
  34. data/spec/system/rbeapi/api/interfaces_portchannel_spec.rb +33 -1
  35. data/spec/system/rbeapi/api/interfaces_vxlan_spec.rb +27 -0
  36. data/spec/system/rbeapi/api/ipinterfaces_spec.rb +34 -1
  37. data/spec/system/rbeapi/api/prefixlists_spec.rb +198 -0
  38. data/spec/system/rbeapi/api/stp_instances_spec.rb +49 -5
  39. data/spec/system/rbeapi/api/switchports_spec.rb +15 -9
  40. data/spec/system/rbeapi/api/vlans_spec.rb +46 -0
  41. data/spec/unit/rbeapi/api/interfaces/base_spec.rb +1 -1
  42. data/spec/unit/rbeapi/api/interfaces/ethernet_spec.rb +1 -1
  43. data/spec/unit/rbeapi/api/interfaces/portchannel_spec.rb +9 -2
  44. data/spec/unit/rbeapi/api/interfaces/vxlan_spec.rb +1 -1
  45. data/spec/unit/rbeapi/api/prefixlists/default_spec.rb +202 -0
  46. data/spec/unit/rbeapi/api/prefixlists/fixture_prefixlists.text +11 -0
  47. data/spec/unit/rbeapi/api/routemaps/default_spec.rb +5 -0
  48. data/spec/unit/rbeapi/api/switchports/default_spec.rb +4 -4
  49. data/spec/unit/rbeapi/api/system/default_spec.rb +5 -0
  50. data/spec/unit/rbeapi/api/system/fixture_system.text +1 -0
  51. data/spec/unit/rbeapi/api/vlans/default_spec.rb +30 -0
  52. data/spec/unit/rbeapi/api/vrrp/default_spec.rb +10 -0
  53. data/spec/unit/rbeapi/client_spec.rb +42 -0
  54. data/spec/unit/rbeapi/switchconfig2_spec.rb +119 -0
  55. data/spec/unit/rbeapi/switchconfig3_spec.rb +125 -0
  56. data/spec/unit/rbeapi/switchconfig_spec.rb +335 -0
  57. metadata +21 -7
data/CHANGELOG.md CHANGED
@@ -1,76 +1,211 @@
1
- Ruby Client for eAPI
2
- ====================
3
-
4
- ## v0.5.1, February, 2016
5
-
6
- - Fix issue where vlans API was not returning all configured vlan trunk_groups.
7
-
8
- ## v0.5.0, January, 2016
9
-
10
- - Add optional ‘mode’ parameter to set_members() method in port-channel
11
- interfaces API
12
- - Add support for trunk groups
13
- - Ensure multiple connections based on the wildcard settings do not clobber
14
- each other.
15
- - Add ‘terminal’ to the ‘configure’ command to workaround AAA issue
16
- - Fix issue where ‘enablepw’ in the eapi.conf was not properly used
17
- - Catch errors and syslog them when parsing eapi conf file.
18
- In the event of an unparsable eapi.conf, a syslog warning will be generated
19
- but the app will continue to attempt to utilize the default localhost conn.
20
- - Ensure that nil is returned when getting nonexistent username
21
- - Ensure all parse methods are private
22
- - Add tests for timeout values
23
- - Update framework tests
24
- - Add unit tests for switchports
25
- - Address code coverage gaps
26
-
27
-
28
- ## v0.4.0, November, 2015
29
-
30
- - New users API
31
- - New routemap API
32
- - New vrrp API
33
- - BGP API: Add support for maximum_paths and maximum_ecmp_paths
34
- - System API: add support for managing the global EOS ‘ip routing’ setting
35
- - Updated RPM/SWIX packaging to handle Puppet All-In-One (AIO) agent paths
36
- New package names are: rbeapi, rbeapi-puppet3 (formerly pe-puppet),
37
- and rbeapi-puppet-aio
38
- - Fixed port-channel get_members() issue with EOS 4.15 and above.
39
- - Fixed issue with the eapi.conf wildcard connection
40
- - Fixed issue that would cause a traceback when searching for eapi.conf if
41
- $HOME was not set
42
-
43
-
44
- ## v0.3.0, August, 2015
45
-
46
- - API Change: Eliminated overloading the value option in command_builder. When
47
- the value is set it is used as a value in building the command. When the value
48
- is false then the command is negated. This doesn’t allow a value to be
49
- specified when the command is negated.
50
- - APIs updated to take advantage of command_builder()
51
- - Add staticroutes API
52
- - Fix issue which would cause the module to fail to load when $HOME was not set
53
- - Fix builds (all_rpms) to work on Ubuntu
54
- - Fix rbeapi rubygem RPM requires
55
-
56
- ## v0.2.0, July, 2015
57
-
58
- - Change the default transport to https
59
- - Add new dependency: rubygem-netaddr
60
- - Add [api.acl] with support for standard ACLs
61
- - Add capability to build all necessary RPMS for EOS from the Rakefile
62
- - Add `[connection:*]` syntax to eapi.conf to provide defaults for unspecified hosts
63
- - Add configurable read and open timeouts
64
- - Add new methods to the Entity class
65
- - Add new VNI mapping to VxLan interface
66
- - Add port-fast support to [api.stp]
67
- - Fix issue with sending calls to interface instance by name
68
- - Fix [api.vlans] issue parsing vlan name with a `-` character
69
- - Fix issue where [api.interfaces] could return duplicate port-channel members on MLAG interfaces
70
- - Fix missing OpenSSL require
71
- - Fix Rubocop warnings
72
-
73
-
74
- ## v0.1.0, 2/25/2015
75
-
76
- - Initial public release of rbeapi
1
+ # Change Log
2
+
3
+ ## [1.0](https://github.com/arista-eosplus/rbeapi/tree/1.0) (2016-09-22)
4
+ [Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v0.5.1...1.0)
5
+
6
+ **Implemented enhancements:**
7
+
8
+ - Need to validate value keyword in set methods when array [\#40](https://github.com/arista-eosplus/rbeapi/issues/40)
9
+ - Limit rubocop version when running ruby 1.9 [\#125](https://github.com/arista-eosplus/rbeapi/pull/125) ([jerearista](https://github.com/jerearista))
10
+
11
+ **Fixed bugs:**
12
+
13
+ - the "running\_config" api error [\#127](https://github.com/arista-eosplus/rbeapi/issues/127)
14
+ - system API may return incorrect value for iprouting when VRF present [\#123](https://github.com/arista-eosplus/rbeapi/issues/123)
15
+ - SWIX does not uninstall cleanly [\#118](https://github.com/arista-eosplus/rbeapi/issues/118)
16
+ - vlans API only returns first trunk\_group [\#113](https://github.com/arista-eosplus/rbeapi/issues/113)
17
+ - Bugfix - system :iprouting only picks up global ip routing, ignoring VRFs [\#124](https://github.com/arista-eosplus/rbeapi/pull/124) ([jerearista](https://github.com/jerearista))
18
+
19
+ **Closed issues:**
20
+
21
+ - multicast group parsing for vxlan interfaces fails [\#142](https://github.com/arista-eosplus/rbeapi/issues/142)
22
+ - Should switchconfig inject exit command at end of a section \(child\)? [\#136](https://github.com/arista-eosplus/rbeapi/issues/136)
23
+ - SwitchConfig parse needs to account for irregular spacing in config banner [\#135](https://github.com/arista-eosplus/rbeapi/issues/135)
24
+
25
+ **Merged pull requests:**
26
+
27
+ - Add json option to get\_config [\#151](https://github.com/arista-eosplus/rbeapi/pull/151) ([jerearista](https://github.com/jerearista))
28
+ - Handle more multiline config commands [\#150](https://github.com/arista-eosplus/rbeapi/pull/150) ([jerearista](https://github.com/jerearista))
29
+ - Ensure get\_config, running\_config, and startup\_config return sane output [\#149](https://github.com/arista-eosplus/rbeapi/pull/149) ([jerearista](https://github.com/jerearista))
30
+ - Switchconfig: handle non-standard indentation on banners [\#148](https://github.com/arista-eosplus/rbeapi/pull/148) ([jerearista](https://github.com/jerearista))
31
+ - add spec tests for prefix lists [\#147](https://github.com/arista-eosplus/rbeapi/pull/147) ([mrvinti](https://github.com/mrvinti))
32
+ - Add switchconfig feature [\#146](https://github.com/arista-eosplus/rbeapi/pull/146) ([jerearista](https://github.com/jerearista))
33
+ - Fix test issues [\#145](https://github.com/arista-eosplus/rbeapi/pull/145) ([jerearista](https://github.com/jerearista))
34
+ - fix parse\_instances to return the default instances and add tests [\#144](https://github.com/arista-eosplus/rbeapi/pull/144) ([rknaus](https://github.com/rknaus))
35
+ - fix issue \#142 - multicast group parsing when not configured [\#143](https://github.com/arista-eosplus/rbeapi/pull/143) ([mrvinti](https://github.com/mrvinti))
36
+ - add switchport allowed vlan range capability [\#141](https://github.com/arista-eosplus/rbeapi/pull/141) ([rknaus](https://github.com/rknaus))
37
+ - fix speed functions and add lacp port-priority functions [\#139](https://github.com/arista-eosplus/rbeapi/pull/139) ([rknaus](https://github.com/rknaus))
38
+ - Fix rpm uninstall issue \#118 [\#134](https://github.com/arista-eosplus/rbeapi/pull/134) ([jerearista](https://github.com/jerearista))
39
+ - Switchconfig rpms for chef [\#130](https://github.com/arista-eosplus/rbeapi/pull/130) ([jerearista](https://github.com/jerearista))
40
+ - Switchconfig zap empty lines [\#128](https://github.com/arista-eosplus/rbeapi/pull/128) ([jerearista](https://github.com/jerearista))
41
+ - Validate array param options [\#126](https://github.com/arista-eosplus/rbeapi/pull/126) ([websitescenes](https://github.com/websitescenes))
42
+ - Wip load interval v2 [\#122](https://github.com/arista-eosplus/rbeapi/pull/122) ([n1cn0c](https://github.com/n1cn0c))
43
+ - Created vlans set\_trunk\_groups method. [\#119](https://github.com/arista-eosplus/rbeapi/pull/119) ([devrobo](https://github.com/devrobo))
44
+
45
+ ## [v0.5.1](https://github.com/arista-eosplus/rbeapi/tree/v0.5.1) (2016-02-16)
46
+ [Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v0.5.0...v0.5.1)
47
+
48
+ **Implemented enhancements:**
49
+
50
+ - get\_connect should raise an error instead of returning nil if no connection is found [\#31](https://github.com/arista-eosplus/rbeapi/issues/31)
51
+ - Add build badges to the README.md [\#108](https://github.com/arista-eosplus/rbeapi/pull/108) ([jerearista](https://github.com/jerearista))
52
+
53
+ **Fixed bugs:**
54
+
55
+ - PeerEthernet regex issue [\#109](https://github.com/arista-eosplus/rbeapi/issues/109)
56
+
57
+ **Closed issues:**
58
+
59
+ - Add support for commands with input [\#100](https://github.com/arista-eosplus/rbeapi/issues/100)
60
+ - Wildcard connection config gets clobbered [\#86](https://github.com/arista-eosplus/rbeapi/issues/86)
61
+
62
+ **Merged pull requests:**
63
+
64
+ - Release 0.5.1 to master [\#117](https://github.com/arista-eosplus/rbeapi/pull/117) ([jerearista](https://github.com/jerearista))
65
+ - Release 0.5.1 [\#116](https://github.com/arista-eosplus/rbeapi/pull/116) ([jerearista](https://github.com/jerearista))
66
+ - Release 0.5.1 [\#115](https://github.com/arista-eosplus/rbeapi/pull/115) ([jerearista](https://github.com/jerearista))
67
+ - Only first trunk group was being returned. [\#114](https://github.com/arista-eosplus/rbeapi/pull/114) ([devrobo](https://github.com/devrobo))
68
+ - Add support for DEFAULT section to eapi config file. [\#111](https://github.com/arista-eosplus/rbeapi/pull/111) ([devrobo](https://github.com/devrobo))
69
+ - Remove getter for timeouts and use attr\_reader instead. [\#107](https://github.com/arista-eosplus/rbeapi/pull/107) ([websitescenes](https://github.com/websitescenes))
70
+ - Added doc for trunk groups to get. [\#106](https://github.com/arista-eosplus/rbeapi/pull/106) ([devrobo](https://github.com/devrobo))
71
+ - Tightening up documentation. [\#105](https://github.com/arista-eosplus/rbeapi/pull/105) ([websitescenes](https://github.com/websitescenes))
72
+ - Added support for setting system banners. [\#104](https://github.com/arista-eosplus/rbeapi/pull/104) ([devrobo](https://github.com/devrobo))
73
+
74
+ ## [v0.5.0](https://github.com/arista-eosplus/rbeapi/tree/v0.5.0) (2016-01-12)
75
+ [Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v0.4.0...v0.5.0)
76
+
77
+ **Implemented enhancements:**
78
+
79
+ - Improve VARP and VARP interface parsing [\#79](https://github.com/arista-eosplus/rbeapi/issues/79)
80
+ - Need system tests for all api modules [\#66](https://github.com/arista-eosplus/rbeapi/issues/66)
81
+ - rbeapi coding documentation incomplete [\#62](https://github.com/arista-eosplus/rbeapi/issues/62)
82
+ - switchport api should support trunk groups [\#38](https://github.com/arista-eosplus/rbeapi/issues/38)
83
+ - Need units tests for framework [\#30](https://github.com/arista-eosplus/rbeapi/issues/30)
84
+ - Need unit test to verify read and open timeout in eapi conf file override default [\#29](https://github.com/arista-eosplus/rbeapi/issues/29)
85
+ - Unit tests for switchports [\#94](https://github.com/arista-eosplus/rbeapi/pull/94) ([websitescenes](https://github.com/websitescenes))
86
+ - Ensure all parse methods are private. [\#93](https://github.com/arista-eosplus/rbeapi/pull/93) ([websitescenes](https://github.com/websitescenes))
87
+ - test timeout values [\#92](https://github.com/arista-eosplus/rbeapi/pull/92) ([websitescenes](https://github.com/websitescenes))
88
+ - Relax check on getall entries [\#91](https://github.com/arista-eosplus/rbeapi/pull/91) ([devrobo](https://github.com/devrobo))
89
+ - Update framework tests [\#90](https://github.com/arista-eosplus/rbeapi/pull/90) ([websitescenes](https://github.com/websitescenes))
90
+ - Add lacp\_mode option when setting port-channel members. [\#89](https://github.com/arista-eosplus/rbeapi/pull/89) ([devrobo](https://github.com/devrobo))
91
+ - Added support for trunk groups. [\#88](https://github.com/arista-eosplus/rbeapi/pull/88) ([devrobo](https://github.com/devrobo))
92
+ - Add basic framework tests. [\#85](https://github.com/arista-eosplus/rbeapi/pull/85) ([websitescenes](https://github.com/websitescenes))
93
+ - Address code coverage gaps [\#84](https://github.com/arista-eosplus/rbeapi/pull/84) ([websitescenes](https://github.com/websitescenes))
94
+
95
+ **Fixed bugs:**
96
+
97
+ - failure when eapi.conf is not formatted correctly [\#82](https://github.com/arista-eosplus/rbeapi/issues/82)
98
+ - Enable password setting in the .eapi.conf file not honored [\#72](https://github.com/arista-eosplus/rbeapi/issues/72)
99
+ - API interfaces should accept an lacp\_mode to configure for port-channel members [\#58](https://github.com/arista-eosplus/rbeapi/issues/58)
100
+ - Copy configuration entry before modifying with connection specific info. [\#101](https://github.com/arista-eosplus/rbeapi/pull/101) ([devrobo](https://github.com/devrobo))
101
+ - 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))
102
+ - Set enable password for a connection. [\#96](https://github.com/arista-eosplus/rbeapi/pull/96) ([devrobo](https://github.com/devrobo))
103
+ - Catch errors and syslog them when parsing eapi conf file. [\#95](https://github.com/arista-eosplus/rbeapi/pull/95) ([devrobo](https://github.com/devrobo))
104
+ - 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))
105
+
106
+ **Merged pull requests:**
107
+
108
+ - Update documentation [\#97](https://github.com/arista-eosplus/rbeapi/pull/97) ([websitescenes](https://github.com/websitescenes))
109
+
110
+ ## [v0.4.0](https://github.com/arista-eosplus/rbeapi/tree/v0.4.0) (2015-11-21)
111
+ [Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v0.3.0...v0.4.0)
112
+
113
+ **Implemented enhancements:**
114
+
115
+ - Add users API [\#78](https://github.com/arista-eosplus/rbeapi/issues/78)
116
+ - Support BGP maximum paths [\#77](https://github.com/arista-eosplus/rbeapi/issues/77)
117
+ - Feature puppet4 swix [\#74](https://github.com/arista-eosplus/rbeapi/pull/74) ([jerearista](https://github.com/jerearista))
118
+ - Add argument checking for the track hash. [\#70](https://github.com/arista-eosplus/rbeapi/pull/70) ([devrobo](https://github.com/devrobo))
119
+ - Fix spec test issue from pull request \#61 [\#69](https://github.com/arista-eosplus/rbeapi/pull/69) ([devrobo](https://github.com/devrobo))
120
+ - Update RPM packaging to accomodate Puppet 4 AIO agent [\#68](https://github.com/arista-eosplus/rbeapi/pull/68) ([jerearista](https://github.com/jerearista))
121
+ - Update RPM packaging names, requirements, and paths due to Puppet 4 [\#65](https://github.com/arista-eosplus/rbeapi/pull/65) ([jerearista](https://github.com/jerearista))
122
+ - Add support for getting and setting maximum paths. [\#52](https://github.com/arista-eosplus/rbeapi/pull/52) ([devrobo](https://github.com/devrobo))
123
+
124
+ **Fixed bugs:**
125
+
126
+ - api interfaces get\_members\(\) passes format: instead of encoding: to enable\(\) [\#59](https://github.com/arista-eosplus/rbeapi/issues/59)
127
+ - bgp API should return nil instead of an empty hash [\#50](https://github.com/arista-eosplus/rbeapi/issues/50)
128
+ - Changed bgp.rb get routine to return nil if the config could not be o… [\#67](https://github.com/arista-eosplus/rbeapi/pull/67) ([devrobo](https://github.com/devrobo))
129
+ - Correct option to request 'text' results [\#61](https://github.com/arista-eosplus/rbeapi/pull/61) ([jerearista](https://github.com/jerearista))
130
+
131
+ **Merged pull requests:**
132
+
133
+ - Merge develop to master for Release 0.4.0 [\#81](https://github.com/arista-eosplus/rbeapi/pull/81) ([jerearista](https://github.com/jerearista))
134
+ - Release 0.4.0 [\#80](https://github.com/arista-eosplus/rbeapi/pull/80) ([jerearista](https://github.com/jerearista))
135
+ - Update rubocop version and rectify related test failures. [\#76](https://github.com/arista-eosplus/rbeapi/pull/76) ([websitescenes](https://github.com/websitescenes))
136
+ - Add method to enable ip routing to the system API [\#75](https://github.com/arista-eosplus/rbeapi/pull/75) ([websitescenes](https://github.com/websitescenes))
137
+ - Added vrrp api module and unit tests. [\#64](https://github.com/arista-eosplus/rbeapi/pull/64) ([devrobo](https://github.com/devrobo))
138
+ - Adding feature routemap [\#63](https://github.com/arista-eosplus/rbeapi/pull/63) ([websitescenes](https://github.com/websitescenes))
139
+ - varp and varp interfaces update. [\#60](https://github.com/arista-eosplus/rbeapi/pull/60) ([websitescenes](https://github.com/websitescenes))
140
+ - Fixed comment for value param for set\_lacp\_timeout method. [\#57](https://github.com/arista-eosplus/rbeapi/pull/57) ([devrobo](https://github.com/devrobo))
141
+ - Feature user updates [\#56](https://github.com/arista-eosplus/rbeapi/pull/56) ([websitescenes](https://github.com/websitescenes))
142
+ - 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))
143
+ - Fixed issues on the new bgp create call. [\#54](https://github.com/arista-eosplus/rbeapi/pull/54) ([devrobo](https://github.com/devrobo))
144
+ - Added support for getting users information. [\#53](https://github.com/arista-eosplus/rbeapi/pull/53) ([devrobo](https://github.com/devrobo))
145
+ - add dry-run mode [\#42](https://github.com/arista-eosplus/rbeapi/pull/42) ([kakkotetsu](https://github.com/kakkotetsu))
146
+
147
+ ## [v0.3.0](https://github.com/arista-eosplus/rbeapi/tree/v0.3.0) (2015-08-24)
148
+ [Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v0.2.0...v0.3.0)
149
+
150
+ **Fixed bugs:**
151
+
152
+ - rbeapi exits if $HOME is not set [\#46](https://github.com/arista-eosplus/rbeapi/issues/46)
153
+
154
+ **Merged pull requests:**
155
+
156
+ - Release 0.3.0 to master [\#51](https://github.com/arista-eosplus/rbeapi/pull/51) ([jerearista](https://github.com/jerearista))
157
+ - Release 0.3.0 [\#49](https://github.com/arista-eosplus/rbeapi/pull/49) ([jerearista](https://github.com/jerearista))
158
+ - Only search home directory if HOME is defined ISSUE \#46 [\#48](https://github.com/arista-eosplus/rbeapi/pull/48) ([devrobo](https://github.com/devrobo))
159
+ - set\_shutdown needs to negate the enable option. [\#47](https://github.com/arista-eosplus/rbeapi/pull/47) ([devrobo](https://github.com/devrobo))
160
+ - Feature staticroutes [\#45](https://github.com/arista-eosplus/rbeapi/pull/45) ([jerearista](https://github.com/jerearista))
161
+ - Broaden the regex matching for portchannel member interfaces [\#44](https://github.com/arista-eosplus/rbeapi/pull/44) ([jerearista](https://github.com/jerearista))
162
+ - Update rpm requires sections for rbeapi [\#43](https://github.com/arista-eosplus/rbeapi/pull/43) ([jerearista](https://github.com/jerearista))
163
+ - Added support for BGP along with unit tests. [\#41](https://github.com/arista-eosplus/rbeapi/pull/41) ([devrobo](https://github.com/devrobo))
164
+ - Eliminate overloading value option in command\_builder. [\#39](https://github.com/arista-eosplus/rbeapi/pull/39) ([devrobo](https://github.com/devrobo))
165
+
166
+ ## [v0.2.0](https://github.com/arista-eosplus/rbeapi/tree/v0.2.0) (2015-07-08)
167
+ [Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v0.1.0...v0.2.0)
168
+
169
+ **Implemented enhancements:**
170
+
171
+ - Add \[connection:\*\] to eapi.conf syntax [\#18](https://github.com/arista-eosplus/rbeapi/issues/18)
172
+ - can't rake all\_rpms [\#11](https://github.com/arista-eosplus/rbeapi/issues/11)
173
+ - add read\_timeout and open\_timeout to client.rb [\#10](https://github.com/arista-eosplus/rbeapi/issues/10)
174
+ - Add netaddr rubygem rpm [\#35](https://github.com/arista-eosplus/rbeapi/pull/35) ([jerearista](https://github.com/jerearista))
175
+ - Fix RPM packaging for Ubuntu systems. Fixes \#11 [\#14](https://github.com/arista-eosplus/rbeapi/pull/14) ([jerearista](https://github.com/jerearista))
176
+
177
+ **Fixed bugs:**
178
+
179
+ - rbeapi swix/rpms fail to install completely on EOS [\#34](https://github.com/arista-eosplus/rbeapi/issues/34)
180
+ - interfaces API may appear to return duplicate port-channel members on MLAG interfaces [\#16](https://github.com/arista-eosplus/rbeapi/issues/16)
181
+ - connection profile name is not copied to host attribute [\#6](https://github.com/arista-eosplus/rbeapi/issues/6)
182
+ - NoMethodError when accessing a vlan-name containing a '-' character [\#5](https://github.com/arista-eosplus/rbeapi/issues/5)
183
+
184
+ **Merged pull requests:**
185
+
186
+ - Release 0.2.0 to master [\#37](https://github.com/arista-eosplus/rbeapi/pull/37) ([jerearista](https://github.com/jerearista))
187
+ - Release 0.2.0 version and doc updates [\#36](https://github.com/arista-eosplus/rbeapi/pull/36) ([jerearista](https://github.com/jerearista))
188
+ - Change class name and hash key names. [\#33](https://github.com/arista-eosplus/rbeapi/pull/33) ([devrobo](https://github.com/devrobo))
189
+ - name path through if default connection is used [\#32](https://github.com/arista-eosplus/rbeapi/pull/32) ([kakkotetsu](https://github.com/kakkotetsu))
190
+ - Added API for standard ACLs with unit and system test. [\#28](https://github.com/arista-eosplus/rbeapi/pull/28) ([devrobo](https://github.com/devrobo))
191
+ - Add \[connection:\*\] to eapi.conf syntax Issue \#18 [\#27](https://github.com/arista-eosplus/rbeapi/pull/27) ([devrobo](https://github.com/devrobo))
192
+ - Add read\_timeout and open\_timeout to client.rb Issue 10 [\#26](https://github.com/arista-eosplus/rbeapi/pull/26) ([devrobo](https://github.com/devrobo))
193
+ - Set host key to connection profile name if host key not set. ISSUE 6 [\#25](https://github.com/arista-eosplus/rbeapi/pull/25) ([devrobo](https://github.com/devrobo))
194
+ - Changed default transport to https to match README.md [\#24](https://github.com/arista-eosplus/rbeapi/pull/24) ([devrobo](https://github.com/devrobo))
195
+ - Fixes to the rbeabi library [\#23](https://github.com/arista-eosplus/rbeapi/pull/23) ([devrobo](https://github.com/devrobo))
196
+ - Cleanup spec tests, all tests are passing. [\#21](https://github.com/arista-eosplus/rbeapi/pull/21) ([devrobo](https://github.com/devrobo))
197
+ - Doc fixes [\#20](https://github.com/arista-eosplus/rbeapi/pull/20) ([devrobo](https://github.com/devrobo))
198
+ - Addressed RuboCop reported issues. [\#19](https://github.com/arista-eosplus/rbeapi/pull/19) ([devrobo](https://github.com/devrobo))
199
+ - Fixes \#16 - Change port-channel members regex to anchor on word-boundary. [\#17](https://github.com/arista-eosplus/rbeapi/pull/17) ([jerearista](https://github.com/jerearista))
200
+ - Rubocop driven cleanup. Spec tests still need to be fixed. [\#12](https://github.com/arista-eosplus/rbeapi/pull/12) ([devrobo](https://github.com/devrobo))
201
+ - add HTTP read\_timeout [\#9](https://github.com/arista-eosplus/rbeapi/pull/9) ([kakkotetsu](https://github.com/kakkotetsu))
202
+ - Add support for spanning tree portfast\_type. [\#8](https://github.com/arista-eosplus/rbeapi/pull/8) ([devrobo](https://github.com/devrobo))
203
+ - Fix typo in set\_flowcontrol method. [\#7](https://github.com/arista-eosplus/rbeapi/pull/7) ([devrobo](https://github.com/devrobo))
204
+ - Feature - generate RPMs and instructions for SWIX files [\#4](https://github.com/arista-eosplus/rbeapi/pull/4) ([jerearista](https://github.com/jerearista))
205
+ - Fix a couple typos, minor formatting in README.md [\#3](https://github.com/arista-eosplus/rbeapi/pull/3) ([brandt](https://github.com/brandt))
206
+ - Fix missing OpenSSL require [\#2](https://github.com/arista-eosplus/rbeapi/pull/2) ([brandt](https://github.com/brandt))
207
+
208
+ ## [v0.1.0](https://github.com/arista-eosplus/rbeapi/tree/v0.1.0) (2015-02-25)
209
+
210
+
211
+ \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
data/Gemfile CHANGED
@@ -1,12 +1,10 @@
1
1
  source ENV['GEM_SOURCE'] || 'https://rubygems.org'
2
2
 
3
3
  gem 'inifile'
4
- gem 'json'
5
4
  gem 'net_http_unix'
6
5
  gem 'netaddr'
7
6
 
8
7
  group :development do
9
- gem 'rubocop', '>=0.35.1'
10
8
  gem 'guard'
11
9
  gem 'guard-rspec'
12
10
  gem 'guard-rubocop'
@@ -24,10 +22,23 @@ group :development, :test do
24
22
  gem 'pry', require: false
25
23
  gem 'pry-doc', require: false
26
24
  gem 'pry-stack_explorer', require: false
27
- gem 'rbeapi', '0.5.1', path: '.'
25
+ gem 'rbeapi', '1.0', path: '.'
28
26
  gem 'ci_reporter_rspec', require: false
29
27
  gem 'simplecov-json', require: false
30
28
  gem 'simplecov-rcov', require: false
31
29
  end
32
30
 
31
+ # Rubocop > 0.37 requires a gem that only works with ruby 2.x
32
+ if RUBY_VERSION.to_f < 2.0
33
+ gem 'json', '<2.0'
34
+ group :development, :test do
35
+ gem 'rubocop', '>=0.35.1', '< 0.38'
36
+ end
37
+ else
38
+ gem 'json'
39
+ group :development, :test do
40
+ gem 'rubocop', '>=0.35.1'
41
+ end
42
+ end
43
+
33
44
  # vim:ft=ruby
data/README.md CHANGED
@@ -21,16 +21,28 @@ Unit/System spec/coverage: [![Spec Build Status](https://revproxy.arista.com/eos
21
21
 
22
22
  # Overview
23
23
 
24
- The Ruby Client for eAPI provides a native Ruby implementation for programming Arista EOS network devices using Ruby. The Ruby client provides the ability to build native applications in Ruby that can communicate with EOS either locally via Unix domain sockets (on-box) or remotely over a HTTP/S transport (off-box). It uses a standard INI-style configuration file to specifiy one or more connection profiles.
25
-
26
- The rbeapi implemenation also provides an API layer for building native Ruby objects that allow for configuration and state extraction of EOS nodes. The API layer provides a consistent implementation for working with EOS configuration resources. The implementation of the API layer is highly extensible and can be used as a foundation for building custom data models.
27
-
28
- The libray is freely provided to the open source community for building robust applications using Arista EOS eAPI. Support is provided as best effort through Github iusses.
24
+ The Ruby Client for eAPI provides a native Ruby implementation for programming
25
+ Arista EOS network devices using Ruby. The Ruby client provides the ability to
26
+ build native applications in Ruby that can communicate with EOS either locally
27
+ via Unix domain sockets (on-box) or remotely over a HTTP/S transport (off-box).
28
+ It uses a standard INI-style configuration file to specifiy one or more
29
+ connection profiles.
30
+
31
+ The rbeapi implemenation also provides an API layer for building native Ruby
32
+ objects that allow for configuration and state extraction of EOS nodes. The
33
+ API layer provides a consistent implementation for working with EOS
34
+ configuration resources. The implementation of the API layer is highly
35
+ extensible and can be used as a foundation for building custom data models.
36
+
37
+ The libray is freely provided to the open source community for building robust
38
+ applications using Arista EOS eAPI. Support is provided as best effort through
39
+ Github iusses.
29
40
 
30
41
  ## Requirements
31
42
 
32
43
  * Arista EOS 4.12 or later
33
- * Arista eAPI enabled for at least one transport (see official EOS Config Guide at arista.com for details)
44
+ * Arista eAPI enabled for at least one transport (see official EOS Config Guide
45
+ at arista.com for details)
34
46
  * Ruby 1.9.3 or later
35
47
 
36
48
  # Getting Started
@@ -152,7 +164,7 @@ node.config('hostname veos01')
152
164
  node.config(['interface Ethernet1', 'description foo'])
153
165
  => [{}, {}]
154
166
 
155
- # return the running or startup configuration from the node (output omitted for brevity)
167
+ # return the running or startup configuration from the node as a string (output omitted for brevity)
156
168
 
157
169
  node.running_config
158
170
 
@@ -214,17 +226,18 @@ and uploaded to [RubyGems](https://rubygems.org/).
214
226
  ```
215
227
 
216
228
  * To create an RPM, run ``rake rpm``
217
- * To generate a SWIX file for EOS with necessary dependencies, run
218
- ``rake all_rpms`` then follow the ``swix create`` instructions, provided
219
- by the build. NOTE:
220
- [PuppetLabs](https://puppetlabs.com/misc/pe-files) provides a puppet agent SWIX which includes Ruby 1.9.3 in
221
- /opt/puppet/bin/ which is different from where you might otherwise install
222
- Ruby. If you have installed the puppet-enterprise 3.x SWIX, then you should
223
- build and use the ``rbeapi-puppet3`` swix, below. If you have installed
224
- the puppet-enterprise 2015.x SWIX, then you should build and use the
225
- ``rbeapi-puppet-aio`` swix, below. Otherwise, if you have installed at least
226
- Ruby 1.9.3 in the standard system location, then the ``rbeapi`` SWIX may be
227
- used.
229
+ * To generate a SWIX file for EOS with necessary dependencies, run ``rake
230
+ all_rpms`` then follow the ``swix create`` instructions, provided by the
231
+ build. NOTE: [Puppet](https://puppet.com/misc/pe-files) provides a puppet
232
+ agent SWIX which includes Ruby in /opt/puppet/bin/, or /opt/puppetlabs/bin/,
233
+ which is different from where you might otherwise install Ruby. If you have
234
+ installed the puppet-enterprise 3.x SWIX, then you should build and use the
235
+ ``rbeapi-puppet3`` swix, below. If you have installed the puppet-enterprise
236
+ 2015.x SWIX, or higher, (the all-in-one agent) then you should build and use
237
+ the ``rbeapi-puppet-aio`` swix, below. Chef includes its own Ruby in the
238
+ omnibus installation package in /opt/chef/bin/. For Chef, use the
239
+ ``rbeapi-chef`` SWIX package. Otherwise, if you have installed at least Ruby
240
+ 1.9.3 in the standard system location, then the ``rbeapi`` SWIX may be used.
228
241
 
229
242
  ```
230
243
  $ bundle install --path .bundle/gems/
@@ -235,24 +248,32 @@ Copy the RPMs to an EOS device then run the 'swix create' command.
235
248
  Examples:
236
249
  Puppet Open Source:
237
250
  cd /mnt/flash; \
238
- swix create rbeapi-0.5.1-1.swix \
239
- rubygem-rbeapi-0.5.1-1.eos4.noarch.rpm \
251
+ swix create rbeapi-1.0-1.swix \
252
+ rubygem-rbeapi-1.0-1.eos4.noarch.rpm \
240
253
  rubygem-inifile-3.0.0-3.eos4.noarch.rpm \
241
254
  rubygem-netaddr-1.5.0-2.eos4.noarch.rpm \
242
255
  rubygem-net_http_unix-0.2.1-3.eos4.noarch.rpm
243
256
  Puppet-enterprise agent (3.x):
244
257
  cd/mnt/flash; \
245
- swix create rbeapi-puppet3-0.5.1-1.swix \
246
- rubygem-rbeapi-puppet3-0.5.1-1.eos4.noarch.rpm \
258
+ swix create rbeapi-puppet3-1.0-1.swix \
259
+ rubygem-rbeapi-puppet3-1.0-1.eos4.noarch.rpm \
247
260
  rubygem-inifile-puppet3-3.0.0-3.eos4.noarch.rpm \
248
261
  rubygem-netaddr-puppet3-1.5.0-2.eos4.noarch.rpm
249
262
  Puppet-All-in-one agent (2015.x/4.x):
250
263
  cd/mnt/flash; \
251
- swix create rbeapi-puppet-aio-0.5.1-1.swix \
252
- rubygem-rbeapi-puppet-aio-0.5.1-1.eos4.noarch.rpm \
264
+ swix create rbeapi-puppet-aio-1.0-1.swix \
265
+ rubygem-rbeapi-puppet-aio-1.0-1.eos4.noarch.rpm \
253
266
  rubygem-inifile-puppet-aio-3.0.0-3.eos4.noarch.rpm \
254
267
  rubygem-netaddr-puppet-aio-1.5.0-2.eos4.noarch.rpm \
255
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
256
277
  ```
257
278
 
258
279
  On EOS:
@@ -260,13 +281,13 @@ Copy the RPMs to an EOS device then run the 'swix create' command.
260
281
  Arista# copy <URI-to-RPMs> flash:
261
282
  Arista# bash
262
283
  -bash-4.1# cd /mnt/flash/
263
- -bash-4.1# swix create rbeapi-puppet3-0.5.1-1.swix \
264
- rubygem-rbeapi-puppet3-0.5.1-1.eos4.noarch.rpm \
284
+ -bash-4.1# swix create rbeapi-puppet3-1.0-1.swix \
285
+ rubygem-rbeapi-puppet3-1.0-1.eos4.noarch.rpm \
265
286
  rubygem-inifile-puppet3-3.0.0-1.eos4.noarch.rpm \
266
287
  rubygem-netaddr-puppet3-1.5.0-1.eos4.noarch.rpm
267
288
  -bash-4.1# exit
268
- Arista# copy flash:rbeapi-puppet3-0.5.1-1.swix extension:
269
- Arista# extension rbeapi-puppet3-0.5.1-1.swix
289
+ Arista# copy flash:rbeapi-puppet3-1.0-1.swix extension:
290
+ Arista# extension rbeapi-puppet3-1.0-1.swix
270
291
  Arista# copy installed-extensions boot-extensions
271
292
  ```
272
293
 
@@ -275,7 +296,7 @@ Copy the RPMs to an EOS device then run the 'swix create' command.
275
296
  On EOS:
276
297
  ```
277
298
  Arista# no extension pe-rbeapi-0.3.0-1.swix
278
- Arista# extension rbeapi-puppet3-0.5.1-1.swix
299
+ Arista# extension rbeapi-puppet3-1.0-1.swix
279
300
  Arista# copy installed-extensions boot-extensions
280
301
  ```
281
302
 
@@ -298,12 +319,27 @@ corresponding test cases otherwise the pull request will be rejected.
298
319
 
299
320
  Copyright (c) 2016, Arista Networks, Inc. All rights reserved.
300
321
 
301
- Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
302
-
303
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
304
-
305
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
306
-
307
- Neither the name of Arista Networks nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
308
-
309
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARISTA NETWORKS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
322
+ Redistribution and use in source and binary forms, with or without
323
+ modification, are permitted provided that the following conditions are met:
324
+
325
+ Redistributions of source code must retain the above copyright notice, this
326
+ list of conditions and the following disclaimer.
327
+
328
+ Redistributions in binary form must reproduce the above copyright notice, this
329
+ list of conditions and the following disclaimer in the documentation and/or
330
+ other materials provided with the distribution.
331
+
332
+ Neither the name of Arista Networks nor the names of its contributors may be
333
+ used to endorse or promote products derived from this software without specific
334
+ prior written permission.
335
+
336
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
337
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
338
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
339
+ DISCLAIMED. IN NO EVENT SHALL ARISTA NETWORKS BE LIABLE FOR ANY DIRECT,
340
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
341
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
342
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
343
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
344
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
345
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.