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)
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)
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)
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