junos-ez-stdlib 0.0.12 → 0.0.15
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +17 -3
- data/README.md +10 -0
- data/docs/Providers/IPports.md +61 -0
- data/docs/Providers/L1ports.md +29 -0
- data/docs/Providers/L2ports.md +43 -0
- data/docs/Providers/StaticHosts.md +26 -0
- data/docs/Providers/StaticRoutes.md +37 -0
- data/docs/Providers/UserAuths.md +32 -0
- data/docs/{Users.md → Providers/Users.md} +17 -0
- data/docs/Providers/Vlans.md +43 -0
- data/docs/Providers_Resources.md +24 -0
- data/docs/README_FIRST.md +27 -0
- data/docs/Utils/Config.md +161 -0
- data/docs/Utils/Filesystem.md +78 -0
- data/docs/Utils/Routing-Engine.md +248 -0
- data/examples/re_upgrade.rb +1 -1
- data/examples/re_utils.rb +1 -0
- data/examples/vlans.rb +7 -1
- data/lib/junos-ez/ip_ports.rb +3 -1
- data/lib/junos-ez/ip_ports/classic.rb +49 -14
- data/lib/junos-ez/l1_ports.rb +51 -11
- data/lib/junos-ez/l2_ports.rb +1 -1
- data/lib/junos-ez/l2_ports/vlan.rb +176 -60
- data/lib/junos-ez/provider.rb +4 -1
- data/lib/junos-ez/system/st_hosts.rb +0 -0
- data/lib/junos-ez/system/st_routes.rb +0 -0
- data/lib/junos-ez/system/userauths.rb +0 -0
- data/lib/junos-ez/system/users.rb +0 -0
- data/lib/junos-ez/utils/config.rb +33 -2
- data/lib/junos-ez/utils/re.rb +22 -3
- data/lib/junos-ez/vlans.rb +5 -3
- data/lib/junos-ez/vlans/vlan.rb +6 -0
- metadata +14 -13
- data/docs/Config_Utils.md +0 -3
- data/docs/Filesys_Utils.md +0 -3
- data/docs/IPports.md +0 -3
- data/docs/L1ports.md +0 -3
- data/docs/L2ports.md +0 -3
- data/docs/RE_utils.md +0 -3
- data/docs/StaticHosts.md +0 -3
- data/docs/StaticRoutes.md +0 -3
- data/docs/Vlans.md +0 -3
- data/lib/junos-ez/system/user_ssh_keys.rb +0 -113
data/lib/junos-ez/utils/re.rb
CHANGED
@@ -46,7 +46,7 @@ class Junos::Ez::RE::Provider < Junos::Ez::Provider::Parent
|
|
46
46
|
status_h = {}
|
47
47
|
got.xpath('//route-engine').each do |re|
|
48
48
|
re_h = {}
|
49
|
-
slot_id = re.xpath('slot').text
|
49
|
+
slot_id = "re" + re.xpath('slot').text
|
50
50
|
status_h[slot_id] = re_h
|
51
51
|
|
52
52
|
re_h[:model] = re.xpath('model').text.strip
|
@@ -173,6 +173,7 @@ class Junos::Ez::RE::Provider < Junos::Ez::Provider::Parent
|
|
173
173
|
user_h[:from] = user.xpath('from').text.strip
|
174
174
|
user_h[:login_time] = user.xpath('login-time').text.strip
|
175
175
|
user_h[:idle_time] = user.xpath('idel-time').text.strip
|
176
|
+
user_h[:idle_time] = nil if user_h[:idle_time].empty?
|
176
177
|
user_h[:command] = user.xpath('command').text.strip
|
177
178
|
end
|
178
179
|
users_a
|
@@ -224,7 +225,16 @@ class Junos::Ez::RE::Provider < Junos::Ez::Provider::Parent
|
|
224
225
|
### ---------------------------------------------------------------
|
225
226
|
|
226
227
|
def reboot!( opts = {} )
|
227
|
-
|
228
|
+
arg_options = [:in, :at]
|
229
|
+
args = {}
|
230
|
+
opts.each do |k,v|
|
231
|
+
if arg_options.include? k
|
232
|
+
args[k] = v
|
233
|
+
else
|
234
|
+
raise ArgumentError, "unrecognized option #{k}"
|
235
|
+
end
|
236
|
+
end
|
237
|
+
got = @ndev.rpc.request_reboot( args )
|
228
238
|
got.xpath('request-reboot-status').text.strip
|
229
239
|
end
|
230
240
|
|
@@ -233,10 +243,19 @@ class Junos::Ez::RE::Provider < Junos::Ez::Provider::Parent
|
|
233
243
|
### ---------------------------------------------------------------
|
234
244
|
|
235
245
|
def shutdown!( opts = {} )
|
246
|
+
arg_options = [:in, :at]
|
247
|
+
args = {}
|
248
|
+
opts.each do |k,v|
|
249
|
+
if arg_options.include? k
|
250
|
+
args[k] = v
|
251
|
+
else
|
252
|
+
raise ArgumentError, "unrecognized option #{k}"
|
253
|
+
end
|
254
|
+
end
|
236
255
|
## some Junos devices will throw an RPC error exception which is really
|
237
256
|
## a warning, and some do not. So we need to trap that here.
|
238
257
|
begin
|
239
|
-
got = @ndev.rpc.request_power_off
|
258
|
+
got = @ndev.rpc.request_power_off( args )
|
240
259
|
rescue => e
|
241
260
|
retmsg = e.rsp.xpath('//error-message').text.strip + "\n"
|
242
261
|
return retmsg + e.rsp.xpath('//request-reboot-status').text.strip
|
data/lib/junos-ez/vlans.rb
CHANGED
@@ -3,9 +3,10 @@ require "junos-ez/provider"
|
|
3
3
|
module Junos::Ez::Vlans
|
4
4
|
|
5
5
|
PROPERTIES = [
|
6
|
-
:vlan_id,
|
7
|
-
:description,
|
8
|
-
:no_mac_learning
|
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
|
9
10
|
]
|
10
11
|
|
11
12
|
def self.Provider( ndev, varsym )
|
@@ -21,6 +22,7 @@ module Junos::Ez::Vlans
|
|
21
22
|
|
22
23
|
class Provider < Junos::Ez::Provider::Parent
|
23
24
|
# common parenting goes here ...
|
25
|
+
|
24
26
|
end
|
25
27
|
|
26
28
|
end
|
data/lib/junos-ez/vlans/vlan.rb
CHANGED
@@ -25,6 +25,12 @@ class Junos::Ez::Vlans::Provider::VLAN < Junos::Ez::Vlans::Provider
|
|
25
25
|
as_hash[:vlan_id] = as_xml.xpath('vlan-id').text.to_i
|
26
26
|
xml_when_item(as_xml.xpath('description')){ |i| as_hash[:description] = i.text }
|
27
27
|
xml_when_item(as_xml.xpath('no-mac-learning')){ as_hash[:no_mac_learning] = true }
|
28
|
+
|
29
|
+
# get a brief list of the interfaces on this vlan
|
30
|
+
got = @ndev.rpc.get_vlan_information( :vlan_name => @name || as_xml.xpath('name').text )
|
31
|
+
as_hash[:interfaces] = got.xpath('//vlan-member-interface').collect{|ifs| ifs.text.strip }
|
32
|
+
as_hash[:interfaces] = nil if as_hash[:interfaces][0] == "None"
|
33
|
+
|
28
34
|
return true
|
29
35
|
end
|
30
36
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: junos-ez-stdlib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.15
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-05-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: netconf
|
@@ -59,7 +59,6 @@ files:
|
|
59
59
|
- lib/junos-ez/system/syscfg.rb
|
60
60
|
- lib/junos-ez/system/userauths.rb
|
61
61
|
- lib/junos-ez/system/users.rb
|
62
|
-
- lib/junos-ez/system/user_ssh_keys.rb
|
63
62
|
- lib/junos-ez/system.rb
|
64
63
|
- lib/junos-ez/utils/config.rb
|
65
64
|
- lib/junos-ez/utils/fs.rb
|
@@ -78,18 +77,20 @@ files:
|
|
78
77
|
- examples/st_hosts.rb
|
79
78
|
- examples/user.rb
|
80
79
|
- examples/vlans.rb
|
81
|
-
- docs/Config_Utils.md
|
82
80
|
- docs/Facts.md
|
83
|
-
- docs/
|
84
|
-
- docs/
|
85
|
-
- docs/
|
86
|
-
- docs/
|
81
|
+
- docs/Providers/IPports.md
|
82
|
+
- docs/Providers/L1ports.md
|
83
|
+
- docs/Providers/L2ports.md
|
84
|
+
- docs/Providers/StaticHosts.md
|
85
|
+
- docs/Providers/StaticRoutes.md
|
86
|
+
- docs/Providers/UserAuths.md
|
87
|
+
- docs/Providers/Users.md
|
88
|
+
- docs/Providers/Vlans.md
|
87
89
|
- docs/Providers_Resources.md
|
88
|
-
- docs/
|
89
|
-
- docs/
|
90
|
-
- docs/
|
91
|
-
- docs/
|
92
|
-
- docs/Vlans.md
|
90
|
+
- docs/README_FIRST.md
|
91
|
+
- docs/Utils/Config.md
|
92
|
+
- docs/Utils/Filesystem.md
|
93
|
+
- docs/Utils/Routing-Engine.md
|
93
94
|
homepage: https://github.com/jeremyschulman/ruby-junos-ez-stdlib
|
94
95
|
licenses: []
|
95
96
|
post_install_message:
|
data/docs/Config_Utils.md
DELETED
data/docs/Filesys_Utils.md
DELETED
data/docs/IPports.md
DELETED
data/docs/L1ports.md
DELETED
data/docs/L2ports.md
DELETED
data/docs/RE_utils.md
DELETED
data/docs/StaticHosts.md
DELETED
data/docs/StaticRoutes.md
DELETED
data/docs/Vlans.md
DELETED
@@ -1,113 +0,0 @@
|
|
1
|
-
=begin
|
2
|
-
* Puppet Module : junos-stdlib
|
3
|
-
* Author : Jeremy Schulman
|
4
|
-
* File : junos_user.rb
|
5
|
-
* Version : 2013-03-20
|
6
|
-
* Platform : All
|
7
|
-
* Description :
|
8
|
-
*
|
9
|
-
*
|
10
|
-
* Copyright (c) 2013 Juniper Networks. All Rights Reserved.
|
11
|
-
*
|
12
|
-
* YOU MUST ACCEPT THE TERMS OF THIS DISCLAIMER TO USE THIS SOFTWARE,
|
13
|
-
* IN ADDITION TO ANY OTHER LICENSES AND TERMS REQUIRED BY JUNIPER NETWORKS.
|
14
|
-
*
|
15
|
-
* JUNIPER IS WILLING TO MAKE THE INCLUDED SCRIPTING SOFTWARE AVAILABLE TO YOU
|
16
|
-
* ONLY UPON THE CONDITION THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS
|
17
|
-
* DISCLAIMER. PLEASE READ THE TERMS AND CONDITIONS OF THIS DISCLAIMER
|
18
|
-
* CAREFULLY.
|
19
|
-
*
|
20
|
-
* THE SOFTWARE CONTAINED IN THIS FILE IS PROVIDED "AS IS." JUNIPER MAKES NO
|
21
|
-
* WARRANTIES OF ANY KIND WHATSOEVER WITH RESPECT TO SOFTWARE. ALL EXPRESS OR
|
22
|
-
* IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY WARRANTY
|
23
|
-
* OF NON-INFRINGEMENT OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR A
|
24
|
-
* PARTICULAR PURPOSE, ARE HEREBY DISCLAIMED AND EXCLUDED TO THE EXTENT
|
25
|
-
* ALLOWED BY APPLICABLE LAW.
|
26
|
-
*
|
27
|
-
* IN NO EVENT WILL JUNIPER BE LIABLE FOR ANY DIRECT OR INDIRECT DAMAGES,
|
28
|
-
* INCLUDING BUT NOT LIMITED TO LOST REVENUE, PROFIT OR DATA, OR
|
29
|
-
* FOR DIRECT, SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES
|
30
|
-
* HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY ARISING OUT OF THE
|
31
|
-
* USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF JUNIPER HAS BEEN ADVISED OF
|
32
|
-
* THE POSSIBILITY OF SUCH DAMAGES.
|
33
|
-
=end
|
34
|
-
|
35
|
-
require 'puppet/provider/junos/junos_parent'
|
36
|
-
|
37
|
-
class Puppet::Provider::Junos::SSH_auth_key < Puppet::Provider::Junos
|
38
|
-
|
39
|
-
### --------------------------------------------------------------------
|
40
|
-
### triggered by provider #exists?
|
41
|
-
### --------------------------------------------------------------------
|
42
|
-
|
43
|
-
def netdev_res_exists?
|
44
|
-
|
45
|
-
# cannot manage the 'active' parameter from the puppet manifest since the
|
46
|
-
# type definition is compiled on the server, and doesn't include this :-(
|
47
|
-
# so fake it here, set to true always. this way if someone deactivated
|
48
|
-
# it apriori, then this puppet-run will make it active again.
|
49
|
-
|
50
|
-
return false unless (auth = get_junos_config)
|
51
|
-
|
52
|
-
got_key = auth.text.strip
|
53
|
-
got_key_skip = got_key.index(' ') + 1
|
54
|
-
got_key = got_key[ got_key_skip .. -1 ]
|
55
|
-
|
56
|
-
@ndev_res[:key] = got_key
|
57
|
-
@ndev_res[:user] = resource[:user]
|
58
|
-
@ndev_res[:type] = resource[:type]
|
59
|
-
@ndev_res[:target] = resource[:target]
|
60
|
-
@ndev_res[:options] = resource[:options]
|
61
|
-
|
62
|
-
return true
|
63
|
-
end
|
64
|
-
|
65
|
-
### ---------------------------------
|
66
|
-
### ---> override parent method <----
|
67
|
-
### ---------------------------------
|
68
|
-
|
69
|
-
def netdev_resxml_top( xml )
|
70
|
-
xml.user {
|
71
|
-
xml.name resource[:user]
|
72
|
-
xml.authentication {
|
73
|
-
xml.send(:'ssh-rsa') {
|
74
|
-
xml.name 'ssh-rsa ' + resource[:key]
|
75
|
-
return xml
|
76
|
-
}
|
77
|
-
}
|
78
|
-
}
|
79
|
-
end
|
80
|
-
|
81
|
-
def get_junos_config
|
82
|
-
|
83
|
-
@ndev_res ||= NetdevJunos::Resource.new( self, 'system/login', 'user' )
|
84
|
-
@ndev_res[:unmanaged_active] = true
|
85
|
-
|
86
|
-
return nil unless (ndev_config = @ndev_res.getconfig)
|
87
|
-
return nil unless auth_config = ndev_config.xpath("//user/authentication/ssh-rsa")[0]
|
88
|
-
@ndev_res.set_active_state( auth_config )
|
89
|
-
|
90
|
-
return auth_config
|
91
|
-
end
|
92
|
-
|
93
|
-
|
94
|
-
##### ------------------------------------------------------------
|
95
|
-
##### XML builder routines, one for each property
|
96
|
-
##### ------------------------------------------------------------
|
97
|
-
|
98
|
-
def xml_change_type( xml )
|
99
|
-
end
|
100
|
-
|
101
|
-
def xml_change_key( xml )
|
102
|
-
end
|
103
|
-
|
104
|
-
def xml_change_user( xml )
|
105
|
-
end
|
106
|
-
|
107
|
-
def xml_change_target( xml )
|
108
|
-
end
|
109
|
-
|
110
|
-
def xml_change_options( xml )
|
111
|
-
end
|
112
|
-
|
113
|
-
end
|