in generate/resources/_vm.py [0:0]
def create_vm(self, vm):
"create vm"
vm_name = vm["name"]
vm["project"] = self.tf_ref("project", vm["project"])
if vm.get("service_account", {}).get("email"):
vm["service_account"]["email"] = self.tf_ref(
"service_account", vm["service_account"]["email"]
)
for disk in vm.get("attached_disk", []):
if disk.get("source"):
disk["source"] = self.tf_ref("disk", disk["source"])
for ni in vm.get("network_interface", []):
if ni.get("network"):
ni["network"] = self.tf_ref("network", ni["network"])
if ni.get("subnetwork"):
ni["subnetwork"] = self.tf_ref("subnet", ni["subnetwork"])
if ni.get("subnetwork_project"):
ni["subnetwork_project"] = self.tf_ref("project", ni["subnetwork_project"])
self.tf_param_list(
ni, "alias_ip_range", ce.ComputeInstanceNetworkInterfaceAliasIpRange
)
self.tf_param_list(
ni, "access_config", ce.ComputeInstanceNetworkInterfaceAccessConfig
)
self.tf_param_list(
ni, "ipv6_access_config", ce.ComputeInstanceNetworkInterfaceIpv6AccessConfig
)
self.tf_param_list(vm, "network_interface", ce.ComputeInstanceNetworkInterface)
self.tf_param_list(vm, "scratch_disk", ce.ComputeInstanceScratchDisk)
self.tf_param_list(vm, "attached_disk", ce.ComputeInstanceAttachedDisk)
self.tf_param_list(vm, "guest_accelerator", ce.ComputeInstanceGuestAccelerator)
self.tf_param_list(
vm.get("scheduling"),
"node_affinities",
ce.ComputeInstanceSchedulingNodeAffinities,
)
self.tf_param_list(
vm, "scheduling_node_affinities", ce.ComputeInstanceSchedulingNodeAffinities
)
self.created["vm"][vm_name] = ce.ComputeInstance(self, f"vm_{vm_name}", **vm)