VirtualMachine create()

in azure-toolkit-libs/azure-toolkit-compute-lib/src/main/java/com/microsoft/azure/toolkit/lib/compute/vm/DraftVirtualMachine.java [115:162]


    VirtualMachine create(final AzureVirtualMachine module) {
        this.module = module;
        final NetworkInterface.DefinitionStages.WithCreate interfaceWithCreate = module.getVirtualMachinesManager(subscriptionId).manager().networkManager()
                .networkInterfaces().define(name + "-interface-" + Utils.getTimestamp())
                .withRegion(this.getRegion().getName())
                .withExistingResourceGroup(this.getResourceGroup())
                .withExistingPrimaryNetwork(this.getNetworkClient())
                .withSubnet(subnet.getName())
                .withPrimaryPrivateIPAddressDynamic();
        if (ipAddress != null) {
            final com.azure.resourcemanager.network.models.PublicIpAddress publicIpAddressClient = getPublicIpAddressClient();
            if (publicIpAddressClient.hasAssignedNetworkInterface()) {
                AzureMessager.getMessager().warning(AzureString.format("Can not assign public ip %s to vm %s, which has been assigned to %s",
                        ipAddress.getName(), name, publicIpAddressClient.getAssignedNetworkInterfaceIPConfiguration().name()));
            } else {
                interfaceWithCreate.withExistingPrimaryPublicIPAddress(getPublicIpAddressClient());
            }
        }
        if (securityGroup != null) {
            interfaceWithCreate.withExistingNetworkSecurityGroup(getSecurityGroupClient());
        }
        final NetworkInterface networkInterface = interfaceWithCreate.create();
        final WithProximityPlacementGroup withProximityPlacementGroup = module.getVirtualMachinesManager(subscriptionId).define(this.getName())
                .withRegion(this.getRegion().getName())
                .withExistingResourceGroup(this.getResourceGroup())
                .withExistingPrimaryNetworkInterface(networkInterface);
        final WithCreate withCreate = configureImage(withProximityPlacementGroup);
        if (StringUtils.isNotEmpty(availabilitySet)) {
            withCreate.withExistingAvailabilitySet(getAvailabilitySetClient());
        }
        if (storageAccount != null) {
            withCreate.withExistingStorageAccount(getStorageAccountClient());
        }
        if (azureSpotConfig != null) {
            final VirtualMachineEvictionPolicyTypes evictionPolicyTypes = azureSpotConfig.getPolicy() == StopAndDeallocate ? DEALLOCATE : DELETE;
            withCreate.withSpotPriority(evictionPolicyTypes).withMaxPrice(azureSpotConfig.getMaximumPrice());
        }
        try {
            this.remote = withCreate.create();
        } catch (Exception e) {
            // clean up resource once creation failed
            networkInterface.manager().networkInterfaces().deleteById(networkInterface.id());
            throw e;
        }
        refreshStatus();
        module.refresh();
        return this;
    }