def install_config()

in blueprints/third-party-solutions/openshift/prepare.py [0:0]


def install_config(ctx=None):
  'Create install config from terraform variables.'
  logging.info('generating install config')
  y = yaml.YAML()
  try:
    with open('install-config.tpl.yml') as f:
      data = y.load(f)
  except (IOError, OSError) as e:
    raise Error(f'Cannot open install-config template: {e}')
  except yaml.YAMLError as e:
    raise Error(f'Parsing error in install-config template: {e}')
  vars = ctx.obj['tfvars']
  paths = ctx.obj['paths']
  vars_key = vars['disk_encryption_key']
  vars_net = vars['install_config_params']['network']
  vars_proxy = vars['install_config_params']['proxy']
  data_disk = data['compute'][0]['platform']['gcp']['osDisk']
  data['baseDomain'] = vars['domain']
  data['metadata']['name'] = vars['cluster_name']
  data['platform']['gcp']['projectID'] = vars['service_project']['project_id']
  data['platform']['gcp']['region'] = vars['region']
  data_disk['diskSizeGB'] = int(vars['install_config_params']['disk_size'])
  if vars_key and vars_key != 'null':
    data_disk.insert(
        len(data_disk), 'encryptionKey', {
            'kmsKey': {
                'projectID': vars_key['project_id'],
                'keyRing': vars_key['keyring'],
                'location': vars_key['location'],
                'name': vars_key['name']
            }
        })
  data['networking']['clusterNetwork'][0]['cidr'] = vars_net['cluster']
  data['networking']['clusterNetwork'][0]['hostPrefix'] = vars_net[
      'host_prefix']
  data['networking']['machineNetwork'][0]['cidr'] = vars_net['machine']
  data['networking']['serviceNetwork'][0] = vars_net['service']
  if vars_proxy and vars_proxy != 'null':
    noproxy = [t.strip() for t in vars_proxy['noproxy'].split(',') if t.strip()]
    noproxy += [f'.{vars["domain"]}', vars_net['machine']]
    noproxy += vars['allowed_ranges']
    data.insert(
        len(data), 'proxy', {
            'httpProxy': vars_proxy['http'],
            'httpsProxy': vars_proxy['https'],
            'noProxy': ','.join(noproxy)
        })
  for k, v in dict(pull_secret='pullSecret', ssh_key='sshKey').items():
    if k not in paths:
      raise Error(f'Key \'{k}\' missing from fs_paths in Terraform variables.')
    try:
      with paths[k].open() as f:
        data[v] = f.read().strip()
    except (IOError, OSError) as e:
      raise Error(f'Cannot read file: {e}')
  try:
    with (paths['config_dir'] / 'install-config.yaml').open('w') as f:
      y.dump(data, f)
  except (IOError, OSError) as e:
    raise Error(f'Cannot write install config: {e}')
  except yaml.YAMLError as e:
    raise Error(f'Error dumping install-config template: {e}')