Add dataplane deploy setting
[apex.git] / lib / python / apex / deploy_env.py
index bfb94f5..25e2d0a 100644 (file)
@@ -15,6 +15,7 @@ REQ_DEPLOY_SETTINGS = ['sdn_controller',
                        'sdn_l3',
                        'tacker',
                        'congress',
+                       'dataplane',
                        'sfc',
                        'vpn']
 
@@ -22,6 +23,7 @@ OPT_DEPLOY_SETTINGS = ['performance']
 
 VALID_ROLES = ['Controller', 'Compute', 'ObjectStorage']
 VALID_PERF_OPTS = ['kernel','nova']
+VALID_DATAPLANES = ['ovs','ovs_dpdk','fdio']
 
 class DeploySettings:
     """
@@ -54,14 +56,24 @@ class DeploySettings:
         if not isinstance(deploy_options, dict):
             raise DeploySettingsException("deploy_options should be a list")
 
-        for option in deploy_options:
-            if option not in REQ_DEPLOY_SETTINGS + OPT_DEPLOY_SETTINGS:
+        for setting, value in deploy_options.items():
+            if setting not in REQ_DEPLOY_SETTINGS + OPT_DEPLOY_SETTINGS:
                 raise DeploySettingsException("Invalid deploy_option {} "
-                                              "specified".format(option))
-
-        for required_setting in REQ_DEPLOY_SETTINGS:
-            if required_setting not in deploy_options:
-                self.deploy_settings['deploy_options']['required'] = False
+                                              "specified".format(setting))
+            if setting == 'dataplane':
+                if value not in VALID_DATAPLANES:
+                    planes = ' '.join(VALID_DATAPLANES)
+                    raise DeploySettingsException("Invalid dataplane {} "
+                                                  "specified. Valid dataplanes:"
+                                                  " {}".format(value,planes))
+
+
+        for req_set in REQ_DEPLOY_SETTINGS:
+            if req_set not in deploy_options:
+                if req_set == 'dataplane':
+                    self.deploy_settings['deploy_options'][req_set] = 'ovs'
+                else:
+                    self.deploy_settings['deploy_options'][req_set] = False
 
         if 'performance' in deploy_options:
             if not isinstance(deploy_options['performance'], dict):