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'}})
示例#4
0
 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
示例#5
0
    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
示例#6
0
    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
示例#7
0
 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
示例#8
0
    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
示例#9
0
    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