From 5e6048f87b9c3b738f83dcc40dcf3a782c85f915 Mon Sep 17 00:00:00 2001
From: Rafael Monnerat <rafael@nexedi.com>
Date: Mon, 21 Mar 2011 18:34:26 +0000
Subject: [PATCH] Post External Services information to
 ERP5Site_assertExternalServiceList script.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@44479 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../erp5/src/slapos/recipe/erp5/__init__.py    | 18 +++++++++++-------
 .../recipe/erp5/src/slapos/recipe/erp5/erp5.py | 18 +++++++++++++-----
 2 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/slapos/recipe/erp5/src/slapos/recipe/erp5/__init__.py b/slapos/recipe/erp5/src/slapos/recipe/erp5/__init__.py
index 6e07c62589..8ec38c4a2e 100644
--- a/slapos/recipe/erp5/src/slapos/recipe/erp5/__init__.py
+++ b/slapos/recipe/erp5/src/slapos/recipe/erp5/__init__.py
@@ -70,8 +70,8 @@ class Recipe(BaseSlapRecipe):
         apache_login=self.installLoginApache(ip=self.getGlobalIPv6Address(),
           port=13000, backend=zope_access, key=ca_conf['login_key'],
           certificate=ca_conf['login_certificate']))
-    self.installERP5Site(user, password, zope_access,
-            mysql_conf, conversion_server_conf, memcached_conf, self.site_id)
+    self.installERP5Site(user, password, zope_access, mysql_conf, 
+             conversion_server_conf, memcached_conf, kumo_conf, self.site_id)
     self.installTestRunner(ca_conf, mysql_conf, conversion_server_conf)
     self.linkBinary()
     self.setConnectionDict(dict(
@@ -334,13 +334,17 @@ class Recipe(BaseSlapRecipe):
     return user, password
 
   def installERP5Site(self, user, password, zope_access, mysql_conf,
-          conversion_server_conf=None, memcached_conf=None, erp5_site_id='erp5'):
+          conversion_server_conf=None, memcached_conf=None, kumo_conf=None, erp5_site_id='erp5'):
     """ Create a script controlled by supervisor, which creates a erp5
     site on current available zope and mysql environment"""
-    if conversion_server_conf is None:
-      conversion_server_conf = {}
+    conversion_server = None
+    if conversion_server_conf is not None:
+      conversion_server = "%s:%s" % (conversion_server_conf['conversion_server_ip'],
+             conversion_server_conf['conversion_server_port'])
     if memcached_conf is None:
       memcached_conf = {}
+    if kumo_conf is None:
+      kumo_conf = {}
     # XXX Conversion server and memcache server coordinates are not relevant
     # for pure site creation.
     https_connection_url = "http://%s:%s@%s/" % (user, password, zope_access)
@@ -359,8 +363,8 @@ class Recipe(BaseSlapRecipe):
                              mysql_connection_string,
                              https_connection_url,
                              memcached_conf.get('memcached_url'),
-                             conversion_server_conf.get('conversion_server_ip'),
-                             conversion_server_conf.get('conversion_server_port'),
+                             conversion_server,
+                             kumo_conf.get("kumo_address"),
                              bt5_list,
                              bt5_repository_list]))
     return []
diff --git a/slapos/recipe/erp5/src/slapos/recipe/erp5/erp5.py b/slapos/recipe/erp5/src/slapos/recipe/erp5/erp5.py
index b1a957ff03..c17636b471 100644
--- a/slapos/recipe/erp5/src/slapos/recipe/erp5/erp5.py
+++ b/slapos/recipe/erp5/src/slapos/recipe/erp5/erp5.py
@@ -35,8 +35,8 @@ def updateERP5(args):
   mysql_string = args[1]
   base_url = args[2]
   memcached_provider = args[3]
-  conversion_server_address = args[4]
-  conversion_server_port = args[5]
+  conversion_server = args[4]
+  kumo_provider = args[5]
   bt5_list = args[6]
   bt5_repository_list = []
   if len(args) > 7:
@@ -46,7 +46,9 @@ def updateERP5(args):
     bt5_repository_list = ["http://www.erp5.org/dists/snapshot/bt5"]
   erp5_catalog_storage = "erp5_mysql_innodb_catalog"
   business_template_setup_finished = 0
-  sleep = 60
+  external_service_assertion = 1
+  update_script_id = "ERP5Site_assertExternalServiceList"
+  sleep = 120
   while True:
     try:
       proxy = xmlrpclib.ServerProxy(base_url)
@@ -87,8 +89,14 @@ def updateERP5(args):
               len([i for i in bt5_list if i not in installed_bt5_list]) == 0:
             print "Repositories updated and business templates installed."
             business_template_setup_finished = 1
-      else:
-        print "ERP5 site is already present, ignore."
+
+      if external_service_assertion:
+        url = "%s/%s/%s" % (base_url, site_id, update_script_id)
+        result = urllib.urlopen(url, urllib.urlencode({
+          "memcached" : memcached_provider,
+          "kumo" : kumo_provider,
+          "conversion_server" : conversion_server,})).read()
+        external_service_assertion = not (result == "True")
 
     except IOError:
       print "Unable to create the ERP5 Site!"
-- 
2.30.9