morpheus-cli 2.12.5 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +5 -0
  3. data/lib/morpheus/api/api_client.rb +15 -30
  4. data/lib/morpheus/api/app_templates_interface.rb +34 -7
  5. data/lib/morpheus/api/apps_interface.rb +20 -1
  6. data/lib/morpheus/api/archive_buckets_interface.rb +124 -0
  7. data/lib/morpheus/api/archive_files_interface.rb +182 -0
  8. data/lib/morpheus/api/{network_pools_interface.rb → image_builder_boot_scripts_interface.rb} +6 -6
  9. data/lib/morpheus/api/{policies_interface.rb → image_builder_image_builds_interface.rb} +20 -15
  10. data/lib/morpheus/api/image_builder_interface.rb +26 -0
  11. data/lib/morpheus/api/{network_proxies_interface.rb → image_builder_preseed_scripts_interface.rb} +6 -6
  12. data/lib/morpheus/cli.rb +10 -9
  13. data/lib/morpheus/cli/alias_command.rb +10 -9
  14. data/lib/morpheus/cli/app_templates.rb +1566 -457
  15. data/lib/morpheus/cli/apps.rb +284 -108
  16. data/lib/morpheus/cli/archives_command.rb +2184 -0
  17. data/lib/morpheus/cli/boot_scripts_command.rb +382 -0
  18. data/lib/morpheus/cli/cli_command.rb +9 -35
  19. data/lib/morpheus/cli/error_handler.rb +2 -0
  20. data/lib/morpheus/cli/hosts.rb +15 -3
  21. data/lib/morpheus/cli/image_builder_command.rb +1208 -0
  22. data/lib/morpheus/cli/instances.rb +118 -47
  23. data/lib/morpheus/cli/man_command.rb +27 -24
  24. data/lib/morpheus/cli/mixins/print_helper.rb +19 -5
  25. data/lib/morpheus/cli/mixins/provisioning_helper.rb +20 -20
  26. data/lib/morpheus/cli/option_types.rb +45 -14
  27. data/lib/morpheus/cli/preseed_scripts_command.rb +381 -0
  28. data/lib/morpheus/cli/remote.rb +1 -0
  29. data/lib/morpheus/cli/roles.rb +2 -2
  30. data/lib/morpheus/cli/shell.rb +3 -2
  31. data/lib/morpheus/cli/version.rb +1 -1
  32. data/lib/morpheus/ext/hash.rb +22 -0
  33. data/lib/morpheus/formatters.rb +33 -0
  34. data/lib/morpheus/terminal.rb +1 -1
  35. metadata +13 -21
  36. data/lib/morpheus/api/cloud_policies_interface.rb +0 -47
  37. data/lib/morpheus/api/group_policies_interface.rb +0 -47
  38. data/lib/morpheus/api/network_domains_interface.rb +0 -47
  39. data/lib/morpheus/api/network_groups_interface.rb +0 -47
  40. data/lib/morpheus/api/network_pool_servers_interface.rb +0 -47
  41. data/lib/morpheus/api/network_services_interface.rb +0 -47
  42. data/lib/morpheus/api/networks_interface.rb +0 -54
  43. data/lib/morpheus/cli/network_domains_command.rb +0 -571
  44. data/lib/morpheus/cli/network_groups_command.rb +0 -602
  45. data/lib/morpheus/cli/network_pool_servers_command.rb +0 -430
  46. data/lib/morpheus/cli/network_pools_command.rb +0 -495
  47. data/lib/morpheus/cli/network_proxies_command.rb +0 -594
  48. data/lib/morpheus/cli/network_services_command.rb +0 -148
  49. data/lib/morpheus/cli/networks_command.rb +0 -855
  50. data/lib/morpheus/cli/policies_command.rb +0 -847
  51. data/scripts/generate_morpheus_commands_help.morpheus +0 -1313
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7adf1a762199012489186d652c92c9add309fbd4
4
- data.tar.gz: 1edf55118de5d3957a91ea6ec33dab8177b740fb
3
+ metadata.gz: af3fa16d252ec2e2f560df9dd102509a85153589
4
+ data.tar.gz: d6f3b71230d52999891206f460ca95f0c444d8ba
5
5
  SHA512:
6
- metadata.gz: 8d70dd26d92a1effcb2b176e229528462c217ac5ea8c59cd6d5b192e9f290b022015608e33a99b5273089ba345445da7e13eebfdf52e7d0461eba86d63b0c4d8
7
- data.tar.gz: d77eed8fba4c9e8ce4615568e9c4a94cc11b04882daa278d8ed0932754a5089118a5c0fa2ee36981db73b1c8be0b6fb5693158c973d63765d2252f87dfcc7b9c
6
+ metadata.gz: f139c587f694b214cc19b28d2a8ba47d52a3d2a172bfb5ef8eb1e45c303b4c496d5fa8d7c6a5800f8954768d4613a0d5880490c2ffb3711b478fce4617e2f7e0
7
+ data.tar.gz: 3ff339def831669445ad4380faa0e3eb6eca9761a6f1fa4c04adba080970bdd1fdf0c74d936173117b31294752e2239b758bd453e8e24adb14e9ecfc0f1adbb2
data/Dockerfile ADDED
@@ -0,0 +1,5 @@
1
+ FROM ruby:2.3.5
2
+
3
+ RUN gem install morpheus-cli
4
+
5
+ ENTRYPOINT ["morpheus"]
@@ -191,43 +191,28 @@ class Morpheus::APIClient
191
191
  # monitoring.incidents
192
192
  # end
193
193
 
194
- def policies
195
- Morpheus::PoliciesInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
194
+ def archive_buckets
195
+ Morpheus::ArchiveBucketsInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
196
196
  end
197
197
 
198
- def group_policies
199
- Morpheus::GroupPoliciesInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
198
+ def archive_files
199
+ Morpheus::ArchiveFilesInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
200
200
  end
201
201
 
202
- def cloud_policies
203
- Morpheus::CloudPoliciesInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
202
+ def image_builder
203
+ Morpheus::ImageBuilderInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
204
204
  end
205
205
 
206
- def networks
207
- Morpheus::NetworksInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
208
- end
209
-
210
- def network_groups
211
- Morpheus::NetworkGroupsInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
212
- end
213
-
214
- def network_pools
215
- Morpheus::NetworkPoolsInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
216
- end
217
-
218
- def network_services
219
- Morpheus::NetworkServicesInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
220
- end
206
+ # def image_builds
207
+ # Morpheus::ImageBuildsInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
208
+ # end
221
209
 
222
- def network_pool_servers
223
- Morpheus::NetworkPoolServersInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
224
- end
210
+ # def preseed_scripts
211
+ # Morpheus::PreseedScriptsInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
212
+ # end
225
213
 
226
- def network_domains
227
- Morpheus::NetworkDomainsInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
228
- end
214
+ # def boot_scripts
215
+ # Morpheus::BootScriptsInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
216
+ # end
229
217
 
230
- def network_proxies
231
- Morpheus::NetworkProxiesInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
232
- end
233
218
  end
@@ -36,6 +36,31 @@ class Morpheus::AppTemplatesInterface < Morpheus::APIClient
36
36
  execute(method: :put, url: url, headers: headers, payload: payload.to_json)
37
37
  end
38
38
 
39
+ def save_image(id, options)
40
+ url = "#{@base_url}/api/app-templates/#{id}"
41
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
42
+ payload = options
43
+ execute(method: :put, url: url, headers: headers, payload: payload.to_json)
44
+ end
45
+
46
+
47
+ # multipart image upload
48
+ def save_image(id, image_file, params={})
49
+ url = "#{@base_url}/api/app-templates/#{id}/image"
50
+ headers = { :params => params, :authorization => "Bearer #{@access_token}"}
51
+ payload = {}
52
+ payload[:templateImage] = image_file
53
+ payload[:multipart] = true
54
+ execute(method: :post, url: url, headers: headers, payload: payload)
55
+ end
56
+
57
+ def duplicate(id, options)
58
+ url = "#{@base_url}/api/app-templates/#{id}/duplicate"
59
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
60
+ payload = options
61
+ execute(method: :post, url: url, headers: headers, payload: payload.to_json)
62
+ end
63
+
39
64
  def destroy(id)
40
65
  url = "#{@base_url}/api/app-templates/#{id}"
41
66
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
@@ -49,10 +74,12 @@ class Morpheus::AppTemplatesInterface < Morpheus::APIClient
49
74
  execute(method: :get, url: url, headers: headers)
50
75
  end
51
76
 
52
- def list_types(options={})
53
- url = "#{@base_url}/api/app-templates/types"
54
- headers = { params: {}, authorization: "Bearer #{@access_token}" }
55
- headers[:params].merge!(options)
56
- execute(method: :get, url: url, headers: headers)
57
- end
58
- end
77
+ # unused, prefer /options/instanceTypes
78
+ # def list_types(options={})
79
+ # url = "#{@base_url}/api/app-templates/types"
80
+ # headers = { params: {}, authorization: "Bearer #{@access_token}" }
81
+ # headers[:params].merge!(options)
82
+ # execute(method: :get, url: url, headers: headers)
83
+ # end
84
+
85
+ end
@@ -23,6 +23,24 @@ class Morpheus::AppsInterface < Morpheus::APIClient
23
23
  execute(opts)
24
24
  end
25
25
 
26
+ def validate(options)
27
+ # url = "#{@base_url}/api/apps/validate-instance"
28
+ url = "#{@base_url}/api/apps/validate"
29
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
30
+ payload = options
31
+ opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
32
+ execute(opts)
33
+ end
34
+
35
+ def validate_instance(options)
36
+ # url = "#{@base_url}/api/apps/validate-instance"
37
+ url = "#{@base_url}/api/apps/validate-instance"
38
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
39
+ payload = options
40
+ opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
41
+ execute(opts)
42
+ end
43
+
26
44
  def create(options)
27
45
  url = "#{@base_url}/api/apps"
28
46
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
@@ -55,9 +73,10 @@ class Morpheus::AppsInterface < Morpheus::APIClient
55
73
  execute(opts)
56
74
  end
57
75
 
58
- def destroy(id)
76
+ def destroy(id, params={})
59
77
  url = "#{@base_url}/api/apps/#{id}"
60
78
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
79
+ headers[:params] = params
61
80
  opts = {method: :delete, url: url, headers: headers}
62
81
  execute(opts)
63
82
  end
@@ -0,0 +1,124 @@
1
+ require 'morpheus/api/api_client'
2
+ require 'uri'
3
+
4
+ class Morpheus::ArchiveBucketsInterface < Morpheus::APIClient
5
+ def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
6
+ @access_token = access_token
7
+ @refresh_token = refresh_token
8
+ @base_url = base_url
9
+ @expires_at = expires_at
10
+ end
11
+
12
+ def get(id, params={})
13
+ raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
14
+ url = "#{@base_url}/api/archives/buckets/#{URI.escape(id)}"
15
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
16
+ opts = {method: :get, url: url, headers: headers}
17
+ execute(opts)
18
+ end
19
+
20
+ def list(params={})
21
+ url = "#{@base_url}/api/archives/buckets"
22
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
23
+ opts = {method: :get, url: url, headers: headers}
24
+ execute(opts)
25
+ end
26
+
27
+ def create(payload)
28
+ url = "#{@base_url}/api/archives/buckets"
29
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
30
+ opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
31
+ execute(opts)
32
+ end
33
+
34
+ def update(id, payload)
35
+ url = "#{@base_url}/api/archives/buckets/#{URI.escape(id.to_s)}"
36
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
37
+ opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
38
+ execute(opts)
39
+ end
40
+
41
+ def destroy(id, params={})
42
+ url = "#{@base_url}/api/archives/buckets/#{URI.escape(id.to_s)}"
43
+ headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
44
+ opts = {method: :delete, url: url, timeout: 30, headers: headers}
45
+ execute(opts)
46
+ end
47
+
48
+ def list_files(id, file_path, params={})
49
+ if file_path.to_s.strip == "/"
50
+ file_path = ""
51
+ end
52
+ url = "#{@base_url}/api/archives/buckets/#{URI.escape(id.to_s)}" + "/files/#{URI.escape(file_path)}".squeeze('/')
53
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
54
+ opts = {method: :get, url: url, headers: headers}
55
+ execute(opts)
56
+ end
57
+
58
+ # upload a file without multipart
59
+ def upload_file(bucket_id, local_file, destination, params={})
60
+ # puts "upload_file #{local_file} to destination #{destination}"
61
+ # destination should be the full filePath, but the api looks like directory?filename=
62
+ path = destination.to_s.squeeze("/")
63
+ if !path || path == "" || path == "/" || path == "."
64
+ raise "#{self.class}.upload_file() passed a bad destination: '#{destination}'"
65
+ end
66
+ if path[0].chr == "/"
67
+ path = path[1..-1]
68
+ end
69
+ path_chunks = path.split("/")
70
+ filename = path_chunks.pop
71
+ safe_dirname = path_chunks.collect {|it| URI.escape(it) }.join("/")
72
+ # filename = File.basename(destination)
73
+ # dirname = File.dirname(destination)
74
+ # if filename == "" || filename == "/"
75
+ # filename = File.basename(local_file)
76
+ # end
77
+ url = "#{@base_url}/api/archives/buckets/#{URI.escape(bucket_id.to_s)}" + "/files/#{safe_dirname}".squeeze('/')
78
+ headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/octet-stream'}
79
+ headers[:params][:filename] = filename # File.basename(destination)
80
+ if !local_file.kind_of?(File)
81
+ local_file = File.new(local_file, 'rb')
82
+ end
83
+ payload = local_file
84
+ headers['Content-Length'] = local_file.size # File.size(local_file)
85
+ execute(method: :post, url: url, headers: headers, payload: payload)
86
+ end
87
+
88
+ def download_bucket_zip_chunked(bucket_id, outfile, params={})
89
+ url = "#{@base_url}/api/archives/buckets/#{URI.escape(bucket_id.to_s)}" + ".zip"
90
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
91
+ opts = {method: :get, url: url, headers: headers}
92
+ # execute(opts, false)
93
+ if Dir.exists?(outfile)
94
+ raise "outfile is invalid. It is the name of an existing directory: #{outfile}"
95
+ end
96
+ # if @verify_ssl == false
97
+ # opts[:verify_ssl] = OpenSSL::SSL::VERIFY_NONE
98
+ # end
99
+ if @dry_run
100
+ return opts
101
+ end
102
+ http_response = nil
103
+ File.open(outfile, 'w') {|f|
104
+ block = proc { |response|
105
+ response.read_body do |chunk|
106
+ # writing to #{outfile} ..."
107
+ f.write chunk
108
+ end
109
+ }
110
+ opts[:block_response] = block
111
+ http_response = RestClient::Request.new(opts).execute
112
+ # RestClient::Request.execute(opts)
113
+ }
114
+ return http_response
115
+ end
116
+
117
+ def recalc(id, params={})
118
+ url = "#{@base_url}/api/archives/buckets/#{URI.escape(id.to_s)}/recalc"
119
+ headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
120
+ opts = {method: :get, url: url, headers: headers, payload: payload.to_json}
121
+ execute(opts)
122
+ end
123
+
124
+ end
@@ -0,0 +1,182 @@
1
+ require 'morpheus/api/api_client'
2
+ class Morpheus::ArchiveFilesInterface < Morpheus::APIClient
3
+ def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
4
+ @access_token = access_token
5
+ @refresh_token = refresh_token
6
+ @base_url = base_url
7
+ @expires_at = expires_at
8
+ end
9
+
10
+ def get(file_id, params={})
11
+ raise "#{self.class}.get() passed a blank id!" if file_id.to_s == ''
12
+ url = "#{@base_url}/api/archives/files/#{file_id}"
13
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
14
+ opts = {method: :get, url: url, headers: headers}
15
+ execute(opts)
16
+ end
17
+
18
+ # full_file_path is $bucketName/$filePath
19
+ def download_file_by_path(full_file_path, params={})
20
+ raise "#{self.class}.download_file_by_path() passed a blank file path!" if full_file_path.to_s == ''
21
+ url = "#{@base_url}/api/archives/download" + "/#{full_file_path}".squeeze('/')
22
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
23
+ opts = {method: :get, url: url, headers: headers}
24
+ execute(opts, false)
25
+ end
26
+
27
+ def download_file_by_path_chunked(full_file_path, outfile, params={})
28
+ raise "#{self.class}.download_file_by_path_chunked() passed a blank file path!" if full_file_path.to_s == ''
29
+ url = "#{@base_url}/api/archives/download" + "/#{full_file_path}".squeeze('/')
30
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
31
+ opts = {method: :get, url: url, headers: headers}
32
+ # execute(opts, false)
33
+ if Dir.exists?(outfile)
34
+ raise "outfile is invalid. It is the name of an existing directory: #{outfile}"
35
+ end
36
+ # if @verify_ssl == false
37
+ # opts[:verify_ssl] = OpenSSL::SSL::VERIFY_NONE
38
+ # end
39
+ if @dry_run
40
+ return opts
41
+ end
42
+ http_response = nil
43
+ File.open(outfile, 'w') {|f|
44
+ block = proc { |response|
45
+ response.read_body do |chunk|
46
+ # writing to #{outfile} ..."
47
+ f.write chunk
48
+ end
49
+ }
50
+ opts[:block_response] = block
51
+ http_response = RestClient::Request.new(opts).execute
52
+ # RestClient::Request.execute(opts)
53
+ }
54
+ return http_response
55
+ end
56
+
57
+ def download_public_file_by_path_chunked(full_file_path, outfile, params={})
58
+ raise "#{self.class}.download_public_file_by_path_chunked() passed a blank file path!" if full_file_path.to_s == ''
59
+ url = "#{@base_url}/public-archives/download" + "/#{full_file_path}".squeeze('/')
60
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
61
+ opts = {method: :get, url: url, headers: headers}
62
+ # execute(opts, false)
63
+ if Dir.exists?(outfile)
64
+ raise "outfile is invalid. It is the name of an existing directory: #{outfile}"
65
+ end
66
+ # if @verify_ssl == false
67
+ # opts[:verify_ssl] = OpenSSL::SSL::VERIFY_NONE
68
+ # end
69
+ if @dry_run
70
+ return opts
71
+ end
72
+ http_response = nil
73
+ File.open(outfile, 'w') {|f|
74
+ block = proc { |response|
75
+ response.read_body do |chunk|
76
+ # writing to #{outfile} ..."
77
+ f.write chunk
78
+ end
79
+ }
80
+ opts[:block_response] = block
81
+ http_response = RestClient::Request.new(opts).execute
82
+ # RestClient::Request.execute(opts)
83
+ }
84
+ return http_response
85
+ end
86
+
87
+ def download_file_by_link_chunked(link_key, outfile, params={})
88
+ raise "#{self.class}.download_file_by_link_chunked() passed a blank file path!" if full_file_path.to_s == ''
89
+ url = "#{@base_url}/public-archives/link"
90
+ params['s'] = link_key
91
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
92
+ opts = {method: :get, url: url, headers: headers}
93
+ # execute(opts, false)
94
+ if Dir.exists?(outfile)
95
+ raise "outfile is invalid. It is the name of an existing directory: #{outfile}"
96
+ end
97
+ # if @verify_ssl == false
98
+ # opts[:verify_ssl] = OpenSSL::SSL::VERIFY_NONE
99
+ # end
100
+ if @dry_run
101
+ return opts
102
+ end
103
+ http_response = nil
104
+ File.open(outfile, 'w') {|f|
105
+ block = proc { |response|
106
+ response.read_body do |chunk|
107
+ # writing to #{outfile} ..."
108
+ f.write chunk
109
+ end
110
+ }
111
+ opts[:block_response] = block
112
+ http_response = RestClient::Request.new(opts).execute
113
+ # RestClient::Request.execute(opts)
114
+ }
115
+ return http_response
116
+ end
117
+
118
+ def history(file_id, params={})
119
+ raise "#{self.class}.history() passed a blank id!" if file_id.to_s == ''
120
+ url = "#{@base_url}/api/archives/files/#{file_id}/history"
121
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
122
+ opts = {method: :get, url: url, headers: headers}
123
+ execute(opts)
124
+ end
125
+
126
+ def list_links(file_id, params={})
127
+ raise "#{self.class}.links() passed a blank id!" if file_id.to_s == ''
128
+ url = "#{@base_url}/api/archives/files/#{file_id}/links"
129
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
130
+ opts = {method: :get, url: url, headers: headers}
131
+ execute(opts)
132
+ end
133
+
134
+ def create_file_link(file_id, params={})
135
+ url = "#{@base_url}/api/archives/files/#{file_id}/links"
136
+ headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
137
+ opts = {method: :post, url: url, headers: headers}
138
+ execute(opts)
139
+ end
140
+
141
+ def download_file_link(link_key, params={})
142
+ end
143
+
144
+ def destroy_file_link(file_id, link_id, params={})
145
+ url = "#{@base_url}/api/archives/files/#{file_id}/links/#{link_id}"
146
+ headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
147
+ opts = {method: :delete, url: url, timeout: 30, headers: headers}
148
+ execute(opts)
149
+ end
150
+
151
+ # for now upload() and list_files() are available in ArchiveBucketsInterface
152
+ # the url is like /api/archives/buckets/$id/files
153
+
154
+ # def list(params={})
155
+ # url = "#{@base_url}/api/archives/files"
156
+ # headers = { params: params, authorization: "Bearer #{@access_token}" }
157
+ # opts = {method: :get, url: url, headers: headers}
158
+ # execute(opts)
159
+ # end
160
+
161
+ # def create(payload)
162
+ # url = "#{@base_url}/api/archives/files"
163
+ # headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
164
+ # opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
165
+ # execute(opts)
166
+ # end
167
+
168
+ # def update(id, payload)
169
+ # url = "#{@base_url}/api/archives/files/#{id}"
170
+ # headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
171
+ # opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
172
+ # execute(opts)
173
+ # end
174
+
175
+ def destroy(id, params={})
176
+ url = "#{@base_url}/api/archives/files/#{id}"
177
+ headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
178
+ opts = {method: :delete, url: url, timeout: 30, headers: headers}
179
+ execute(opts)
180
+ end
181
+
182
+ end