Class: Arvados
- Inherits:
-
Object
show all
- Defined in:
- lib/arvados.rb
Defined Under Namespace
Classes: Model, TransactionFailedError
Constant Summary
collapse
- @@config =
nil
- @@debuglevel =
0
Class Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(opts = {}) ⇒ Arvados
Returns a new instance of Arvados.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/arvados.rb', line 28
def initialize(opts={})
@application_version ||= 0.0
@application_name ||= File.split($0).last
@arvados_api_version = opts[:api_version] || 'v1'
@arvados_api_host = opts[:api_host] ||
config['ARVADOS_API_HOST'] or
raise "#{$0}: no :api_host or ENV[ARVADOS_API_HOST] provided."
@arvados_api_token = opts[:api_token] ||
config['ARVADOS_API_TOKEN'] or
raise "#{$0}: no :api_token or ENV[ARVADOS_API_TOKEN] provided."
if (opts[:suppress_ssl_warnings] or
%w(1 true yes).index(config['ARVADOS_API_HOST_INSECURE'].
andand.downcase))
suppress_warnings do
OpenSSL::SSL.const_set 'VERIFY_PEER', OpenSSL::SSL::VERIFY_NONE
end
end
_arvados = self
namespace_class = Arvados.const_set "A#{self.object_id}", Class.new
self.arvados_api.schemas.each do |classname, schema|
next if classname.match /List$/
klass = Class.new(Arvados::Model) do
def self.arvados
@arvados
end
def self.api_models_sym
@api_models_sym
end
def self.api_model_sym
@api_model_sym
end
end
self.
arvados_api.
send(classname.underscore.split('/').last.pluralize.to_sym).
discovered_methods.
each do |method|
class << klass; self; end.class_eval do
define_method method.name do |*params|
self.api_exec method, *params
end
end
end
klass.instance_eval do
@arvados = _arvados
@api_models_sym = classname.underscore.split('/').last.pluralize.to_sym
@api_model_sym = classname.underscore.split('/').last.to_sym
end
namespace_class.const_set classname, klass
self.class.class_eval do
define_method classname.underscore do
klass
end
end
end
end
|
Class Attribute Details
.debuglevel ⇒ Object
Returns the value of attribute debuglevel.
25
26
27
|
# File 'lib/arvados.rb', line 25
def debuglevel
@debuglevel
end
|
Class Method Details
.debuglog(message, verbosity = 1) ⇒ Object
113
114
115
|
# File 'lib/arvados.rb', line 113
def self.debuglog(message, verbosity=1)
$stderr.puts "#{File.split($0).last} #{$$}: #{message}" if @@debuglevel >= verbosity
end
|
Instance Method Details
#arvados_api ⇒ Object
109
110
111
|
# File 'lib/arvados.rb', line 109
def arvados_api
@arvados_api ||= self.client.discovered_api('arvados', @arvados_api_version)
end
|
#client ⇒ Object
102
103
104
105
106
107
|
# File 'lib/arvados.rb', line 102
def client
@client ||= Google::APIClient.
new(:host => @arvados_api_host,
:application_name => @application_name,
:application_version => @application_version.to_s)
end
|
#config(config_file_path = "~/.config/arvados/settings.conf") ⇒ Object
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
# File 'lib/arvados.rb', line 121
def config(config_file_path="~/.config/arvados/settings.conf")
return @@config if @@config
config = {}
config['ARVADOS_API_HOST'] = ENV['ARVADOS_API_HOST']
config['ARVADOS_API_TOKEN'] = ENV['ARVADOS_API_TOKEN']
config['ARVADOS_API_HOST_INSECURE'] = ENV['ARVADOS_API_HOST_INSECURE']
if config['ARVADOS_API_HOST'] and config['ARVADOS_API_TOKEN']
return (@@config = config)
end
begin
expanded_path = File.expand_path config_file_path
if File.exist? expanded_path
lineno = 0
File.open(expanded_path).each do |line|
lineno = lineno + 1
next if line.match('^\s*#') or not line.match('\S')
var, val = line.chomp.split('=', 2)
var.strip!
val.strip!
if !var.empty? and val
config[var] ||= val
else
debuglog "#{expanded_path}: #{lineno}: could not parse `#{line}'", 0
end
end
end
rescue StandardError => e
debuglog "Ignoring error reading #{config_file_path}: #{e}", 0
end
@@config = config
end
|
#debuglog(*args) ⇒ Object
117
118
119
|
# File 'lib/arvados.rb', line 117
def debuglog *args
self.class.debuglog *args
end
|