You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2010/08/09 19:18:38 UTC

[PATCH core] GoGrid Fixed (rev2)

---
 .../lib/deltacloud/drivers/gogrid/gogrid_client.rb |    2 +-
 .../lib/deltacloud/drivers/gogrid/gogrid_driver.rb |   25 +++++++++++--------
 server/views/realms/index.html.haml                |    4 +-
 3 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/server/lib/deltacloud/drivers/gogrid/gogrid_client.rb b/server/lib/deltacloud/drivers/gogrid/gogrid_client.rb
index f4f5796..19fe09e 100644
--- a/server/lib/deltacloud/drivers/gogrid/gogrid_client.rb
+++ b/server/lib/deltacloud/drivers/gogrid/gogrid_client.rb
@@ -9,7 +9,7 @@ class GoGridClient
                  apikey='YOUR API KEY',
                  secret='YOUR SHARED SECRET', 
                  format='json',
-                 version='1.4')
+                 version='1.5')
     @server = server
     @secret = secret
     @default_params = {'format'=>format, 'v'=>version,'api_key' => apikey}
diff --git a/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb b/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
index 72d91b6..7ef0878 100644
--- a/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
+++ b/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
@@ -91,7 +91,7 @@ class GogridDriver < Deltacloud::BaseDriver
 
   def realms(credentials, opts=nil)
     safely do
-      new_client(credentials).request('common/lookup/list', { 'lookup' => 'image.type' })['list'].collect do |realm|
+        new_client(credentials).request('common/lookup/list', { 'lookup' => 'ip.datacenter' })['list'].collect do |realm|
         convert_realm(realm)
       end
     end
@@ -115,7 +115,7 @@ class GogridDriver < Deltacloud::BaseDriver
         'name' => name,
         'image' => image_id,
         'server.ram' => hwp.name,
-        'ip' => get_next_free_ip(credentials)
+        'ip' => get_free_ip_from_realm(credentials, opts[:realm_id] || '1')
       })['list'].first
       if instance
         login_data = get_login_data(client, instance[:id])
@@ -181,25 +181,25 @@ class GogridDriver < Deltacloud::BaseDriver
 
   def reboot_instance(credentials, id)
     safely do
-      new_client(credentials).request('grid/server/power', { 'id' => id, 'power' => 'reboot'})
+      new_client(credentials).request('grid/server/power', { 'name' => id, 'power' => 'reboot'})
     end
   end
 
   def destroy_instance(credentials, id)
     safely do
-      new_client(credentials).request('grid/server/delete', { 'id' => id})
+      new_client(credentials).request('grid/server/delete', { 'name' => id})
     end
   end
 
   def stop_instance(credentials, id)
     safely do
-      new_client(credentials).request('grid/server/power', { 'id' => id, 'power' => 'off'})
+      new_client(credentials).request('grid/server/power', { 'name' => id, 'power' => 'off'})
     end
   end
 
   def start_instance(credentials, id)
     safely do
-      new_client(credentials).request('grid/server/power', { 'id' => id, 'power' => 'on'})
+      new_client(credentials).request('grid/server/power', { 'name' => id, 'power' => 'on'})
     end
   end
 
@@ -210,8 +210,10 @@ class GogridDriver < Deltacloud::BaseDriver
   def keys(credentials, opts=nil)
     gogrid = new_client( credentials )
     creds = []
-    gogrid.request('support/password/list')['list'].each do |password|
-      creds << convert_key(password)
+    safely do
+      gogrid.request('support/password/list')['list'].each do |password|
+        creds << convert_key(password)
+      end
     end
     return creds
   end
@@ -300,7 +302,7 @@ class GogridDriver < Deltacloud::BaseDriver
       :image_id => instance['image']['id'],
       :instance_profile => InstanceProfile.new(hwp_name),
       :name => instance['name'],
-      :realm_id => instance['type']['id'],
+      :realm_id => instance['ip']['datacenter']['id'],
       :state => convert_server_state(instance['state']['name'], instance['id']),
       :actions => instance_actions_for(convert_server_state(instance['state']['name'], instance['id'])),
       :public_addresses => [ instance['ip']['ip'] ],
@@ -319,12 +321,13 @@ class GogridDriver < Deltacloud::BaseDriver
     state.eql?('Off') ? 'STOPPED' : 'RUNNING'
   end
 
-  def get_next_free_ip(credentials)
+  def get_free_ip_from_realm(credentials, realm_id)
     ip = ""
     safely do
       ip = new_client(credentials).request('grid/ip/list', {
         'ip.type' => '1',
-        'ip.state' => '1'
+        'ip.state' => '1',
+        'datacenter' => realm_id
       })['list'].first['ip']
     end
     return ip
diff --git a/server/views/realms/index.html.haml b/server/views/realms/index.html.haml
index cfee320..ea4cf85 100644
--- a/server/views/realms/index.html.haml
+++ b/server/views/realms/index.html.haml
@@ -5,9 +5,9 @@
   %thead
     %tr
       %th
-        Name
+        ID
       %th
-        Architecture
+        Name
       %th
         Memory
       %th
-- 
1.7.2