xclarity_client 0.6.5 → 0.6.6
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/lib/xclarity_client/client.rb +1 -0
- data/lib/xclarity_client/connection/connection.rb +59 -34
- data/lib/xclarity_client/endpoints/endpoints.rb +1 -0
- data/lib/xclarity_client/endpoints/management_server.rb +5 -0
- data/lib/xclarity_client/mixins/management_server_mixin.rb +40 -0
- data/lib/xclarity_client/mixins/mixins.rb +1 -0
- data/lib/xclarity_client/services/management_server_management.rb +87 -0
- data/lib/xclarity_client/services/remote_access_management.rb +6 -4
- data/lib/xclarity_client/services/services.rb +1 -0
- data/lib/xclarity_client/services/virtual_appliance_management.rb +13 -16
- data/lib/xclarity_client/version.rb +1 -1
- data/lib/xclarity_client/xclarity_credentials_validator.rb +8 -11
- data/lib/xclarity_client.rb +0 -1
- data/xclarity_client.gemspec +1 -1
- metadata +8 -6
- data/lib/xclarity_client/xclarity_base.rb +0 -88
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3de68cc1b07f9953dbefe5fda0b8b8e74df98f0a
|
4
|
+
data.tar.gz: 39e2effba3ca1815ec833c2a63ea36a1e8e03a3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd9cdbe853931062976eb4ab76af736b258b5b2ce68900a131c1a93d95d1cc9c30bd8e4e333fbf6b2e0ff354ef45b01ca10b10334eb4e6dd537d45689c030195
|
7
|
+
data.tar.gz: 930d73b66b1e7548274b83101bfe44611327948bae00df63f413bde98d3025f6da70da8132e4d07b63bb5175011e83d8c8b835d35340346650dea13b749d649f
|
@@ -35,6 +35,7 @@ module XClarityClient
|
|
35
35
|
include XClarityClient::Mixins::UpdateRepoMixin
|
36
36
|
include XClarityClient::Mixins::UpdateCompMixin
|
37
37
|
include XClarityClient::Mixins::UserMixin
|
38
|
+
include XClarityClient::Mixins::ManagementServerMixin
|
38
39
|
|
39
40
|
def initialize(config)
|
40
41
|
@config = config
|
@@ -3,6 +3,7 @@ require 'faraday-cookie_jar'
|
|
3
3
|
require 'uri'
|
4
4
|
require 'uri/https'
|
5
5
|
require 'timeout'
|
6
|
+
require 'pp'
|
6
7
|
|
7
8
|
module XClarityClient
|
8
9
|
#
|
@@ -11,7 +12,6 @@ module XClarityClient
|
|
11
12
|
#
|
12
13
|
class Connection
|
13
14
|
HEADER_MESSAGE = 'XClarityClient::Connection'.freeze
|
14
|
-
#
|
15
15
|
# @param [Hash] configuration - the data to create a connection with the LXCA
|
16
16
|
# @option configuration [String] :host the LXCA host
|
17
17
|
# @option configuration [String] :username the LXCA username
|
@@ -24,10 +24,10 @@ module XClarityClient
|
|
24
24
|
#
|
25
25
|
def initialize(configuration)
|
26
26
|
@connection = build(configuration)
|
27
|
-
@
|
27
|
+
@connection_multipart = build(configuration, true)
|
28
|
+
@timeout = configuration.timeout
|
28
29
|
end
|
29
30
|
|
30
|
-
#
|
31
31
|
# Does a GET request to an LXCA endpoint
|
32
32
|
#
|
33
33
|
# @param [String] uri - endpoint to do the request
|
@@ -49,42 +49,42 @@ module XClarityClient
|
|
49
49
|
Faraday::Response.new
|
50
50
|
end
|
51
51
|
|
52
|
-
#
|
53
52
|
# Does a POST request to an LXCA endpoint
|
54
53
|
#
|
55
54
|
# @param [String] uri - endpoint to do the request
|
56
55
|
# @param [JSON] body - json to be sent in request body
|
57
56
|
#
|
58
|
-
def do_post(uri = '', body = '')
|
59
|
-
build_request(:post, uri, body)
|
57
|
+
def do_post(uri = '', body = '', multipart = false)
|
58
|
+
build_request(:post, uri, body, multipart)
|
60
59
|
end
|
61
60
|
|
62
|
-
#
|
63
61
|
# Does a PUT request to an LXCA endpoint
|
64
|
-
#
|
65
62
|
# @param [String] uri - endpoint to do the request
|
66
63
|
# @param [JSON] body - json to be sent in request body
|
67
|
-
#
|
68
64
|
def do_put(uri = '', body = '')
|
69
65
|
build_request(:put, uri, body)
|
70
66
|
end
|
71
67
|
|
72
|
-
#
|
73
68
|
# Does a DELETE request to an LXCA endpoint
|
74
|
-
#
|
75
69
|
# @param [String] uri - endpoint to do the request
|
76
|
-
#
|
77
70
|
def do_delete(uri = '')
|
78
71
|
build_request(:delete, uri)
|
79
72
|
end
|
80
73
|
|
81
74
|
private
|
82
75
|
|
83
|
-
def build_request(method, url, body = '')
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
76
|
+
def build_request(method, url, body = '', multipart = false)
|
77
|
+
if multipart == true
|
78
|
+
@connection_multipart.send(method) do |request|
|
79
|
+
request.url(url)
|
80
|
+
request.body = body
|
81
|
+
end
|
82
|
+
else
|
83
|
+
@connection.send(method) do |request|
|
84
|
+
request.url(url)
|
85
|
+
request.headers['Content-Type'] = 'application/json'
|
86
|
+
request.body = body
|
87
|
+
end
|
88
88
|
end
|
89
89
|
rescue Faraday::Error::ConnectionFailed => e
|
90
90
|
header = HEADER_MESSAGE + " do_#{method}"
|
@@ -95,32 +95,57 @@ module XClarityClient
|
|
95
95
|
Faraday::Response.new
|
96
96
|
end
|
97
97
|
|
98
|
-
def
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
98
|
+
def create_connection(connection, configuration)
|
99
|
+
user_agent_label = configuration.user_agent_label
|
100
|
+
agent_label = user_agent_label.nil? ? "" : user_agent_label
|
101
|
+
header = "LXCA via Ruby Client/#{XClarityClient::VERSION}"
|
102
|
+
connection.headers[:user_agent] = header + agent_label
|
103
|
+
basic_auth = configuration.auth_type == 'basic_auth'
|
104
|
+
username = configuration.username
|
105
|
+
password = configuration.password
|
106
|
+
connection.basic_auth(username, password) if basic_auth
|
107
|
+
$lxca_log.info(header, 'Connection created Successfuly')
|
108
|
+
connection
|
109
|
+
end
|
109
110
|
|
110
|
-
|
111
|
+
def create_faraday_multipart_obj(url, configuration)
|
112
|
+
Faraday.new(url: url) do |faraday|
|
113
|
+
faraday.request(:multipart) # multipart form data
|
111
114
|
faraday.request(:url_encoded) # form-encode POST params
|
112
115
|
faraday.response(:logger, $lxca_log.log) # log requests to log file
|
113
116
|
faraday.use(:cookie_jar) if configuration.auth_type == 'token'
|
114
|
-
faraday.adapter(:
|
117
|
+
faraday.adapter(:net_http) # make requests with net_http
|
115
118
|
faraday.ssl[:verify] = configuration.verify_ssl == 'PEER'
|
116
119
|
end
|
120
|
+
end
|
117
121
|
|
118
|
-
|
122
|
+
def create_faraday_obj(url, configuration)
|
123
|
+
Faraday.new(url: url) do |faraday|
|
124
|
+
faraday.request(:url_encoded) # form-encode POST params
|
125
|
+
faraday.response(:logger, $lxca_log.log) # log requests to log file
|
126
|
+
faraday.use(:cookie_jar) if configuration.auth_type == 'token'
|
127
|
+
faraday.adapter(:httpclient) # make request with httpclient
|
128
|
+
faraday.ssl[:verify] = configuration.verify_ssl == 'PEER'
|
129
|
+
end
|
130
|
+
end
|
119
131
|
|
120
|
-
|
121
|
-
|
132
|
+
def build_connection(url, configuration, multipart = false)
|
133
|
+
con_obj = create_faraday_multipart_obj(url, configuration) if multipart
|
134
|
+
con_obj = create_faraday_obj(url, configuration) unless multipart
|
135
|
+
create_connection(con_obj, configuration)
|
136
|
+
end
|
122
137
|
|
123
|
-
|
138
|
+
def build(configuration, multipart = false)
|
139
|
+
header = HEADER_MESSAGE + ' build'
|
140
|
+
$lxca_log.info(header, 'Building the connection')
|
141
|
+
hostname = URI.parse(configuration.host)
|
142
|
+
host = hostname.scheme ? hostname.host : hostname.path
|
143
|
+
url = URI::HTTPS.build(:host => host,
|
144
|
+
:port => configuration.port.to_i,
|
145
|
+
:query => hostname.query,
|
146
|
+
:fragment => hostname.fragment).to_s
|
147
|
+
$lxca_log.info(header, "Creating connection to #{url}")
|
148
|
+
build_connection(url, configuration, multipart)
|
124
149
|
end
|
125
150
|
end
|
126
151
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module XClarityClient
|
2
|
+
#
|
3
|
+
# Exposes ManagementServerManagement features
|
4
|
+
#
|
5
|
+
module Mixins::ManagementServerMixin
|
6
|
+
def get_management_server_updates_info(key = nil)
|
7
|
+
obj = ManagementServerManagement.new(@config)
|
8
|
+
obj.get_management_server_updates_info(key)
|
9
|
+
end
|
10
|
+
|
11
|
+
def delete_management_server_updates(fixids)
|
12
|
+
return "parameter 'fixids' should be array" unless fixids.kind_of?(Array)
|
13
|
+
obj = ManagementServerManagement.new(@config)
|
14
|
+
obj.delete_management_server_updates(fixids)
|
15
|
+
end
|
16
|
+
|
17
|
+
def download_management_server_updates(fixids)
|
18
|
+
return "parameter 'fixids' should be array" unless fixids.kind_of?(Array)
|
19
|
+
obj = ManagementServerManagement.new(@config)
|
20
|
+
obj.download_management_server_updates(fixids)
|
21
|
+
end
|
22
|
+
|
23
|
+
def apply_management_server_updates(fixids)
|
24
|
+
return "parameter 'fixids' should be array" unless fixids.kind_of?(Array)
|
25
|
+
obj = ManagementServerManagement.new(@config)
|
26
|
+
obj.apply_management_server_updates(fixids)
|
27
|
+
end
|
28
|
+
|
29
|
+
def refresh_management_server_updates_catalog
|
30
|
+
obj = ManagementServerManagement.new(@config)
|
31
|
+
obj.refresh_management_server_updates_catalog
|
32
|
+
end
|
33
|
+
|
34
|
+
def import_management_server_updates(files)
|
35
|
+
return "parameter 'files' should be array" unless files.kind_of?(Array)
|
36
|
+
obj = ManagementServerManagement.new(@config)
|
37
|
+
obj.import_management_server_updates(files)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'pathname'
|
3
|
+
require 'pp'
|
4
|
+
|
5
|
+
module XClarityClient
|
6
|
+
# ManagementServerManagement class
|
7
|
+
class ManagementServerManagement < Services::XClarityService
|
8
|
+
manages_endpoint ManagementServer
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def start_management_server_updates_import_job(file_type_dict, files, jobid)
|
13
|
+
url = "/files/#{ManagementServer::BASE_URI}?action=import&jobid=#{jobid}"
|
14
|
+
index = 0
|
15
|
+
payload = {}
|
16
|
+
files.each do |file_name|
|
17
|
+
type = file_type_dict[File.extname(file_name)]
|
18
|
+
key = 'file_' + (index += 1).to_s
|
19
|
+
payload[key.to_sym] = Faraday::UploadIO.new(file_name, type)
|
20
|
+
end
|
21
|
+
@connection.do_post(url, payload, true)
|
22
|
+
end
|
23
|
+
|
24
|
+
def populate_payload_files(files, file_type_dict)
|
25
|
+
payload_files = []
|
26
|
+
index = 0
|
27
|
+
files.each do |file|
|
28
|
+
name = File.basename(file)
|
29
|
+
payload_file = { :index => index += 1, :name => name.strip,
|
30
|
+
:type => file_type_dict[File.extname(name)].strip,
|
31
|
+
:size => File.size?(file) }
|
32
|
+
payload_files.push(payload_file)
|
33
|
+
end
|
34
|
+
payload_files
|
35
|
+
end
|
36
|
+
|
37
|
+
public
|
38
|
+
|
39
|
+
def get_management_server_updates_info(key = nil)
|
40
|
+
base_url = ManagementServer::BASE_URI
|
41
|
+
url = key.nil? ? base_url : "#{base_url}?key=#{key}"
|
42
|
+
msg = "input key=#{key}"
|
43
|
+
$lxca_log.info(self.class.to_s + ' ' + __method__.to_s, msg)
|
44
|
+
@connection.do_get(url)
|
45
|
+
end
|
46
|
+
|
47
|
+
def download_management_server_updates(fixids)
|
48
|
+
url = "#{ManagementServer::BASE_URI}?action=acquire"
|
49
|
+
opts = { :fixids => fixids }
|
50
|
+
request_body = JSON.generate(opts)
|
51
|
+
@connection.do_post(url, request_body)
|
52
|
+
end
|
53
|
+
|
54
|
+
def import_management_server_updates(files)
|
55
|
+
url = "#{ManagementServer::BASE_URI}?action=import"
|
56
|
+
file_type_dict = { '.txt' => 'text/plain', '.xml' => 'text/xml',
|
57
|
+
'.chg' => 'application/octet-stream',
|
58
|
+
'.tgz' => 'application/x-compressed' }
|
59
|
+
payload_files = populate_payload_files(files, file_type_dict)
|
60
|
+
request_body = JSON.generate(:files => payload_files)
|
61
|
+
response = @connection.do_post(url, request_body)
|
62
|
+
jobid = JSON.parse(response.body).to_hash['jobid']
|
63
|
+
$lxca_log.info(self.class.to_s + ' ' + __method__.to_s, "jobid: #{jobid}")
|
64
|
+
start_management_server_updates_import_job(file_type_dict, files, jobid)
|
65
|
+
end
|
66
|
+
|
67
|
+
def apply_management_server_updates(fixids)
|
68
|
+
url = "#{ManagementServer::BASE_URI}?action=apply"
|
69
|
+
opts = { :fixids => fixids }
|
70
|
+
request_body = JSON.generate(opts)
|
71
|
+
@connection.do_put(url, request_body)
|
72
|
+
end
|
73
|
+
|
74
|
+
def delete_management_server_updates(fixids)
|
75
|
+
fixids = fixids.join(',')
|
76
|
+
url = "#{ManagementServer::BASE_URI}/#{fixids}"
|
77
|
+
@connection.do_delete(url)
|
78
|
+
end
|
79
|
+
|
80
|
+
def refresh_management_server_updates_catalog
|
81
|
+
url = "#{ManagementServer::BASE_URI}?action=refresh"
|
82
|
+
opts = { :mts => ['lxca'] }
|
83
|
+
request_body = JSON.generate(opts)
|
84
|
+
@connection.do_post(url, request_body)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -1,15 +1,17 @@
|
|
1
1
|
require 'json'
|
2
2
|
|
3
3
|
module XClarityClient
|
4
|
-
class RemoteAccessManagement
|
4
|
+
class RemoteAccessManagement
|
5
5
|
|
6
6
|
def initialize(conf)
|
7
|
-
|
7
|
+
@connection = XClarityClient::Connection.new(conf)
|
8
8
|
end
|
9
9
|
|
10
10
|
def remote_control(uuid)
|
11
11
|
raise 'UUID must not be blank' if uuid.nil? || uuid.empty?
|
12
|
-
con = connection(
|
12
|
+
con = @connection.do_get(
|
13
|
+
"#{RemoteAccess::BASE_URI}/remoteControl", :query => { :uuid => uuid }
|
14
|
+
)
|
13
15
|
|
14
16
|
unless con.success?
|
15
17
|
$lxca_log.error "XClarityClient::RemoteAccessManagement remote_control", "Request failed"
|
@@ -54,4 +56,4 @@ module XClarityClient
|
|
54
56
|
})
|
55
57
|
end
|
56
58
|
end
|
57
|
-
end
|
59
|
+
end
|
@@ -39,3 +39,4 @@ require 'xclarity_client/services/update_repo_management'
|
|
39
39
|
require 'xclarity_client/services/update_comp_management'
|
40
40
|
require 'xclarity_client/services/user_management'
|
41
41
|
require 'xclarity_client/services/virtual_appliance_management'
|
42
|
+
require 'xclarity_client/services/management_server_management'
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module XClarityClient
|
2
|
-
class VirtualApplianceManagement
|
2
|
+
class VirtualApplianceManagement
|
3
3
|
|
4
4
|
BASE_URI = '/aicc'.freeze
|
5
5
|
NETWORK_URI = '/network'.freeze
|
@@ -10,12 +10,11 @@ module XClarityClient
|
|
10
10
|
SUBSCRIPTIONS_URI = '/subscriptions'.freeze
|
11
11
|
|
12
12
|
def initialize(conf)
|
13
|
-
|
13
|
+
@connection = XClarityClient::Connection.new(conf)
|
14
14
|
end
|
15
15
|
|
16
16
|
def configuration_settings
|
17
|
-
|
18
|
-
response
|
17
|
+
@connection.do_get(BASE_URI)
|
19
18
|
end
|
20
19
|
|
21
20
|
def configuration_settings=()
|
@@ -24,8 +23,8 @@ module XClarityClient
|
|
24
23
|
def ip_enablement_state
|
25
24
|
uri = BASE_URI+NETWORK_URI+IPDISABLE_URI
|
26
25
|
$lxca_log.info "XclarityClient::VirtualApplianceManagement ip_enablement_state", "Action has been sent to #{uri}"
|
27
|
-
|
28
|
-
|
26
|
+
|
27
|
+
@connection.do_get(uri)
|
29
28
|
end
|
30
29
|
|
31
30
|
def ip_enablement_state=()
|
@@ -35,8 +34,8 @@ module XClarityClient
|
|
35
34
|
def host_settings
|
36
35
|
uri = BASE_URI+NETWORK_URI+IPDISABLE_URI
|
37
36
|
$lxca_log.info "XclarityClient::VirtualApplianceManagement host_settings", "Action has been sent to #{uri}"
|
38
|
-
|
39
|
-
|
37
|
+
|
38
|
+
@connection.do_get(uri)
|
40
39
|
end
|
41
40
|
|
42
41
|
def host_settings=()
|
@@ -46,8 +45,8 @@ module XClarityClient
|
|
46
45
|
def network_interface_settings(interface)
|
47
46
|
uri = BASE_URI+NETWORK_URI+INTERFACES_URI+"/#{interface}"
|
48
47
|
$lxca_log.info "XclarityClient::VirtualApplianceManagement network_interface_settings", "Action has been sent to #{uri}"
|
49
|
-
|
50
|
-
|
48
|
+
|
49
|
+
@connection.do_get(uri)
|
51
50
|
end
|
52
51
|
|
53
52
|
def host_settings=()
|
@@ -57,8 +56,8 @@ module XClarityClient
|
|
57
56
|
def route_settings
|
58
57
|
uri = BASE_URI+NETWORK_URI+ROUTES_URI
|
59
58
|
$lxca_log.info "XclarityClient::VirtualApplianceManagement route_settings", "Action has been sent to #{uri}"
|
60
|
-
|
61
|
-
|
59
|
+
|
60
|
+
@connection.do_get(uri)
|
62
61
|
end
|
63
62
|
|
64
63
|
def route_settings=()
|
@@ -68,14 +67,12 @@ module XClarityClient
|
|
68
67
|
def subscriptions
|
69
68
|
uri = BASE_URI+SUBSCRIPTIONS_URI
|
70
69
|
$lxca_log.info "XclarityClient::VirtualApplianceManagement subscriptions", "Action has been sent to #{uri}"
|
71
|
-
|
72
|
-
|
70
|
+
|
71
|
+
@connection.do_get(uri)
|
73
72
|
end
|
74
73
|
|
75
74
|
def subscriptions=()
|
76
75
|
|
77
76
|
end
|
78
|
-
|
79
|
-
|
80
77
|
end
|
81
78
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'json'
|
2
2
|
|
3
3
|
module XClarityClient
|
4
|
-
class XClarityCredentialsValidator
|
4
|
+
class XClarityCredentialsValidator
|
5
5
|
BASE_URI = '/sessions'.freeze
|
6
6
|
|
7
7
|
def initialize(conf)
|
8
|
-
|
8
|
+
@connection = XClarityClient::Connection.new(conf)
|
9
9
|
@configuration = conf
|
10
10
|
end
|
11
11
|
|
@@ -33,19 +33,16 @@ module XClarityClient
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def build_session(conf)
|
36
|
-
@response = @
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
36
|
+
@response = @connection.do_post(BASE_URI, {
|
37
|
+
:UserId => conf.username,
|
38
|
+
:password => conf.password
|
39
|
+
}.to_json)
|
40
|
+
|
41
41
|
raise Faraday::Error::ConnectionFailed unless @response.success?
|
42
42
|
end
|
43
43
|
|
44
44
|
def close_session(id_session)
|
45
|
-
@
|
46
|
-
request.url "#{BASE_URI}/#{id_session}"
|
47
|
-
request.headers['Content-Type'] = 'application/json'
|
48
|
-
end
|
45
|
+
@connection.do_delete("#{BASE_URI}/#{id_session}")
|
49
46
|
end
|
50
47
|
end
|
51
48
|
end
|
data/lib/xclarity_client.rb
CHANGED
@@ -8,7 +8,6 @@ end
|
|
8
8
|
require 'xclarity_client/errors/errors'
|
9
9
|
|
10
10
|
require 'xclarity_client/configuration'
|
11
|
-
require 'xclarity_client/xclarity_base'
|
12
11
|
require 'xclarity_client/xclarity_credentials_validator'
|
13
12
|
require 'xclarity_client/discover'
|
14
13
|
require 'xclarity_client/endpoints/endpoints'
|
data/xclarity_client.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
-
spec.add_development_dependency
|
20
|
+
spec.add_development_dependency('bundler', '>= 1.12')
|
21
21
|
spec.add_development_dependency "rake", "~> 10.0"
|
22
22
|
spec.add_development_dependency "rspec", "~> 3.0"
|
23
23
|
spec.add_development_dependency "apib-mock_server", "~> 1.0.3"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xclarity_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manasa Rao
|
@@ -9,20 +9,20 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-01-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '1.12'
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '1.12'
|
28
28
|
- !ruby/object:Gem::Dependency
|
@@ -245,6 +245,7 @@ files:
|
|
245
245
|
- lib/xclarity_client/endpoints/hostplatform.rb
|
246
246
|
- lib/xclarity_client/endpoints/job.rb
|
247
247
|
- lib/xclarity_client/endpoints/manage_request.rb
|
248
|
+
- lib/xclarity_client/endpoints/management_server.rb
|
248
249
|
- lib/xclarity_client/endpoints/node.rb
|
249
250
|
- lib/xclarity_client/endpoints/osimage.rb
|
250
251
|
- lib/xclarity_client/endpoints/persisted_result.rb
|
@@ -284,6 +285,7 @@ files:
|
|
284
285
|
- lib/xclarity_client/mixins/host_platform_mixin.rb
|
285
286
|
- lib/xclarity_client/mixins/job_mixin.rb
|
286
287
|
- lib/xclarity_client/mixins/manage_request_mixin.rb
|
288
|
+
- lib/xclarity_client/mixins/management_server_mixin.rb
|
287
289
|
- lib/xclarity_client/mixins/mixins.rb
|
288
290
|
- lib/xclarity_client/mixins/node_mixin.rb
|
289
291
|
- lib/xclarity_client/mixins/os_image_mixin.rb
|
@@ -318,6 +320,7 @@ files:
|
|
318
320
|
- lib/xclarity_client/services/hostplatform_management.rb
|
319
321
|
- lib/xclarity_client/services/job_management.rb
|
320
322
|
- lib/xclarity_client/services/manage_request_management.rb
|
323
|
+
- lib/xclarity_client/services/management_server_management.rb
|
321
324
|
- lib/xclarity_client/services/mixins/endpoint_manager_mixin.rb
|
322
325
|
- lib/xclarity_client/services/mixins/list_name_interpreter_mixin.rb
|
323
326
|
- lib/xclarity_client/services/mixins/power_action_sender_mixin.rb
|
@@ -340,7 +343,6 @@ files:
|
|
340
343
|
- lib/xclarity_client/services/xclarity_management_mixin.rb
|
341
344
|
- lib/xclarity_client/services/xclarity_service.rb
|
342
345
|
- lib/xclarity_client/version.rb
|
343
|
-
- lib/xclarity_client/xclarity_base.rb
|
344
346
|
- lib/xclarity_client/xclarity_credentials_validator.rb
|
345
347
|
- xclarity_client.gemspec
|
346
348
|
homepage: https://github.com/lenovo/xclarity_client
|
@@ -362,7 +364,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
362
364
|
version: '0'
|
363
365
|
requirements: []
|
364
366
|
rubyforge_project:
|
365
|
-
rubygems_version: 2.6.14
|
367
|
+
rubygems_version: 2.6.14.3
|
366
368
|
signing_key:
|
367
369
|
specification_version: 4
|
368
370
|
summary: Lenovo XClarity API Client
|
@@ -1,88 +0,0 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'faraday-cookie_jar'
|
3
|
-
require 'uri'
|
4
|
-
require 'uri/https'
|
5
|
-
|
6
|
-
module XClarityClient
|
7
|
-
class XClarityBase
|
8
|
-
|
9
|
-
attr_reader :conn
|
10
|
-
|
11
|
-
def initialize(conf, uri)
|
12
|
-
connection_builder(conf, uri)
|
13
|
-
end
|
14
|
-
|
15
|
-
def connection_builder(conf, uri)
|
16
|
-
$lxca_log.info "XClarityClient::XClarityBase connection_builder", "Building the url"
|
17
|
-
#Building configuration
|
18
|
-
hostname = URI.parse(conf.host)
|
19
|
-
url = URI::HTTPS.build({ :host => hostname.scheme ? hostname.host : hostname.path,
|
20
|
-
:port => conf.port.to_i,
|
21
|
-
:path => uri,
|
22
|
-
:query => hostname.query,
|
23
|
-
:fragment => hostname.fragment }).to_s
|
24
|
-
|
25
|
-
$lxca_log.info "XClarityClient::XClarityBase connection_builder", "Creating connection to #{url}"
|
26
|
-
|
27
|
-
@conn = Faraday.new(url: url) do |faraday|
|
28
|
-
faraday.request :url_encoded # form-encode POST params
|
29
|
-
faraday.response :logger, $lxca_log.log # log requests to STDOUT -- This line, should be uncommented if you wanna inspect the URL Request
|
30
|
-
faraday.use :cookie_jar if conf.auth_type == 'token'
|
31
|
-
faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
|
32
|
-
faraday.ssl[:verify] = conf.verify_ssl == 'PEER'
|
33
|
-
end
|
34
|
-
|
35
|
-
@conn.headers[:user_agent] = "LXCA via Ruby Client/#{XClarityClient::VERSION}" + (conf.user_agent_label.nil? ? "" : " (#{conf.user_agent_label})")
|
36
|
-
@conn.basic_auth(conf.username, conf.password) if conf.auth_type == 'basic_auth'
|
37
|
-
$lxca_log.info "XClarityClient::XclarityBase connection_builder", "Connection created Successfuly"
|
38
|
-
@conn
|
39
|
-
end
|
40
|
-
|
41
|
-
private
|
42
|
-
|
43
|
-
def connection(uri = "", opts = {})
|
44
|
-
query = opts.size > 0 ? "?" + opts.map {|k, v| "#{k}=#{v}"}.join(",") : ""
|
45
|
-
begin
|
46
|
-
@conn.get(uri + query)
|
47
|
-
rescue Faraday::Error::ConnectionFailed => e
|
48
|
-
$lxca_log.error "XClarityClient::XclarityBase connection", "Error trying to send a GET to #{uri + query}"
|
49
|
-
Faraday::Response.new
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def do_post(uri="", request = {})
|
54
|
-
begin
|
55
|
-
@conn.post do |req|
|
56
|
-
req.url uri
|
57
|
-
req.headers['Content-Type'] = 'application/json'
|
58
|
-
req.body = request
|
59
|
-
end
|
60
|
-
rescue Faraday::Error::ConnectionFailed => e
|
61
|
-
$lxca_log.error "XClarityClient::XclarityBase do_post", "Error trying to send a POST to #{uri}"
|
62
|
-
$lxca_log.error "XClarityClient::XclarityBase do_post", "Request sent: #{request}"
|
63
|
-
Faraday::Response.new
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def do_put (uri="", request = {})
|
68
|
-
begin
|
69
|
-
@conn.put do |req|
|
70
|
-
req.url uri
|
71
|
-
req.headers['Content-Type'] = 'application/json'
|
72
|
-
req.body = request
|
73
|
-
end
|
74
|
-
rescue Faraday::Error::ConnectionFailed => e
|
75
|
-
$lxca_log.error "XClarityClient::XclarityBase do_put", "Error trying to send a PUT to #{uri}"
|
76
|
-
$lxca_log.error "XClarityClient::XclarityBase do_put", "Request sent: #{request}"
|
77
|
-
Faraday::Response.new
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def do_delete (uri="")
|
82
|
-
@conn.delete do |req|
|
83
|
-
req.url uri
|
84
|
-
req.headers['Content-Type'] = 'application/json'
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|