[ZODB-Dev] [RFC] ZEO: Allow non-packaged products

Vincent Pelletier vincent at nexedi.com
Fri Apr 29 09:24:06 EDT 2011


Hi.

I need ZEO to be able to find non-packaged products for conflict resolution 
purposes. As ZEO AFAIK doesn't support this I gave it a quick try. I reached 
the "works for me" state, that I now would like to get feedback on.

Basically, I transposed Zope's "products" config option to ZEO.

Did I miss anything already existing to achieve this ?
Is such change (functionality-wise) welcome in ZEO ?
If it is, is it acceptable in its current form ?

diff --git a/src/ZEO/component.xml b/src/ZEO/component.xml
index 39cf46b..f36d9d1 100644
--- a/src/ZEO/component.xml
+++ b/src/ZEO/component.xml
@@ -122,6 +122,14 @@
        </description>
     </key>

+  <multikey name="products" datatype="existing-directory">
+    <description>
+      This specifies additional product directories which are added to
+      Products.__path__.  Directories are added in the order in which
+      they are specified.
+    </description>
+  </multikey>
+
   </sectiontype>

 </component>
diff --git a/src/ZEO/runzeo.py b/src/ZEO/runzeo.py
index b2e24e7..2af7635 100644
--- a/src/ZEO/runzeo.py
+++ b/src/ZEO/runzeo.py
@@ -115,6 +115,7 @@ class ZEOOptionsMixin:
                  None, 'auth-realm=')
         self.add('pid_file', 'zeo.pid_filename',
                  None, 'pid-file=')
+        self.add('products', 'zeo.products', None, 'products=')

 class ZEOOptions(ZDOptions, ZEOOptionsMixin):

@@ -150,6 +151,12 @@ class ZEOServer:
         self.options = options

     def main(self):
+        import Products
+        L = []
+        for d in self.options.products + Products.__path__:
+            if d not in L:
+                L.append(d)
+        Products.__path__[:] = L
         self.setup_default_logging()
         self.check_socket()
         self.clear_socket()
-- 
Vincent Pelletier


More information about the ZODB-Dev mailing list