ilorb 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.ruby-gemset +1 -0
- data/Gemfile.lock +6 -6
- data/Rakefile +6 -0
- data/ilorb.gemspec +1 -1
- data/lib/ilorb/definitions/rib.rb +16 -8
- data/lib/ilorb/definitions/server.rb +75 -31
- data/lib/ilorb/definitions/user.rb +10 -6
- data/lib/ilorb/ribcl.rb +8 -8
- data/lib/ilorb/version.rb +1 -1
- data/lib/ilorb.rb +41 -44
- metadata +10 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62653f5b9895874fed33c3809ef3ee0ab36be009
|
4
|
+
data.tar.gz: cac900742ac25d1bfbff654e0aba7094d1419bb2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7cb339ba4da6be19d191aac561538b76324efd1cf205c8cd32b8a3724a12c91000cd2719b8ee47611a98d2ebd88a201c29fb9b58a4fe988e69f988f205e659f
|
7
|
+
data.tar.gz: 6801e037528efada5421ff2a088e7cd80749c4bf3db80974c6f803c16a93fc2dea9f1cc9bcdba288d555663f1019de2366c017fbde5fe1a48b1adaa7ca83dc36
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
pkg
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ilorb
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ilorb (0.0.
|
4
|
+
ilorb (0.0.3)
|
5
5
|
nokogiri
|
6
|
-
nori
|
6
|
+
nori (~> 2)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
@@ -14,10 +14,10 @@ GEM
|
|
14
14
|
safe_yaml (~> 0.9.0)
|
15
15
|
diff-lcs (1.2.4)
|
16
16
|
method_source (0.8.1)
|
17
|
-
mini_portile (0.
|
18
|
-
nokogiri (1.6.
|
19
|
-
mini_portile (~> 0.
|
20
|
-
nori (2.
|
17
|
+
mini_portile (0.6.2)
|
18
|
+
nokogiri (1.6.6.2)
|
19
|
+
mini_portile (~> 0.6.0)
|
20
|
+
nori (2.5.0)
|
21
21
|
pry (0.9.12.2)
|
22
22
|
coderay (~> 1.0.5)
|
23
23
|
method_source (~> 0.8)
|
data/Rakefile
ADDED
data/ilorb.gemspec
CHANGED
@@ -27,7 +27,9 @@ context :rib_info do
|
|
27
27
|
|
28
28
|
write_cmd :ahs_clear_data
|
29
29
|
write_cmd :brownout_recovery # > mod_global_settings
|
30
|
-
write_cmd :certificate_signing_request
|
30
|
+
write_cmd :certificate_signing_request do
|
31
|
+
elements :csr_state, :csr_country, :csr_locality, :csr_organization, :csr_organizational_unit, :csr_common_name
|
32
|
+
end
|
31
33
|
write_cmd :clear_eventlog
|
32
34
|
write_cmd :computer_lock do
|
33
35
|
not_implemented
|
@@ -41,8 +43,7 @@ context :rib_info do
|
|
41
43
|
write_cmd :hotkey_config do
|
42
44
|
not_implemented
|
43
45
|
end
|
44
|
-
write_cmd :import_certificate do
|
45
|
-
not_implemented
|
46
|
+
write_cmd :import_certificate do
|
46
47
|
text :certificate
|
47
48
|
end
|
48
49
|
write_cmd :insert_virtual_media do
|
@@ -51,11 +52,18 @@ context :rib_info do
|
|
51
52
|
write_cmd :license do
|
52
53
|
elements :activate => :key
|
53
54
|
end
|
54
|
-
write_cmd :mod_global_settings do
|
55
|
-
|
56
|
-
end
|
57
|
-
write_cmd :mod_network_settings do
|
58
|
-
|
55
|
+
write_cmd :mod_global_settings do
|
56
|
+
elements :session_timeout, :f8_prompt_enabled, :http_port, :https_port, :remote_console_port, :min_password, :ilo_funct_enabled, :virtual_media_port, :f8_login_required, :enforce_aes, :authentication_failure_logging, :ssh_status, :ssh_port, :serial_cli_status, :serial_cli_speed, :rbsu_post_ip, :snmp_access_enabled, :snmp_port, :snmp_trap_port, :remote_syslog_enable, :remote_syslog_port, :remote_syslog_server_address, :alertmail_enable, :alertmail_email_address, :alertmail_sender_domain, :alertmail_smtp_server, :ipmi_dcmi_over_lan_enabled, :vsp_log_enable
|
57
|
+
end
|
58
|
+
write_cmd :mod_network_settings do
|
59
|
+
elements :enable_nic, :nic_speed, :full_duplex, :speed_autoselect, :ping_gateway,
|
60
|
+
:shared_network_port, :vlan_enabled, :vlan_id,
|
61
|
+
:dhcp_enable, :dhcp_domain_name, :dhcp_gateway, :dhcp_dns_server, :dhcp_wins_server, :dhcp_static_route, :dhcp_sntp_settings,
|
62
|
+
:ip_address, :subnet_mask, :gateway_ip_address, :dns_name, :domain_name,
|
63
|
+
:prim_dns_server, :sec_dns_server, :ter_dns_server, :reg_ddns_server,
|
64
|
+
:prim_wins_server, :sec_wins_server, :reg_wins_server,
|
65
|
+
:sntp_server1, :sntp_server2, :timezone,
|
66
|
+
:enclosure_ip_enable, :web_agent_ip_address
|
59
67
|
end
|
60
68
|
write_cmd :mod_snmp_im_settings do #TODO
|
61
69
|
not_implemented
|
@@ -1,51 +1,95 @@
|
|
1
1
|
context :server_info do
|
2
|
-
read_cmd :
|
3
|
-
read_cmd :get_host_power_saver_status
|
4
|
-
read_cmd :get_host_power_status
|
5
|
-
read_cmd :get_host_pwr_micro_ver
|
6
|
-
read_cmd :get_one_time_boot
|
7
|
-
read_cmd :get_persistent_boot
|
8
|
-
read_cmd :get_power_cap
|
9
|
-
read_cmd :get_power_readings
|
10
|
-
read_cmd :get_pwreg
|
11
|
-
read_cmd :get_server_auto_pwr
|
12
|
-
read_cmd :get_server_name
|
13
|
-
read_cmd :get_server_power_on_time
|
14
|
-
read_cmd :get_uid_status
|
2
|
+
read_cmd :get_tpm_status
|
15
3
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
4
|
+
read_cmd :get_current_boot_mode
|
5
|
+
|
6
|
+
read_cmd :get_pending_boot_mode
|
7
|
+
write_cmd :set_pending_boot_mode do
|
8
|
+
attributes :value
|
20
9
|
end
|
21
|
-
|
22
|
-
|
23
|
-
write_cmd :
|
10
|
+
|
11
|
+
read_cmd :get_persistent_boot
|
12
|
+
write_cmd :set_persistent_boot do
|
13
|
+
elements :device => [ :value ]
|
14
|
+
end
|
15
|
+
|
16
|
+
read_cmd :get_one_time_boot
|
17
|
+
write_cmd :set_one_time_boot do
|
24
18
|
attributes :value
|
25
19
|
end
|
20
|
+
|
21
|
+
read_cmd :get_supported_boot_mode
|
22
|
+
|
23
|
+
read_cmd :get_server_name
|
26
24
|
write_cmd :server_name do
|
27
25
|
attributes :value
|
28
26
|
end
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
attributes :host_power_saver
|
27
|
+
|
28
|
+
read_cmd :get_server_fqdn
|
29
|
+
write_cmd :server_fqdn do
|
30
|
+
attributes :value
|
34
31
|
end
|
35
|
-
|
32
|
+
|
33
|
+
read_cmd :get_smh_fqdn
|
34
|
+
write_cmd :smh_fqdn do
|
36
35
|
attributes :value
|
37
36
|
end
|
38
|
-
|
39
|
-
|
37
|
+
|
38
|
+
read_cmd :get_product_name
|
39
|
+
|
40
|
+
read_cmd :get_embedded_health
|
41
|
+
|
42
|
+
read_cmd :get_power_readings
|
43
|
+
|
44
|
+
read_cmd :get_pwreg
|
45
|
+
write_cmd :set_pwreg do
|
46
|
+
elements :pwralert => :type, :pwralert_settings => [:threshold, :duration]
|
40
47
|
end
|
48
|
+
|
49
|
+
read_cmd :get_power_cap
|
41
50
|
write_cmd :set_power_cap do
|
42
51
|
attributes :power_cap
|
43
52
|
end
|
44
|
-
|
45
|
-
|
53
|
+
|
54
|
+
read_cmd :get_host_power_saver_status
|
55
|
+
write_cmd :set_host_power_saver do
|
56
|
+
attributes :host_power_saver
|
57
|
+
end
|
58
|
+
|
59
|
+
read_cmd :get_host_power_status
|
60
|
+
write_cmd :set_host_power do
|
61
|
+
attributes :host_power
|
62
|
+
end
|
63
|
+
|
64
|
+
read_cmd :get_host_pwr_micro_ver
|
65
|
+
|
66
|
+
write_cmd :reset_server
|
67
|
+
|
68
|
+
write_cmd :press_pwr_btn
|
69
|
+
|
70
|
+
write_cmd :hold_pwr_btn do
|
71
|
+
attributes :toggle
|
46
72
|
end
|
73
|
+
|
74
|
+
write_cmd :cold_boot_server
|
75
|
+
|
76
|
+
write_cmd :warm_boot_server
|
77
|
+
|
78
|
+
read_cmd :get_server_auto_pwr
|
79
|
+
write_cmd :server_auto_pwr do
|
80
|
+
attributes :value
|
81
|
+
end
|
82
|
+
|
83
|
+
read_cmd :get_uid_status
|
47
84
|
write_cmd :uid_control do
|
48
85
|
attributes :uid
|
49
86
|
end
|
50
|
-
|
87
|
+
|
88
|
+
read_cmd :get_pers_mouse_keyboard_enabled
|
89
|
+
write_cmd :set_pers_mouse_keyboard_enabled do
|
90
|
+
attributes :value
|
91
|
+
end
|
92
|
+
|
93
|
+
read_cmd :get_server_power_on_time
|
94
|
+
write_cmd :clear_server_power_on_time
|
51
95
|
end
|
@@ -1,19 +1,23 @@
|
|
1
1
|
context :user_info do
|
2
|
-
read_cmd :get_user do
|
3
|
-
attributes :user_login
|
4
|
-
end
|
5
|
-
read_cmd :get_all_users
|
6
|
-
read_cmd :get_all_user_info
|
7
|
-
|
8
2
|
write_cmd :add_user do
|
9
3
|
attributes :user_name, :user_login, :password
|
10
4
|
elements :admin_priv, :remote_cons_priv, :reset_server_priv, :virtual_media_priv, :config_ilo_priv
|
11
5
|
end
|
6
|
+
|
12
7
|
write_cmd :delete_user do
|
13
8
|
attributes :user_login
|
14
9
|
end
|
10
|
+
|
11
|
+
read_cmd :get_user do
|
12
|
+
attributes :user_login
|
13
|
+
end
|
14
|
+
|
15
15
|
write_cmd :mod_user do
|
16
16
|
attributes :user_login
|
17
17
|
elements :user_name, :user_login, :password, :admin_priv, :remote_cons_priv, :reset_server_priv, :virtual_media_priv, :config_ilo_priv, :del_users_ssh_key
|
18
18
|
end
|
19
|
+
|
20
|
+
read_cmd :get_all_users
|
21
|
+
|
22
|
+
read_cmd :get_all_user_info
|
19
23
|
end
|
data/lib/ilorb/ribcl.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
class ILORb
|
2
2
|
class RIBCL < Hash
|
3
|
+
|
4
|
+
class NotImplementedError < StandardError; end
|
5
|
+
class InvalidDefinitionError < StandardError; end
|
6
|
+
|
3
7
|
def initialize
|
4
8
|
super
|
5
9
|
end
|
@@ -92,14 +96,6 @@ class ILORb
|
|
92
96
|
map
|
93
97
|
end
|
94
98
|
|
95
|
-
def get_params
|
96
|
-
params = []
|
97
|
-
params += @attributes
|
98
|
-
params << @text if @text
|
99
|
-
params += map_elements.keys
|
100
|
-
params
|
101
|
-
end
|
102
|
-
|
103
99
|
private
|
104
100
|
# private methods are used by DSL
|
105
101
|
|
@@ -118,12 +114,16 @@ class ILORb
|
|
118
114
|
end
|
119
115
|
end
|
120
116
|
@elements.merge!(hash)
|
117
|
+
else
|
118
|
+
raise InvalidDefinitionError, "no elements and text"
|
121
119
|
end
|
122
120
|
end
|
123
121
|
|
124
122
|
def text(param)
|
125
123
|
if @elements.empty?
|
126
124
|
@text = param
|
125
|
+
else
|
126
|
+
raise InvalidDefinitionError, "no text and elements"
|
127
127
|
end
|
128
128
|
end
|
129
129
|
|
data/lib/ilorb/version.rb
CHANGED
data/lib/ilorb.rb
CHANGED
@@ -8,8 +8,6 @@ require 'ilorb/ribcl'
|
|
8
8
|
|
9
9
|
class ILORb
|
10
10
|
|
11
|
-
class NotImplemented < StandardError; end
|
12
|
-
|
13
11
|
def initialize(config = {})
|
14
12
|
@hostname = config[:hostname]
|
15
13
|
@login = config[:login] || "Administrator"
|
@@ -32,48 +30,47 @@ class ILORb
|
|
32
30
|
if @ribcl.has_command?(name)
|
33
31
|
command = @ribcl.command(name)
|
34
32
|
|
35
|
-
raise
|
33
|
+
raise RIBCL::NotImplementedError, "#{name} is not supported" unless command.supported?
|
34
|
+
@log.info("Calling method #{name}")
|
36
35
|
|
37
36
|
params = args.first || {}
|
38
37
|
attributes = {}
|
39
38
|
element_map = nil
|
40
39
|
|
41
|
-
#TODO check for text
|
42
|
-
|
43
40
|
command.get_attributes.each do |attr|
|
44
41
|
# Attributes are mandatory
|
45
42
|
error("Attribute #{attr} missing in #{name} call") unless params.has_key?(attr)
|
46
43
|
attributes.store(attr, @ribcl.encode(params.delete(attr)))
|
47
44
|
end
|
48
45
|
|
49
|
-
|
46
|
+
if !command.get_elements.empty?
|
47
|
+
element_map = command.map_elements
|
50
48
|
|
51
|
-
|
52
|
-
|
53
|
-
[ params ].flatten.each do |params_hash|
|
54
|
-
elements = {}
|
55
|
-
params_hash.each do |key, value|
|
56
|
-
# Elements are not mandatory for now
|
57
|
-
elements.store(key, @ribcl.encode(params_hash.delete(key))) if element_map.has_key?(key)
|
49
|
+
elements_array = [params].flatten.map do |params_hash|
|
50
|
+
Hash[params_hash.map{ |k,v| [ k, @ribcl.encode(params_hash.delete(k)) ] if element_map.has_key?(k) }.compact]
|
58
51
|
end
|
59
|
-
elements_array << elements
|
60
|
-
end
|
61
52
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
53
|
+
#TODO check for CDATA
|
54
|
+
|
55
|
+
request = ribcl_request(command, attributes) do |xml|
|
56
|
+
elements_array.each do |elements_hash|
|
57
|
+
elements_hash.each do |key, value|
|
58
|
+
elt = command.get_elements[element_map[key].first]
|
59
|
+
if elt.is_a?(Array)
|
60
|
+
attrs = Hash[elt.map{|x| [x, elements_hash.delete(element_map.invert[[element_map[key].first, x]])]}]
|
61
|
+
else
|
62
|
+
attrs = {element_map[key].last => value}
|
63
|
+
end
|
64
|
+
xml.send(element_map[key].first, attrs)
|
73
65
|
end
|
74
|
-
xml.send(element_map[key].first, attrs)
|
75
66
|
end
|
76
67
|
end
|
68
|
+
elsif !command.get_text.nil?
|
69
|
+
if text = params[command.get_text]
|
70
|
+
request = ribcl_request(command, text, attributes)
|
71
|
+
end
|
72
|
+
else
|
73
|
+
request = ribcl_request(command, attributes)
|
77
74
|
end
|
78
75
|
|
79
76
|
response = send_request(request)
|
@@ -93,6 +90,22 @@ class ILORb
|
|
93
90
|
|
94
91
|
private
|
95
92
|
|
93
|
+
def ribcl_request(command, *args, &block)
|
94
|
+
builder = Nokogiri::XML::Builder.new do |xml|
|
95
|
+
xml.ribcl(:version => "2.0") {
|
96
|
+
xml.login(:password => @password, :user_login => @login) {
|
97
|
+
xml.send(command.context, :mode => command.mode) {
|
98
|
+
xml.send(command.name, *args) {
|
99
|
+
yield xml if block_given?
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
103
|
+
}
|
104
|
+
end
|
105
|
+
|
106
|
+
builder.to_xml
|
107
|
+
end
|
108
|
+
|
96
109
|
def send_request(xml)
|
97
110
|
case @protocol
|
98
111
|
when :http
|
@@ -127,7 +140,7 @@ class ILORb
|
|
127
140
|
sock = TCPSocket.new(@hostname, @port)
|
128
141
|
|
129
142
|
ctx = OpenSSL::SSL::SSLContext.new(:TLSv1)
|
130
|
-
ctx.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
143
|
+
ctx.verify_mode = OpenSSL::SSL::VERIFY_NONE unless @verify_ssl
|
131
144
|
ssl_sock = OpenSSL::SSL::SSLSocket.new(sock, ctx)
|
132
145
|
ssl_sock.sync_close = true
|
133
146
|
|
@@ -178,22 +191,6 @@ class ILORb
|
|
178
191
|
output
|
179
192
|
end
|
180
193
|
|
181
|
-
def ribcl_request(command, args = {}, &block)
|
182
|
-
builder = Nokogiri::XML::Builder.new do |xml|
|
183
|
-
xml.ribcl(:version => "2.0") {
|
184
|
-
xml.login(:password => @password, :user_login => @login) {
|
185
|
-
xml.send(command.context, :mode => command.mode) {
|
186
|
-
xml.send(command.name, args) {
|
187
|
-
yield xml if block_given?
|
188
|
-
}
|
189
|
-
}
|
190
|
-
}
|
191
|
-
}
|
192
|
-
end
|
193
|
-
|
194
|
-
builder.to_xml
|
195
|
-
end
|
196
|
-
|
197
194
|
def setup_commands
|
198
195
|
@ribcl = ILORb::RIBCL.load(File.join(File.dirname(__FILE__), "ilorb/definitions", "*.rb"))
|
199
196
|
nil
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ilorb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Amiez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -84,16 +84,16 @@ dependencies:
|
|
84
84
|
name: nori
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '2'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '2'
|
97
97
|
description: HP ILO Ruby interface
|
98
98
|
email:
|
99
99
|
- jonathan.amiez@gmail.com
|
@@ -101,9 +101,12 @@ executables: []
|
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".ruby-gemset"
|
104
106
|
- Gemfile
|
105
107
|
- Gemfile.lock
|
106
108
|
- README.md
|
109
|
+
- Rakefile
|
107
110
|
- ilorb.gemspec
|
108
111
|
- lib/ilorb.rb
|
109
112
|
- lib/ilorb/definitions/rib.rb
|
@@ -135,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
138
|
version: '0'
|
136
139
|
requirements: []
|
137
140
|
rubyforge_project:
|
138
|
-
rubygems_version: 2.
|
141
|
+
rubygems_version: 2.4.5
|
139
142
|
signing_key:
|
140
143
|
specification_version: 4
|
141
144
|
summary: Configure and retrieve data from server's ILO management card
|