diff --git a/install.sh b/install.sh index a15867752c..ea5b16a202 100755 --- a/install.sh +++ b/install.sh @@ -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 \ diff --git a/src/cloud/common/CloudServer.rb b/src/cloud/common/CloudServer.rb index e785e44b22..1b29ba2db0 100644 --- a/src/cloud/common/CloudServer.rb +++ b/src/cloud/common/CloudServer.rb @@ -125,6 +125,7 @@ class CloudServer } return user end + ########################################################################### # Repository Methods diff --git a/src/cloud/occi/lib/OCCI.rb b/src/cloud/occi/lib/OCCI.rb deleted file mode 100644 index ee6f996373..0000000000 --- a/src/cloud/occi/lib/OCCI.rb +++ /dev/null @@ -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 diff --git a/src/cloud/occi/lib/OCCIConfiguration.rb b/src/cloud/occi/lib/OCCIConfiguration.rb deleted file mode 100644 index 93279d4618..0000000000 --- a/src/cloud/occi/lib/OCCIConfiguration.rb +++ /dev/null @@ -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]< 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 diff --git a/src/cloud/occi/lib/occi-server.rb b/src/cloud/occi/lib/occi-server.rb index e22721dfda..b87485b551 100755 --- a/src/cloud/occi/lib/occi-server.rb +++ b/src/cloud/occi/lib/occi-server.rb @@ -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 \ No newline at end of file