From: David Lutterkort lutter@redhat.com
* Define a hardware profile for memory options. We do not report architecture, since for GoGrid that is determined with the image * Expect parameter hwp_id to be passed in for create_instance * Store InstanceProfile with instance
We should eventually generate the hardware profile from the list of RAM sizes from the server. --- .../lib/deltacloud/drivers/gogrid/gogrid_driver.rb | 66 ++++++++------------ 1 files changed, 26 insertions(+), 40 deletions(-)
diff --git a/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb b/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb index 3269cef..875b876 100644 --- a/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb +++ b/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb @@ -24,40 +24,10 @@ module Deltacloud
class GogridDriver < Deltacloud::BaseDriver
- # Storage capacity is same on all machines (10gb), it could be extended using 'Cloud Storage' - define_hardware_profile('server-with-512mb-ram') do - cpu 2 - memory 0.5 - storage 10 - architecture 'i386' - end - - define_hardware_profile('server-with-1gb-ram') do - cpu 2 - memory 1 - storage 10 - architecture 'i386' - end - - define_hardware_profile('server-with-2gb-ram') do - cpu 2 - memory 2 - storage 10 - architecture 'i386' - end - - define_hardware_profile('server-with-4gb-ram') do + define_hardware_profile 'server' do cpu 2 - memory 4 + memory [512, 1024, 2048, 4096, 8192] storage 10 - architecture 'i386' - end - - define_hardware_profile('server-with-8gb-ram') do - cpu 2 - memory 8 - storage 10 - architecture 'i386' end
# The only valid option for flavors is server RAM for now @@ -99,13 +69,19 @@ class GogridDriver < Deltacloud::BaseDriver end
def create_instance(credentials, image_id, opts=nil) - flavor_id = opts[:flavor_id] || '1' + server_ram = nil + if opts[:hwp_memory] + mem = opts[:hwp_memory].to_i + server_ram = (mem == 512) ? "512MB" : "#{mem / 1024}GB" + else + server_ram = "512MB" + end name = (opts[:name] && opts[:name]!='') ? opts[:name] : get_random_instance_name safely do - convert_instance(new_client(credentials).request('grid/server/add', { + convert_instance(new_client(credentials).request('grid/server/add', { 'name' => name, 'image' => image_id, - 'server.ram' => flavor_id, + 'server.ram' => server_ram, 'ip' => get_next_free_ip(credentials) })['list'].first, credentials.user) end @@ -122,7 +98,7 @@ class GogridDriver < Deltacloud::BaseDriver safely do instances = new_client(credentials).request('grid/server/list')['list'].collect do |instance| convert_instance(instance, credentials.user) - end + end end end instances = filter_on( instances, :state, opts ) @@ -202,11 +178,23 @@ class GogridDriver < Deltacloud::BaseDriver end
def convert_instance(instance, owner_id) + opts = {} + unless instance['ram']['id'] == "1" + mem = instance['ram']['name'] + if mem == "512MB" + opts[:hwp_memory] = "512" + else + opts[:hwp_memory] = (mem.to_i * 1024).to_s + end + end + prof = InstanceProfile.new("server", opts) + Instance.new( - :id => instance['id'], + :id => instance['name'], :owner_id => owner_id, :image_id => instance['image']['id'], :flavor_id => instance['ram']['id'], + :instance_profile => prof, :name => instance['name'], :realm_id => instance['type']['id'], :state => convert_server_state(instance['state']['name'], instance['id']), @@ -228,7 +216,7 @@ class GogridDriver < Deltacloud::BaseDriver def get_next_free_ip(credentials) ip = "" safely do - ip = new_client(credentials).request('grid/ip/list', { + ip = new_client(credentials).request('grid/ip/list', { 'ip.type' => '1', 'ip.state' => '1' })['list'].first['ip'] @@ -249,5 +237,3 @@ end end end end - -