def GenerateConfig()

in google/resource-snippets/compute-v1/cloud_router.py [0:0]


def GenerateConfig(context):
  """Generate template config based on python objects."""
  properties = context.properties
  region = properties['region']
  compute_resource_util.SetContext(context)

  network = ComputeResource('network', compute_constants.NETWORKS, {
    'autoCreateSubnetworks': True
  })
  vpn_gateway = ComputeResource('vpg', compute_constants.TARGETVPNGATEWAYS, {
      'network': network.SelfLink(),
      'region': region
  })
  ip = ComputeResource('static-ip', compute_constants.ADDRESSES,
                       {'region': region})
  esp_rule = ComputeResource(
      'esp-rule', compute_constants.FORWARDINGRULES, {
          'IPProtocol': 'ESP',
          'IPAddress': ip.Ref('address'),
          'region': region,
          'target': vpn_gateway.SelfLink()
      })
  udp4500_rule = ComputeResource(
      'udp-4500-rule', compute_constants.FORWARDINGRULES, {
          'IPProtocol': 'UDP',
          'IPAddress': ip.Ref('address'),
          'region': region,
          'target': vpn_gateway.SelfLink(),
          'portRange': 4500
      })
  udp500_rule = ComputeResource(
      'udp-500-rule', compute_constants.FORWARDINGRULES, {
          'IPProtocol': 'UDP',
          'IPAddress': ip.Ref('address'),
          'region': region,
          'target': vpn_gateway.SelfLink(),
          'portRange': 500
      })
  cloud_router = ComputeResource('cloud-router', compute_constants.ROUTERS, {
      'region': region,
      'network': network.SelfLink(),
      'asn': properties['asn']
  })
  ComputeResource(
      'vpn-tunnel', compute_constants.VPNTUNNELS, {
          'region':
              region,
          'ikeVersion':
              2,
          'sharedSecret':
              properties['sharedSecret'],
          'peerIp':
              properties['peerAddress'],
          'router':
              cloud_router.SelfLink(),
          'targetVpnGateway':
              vpn_gateway.SelfLink(),
          'description':
              'Must be deployed after ' + esp_rule.SelfLink() + ' ' +
              udp500_rule.SelfLink() + ' ' + udp4500_rule.SelfLink()
      })

  return Resources()