From e789c59f3846350891dba9b1de241eebb4a34530 Mon Sep 17 00:00:00 2001
From: Vincent Pelletier <vincent@nexedi.com>
Date: Thu, 11 Jul 2013 22:01:49 +0200
Subject: [PATCH] Make all erp5_promise recipe options optional.

Also, reduce code duplication.
---
 slapos/recipe/erp5_promise/__init__.py | 30 +++++++++++++++-----------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/slapos/recipe/erp5_promise/__init__.py b/slapos/recipe/erp5_promise/__init__.py
index dec8b1cb59..7def465fcb 100644
--- a/slapos/recipe/erp5_promise/__init__.py
+++ b/slapos/recipe/erp5_promise/__init__.py
@@ -34,19 +34,23 @@ class Recipe(GenericBaseRecipe):
   """
 
   def install(self):
-
     promise_parser = ConfigParser.RawConfigParser()
-
-    promise_parser.add_section('portal_templates')
-    promise_parser.set('portal_templates', 'repository', self.options['bt5-repository-url'])
-    promise_parser.set('portal_templates', 'expected_bt5', self.options['bt5'])
-
-    promise_parser.add_section('external_service')
-    promise_parser.set('external_service', 'cloudooo_url', self.options['cloudooo-url'])
-    promise_parser.set('external_service', 'memcached_url', self.options['memcached-url'])
-    promise_parser.set('external_service', 'kumofs_url', self.options['kumofs-url'])
-    promise_parser.set('external_service', 'smtp_url', self.options['smtp-url'])
-
+    for section_name, option_id_list in (
+          ('portal_templates', (
+            ('repository', 'bt5-repository-url'),
+            ('expected_bt5', 'bt5'),
+          )),
+          ('external_service', (
+            ('cloudooo_url', 'cloudooo-url'),
+            ('memcached_url', 'memcached-url'),
+            ('kumofs_url', 'kumofs-url'),
+            ('smtp_url', 'smtp-url'),
+          )),
+        ):
+      promise_parser.add_section(section_name)
+      for internal_id, option_id in option_id_list:
+        option = self.options.get(option_id)
+        if option:
+          promise_parser.set(section_name, internal_id, option)
     promise_parser.write(open(self.options['promise-path'], 'w'))
-
     return [self.options['promise-path']]
-- 
2.30.9