xclarity_client 0.6.6 → 0.6.7
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/connection/connection.rb +47 -34
- data/lib/xclarity_client/mixins/job_mixin.rb +0 -4
- data/lib/xclarity_client/mixins/node_mixin.rb +42 -0
- data/lib/xclarity_client/mixins/update_repo_mixin.rb +107 -7
- data/lib/xclarity_client/services/job_management.rb +2 -4
- data/lib/xclarity_client/services/management_server_management.rb +2 -3
- data/lib/xclarity_client/services/node_management.rb +46 -0
- data/lib/xclarity_client/services/osimage_management.rb +3 -2
- data/lib/xclarity_client/services/update_repo_management.rb +100 -47
- data/lib/xclarity_client/version.rb +1 -1
- data/xclarity_client.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35f2443209d986e5608952ffd73ff6136d41793c
|
4
|
+
data.tar.gz: 0c0d9593884792ad1e9be4b718c7d0951e86a99a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc76fc06ce1c471841b8c5868419aa7ff418bda70557199fe4cf024f2212ebd18254baa40ac7f3e00fdfffa98550b050d631dd6767d153ed003ca3f250bc19d6
|
7
|
+
data.tar.gz: ba3dffa723f8eebbdcef91ed75000f8ed534929ff0c62ce16335bd40d3f0a954286156faa163e82328b66035e675a1838d6a1eb23b8ddaec25984128c7ebaa74
|
@@ -3,7 +3,7 @@ require 'faraday-cookie_jar'
|
|
3
3
|
require 'uri'
|
4
4
|
require 'uri/https'
|
5
5
|
require 'timeout'
|
6
|
-
require '
|
6
|
+
require 'net/http'
|
7
7
|
|
8
8
|
module XClarityClient
|
9
9
|
#
|
@@ -25,7 +25,9 @@ module XClarityClient
|
|
25
25
|
def initialize(configuration)
|
26
26
|
@connection = build(configuration)
|
27
27
|
@connection_multipart = build(configuration, true)
|
28
|
+
@connection_net_http = build(configuration, false, true)
|
28
29
|
@timeout = configuration.timeout
|
30
|
+
@configuration = configuration
|
29
31
|
end
|
30
32
|
|
31
33
|
# Does a GET request to an LXCA endpoint
|
@@ -34,10 +36,11 @@ module XClarityClient
|
|
34
36
|
# @param [Hash] query - params to query the endpoint resources
|
35
37
|
# @param [Hash] headers - add headers to the request
|
36
38
|
#
|
37
|
-
def do_get(uri = "", query: {}, headers: {})
|
39
|
+
def do_get(uri = "", query: {}, headers: {}, n_http: false)
|
38
40
|
url_query = query.size > 0 ? "?" + query.map {|k, v| "#{k}=#{v}"}.join("&") : ""
|
39
41
|
Timeout.timeout(@timeout) do
|
40
|
-
@
|
42
|
+
con = n_http ? @connection_net_http : @connection
|
43
|
+
con.get do |req|
|
41
44
|
req.url(uri + url_query)
|
42
45
|
headers.map { |key, value| req.headers[key] = value }
|
43
46
|
end
|
@@ -49,6 +52,32 @@ module XClarityClient
|
|
49
52
|
Faraday::Response.new
|
50
53
|
end
|
51
54
|
|
55
|
+
def do_get_file_download(url, file_path)
|
56
|
+
host = @configuration.host
|
57
|
+
username = @configuration.username
|
58
|
+
password = @configuration.password
|
59
|
+
|
60
|
+
uri = 'https://' + host + url unless host.include?('https')
|
61
|
+
uri = host + url if host.include?('https')
|
62
|
+
|
63
|
+
uri = URI(uri)
|
64
|
+
Net::HTTP.start(uri.host, uri.port,
|
65
|
+
:use_ssl => true,
|
66
|
+
:verify_mode => 0) do |http|
|
67
|
+
|
68
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
69
|
+
request.basic_auth(username, password)
|
70
|
+
|
71
|
+
http.request(request) do |response|
|
72
|
+
open file_path, 'wb' do |io|
|
73
|
+
response.read_body do |chunk|
|
74
|
+
io.write(chunk)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
52
81
|
# Does a POST request to an LXCA endpoint
|
53
82
|
#
|
54
83
|
# @param [String] uri - endpoint to do the request
|
@@ -74,17 +103,11 @@ module XClarityClient
|
|
74
103
|
private
|
75
104
|
|
76
105
|
def build_request(method, url, body = '', multipart = false)
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
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
|
106
|
+
con = multipart ? @connection_multipart : @connection
|
107
|
+
con.send(method) do |request|
|
108
|
+
request.url(url)
|
109
|
+
request.headers['Content-Type'] = 'application/json' unless multipart
|
110
|
+
request.body = body
|
88
111
|
end
|
89
112
|
rescue Faraday::Error::ConnectionFailed => e
|
90
113
|
header = HEADER_MESSAGE + " do_#{method}"
|
@@ -95,7 +118,7 @@ module XClarityClient
|
|
95
118
|
Faraday::Response.new
|
96
119
|
end
|
97
120
|
|
98
|
-
def
|
121
|
+
def create_connection_obj(connection, configuration)
|
99
122
|
user_agent_label = configuration.user_agent_label
|
100
123
|
agent_label = user_agent_label.nil? ? "" : user_agent_label
|
101
124
|
header = "LXCA via Ruby Client/#{XClarityClient::VERSION}"
|
@@ -108,34 +131,24 @@ module XClarityClient
|
|
108
131
|
connection
|
109
132
|
end
|
110
133
|
|
111
|
-
def
|
112
|
-
Faraday.new(url: url) do |faraday|
|
113
|
-
faraday.request(:multipart) # multipart form data
|
114
|
-
faraday.request(:url_encoded) # form-encode POST params
|
115
|
-
faraday.response(:logger, $lxca_log.log) # log requests to log file
|
116
|
-
faraday.use(:cookie_jar) if configuration.auth_type == 'token'
|
117
|
-
faraday.adapter(:net_http) # make requests with net_http
|
118
|
-
faraday.ssl[:verify] = configuration.verify_ssl == 'PEER'
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
def create_faraday_obj(url, configuration)
|
134
|
+
def create_faraday_obj(url, configuration, multipart, n_http)
|
123
135
|
Faraday.new(url: url) do |faraday|
|
136
|
+
faraday.request(:multipart) if multipart # multipart form data
|
124
137
|
faraday.request(:url_encoded) # form-encode POST params
|
125
138
|
faraday.response(:logger, $lxca_log.log) # log requests to log file
|
126
139
|
faraday.use(:cookie_jar) if configuration.auth_type == 'token'
|
127
|
-
faraday.adapter(:httpclient)
|
140
|
+
faraday.adapter(:httpclient) unless n_http || multipart
|
141
|
+
faraday.adapter(:net_http) if n_http || multipart # with net_http
|
128
142
|
faraday.ssl[:verify] = configuration.verify_ssl == 'PEER'
|
129
143
|
end
|
130
144
|
end
|
131
145
|
|
132
|
-
def build_connection(url, configuration, multipart = false)
|
133
|
-
con_obj =
|
134
|
-
con_obj
|
135
|
-
create_connection(con_obj, configuration)
|
146
|
+
def build_connection(url, configuration, multipart = false, n_http = false)
|
147
|
+
con_obj = create_faraday_obj(url, configuration, multipart, n_http)
|
148
|
+
create_connection_obj(con_obj, configuration)
|
136
149
|
end
|
137
150
|
|
138
|
-
def build(configuration, multipart = false)
|
151
|
+
def build(configuration, multipart = false, n_http = false)
|
139
152
|
header = HEADER_MESSAGE + ' build'
|
140
153
|
$lxca_log.info(header, 'Building the connection')
|
141
154
|
hostname = URI.parse(configuration.host)
|
@@ -145,7 +158,7 @@ module XClarityClient
|
|
145
158
|
:query => hostname.query,
|
146
159
|
:fragment => hostname.fragment).to_s
|
147
160
|
$lxca_log.info(header, "Creating connection to #{url}")
|
148
|
-
build_connection(url, configuration, multipart)
|
161
|
+
build_connection(url, configuration, multipart, n_http)
|
149
162
|
end
|
150
163
|
end
|
151
164
|
end
|
@@ -57,8 +57,50 @@ module XClarityClient
|
|
57
57
|
node_management.set_power_state(uuid, :bootToF1)
|
58
58
|
end
|
59
59
|
|
60
|
+
def retrieve_mounted_media_details(uuid = '')
|
61
|
+
node_management.retrieve_mounted_media_details(uuid)
|
62
|
+
end
|
63
|
+
|
64
|
+
def enable_media_mount_support_thinkserver(uuid = '')
|
65
|
+
node_management.enable_media_mount_support(uuid)
|
66
|
+
end
|
67
|
+
|
68
|
+
def disable_media_mount_support_thinkserver(uuid = '')
|
69
|
+
node_management.disable_media_mount_support(uuid)
|
70
|
+
end
|
71
|
+
|
72
|
+
def remove_all_mounted_medias_thinksystem(uuid = '')
|
73
|
+
node_management.remove_all_mounted_medias(uuid)
|
74
|
+
end
|
75
|
+
|
76
|
+
def mount_media_thinkserver(uuid, opts)
|
77
|
+
validate_mount_media_params(opts, 'thinkserver')
|
78
|
+
node_management.mount_media(uuid, opts)
|
79
|
+
end
|
80
|
+
|
81
|
+
def mount_media_thinksystem(uuid, opts)
|
82
|
+
validate_mount_media_params(opts)
|
83
|
+
node_management.mount_media(uuid, opts)
|
84
|
+
end
|
85
|
+
|
86
|
+
def unmount_media_thinkserver(uuid, media_type = '')
|
87
|
+
node_management.unmount_media_thinkserver(uuid, media_type)
|
88
|
+
end
|
89
|
+
|
90
|
+
def unmount_media_thinksystem(uuid, media_uid = '')
|
91
|
+
node_management.unmount_media_thinksystem(uuid, media_uid)
|
92
|
+
end
|
93
|
+
|
60
94
|
private
|
61
95
|
|
96
|
+
def validate_mount_media_params(opts, server_type = '')
|
97
|
+
msg = "parameter 'opts' should be of type hash"
|
98
|
+
raise(msg) unless opts.kind_of?(Hash)
|
99
|
+
err_msg = ':mediaType is mandatory field in input hash for thinkserver'
|
100
|
+
raise(err_msg) if server_type == 'thinkserver' &&
|
101
|
+
!opts.keys.include?(:mediaType)
|
102
|
+
end
|
103
|
+
|
62
104
|
def node_management
|
63
105
|
NodeManagement.new(@config)
|
64
106
|
end
|
@@ -11,23 +11,123 @@ module XClarityClient
|
|
11
11
|
UpdateRepoManagement.new(@config).read_update_repo
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
|
14
|
+
def refresh_update_repo_catalog(scope, machine_types)
|
15
|
+
mt = machine_types
|
16
|
+
msg = 'Parameter machine_types should be of type Array'
|
17
|
+
raise msg unless mt.kind_of?(Array)
|
18
|
+
UpdateRepoManagement.new(@config).refresh_update_repo_catalog(scope, mt)
|
16
19
|
end
|
17
20
|
|
18
|
-
def
|
19
|
-
|
20
|
-
|
21
|
+
def refresh_uxsp_update_repo_catalog(scope, machine_types)
|
22
|
+
mt = machine_types
|
23
|
+
msg = 'Parameter machine_types should be of type Array'
|
24
|
+
raise msg unless mt.kind_of?(Array)
|
25
|
+
UpdateRepoManagement.new(@config).refresh_uxsp_update_repo_catalog(scope,
|
26
|
+
mt)
|
21
27
|
end
|
22
28
|
|
23
|
-
def
|
29
|
+
def updates_info_by_machine_types(machine_types)
|
30
|
+
mt = machine_types
|
31
|
+
msg = 'Parameter machine_types should be of type Array'
|
32
|
+
raise msg unless mt.kind_of?(Array)
|
33
|
+
UpdateRepoManagement.new(@config).updates_info_by_machine_types(mt)
|
34
|
+
end
|
35
|
+
|
36
|
+
def uxsp_updates_info_by_machine_types(machine_types)
|
37
|
+
mt = machine_types
|
38
|
+
msg = 'Parameter machine_types should be of type Array'
|
39
|
+
raise msg unless mt.kind_of?(Array)
|
40
|
+
UpdateRepoManagement.new(@config).uxsp_updates_info_by_machine_types(mt)
|
41
|
+
end
|
42
|
+
|
43
|
+
def acquire_firmware_updates(machine_types, fixids)
|
44
|
+
mt = machine_types
|
45
|
+
msg = 'Parameter machine_types & fixids should be of type Array'
|
46
|
+
raise msg unless mt.kind_of?(Array) || fixids.kind_of?(Array)
|
47
|
+
UpdateRepoManagement.new(@config).acquire_firmware_updates(mt, fixids)
|
48
|
+
end
|
49
|
+
|
50
|
+
def delete_firmware_updates(file_types, fixids = [])
|
51
|
+
validate_inputs(file_types, fixids)
|
24
52
|
UpdateRepoManagement.new(@config).delete_firmware_updates(file_types,
|
25
53
|
fixids)
|
26
54
|
end
|
27
55
|
|
28
|
-
def export_firmware_updates(file_types, fixids)
|
56
|
+
def export_firmware_updates(file_types, fixids = [])
|
57
|
+
validate_inputs(file_types, fixids)
|
29
58
|
UpdateRepoManagement.new(@config).export_firmware_updates(file_types,
|
30
59
|
fixids)
|
31
60
|
end
|
61
|
+
|
62
|
+
def download_exported_firmware_updates(file_name, dir_path_for_download)
|
63
|
+
dir = dir_path_for_download
|
64
|
+
validate_file_name_dir_path(file_name, dir)
|
65
|
+
UpdateRepoManagement.new(@config)
|
66
|
+
.download_exported_firmware_updates(file_name, dir)
|
67
|
+
end
|
68
|
+
|
69
|
+
def validate_import_updates(file_path)
|
70
|
+
validate_file_path(file_path)
|
71
|
+
UpdateRepoManagement.new(@config).validate_import_updates(file_path)
|
72
|
+
end
|
73
|
+
|
74
|
+
def import_firmware_updates(file_path)
|
75
|
+
validate_file_path(file_path)
|
76
|
+
UpdateRepoManagement.new(@config).import_firmware_updates(file_path)
|
77
|
+
end
|
78
|
+
|
79
|
+
def track_task_status(taskid, tasktype)
|
80
|
+
UpdateRepoManagement.new(@config).track_task_status(taskid, tasktype)
|
81
|
+
end
|
82
|
+
|
83
|
+
def supported_machine_types_detail
|
84
|
+
UpdateRepoManagement.new(@config).supported_machine_types_detail
|
85
|
+
end
|
86
|
+
|
87
|
+
def retrieve_compliance_policy_list
|
88
|
+
UpdateRepoManagement.new(@config).retrieve_compliance_policy_list
|
89
|
+
end
|
90
|
+
|
91
|
+
def export_compliance_policies(policy_names)
|
92
|
+
msg = 'Parameter policy_names should be of type Array'
|
93
|
+
raise msg unless policy_names.kind_of?(Array)
|
94
|
+
UpdateRepoManagement.new(@config).export_compliance_policies(policy_names)
|
95
|
+
end
|
96
|
+
|
97
|
+
def download_exported_compliance_policies(file_name, dir_path_for_download)
|
98
|
+
dir = dir_path_for_download
|
99
|
+
validate_file_name_dir_path(file_name, dir)
|
100
|
+
UpdateRepoManagement.new(@config)\
|
101
|
+
.download_exported_compliance_policies(file_name, dir)
|
102
|
+
end
|
103
|
+
|
104
|
+
def import_compliance_policies(file_path)
|
105
|
+
validate_file_path(file_path)
|
106
|
+
UpdateRepoManagement.new(@config).import_compliance_policies(file_path)
|
107
|
+
end
|
108
|
+
|
109
|
+
private
|
110
|
+
|
111
|
+
def validate_inputs(file_types, fixids)
|
112
|
+
msg = 'Invalid value for argument file_types. Allowed values are'\
|
113
|
+
+ ' - all and payloads'
|
114
|
+
raise msg unless %w(payloads all).include?(file_types)
|
115
|
+
msg = 'Parameter fixids should be of type Array'
|
116
|
+
raise msg unless fixids.kind_of?(Array)
|
117
|
+
raise msg if file_types == 'payloads' && !fixids.any?
|
118
|
+
end
|
119
|
+
|
120
|
+
def validate_file_name_dir_path(file_name, dir_path_for_download)
|
121
|
+
msg = 'Parameter file_name and dir_path_for_download,'\
|
122
|
+
+ 'should be of type String'
|
123
|
+
raise msg unless file_name.kind_of?(String)
|
124
|
+
dir = dir_path_for_download
|
125
|
+
msg = dir + ' directory doesnt exists'
|
126
|
+
raise msg unless File.directory?(dir)
|
127
|
+
end
|
128
|
+
|
129
|
+
def validate_file_path(file_path)
|
130
|
+
raise "file #{file_path} doesn't exists" unless File.file?(file_path)
|
131
|
+
end
|
32
132
|
end
|
33
133
|
end
|
@@ -6,13 +6,11 @@ module XClarityClient
|
|
6
6
|
|
7
7
|
def cancel_job(uuid='')
|
8
8
|
cancelReq = JSON.generate(cancelRequest: 'true')
|
9
|
-
|
10
|
-
response
|
9
|
+
@connection.do_put(managed_resource::BASE_URI + '/' + uuid, cancelReq)
|
11
10
|
end
|
12
11
|
|
13
12
|
def delete_job(uuid='')
|
14
|
-
|
15
|
-
response
|
13
|
+
@connection.do_delete(managed_resource::BASE_URI + '/' + uuid)
|
16
14
|
end
|
17
15
|
end
|
18
16
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'pathname'
|
3
|
-
require 'pp'
|
4
3
|
|
5
4
|
module XClarityClient
|
6
5
|
# ManagementServerManagement class
|
@@ -10,7 +9,7 @@ module XClarityClient
|
|
10
9
|
private
|
11
10
|
|
12
11
|
def start_management_server_updates_import_job(file_type_dict, files, jobid)
|
13
|
-
url = "/files
|
12
|
+
url = "/files#{ManagementServer::BASE_URI}?action=import&jobid=#{jobid}"
|
14
13
|
index = 0
|
15
14
|
payload = {}
|
16
15
|
files.each do |file_name|
|
@@ -59,7 +58,7 @@ module XClarityClient
|
|
59
58
|
payload_files = populate_payload_files(files, file_type_dict)
|
60
59
|
request_body = JSON.generate(:files => payload_files)
|
61
60
|
response = @connection.do_post(url, request_body)
|
62
|
-
jobid = JSON.parse(response.body)
|
61
|
+
jobid = JSON.parse(response.body)['jobid']
|
63
62
|
$lxca_log.info(self.class.to_s + ' ' + __method__.to_s, "jobid: #{jobid}")
|
64
63
|
start_management_server_updates_import_job(file_type_dict, files, jobid)
|
65
64
|
end
|
@@ -20,5 +20,51 @@ module XClarityClient
|
|
20
20
|
|
21
21
|
send_power_request(managed_resource::BASE_URI + '/' + uuid + '/bmc', requested_state)
|
22
22
|
end
|
23
|
+
|
24
|
+
def retrieve_mounted_media_details(uuid)
|
25
|
+
uri = Node::BASE_URI + "/#{uuid}/" + 'mediaMount'
|
26
|
+
@connection.do_get(uri)
|
27
|
+
end
|
28
|
+
|
29
|
+
def enable_media_mount_support(uuid)
|
30
|
+
uri = Node::BASE_URI + "/#{uuid}/" + 'mediaMount'
|
31
|
+
req_body = JSON.generate(:action => 'enableMountMedia')
|
32
|
+
@connection.do_put(uri, req_body)
|
33
|
+
end
|
34
|
+
|
35
|
+
def disable_media_mount_support(uuid)
|
36
|
+
uri = Node::BASE_URI + "/#{uuid}/" + 'mediaMount'
|
37
|
+
req_body = JSON.generate(:action => 'disableMountMedia')
|
38
|
+
@connection.do_put(uri, req_body)
|
39
|
+
end
|
40
|
+
|
41
|
+
def remove_all_mounted_medias(uuid)
|
42
|
+
uri = Node::BASE_URI + "/#{uuid}/" + 'mediaMount'
|
43
|
+
req_body = JSON.generate(:action => 'reset')
|
44
|
+
@connection.do_put(uri, req_body)
|
45
|
+
end
|
46
|
+
|
47
|
+
def mount_media(uuid, opts)
|
48
|
+
uri = Node::BASE_URI + "/#{uuid}/" + 'mediaMount'
|
49
|
+
opts[:action] = 'mount'
|
50
|
+
req_body = JSON.generate(opts)
|
51
|
+
@connection.do_put(uri, req_body)
|
52
|
+
end
|
53
|
+
|
54
|
+
def unmount_media_thinkserver(uuid, media_type)
|
55
|
+
uri = Node::BASE_URI + "/#{uuid}/" + 'mediaMount'
|
56
|
+
opts = { :action => 'unmount',
|
57
|
+
:mediaType => media_type }
|
58
|
+
req_body = JSON.generate(opts)
|
59
|
+
@connection.do_put(uri, req_body)
|
60
|
+
end
|
61
|
+
|
62
|
+
def unmount_media_thinksystem(uuid, media_uid)
|
63
|
+
uri = Node::BASE_URI + "/#{uuid}/" + 'mediaMount'
|
64
|
+
opts = { :action => 'unmount',
|
65
|
+
:UID => media_uid }
|
66
|
+
req_body = JSON.generate(opts)
|
67
|
+
@connection.do_put(uri, req_body)
|
68
|
+
end
|
23
69
|
end
|
24
70
|
end
|
@@ -18,8 +18,9 @@ module XClarityClient
|
|
18
18
|
request_body = JSON.generate(opts)
|
19
19
|
image_name = path.split(File::SEPARATOR).last
|
20
20
|
begin
|
21
|
-
response = @connection.do_post(
|
22
|
-
|
21
|
+
response = @connection.do_post('/files'\
|
22
|
+
+ '#{OsImage::BASE_URI}?jobId=#{job_id}'\
|
23
|
+
'&imageType=OS&imageName=' + image_name,
|
23
24
|
request_body)
|
24
25
|
response
|
25
26
|
rescue Faraday::TimeoutError => e
|
@@ -13,11 +13,8 @@ module XClarityClient
|
|
13
13
|
err_missing_key = 'Option key must be provided for update_repo resource'
|
14
14
|
err_wrong_key = 'The value for option key should be one of these : '\
|
15
15
|
"#{allowed_keys.join(', ')}"
|
16
|
-
|
17
16
|
raise err_missing_key if opts.empty? || !(opts[:key] || opts['key'])
|
18
|
-
|
19
17
|
repo_key = opts[:key] || opts['key']
|
20
|
-
|
21
18
|
raise err_wrong_key unless allowed_keys.include?(repo_key)
|
22
19
|
end
|
23
20
|
|
@@ -36,60 +33,116 @@ module XClarityClient
|
|
36
33
|
|
37
34
|
public
|
38
35
|
|
39
|
-
def
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
36
|
+
def track_task_status(taskid, tasktype)
|
37
|
+
uri = UpdateRepo::BASE_URI + '/status' + '?tasktype=' + tasktype\
|
38
|
+
+ '&taskid=' + taskid.to_s
|
39
|
+
@connection.do_get(uri)
|
40
|
+
end
|
41
|
+
|
42
|
+
def download_exported_firmware_updates(fname, dir_path_to_download)
|
43
|
+
uri = UpdateRepo::BASE_URI + '?action=export&exportRepoFilename=' + fname
|
44
|
+
file_path = File.join(dir_path_to_download, fname)
|
45
|
+
@connection.do_get_file_download(uri, file_path)
|
44
46
|
end
|
45
47
|
|
46
48
|
def read_update_repo
|
47
|
-
|
48
|
-
response.body
|
49
|
+
@connection.do_put(UpdateRepo::BASE_URI + '?action=read')
|
49
50
|
end
|
50
51
|
|
51
|
-
def
|
52
|
-
|
52
|
+
def refresh_update_repo_catalog(scope, mt, uxsp = false)
|
53
|
+
unless %w(all latest).include?(scope)
|
53
54
|
raise 'Invalid argument combination of action and scope. Action'\
|
54
55
|
+ ' refresh can have scope as either all or latest'
|
55
56
|
end
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
57
|
+
req_body = JSON.generate(:mt => mt, :os => '', :type => 'catalog')
|
58
|
+
uri = UpdateRepo::BASE_URI
|
59
|
+
uri += '/uxsps' if uxsp
|
60
|
+
uri += '?action=refresh&with=' + scope
|
61
|
+
@connection.do_put(uri, req_body)
|
61
62
|
end
|
62
63
|
|
63
|
-
def
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
end
|
84
|
-
|
85
|
-
def
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
64
|
+
def refresh_uxsp_update_repo_catalog(scope, mt)
|
65
|
+
refresh_update_repo_catalog(scope, mt, true)
|
66
|
+
end
|
67
|
+
|
68
|
+
def updates_info_by_machine_types(mt, uxsp = false)
|
69
|
+
mt = mt.join(',').to_str
|
70
|
+
uri = UpdateRepo::BASE_URI
|
71
|
+
uri += '/uxsps' if uxsp
|
72
|
+
key = 'uxspsByMt' if uxsp
|
73
|
+
key = 'updatesByMt' unless uxsp
|
74
|
+
uri += '?key=' + key + '&with=all&payload&mt=' + mt
|
75
|
+
@connection.do_get(uri)
|
76
|
+
end
|
77
|
+
|
78
|
+
def uxsp_updates_info_by_machine_types(mt)
|
79
|
+
updates_info_by_machine_types(mt, true)
|
80
|
+
end
|
81
|
+
|
82
|
+
def supported_machine_types_detail
|
83
|
+
@connection.do_get(UpdateRepo::BASE_URI + '?key=supportedMts')
|
84
|
+
end
|
85
|
+
|
86
|
+
def acquire_firmware_updates(mt, fixids)
|
87
|
+
req_body = JSON.generate(:mt => mt, :fixids => fixids, :type => 'latest')
|
88
|
+
@connection.do_put(UpdateRepo::BASE_URI\
|
89
|
+
+ '?action=acquire&with=payloads', req_body)
|
90
|
+
end
|
91
|
+
|
92
|
+
def delete_firmware_updates(file_types, fixids = [])
|
93
|
+
req_body = JSON.generate(:fixids => fixids)
|
94
|
+
@connection.do_put(UpdateRepo::BASE_URI + '?action='\
|
95
|
+
+ 'delete&filetypes=' + file_types.downcase,
|
96
|
+
req_body)
|
97
|
+
end
|
98
|
+
|
99
|
+
def export_firmware_updates(file_types, fixids = [])
|
100
|
+
req_body = JSON.generate(:fixids => fixids)
|
101
|
+
@connection.do_put(UpdateRepo::BASE_URI\
|
102
|
+
+ '?action=export&filetypes='\
|
103
|
+
+ file_types.downcase, req_body)
|
104
|
+
end
|
105
|
+
|
106
|
+
def validate_import_updates(file_path)
|
107
|
+
type = 'application/x-zip-compressed'
|
108
|
+
fname = File.basename(file_path)
|
109
|
+
opts = { :index => 0, :name => fname,
|
110
|
+
:type => type,
|
111
|
+
:size => File.size?(file_path) }
|
112
|
+
req_body = JSON.generate(opts)
|
113
|
+
uri = '/files/updateRepositories/firmware/import/validate'
|
114
|
+
@connection.do_post(uri, req_body)
|
115
|
+
end
|
116
|
+
|
117
|
+
def import_firmware_updates(file_path)
|
118
|
+
uri = '/files/updateRepositories/firmware/import'
|
119
|
+
type = 'application/x-zip-compressed'
|
120
|
+
opts = { :upload_file => Faraday::UploadIO.new(file_path, type) }
|
121
|
+
@connection.do_post(uri, opts, true)
|
122
|
+
end
|
123
|
+
|
124
|
+
def retrieve_compliance_policy_list
|
125
|
+
uri = '/compliancePolicies'
|
126
|
+
@connection.do_get(uri)
|
127
|
+
end
|
128
|
+
|
129
|
+
def export_compliance_policies(policy_names)
|
130
|
+
uri = '/compliancePolicies?action=export'
|
131
|
+
req_body = JSON.generate(:export => policy_names)
|
132
|
+
@connection.do_put(uri, req_body)
|
133
|
+
end
|
134
|
+
|
135
|
+
def download_exported_compliance_policies(fname, dir_path_for_download)
|
136
|
+
uri = '/compliancePolicies?exportDownload=' + fname
|
137
|
+
file_path = File.join(dir_path_for_download, fname)
|
138
|
+
@connection.do_get_file_download(uri, file_path)
|
139
|
+
end
|
140
|
+
|
141
|
+
def import_compliance_policies(file_path)
|
142
|
+
uri = '/files/compliancePolicies?action=import'
|
143
|
+
type = 'application/x-zip-compressed'
|
144
|
+
opts = { :upload_file => Faraday::UploadIO.new(file_path, type) }
|
145
|
+
@connection.do_post(uri, opts, true)
|
93
146
|
end
|
94
147
|
end
|
95
148
|
end
|
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('bundler', '>= 1.
|
20
|
+
spec.add_development_dependency('bundler', '>= 1.11.2')
|
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.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manasa Rao
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-03-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 1.11.2
|
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
|
-
version:
|
27
|
+
version: 1.11.2
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rake
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|