def test_projects_ini_update_config_empty_dict(): """Values dict can be empty, resulting in no change to config """ k = project_ini.load_config('tests/data/project_ini/project.ini') project_ini.update_config(k, {}) assert 'version' in k['app'], '"app" section missing from config' assert k['app']['name'] == 'fcs-etl', 'wrong name'
def test_projects_ini_update_config(): """Can populate a config with a dict """ k = project_ini.load_config('tests/data/project_ini/project.ini') project_ini.update_config(k, {'app': {'name': 'pytest'}}) assert 'version' in k['app'], '"app" section missing from config' assert k['app']['name'] == 'pytest', '"version" option missing from "app" section'
def test_projects_ini_update_config_invalid_dict(): """Values dict must only contain sections and options defined by ini """ k = project_ini.load_config('tests/data/project_ini/project.ini') with pytest.raises(KeyError): # Cannot add an option to an ini section project_ini.update_config(k, {'app': {'level': '9000'}}) with pytest.raises(KeyError): # Cannot add a section to ini project_ini.update_config(k, {'candybar': {'name': 'Baby Ruth'}})
def handle_file_upload(self, parsed_args, passed_vals={}): super(UploadJSONTemplate, self).handle_file_upload(parsed_args) # payload = getattr(self, 'json_file_contents') # load variable sets # ini-based configuration ini_path = self.get_ini_path(parsed_args.ini_file_name) config = project_ini.key_values(ini_path, as_dict=True) # tapis dynamic variables tapis_variables = self.key_values() # right-merged dictionary # dynamic values always overide ini-loaded defaults project_ini.update_config(config, tapis_variables, add_keys=True) # Accept run-time overrides project_ini.update_config(config, passed_vals, add_keys=True) # render, where merged variables overrides module-provided values self._render_json_file_contents(passed_vals=config) return self.json_file_contents
def all_key_values(self, parsed_args, passed_vals): # Load up ini file ini_path = self.get_ini_path(parsed_args.ini_file_name) cfg = project_ini.key_values(ini_path) # Load up core template vars tmpl = templating.key_values({}) project_ini.update_config(cfg, tmpl, add_keys=True) # Extend with API-related dynamic vars tapis = self.key_values() project_ini.update_config(cfg, tapis, add_keys=True) # Compute and merge in default execution and deployment systems # consult settings first, then resolve from tapis config if defaults arent learnable defaults = { 'app': { 'execution_system': None, 'deployment_system': None } } if settings.TAPIS_CLI_PREF_EXECUTION_SYSTEM is not None and settings.TAPIS_CLI_PREF_EXECUTION_SYSTEM != '': defaults['app'][ 'execution_system'] = settings.TAPIS_CLI_PREF_EXECUTION_SYSTEM else: if tapis.get('default_private_execution', None) is not None: defaults['app']['execution_system'] = tapis.get( 'default_private_execution') elif tapis.get('default_public_execution', None) is not None: defaults['app']['execution_system'] = tapis.get( 'default_public_execution') else: defaults['app']['execution_system'] = None if settings.TAPIS_CLI_PREF_DEPLOYMENT_SYSTEM is not None and settings.TAPIS_CLI_PREF_DEPLOYMENT_SYSTEM != '': defaults['app'][ 'deployment_system'] = settings.TAPIS_CLI_PREF_DEPLOYMENT_SYSTEM else: if tapis.get('default_private_storage', None) is not None: defaults['app']['deployment_system'] = tapis.get( 'default_private_storage') elif tapis.get('default_public_storage', None) is not None: defaults['app']['deployment_system'] = tapis.get( 'default_public_storage') else: defaults['app']['deployment_system'] = None # right-merge dictionary project_ini.update_config(cfg, defaults, add_keys=True) # Finally, layer over passed values. Assumption is that these # are passed by CLI or other run-time means project_ini.update_config(cfg, passed_vals, add_keys=True) return cfg
def handle_file_upload(self, parsed_args, passed_vals={}): super(UploadJSONTemplate, self).handle_file_upload(parsed_args) # payload = getattr(self, 'json_file_contents') # load variable sets # ini-based configuration ini_path = self.get_ini_path(parsed_args.ini_file_name) config = project_ini.key_values(ini_path, as_dict=True) # tapis dynamic variables tapis = self.key_values() # right-merged dictionary # dynamic values always overide ini-loaded defaults project_ini.update_config(config, tapis, add_keys=True) # Compute and merge in default execution and deployment systems # consult settings first, then resolve from tapis config if defaults arent learnable defaults = { 'app': { 'execution_system': None, 'deployment_system': None } } if settings.TAPIS_CLI_PREF_EXECUTION_SYSTEM is not None and settings.TAPIS_CLI_PREF_EXECUTION_SYSTEM != '': defaults['app'][ 'execution_system'] = settings.TAPIS_CLI_PREF_EXECUTION_SYSTEM else: if tapis.get('default_private_execution', None) is not None: defaults['app']['execution_system'] = tapis.get( 'default_private_execution') elif tapis.get('default_public_execution', None) is not None: defaults['app']['execution_system'] = tapis.get( 'default_public_execution') else: defaults['app']['execution_system'] = None if settings.TAPIS_CLI_PREF_DEPLOYMENT_SYSTEM is not None and settings.TAPIS_CLI_PREF_DEPLOYMENT_SYSTEM != '': defaults['app'][ 'deployment_system'] = settings.TAPIS_CLI_PREF_DEPLOYMENT_SYSTEM else: if tapis.get('default_private_storage', None) is not None: defaults['app']['deployment_system'] = tapis.get( 'default_private_storage') elif tapis.get('default_public_storage', None) is not None: defaults['app']['deployment_system'] = tapis.get( 'default_public_storage') else: defaults['app']['deployment_system'] = None project_ini.update_config(config, defaults, add_keys=True) # Accept run-time overrides project_ini.update_config(config, passed_vals, add_keys=True) # render, where merged variables overrides module-provided values self._render_json_file_contents(passed_vals=config) return self.json_file_contents
def _all_key_values(self, parsed_args, passed_vals): t = templating.key_values(passed_vals) ini_path = self.get_ini_path(parsed_args.ini_file_name) p = project_ini.key_values(ini_path) raise SystemError(p) project_ini.update_config(t, p, add_keys=True) # tapis dynamic variables tapis_variables = self.key_values() # right-merged dictionary # dynamic values always overide ini-loaded defaults project_ini.update_config(t, tapis_variables, add_keys=True) project_ini.update_config(t, {}, add_keys=True) return t
def all_key_values(self, parsed_args, passed_vals): # Load up ini file ini_path = self.get_ini_path(parsed_args.ini_file_name) cfg = project_ini.key_values(ini_path) # Load up core template vars tmpl = templating.key_values({}) project_ini.update_config(cfg, tmpl, add_keys=True) # Extend with API-related dynamic vars tapis = self.key_values() project_ini.update_config(cfg, tapis, add_keys=True) # Finally, layer over passed values. Assumption is that these # are passed by CLI or other run-time means project_ini.update_config(cfg, passed_vals, add_keys=True) return cfg
def _all_key_values(self, parsed_args, passed_vals): t = templating.key_values(passed_vals) ini_path = self.get_ini_path(parsed_args.ini_file_name) p = project_ini.key_values(ini_path) project_ini.update_config(t, p, add_keys=True) # tapis dynamic variables tapis = self.key_values() # right-merge dictionary # dynamic values always overide ini-loaded defaults project_ini.update_config(t, tapis, add_keys=True) # Compute default execution and deployment systems defaults = { 'app': { 'execution_system': None, 'deployment_system': None } } if settings.TAPIS_CLI_PREF_EXECUTION_SYSTEM is not None and settings.TAPIS_CLI_PREF_EXECUTION_SYSTEM != '': defaults['app'][ 'execution_system'] = settings.TAPIS_CLI_PREF_EXECUTION_SYSTEM else: defaults['app']['execution_system'] = tapis.get( 'default_private_execution', tapis.get('default_public_execution', None)) if settings.TAPIS_CLI_PREF_DEPLOYMENT_SYSTEM is not None and settings.TAPIS_CLI_PREF_DEPLOYMENT_SYSTEM != '': defaults['app'][ 'deployment_system'] = settings.TAPIS_CLI_PREF_DEPLOYMENT_SYSTEM else: defaults['app']['deployment_system'] = tapis.get( 'default_private_storage', tapis.get('default_public_storage', None)) # right-merge dictionary project_ini.update_config(t, defaults, add_keys=True) return t