arvados-cli 0.1.20131212114626 → 0.1.20131212152126
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/bin/arv +55 -20
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 622640ea69fde34097c84b1001d734c7d7d44e5f
|
4
|
+
data.tar.gz: 2aa286553fce18a21cf7d60854daf1937aa767bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b9d83c8aadf5d92cc88f56ad507bee5ad84967605fdfa092a5b401fcabf61b3a616da521c8b5380599d6429d7a8117d6a68a9592361d8f77e187c9a9e108972
|
7
|
+
data.tar.gz: f3218580cf5b0709d2f241d281bc03fcba5ea1302d06cc658300c05570d0159f0d4f5b1f355ff4394e2adb357a641466664d3e4328fc1dc832f62fb3b15e7c15
|
data/bin/arv
CHANGED
@@ -51,6 +51,7 @@ ARVADOS_API_HOST and ARVADOS_API_TOKEN need to be defined as environment variabl
|
|
51
51
|
end
|
52
52
|
|
53
53
|
begin
|
54
|
+
require 'curb'
|
54
55
|
require 'rubygems'
|
55
56
|
require 'google/api_client'
|
56
57
|
require 'json'
|
@@ -64,7 +65,7 @@ rescue LoadError
|
|
64
65
|
|
65
66
|
Please install all required gems:
|
66
67
|
|
67
|
-
gem install google-api-client json
|
68
|
+
gem install activesupport andand curb google-api-client json oj trollop
|
68
69
|
|
69
70
|
EOS
|
70
71
|
end
|
@@ -120,11 +121,11 @@ def to_boolean(s)
|
|
120
121
|
!!(s =~ /^(true|t|yes|y|1)$/i)
|
121
122
|
end
|
122
123
|
|
123
|
-
def help_methods(discovery_document,
|
124
|
-
banner = "\n
|
125
|
-
banner += "The #{
|
124
|
+
def help_methods(discovery_document, resource, method=nil)
|
125
|
+
banner = "\n"
|
126
|
+
banner += "The #{resource} resource type supports the following methods:"
|
126
127
|
banner += "\n\n"
|
127
|
-
discovery_document["resources"][
|
128
|
+
discovery_document["resources"][resource.pluralize]["methods"].
|
128
129
|
each do |k,v|
|
129
130
|
description = ''
|
130
131
|
description = ' ' + v["description"] if v.include?("description")
|
@@ -135,13 +136,13 @@ def help_methods(discovery_document, resource_arg, method=nil)
|
|
135
136
|
|
136
137
|
if not method.nil? and method != '--help' then
|
137
138
|
Trollop::die ("Unknown method #{method.inspect} " +
|
138
|
-
"for resource #{
|
139
|
+
"for resource #{resource.inspect}")
|
139
140
|
end
|
140
141
|
exit 255
|
141
142
|
end
|
142
143
|
|
143
|
-
def help_resources(discovery_document,
|
144
|
-
banner = "\n
|
144
|
+
def help_resources(discovery_document, resource)
|
145
|
+
banner = "\n"
|
145
146
|
banner += "This Arvados instance supports the following resource types:"
|
146
147
|
banner += "\n\n"
|
147
148
|
discovery_document["resources"].each do |k,v|
|
@@ -155,8 +156,8 @@ def help_resources(discovery_document, resource_arg)
|
|
155
156
|
banner += "\n"
|
156
157
|
STDERR.puts banner
|
157
158
|
|
158
|
-
if not
|
159
|
-
Trollop::die "Unknown resource type #{
|
159
|
+
if not resource.nil? and resource != '--help' then
|
160
|
+
Trollop::die "Unknown resource type #{resource.inspect}"
|
160
161
|
end
|
161
162
|
exit 255
|
162
163
|
end
|
@@ -190,10 +191,9 @@ def parse_arguments(discovery_document)
|
|
190
191
|
help_methods(discovery_document, resource, method)
|
191
192
|
end
|
192
193
|
|
193
|
-
discovered_params =
|
194
|
-
|
195
|
-
|
196
|
-
["parameters"])
|
194
|
+
discovered_params = discovery_document\
|
195
|
+
["resources"][resource.pluralize]\
|
196
|
+
["methods"][method]["parameters"]
|
197
197
|
method_opts = Trollop::options do
|
198
198
|
discovered_params.each do |k,v|
|
199
199
|
opts = Hash.new()
|
@@ -247,12 +247,43 @@ if resource_body
|
|
247
247
|
else
|
248
248
|
request_body = {}
|
249
249
|
end
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
250
|
+
|
251
|
+
case api_method
|
252
|
+
when
|
253
|
+
'arvados.users.event_stream',
|
254
|
+
'arvados.jobs.log_stream',
|
255
|
+
'arvados.jobs.log_tail_follow'
|
256
|
+
|
257
|
+
# Special case for methods that respond with data streams rather
|
258
|
+
# than JSON (TODO: use the discovery document instead of a static
|
259
|
+
# list of methods)
|
260
|
+
uri_s = eval(api_method).generate_uri(request_parameters)
|
261
|
+
Curl::Easy.perform(uri_s) do |curl|
|
262
|
+
curl.headers['Accept'] = 'text/plain'
|
263
|
+
curl.headers['Authorization'] = "OAuth2 #{ENV['ARVADOS_API_TOKEN']}"
|
264
|
+
if ENV['ARVADOS_API_HOST_INSECURE']
|
265
|
+
curl.ssl_verify_peer = false
|
266
|
+
curl.ssl_verify_host = false
|
267
|
+
end
|
268
|
+
if global_opts[:verbose]
|
269
|
+
curl.on_header { |data| $stderr.write data }
|
270
|
+
end
|
271
|
+
curl.on_body { |data| $stdout.write data }
|
272
|
+
end
|
273
|
+
exit 0
|
274
|
+
else
|
275
|
+
request_body[:api_token] = ENV['ARVADOS_API_TOKEN']
|
276
|
+
result = client.execute(:api_method => eval(api_method),
|
277
|
+
:parameters => request_parameters,
|
278
|
+
:body => request_body,
|
279
|
+
:authenticated => false)
|
280
|
+
end
|
281
|
+
|
282
|
+
begin
|
283
|
+
results = JSON.parse result.body
|
284
|
+
rescue JSON::ParserError => e
|
285
|
+
abort "Failed to parse server response:\n" + e.to_s
|
286
|
+
end
|
256
287
|
|
257
288
|
if results["errors"] then
|
258
289
|
abort "Error: #{results["errors"][0]}"
|
@@ -264,6 +295,10 @@ elsif global_opts[:json] then
|
|
264
295
|
puts Oj.dump(results)
|
265
296
|
elsif results["items"] and results["kind"].match /list$/i
|
266
297
|
results['items'].each do |i| puts i['uuid'] end
|
298
|
+
elsif results['uuid'].nil?
|
299
|
+
abort("Response did not include a uuid:\n" +
|
300
|
+
Oj.dump(results, :indent => 1) +
|
301
|
+
"\n")
|
267
302
|
else
|
268
303
|
puts results['uuid']
|
269
304
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arvados-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.20131212152126
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arvados Authors
|
@@ -94,7 +94,21 @@ dependencies:
|
|
94
94
|
- - '>='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 2.0.3
|
97
|
-
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: curb
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.8'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.8'
|
111
|
+
description: This is the Arvados SDK CLI gem, git revision d9cd657b733d578ac0d2167dd75967aa4f22e0ac
|
98
112
|
email: gem-dev@clinicalfuture.com
|
99
113
|
executables:
|
100
114
|
- arv
|