shopify-junos-ez-stdlib 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +91 -0
  3. data/LICENSE +26 -0
  4. data/README.md +199 -0
  5. data/docs/Facts.md +192 -0
  6. data/docs/Providers/Group.md +61 -0
  7. data/docs/Providers/IPports.md +61 -0
  8. data/docs/Providers/L1ports.md +29 -0
  9. data/docs/Providers/L2ports.md +43 -0
  10. data/docs/Providers/LAGports.md +57 -0
  11. data/docs/Providers/StaticHosts.md +26 -0
  12. data/docs/Providers/StaticRoutes.md +37 -0
  13. data/docs/Providers/UserAuths.md +32 -0
  14. data/docs/Providers/Users.md +122 -0
  15. data/docs/Providers/Vlans.md +43 -0
  16. data/docs/Providers_Resources.md +353 -0
  17. data/docs/README_FIRST.md +27 -0
  18. data/docs/Utils/Config.md +160 -0
  19. data/docs/Utils/Filesystem.md +360 -0
  20. data/docs/Utils/Routing-Engine.md +379 -0
  21. data/docs/Utils/SCP.md +24 -0
  22. data/examples/config/config_file.rb +72 -0
  23. data/examples/config/config_template_object.rb +81 -0
  24. data/examples/config/config_template_simple.rb +76 -0
  25. data/examples/config/multi_config.rb +60 -0
  26. data/examples/fs_utils.rb +31 -0
  27. data/examples/lag_port.rb +27 -0
  28. data/examples/re_upgrade.rb +99 -0
  29. data/examples/re_utils.rb +33 -0
  30. data/examples/simple.rb +46 -0
  31. data/examples/st_hosts.rb +33 -0
  32. data/examples/user.rb +32 -0
  33. data/examples/vlans.rb +31 -0
  34. data/junos-ez-stdlib.gemspec +15 -0
  35. data/lib/junos-ez/exceptions.rb +3 -0
  36. data/lib/junos-ez/facts.rb +83 -0
  37. data/lib/junos-ez/facts/chassis.rb +51 -0
  38. data/lib/junos-ez/facts/ifd_style.rb +17 -0
  39. data/lib/junos-ez/facts/personality.rb +25 -0
  40. data/lib/junos-ez/facts/switch_style.rb +31 -0
  41. data/lib/junos-ez/facts/version.rb +58 -0
  42. data/lib/junos-ez/group.rb +206 -0
  43. data/lib/junos-ez/ip_ports.rb +30 -0
  44. data/lib/junos-ez/ip_ports/classic.rb +188 -0
  45. data/lib/junos-ez/l1_ports.rb +121 -0
  46. data/lib/junos-ez/l1_ports/classic.rb +87 -0
  47. data/lib/junos-ez/l1_ports/switch.rb +134 -0
  48. data/lib/junos-ez/l2_ports.rb +66 -0
  49. data/lib/junos-ez/l2_ports/bridge_domain.rb +499 -0
  50. data/lib/junos-ez/l2_ports/vlan.rb +433 -0
  51. data/lib/junos-ez/l2_ports/vlan_l2ng.rb +502 -0
  52. data/lib/junos-ez/lag_ports.rb +268 -0
  53. data/lib/junos-ez/provider.rb +619 -0
  54. data/lib/junos-ez/stdlib.rb +18 -0
  55. data/lib/junos-ez/system.rb +48 -0
  56. data/lib/junos-ez/system/st_hosts.rb +92 -0
  57. data/lib/junos-ez/system/st_routes.rb +159 -0
  58. data/lib/junos-ez/system/syscfg.rb +103 -0
  59. data/lib/junos-ez/system/userauths.rb +84 -0
  60. data/lib/junos-ez/system/users.rb +217 -0
  61. data/lib/junos-ez/utils/config.rb +236 -0
  62. data/lib/junos-ez/utils/fs.rb +385 -0
  63. data/lib/junos-ez/utils/re.rb +558 -0
  64. data/lib/junos-ez/version.rb +6 -0
  65. data/lib/junos-ez/vlans.rb +38 -0
  66. data/lib/junos-ez/vlans/bridge_domain.rb +89 -0
  67. data/lib/junos-ez/vlans/vlan.rb +119 -0
  68. data/lib/junos-ez/vlans/vlan_l2ng.rb +126 -0
  69. data/shipit.yml +4 -0
  70. data/tmp +7 -0
  71. metadata +129 -0
@@ -0,0 +1,6 @@
1
+ module Junos; end
2
+ module Junos::Ez; end
3
+
4
+ module Junos::Ez
5
+ VERSION = "1.0.0"
6
+ end
@@ -0,0 +1,38 @@
1
+ require "junos-ez/provider"
2
+
3
+ module Junos::Ez::Vlans
4
+
5
+ PROPERTIES = [
6
+ :vlan_id, # Fixnum, [ 1 .. 4094 ]
7
+ :description, # String, description
8
+ :no_mac_learning, # [ true | nil ] - used to disable MAC-address learning
9
+ :interfaces, # READ-ONLY, array of bound interface names
10
+ ]
11
+
12
+ def self.Provider( ndev, varsym )
13
+ newbie = case ndev.fact :switch_style
14
+ when :VLAN
15
+ Junos::Ez::Vlans::Provider::VLAN.new( ndev )
16
+ when :VLAN_L2NG
17
+ Junos::Ez::Vlans::Provider::VLAN_L2NG.new( ndev )
18
+ when :BRIDGE_DOMAIN
19
+ Junos::Ez::Vlans::Provider::BRIDGE_DOMAIN.new( ndev )
20
+ else
21
+ raise Junos::Ez::NoProviderError, "target does not support vlan bridges"
22
+ end
23
+ newbie.properties = Junos::Ez::Provider::PROPERTIES + PROPERTIES
24
+ Junos::Ez::Provider.attach_instance_variable( ndev, varsym, newbie )
25
+ end
26
+
27
+ class Provider < Junos::Ez::Provider::Parent
28
+ # common parenting goes here ...
29
+
30
+ end
31
+
32
+ end
33
+
34
+ require 'junos-ez/vlans/vlan'
35
+ require 'junos-ez/vlans/vlan_l2ng'
36
+ require 'junos-ez/vlans/bridge_domain'
37
+
38
+
@@ -0,0 +1,89 @@
1
+ class Junos::Ez::Vlans::Provider::BRIDGE_DOMAIN < Junos::Ez::Vlans::Provider
2
+
3
+ ### ---------------------------------------------------------------
4
+ ### XML top placement
5
+ ### ---------------------------------------------------------------
6
+
7
+ def xml_at_top
8
+ Nokogiri::XML::Builder.new{|x| x.configuration{
9
+ x.send( :'bridge-domains' ) { x.domain { x.name @name
10
+ return x
11
+ }}
12
+ }}
13
+ end
14
+
15
+ ### ---------------------------------------------------------------
16
+ ### XML readers
17
+ ### ---------------------------------------------------------------
18
+
19
+ def xml_read!
20
+ cfg_xml = @ndev.rpc.get_configuration( xml_at_top )
21
+ return nil unless (@has_xml = cfg_xml.xpath('//domain')[0])
22
+ xml_read_parser( @has_xml, @has )
23
+ end
24
+
25
+ def xml_get_has_xml( xml )
26
+ xml.xpath('//domain')[0]
27
+ end
28
+
29
+ def xml_read_parser( as_xml, as_hash )
30
+ set_has_status( as_xml, as_hash )
31
+ as_hash[:vlan_id] = as_xml.xpath('vlan-id').text.to_i
32
+ as_hash[:description] = as_xml.xpath('description').text
33
+ as_hash[:no_mac_learning] = as_xml.xpath('bridge-options/no-mac-learning').empty? ? :disable : :enable
34
+ return true
35
+ end
36
+
37
+ ### ---------------------------------------------------------------
38
+ ### XML writers
39
+ ### ---------------------------------------------------------------
40
+
41
+ def xml_on_create( xml )
42
+ xml.send( :'domain-type', 'bridge' )
43
+ end
44
+
45
+ def xml_change_no_mac_learning( xml )
46
+ no_ml = @should[:no_mac_learning]
47
+ return unless ( exists? and no_ml )
48
+ xml.send(:'bridge-options') {
49
+ xml.send(:'no-mac-learning', (no_ml == :enable) ? nil : Netconf::JunosConfig::DELETE )
50
+ }
51
+ end
52
+
53
+ def xml_change_vlan_id( xml )
54
+ xml.send( :'vlan-id', @should[:vlan_id] )
55
+ end
56
+
57
+ def xml_change_description( xml )
58
+ xml.description @should[:description]
59
+ end
60
+
61
+ end
62
+
63
+
64
+ ##### ---------------------------------------------------------------
65
+ ##### Provider collection methods
66
+ ##### ---------------------------------------------------------------
67
+
68
+ class Junos::Ez::Vlans::Provider::BRIDGE_DOMAIN
69
+
70
+ def build_list
71
+ bd_cfgs = @ndev.rpc.get_configuration{ |x| x.send :'bridge-domains' }
72
+ bd_cfgs.xpath('bridge-domains/domain').collect do |domain|
73
+ domain.xpath('name').text
74
+ end
75
+ end
76
+
77
+ def build_catalog
78
+ @catalog = {}
79
+ bd_cfgs = @ndev.rpc.get_configuration{ |x| x.send :'bridge-domains' }
80
+ bd_cfgs.xpath('bridge-domains/domain').collect do |domain|
81
+ name = domain.xpath('name').text
82
+ @catalog[name] = {}
83
+ xml_read_parser( domain, @catalog[name] )
84
+ end
85
+ return @catalog
86
+ end
87
+
88
+ end
89
+
@@ -0,0 +1,119 @@
1
+ class Junos::Ez::Vlans::Provider::VLAN < Junos::Ez::Vlans::Provider
2
+
3
+ ### ---------------------------------------------------------------
4
+ ### XML top placement
5
+ ### ---------------------------------------------------------------
6
+
7
+ def xml_at_top
8
+ Nokogiri::XML::Builder.new{|x| x.configuration{
9
+ x.vlans { x.vlan { x.name @name
10
+ return x
11
+ }}
12
+ }}
13
+ end
14
+
15
+ ### ---------------------------------------------------------------
16
+ ### XML readers
17
+ ### ---------------------------------------------------------------
18
+
19
+ def xml_get_has_xml( xml )
20
+ xml.xpath('//vlan')[0]
21
+ end
22
+
23
+ def xml_read_parser( as_xml, as_hash )
24
+ set_has_status( as_xml, as_hash )
25
+
26
+ as_hash[:vlan_id] = as_xml.xpath('vlan-id').text.to_i
27
+ xml_when_item(as_xml.xpath('description')){ |i| as_hash[:description] = i.text }
28
+ xml_when_item(as_xml.xpath('no-mac-learning')){ as_hash[:no_mac_learning] = :enable }
29
+
30
+ # get a brief list of the interfaces on this vlan
31
+ got = @ndev.rpc.get_vlan_information( :vlan_name => @name || as_xml.xpath('name').text )
32
+ as_hash[:interfaces] = got.xpath('//vlan-member-interface').collect{|ifs| ifs.text.strip }
33
+ as_hash[:interfaces] = nil if as_hash[:interfaces][0] == "None"
34
+
35
+ return true
36
+ end
37
+
38
+ ### ---------------------------------------------------------------
39
+ ### XML writers
40
+ ### ---------------------------------------------------------------
41
+
42
+ def xml_change_no_mac_learning( xml )
43
+ no_ml = @should[:no_mac_learning]
44
+ return unless exists? and no_ml
45
+ xml.send(:'no-mac-learning', no_ml ? nil : Netconf::JunosConfig::DELETE )
46
+ end
47
+
48
+ def xml_change_vlan_id( xml )
49
+ xml.send(:'vlan-id', @should[:vlan_id] )
50
+ end
51
+
52
+ def xml_change_description( xml )
53
+ value = @should[:description]
54
+ xml.description value ? value : Netconf::JunosConfig::DELETE
55
+ end
56
+
57
+ end
58
+
59
+ ##### ---------------------------------------------------------------
60
+ ##### Provider collection methods
61
+ ##### ---------------------------------------------------------------
62
+
63
+ class Junos::Ez::Vlans::Provider::VLAN
64
+
65
+ def build_list
66
+ xml_cfgs = @ndev.rpc.get_configuration{ |x| x.send :'vlans' }
67
+ xml_cfgs.xpath('vlans/vlan').collect do |vlan|
68
+ vlan.xpath('name').text
69
+ end
70
+ end
71
+
72
+ def build_catalog
73
+ @catalog = {}
74
+ xml_cfgs = @ndev.rpc.get_configuration{ |x| x.send :'vlans' }
75
+ xml_cfgs.xpath('vlans/vlan').collect do |vlan|
76
+ name = vlan.xpath('name').text
77
+ @catalog[name] = {}
78
+ xml_read_parser( vlan, @catalog[name] )
79
+ end
80
+ return @catalog
81
+ end
82
+
83
+ end
84
+
85
+ ##### ---------------------------------------------------------------
86
+ ##### Provider operational methods
87
+ ##### ---------------------------------------------------------------
88
+
89
+ class Junos::Ez::Vlans::Provider::VLAN
90
+
91
+ ### ---------------------------------------------------------------
92
+ ### interfaces - returns a Hash of each interface in the VLAN
93
+ ### each interface (key) will identify:
94
+ ### :mode = [ :access | :trunk ]
95
+ ### :native = true if (:mode == :trunk) and this VLAN is the
96
+ ### native vlan-id (untagged packets)
97
+ ### ---------------------------------------------------------------
98
+
99
+ def interfaces( opts = {} )
100
+ raise ArgumentError, "not a resource" if is_provider?
101
+
102
+ args = {}
103
+ args[:vlan_name] = @name
104
+ args[:extensive] = true
105
+ got = @ndev.rpc.get_vlan_information( args )
106
+
107
+ members = got.xpath('vlan/vlan-detail/vlan-member-list/vlan-member')
108
+ ifs_h = {}
109
+ members.each do |port|
110
+ port_name = port.xpath('vlan-member-interface').text.split('.')[0]
111
+ port_h = {}
112
+ port_h[:mode] = port.xpath('vlan-member-port-mode').text.to_sym
113
+ native = (port.xpath('vlan-member-tagness').text == 'untagged')
114
+ port_h[:native] = true if( native and port_h[:mode] == :trunk)
115
+ ifs_h[port_name] = port_h
116
+ end
117
+ ifs_h
118
+ end
119
+ end
@@ -0,0 +1,126 @@
1
+ class Junos::Ez::Vlans::Provider::VLAN_L2NG < Junos::Ez::Vlans::Provider
2
+
3
+ ### ---------------------------------------------------------------
4
+ ### XML top placement
5
+ ### ---------------------------------------------------------------
6
+
7
+ def xml_at_top
8
+ Nokogiri::XML::Builder.new{|x| x.configuration{
9
+ x.vlans { x.vlan { x.name @name
10
+ return x
11
+ }}
12
+ }}
13
+ end
14
+
15
+ ### ---------------------------------------------------------------
16
+ ### XML readers
17
+ ### ---------------------------------------------------------------
18
+
19
+ def xml_get_has_xml( xml )
20
+ xml.xpath('//vlan')[0]
21
+ end
22
+
23
+ def xml_read_parser( as_xml, as_hash )
24
+ set_has_status( as_xml, as_hash )
25
+
26
+ as_hash[:vlan_id] = as_xml.xpath('vlan-id').text.to_i
27
+ xml_when_item(as_xml.xpath('description')){ |i| as_hash[:description] = i.text }
28
+
29
+ xml_when_item(as_xml.xpath('switch-options/no-mac-learning')) {
30
+ as_hash[:no_mac_learning] = :enable
31
+ }
32
+
33
+ # get a brief list of the interfaces on this vlan
34
+ got = @ndev.rpc.get_vlan_information( :vlan_name => @name || as_xml.xpath('name').text )
35
+ as_hash[:interfaces] = got.xpath('//l2ng-l2rtb-vlan-member-interface').collect{|ifs| ifs.text.strip }
36
+ as_hash[:interfaces] = nil if as_hash[:interfaces][0] == "None"
37
+
38
+ return true
39
+ end
40
+
41
+ ### ---------------------------------------------------------------
42
+ ### XML writers
43
+ ### ---------------------------------------------------------------
44
+
45
+ def xml_change_no_mac_learning( xml )
46
+ no_ml = @should[:no_mac_learning]
47
+ return unless exists? and no_ml
48
+ xml.send(:'switch-options') {
49
+ xml.send(:'no-mac-learning', no_ml == :enable ? nil : Netconf::JunosConfig::DELETE )
50
+ }
51
+ end
52
+
53
+ def xml_change_vlan_id( xml )
54
+ xml.send(:'vlan-id', @should[:vlan_id] )
55
+ end
56
+
57
+ def xml_change_description( xml )
58
+ value = @should[:description]
59
+ xml.description value ? value : Netconf::JunosConfig::DELETE
60
+ end
61
+
62
+ end
63
+
64
+ ##### ---------------------------------------------------------------
65
+ ##### Provider collection methods
66
+ ##### ---------------------------------------------------------------
67
+
68
+ class Junos::Ez::Vlans::Provider::VLAN_L2NG
69
+
70
+ def build_list
71
+ xml_cfgs = @ndev.rpc.get_configuration{ |x| x.send :'vlans' }
72
+ xml_cfgs.xpath('vlans/vlan').collect do |vlan|
73
+ vlan.xpath('name').text
74
+ end
75
+ end
76
+
77
+ def build_catalog
78
+ @catalog = {}
79
+ xml_cfgs = @ndev.rpc.get_configuration{ |x| x.send :'vlans' }
80
+ xml_cfgs.xpath('vlans/vlan').collect do |vlan|
81
+ name = vlan.xpath('name').text
82
+ @catalog[name] = {}
83
+ xml_read_parser( vlan, @catalog[name] )
84
+ end
85
+ return @catalog
86
+ end
87
+
88
+ end
89
+
90
+ ##### ---------------------------------------------------------------
91
+ ##### Provider operational methods
92
+ ##### ---------------------------------------------------------------
93
+
94
+ class Junos::Ez::Vlans::Provider::VLAN_L2NG
95
+
96
+ ### ---------------------------------------------------------------
97
+ ### interfaces - returns a Hash of each interface in the VLAN
98
+ ### each interface (key) will identify:
99
+ ### :mode = [ :access | :trunk ]
100
+ ### :native = true if (:mode == :trunk) and this VLAN is the
101
+ ### native vlan-id (untagged packets)
102
+ ### ---------------------------------------------------------------
103
+
104
+ def interfaces( opts = {} )
105
+ raise ArgumentError, "not a resource" if is_provider?
106
+
107
+ args = {}
108
+ args[:vlan_name] = @name
109
+ args[:extensive] = true
110
+ got = @ndev.rpc.get_vlan_information( args )
111
+
112
+ member_pfx = 'l2ng-l2rtb-vlan-member'
113
+ members = got.xpath("//#{member_pfx}-interface")
114
+ ifs_h = {}
115
+ members.each do |port|
116
+ port_name = port.text.split('.')[0]
117
+ port_h = {}
118
+ port_h[:mode] = port.xpath("following-sibling::#{member_pfx}-interface-mode[1]").text.to_sym
119
+ tgd = port.xpath("following-sibling::#{member_pfx}-tagness[1]").text
120
+ native = (tgd == 'untagged')
121
+ port_h[:native] = true if( native and port_h[:mode] == :trunk)
122
+ ifs_h[port_name] = port_h
123
+ end
124
+ ifs_h
125
+ end
126
+ end
data/shipit.yml ADDED
@@ -0,0 +1,4 @@
1
+ deploy:
2
+ override:
3
+ - rake build
4
+ - package_cloud push shopify/prodeng-gems pkg/ruby-junos-ez-stdlib-*.gem
data/tmp ADDED
@@ -0,0 +1,7 @@
1
+
2
+
3
+ [1,2,3,4,5].each do |num|
4
+ list << num
5
+ end
6
+
7
+ puts list
metadata ADDED
@@ -0,0 +1,129 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shopify-junos-ez-stdlib
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Jeremy Schulman
8
+ - John Deatherage
9
+ - Nitin Kumar
10
+ - Priyal Jain
11
+ - Ganesh Nalawade
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+ date: 2016-05-03 00:00:00.000000000 Z
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: netconf
19
+ requirement: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.2.5
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: 0.2.5
31
+ description: 'Automation Framework for Junos/NETCONF: Facts, Providers, and Utils'
32
+ email: jnpr-community-netdev@juniper.net
33
+ executables: []
34
+ extensions: []
35
+ extra_rdoc_files: []
36
+ files:
37
+ - CHANGELOG.md
38
+ - LICENSE
39
+ - README.md
40
+ - docs/Facts.md
41
+ - docs/Providers/Group.md
42
+ - docs/Providers/IPports.md
43
+ - docs/Providers/L1ports.md
44
+ - docs/Providers/L2ports.md
45
+ - docs/Providers/LAGports.md
46
+ - docs/Providers/StaticHosts.md
47
+ - docs/Providers/StaticRoutes.md
48
+ - docs/Providers/UserAuths.md
49
+ - docs/Providers/Users.md
50
+ - docs/Providers/Vlans.md
51
+ - docs/Providers_Resources.md
52
+ - docs/README_FIRST.md
53
+ - docs/Utils/Config.md
54
+ - docs/Utils/Filesystem.md
55
+ - docs/Utils/Routing-Engine.md
56
+ - docs/Utils/SCP.md
57
+ - examples/config/config_file.rb
58
+ - examples/config/config_template_object.rb
59
+ - examples/config/config_template_simple.rb
60
+ - examples/config/multi_config.rb
61
+ - examples/fs_utils.rb
62
+ - examples/lag_port.rb
63
+ - examples/re_upgrade.rb
64
+ - examples/re_utils.rb
65
+ - examples/simple.rb
66
+ - examples/st_hosts.rb
67
+ - examples/user.rb
68
+ - examples/vlans.rb
69
+ - junos-ez-stdlib.gemspec
70
+ - lib/junos-ez/exceptions.rb
71
+ - lib/junos-ez/facts.rb
72
+ - lib/junos-ez/facts/chassis.rb
73
+ - lib/junos-ez/facts/ifd_style.rb
74
+ - lib/junos-ez/facts/personality.rb
75
+ - lib/junos-ez/facts/switch_style.rb
76
+ - lib/junos-ez/facts/version.rb
77
+ - lib/junos-ez/group.rb
78
+ - lib/junos-ez/ip_ports.rb
79
+ - lib/junos-ez/ip_ports/classic.rb
80
+ - lib/junos-ez/l1_ports.rb
81
+ - lib/junos-ez/l1_ports/classic.rb
82
+ - lib/junos-ez/l1_ports/switch.rb
83
+ - lib/junos-ez/l2_ports.rb
84
+ - lib/junos-ez/l2_ports/bridge_domain.rb
85
+ - lib/junos-ez/l2_ports/vlan.rb
86
+ - lib/junos-ez/l2_ports/vlan_l2ng.rb
87
+ - lib/junos-ez/lag_ports.rb
88
+ - lib/junos-ez/provider.rb
89
+ - lib/junos-ez/stdlib.rb
90
+ - lib/junos-ez/system.rb
91
+ - lib/junos-ez/system/st_hosts.rb
92
+ - lib/junos-ez/system/st_routes.rb
93
+ - lib/junos-ez/system/syscfg.rb
94
+ - lib/junos-ez/system/userauths.rb
95
+ - lib/junos-ez/system/users.rb
96
+ - lib/junos-ez/utils/config.rb
97
+ - lib/junos-ez/utils/fs.rb
98
+ - lib/junos-ez/utils/re.rb
99
+ - lib/junos-ez/version.rb
100
+ - lib/junos-ez/vlans.rb
101
+ - lib/junos-ez/vlans/bridge_domain.rb
102
+ - lib/junos-ez/vlans/vlan.rb
103
+ - lib/junos-ez/vlans/vlan_l2ng.rb
104
+ - shipit.yml
105
+ - tmp
106
+ homepage: https://github.com/Juniper/ruby-junos-ez-stdlib
107
+ licenses: []
108
+ metadata: {}
109
+ post_install_message:
110
+ rdoc_options: []
111
+ require_paths:
112
+ - lib
113
+ required_ruby_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ requirements: []
124
+ rubyforge_project:
125
+ rubygems_version: 2.4.5.1
126
+ signing_key:
127
+ specification_version: 4
128
+ summary: Junos EZ Framework - Standard Libraries
129
+ test_files: []