def manifests_edit()

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


def manifests_edit(ctx=None):
  'Edit generated manifests.'
  logging.info('edit manifests')
  dir_ = ctx.obj['paths']['config_dir'] / 'openshift'
  for fileobj in dir_.glob('99_openshift-cluster-api_master-machines-*.yaml'):
    logging.info(f'removing {fileobj.name}')
    fileobj.unlink()
  tfvars = ctx.obj['tfvars']
  for fileobj in dir_.glob('99_openshift-cluster-api_worker-machineset-*.yaml'):
    logging.info(f'editing {fileobj.name}')
    y = yaml.YAML()
    try:
      with fileobj.open() as f:
        data = y.load(f)
      data_v = data['spec']['template']['spec']['providerSpec']['value']
      data_v['region'] = tfvars['region']
      data_v['projectID'] = tfvars['service_project']['project_id']
      if not 'ocp-worker' in data_v['tags']:
        data_v['tags'].append('ocp-worker')
      if tfvars['install_config_params']['labels']:
        data_v['labels'] = tfvars['install_config_params']['labels'].copy()
        for i, d in enumerate(data_v['disks']):
          d['labels'] = tfvars['install_config_params']['labels'].copy()
      data_n = data_v['networkInterfaces'][0]
      data_n['network'] = tfvars['host_project']['vpc_name']
      data_n['subnetwork'] = tfvars['host_project']['workers_subnet_name']
      data_n.insert(len(data_n), 'projectID',
                    tfvars['host_project']['project_id'])
      with fileobj.open('w') as f:
        y.dump(data, f)
    except (IOError, OSError, yaml.YAMLError) as e:
      raise Error(f'error editing file {fileobj}: {e}')
  dir_ = ctx.obj['paths']['config_dir'] / 'manifests'
  fileobj = dir_ / 'cloud-provider-config.yaml'
  vars_h = tfvars["host_project"]
  logging.info(f'editing {fileobj.name}')
  try:
    with fileobj.open() as f:
      data = y.load(f)
      config = [
          l for l in data['data']['config'].strip().split('\n')
          if 'network-' not in l.rpartition('=')[0]
      ]
      config += [
          f'network-project-id = {vars_h["project_id"]}',
          f'network-name = {vars_h["vpc_name"]}',
          f'subnetwork-name = {vars_h["default_subnet_name"]}',
      ]
      data['data']['config'] = '\n'.join(config)
      with fileobj.open('w') as f:
        y.dump(data, f)
  except (IOError, OSError, yaml.YAMLError) as e:
    raise Error(f'error editing file {fileobj}: {e}')
  fileobj = dir_ / 'cluster-scheduler-02-config.yml'
  logging.info(f'editing {fileobj.name}')
  try:
    with fileobj.open() as f:
      data = y.load(f)
      data['spec']['mastersSchedulable'] = False
      with fileobj.open('w') as f:
        y.dump(data, f)
  except (IOError, OSError, yaml.YAMLError) as e:
    raise Error(f'error editing file {fileobj}: {e}')