[ARVADOS] created: 0332c1678b9d7b500f0b11ac60ef387d85e5097c
git at public.curoverse.com
git at public.curoverse.com
Mon Jan 27 16:18:22 EST 2014
at 0332c1678b9d7b500f0b11ac60ef387d85e5097c (commit)
commit 0332c1678b9d7b500f0b11ac60ef387d85e5097c
Author: Tom Clegg <tom at curoverse.com>
Date: Mon Jan 27 12:43:50 2014 -0800
Remove request body object from parameters lists in *.create and
*.update -- mark it required in the request body instead.
refs #1946
diff --git a/services/api/app/controllers/arvados/v1/schema_controller.rb b/services/api/app/controllers/arvados/v1/schema_controller.rb
index 1c75488..7df2edb 100644
--- a/services/api/app/controllers/arvados/v1/schema_controller.rb
+++ b/services/api/app/controllers/arvados/v1/schema_controller.rb
@@ -246,16 +246,9 @@ class Arvados::V1::SchemaController < ApplicationController
path: "#{k.to_s.underscore.pluralize}",
httpMethod: "POST",
description: "Create a new #{k.to_s}.",
- parameters: {
- k.to_s.underscore => {
- type: "object",
- required: false,
- location: "query",
- properties: object_properties
- }
- },
+ parameters: {},
request: {
- required: false,
+ required: true,
properties: {
k.to_s.underscore => {
"$ref" => k.to_s
@@ -280,16 +273,10 @@ class Arvados::V1::SchemaController < ApplicationController
description: "The UUID of the #{k.to_s} in question.",
required: true,
location: "path"
- },
- k.to_s.underscore => {
- type: "object",
- required: false,
- location: "query",
- properties: object_properties
}
},
request: {
- required: false,
+ required: true,
properties: {
k.to_s.underscore => {
"$ref" => k.to_s
commit 0693d6260764bff4deeb12fcd14b8906de9b83ae
Author: Tom Clegg <tom at curoverse.com>
Date: Mon Jan 27 12:31:59 2014 -0800
Add version string to arv (assume "gem install" makes the version
apparent in the executable path).
diff --git a/sdk/cli/bin/arv b/sdk/cli/bin/arv
index 90e3327..81e5da8 100755
--- a/sdk/cli/bin/arv
+++ b/sdk/cli/bin/arv
@@ -207,6 +207,7 @@ def parse_arguments(discovery_document)
end
global_opts = Trollop::options do
+ version __FILE__
banner "arv: the Arvados CLI tool"
opt :dry_run, "Don't actually do anything", :short => "-n"
opt :verbose, "Print some things on stderr"
commit 1d84f4602ec9ef13689be6acfb27bc98e6dc367a
Author: Tom Clegg <tom at curoverse.com>
Date: Mon Jan 27 12:11:08 2014 -0800
Do not add body object to discovery parameters.
diff --git a/sdk/cli/bin/arv b/sdk/cli/bin/arv
index 62b22ca..90e3327 100755
--- a/sdk/cli/bin/arv
+++ b/sdk/cli/bin/arv
@@ -269,7 +269,6 @@ def parse_arguments(discovery_document)
required: is_required,
type: :string
}
- discovered_params[resource.to_sym] = body_object
end
end
commit ee08ff24e0126f602bfd9f7371c90f75801c3597
Author: Tom Clegg <tom at curoverse.com>
Date: Mon Jan 27 12:10:34 2014 -0800
Fix up dependencies, pin google-api-client at 0.6.x
diff --git a/sdk/cli/Gemfile b/sdk/cli/Gemfile
index 851fabc..638a00c 100644
--- a/sdk/cli/Gemfile
+++ b/sdk/cli/Gemfile
@@ -1,2 +1,4 @@
source 'https://rubygems.org'
gemspec
+gem 'minitest', '>= 5.0.0'
+gem 'rake'
diff --git a/sdk/cli/Gemfile.lock b/sdk/cli/Gemfile.lock
index 33a3ee8..5118fb8 100644
--- a/sdk/cli/Gemfile.lock
+++ b/sdk/cli/Gemfile.lock
@@ -1,11 +1,11 @@
PATH
remote: .
specs:
- arvados-cli (0.1.20140122170812)
+ arvados-cli (0.1.20140127123159)
activesupport (>= 3.2.13)
andand (>= 1.3.3)
curb (~> 0.8)
- google-api-client (>= 0.6.3)
+ google-api-client (~> 0.6.3)
json (>= 1.7.7)
oj (>= 2.0.3)
trollop (>= 2.0)
@@ -13,32 +13,28 @@ PATH
GEM
remote: https://rubygems.org/
specs:
- activesupport (4.0.2)
+ activesupport (3.2.16)
i18n (~> 0.6, >= 0.6.4)
- minitest (~> 4.2)
- multi_json (~> 1.3)
- thread_safe (~> 0.1)
- tzinfo (~> 0.3.37)
+ multi_json (~> 1.0)
addressable (2.3.5)
andand (1.3.3)
- atomic (1.1.14)
autoparse (0.3.3)
addressable (>= 2.3.1)
extlib (>= 0.9.15)
multi_json (>= 1.0.0)
curb (0.8.5)
extlib (0.9.16)
- faraday (0.9.0)
- multipart-post (>= 1.2, < 3)
- google-api-client (0.7.0)
+ faraday (0.8.9)
+ multipart-post (~> 1.2.0)
+ google-api-client (0.6.4)
addressable (>= 2.3.2)
autoparse (>= 0.3.3)
extlib (>= 0.9.15)
- faraday (>= 0.9.0)
+ faraday (~> 0.8.4)
jwt (>= 0.1.5)
launchy (>= 2.1.1)
multi_json (>= 1.0.0)
- signet (>= 0.5.0)
+ signet (~> 0.4.5)
uuidtools (>= 2.1.0)
i18n (0.6.9)
json (1.8.1)
@@ -46,19 +42,17 @@ GEM
multi_json (>= 1.5)
launchy (2.4.2)
addressable (~> 2.3)
- minitest (4.7.5)
+ minitest (5.2.2)
multi_json (1.8.4)
- multipart-post (2.0.0)
+ multipart-post (1.2.0)
oj (2.5.4)
- signet (0.5.0)
+ rake (10.1.1)
+ signet (0.4.5)
addressable (>= 2.2.3)
- faraday (>= 0.9.0.rc5)
+ faraday (~> 0.8.1)
jwt (>= 0.1.5)
multi_json (>= 1.0.0)
- thread_safe (0.1.3)
- atomic
trollop (2.0)
- tzinfo (0.3.38)
uuidtools (2.1.4)
PLATFORMS
@@ -66,3 +60,5 @@ PLATFORMS
DEPENDENCIES
arvados-cli!
+ minitest (>= 5.0.0)
+ rake
diff --git a/sdk/cli/arvados-cli.gemspec b/sdk/cli/arvados-cli.gemspec
index e629d3b..4360d39 100644
--- a/sdk/cli/arvados-cli.gemspec
+++ b/sdk/cli/arvados-cli.gemspec
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
s.executables << "arv-run-pipeline-instance"
s.executables << "arv-crunch-job"
s.executables << "arv-tag"
- s.add_dependency('google-api-client', '>= 0.6.3')
+ s.add_dependency('google-api-client', '~> 0.6.3')
s.add_dependency('activesupport', '>= 3.2.13')
s.add_dependency('json', '>= 1.7.7')
s.add_dependency('trollop', '>= 2.0')
commit d6e0ee35e9aa71891feacefcc65e98ba8a7615e5
Author: Tom Clegg <tom at curoverse.com>
Date: Mon Jan 27 11:25:19 2014 -0800
Add Gemfile.lock
diff --git a/sdk/ruby/Gemfile.lock b/sdk/ruby/Gemfile.lock
new file mode 100644
index 0000000..f76ba44
--- /dev/null
+++ b/sdk/ruby/Gemfile.lock
@@ -0,0 +1,58 @@
+PATH
+ remote: .
+ specs:
+ arvados (0.1.20140127093947)
+ activesupport (>= 3.2.13)
+ andand
+ google-api-client (~> 0.6.3)
+ json (>= 1.7.7)
+ minitest (>= 5.0.0)
+ rake
+
+GEM
+ remote: https://rubygems.org/
+ specs:
+ activesupport (3.2.16)
+ i18n (~> 0.6, >= 0.6.4)
+ multi_json (~> 1.0)
+ addressable (2.3.5)
+ andand (1.3.3)
+ autoparse (0.3.3)
+ addressable (>= 2.3.1)
+ extlib (>= 0.9.15)
+ multi_json (>= 1.0.0)
+ extlib (0.9.16)
+ faraday (0.8.9)
+ multipart-post (~> 1.2.0)
+ google-api-client (0.6.4)
+ addressable (>= 2.3.2)
+ autoparse (>= 0.3.3)
+ extlib (>= 0.9.15)
+ faraday (~> 0.8.4)
+ jwt (>= 0.1.5)
+ launchy (>= 2.1.1)
+ multi_json (>= 1.0.0)
+ signet (~> 0.4.5)
+ uuidtools (>= 2.1.0)
+ i18n (0.6.9)
+ json (1.8.1)
+ jwt (0.1.11)
+ multi_json (>= 1.5)
+ launchy (2.4.2)
+ addressable (~> 2.3)
+ minitest (5.2.2)
+ multi_json (1.8.4)
+ multipart-post (1.2.0)
+ rake (10.1.1)
+ signet (0.4.5)
+ addressable (>= 2.2.3)
+ faraday (~> 0.8.1)
+ jwt (>= 0.1.5)
+ multi_json (>= 1.0.0)
+ uuidtools (2.1.4)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ arvados!
commit c0633e110d4920794e1de39c4e98cf95fee670cf
Author: Tom Clegg <tom at curoverse.com>
Date: Mon Jan 27 11:23:07 2014 -0800
Send parameters in the request body instead of query parameters if
discovery document specifies request.properties.(key).$ref.
refs #1946
diff --git a/sdk/ruby/arvados.gemspec b/sdk/ruby/arvados.gemspec
index 0b880b4..68c4970 100644
--- a/sdk/ruby/arvados.gemspec
+++ b/sdk/ruby/arvados.gemspec
@@ -13,9 +13,10 @@ Gem::Specification.new do |s|
s.email = 'gem-dev at curoverse.com'
s.licenses = ['Apache License, Version 2.0']
s.files = ["lib/arvados.rb"]
- s.add_dependency('google-api-client', '>= 0.6.3')
+ s.add_dependency('google-api-client', '~> 0.6.3')
s.add_dependency('activesupport', '>= 3.2.13')
s.add_dependency('json', '>= 1.7.7')
+ s.add_dependency('andand')
s.homepage =
'http://arvados.org'
end
diff --git a/sdk/ruby/lib/arvados.rb b/sdk/ruby/lib/arvados.rb
index f494123..5d1f489 100644
--- a/sdk/ruby/lib/arvados.rb
+++ b/sdk/ruby/lib/arvados.rb
@@ -3,6 +3,7 @@ require 'google/api_client'
require 'active_support/inflector'
require 'json'
require 'fileutils'
+require 'andand'
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'specimen', 'specimens'
@@ -78,7 +79,7 @@ class Arvados
each do |method|
class << klass; self; end.class_eval do
define_method method.name do |*params|
- self.api_exec(method.name.to_sym, *params)
+ self.api_exec method, *params
end
end
end
@@ -86,7 +87,7 @@ class Arvados
# Give the new class access to the API
klass.instance_eval do
@arvados = _arvados
- # These should be pulled from the discovery document instead:
+ # TODO: Pull these from the discovery document instead.
@api_models_sym = classname.underscore.split('/').last.pluralize.to_sym
@api_model_sym = classname.underscore.split('/').last.to_sym
end
@@ -186,15 +187,28 @@ class Arvados
self.class.arvados.class.debuglog *args
end
def self.api_exec(method, parameters={})
+ api_method = arvados_api.send(api_models_sym).send(method.name.to_sym)
parameters = parameters.
merge(:api_token => arvados.config['ARVADOS_API_TOKEN'])
parameters.each do |k,v|
parameters[k] = v.to_json if v.is_a? Array or v.is_a? Hash
end
+ # Look for objects expected by request.properties.(key).$ref and
+ # move them from parameters (query string) to request body.
+ body = nil
+ method.discovery_document['request'].
+ andand['properties'].
+ andand.each do |k,v|
+ if v.is_a? Hash and v['$ref']
+ body ||= {}
+ body[k] = parameters.delete k.to_sym
+ end
+ end
result = client.
- execute(:api_method => arvados_api.send(api_models_sym).send(method),
+ execute(:api_method => api_method,
:authenticated => false,
- :parameters => parameters)
+ :parameters => parameters,
+ :body => body)
resp = JSON.parse result.body, :symbolize_names => true
if resp[:errors]
raise Arvados::TransactionFailedError.new(resp[:errors])
commit 5e2a966ce8c7e499691f955ba5b5b37a5473e325
Author: Tom Clegg <tom at curoverse.com>
Date: Mon Jan 27 11:17:27 2014 -0800
Add tests, fix dependencies so "bundle exec rake test" runs.
diff --git a/sdk/cli/test/test_arv-collection-create.rb b/sdk/cli/test/test_arv-collection-create.rb
new file mode 100644
index 0000000..c513be0
--- /dev/null
+++ b/sdk/cli/test/test_arv-collection-create.rb
@@ -0,0 +1,38 @@
+require 'minitest/autorun'
+require 'digest/md5'
+
+class TestCollectionCreate < Minitest::Test
+ def setup
+ end
+
+ def test_small_collection
+ uuid = Digest::MD5.hexdigest(foo_manifest) + '+' + foo_manifest.size.to_s
+ out, err = capture_subprocess_io do
+ assert_arv('--format', 'uuid', 'collection', 'create', '--collection', {
+ uuid: uuid,
+ manifest_text: foo_manifest
+ }.to_json)
+ end
+ assert_equal uuid+"\n", out
+ assert_equal '', err
+ $stderr.puts err
+ end
+
+ protected
+ def assert_arv(*args)
+ expect = case args.first
+ when true, false
+ args.shift
+ else
+ true
+ end
+ assert_equal(expect,
+ system(['./bin/arv', 'arv'], *args),
+ "`arv #{args.join ' '}` " +
+ "should exit #{if expect then 0 else 'non-zero' end}")
+ end
+
+ def foo_manifest
+ ". #{Digest::MD5.hexdigest('foo')}+3 0:3:foo\n"
+ end
+end
diff --git a/sdk/ruby/Gemfile b/sdk/ruby/Gemfile
new file mode 100644
index 0000000..8f441da
--- /dev/null
+++ b/sdk/ruby/Gemfile
@@ -0,0 +1,4 @@
+source 'https://rubygems.org'
+gemspec
+gem 'rake'
+gem 'minitest', '>= 5.0.0'
diff --git a/sdk/ruby/Rakefile b/sdk/ruby/Rakefile
new file mode 100644
index 0000000..cf4652f
--- /dev/null
+++ b/sdk/ruby/Rakefile
@@ -0,0 +1,8 @@
+require 'rake/testtask'
+
+Rake::TestTask.new do |t|
+ t.libs << 'test'
+end
+
+desc 'Run tests'
+task default: :test
diff --git a/sdk/ruby/test/test_big_request.rb b/sdk/ruby/test/test_big_request.rb
new file mode 100644
index 0000000..d62141a
--- /dev/null
+++ b/sdk/ruby/test/test_big_request.rb
@@ -0,0 +1,38 @@
+require 'minitest/autorun'
+require 'arvados'
+require 'digest/md5'
+
+class TestBigRequest < Minitest::Test
+ def setup
+ begin
+ Dir.mkdir './tmp'
+ rescue Errno::EEXIST
+ end
+ @@arv = Arvados.new
+ end
+
+ def boring_manifest nblocks
+ x = '.'
+ (0..nblocks).each do |z|
+ x += ' d41d8cd98f00b204e9800998ecf8427e+0'
+ end
+ x += "0:0:foo.txt\n"
+ x
+ end
+
+ def test_create_manifest nblocks=1
+ manifest_text = boring_manifest nblocks
+ uuid = Digest::MD5.hexdigest(manifest_text) + '+' + manifest_text.size.to_s
+ c = @@arv.collection.create(collection: {
+ uuid: uuid,
+ manifest_text: manifest_text
+ })
+ assert_equal uuid, c[:uuid]
+ end
+
+ def test_create_big_manifest
+ # This ensures that manifest_text is passed in the request body:
+ # it's too large to fit in the query string.
+ test_create_manifest 9999
+ end
+end
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list