From: Michal Fojtik <[email protected]>
Signed-off-by: Michal fojtik <[email protected]> --- server/config.ru | 44 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/server/config.ru b/server/config.ru index a1f9efd..f17de43 100644 --- a/server/config.ru +++ b/server/config.ru @@ -14,14 +14,46 @@ # License for the specific language governing permissions and limitations # under the License. -require 'rubygems' +# The default URL prefix (where to mount Deltacloud API) -$top_srcdir ||= File::expand_path(File.dirname(__FILE__)) +# The default driver is 'mock' +ENV['API_DRIVER'] ||= 'mock' -$:.unshift File.join($top_srcdir, 'lib') +# Set the API frontend use ('cimi' or 'deltacloud', default is 'deltacloud') +ENV['API_FRONTEND'] ||= 'deltacloud' -server_dir = ENV['API_FRONTEND'] == 'cimi' ? 'cimi' : 'deltacloud' +# We need to set different API version and entrypoint location +if ENV['API_FRONTEND'] == 'deltacloud' + API_VERSION = "9.9.9" + API_ROOT_URL = "/api" +elsif ENV['API_FRONTEND'] == 'cimi' + API_VERSION = "1.0.0" + API_ROOT_URL = "/cloudEntryPoint" +end -load File.join($top_srcdir, 'lib', server_dir, 'server.rb') +#begin + require File.join(File.dirname(__FILE__), 'lib', ENV['API_FRONTEND'], 'server.rb') +#rescue LoadError => e +# puts "[ERROR] The specified frontend (#{ENV['API_FRONTEND']}) not supported (#{e.message})" +# exit 1 +#end -run Sinatra::Application +if self.respond_to? :map + map "/" do + class IndexEntrypoint < Sinatra::Base + get "/" do + redirect API_ROOT_URL, 301 + end + end + run IndexEntrypoint + end + + map API_ROOT_URL do + use Rack::Static, :urls => ["/stylesheets", "/javascripts"], :root => "public" + use Rack::Session::Cookie + case ENV['API_FRONTEND'] + when 'deltacloud' then run Rack::Cascade.new([Deltacloud::API]) + when 'cimi' then run Rack::Cascade.new([CIMI::API]) + end + end +end -- 1.7.10
