mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-26 06:50:09 +03:00
Remove unnecessary OCCI.rb and OCCIConfiguration.rb
Fixing some bugs and missuse of CloudServer.rb git-svn-id: http://svn.opennebula.org/one/trunk@869 3034c82b-c49b-4eb3-8279-a7acafdc01c0
This commit is contained in:
parent
7ae228c712
commit
a3af18e416
@ -487,10 +487,8 @@ ECO_ETC_TEMPLATE_FILES="src/cloud/ec2/etc/templates/m1.small.erb"
|
||||
# OCCI files
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
OCCI_LIB_FILES="src/cloud/occi/lib/OCCI.rb \
|
||||
src/cloud/occi/lib/OCCIServer.rb \
|
||||
OCCI_LIB_FILES="src/cloud/occi/lib/OCCIServer.rb \
|
||||
src/cloud/occi/lib/occi-server.rb \
|
||||
src/cloud/occi/lib/OCCIConfiguration.rb \
|
||||
src/cloud/occi/lib/OCCIClient.rb \
|
||||
src/cloud/occi/lib/VirtualMachineOCCI.rb \
|
||||
src/cloud/occi/lib/VirtualMachinePoolOCCI.rb \
|
||||
|
@ -125,6 +125,7 @@ class CloudServer
|
||||
}
|
||||
return user
|
||||
end
|
||||
|
||||
|
||||
###########################################################################
|
||||
# Repository Methods
|
||||
|
@ -1,28 +0,0 @@
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2009, Distributed Systems Architecture Group, Universidad #
|
||||
# Complutense de Madrid (dsa-research.org) #
|
||||
# #
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
||||
# not use this file except in compliance with the License. You may obtain #
|
||||
# a copy of the License at #
|
||||
# #
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 #
|
||||
# #
|
||||
# Unless required by applicable law or agreed to in writing, software #
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, #
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
|
||||
# See the License for the specific language governing permissions and #
|
||||
# limitations under the License. #
|
||||
#--------------------------------------------------------------------------- #
|
||||
|
||||
require 'VirtualMachineOCCI'
|
||||
require 'VirtualMachinePoolOCCI'
|
||||
require 'VirtualNetworkOCCI'
|
||||
require 'VirtualNetworkPoolOCCI'
|
||||
require 'ImageOCCI'
|
||||
require 'ImagePoolOCCI'
|
||||
|
||||
require 'OCCIConfiguration'
|
||||
|
||||
|
||||
include ImageOCCI
|
@ -1,89 +0,0 @@
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2009, Distributed Systems Architecture Group, Universidad #
|
||||
# Complutense de Madrid (dsa-research.org) #
|
||||
# #
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
||||
# not use this file except in compliance with the License. You may obtain #
|
||||
# a copy of the License at #
|
||||
# #
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 #
|
||||
# #
|
||||
# Unless required by applicable law or agreed to in writing, software #
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, #
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
|
||||
# See the License for the specific language governing permissions and #
|
||||
# limitations under the License. #
|
||||
#--------------------------------------------------------------------------- #
|
||||
|
||||
class OCCIConfiguration
|
||||
|
||||
NAME_REG=/[\w\d_-]+/
|
||||
VARIABLE_REG=/\s*(#{NAME_REG})\s*=\s*/
|
||||
SIMPLE_VARIABLE_REG=/#{VARIABLE_REG}([^\[]+?)(#.*)?/
|
||||
SINGLE_VARIABLE_REG=/^#{SIMPLE_VARIABLE_REG}$/
|
||||
ARRAY_VARIABLE_REG=/^#{VARIABLE_REG}\[(.*?)\]/m
|
||||
|
||||
def initialize(file)
|
||||
@conf=parse_conf(file)
|
||||
end
|
||||
|
||||
def add_value(conf, key, value)
|
||||
if conf[key]
|
||||
if !conf[key].kind_of?(Array)
|
||||
conf[key]=[conf[key]]
|
||||
end
|
||||
conf[key]<<value
|
||||
else
|
||||
conf[key]=value
|
||||
end
|
||||
end
|
||||
|
||||
def parse_conf(file)
|
||||
conf_file=File.read(file)
|
||||
|
||||
conf=Hash.new
|
||||
|
||||
conf_file.scan(SINGLE_VARIABLE_REG) {|m|
|
||||
key=m[0].strip.upcase
|
||||
value=m[1].strip
|
||||
|
||||
# hack to skip multiline VM_TYPE values
|
||||
next if %w{NAME TEMPLATE}.include? key.upcase
|
||||
|
||||
add_value(conf, key, value)
|
||||
}
|
||||
|
||||
conf_file.scan(ARRAY_VARIABLE_REG) {|m|
|
||||
master_key=m[0].strip.upcase
|
||||
|
||||
pieces=m[1].split(',')
|
||||
|
||||
vars=Hash.new
|
||||
pieces.each {|p|
|
||||
key, value=p.split('=')
|
||||
vars[key.strip.upcase]=value.strip
|
||||
}
|
||||
|
||||
add_value(conf, master_key, vars)
|
||||
}
|
||||
|
||||
conf
|
||||
end
|
||||
|
||||
def conf
|
||||
@conf
|
||||
end
|
||||
|
||||
def [](key)
|
||||
@conf[key.to_s.upcase]
|
||||
end
|
||||
end
|
||||
|
||||
if $0 == __FILE__
|
||||
|
||||
require 'pp'
|
||||
|
||||
conf=OCCIConfiguration.new('occi-server.conf')
|
||||
pp conf.conf
|
||||
|
||||
end
|
@ -15,15 +15,26 @@
|
||||
# limitations under the License. #
|
||||
#--------------------------------------------------------------------------- #
|
||||
|
||||
# Common cloud libs
|
||||
require 'rubygems'
|
||||
require 'sinatra'
|
||||
require 'CloudServer'
|
||||
|
||||
# OCA
|
||||
require 'OpenNebula'
|
||||
require 'cloud/occi/OCCI'
|
||||
|
||||
include OpenNebula
|
||||
|
||||
# OCCI libs
|
||||
require 'VirtualMachineOCCI'
|
||||
require 'VirtualMachinePoolOCCI'
|
||||
require 'VirtualNetworkOCCI'
|
||||
require 'VirtualNetworkPoolOCCI'
|
||||
require 'ImageOCCI'
|
||||
require 'ImagePoolOCCI'
|
||||
|
||||
include ImageOCCI
|
||||
|
||||
|
||||
##############################################################################
|
||||
# The OCCI Server provides an OCCI implementation based on the
|
||||
# OpenNebula Engine
|
||||
@ -45,15 +56,12 @@ class OCCIServer < CloudServer
|
||||
# [return] _Boolean_ Whether the user is authorized or not
|
||||
def authenticate?(requestenv)
|
||||
auth ||= Rack::Auth::Basic::Request.new(requestenv)
|
||||
|
||||
pp auth
|
||||
return
|
||||
|
||||
if !(auth.provided? && auth.basic? && auth.credentials)
|
||||
return false
|
||||
end
|
||||
|
||||
user = get_user(auth.credentials.first)
|
||||
user = get_user(requestenv, auth)
|
||||
|
||||
if user
|
||||
if user[:password] == auth.credentials[1]
|
||||
@ -67,8 +75,8 @@ class OCCIServer < CloudServer
|
||||
# Retrieve the user crendentials
|
||||
# requestenv:: _Hash_ Hash containing the environment of the request
|
||||
# [return] _User_ User structure
|
||||
def get_user(requestenv)
|
||||
auth = Rack::Auth::Basic::Request.new(requestenv)
|
||||
def get_user(requestenv, auth=nil)
|
||||
auth = Rack::Auth::Basic::Request.new(requestenv) if !auth
|
||||
super(auth.credentials.first)
|
||||
end
|
||||
|
||||
@ -241,7 +249,6 @@ class OCCIServer < CloudServer
|
||||
begin
|
||||
network_pool.to_occi(@config[:server]+":"+@config[:port])
|
||||
rescue Exception => e
|
||||
status 500
|
||||
error = OpenNebula::Error.new(e.message)
|
||||
return error, 500
|
||||
end
|
||||
@ -273,12 +280,8 @@ class OCCIServer < CloudServer
|
||||
|
||||
# tmpfile where the file is stored
|
||||
f_tmp=file[:tempfile]
|
||||
img=$repoman.add(user[:id], f_tmp.path)
|
||||
f_tmp.unlink
|
||||
|
||||
img.get_image_info
|
||||
img.change_metadata(:name=>image_info['DISK']['NAME'])
|
||||
img.change_metadata(:description=>image_info['DISK']['URL'])
|
||||
img=add_image(user[:id], f_tmp, {:name=>image_info['DISK']['NAME'],
|
||||
:description=>image_info['DISK']['URL']})
|
||||
|
||||
img.extend(ImageOCCI)
|
||||
xml_response = img.to_occi
|
||||
@ -313,7 +316,7 @@ class OCCIServer < CloudServer
|
||||
result=vm.info
|
||||
|
||||
if OpenNebula::is_error?(result)
|
||||
return "Error: "+result.message, 404
|
||||
return result, 404
|
||||
end
|
||||
|
||||
begin
|
||||
@ -340,9 +343,7 @@ class OCCIServer < CloudServer
|
||||
|
||||
result = vm.finalize
|
||||
if OpenNebula::is_error?(result)
|
||||
error_msg = "Deletion failed. Reason: " + e.message
|
||||
error = OpenNebula::Error.new(error_msg)
|
||||
return error, 500
|
||||
return result, 500
|
||||
else
|
||||
return "The Compute resource has been successfully deleted", 200
|
||||
end
|
||||
@ -415,8 +416,7 @@ class OCCIServer < CloudServer
|
||||
result=vn.info
|
||||
|
||||
if OpenNebula::is_error?(result)
|
||||
error = OpenNebula::Error.new("Error: "+result.message)
|
||||
return error, 404
|
||||
return result, 404
|
||||
end
|
||||
|
||||
begin
|
||||
@ -442,8 +442,7 @@ class OCCIServer < CloudServer
|
||||
result = vn.delete
|
||||
|
||||
if OpenNebula::is_error?(result)
|
||||
error = OpenNebula::Error.new("Error: " + result.message)
|
||||
return error, 500
|
||||
return result, 500
|
||||
else
|
||||
return "The Virtual Network has been successfully deleted", 200
|
||||
end
|
||||
@ -460,8 +459,6 @@ class OCCIServer < CloudServer
|
||||
image=$repoman.get(request.params[:id])
|
||||
|
||||
if image
|
||||
image.get_image_info
|
||||
|
||||
image.extend(ImageOCCI)
|
||||
return image.to_occi, 200
|
||||
else
|
||||
@ -475,7 +472,7 @@ class OCCIServer < CloudServer
|
||||
# request:: _Hash_ hash containing the data of the request
|
||||
# [return] _String_,_Integer_ Delete confirmation msg or error,
|
||||
# status code
|
||||
def delete_network(request)
|
||||
def delete_storage(request)
|
||||
error = OpenNebula::Error.new("Not yet implemented")
|
||||
return error, 501
|
||||
end
|
||||
|
@ -64,14 +64,14 @@ set :port, $occi_server.config[:port]
|
||||
|
||||
# Authentication
|
||||
before do
|
||||
if !$occi_server.authenticate?(params)
|
||||
if !$occi_server.authenticate?(request.env)
|
||||
halt 401, 'Invalid credentials'
|
||||
end
|
||||
end
|
||||
|
||||
# Response treatment
|
||||
helpers do
|
||||
def treat_response
|
||||
def treat_response(result,rc)
|
||||
if OpenNebula::is_error?(result)
|
||||
halt rc, result.message
|
||||
end
|
||||
@ -91,32 +91,32 @@ end
|
||||
|
||||
post '/compute' do
|
||||
result,rc = $occi_server.post_compute(request)
|
||||
treat_response
|
||||
treat_response(result,rc)
|
||||
end
|
||||
|
||||
get '/compute' do
|
||||
result,rc = $occi_server.get_compute(request)
|
||||
treat_response
|
||||
result,rc = $occi_server.get_computes(request)
|
||||
treat_response(result,rc)
|
||||
end
|
||||
|
||||
post '/network' do
|
||||
result,rc = $occi_server.get_compute(request)
|
||||
treat_response
|
||||
treat_response(result,rc)
|
||||
end
|
||||
|
||||
get '/network' do
|
||||
result,rc = $occi_server.get_network(request)
|
||||
treat_response
|
||||
treat_response(result,rc)
|
||||
end
|
||||
|
||||
post '/storage' do
|
||||
result,rc = $occi_server.post_storage(request)
|
||||
treat_response
|
||||
treat_response(result,rc)
|
||||
end
|
||||
|
||||
get '/storage' do
|
||||
result,rc = $occi_server.get_storages(request)
|
||||
treat_response
|
||||
treat_response(result,rc)
|
||||
end
|
||||
|
||||
###################################################
|
||||
@ -125,35 +125,35 @@ end
|
||||
|
||||
get '/compute/:id' do
|
||||
result,rc = $occi_server.get_compute(request)
|
||||
treat_response
|
||||
treat_response(result,rc)
|
||||
end
|
||||
|
||||
delete '/compute/:id' do
|
||||
result,rc = $occi_server.delete_compute(request)
|
||||
treat_response
|
||||
treat_response(result,rc)
|
||||
end
|
||||
|
||||
put '/compute/:id' do
|
||||
result,rc = $occi_server.put_compute(request)
|
||||
treat_response
|
||||
treat_response(result,rc)
|
||||
end
|
||||
|
||||
get '/network/:id' do
|
||||
result,rc = $occi_server.get_network(request)
|
||||
treat_response
|
||||
treat_response(result,rc)
|
||||
end
|
||||
|
||||
delete '/network/:id' do
|
||||
result,rc = $occi_server.delete_network(request)
|
||||
treat_response
|
||||
treat_response(result,rc)
|
||||
end
|
||||
|
||||
get '/storage/:id' do
|
||||
result,rc = $occi_server.get_storage(request)
|
||||
treat_response
|
||||
treat_response(result,rc)
|
||||
end
|
||||
|
||||
delete '/storage/:id' do
|
||||
result,rc = $occi_server.delete_storage(request)
|
||||
treat_response
|
||||
treat_response(result,rc)
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user