def test_read_yaml_file_no_cache(self, load_patch, open_patch):
     expected = {'water': 'slide'}
     filename = 'fake_fname_tres'
     service_configuration_lib.disable_yaml_cache()
     actual = service_configuration_lib._read_yaml_file(filename)
     actual_two = service_configuration_lib._read_yaml_file(filename)
     open_patch.assert_any_call(filename, 'r', encoding='UTF-8')
     assert open_patch.call_count == 2
     load_patch.assert_any_call(open_patch.return_value.__enter__().read())
     assert load_patch.call_count == 2
     T.assert_equal(expected, actual)
     T.assert_equal(expected, actual_two)
 def test_read_yaml_file_with_cache(self, load_patch, open_patch):
     expected = {'mmmm': 'tests'}
     filename = 'fake_fname_dos'
     service_configuration_lib.enable_yaml_cache()
     actual = service_configuration_lib._read_yaml_file(filename)
     actual_two = service_configuration_lib._read_yaml_file(filename)
     open_patch.assert_called_once_with(filename, 'r', encoding='UTF-8')
     load_patch.assert_called_once_with(
         open_patch.return_value.__enter__().read())
     T.assert_equal(expected, actual)
     T.assert_equal(expected, actual_two)
     # When we cache, we can NOT return a pointer to the original object
     # because the caller might mutate it. We need to ensure that
     # the returned object is a copy.
     T.assert_is_not(actual, actual_two)
Esempio n. 3
0
def load_tron_service_config(service,
                             tron_cluster,
                             load_deployments=True,
                             soa_dir=DEFAULT_SOA_DIR):
    """Load all configured jobs for a service, and any additional config values."""

    config = service_configuration_lib.read_extra_service_information(
        service, 'tron-' + tron_cluster, soa_dir)
    if not config:
        tron_conf_path = os.path.join(
            os.path.abspath(soa_dir),
            'tron',
            tron_cluster,
            service + '.yaml',
        )
        config = service_configuration_lib._read_yaml_file(tron_conf_path)

    if not config:
        raise NoConfigurationForServiceError(
            'No Tron configuration found for service %s' % service)

    extra_config = {
        key: value
        for key, value in config.items() if key != 'jobs'
    }
    job_configs = [
        TronJobConfig(
            config_dict=job,
            load_deployments=load_deployments,
            soa_dir=soa_dir,
        ) for job in config.get('jobs') or []
    ]
    return job_configs, extra_config
 def test_read_yaml_file_single(self, load_patch, open_patch):
     expected = {'data': 'mock'}
     filename = 'fake_fname_uno'
     actual = service_configuration_lib._read_yaml_file(filename)
     open_patch.assert_called_once_with(filename, 'r', encoding='UTF-8')
     load_patch.assert_called_once_with(
         open_patch.return_value.__enter__().read())
     T.assert_equal(expected, actual)
Esempio n. 5
0
def create_complete_master_config(cluster, soa_dir=DEFAULT_SOA_DIR):
    system_paasta_config = load_system_paasta_config()
    tronfig_folder = get_tronfig_folder(soa_dir=soa_dir, cluster=cluster)
    config = service_configuration_lib._read_yaml_file(
        os.path.join(tronfig_folder, f"MASTER.yaml"))
    master_config = format_master_config(
        config,
        system_paasta_config.get_volumes(),
        system_paasta_config.get_dockercfg_location(),
    )
    return yaml.dump(master_config, Dumper=Dumper, default_flow_style=False)
Esempio n. 6
0
def load_tron_yaml(service: str, cluster: str, soa_dir: str) -> Dict[str, Any]:
    tronfig_folder = get_tronfig_folder(soa_dir=soa_dir, cluster=cluster)
    config = service_configuration_lib.read_extra_service_information(
        service_name=service,
        extra_info=f'tron-{cluster}',
        soa_dir=soa_dir,
    )
    if not config:
        config = service_configuration_lib._read_yaml_file(os.path.join(tronfig_folder, f"{service}.yaml"))
    if not config:
        raise NoConfigurationForServiceError('No Tron configuration found for service %s' % service)
    return config