All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azure.siterecovery.VmwareReplicatedVmArgs Maven / Gradle / Ivy

Go to download

A Pulumi package for creating and managing Microsoft Azure cloud resources, based on the Terraform azurerm provider. We recommend using the [Azure Native provider](https://github.com/pulumi/pulumi-azure-native) to provision Azure infrastructure. Azure Native provides complete coverage of Azure resources and same-day access to new resources and resource updates.

There is a newer version: 6.10.0-alpha.1731737215
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azure.siterecovery;

import com.pulumi.azure.siterecovery.inputs.VmwareReplicatedVmManagedDiskArgs;
import com.pulumi.azure.siterecovery.inputs.VmwareReplicatedVmNetworkInterfaceArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class VmwareReplicatedVmArgs extends com.pulumi.resources.ResourceArgs {

    public static final VmwareReplicatedVmArgs Empty = new VmwareReplicatedVmArgs();

    /**
     * The name of VMWare appliance which handles the replication. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="applianceName", required=true)
    private Output applianceName;

    /**
     * @return The name of VMWare appliance which handles the replication. Changing this forces a new resource to be created.
     * 
     */
    public Output applianceName() {
        return this.applianceName;
    }

    /**
     * The ID of the stroage account that should be used for logging during replication.
     * 
     * > **Note:** Only standard types of storage accounts are allowed.
     * 
     * > **Note:** Only one of `default_log_storage_account_id` or `managed_disk` must be specified.
     * 
     * > **Note:** Changing `default_log_storage_account_id` forces a new resource to be created. But removing it does not.
     * 
     * > **Note:** When `default_log_storage_account_id` co-exist with `managed_disk`, the value of `default_log_storage_account_id` must be as same as `log_storage_account_id` of every `managed_disk` or it forces a new resource to be created.
     * 
     */
    @Import(name="defaultLogStorageAccountId")
    private @Nullable Output defaultLogStorageAccountId;

    /**
     * @return The ID of the stroage account that should be used for logging during replication.
     * 
     * > **Note:** Only standard types of storage accounts are allowed.
     * 
     * > **Note:** Only one of `default_log_storage_account_id` or `managed_disk` must be specified.
     * 
     * > **Note:** Changing `default_log_storage_account_id` forces a new resource to be created. But removing it does not.
     * 
     * > **Note:** When `default_log_storage_account_id` co-exist with `managed_disk`, the value of `default_log_storage_account_id` must be as same as `log_storage_account_id` of every `managed_disk` or it forces a new resource to be created.
     * 
     */
    public Optional> defaultLogStorageAccountId() {
        return Optional.ofNullable(this.defaultLogStorageAccountId);
    }

    /**
     * The type of storage account that should be used for recovery disks when a failover is done. Possible values are `Premium_LRS`, `Standard_LRS` and `StandardSSD_LRS`.
     * 
     * > **Note:** Only one of `default_recovery_disk_type` or `managed_disk` must be specified.
     * 
     * > **Note:** Changing `default_recovery_disk_type` forces a new resource to be created. But removing it does not.
     * 
     * > **Note:** When `default_recovery_disk_type` co-exist with `managed_disk`, the value of `default_recovery_disk_type` must be as same as `target_disk_type` of every `managed_disk` or it forces a new resource to be created.
     * 
     */
    @Import(name="defaultRecoveryDiskType")
    private @Nullable Output defaultRecoveryDiskType;

    /**
     * @return The type of storage account that should be used for recovery disks when a failover is done. Possible values are `Premium_LRS`, `Standard_LRS` and `StandardSSD_LRS`.
     * 
     * > **Note:** Only one of `default_recovery_disk_type` or `managed_disk` must be specified.
     * 
     * > **Note:** Changing `default_recovery_disk_type` forces a new resource to be created. But removing it does not.
     * 
     * > **Note:** When `default_recovery_disk_type` co-exist with `managed_disk`, the value of `default_recovery_disk_type` must be as same as `target_disk_type` of every `managed_disk` or it forces a new resource to be created.
     * 
     */
    public Optional> defaultRecoveryDiskType() {
        return Optional.ofNullable(this.defaultRecoveryDiskType);
    }

    /**
     * The ID of the default Disk Encryption Set that should be used for the disks when a failover is done.
     * 
     * > **Note:** Changing `default_target_disk_encryption_set_id` forces a new resource to be created. But removing it does not.
     * 
     * > **Note:** When `default_target_disk_encryption_set_id` co-exist with `managed_disk`, the value of `default_target_disk_encryption_set_id` must be as same as `target_disk_encryption_set_id` of every `managed_disk` or it forces a new resource to be created.
     * 
     */
    @Import(name="defaultTargetDiskEncryptionSetId")
    private @Nullable Output defaultTargetDiskEncryptionSetId;

    /**
     * @return The ID of the default Disk Encryption Set that should be used for the disks when a failover is done.
     * 
     * > **Note:** Changing `default_target_disk_encryption_set_id` forces a new resource to be created. But removing it does not.
     * 
     * > **Note:** When `default_target_disk_encryption_set_id` co-exist with `managed_disk`, the value of `default_target_disk_encryption_set_id` must be as same as `target_disk_encryption_set_id` of every `managed_disk` or it forces a new resource to be created.
     * 
     */
    public Optional> defaultTargetDiskEncryptionSetId() {
        return Optional.ofNullable(this.defaultTargetDiskEncryptionSetId);
    }

    /**
     * The license type of the VM. Possible values are `NoLicenseType`, `NotSpecified` and `WindowsServer`. Defaults to `NotSpecified`.
     * 
     */
    @Import(name="licenseType")
    private @Nullable Output licenseType;

    /**
     * @return The license type of the VM. Possible values are `NoLicenseType`, `NotSpecified` and `WindowsServer`. Defaults to `NotSpecified`.
     * 
     */
    public Optional> licenseType() {
        return Optional.ofNullable(this.licenseType);
    }

    /**
     * One or more `managed_disk` block as defined below. It's available only if mobility service is already installed on the source VM.
     * 
     * > **Note:** A replicated VM could be created without `managed_disk` block, once the block has been specified, changing it expect removing it forces a new resource to be created.
     * 
     */
    @Import(name="managedDisks")
    private @Nullable Output> managedDisks;

    /**
     * @return One or more `managed_disk` block as defined below. It's available only if mobility service is already installed on the source VM.
     * 
     * > **Note:** A replicated VM could be created without `managed_disk` block, once the block has been specified, changing it expect removing it forces a new resource to be created.
     * 
     */
    public Optional>> managedDisks() {
        return Optional.ofNullable(this.managedDisks);
    }

    /**
     * Name of group in which all machines will replicate together and have shared crash consistent and app-consistent recovery points when failed over.
     * 
     */
    @Import(name="multiVmGroupName")
    private @Nullable Output multiVmGroupName;

    /**
     * @return Name of group in which all machines will replicate together and have shared crash consistent and app-consistent recovery points when failed over.
     * 
     */
    public Optional> multiVmGroupName() {
        return Optional.ofNullable(this.multiVmGroupName);
    }

    /**
     * The name of the replicated VM. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="name")
    private @Nullable Output name;

    /**
     * @return The name of the replicated VM. Changing this forces a new resource to be created.
     * 
     */
    public Optional> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * One or more `network_interface` block as defined below.
     * 
     */
    @Import(name="networkInterfaces")
    private @Nullable Output> networkInterfaces;

    /**
     * @return One or more `network_interface` block as defined below.
     * 
     */
    public Optional>> networkInterfaces() {
        return Optional.ofNullable(this.networkInterfaces);
    }

    /**
     * The name of the credential to access the source VM. Changing this forces a new resource to be created. More information about the credentials could be found [here](https://learn.microsoft.com/en-us/azure/site-recovery/deploy-vmware-azure-replication-appliance-modernized).
     * 
     */
    @Import(name="physicalServerCredentialName", required=true)
    private Output physicalServerCredentialName;

    /**
     * @return The name of the credential to access the source VM. Changing this forces a new resource to be created. More information about the credentials could be found [here](https://learn.microsoft.com/en-us/azure/site-recovery/deploy-vmware-azure-replication-appliance-modernized).
     * 
     */
    public Output physicalServerCredentialName() {
        return this.physicalServerCredentialName;
    }

    /**
     * The ID of the policy to use for this replicated VM.
     * 
     */
    @Import(name="recoveryReplicationPolicyId", required=true)
    private Output recoveryReplicationPolicyId;

    /**
     * @return The ID of the policy to use for this replicated VM.
     * 
     */
    public Output recoveryReplicationPolicyId() {
        return this.recoveryReplicationPolicyId;
    }

    /**
     * The ID of the Recovery Services Vault where the replicated VM is created.
     * 
     */
    @Import(name="recoveryVaultId", required=true)
    private Output recoveryVaultId;

    /**
     * @return The ID of the Recovery Services Vault where the replicated VM is created.
     * 
     */
    public Output recoveryVaultId() {
        return this.recoveryVaultId;
    }

    /**
     * The name of the source VM in VMWare. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="sourceVmName", required=true)
    private Output sourceVmName;

    /**
     * @return The name of the source VM in VMWare. Changing this forces a new resource to be created.
     * 
     */
    public Output sourceVmName() {
        return this.sourceVmName;
    }

    /**
     * The ID of availability set that the new VM should belong to when a failover is done.
     * 
     */
    @Import(name="targetAvailabilitySetId")
    private @Nullable Output targetAvailabilitySetId;

    /**
     * @return The ID of availability set that the new VM should belong to when a failover is done.
     * 
     */
    public Optional> targetAvailabilitySetId() {
        return Optional.ofNullable(this.targetAvailabilitySetId);
    }

    /**
     * The ID of the storage account that should be used for boot diagnostics when a failover is done.
     * 
     */
    @Import(name="targetBootDiagnosticsStorageAccountId")
    private @Nullable Output targetBootDiagnosticsStorageAccountId;

    /**
     * @return The ID of the storage account that should be used for boot diagnostics when a failover is done.
     * 
     */
    public Optional> targetBootDiagnosticsStorageAccountId() {
        return Optional.ofNullable(this.targetBootDiagnosticsStorageAccountId);
    }

    /**
     * The ID of network to use when a failover is done.
     * 
     * > **Note:** `target_network_id` is required when `network_interface` is specified.
     * 
     */
    @Import(name="targetNetworkId")
    private @Nullable Output targetNetworkId;

    /**
     * @return The ID of network to use when a failover is done.
     * 
     * > **Note:** `target_network_id` is required when `network_interface` is specified.
     * 
     */
    public Optional> targetNetworkId() {
        return Optional.ofNullable(this.targetNetworkId);
    }

    /**
     * The ID of Proximity Placement Group the new VM should belong to when a failover is done.
     * 
     * > **Note:** Only one of `target_availability_set_id` or `target_zone` can be specified.
     * 
     */
    @Import(name="targetProximityPlacementGroupId")
    private @Nullable Output targetProximityPlacementGroupId;

    /**
     * @return The ID of Proximity Placement Group the new VM should belong to when a failover is done.
     * 
     * > **Note:** Only one of `target_availability_set_id` or `target_zone` can be specified.
     * 
     */
    public Optional> targetProximityPlacementGroupId() {
        return Optional.ofNullable(this.targetProximityPlacementGroupId);
    }

    /**
     * The ID of resource group where the VM should be created when a failover is done.
     * 
     */
    @Import(name="targetResourceGroupId", required=true)
    private Output targetResourceGroupId;

    /**
     * @return The ID of resource group where the VM should be created when a failover is done.
     * 
     */
    public Output targetResourceGroupId() {
        return this.targetResourceGroupId;
    }

    /**
     * Name of the VM that should be created when a failover is done. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="targetVmName", required=true)
    private Output targetVmName;

    /**
     * @return Name of the VM that should be created when a failover is done. Changing this forces a new resource to be created.
     * 
     */
    public Output targetVmName() {
        return this.targetVmName;
    }

    /**
     * Size of the VM that should be created when a failover is done, such as `Standard_F2`. If it's not specified, it will automatically be set by detecting the source VM size.
     * 
     */
    @Import(name="targetVmSize")
    private @Nullable Output targetVmSize;

    /**
     * @return Size of the VM that should be created when a failover is done, such as `Standard_F2`. If it's not specified, it will automatically be set by detecting the source VM size.
     * 
     */
    public Optional> targetVmSize() {
        return Optional.ofNullable(this.targetVmSize);
    }

    /**
     * Specifies the Availability Zone where the Failover VM should exist.
     * 
     */
    @Import(name="targetZone")
    private @Nullable Output targetZone;

    /**
     * @return Specifies the Availability Zone where the Failover VM should exist.
     * 
     */
    public Optional> targetZone() {
        return Optional.ofNullable(this.targetZone);
    }

    /**
     * The ID of network to use when a test failover is done.
     * 
     */
    @Import(name="testNetworkId")
    private @Nullable Output testNetworkId;

    /**
     * @return The ID of network to use when a test failover is done.
     * 
     */
    public Optional> testNetworkId() {
        return Optional.ofNullable(this.testNetworkId);
    }

    private VmwareReplicatedVmArgs() {}

    private VmwareReplicatedVmArgs(VmwareReplicatedVmArgs $) {
        this.applianceName = $.applianceName;
        this.defaultLogStorageAccountId = $.defaultLogStorageAccountId;
        this.defaultRecoveryDiskType = $.defaultRecoveryDiskType;
        this.defaultTargetDiskEncryptionSetId = $.defaultTargetDiskEncryptionSetId;
        this.licenseType = $.licenseType;
        this.managedDisks = $.managedDisks;
        this.multiVmGroupName = $.multiVmGroupName;
        this.name = $.name;
        this.networkInterfaces = $.networkInterfaces;
        this.physicalServerCredentialName = $.physicalServerCredentialName;
        this.recoveryReplicationPolicyId = $.recoveryReplicationPolicyId;
        this.recoveryVaultId = $.recoveryVaultId;
        this.sourceVmName = $.sourceVmName;
        this.targetAvailabilitySetId = $.targetAvailabilitySetId;
        this.targetBootDiagnosticsStorageAccountId = $.targetBootDiagnosticsStorageAccountId;
        this.targetNetworkId = $.targetNetworkId;
        this.targetProximityPlacementGroupId = $.targetProximityPlacementGroupId;
        this.targetResourceGroupId = $.targetResourceGroupId;
        this.targetVmName = $.targetVmName;
        this.targetVmSize = $.targetVmSize;
        this.targetZone = $.targetZone;
        this.testNetworkId = $.testNetworkId;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(VmwareReplicatedVmArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private VmwareReplicatedVmArgs $;

        public Builder() {
            $ = new VmwareReplicatedVmArgs();
        }

        public Builder(VmwareReplicatedVmArgs defaults) {
            $ = new VmwareReplicatedVmArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param applianceName The name of VMWare appliance which handles the replication. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder applianceName(Output applianceName) {
            $.applianceName = applianceName;
            return this;
        }

        /**
         * @param applianceName The name of VMWare appliance which handles the replication. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder applianceName(String applianceName) {
            return applianceName(Output.of(applianceName));
        }

        /**
         * @param defaultLogStorageAccountId The ID of the stroage account that should be used for logging during replication.
         * 
         * > **Note:** Only standard types of storage accounts are allowed.
         * 
         * > **Note:** Only one of `default_log_storage_account_id` or `managed_disk` must be specified.
         * 
         * > **Note:** Changing `default_log_storage_account_id` forces a new resource to be created. But removing it does not.
         * 
         * > **Note:** When `default_log_storage_account_id` co-exist with `managed_disk`, the value of `default_log_storage_account_id` must be as same as `log_storage_account_id` of every `managed_disk` or it forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder defaultLogStorageAccountId(@Nullable Output defaultLogStorageAccountId) {
            $.defaultLogStorageAccountId = defaultLogStorageAccountId;
            return this;
        }

        /**
         * @param defaultLogStorageAccountId The ID of the stroage account that should be used for logging during replication.
         * 
         * > **Note:** Only standard types of storage accounts are allowed.
         * 
         * > **Note:** Only one of `default_log_storage_account_id` or `managed_disk` must be specified.
         * 
         * > **Note:** Changing `default_log_storage_account_id` forces a new resource to be created. But removing it does not.
         * 
         * > **Note:** When `default_log_storage_account_id` co-exist with `managed_disk`, the value of `default_log_storage_account_id` must be as same as `log_storage_account_id` of every `managed_disk` or it forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder defaultLogStorageAccountId(String defaultLogStorageAccountId) {
            return defaultLogStorageAccountId(Output.of(defaultLogStorageAccountId));
        }

        /**
         * @param defaultRecoveryDiskType The type of storage account that should be used for recovery disks when a failover is done. Possible values are `Premium_LRS`, `Standard_LRS` and `StandardSSD_LRS`.
         * 
         * > **Note:** Only one of `default_recovery_disk_type` or `managed_disk` must be specified.
         * 
         * > **Note:** Changing `default_recovery_disk_type` forces a new resource to be created. But removing it does not.
         * 
         * > **Note:** When `default_recovery_disk_type` co-exist with `managed_disk`, the value of `default_recovery_disk_type` must be as same as `target_disk_type` of every `managed_disk` or it forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder defaultRecoveryDiskType(@Nullable Output defaultRecoveryDiskType) {
            $.defaultRecoveryDiskType = defaultRecoveryDiskType;
            return this;
        }

        /**
         * @param defaultRecoveryDiskType The type of storage account that should be used for recovery disks when a failover is done. Possible values are `Premium_LRS`, `Standard_LRS` and `StandardSSD_LRS`.
         * 
         * > **Note:** Only one of `default_recovery_disk_type` or `managed_disk` must be specified.
         * 
         * > **Note:** Changing `default_recovery_disk_type` forces a new resource to be created. But removing it does not.
         * 
         * > **Note:** When `default_recovery_disk_type` co-exist with `managed_disk`, the value of `default_recovery_disk_type` must be as same as `target_disk_type` of every `managed_disk` or it forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder defaultRecoveryDiskType(String defaultRecoveryDiskType) {
            return defaultRecoveryDiskType(Output.of(defaultRecoveryDiskType));
        }

        /**
         * @param defaultTargetDiskEncryptionSetId The ID of the default Disk Encryption Set that should be used for the disks when a failover is done.
         * 
         * > **Note:** Changing `default_target_disk_encryption_set_id` forces a new resource to be created. But removing it does not.
         * 
         * > **Note:** When `default_target_disk_encryption_set_id` co-exist with `managed_disk`, the value of `default_target_disk_encryption_set_id` must be as same as `target_disk_encryption_set_id` of every `managed_disk` or it forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder defaultTargetDiskEncryptionSetId(@Nullable Output defaultTargetDiskEncryptionSetId) {
            $.defaultTargetDiskEncryptionSetId = defaultTargetDiskEncryptionSetId;
            return this;
        }

        /**
         * @param defaultTargetDiskEncryptionSetId The ID of the default Disk Encryption Set that should be used for the disks when a failover is done.
         * 
         * > **Note:** Changing `default_target_disk_encryption_set_id` forces a new resource to be created. But removing it does not.
         * 
         * > **Note:** When `default_target_disk_encryption_set_id` co-exist with `managed_disk`, the value of `default_target_disk_encryption_set_id` must be as same as `target_disk_encryption_set_id` of every `managed_disk` or it forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder defaultTargetDiskEncryptionSetId(String defaultTargetDiskEncryptionSetId) {
            return defaultTargetDiskEncryptionSetId(Output.of(defaultTargetDiskEncryptionSetId));
        }

        /**
         * @param licenseType The license type of the VM. Possible values are `NoLicenseType`, `NotSpecified` and `WindowsServer`. Defaults to `NotSpecified`.
         * 
         * @return builder
         * 
         */
        public Builder licenseType(@Nullable Output licenseType) {
            $.licenseType = licenseType;
            return this;
        }

        /**
         * @param licenseType The license type of the VM. Possible values are `NoLicenseType`, `NotSpecified` and `WindowsServer`. Defaults to `NotSpecified`.
         * 
         * @return builder
         * 
         */
        public Builder licenseType(String licenseType) {
            return licenseType(Output.of(licenseType));
        }

        /**
         * @param managedDisks One or more `managed_disk` block as defined below. It's available only if mobility service is already installed on the source VM.
         * 
         * > **Note:** A replicated VM could be created without `managed_disk` block, once the block has been specified, changing it expect removing it forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder managedDisks(@Nullable Output> managedDisks) {
            $.managedDisks = managedDisks;
            return this;
        }

        /**
         * @param managedDisks One or more `managed_disk` block as defined below. It's available only if mobility service is already installed on the source VM.
         * 
         * > **Note:** A replicated VM could be created without `managed_disk` block, once the block has been specified, changing it expect removing it forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder managedDisks(List managedDisks) {
            return managedDisks(Output.of(managedDisks));
        }

        /**
         * @param managedDisks One or more `managed_disk` block as defined below. It's available only if mobility service is already installed on the source VM.
         * 
         * > **Note:** A replicated VM could be created without `managed_disk` block, once the block has been specified, changing it expect removing it forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder managedDisks(VmwareReplicatedVmManagedDiskArgs... managedDisks) {
            return managedDisks(List.of(managedDisks));
        }

        /**
         * @param multiVmGroupName Name of group in which all machines will replicate together and have shared crash consistent and app-consistent recovery points when failed over.
         * 
         * @return builder
         * 
         */
        public Builder multiVmGroupName(@Nullable Output multiVmGroupName) {
            $.multiVmGroupName = multiVmGroupName;
            return this;
        }

        /**
         * @param multiVmGroupName Name of group in which all machines will replicate together and have shared crash consistent and app-consistent recovery points when failed over.
         * 
         * @return builder
         * 
         */
        public Builder multiVmGroupName(String multiVmGroupName) {
            return multiVmGroupName(Output.of(multiVmGroupName));
        }

        /**
         * @param name The name of the replicated VM. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output name) {
            $.name = name;
            return this;
        }

        /**
         * @param name The name of the replicated VM. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param networkInterfaces One or more `network_interface` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder networkInterfaces(@Nullable Output> networkInterfaces) {
            $.networkInterfaces = networkInterfaces;
            return this;
        }

        /**
         * @param networkInterfaces One or more `network_interface` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder networkInterfaces(List networkInterfaces) {
            return networkInterfaces(Output.of(networkInterfaces));
        }

        /**
         * @param networkInterfaces One or more `network_interface` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder networkInterfaces(VmwareReplicatedVmNetworkInterfaceArgs... networkInterfaces) {
            return networkInterfaces(List.of(networkInterfaces));
        }

        /**
         * @param physicalServerCredentialName The name of the credential to access the source VM. Changing this forces a new resource to be created. More information about the credentials could be found [here](https://learn.microsoft.com/en-us/azure/site-recovery/deploy-vmware-azure-replication-appliance-modernized).
         * 
         * @return builder
         * 
         */
        public Builder physicalServerCredentialName(Output physicalServerCredentialName) {
            $.physicalServerCredentialName = physicalServerCredentialName;
            return this;
        }

        /**
         * @param physicalServerCredentialName The name of the credential to access the source VM. Changing this forces a new resource to be created. More information about the credentials could be found [here](https://learn.microsoft.com/en-us/azure/site-recovery/deploy-vmware-azure-replication-appliance-modernized).
         * 
         * @return builder
         * 
         */
        public Builder physicalServerCredentialName(String physicalServerCredentialName) {
            return physicalServerCredentialName(Output.of(physicalServerCredentialName));
        }

        /**
         * @param recoveryReplicationPolicyId The ID of the policy to use for this replicated VM.
         * 
         * @return builder
         * 
         */
        public Builder recoveryReplicationPolicyId(Output recoveryReplicationPolicyId) {
            $.recoveryReplicationPolicyId = recoveryReplicationPolicyId;
            return this;
        }

        /**
         * @param recoveryReplicationPolicyId The ID of the policy to use for this replicated VM.
         * 
         * @return builder
         * 
         */
        public Builder recoveryReplicationPolicyId(String recoveryReplicationPolicyId) {
            return recoveryReplicationPolicyId(Output.of(recoveryReplicationPolicyId));
        }

        /**
         * @param recoveryVaultId The ID of the Recovery Services Vault where the replicated VM is created.
         * 
         * @return builder
         * 
         */
        public Builder recoveryVaultId(Output recoveryVaultId) {
            $.recoveryVaultId = recoveryVaultId;
            return this;
        }

        /**
         * @param recoveryVaultId The ID of the Recovery Services Vault where the replicated VM is created.
         * 
         * @return builder
         * 
         */
        public Builder recoveryVaultId(String recoveryVaultId) {
            return recoveryVaultId(Output.of(recoveryVaultId));
        }

        /**
         * @param sourceVmName The name of the source VM in VMWare. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder sourceVmName(Output sourceVmName) {
            $.sourceVmName = sourceVmName;
            return this;
        }

        /**
         * @param sourceVmName The name of the source VM in VMWare. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder sourceVmName(String sourceVmName) {
            return sourceVmName(Output.of(sourceVmName));
        }

        /**
         * @param targetAvailabilitySetId The ID of availability set that the new VM should belong to when a failover is done.
         * 
         * @return builder
         * 
         */
        public Builder targetAvailabilitySetId(@Nullable Output targetAvailabilitySetId) {
            $.targetAvailabilitySetId = targetAvailabilitySetId;
            return this;
        }

        /**
         * @param targetAvailabilitySetId The ID of availability set that the new VM should belong to when a failover is done.
         * 
         * @return builder
         * 
         */
        public Builder targetAvailabilitySetId(String targetAvailabilitySetId) {
            return targetAvailabilitySetId(Output.of(targetAvailabilitySetId));
        }

        /**
         * @param targetBootDiagnosticsStorageAccountId The ID of the storage account that should be used for boot diagnostics when a failover is done.
         * 
         * @return builder
         * 
         */
        public Builder targetBootDiagnosticsStorageAccountId(@Nullable Output targetBootDiagnosticsStorageAccountId) {
            $.targetBootDiagnosticsStorageAccountId = targetBootDiagnosticsStorageAccountId;
            return this;
        }

        /**
         * @param targetBootDiagnosticsStorageAccountId The ID of the storage account that should be used for boot diagnostics when a failover is done.
         * 
         * @return builder
         * 
         */
        public Builder targetBootDiagnosticsStorageAccountId(String targetBootDiagnosticsStorageAccountId) {
            return targetBootDiagnosticsStorageAccountId(Output.of(targetBootDiagnosticsStorageAccountId));
        }

        /**
         * @param targetNetworkId The ID of network to use when a failover is done.
         * 
         * > **Note:** `target_network_id` is required when `network_interface` is specified.
         * 
         * @return builder
         * 
         */
        public Builder targetNetworkId(@Nullable Output targetNetworkId) {
            $.targetNetworkId = targetNetworkId;
            return this;
        }

        /**
         * @param targetNetworkId The ID of network to use when a failover is done.
         * 
         * > **Note:** `target_network_id` is required when `network_interface` is specified.
         * 
         * @return builder
         * 
         */
        public Builder targetNetworkId(String targetNetworkId) {
            return targetNetworkId(Output.of(targetNetworkId));
        }

        /**
         * @param targetProximityPlacementGroupId The ID of Proximity Placement Group the new VM should belong to when a failover is done.
         * 
         * > **Note:** Only one of `target_availability_set_id` or `target_zone` can be specified.
         * 
         * @return builder
         * 
         */
        public Builder targetProximityPlacementGroupId(@Nullable Output targetProximityPlacementGroupId) {
            $.targetProximityPlacementGroupId = targetProximityPlacementGroupId;
            return this;
        }

        /**
         * @param targetProximityPlacementGroupId The ID of Proximity Placement Group the new VM should belong to when a failover is done.
         * 
         * > **Note:** Only one of `target_availability_set_id` or `target_zone` can be specified.
         * 
         * @return builder
         * 
         */
        public Builder targetProximityPlacementGroupId(String targetProximityPlacementGroupId) {
            return targetProximityPlacementGroupId(Output.of(targetProximityPlacementGroupId));
        }

        /**
         * @param targetResourceGroupId The ID of resource group where the VM should be created when a failover is done.
         * 
         * @return builder
         * 
         */
        public Builder targetResourceGroupId(Output targetResourceGroupId) {
            $.targetResourceGroupId = targetResourceGroupId;
            return this;
        }

        /**
         * @param targetResourceGroupId The ID of resource group where the VM should be created when a failover is done.
         * 
         * @return builder
         * 
         */
        public Builder targetResourceGroupId(String targetResourceGroupId) {
            return targetResourceGroupId(Output.of(targetResourceGroupId));
        }

        /**
         * @param targetVmName Name of the VM that should be created when a failover is done. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder targetVmName(Output targetVmName) {
            $.targetVmName = targetVmName;
            return this;
        }

        /**
         * @param targetVmName Name of the VM that should be created when a failover is done. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder targetVmName(String targetVmName) {
            return targetVmName(Output.of(targetVmName));
        }

        /**
         * @param targetVmSize Size of the VM that should be created when a failover is done, such as `Standard_F2`. If it's not specified, it will automatically be set by detecting the source VM size.
         * 
         * @return builder
         * 
         */
        public Builder targetVmSize(@Nullable Output targetVmSize) {
            $.targetVmSize = targetVmSize;
            return this;
        }

        /**
         * @param targetVmSize Size of the VM that should be created when a failover is done, such as `Standard_F2`. If it's not specified, it will automatically be set by detecting the source VM size.
         * 
         * @return builder
         * 
         */
        public Builder targetVmSize(String targetVmSize) {
            return targetVmSize(Output.of(targetVmSize));
        }

        /**
         * @param targetZone Specifies the Availability Zone where the Failover VM should exist.
         * 
         * @return builder
         * 
         */
        public Builder targetZone(@Nullable Output targetZone) {
            $.targetZone = targetZone;
            return this;
        }

        /**
         * @param targetZone Specifies the Availability Zone where the Failover VM should exist.
         * 
         * @return builder
         * 
         */
        public Builder targetZone(String targetZone) {
            return targetZone(Output.of(targetZone));
        }

        /**
         * @param testNetworkId The ID of network to use when a test failover is done.
         * 
         * @return builder
         * 
         */
        public Builder testNetworkId(@Nullable Output testNetworkId) {
            $.testNetworkId = testNetworkId;
            return this;
        }

        /**
         * @param testNetworkId The ID of network to use when a test failover is done.
         * 
         * @return builder
         * 
         */
        public Builder testNetworkId(String testNetworkId) {
            return testNetworkId(Output.of(testNetworkId));
        }

        public VmwareReplicatedVmArgs build() {
            if ($.applianceName == null) {
                throw new MissingRequiredPropertyException("VmwareReplicatedVmArgs", "applianceName");
            }
            if ($.physicalServerCredentialName == null) {
                throw new MissingRequiredPropertyException("VmwareReplicatedVmArgs", "physicalServerCredentialName");
            }
            if ($.recoveryReplicationPolicyId == null) {
                throw new MissingRequiredPropertyException("VmwareReplicatedVmArgs", "recoveryReplicationPolicyId");
            }
            if ($.recoveryVaultId == null) {
                throw new MissingRequiredPropertyException("VmwareReplicatedVmArgs", "recoveryVaultId");
            }
            if ($.sourceVmName == null) {
                throw new MissingRequiredPropertyException("VmwareReplicatedVmArgs", "sourceVmName");
            }
            if ($.targetResourceGroupId == null) {
                throw new MissingRequiredPropertyException("VmwareReplicatedVmArgs", "targetResourceGroupId");
            }
            if ($.targetVmName == null) {
                throw new MissingRequiredPropertyException("VmwareReplicatedVmArgs", "targetVmName");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy