arvados 0.1.20140117103233 → 0.1.20140209152900
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 +7 -0
- data/lib/arvados.rb +70 -16
- metadata +70 -82
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d730f67cac173e2ed364c0efcf1934d03fc38a8e
|
4
|
+
data.tar.gz: 6f4d30d91f02eab3992852d200083bbfeb648318
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 89075e33b692d8b5636dbfda526e122e9a89fb4da918dae53416abda92d4cfa2361537783b77c34cfb8e5243fc66ef5025547f0d13b9f55b6431dc089946e7c6
|
7
|
+
data.tar.gz: 9b7cf63edc1f2e0978d73e5760d428360186604abce8a495206837731717734ca2c709f630969f302335460df6e0724df0d9c82a18990c4a916777851722b49f
|
data/lib/arvados.rb
CHANGED
@@ -2,6 +2,8 @@ require 'rubygems'
|
|
2
2
|
require 'google/api_client'
|
3
3
|
require 'active_support/inflector'
|
4
4
|
require 'json'
|
5
|
+
require 'fileutils'
|
6
|
+
require 'andand'
|
5
7
|
|
6
8
|
ActiveSupport::Inflector.inflections do |inflect|
|
7
9
|
inflect.irregular 'specimen', 'specimens'
|
@@ -23,6 +25,7 @@ class Arvados
|
|
23
25
|
class TransactionFailedError < StandardError
|
24
26
|
end
|
25
27
|
|
28
|
+
@@config = nil
|
26
29
|
@@debuglevel = 0
|
27
30
|
class << self
|
28
31
|
attr_accessor :debuglevel
|
@@ -33,17 +36,17 @@ class Arvados
|
|
33
36
|
@application_name ||= File.split($0).last
|
34
37
|
|
35
38
|
@arvados_api_version = opts[:api_version] ||
|
36
|
-
|
39
|
+
config['ARVADOS_API_VERSION'] ||
|
37
40
|
'v1'
|
38
41
|
@arvados_api_host = opts[:api_host] ||
|
39
|
-
|
42
|
+
config['ARVADOS_API_HOST'] or
|
40
43
|
raise "#{$0}: no :api_host or ENV[ARVADOS_API_HOST] provided."
|
41
44
|
@arvados_api_token = opts[:api_token] ||
|
42
|
-
|
45
|
+
config['ARVADOS_API_TOKEN'] or
|
43
46
|
raise "#{$0}: no :api_token or ENV[ARVADOS_API_TOKEN] provided."
|
44
47
|
|
45
|
-
if (opts[:
|
46
|
-
|
48
|
+
if (opts[:suppress_ssl_warnings] or
|
49
|
+
config['ARVADOS_API_HOST_INSECURE'])
|
47
50
|
suppress_warnings do
|
48
51
|
OpenSSL::SSL.const_set 'VERIFY_PEER', OpenSSL::SSL::VERIFY_NONE
|
49
52
|
end
|
@@ -76,7 +79,7 @@ class Arvados
|
|
76
79
|
each do |method|
|
77
80
|
class << klass; self; end.class_eval do
|
78
81
|
define_method method.name do |*params|
|
79
|
-
self.api_exec
|
82
|
+
self.api_exec method, *params
|
80
83
|
end
|
81
84
|
end
|
82
85
|
end
|
@@ -84,7 +87,7 @@ class Arvados
|
|
84
87
|
# Give the new class access to the API
|
85
88
|
klass.instance_eval do
|
86
89
|
@arvados = _arvados
|
87
|
-
#
|
90
|
+
# TODO: Pull these from the discovery document instead.
|
88
91
|
@api_models_sym = classname.underscore.split('/').last.pluralize.to_sym
|
89
92
|
@api_model_sym = classname.underscore.split('/').last.to_sym
|
90
93
|
end
|
@@ -107,12 +110,19 @@ class Arvados
|
|
107
110
|
api = api.to_s
|
108
111
|
return @discovery_documents["#{api}:#{version}"] ||=
|
109
112
|
begin
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
113
|
+
# fetch new API discovery doc if stale
|
114
|
+
cached_doc = File.expand_path '~/.cache/arvados/discovery_uri.json'
|
115
|
+
if not File.exist?(cached_doc) or (Time.now - File.mtime(cached_doc)) > 86400
|
116
|
+
response = self.execute!(:http_method => :get,
|
117
|
+
:uri => self.discovery_uri(api, version),
|
118
|
+
:authenticated => false)
|
119
|
+
FileUtils.makedirs(File.dirname cached_doc)
|
120
|
+
File.open(cached_doc, 'w') do |f|
|
121
|
+
f.puts response.body
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
File.open(cached_doc) { |f| JSON.load f }
|
116
126
|
end
|
117
127
|
end
|
118
128
|
end
|
@@ -132,6 +142,37 @@ class Arvados
|
|
132
142
|
$stderr.puts "#{File.split($0).last} #{$$}: #{message}" if @@debuglevel >= verbosity
|
133
143
|
end
|
134
144
|
|
145
|
+
def config(config_file_path="~/.config/arvados/settings.conf")
|
146
|
+
return @@config if @@config
|
147
|
+
|
148
|
+
# Initialize config settings with environment variables.
|
149
|
+
config = {}
|
150
|
+
config['ARVADOS_API_HOST'] = ENV['ARVADOS_API_HOST']
|
151
|
+
config['ARVADOS_API_TOKEN'] = ENV['ARVADOS_API_TOKEN']
|
152
|
+
config['ARVADOS_API_HOST_INSECURE'] = ENV['ARVADOS_API_HOST_INSECURE']
|
153
|
+
config['ARVADOS_API_VERSION'] = ENV['ARVADOS_API_VERSION']
|
154
|
+
|
155
|
+
expanded_path = File.expand_path config_file_path
|
156
|
+
if File.exist? expanded_path
|
157
|
+
# Load settings from the config file.
|
158
|
+
lineno = 0
|
159
|
+
File.open(expanded_path).each do |line|
|
160
|
+
lineno = lineno + 1
|
161
|
+
# skip comments and blank lines
|
162
|
+
next if line.match('^\s*#') or not line.match('\S')
|
163
|
+
var, val = line.chomp.split('=', 2)
|
164
|
+
# allow environment settings to override config files.
|
165
|
+
if var and val
|
166
|
+
config[var] ||= val
|
167
|
+
else
|
168
|
+
warn "#{expanded_path}: #{lineno}: could not parse `#{line}'"
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
@@config = config
|
174
|
+
end
|
175
|
+
|
135
176
|
class Model
|
136
177
|
def self.arvados_api
|
137
178
|
arvados.arvados_api
|
@@ -146,15 +187,28 @@ class Arvados
|
|
146
187
|
self.class.arvados.class.debuglog *args
|
147
188
|
end
|
148
189
|
def self.api_exec(method, parameters={})
|
190
|
+
api_method = arvados_api.send(api_models_sym).send(method.name.to_sym)
|
149
191
|
parameters = parameters.
|
150
|
-
merge(:api_token =>
|
192
|
+
merge(:api_token => arvados.config['ARVADOS_API_TOKEN'])
|
151
193
|
parameters.each do |k,v|
|
152
194
|
parameters[k] = v.to_json if v.is_a? Array or v.is_a? Hash
|
153
195
|
end
|
196
|
+
# Look for objects expected by request.properties.(key).$ref and
|
197
|
+
# move them from parameters (query string) to request body.
|
198
|
+
body = nil
|
199
|
+
method.discovery_document['request'].
|
200
|
+
andand['properties'].
|
201
|
+
andand.each do |k,v|
|
202
|
+
if v.is_a? Hash and v['$ref']
|
203
|
+
body ||= {}
|
204
|
+
body[k] = parameters.delete k.to_sym
|
205
|
+
end
|
206
|
+
end
|
154
207
|
result = client.
|
155
|
-
execute(:api_method =>
|
208
|
+
execute(:api_method => api_method,
|
156
209
|
:authenticated => false,
|
157
|
-
:parameters => parameters
|
210
|
+
:parameters => parameters,
|
211
|
+
:body => body)
|
158
212
|
resp = JSON.parse result.body, :symbolize_names => true
|
159
213
|
if resp[:errors]
|
160
214
|
raise Arvados::TransactionFailedError.new(resp[:errors])
|
metadata
CHANGED
@@ -1,112 +1,100 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: arvados
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 20140117103233
|
10
|
-
version: 0.1.20140117103233
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.20140209152900
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Arvados Authors
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2014-02-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
21
14
|
name: google-api-client
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 1
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
- 6
|
32
|
-
- 3
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
33
19
|
version: 0.6.3
|
34
20
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: activesupport
|
38
21
|
prerelease: false
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.6.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
49
33
|
version: 3.2.13
|
50
34
|
type: :runtime
|
51
|
-
|
52
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 3.2.13
|
41
|
+
- !ruby/object:Gem::Dependency
|
53
42
|
name: json
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.7.7
|
48
|
+
type: :runtime
|
54
49
|
prerelease: false
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
hash: 5
|
61
|
-
segments:
|
62
|
-
- 1
|
63
|
-
- 7
|
64
|
-
- 7
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
65
54
|
version: 1.7.7
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: andand
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
66
62
|
type: :runtime
|
67
|
-
|
68
|
-
|
69
|
-
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: This is the Arvados SDK gem, git revision ff963e6ce16fc276cb41b5fb66f8febdbae30d95
|
70
|
+
email: gem-dev@curoverse.com
|
70
71
|
executables: []
|
71
|
-
|
72
72
|
extensions: []
|
73
|
-
|
74
73
|
extra_rdoc_files: []
|
75
|
-
|
76
|
-
files:
|
74
|
+
files:
|
77
75
|
- lib/arvados.rb
|
78
76
|
homepage: http://arvados.org
|
79
|
-
licenses:
|
77
|
+
licenses:
|
80
78
|
- Apache License, Version 2.0
|
79
|
+
metadata: {}
|
81
80
|
post_install_message:
|
82
81
|
rdoc_options: []
|
83
|
-
|
84
|
-
require_paths:
|
82
|
+
require_paths:
|
85
83
|
- lib
|
86
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
none: false
|
97
|
-
requirements:
|
98
|
-
- - ">="
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
hash: 3
|
101
|
-
segments:
|
102
|
-
- 0
|
103
|
-
version: "0"
|
84
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
104
94
|
requirements: []
|
105
|
-
|
106
95
|
rubyforge_project:
|
107
|
-
rubygems_version:
|
96
|
+
rubygems_version: 2.2.1
|
108
97
|
signing_key:
|
109
|
-
specification_version:
|
98
|
+
specification_version: 4
|
110
99
|
summary: Arvados SDK Ruby
|
111
100
|
test_files: []
|
112
|
-
|