require File.expand_path('../config/application', __FILE__)
-Vcffarm::Application.load_tasks
+ArvadosWorkbench::Application.load_tasks
end
def current_user
- if Thread.current[:orvos_api_token]
+ if Thread.current[:arvados_api_token]
@current_user ||= User.current
else
logger.error "No API token in Thread"
try_redirect_to_login = true
if params[:api_token]
try_redirect_to_login = false
- Thread.current[:orvos_api_token] = params[:api_token]
+ Thread.current[:arvados_api_token] = params[:api_token]
# Before copying the token into session[], do a simple API
# call to verify its authenticity.
if verify_api_token
- session[:orvos_api_token] = params[:api_token]
+ session[:arvados_api_token] = params[:api_token]
if !request.format.json? and request.method == 'GET'
# Repeat this request with api_token in the (new) session
# cookie instead of the query string. This prevents API
@errors = ['Invalid API token']
self.render_error status: 401
end
- elsif session[:orvos_api_token]
+ elsif session[:arvados_api_token]
# In this case, the token must have already verified at some
# point, but it might have been revoked since. We'll try
# using it, and catch the exception if it doesn't work.
try_redirect_to_login = false
- Thread.current[:orvos_api_token] = session[:orvos_api_token]
+ Thread.current[:arvados_api_token] = session[:arvados_api_token]
begin
yield
- rescue OrvosApiClient::NotLoggedInException
+ rescue ArvadosApiClient::NotLoggedInException
try_redirect_to_login = true
end
end
if try_redirect_to_login
respond_to do |f|
f.html {
- redirect_to $orvos_api_client.orvos_login_url(return_to: request.url)
+ redirect_to $arvados_api_client.arvados_login_url(return_to: request.url)
}
f.json {
@errors = ['No API token supplied -- can\'t really do anything.']
end
ensure
# Remove token in case this Thread is used for anything else.
- Thread.current[:orvos_api_token] = nil
+ Thread.current[:arvados_api_token] = nil
end
end
begin
Link.where(uuid: 'just-verifying-my-api-token')
true
- rescue OrvosApiClient::NotLoggedInException
+ rescue ArvadosApiClient::NotLoggedInException
false
end
end
end
def index
- @links = Link.eager.limit(100).where(head_kind: 'orvos#collection') |
- Link.eager.limit(100).where(tail_kind: 'orvos#collection')
+ @links = Link.eager.limit(100).where(head_kind: 'arvados#collection') |
+ Link.eager.limit(100).where(tail_kind: 'arvados#collection')
@collections = Collection.limit(100).to_hash
@collections.merge!(Collection.
limit(100).
- where(uuid: @links.select{|x|x.head_kind=='orvos#collection'}.collect(&:head_uuid) |
- @links.select{|x|x.tail_kind=='orvos#collection'}.collect(&:tail_uuid)).
+ where(uuid: @links.select{|x|x.head_kind=='arvados#collection'}.collect(&:head_uuid) |
+ @links.select{|x|x.tail_kind=='arvados#collection'}.collect(&:tail_uuid)).
to_hash)
@collection_info = {}
@collections.each do |uuid, c|
ci[:created_at] = c.created_at
end
@links.each do |l|
- if l.head_kind == 'orvos#collection'
+ if l.head_kind == 'arvados#collection'
c = (@collection_info[l.head_uuid] ||= {uuid: l.head_uuid})
if l.link_class == 'resources' and l.name == 'wants'
if l.head.respond_to? :created_at
end
end
end
- if l.tail_kind == 'orvos#collection'
+ if l.tail_kind == 'arvados#collection'
c = (@collection_info[l.tail_uuid] ||= {uuid: l.tail_uuid})
if l.link_class == 'group' and l.name == 'member_of'
c[:groups] ||= {}
skip_before_filter :find_object_by_uuid, :only => [:destroy, :index]
def destroy
session.clear
- redirect_to $orvos_api_client.orvos_logout_url(return_to: logged_out_url)
+ redirect_to $arvados_api_client.orvos_logout_url(return_to: logged_out_url)
end
def index
- redirect_to root_url if session[:orvos_api_token]
+ redirect_to root_url if session[:arvados_api_token]
end
end
cooked = raw + cooked
end
- def link_to_if_orvos_object(attrvalue, opts={}, style_opts={})
- if (resource_class = OrvosBase::resource_class_for_uuid(attrvalue, opts))
- link_uuid = attrvalue.is_a?(OrvosBase) ? attrvalue.uuid : attrvalue
+ def link_to_if_arvados_object(attrvalue, opts={}, style_opts={})
+ if (resource_class = ArvadosBase::resource_class_for_uuid(attrvalue, opts))
+ link_uuid = attrvalue.is_a?(ArvadosBase) ? attrvalue.uuid : attrvalue
link_name = opts[:link_text]
if !link_name
link_name = link_uuid
end
end
pj[:job_id] = pj[:job][:uuid]
- pj[:job_link] = link_to_if_orvos_object pj[:job][:uuid]
+ pj[:job_link] = link_to_if_arvados_object pj[:job][:uuid]
pj[:script_version] = pj[:job][:script_version]
pj[:output] = pj[:job][:output]
pj[:finished_at] = (Time.parse(pj[:job][:finished_at]) rescue nil)
pj[:progress_bar] = raw("<div class=\"progress\" style=\"width:100px\"><div class=\"bar bar-success\" style=\"width:#{pj[:percent_done]}%\"></div><div class=\"bar\" style=\"width:#{pj[:percent_running]}%\"></div></div>")
- pj[:output_link] = link_to_if_orvos_object pj[:output]
+ pj[:output_link] = link_to_if_arvados_object pj[:output]
ret << pj
end
ret
pj[:output] = step[:output_data_locator]
pj[:finished_at] = (Time.parse(step[:warehousejob][:finishtime]) rescue nil)
pj[:progress_bar] = raw("<div class=\"progress\" style=\"width:100px\"><div class=\"bar\" style=\"width:#{pj[:progress]*100}%\"></div></div>")
- pj[:output_link] = link_to_if_orvos_object pj[:output]
+ pj[:output_link] = link_to_if_arvados_object pj[:output]
ret << pj
end
ret
-class OrvosApiClient
+class ArvadosApiClient
class NotLoggedInException < Exception
end
def api(resources_kind, action, data=nil)
- orvos_api_token = Thread.current[:orvos_api_token]
- orvos_api_token = '' if orvos_api_token.nil?
+ arvados_api_token = Thread.current[:arvados_api_token]
+ arvados_api_token = '' if arvados_api_token.nil?
dataargs = ['--data-urlencode',
- "api_token=#{orvos_api_token}",
+ "api_token=#{arvados_api_token}",
'--header',
'Accept:application/json']
if !data.nil?
end
json = nil
resources_kind = class_kind(resources_kind).pluralize if resources_kind.is_a? Class
- url = "#{self.orvos_v1_base}/#{resources_kind}#{action}"
+ url = "#{self.arvados_v1_base}/#{resources_kind}#{action}"
IO.popen([ENV,
'curl',
'-s',
end
end
- def orvos_login_url(params={})
- if Rails.configuration.respond_to? :orvos_login_base
- uri = Rails.configuration.orvos_login_base
+ def arvados_login_url(params={})
+ if Rails.configuration.respond_to? :arvados_login_base
+ uri = Rails.configuration.arvados_login_base
else
- uri = self.orvos_v1_base.sub(%r{/orvos/v\d+.*}, '/login')
+ uri = self.arvados_v1_base.sub(%r{/arvados/v\d+.*}, '/login')
end
if params.size > 0
uri += '?' << params.collect { |k,v|
end
end
- def orvos_logout_url(params={})
- orvos_login_url(params).sub('/login','/logout')
+ def arvados_logout_url(params={})
+ arvados_login_url(params).sub('/login','/logout')
end
- def orvos_v1_base
- Rails.configuration.orvos_v1_base
+ def arvados_v1_base
+ Rails.configuration.arvados_v1_base
end
- def orvos_schema
- @orvos_schema ||= api 'schema', ''
+ def arvados_schema
+ @arvados_schema ||= api 'schema', ''
end
def kind_class(kind)
- kind.match(/^orvos\#(.+?)(_list|List)?$/)[1].pluralize.classify.constantize rescue nil
+ kind.match(/^arvados\#(.+?)(_list|List)?$/)[1].pluralize.classify.constantize rescue nil
end
def class_kind(resource_class)
-class OrvosBase < ActiveRecord::Base
+class ArvadosBase < ActiveRecord::Base
self.abstract_class = true
attr_accessor :attribute_sortkey
def self.uuid_infix_object_kind
@@uuid_infix_object_kind ||= {
- '4zz18' => 'orvos#collection',
- 'tpzed' => 'orvos#user',
- 'ozdt8' => 'orvos#api_client',
- '8i9sb' => 'orvos#job',
- 'o0j2j' => 'orvos#link',
- '57u5n' => 'orvos#log',
- 'j58dm' => 'orvos#specimen',
- 'p5p6p' => 'orvos#pipeline_template',
- 'mxsvm' => 'orvos#pipeline_template', # legacy Pipeline objects
- 'd1hrv' => 'orvos#pipeline_instance',
- 'uo14g' => 'orvos#pipeline_instance', # legacy PipelineInstance objects
- 'j7d0g' => 'orvos#group',
- 'ldvyl' => 'orvos#group' # only needed for legacy Project objects
+ '4zz18' => 'arvados#collection',
+ 'tpzed' => 'arvados#user',
+ 'ozdt8' => 'arvados#api_client',
+ '8i9sb' => 'arvados#job',
+ 'o0j2j' => 'arvados#link',
+ '57u5n' => 'arvados#log',
+ 'j58dm' => 'arvados#specimen',
+ 'p5p6p' => 'arvados#pipeline_template',
+ 'mxsvm' => 'arvados#pipeline_template', # legacy Pipeline objects
+ 'd1hrv' => 'arvados#pipeline_instance',
+ 'uo14g' => 'arvados#pipeline_instance', # legacy PipelineInstance objects
+ 'j7d0g' => 'arvados#group',
+ 'ldvyl' => 'arvados#group' # only needed for legacy Project objects
}
end
def self.columns
return @columns unless @columns.nil?
@columns = []
- return @columns if $orvos_api_client.orvos_schema[self.to_s.to_sym].nil?
- $orvos_api_client.orvos_schema[self.to_s.to_sym].each do |coldef|
+ return @columns if $arvados_api_client.arvados_schema[self.to_s.to_sym].nil?
+ $arvados_api_client.arvados_schema[self.to_s.to_sym].each do |coldef|
k = coldef[:name].to_sym
if coldef[:type] == coldef[:type].downcase
@columns << column(k, coldef[:type].to_sym)
new.private_reload(uuid)
end
def self.where(*args)
- OrvosResourceList.new(self).where(*args)
+ ArvadosResourceList.new(self).where(*args)
end
def self.limit(*args)
- OrvosResourceList.new(self).limit(*args)
+ ArvadosResourceList.new(self).limit(*args)
end
def self.eager(*args)
- OrvosResourceList.new(self).eager(*args)
+ ArvadosResourceList.new(self).eager(*args)
end
def self.all(*args)
- OrvosResourceList.new(self).all(*args)
+ ArvadosResourceList.new(self).all(*args)
end
def save
obdata = {}
if etag
postdata['_method'] = 'PUT'
obdata.delete :uuid
- resp = $orvos_api_client.api(self.class, '/' + uuid, postdata)
+ resp = $arvados_api_client.api(self.class, '/' + uuid, postdata)
else
- resp = $orvos_api_client.api(self.class, '', postdata)
+ resp = $arvados_api_client.api(self.class, '', postdata)
end
return false if !resp[:etag] || !resp[:uuid]
ok
end
end
- @links = $orvos_api_client.api Link, '', { _method: 'GET', where: o, eager: true }
- @links = $orvos_api_client.unpack_api_response(@links)
+ @links = $arvados_api_client.api Link, '', { _method: 'GET', where: o, eager: true }
+ @links = $arvados_api_client.unpack_api_response(@links)
end
def all_links
return @all_links if @all_links
- res = $orvos_api_client.api Link, '', {
+ res = $arvados_api_client.api Link, '', {
_method: 'GET',
where: {
tail_kind: self.kind,
},
eager: true
}
- @all_links = $orvos_api_client.unpack_api_response(res)
+ @all_links = $arvados_api_client.unpack_api_response(res)
end
def reload
private_reload(self.uuid)
if uuid_or_hash.is_a? Hash
hash = uuid_or_hash
else
- hash = $orvos_api_client.api(self.class, '/' + uuid_or_hash)
+ hash = $arvados_api_client.api(self.class, '/' + uuid_or_hash)
end
hash.each do |k,v|
if self.respond_to?(k.to_s + '=')
self.send(k.to_s + '=', v)
else
- # When OrvosApiClient#schema starts telling us what to expect
+ # When ArvadosApiClient#schema starts telling us what to expect
# in API responses (not just the server side database
# columns), this sort of awfulness can be avoided:
self.instance_variable_set('@' + k.to_s, v)
end
def self.resource_class_for_uuid(uuid, opts={})
- if uuid.is_a? OrvosBase
+ if uuid.is_a? ArvadosBase
return uuid.class
end
unless uuid.is_a? String
end
resource_class = nil
uuid.match /^[0-9a-z]{5}-([0-9a-z]{5})-[0-9a-z]{15}$/ do |re|
- resource_class ||= $orvos_api_client.
+ resource_class ||= $arvados_api_client.
kind_class(self.uuid_infix_object_kind[re[1]])
end
if opts[:referring_object] and
opts[:referring_attr] and
opts[:referring_attr].match /_uuid$/
- resource_class ||= $orvos_api_client.
+ resource_class ||= $arvados_api_client.
kind_class(opts[:referring_object].
attributes[opts[:referring_attr].
sub(/_uuid$/, '_kind')])
-class OrvosResourceList
+class ArvadosResourceList
include Enumerable
def initialize(resource_class)
cond = cond.dup
cond.keys.each do |uuid_key|
if cond[uuid_key] and (cond[uuid_key].is_a? Array or
- cond[uuid_key].is_a? OrvosBase)
+ cond[uuid_key].is_a? ArvadosBase)
# Coerce cond[uuid_key] to an array of uuid strings. This
# allows caller the convenience of passing an array of real
# objects and uuids in cond[uuid_key].
cond[uuid_key] = [cond[uuid_key]]
end
cond[uuid_key] = cond[uuid_key].collect do |item|
- if item.is_a? OrvosBase
+ if item.is_a? ArvadosBase
item.uuid
else
item
end
cond.keys.select { |x| x.match /_kind$/ }.each do |kind_key|
if cond[kind_key].is_a? Class
- cond = cond.merge({ kind_key => 'orvos#' + $orvos_api_client.class_kind(cond[kind_key]) })
+ cond = cond.merge({ kind_key => 'arvados#' + $arvados_api_client.class_kind(cond[kind_key]) })
end
end
api_params = {
}
api_params[:eager] = '1' if @eager
api_params[:limit] = @limit if @limit
- res = $orvos_api_client.api @resource_class, '', api_params
- @results = $orvos_api_client.unpack_api_response res
+ res = $arvados_api_client.api @resource_class, '', api_params
+ @results = $arvados_api_client.unpack_api_response res
self
end
-class Collection < OrvosBase
+class Collection < ArvadosBase
def total_bytes
if files
tot = 0
-class Group < OrvosBase
+class Group < ArvadosBase
end
-class Job < OrvosBase
+class Job < ArvadosBase
end
-class JobTask < OrvosBase
+class JobTask < ArvadosBase
end
-class Link < OrvosBase
+class Link < ArvadosBase
attr_accessor :head
attr_accessor :tail
def self.by_tail(t, opts={})
-class Log < OrvosBase
+class Log < ArvadosBase
attr_accessor :object
end
-class PipelineInstance < OrvosBase
+class PipelineInstance < ArvadosBase
attr_accessor :pipeline_template
def update_job_parameters(new_params)
-class PipelineTemplate < OrvosBase
+class PipelineTemplate < ArvadosBase
end
-class Specimen < OrvosBase
+class Specimen < ArvadosBase
end
-class User < OrvosBase
+class User < ArvadosBase
def self.current
- res = $orvos_api_client.api self, '/current'
- $orvos_api_client.unpack_api_response(res)
+ res = $arvados_api_client.api self, '/current'
+ $arvados_api_client.unpack_api_response(res)
end
end
</thead>
<tbody>
<% @object.attributes_for_display.each do |attr, attrvalue| %>
- <%= render partial: 'application/orvos_object_attr', locals: { attr: attr, attrvalue: attrvalue } %>
+ <%= render partial: 'application/arvados_object_attr', locals: { attr: attr, attrvalue: attrvalue } %>
<% end %>
</tbody>
</table>
<% if attr == 'uuid' and (uuid = attrvalue.split('-')).size == 3 %>
<td><%= uuid[0..-2].join('-') %>-<b><%= uuid[-1] %></b></td>
<% else %>
- <td><%= link_to_if_orvos_object attrvalue, {referring_attr: attr, referring_object: @object, with_prefixes: true, with_class_name: true} %></td>
+ <td><%= link_to_if_arvados_object attrvalue, {referring_attr: attr, referring_object: @object, with_prefixes: true, with_class_name: true} %></td>
<% end %>
</tr>
<% end %>
<tr class="collection">
<td>
<% if @collections.has_key? uuid %>
- <%= link_to_if_orvos_object uuid %>
+ <%= link_to_if_arvados_object uuid %>
<% else %>
<%= uuid %>
<% end %>
</table>
</div>
<div id="owner-groups-resources" class="tab-pane fade">
- <%= render :partial => 'application/orvos_object' %>
+ <%= render :partial => 'application/arvados_object' %>
</div>
</div>
<tr>
<td>
- <%= link_to_if_orvos_object g %>
+ <%= link_to_if_arvados_object g %>
</td><td>
<%= g.name %>
</td><td>
<div class="tab-content">
<div id="properties" class="tab-pane fade in active">
- <%= render partial: 'application/orvos_object' %>
+ <%= render partial: 'application/arvados_object' %>
</div>
<div id="collections" class="tab-pane fade">
<table class="table table-condensed table-hover">
<%= name %><br />
<% end %>
</td><td>
- <%= link_to_if_orvos_object collection %>
+ <%= link_to_if_arvados_object collection %>
</td><td>
<% if @keep_flag[collection.uuid] %>
<span class="badge badge-success">✔</span>
<% else %>
<span class="badge" title="queued">✉</span>
<% end %>
- <%= link_to_if_orvos_object j.uuid %>
+ <%= link_to_if_arvados_object j.uuid %>
</td>
<td>
<% if j.started_at and not j.finished_at %>
</td></tr>
<% j.script_parameters.sort.each do |k,v| %>
<tr>
- <td><%= k %></td><td><%= link_to_if_orvos_object v %></td>
+ <td><%= k %></td><td><%= link_to_if_arvados_object v %></td>
</tr>
<% end %>
<tr>
- <td>output</td><td><%= link_to_if_orvos_object j.output %></td>
+ <td>output</td><td><%= link_to_if_arvados_object j.output %></td>
</tr>
</table>
</td><td>
-<%= render :partial => 'application/orvos_object' %>
+<%= render :partial => 'application/arvados_object' %>
-<%= render :partial => 'application/orvos_object' %>
+<%= render :partial => 'application/arvados_object' %>
<span class="label label-info">active</span>
<% end %>
</td><td>
- <%= link_to_if_orvos_object ob %>
+ <%= link_to_if_arvados_object ob %>
</td><td>
<%= ob.name %>
</td><td>
- <%= link_to_if_orvos_object ob.pipeline_template_uuid %>
+ <%= link_to_if_arvados_object ob.pipeline_template_uuid %>
</td><td>
- <%= link_to_if_orvos_object ob.owner %>
+ <%= link_to_if_arvados_object ob.owner %>
</td><td>
<% ob.components.each do |cname, c| %>
<% status = if !c[:job] then nil elsif c[:job][:success] then 'success' elsif c[:job][:running] then 'info' else 'warning' end %>
</td></tr>
<% else %>
- <%= render partial: 'application/orvos_object_attr', locals: { attr: attr, attrvalue: attrvalue } %>
+ <%= render partial: 'application/arvados_object_attr', locals: { attr: attr, attrvalue: attrvalue } %>
<% end %>
<% end %>
</tbody>
<tr>
<td>
- <%= link_to_if_orvos_object ob %>
+ <%= link_to_if_arvados_object ob %>
</td><td>
<%= ob.name %>
</td><td>
- <%= link_to_if_orvos_object ob.owner %>
+ <%= link_to_if_arvados_object ob.owner %>
</td><td>
<%= ob.components.collect { |k,v| k.to_s }.join(", ") %>
</td>
</td></tr>
<% else %>
- <%= render partial: 'application/orvos_object_attr', locals: { attr: attr, attrvalue: attrvalue } %>
+ <%= render partial: 'application/arvados_object_attr', locals: { attr: attr, attrvalue: attrvalue } %>
<% end %>
<% end %>
</tbody>
-<%= render :partial => 'application/orvos_object' %>
+<%= render :partial => 'application/arvados_object' %>
-<%= render :partial => 'application/orvos_object' %>
+<%= render :partial => 'application/arvados_object' %>
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
-run Vcffarm::Application
+run ArvadosWorkbench::Application
# Bundler.require(:default, :assets, Rails.env)
end
-module Vcffarm
+module ArvadosWorkbench
class Application < Rails::Application
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
-# Use ORVOS_API_TOKEN environment variable (if set) in console
+# Use ARVADOS_API_TOKEN environment variable (if set) in console
require 'rails'
-module OrvosApiClientConsoleMode
+module ArvadosApiClientConsoleMode
class Railtie < Rails::Railtie
console do
- Thread.current[:orvos_api_token] ||= ENV['ORVOS_API_TOKEN']
+ Thread.current[:arvados_api_token] ||= ENV['ARVADOS_API_TOKEN']
end
end
end
require File.expand_path('../application', __FILE__)
# Initialize the rails application
-Vcffarm::Application.initialize!
+ArvadosWorkbench::Application.initialize!
-Vcffarm::Application.configure do
+ArvadosWorkbench::Application.configure do
# Settings specified here will take precedence over those in config/application.rb
# In the development environment your application's code is reloaded on
# Expands the lines which load the assets
config.assets.debug = true
- config.orvos_login_base = 'http://orvos.local/login'
- config.orvos_v1_base = 'http://orvos.local/orvos/v1'
+ config.arvados_login_base = 'http://arvados.local/login'
+ config.arvados_v1_base = 'http://arvados.local/arvados/v1'
- config.data_import_dir = '/tmp/vcffarm-upload'
- config.data_export_dir = '/tmp/vcffarm-download'
+ config.data_import_dir = '/tmp/arvados-workbench-upload'
+ config.data_export_dir = '/tmp/arvados-workbench-download'
config.secret_token = File.read('config/.secret_token') if File.exist? 'config/.secret_token'
- config.site_name = 'vcffarm.example.com'
+ config.site_name = 'arvados-workbench.example.com'
end
-Vcffarm::Application.configure do
+ArvadosWorkbench::Application.configure do
# Settings specified here will take precedence over those in config/application.rb
# Code is not reloaded between requests
# with SQLite, MySQL, and PostgreSQL)
# config.active_record.auto_explain_threshold_in_seconds = 0.5
- config.orvos_login_base = 'https://9ujm1.orvosapi.com/login'
- config.orvos_v1_base = 'https://9ujm1.orvosapi.com/orvos/v1'
+ config.arvados_login_base = 'https://arvados.local/login'
+ config.arvados_v1_base = 'https://arvados.local/arvados/v1'
- config.data_import_dir = '/data/vcffarm-upload/data'
- config.data_export_dir = '/data/vcffarm-download/data'
+ config.data_import_dir = '/data/arvados-workbench-upload/data'
+ config.data_export_dir = '/data/arvados-workbench-download/data'
# Authentication stub: hard code pre-approved API tokens.
# config.accept_api_token = { rand(2**256).to_s(36) => true }
config.vcf_pipeline_uuid = '9ujm1-mxsvm-o62u4mdoxvs0ckp'
- config.site_name = 'vcffarm.example.com'
+ config.site_name = 'arvados-workbench.example.com'
end
-Vcffarm::Application.configure do
+ArvadosWorkbench::Application.configure do
# Settings specified here will take precedence over those in config/application.rb
# The test environment is used exclusively to run your application's
# Print deprecation notices to the stderr
config.active_support.deprecation = :stderr
- config.orvos_login_base = 'http://orvos/login'
- config.orvos_v1_base = 'https://orvos/orvos/v1'
+ config.arvados_login_base = 'http://arvados.local/login'
+ config.arvados_v1_base = 'https://arvados.local/arvados/v1'
- config.data_import_dir = '/data/vcffarm-upload'
- config.data_export_dir = '/data/vcffarm-download'
+ config.data_import_dir = '/data/arvados-workbench-upload'
+ config.data_export_dir = '/data/arvados-workbench-download'
# Authentication stub: hard code pre-approved API tokens.
# config.accept_api_token = { rand(2**256).to_s(36) => true }
config.vcf_pipeline_uuid = '9ujm1-mxsvm-o62u4mdoxvs0ckp'
- config.site_name = 'vcffarm.example.com'
+ config.site_name = 'arvados-workbench.example.com'
end
--- /dev/null
+$arvados_api_client = ArvadosApiClient.new
+++ /dev/null
-$orvos_api_client = OrvosApiClient.new
# If you change this key, all old signed cookies will become invalid!
# Make sure the secret is at least 30 characters and all random,
# no regular words or you'll be exposed to dictionary attacks.
-Vcffarm::Application.config.secret_token ||= rand(2**256).to_s(36)
+ArvadosWorkbench::Application.config.secret_token ||= rand(2**256).to_s(36)
# Be sure to restart your server when you modify this file.
-Vcffarm::Application.config.session_store :cookie_store, key: '_vcffarm_session'
+ArvadosWorkbench::Application.config.session_store :cookie_store, key: '_arvados_workbench_session'
# Use the database for sessions instead of the cookie-based default,
# which shouldn't be used to store highly confidential information
# (create the session table with "rails generate session_migration")
-# Vcffarm::Application.config.session_store :active_record_store
+# ArvadosWorkbench::Application.config.session_store :active_record_store
-Vcffarm::Application.routes.draw do
+ArvadosWorkbench::Application.routes.draw do
resources :job_tasks
h2. Methods
-See "REST methods for working with Orvos resources":methods.html
+See "REST methods for working with Arvados resources":methods.html
API endpoint base: @https://xyzzy.arvados.org/arvados/v1/jobs@
#!/usr/bin/env ruby
-# Orvos cli client
+# Arvados cli client
#
# Ward Vandewege <ward@clinicalfuture.com>
EOS
end
-ENV['ORVOS_API_VERSION'] ||= 'v1'
+ENV['ARVADOS_API_VERSION'] ||= 'v1'
-if not ENV.include?('ORVOS_API_HOST') or not ENV.include?('ORVOS_API_TOKEN') then
+if not ENV.include?('ARVADOS_API_HOST') or not ENV.include?('ARVADOS_API_TOKEN') then
abort <<-EOS
-ORVOS_API_HOST and ORVOS_API_TOKEN need to be defined as environment variables.
+ARVADOS_API_HOST and ARVADOS_API_TOKEN need to be defined as environment variables.
EOS
end
end
end
-client = Google::APIClient.new(:host => ENV['ORVOS_API_HOST'], :application_name => 'wh-cli', :application_version => '1.0')
-orvos = client.discovered_api('orvos', ENV['ORVOS_API_VERSION'])
+client = Google::APIClient.new(:host => ENV['ARVADOS_API_HOST'], :application_name => 'wh-cli', :application_version => '1.0')
+arvados = client.discovered_api('arvados', ENV['ARVADOS_API_VERSION'])
def to_boolean(s)
!!(s =~ /^(true|t|yes|y|1)$/i)
end
global_opts = Trollop::options do
- banner "orvos cli client"
+ banner "arvados cli client"
opt :dry_run, "Don't actually do anything", :short => "-n"
stop_on sub_commands
end
end
else
- banner = "\nThis Orvos cluster supports the following api commands:\n\n"
+ banner = "\nThis Arvados cluster supports the following api commands:\n\n"
discovery_document["resources"].each do |k,v|
description = ''
if discovery_document["schemas"].include?(k.singularize.capitalize) and
return cmd, method, method_opts, ARGV
end
-cmd, method, method_opts, remaining_opts = parse_arguments(orvos.discovery_document)
+cmd, method, method_opts, remaining_opts = parse_arguments(arvados.discovery_document)
-api_method = 'orvos.' + cmd + '.' + method
+api_method = 'arvados.' + cmd + '.' + method
m_o = method_opts.reject {|key,value| key =~ /_given$|^json$|^jsonhuman$|^help$/ or value == nil }
-result = client.execute :api_method => eval(api_method), :parameters => { :api_token => ENV['ORVOS_API_TOKEN'] }.merge(m_o), :authenticated => false
+result = client.execute :api_method => eval(api_method), :parameters => { :api_token => ENV['ARVADOS_API_TOKEN'] }.merge(m_o), :authenticated => false
results = JSON.parse result.body
if results["errors"] then
EOS
end
-$orvos_api_version = ENV['ORVOS_API_VERSION'] || 'v1'
-$orvos_api_host = ENV['ORVOS_API_HOST'] or
- abort "#{$0}: fatal: ORVOS_API_HOST environment variable not set."
-$orvos_api_token = ENV['ORVOS_API_TOKEN'] or
- abort "#{$0}: fatal: ORVOS_API_TOKEN environment variable not set."
+$arvados_api_version = ENV['ARVADOS_API_VERSION'] || 'v1'
+$arvados_api_host = ENV['ARVADOS_API_HOST'] or
+ abort "#{$0}: fatal: ARVADOS_API_HOST environment variable not set."
+$arvados_api_token = ENV['ARVADOS_API_TOKEN'] or
+ abort "#{$0}: fatal: ARVADOS_API_TOKEN environment variable not set."
begin
require 'rubygems'
end
end
-if $orvos_api_host.match /local/
+if $arvados_api_host.match /local/
# You probably don't care about SSL certificate checks if you're
# testing with a dev server.
suppress_warnings { OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE }
# Set up the API client.
$client ||= Google::APIClient.
- new(:host => $orvos_api_host,
+ new(:host => $arvados_api_host,
:application_name => File.split($0).last,
:application_version => $application_version.to_s)
-$orvos = $client.discovered_api('orvos', $orvos_api_version)
+$arvados = $client.discovered_api('arvados', $arvados_api_version)
class PipelineInstance
def self.find(uuid)
- result = $client.execute(:api_method => $orvos.pipeline_instances.get,
+ result = $client.execute(:api_method => $arvados.pipeline_instances.get,
:parameters => {
- :api_token => ENV['ORVOS_API_TOKEN'],
+ :api_token => ENV['ARVADOS_API_TOKEN'],
:uuid => uuid
},
:authenticated => false)
end
end
def self.create(attributes)
- result = $client.execute(:api_method => $orvos.pipeline_instances.create,
+ result = $client.execute(:api_method => $arvados.pipeline_instances.create,
:parameters => {
- :api_token => ENV['ORVOS_API_TOKEN'],
+ :api_token => ENV['ARVADOS_API_TOKEN'],
:pipeline_instance => attributes.to_json
},
:authenticated => false)
self.new(j)
end
def save
- result = $client.execute(:api_method => $orvos.pipeline_instances.update,
+ result = $client.execute(:api_method => $arvados.pipeline_instances.update,
:parameters => {
- :api_token => ENV['ORVOS_API_TOKEN'],
+ :api_token => ENV['ARVADOS_API_TOKEN'],
:uuid => @pi[:uuid],
:pipeline_instance => @attributes_to_update.to_json
},
class JobCache
def self.get(uuid)
@cache ||= {}
- result = $client.execute(:api_method => $orvos.jobs.get,
+ result = $client.execute(:api_method => $arvados.jobs.get,
:parameters => {
- :api_token => ENV['ORVOS_API_TOKEN'],
+ :api_token => ENV['ARVADOS_API_TOKEN'],
:uuid => uuid
},
:authenticated => false)
@cache[uuid] = JSON.parse result.body, :symbolize_names => true
end
def self.where(conditions)
- result = $client.execute(:api_method => $orvos.jobs.list,
+ result = $client.execute(:api_method => $arvados.jobs.list,
:parameters => {
- :api_token => ENV['ORVOS_API_TOKEN'],
+ :api_token => ENV['ARVADOS_API_TOKEN'],
:limit => 10000,
:where => conditions.to_json
},
end
def self.create(attributes)
@cache ||= {}
- result = $client.execute(:api_method => $orvos.jobs.create,
+ result = $client.execute(:api_method => $arvados.jobs.create,
:parameters => {
- :api_token => ENV['ORVOS_API_TOKEN'],
+ :api_token => ENV['ARVADOS_API_TOKEN'],
:job => attributes.to_json
},
:authenticated => false)
end
def fetch_template(template_uuid)
- result = $client.execute(:api_method => $orvos.pipeline_templates.get,
+ result = $client.execute(:api_method => $arvados.pipeline_templates.get,
:parameters => {
- :api_token => ENV['ORVOS_API_TOKEN'],
+ :api_token => ENV['ARVADOS_API_TOKEN'],
:uuid => template_uuid
},
:authenticated => false)
def render_list
@object_list = {
- :kind => "orvos##{resource_name}List",
+ :kind => "arvados##{resource_name}List",
:etag => "",
:self_link => "",
:next_page_token => "",
-class Orvos::V1::CollectionsController < ApplicationController
+class Arvados::V1::CollectionsController < ApplicationController
def create
# It's not an error for a client to re-register a manifest that we
# already know about.
--- /dev/null
+class Arvados::V1::GroupsController < ApplicationController
+end
--- /dev/null
+class Arvados::V1::JobTasksController < ApplicationController
+end
-class Orvos::V1::JobsController < ApplicationController
+class Arvados::V1::JobsController < ApplicationController
accept_attribute_as_json :script_parameters, Hash
accept_attribute_as_json :resource_limits, Hash
accept_attribute_as_json :tasks_summary, Hash
-class Orvos::V1::LinksController < ApplicationController
+class Arvados::V1::LinksController < ApplicationController
def index
if params[:tail_uuid]
params[:where] = Oj.load(params[:where]) if params[:where].is_a?(String)
--- /dev/null
+class Arvados::V1::LogsController < ApplicationController
+end
-class Orvos::V1::NodesController < ApplicationController
+class Arvados::V1::NodesController < ApplicationController
skip_before_filter :login_required, :only => :ping
def create
@object = Node.new
@object.save!
- @object.start!(lambda { |h| orvos_v1_ping_node_url(h) })
+ @object.start!(lambda { |h| arvados_v1_ping_node_url(h) })
show
end
-class Orvos::V1::PipelineInstancesController < ApplicationController
+class Arvados::V1::PipelineInstancesController < ApplicationController
accept_attribute_as_json :components, Hash
accept_attribute_as_json :properties, Hash
end
--- /dev/null
+class Arvados::V1::PipelineTemplatesController < ApplicationController
+ accept_attribute_as_json :components, Hash
+end
-class Orvos::V1::SchemaController < ApplicationController
+class Arvados::V1::SchemaController < ApplicationController
skip_before_filter :find_object_by_uuid
skip_before_filter :login_required
def show
- classes = Rails.cache.fetch 'orvos_v1_schema' do
+ classes = Rails.cache.fetch 'arvados_v1_schema' do
Rails.application.eager_load!
classes = {}
ActiveRecord::Base.descendants.reject(&:abstract_class?).each do |k|
end
def discovery_rest_description
- discovery = Rails.cache.fetch 'orvos_v1_rest_discovery' do
+ discovery = Rails.cache.fetch 'arvados_v1_rest_discovery' do
Rails.application.eager_load!
discovery = {
kind: "discovery#restDescription",
discoveryVersion: "v1",
- id: "orvos:v1",
- name: "orvos",
+ id: "arvados:v1",
+ name: "arvados",
version: "v1",
revision: "20130226",
- title: "Orvos API",
- description: "The API to interact with Orvos.",
- documentationLink: "https://redmine.clinicalfuture.com/projects/orvos/",
+ title: "Arvados API",
+ description: "The API to interact with Arvados.",
+ documentationLink: "https://redmine.clinicalfuture.com/projects/arvados/",
protocol: "rest",
- baseUrl: root_url + "/orvos/v1/",
- basePath: "/orvos/v1/",
+ baseUrl: root_url + "/arvados/v1/",
+ basePath: "/arvados/v1/",
rootUrl: root_url,
- servicePath: "orvos/v1/",
+ servicePath: "arvados/v1/",
batchPath: "batch",
parameters: {
alt: {
auth: {
oauth2: {
scopes: {
- "https://api.clinicalfuture.com/auth/orvos" => {
+ "https://api.clinicalfuture.com/auth/arvados" => {
description: "View and manage objects"
},
- "https://api.clinicalfuture.com/auth/orvos.readonly" => {
+ "https://api.clinicalfuture.com/auth/arvados.readonly" => {
description: "View objects"
}
}
properties: {
kind: {
type: "string",
- description: "Object type. Always orvos##{k.to_s.camelcase(:lower)}List.",
- default: "orvos##{k.to_s.camelcase(:lower)}List"
+ description: "Object type. Always arvados##{k.to_s.camelcase(:lower)}List.",
+ default: "arvados##{k.to_s.camelcase(:lower)}List"
},
etag: {
type: "string",
discovery[:resources][k.to_s.underscore.pluralize] = {
methods: {
get: {
- id: "orvos.#{k.to_s.underscore.pluralize}.get",
+ id: "arvados.#{k.to_s.underscore.pluralize}.get",
path: "#{k.to_s.underscore.pluralize}/{uuid}",
httpMethod: "GET",
description: "Gets a #{k.to_s}'s metadata by UUID.",
"$ref" => k.to_s
},
scopes: [
- "https://api.clinicalfuture.com/auth/orvos",
- "https://api.clinicalfuture.com/auth/orvos.readonly"
+ "https://api.clinicalfuture.com/auth/arvados",
+ "https://api.clinicalfuture.com/auth/arvados.readonly"
]
},
list: {
- id: "orvos.#{k.to_s.underscore.pluralize}.list",
+ id: "arvados.#{k.to_s.underscore.pluralize}.list",
path: k.to_s.underscore.pluralize,
httpMethod: "GET",
description: "List #{k.to_s.underscore.pluralize}.",
"$ref" => "#{k.to_s}List"
},
scopes: [
- "https://api.clinicalfuture.com/auth/orvos",
- "https://api.clinicalfuture.com/auth/orvos.readonly"
+ "https://api.clinicalfuture.com/auth/arvados",
+ "https://api.clinicalfuture.com/auth/arvados.readonly"
]
},
create: {
- id: "orvos.#{k.to_s.underscore.pluralize}.create",
+ id: "arvados.#{k.to_s.underscore.pluralize}.create",
path: "#{k.to_s.underscore.pluralize}",
httpMethod: "POST",
description: "Create a new #{k.to_s}.",
"$ref" => k.to_s
},
scopes: [
- "https://api.clinicalfuture.com/auth/orvos"
+ "https://api.clinicalfuture.com/auth/arvados"
]
},
update: {
- id: "orvos.#{k.to_s.underscore.pluralize}.update",
+ id: "arvados.#{k.to_s.underscore.pluralize}.update",
path: "#{k.to_s.underscore.pluralize}/{uuid}",
httpMethod: "PUT",
description: "Update attributes of an existing #{k.to_s}.",
"$ref" => k.to_s
},
scopes: [
- "https://api.clinicalfuture.com/auth/orvos"
+ "https://api.clinicalfuture.com/auth/arvados"
]
},
delete: {
- id: "orvos.#{k.to_s.underscore.pluralize}.delete",
+ id: "arvados.#{k.to_s.underscore.pluralize}.delete",
path: "#{k.to_s.underscore.pluralize}/{uuid}",
httpMethod: "DELETE",
description: "Delete an existing #{k.to_s}.",
"$ref" => k.to_s
},
scopes: [
- "https://api.clinicalfuture.com/auth/orvos"
+ "https://api.clinicalfuture.com/auth/arvados"
]
}
}
--- /dev/null
+class Arvados::V1::SpecimensController < ApplicationController
+end
-class Orvos::V1::UsersController < ApplicationController
+class Arvados::V1::UsersController < ApplicationController
def current
@object = current_user
show
+++ /dev/null
-class Orvos::V1::GroupsController < ApplicationController
-end
+++ /dev/null
-class Orvos::V1::JobTasksController < ApplicationController
-end
+++ /dev/null
-class Orvos::V1::LogsController < ApplicationController
-end
+++ /dev/null
-class Orvos::V1::PipelineTemplatesController < ApplicationController
- accept_attribute_as_json :components, Hash
-end
+++ /dev/null
-class Orvos::V1::SpecimensController < ApplicationController
-end
user.last_name = omniauth['info']['last_name']
end
- # prevent OrvosModel#before_create and _update from throwing
+ # prevent ArvadosModel#before_create and _update from throwing
# "unauthorized":
Thread.current[:user] = user
-class OrvosModel < ActiveRecord::Base
+class ArvadosModel < ActiveRecord::Base
self.abstract_class = true
include CurrentApiClient # current_user, current_api_client, etc.
validate :ensure_serialized_attribute_type
def self.kind_class(kind)
- kind.match(/^orvos\#(.+?)(_list|List)?$/)[1].pluralize.classify.constantize rescue nil
+ kind.match(/^arvados\#(.+?)(_list|List)?$/)[1].pluralize.classify.constantize rescue nil
end
def eager_load_associations
-class Collection < OrvosModel
+class Collection < ArvadosModel
include AssignUuid
include KindAndEtag
include CommonApiTemplate
-class Group < OrvosModel
+class Group < ArvadosModel
include AssignUuid
include KindAndEtag
include CommonApiTemplate
-class Job < OrvosModel
+class Job < ArvadosModel
include AssignUuid
include KindAndEtag
include CommonApiTemplate
-class JobTask < OrvosModel
+class JobTask < ArvadosModel
include AssignUuid
include KindAndEtag
include CommonApiTemplate
-class Link < OrvosModel
+class Link < ArvadosModel
include AssignUuid
include KindAndEtag
include CommonApiTemplate
-class Log < OrvosModel
+class Log < ArvadosModel
include AssignUuid
include KindAndEtag
include CommonApiTemplate
-class Node < OrvosModel
+class Node < ArvadosModel
include AssignUuid
include KindAndEtag
include CommonApiTemplate
end
self.last_ping_at = Time.now
- @bypass_orvos_authorization = true
+ @bypass_arvados_authorization = true
# Record IP address
if self.ip_address.nil?
end
def permission_to_update
- @bypass_orvos_authorization or super
+ @bypass_arvados_authorization or super
end
def permission_to_create
-class PipelineInstance < OrvosModel
+class PipelineInstance < ArvadosModel
include AssignUuid
include KindAndEtag
include CommonApiTemplate
-class PipelineTemplate < OrvosModel
+class PipelineTemplate < ArvadosModel
include AssignUuid
include KindAndEtag
include CommonApiTemplate
-class Specimen < OrvosModel
+class Specimen < ArvadosModel
include AssignUuid
include KindAndEtag
include CommonApiTemplate
-class User < OrvosModel
+class User < ArvadosModel
include AssignUuid
include KindAndEtag
include CommonApiTemplate
Link.where('tail_uuid in (?) and link_class = ? and head_kind = ?',
lookup_uuids,
'permission',
- 'orvos#group').each do |link|
+ 'arvados#group').each do |link|
unless done.has_key? link.head_uuid
todo[link.head_uuid] = true
end
</head>
<body>
<div id="header">
- <div class="apptitle">ORVOS <span class="beta"><span>BETA</span></span></div>
+ <div class="apptitle">ARVADOS <span class="beta"><span>BETA</span></span></div>
<div style="float:right">
<% if current_user %>
<%= current_user.full_name %>
<% if current_user or session['invite_code'] %>
<div id="footer">
- <div style="float:right">Questions → <a href="mailto:orvos@clinicalfuture.com">orvos@clinicalfuture.com</a></div>
+ <div style="float:right">Questions → <a href="mailto:arvados@clinicalfuture.com">arvados@clinicalfuture.com</a></div>
<div style="clear:both"></div>
</div>
<% end %>
<img class="clinicalfuture-logo" src="<%= asset_path('logo.png') %>" style="display:block; margin:2em auto"/>
<div style="width:30em; margin:2em auto 0 auto">
<h1>Welcome</h1>
- <h4>Clinical Future ORVOS</h4>
+ <h4>Clinical Future ARVADOS</h4>
<% if !current_user and session['invite_code'] %>
- <p>Clinical Future Orvos lets you manage and process human genomes and exomes. You can start using the private beta
+ <p>Clinical Future Arvados lets you manage and process human genomes and exomes. You can start using the private beta
now with your Google account.</p>
<p style="float:right;margin-top:1em">
<button class="login" href="/auth/joshid">Log in and get started</button>
<% else %>
- <p>Clinical Future ORVOS is transforming how researchers and
+ <p>Clinical Future ARVADOS is transforming how researchers and
clinical geneticists use whole genome sequences. </p>
<p>If you’re interested in learning more, we’d love to hear
from you —
- contact <a href="mailto:orvos@clinicalfuture.com">orvos@clinicalfuture.com</a>.</p>
+ contact <a href="mailto:arvados@clinicalfuture.com">arvados@clinicalfuture.com</a>.</p>
<% if !current_user %>
<p style="float:right;margin-top:1em">
development:
adapter: mysql
encoding: utf8
- database: orvos_development
- username: orvos
+ database: arvados_development
+ username: arvados
password: ********
host: localhost
test:
adapter: mysql
encoding: utf8
- database: orvos_test
- username: orvos
+ database: arvados_test
+ username: arvados
password: ********
host: localhost
production:
adapter: mysql
encoding: utf8
- database: orvos_production
- username: orvos
+ database: arvados_production
+ username: arvados
password: ********
host: localhost
# config.dnsmasq_conf_dir = '/etc/dnsmasq.d'
# config.compute_node_ami = 'ami-cbca41a2'
- # config.compute_node_security_group = 'orvos-compute'
+ # config.compute_node_security_group = 'arvados-compute'
# config.compute_node_spot_bid = 0.11
# config.compute_node_domain = `hostname --domain`.strip
# config.dnsmasq_conf_dir = '/etc/dnsmasq.d'
# config.compute_node_ami = 'ami-cbca41a2'
- # config.compute_node_security_group = 'orvos-compute'
+ # config.compute_node_security_group = 'arvados-compute'
# config.compute_node_spot_bid = 0.11
# config.compute_node_domain = `hostname --domain`.strip
# config.dnsmasq_conf_dir = '/etc/dnsmasq.d'
# config.compute_node_ami = 'ami-cbca41a2'
- # config.compute_node_security_group = 'orvos-compute'
+ # config.compute_node_security_group = 'arvados-compute'
# config.compute_node_spot_bid = 0.11
# config.compute_node_domain = `hostname --domain`.strip
# Change this omniauth configuration to point to your registered provider
# Since this is a registered application, add the app id and secret here
-APP_ID = 'orvos-server'
+APP_ID = 'arvados-server'
APP_SECRET = rand(2**512).to_s(36) # CHANGE ME!
# Update your custom Omniauth provider URL here
# Note: This route will make all actions in every controller accessible via GET requests.
# match ':controller(/:action(/:id(.:format)))'
- namespace :orvos do
+ namespace :arvados do
namespace :v1 do
match '/schema' => 'schema#show'
match '/nodes/:uuid/ping' => 'nodes#ping', :as => :ping_node
- match '/links/from/:tail_uuid' => 'links#index', :as => :orvos_v1_links_from
+ match '/links/from/:tail_uuid' => 'links#index', :as => :arvados_v1_links_from
match '/users/current' => 'users#current'
resources :collections
resources :links
match '/login', :to => 'user_sessions#login'
match '/logout', :to => 'user_sessions#logout'
- match '/discovery/v1/apis/orvos/v1/rest', :to => 'orvos/v1/schema#discovery_rest_description'
+ match '/discovery/v1/apis/arvados/v1/rest', :to => 'arvados/v1/schema#discovery_rest_description'
# Send unroutable requests to an arbitrary controller
# (ends up at ApplicationController#render_not_found)
- match '*a', :to => 'orvos/v1/links#render_not_found'
+ match '*a', :to => 'arvados/v1/links#render_not_found'
root :to => 'static#home'
end
--- /dev/null
+class RenameOrvosToArvados < ActiveRecord::Migration
+ def up
+ Link.update_all("head_kind=replace(head_kind,'orvos','arvados')")
+ Link.update_all("tail_kind=replace(tail_kind,'orvos','arvados')")
+ Log.update_all("object_kind=replace(object_kind,'orvos','arvados')")
+ end
+
+ def down
+ Link.update_all("head_kind=replace(head_kind,'arvados','orvos')")
+ Link.update_all("tail_kind=replace(tail_kind,'arvados','orvos')")
+ Log.update_all("object_kind=replace(object_kind,'arvados','orvos')")
+ end
+end
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20130326182917) do
+ActiveRecord::Schema.define(:version => 20130415020241) do
create_table "api_client_authorizations", :force => true do |t|
t.string "api_token", :null => false
end
def kind
- 'orvos#' + self.class.to_s.underscore
+ 'arvados#' + self.class.to_s.underscore
end
def etag
fixtures :all
test "should get index" do
- get "/orvos/v1/collections", :format => :json
+ get "/arvados/v1/collections", :format => :json
@json_response ||= ActiveSupport::JSON.decode @response.body
assert_response :success
- assert_equal "orvos#collectionList", @json_response['kind']
+ assert_equal "arvados#collectionList", @json_response['kind']
end
end