ilorb 0.0.2 → 0.0.3
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.
- 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
|