mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-22 18:50:08 +03:00
First work extending oZones with clusters & DS
This commit is contained in:
parent
759c0a2366
commit
182d50fd15
src
ozones/Server/lib/OZones
sunstone/models/OpenNebulaJSON
30
src/ozones/Server/lib/OZones/AggregatedClusters.rb
Normal file
30
src/ozones/Server/lib/OZones/AggregatedClusters.rb
Normal file
@ -0,0 +1,30 @@
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.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. #
|
||||
#--------------------------------------------------------------------------- #
|
||||
|
||||
module OZones
|
||||
|
||||
class AggregatedClusters < AggregatedPool
|
||||
|
||||
def initialize
|
||||
super("ZONE_POOL")
|
||||
end
|
||||
|
||||
def factory(client)
|
||||
OpenNebulaJSON::ClusterPoolJSON.new(client)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
30
src/ozones/Server/lib/OZones/AggregatedDatastores.rb
Normal file
30
src/ozones/Server/lib/OZones/AggregatedDatastores.rb
Normal file
@ -0,0 +1,30 @@
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.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. #
|
||||
#--------------------------------------------------------------------------- #
|
||||
|
||||
module OZones
|
||||
|
||||
class AggregatedDatastores < AggregatedPool
|
||||
|
||||
def initialize
|
||||
super("ZONE_POOL")
|
||||
end
|
||||
|
||||
def factory(client)
|
||||
OpenNebulaJSON::DatastorePoolJSON.new(client)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
45
src/sunstone/models/OpenNebulaJSON/ClusterJSON.rb
Normal file
45
src/sunstone/models/OpenNebulaJSON/ClusterJSON.rb
Normal file
@ -0,0 +1,45 @@
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.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 'OpenNebulaJSON/JSONUtils'
|
||||
|
||||
module OpenNebulaJSON
|
||||
class ClusterJSON < OpenNebula::Cluster
|
||||
include JSONUtils
|
||||
|
||||
def create(template_json)
|
||||
cluster_hash = parse_json(template_json, 'cluster')
|
||||
|
||||
if OpenNebula.is_error?(cluster_hash)
|
||||
return cluster_hash
|
||||
end
|
||||
|
||||
|
||||
self.allocate(cluster_hash['name'])
|
||||
end
|
||||
|
||||
def perform_action(template_json)
|
||||
action_hash = parse_json(template_json, 'action')
|
||||
if OpenNebula.is_error?(action_hash)
|
||||
return action_hash
|
||||
end
|
||||
|
||||
error_msg = "#{action_hash['perform']} action not " <<
|
||||
" available for this resource"
|
||||
OpenNebula::Error.new(error_msg)
|
||||
end
|
||||
end
|
||||
end
|
50
src/sunstone/models/OpenNebulaJSON/DatastoreJSON.rb
Normal file
50
src/sunstone/models/OpenNebulaJSON/DatastoreJSON.rb
Normal file
@ -0,0 +1,50 @@
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.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 'OpenNebulaJSON/JSONUtils'
|
||||
|
||||
module OpenNebulaJSON
|
||||
class ClusterJSON < OpenNebula::Datastore
|
||||
include JSONUtils
|
||||
|
||||
def create(template_json, cluster_id=ClusterPool::NONE_CLUSTER_ID)
|
||||
datastore_hash = parse_json(template_json, 'datastore')
|
||||
|
||||
if OpenNebula.is_error?(datastore_hash)
|
||||
return datastore_hash
|
||||
end
|
||||
|
||||
if datastore_hash['datastore_raw']
|
||||
template = datastore_hash['image_raw']
|
||||
else
|
||||
template = template_to_str(datastore_hash)
|
||||
end
|
||||
|
||||
self.allocate(template,cluster_id)
|
||||
end
|
||||
|
||||
def perform_action(template_json)
|
||||
action_hash = parse_json(template_json, 'action')
|
||||
if OpenNebula.is_error?(action_hash)
|
||||
return action_hash
|
||||
end
|
||||
|
||||
error_msg = "#{action_hash['perform']} action not " <<
|
||||
" available for this resource"
|
||||
OpenNebula::Error.new(error_msg)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user