xclarity_client 0.6.3 → 0.6.8
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 +5 -5
- data/docs/apib/discover_request.apib +3 -1
- data/docs/apib/event.apib +0 -1
- data/docs/apib/manage_request.apib +359 -0
- data/docs/apib/storages.apib +3 -3
- data/docs/apib/update_comp.apib +426 -0
- data/docs/apib/update_repo.apib +0 -57
- data/lib/xclarity_client.rb +0 -1
- data/lib/xclarity_client/client.rb +3 -0
- data/lib/xclarity_client/connection/connection.rb +73 -35
- data/lib/xclarity_client/endpoints/endpoints.rb +3 -0
- data/lib/xclarity_client/endpoints/manage_request.rb +11 -0
- data/lib/xclarity_client/endpoints/management_server.rb +5 -0
- data/lib/xclarity_client/endpoints/storage.rb +7 -6
- data/lib/xclarity_client/endpoints/update_comp.rb +18 -0
- data/lib/xclarity_client/mixins/job_mixin.rb +0 -4
- data/lib/xclarity_client/mixins/manage_request_mixin.rb +54 -0
- data/lib/xclarity_client/mixins/management_server_mixin.rb +40 -0
- data/lib/xclarity_client/mixins/mixins.rb +3 -0
- data/lib/xclarity_client/mixins/node_mixin.rb +42 -0
- data/lib/xclarity_client/mixins/update_comp_mixin.rb +37 -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/manage_request_management.rb +62 -0
- data/lib/xclarity_client/services/management_server_management.rb +86 -0
- 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/remote_access_management.rb +6 -4
- data/lib/xclarity_client/services/services.rb +3 -0
- data/lib/xclarity_client/services/update_comp_management.rb +111 -0
- data/lib/xclarity_client/services/update_repo_management.rb +100 -47
- data/lib/xclarity_client/services/virtual_appliance_management.rb +13 -16
- data/lib/xclarity_client/services/xclarity_service.rb +2 -3
- data/lib/xclarity_client/version.rb +1 -1
- data/lib/xclarity_client/xclarity_credentials_validator.rb +8 -11
- data/xclarity_client.gemspec +2 -2
- metadata +26 -11
- data/lib/xclarity_client/xclarity_base.rb +0 -88
@@ -34,5 +34,8 @@ require 'xclarity_client/mixins/scalable_complex_mixin'
|
|
34
34
|
require 'xclarity_client/mixins/storage_mixin'
|
35
35
|
require 'xclarity_client/mixins/switch_mixin'
|
36
36
|
require 'xclarity_client/mixins/unmanage_request_mixin'
|
37
|
+
require 'xclarity_client/mixins/manage_request_mixin'
|
37
38
|
require 'xclarity_client/mixins/update_repo_mixin'
|
39
|
+
require 'xclarity_client/mixins/update_comp_mixin'
|
38
40
|
require 'xclarity_client/mixins/user_mixin'
|
41
|
+
require 'xclarity_client/mixins/management_server_mixin'
|
@@ -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
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module XClarityClient
|
2
|
+
#
|
3
|
+
# Exposes UpdateCompManagement features
|
4
|
+
#
|
5
|
+
module Mixins::UpdateCompMixin
|
6
|
+
def discover_firmware_update_status
|
7
|
+
UpdateCompManagement.new(@config).fetch_all
|
8
|
+
end
|
9
|
+
|
10
|
+
def discover_updatable_device_comp
|
11
|
+
UpdateCompManagement.new(@config).updatable_device_comp
|
12
|
+
end
|
13
|
+
|
14
|
+
def apply_firmware_update(opts, activation_mode = nil,
|
15
|
+
force_update_mode = nil, onerror_mode = nil)
|
16
|
+
UpdateCompManagement.new(@config).apply_firmware_update(opts,
|
17
|
+
activation_mode,
|
18
|
+
force_update_mode,
|
19
|
+
onerror_mode)
|
20
|
+
end
|
21
|
+
|
22
|
+
def cancel_firmware_update(server = nil, switch = nil, storage = nil,
|
23
|
+
cmm = nil)
|
24
|
+
UpdateCompManagement.new(@config).cancel_firmware_update(server,
|
25
|
+
switch,
|
26
|
+
storage,
|
27
|
+
cmm)
|
28
|
+
end
|
29
|
+
|
30
|
+
def modify_power_state(server = nil, switch = nil, storage = nil, cmm = nil)
|
31
|
+
UpdateCompManagement.new(@config).modify_power_state(server,
|
32
|
+
switch,
|
33
|
+
storage,
|
34
|
+
cmm)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
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
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module XClarityClient
|
4
|
+
# manage request management class
|
5
|
+
class ManageRequestManagement < Services::XClarityService
|
6
|
+
manages_endpoint ManageRequest
|
7
|
+
|
8
|
+
def manage_discovered_devices(manage_request)
|
9
|
+
@connection.do_post(ManageRequest::BASE_URI,
|
10
|
+
JSON.generate([manage_request]))
|
11
|
+
end
|
12
|
+
|
13
|
+
def populate_manage_req_with_security_descriptor(manage_request, val)
|
14
|
+
security_descriptor = {}
|
15
|
+
val = val['securityDescriptor']
|
16
|
+
security_descriptor[:managedAuthEnabled] = val['managedAuthSupported']
|
17
|
+
security_descriptor[:managedAuthSupported] = val['managedAuthSupported']
|
18
|
+
res = security_descriptor[:managedAuthEnabled]
|
19
|
+
security_descriptor[:storedCredentials] = val['storedCredentials'] if res
|
20
|
+
manage_request[:securityDescriptor] = security_descriptor
|
21
|
+
end
|
22
|
+
|
23
|
+
def parse_manage_request(manage_request, val)
|
24
|
+
return false unless val.kind_of?(Array) && !val.empty?
|
25
|
+
manage_request[:managementPorts] = val[0]['managementPorts']
|
26
|
+
manage_request[:type] = val[0]['type']
|
27
|
+
manage_request[:uuid] = val[0]['uuid']
|
28
|
+
discovery_ip_addr = val[0]['ipAddresses'][0]
|
29
|
+
manage_request[:ipAddresses] = [discovery_ip_addr]
|
30
|
+
manage_request[:os] = val[0]['os'] if val[0]['type'] == 'Rackswitch'
|
31
|
+
populate_manage_req_with_security_descriptor(manage_request, val[0])
|
32
|
+
end
|
33
|
+
|
34
|
+
def populate_manage_request_with_discovery_res(discovery_result,
|
35
|
+
manage_request)
|
36
|
+
discovery_result.map do |req|
|
37
|
+
req.instance_variables.each do |attr|
|
38
|
+
val = req.instance_variable_get(attr)
|
39
|
+
parse_manage_request(manage_request, val)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def update_manage_request(manage_request, force, discovery_result)
|
45
|
+
populate_manage_request_with_discovery_res(discovery_result,
|
46
|
+
manage_request)
|
47
|
+
manage_request[:forceManage] = true if force.casecmp('true')
|
48
|
+
end
|
49
|
+
|
50
|
+
def fetch_manage_request(job_id)
|
51
|
+
response = @connection.do_get(ManageRequest::BASE_URI + '/jobs/' + job_id)
|
52
|
+
return [] unless response.success?
|
53
|
+
body = JSON.parse(response.body)
|
54
|
+
body = { ManageRequest::LIST_NAME => body } if body.kind_of?(Array)
|
55
|
+
mrql = ManageRequest::LIST_NAME
|
56
|
+
body = { ManageRequest::LIST_NAME => [body] } unless body.key?(mrql)
|
57
|
+
body[ManageRequest::LIST_NAME].map do |resource_params|
|
58
|
+
ManageRequest.new(resource_params)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
module XClarityClient
|
5
|
+
# ManagementServerManagement class
|
6
|
+
class ManagementServerManagement < Services::XClarityService
|
7
|
+
manages_endpoint ManagementServer
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def start_management_server_updates_import_job(file_type_dict, files, jobid)
|
12
|
+
url = "/files#{ManagementServer::BASE_URI}?action=import&jobid=#{jobid}"
|
13
|
+
index = 0
|
14
|
+
payload = {}
|
15
|
+
files.each do |file_name|
|
16
|
+
type = file_type_dict[File.extname(file_name)]
|
17
|
+
key = 'file_' + (index += 1).to_s
|
18
|
+
payload[key.to_sym] = Faraday::UploadIO.new(file_name, type)
|
19
|
+
end
|
20
|
+
@connection.do_post(url, payload, true)
|
21
|
+
end
|
22
|
+
|
23
|
+
def populate_payload_files(files, file_type_dict)
|
24
|
+
payload_files = []
|
25
|
+
index = 0
|
26
|
+
files.each do |file|
|
27
|
+
name = File.basename(file)
|
28
|
+
payload_file = { :index => index += 1, :name => name.strip,
|
29
|
+
:type => file_type_dict[File.extname(name)].strip,
|
30
|
+
:size => File.size?(file) }
|
31
|
+
payload_files.push(payload_file)
|
32
|
+
end
|
33
|
+
payload_files
|
34
|
+
end
|
35
|
+
|
36
|
+
public
|
37
|
+
|
38
|
+
def get_management_server_updates_info(key = nil)
|
39
|
+
base_url = ManagementServer::BASE_URI
|
40
|
+
url = key.nil? ? base_url : "#{base_url}?key=#{key}"
|
41
|
+
msg = "input key=#{key}"
|
42
|
+
$lxca_log.info(self.class.to_s + ' ' + __method__.to_s, msg)
|
43
|
+
@connection.do_get(url)
|
44
|
+
end
|
45
|
+
|
46
|
+
def download_management_server_updates(fixids)
|
47
|
+
url = "#{ManagementServer::BASE_URI}?action=acquire"
|
48
|
+
opts = { :fixids => fixids }
|
49
|
+
request_body = JSON.generate(opts)
|
50
|
+
@connection.do_post(url, request_body)
|
51
|
+
end
|
52
|
+
|
53
|
+
def import_management_server_updates(files)
|
54
|
+
url = "#{ManagementServer::BASE_URI}?action=import"
|
55
|
+
file_type_dict = { '.txt' => 'text/plain', '.xml' => 'text/xml',
|
56
|
+
'.chg' => 'application/octet-stream',
|
57
|
+
'.tgz' => 'application/x-compressed' }
|
58
|
+
payload_files = populate_payload_files(files, file_type_dict)
|
59
|
+
request_body = JSON.generate(:files => payload_files)
|
60
|
+
response = @connection.do_post(url, request_body)
|
61
|
+
jobid = JSON.parse(response.body)['jobid']
|
62
|
+
$lxca_log.info(self.class.to_s + ' ' + __method__.to_s, "jobid: #{jobid}")
|
63
|
+
start_management_server_updates_import_job(file_type_dict, files, jobid)
|
64
|
+
end
|
65
|
+
|
66
|
+
def apply_management_server_updates(fixids)
|
67
|
+
url = "#{ManagementServer::BASE_URI}?action=apply"
|
68
|
+
opts = { :fixids => fixids }
|
69
|
+
request_body = JSON.generate(opts)
|
70
|
+
@connection.do_put(url, request_body)
|
71
|
+
end
|
72
|
+
|
73
|
+
def delete_management_server_updates(fixids)
|
74
|
+
fixids = fixids.join(',')
|
75
|
+
url = "#{ManagementServer::BASE_URI}/#{fixids}"
|
76
|
+
@connection.do_delete(url)
|
77
|
+
end
|
78
|
+
|
79
|
+
def refresh_management_server_updates_catalog
|
80
|
+
url = "#{ManagementServer::BASE_URI}?action=refresh"
|
81
|
+
opts = { :mts => ['lxca'] }
|
82
|
+
request_body = JSON.generate(opts)
|
83
|
+
@connection.do_post(url, request_body)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
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
|