generate/resources/_vpn.py (46 lines of code) (raw):
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from cdktf_cdktf_provider_google.compute_external_vpn_gateway import (
ComputeExternalVpnGateway,
ComputeExternalVpnGatewayInterface,
)
from imports.vpn import Vpn
from imports.vpn_ha import VpnHa
def create_vpn(self, vpn):
name = vpn["gateway_name"]
vpn["network"] = self.tf_ref("network", vpn["network"])
Vpn(self, f"vpn_{name}", **vpn)
def create_vpn_ha(self, vpn):
name = vpn["name"]
vpn["network"] = self.tf_ref("network", vpn["network"])
if peer_gcp_gateway := vpn.get("peer_gcp_gateway"):
vpn["peer_gcp_gateway"] = self.tf_ref("vpn_ha", peer_gcp_gateway)
if not vpn.get("peer_external_gateway"):
for _, tunnel in vpn.get("tunnels", {}).items():
if peer_ext_link := tunnel.get("peer_external_gateway_self_link"):
tunnel["peer_external_gateway_self_link"] = self.tf_ref(
"external_vpn_gateway", peer_ext_link
)
VpnHa(self, f"vpn_ha_{name}", **vpn)
def create_ext_vpn_gtw(self, ext_gtw):
gtw_name = ext_gtw["name"]
ext_gtw["interface"] = [
ComputeExternalVpnGatewayInterface(**interface)
for interface in ext_gtw["interface"]
]
self.created["external_vpn_gateway"][gtw_name] = ComputeExternalVpnGateway(
self, f"ext_vpn_gtw_{gtw_name}", **ext_gtw
)
def generate_external_vpn_gateways(self, my_resource):
self.created["external_vpn_gateway"] = self.created.get("external_vpn_gateway", {})
for ext_gtw in self.eztf_config.get(my_resource, []):
ext_gtw["project"] = self.tf_ref("project", ext_gtw["project"])
create_ext_vpn_gtw(self, ext_gtw)
def generate_vpn(self, my_resource, resource):
for vpn in self.eztf_config.get(my_resource, []):
create_vpn(self, vpn)
def generate_vpn_ha(self, my_resource, resource):
generate_external_vpn_gateways(self, f"external_vpn_gateway_{my_resource}")
vpn_ha = self.eztf_config.get(my_resource, [])
self.added["vpn_ha"] = self.added.get("vpn_ha", set())
self.added["vpn_ha"].update({vpn["name"] for vpn in vpn_ha})
for vpn in vpn_ha:
create_vpn_ha(self, vpn)