You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by ma...@redhat.com on 2011/07/28 19:36:58 UTC

Bug fixes for Gogrid driver

bug fixes for gogrid driver:

* fixes issue with realms (first realm was always reported as we weren't filtering)
* load_balancer parameters weren't being captured correctly (inconsistency in naming)
* adds load_balancer listener if there are no instances defined (can still capture the load balancer listening port)

marios

Re: Bug fixes for Gogrid driver

Posted by Michal Fojtik <mf...@redhat.com>.
On Jul 28, 2011, at 7:36 PM, marios@redhat.com wrote:

ACK. Thanks for testing this!

  -- Michal

> 
> bug fixes for gogrid driver:
> 
> * fixes issue with realms (first realm was always reported as we weren't filtering)
> * load_balancer parameters weren't being captured correctly (inconsistency in naming)
> * adds load_balancer listener if there are no instances defined (can still capture the load balancer listening port)
> 
> marios

----------------------------------------------------------------------
Michal Fojtik, Senior Software Engineer, Red Hat Czech
mfojtik@redhat.com
Deltacloud API: http://deltacloud.org


[PATCH] Various bug fixes for Gogrid:

Posted by ma...@redhat.com.
From: marios <ma...@redhat.com>

* fixes issue with realms (first realm was always reported as we
  weren't filtering for :id)

* load_balancer parameters weren't being captured correctly
  (inconsistency in naming from server.rb required parameters)

* adds load_balancer listener if there are no instances defined (can
  still capture the load balancer listening port)

Signed-off-by: marios <ma...@redhat.com>
---
 .../lib/deltacloud/drivers/gogrid/gogrid_driver.rb |   40 +++++++++++--------
 1 files changed, 23 insertions(+), 17 deletions(-)

diff --git a/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb b/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
index a747e99..5e20c6a 100644
--- a/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
+++ b/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
@@ -84,11 +84,14 @@ class GogridDriver < Deltacloud::BaseDriver
   end
 
   def realms(credentials, opts=nil)
+    realms = []
+    client = new_client(credentials)
     safely do
-      new_client(credentials).request('common/lookup/list', { 'lookup' => 'ip.datacenter' })['list'].collect do |realm|
-        convert_realm(realm)
+        client.request('common/lookup/list', { 'lookup' => 'ip.datacenter' })['list'].collect do |realm|
+         realms << convert_realm(realm)
       end
     end
+    realms = filter_on(realms, :id, opts)
   end
 
   def create_instance(credentials, image_id, opts={})
@@ -228,7 +231,7 @@ class GogridDriver < Deltacloud::BaseDriver
       if opts['instance_id']
         l_instance = instance(credentials, :id => opts['instance_id'])
         real_ip = {
-          'realiplist.0.port' => opts['listener_inst_port'],
+          'realiplist.0.port' => opts['listener_instance_port'].to_i,
           'realiplist.0.ip' => l_instance ? l_instance.public_addresses.first : ""
         }
       else
@@ -237,7 +240,7 @@ class GogridDriver < Deltacloud::BaseDriver
       request = {
         'name' => opts['name'],
         'virtualip.ip' => virtip,
-        'virtualip.port' => opts['listener_lbr_port'],
+        'virtualip.port' => opts['listener_balancer_port'].to_i,
       }
       request.merge!(real_ip) if real_ip
       balancer = gogrid.request('grid/loadbalancer/add', request)['list'].first
@@ -252,9 +255,7 @@ class GogridDriver < Deltacloud::BaseDriver
     balancer = nil
     safely do
       balancer = gogrid.request('grid/loadbalancer/delete', { 'name' => id })
-      balancer = load_balancer(credentials, :id => id) unless balancer
     end
-    convert_load_balancer(credentials, balancer)
   end
 
   def load_balancers(credentials, opts={})
@@ -349,7 +350,7 @@ class GogridDriver < Deltacloud::BaseDriver
 
   def convert_load_balancer(credentials, loadbalancer)
     if loadbalancer['datacenter']
-      b_realm = realm(credentials, :id => loadbalancer['datacenter']['id'])
+      b_realm = realm(credentials, :id => loadbalancer['datacenter']['id'].to_s)
     else
       # Report first Realm until loadbalancer become ready
       b_realm = realm(credentials, :id => 1)
@@ -362,15 +363,20 @@ class GogridDriver < Deltacloud::BaseDriver
     balancer.listeners = []
     balancer.instances = []
     instance_ips = []
-    loadbalancer['realiplist'].each do |instance_ip|
-      balancer.add_listener({
-        :protocol => 'TCP',
-        :load_balancer_port => loadbalancer['virtualip']['port'],
-        :instance_port => instance_ip['port']
-      })
-      instance_ips << instance_ip['ip']['ip']
-    end if loadbalancer['realiplist']
-    balancer.instances = get_load_balancer_instances(instance_ips, loadbalancer['instances'])
+    if loadbalancer['realiplist'].size > 0
+      loadbalancer['realiplist'].each do |instance_ip|
+       balancer.add_listener({
+          :protocol => 'TCP',
+          :load_balancer_port => loadbalancer['virtualip']['port'],
+          :instance_port => instance_ip['port']
+        })
+        instance_ips << instance_ip['ip']['ip']
+      end
+    else
+      balancer.add_listener({:protocol=>'TCP', :load_balancer_port =>loadbalancer['virtualip']['port'],
+                             :instance_port => "unassigned"})
+    end
+    balancer.instances = get_load_balancer_instances(instance_ips, loadbalancer['instances']) if loadbalancer['instances']
     return balancer
   end
 
@@ -425,7 +431,7 @@ class GogridDriver < Deltacloud::BaseDriver
 
   def convert_realm(realm)
     Realm.new(
-      :id => realm['id'],
+      :id => realm['id'].to_s,
       :name => realm['name'],
       :state => :unlimited,
       :storage => :unlimited
-- 
1.7.3.4