def GetConfig()

in perfkitbenchmarker/linux_benchmarks/unmanaged_postgresql_sysbench_benchmark.py [0:0]


def GetConfig(user_config):
  """Get the benchmark config, applying user overrides.

  Args:
    user_config:

  Returns:
    Benchmark config.
  """
  config = configs.LoadConfig(BENCHMARK_CONFIG, user_config, BENCHMARK_NAME)
  # Instead of changing the default data dir of database in (multiple) configs,
  # Force the scratch disk as database default dir (simpler code).
  disk_spec = config['vm_groups']['server']['disk_spec']
  for cloud in disk_spec:
    disk_spec[cloud]['mount_point'] = postgresql16.GetOSDependentDefaults(
        FLAGS.os_type
    )['disk_mount_point']
  # Update machine type for server/client.
  if FLAGS.db_machine_type or FLAGS.db_zone:
    vm_spec = config['vm_groups']['server']['vm_spec']
    for cloud in vm_spec:
      if FLAGS.db_zone:
        vm_spec[cloud]['zone'] = FLAGS.db_zone[0]
      if FLAGS.db_machine_type:
        vm_spec[cloud]['machine_type'] = FLAGS.db_machine_type
  if FLAGS.client_vm_machine_type or FLAGS.client_vm_zone:
    vm_spec = config['vm_groups']['client']['vm_spec']
    for cloud in vm_spec:
      if FLAGS.client_vm_zone:
        vm_spec[cloud]['zone'] = FLAGS.client_vm_zone
      if FLAGS.client_vm_machine_type:
        vm_spec[cloud]['machine_type'] = FLAGS.client_vm_machine_type

  # Add replica servers if configured.
  if FLAGS.db_high_availability:
    for index, zone in enumerate(FLAGS.db_replica_zones):
      replica = copy.deepcopy(config['vm_groups']['server'])
      for cloud in replica['vm_spec']:
        replica['vm_spec'][cloud]['zone'] = zone
      config['vm_groups'][f'replica_{index}'] = replica
  return config