def create_vm()

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)