import yaml
import logging
+from .common import utils
+
REQ_DEPLOY_SETTINGS = ['sdn_controller',
'odl_version',
'sdn_l3',
'dataplane',
'sfc',
'vpn',
- 'vpp']
+ 'vpp',
+ 'ceph',
+ 'gluon']
-OPT_DEPLOY_SETTINGS = ['performance', 'vsperf']
+OPT_DEPLOY_SETTINGS = ['performance', 'vsperf', 'ceph_device', 'yardstick']
VALID_ROLES = ['Controller', 'Compute', 'ObjectStorage']
-VALID_PERF_OPTS = ['kernel', 'nova']
+VALID_PERF_OPTS = ['kernel', 'nova', 'vpp']
VALID_DATAPLANES = ['ovs', 'ovs_dpdk', 'fdio']
"""
def __init__(self, filename):
init_dict = {}
- if type(filename) is str:
+ if isinstance(filename, str):
with open(filename, 'r') as deploy_settings_file:
init_dict = yaml.safe_load(deploy_settings_file)
else:
if not isinstance(deploy_options, dict):
raise DeploySettingsException("deploy_options should be a list")
+ if ('gluon' in self['deploy_options'] and
+ 'vpn' in self['deploy_options']):
+ if (self['deploy_options']['gluon'] is True and
+ self['deploy_options']['vpn'] is False):
+ raise DeploySettingsException(
+ "Invalid deployment configuration: "
+ "If gluon is enabled, "
+ "vpn also needs to be enabled")
+
for setting, value in deploy_options.items():
if setting not in REQ_DEPLOY_SETTINGS + OPT_DEPLOY_SETTINGS:
raise DeploySettingsException("Invalid deploy_option {} "
if req_set not in deploy_options:
if req_set == 'dataplane':
self['deploy_options'][req_set] = 'ovs'
+ elif req_set == 'ceph':
+ self['deploy_options'][req_set] = True
else:
self['deploy_options'][req_set] = False
if 'performance' in self['deploy_options']:
bash_str += self._dump_performance()
bash_str += self._dump_deploy_options_array()
-
- if path:
- with open(path, 'w') as file:
- file.write(bash_str)
- else:
- print(bash_str)
+ utils.write_str(bash_str, path)
class DeploySettingsException(Exception):