generate/resources/_projects.py (41 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 imports.project_factory import ProjectFactory def create_project(self, project): project_id = project["name"] project["org_id"] = self.tf_ref("organization", "/") project["billing_account"] = self.created["vars"]["billing_id"].string_value project["name"] = project_id + \ self.created["vars"]["project_suffix"].string_value if folder := project.get("folder_id"): if self.which_node(folder) == "folder": project["folder_id"] = self.tf_ref("folder", folder) if svpc_host := project.get("svpc_host_project_id"): project["svpc_host_project_id"] = self.tf_ref("project", svpc_host) if group_name := project.get("group_name"): group_id = f'{group_name}@{project.get("domain","")}' project["group_name"] = self.tf_ref("group_name", group_id, group_name) added_project = ProjectFactory(self, f"prj_{project_id}", **project) if shared_subnets := project.get("shared_vpc_subnets"): added_project.add_override( "shared_vpc_subnets", [ self.tf_ref("subnet", region_subnet) for region_subnet in shared_subnets ], ) self.created["projects"][project_id] = added_project def generate_projects(self, my_resource, resource): for project in self.eztf_config.get(my_resource, []): if project.get("svpc_host_project_id"): continue create_project(self, project) generate_svc_projects(self, my_resource) def generate_svc_projects(self, my_resource): add_svc_projects = [ project for project in self.eztf_config.get(my_resource, []) if project.get("svpc_host_project_id") ] if add_svc_projects: self.file_seprator_variable("svcprojects", force=True) for project in add_svc_projects: create_project(self, project)