// *** 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.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final ReplicationRecoveryPlanAzureToAzureSettingsArgs Empty = new ReplicationRecoveryPlanAzureToAzureSettingsArgs();

    /**
     * The Edge Zone within the Azure Region where the VM exists. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
     * 
     */
    @Import(name="primaryEdgeZone")
    private @Nullable Output<String> primaryEdgeZone;

    /**
     * @return The Edge Zone within the Azure Region where the VM exists. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
     * 
     */
    public Optional<Output<String>> primaryEdgeZone() {
        return Optional.ofNullable(this.primaryEdgeZone);
    }

    /**
     * The Availability Zone in which the VM is located. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
     * 
     */
    @Import(name="primaryZone")
    private @Nullable Output<String> primaryZone;

    /**
     * @return The Availability Zone in which the VM is located. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
     * 
     */
    public Optional<Output<String>> primaryZone() {
        return Optional.ofNullable(this.primaryZone);
    }

    /**
     * The Edge Zone within the Azure Region where the VM is recovered. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
     * 
     * &gt; **Note:** `primary_edge_zone` and `recovery_edge_zone` must be specified together.
     * 
     */
    @Import(name="recoveryEdgeZone")
    private @Nullable Output<String> recoveryEdgeZone;

    /**
     * @return The Edge Zone within the Azure Region where the VM is recovered. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
     * 
     * &gt; **Note:** `primary_edge_zone` and `recovery_edge_zone` must be specified together.
     * 
     */
    public Optional<Output<String>> recoveryEdgeZone() {
        return Optional.ofNullable(this.recoveryEdgeZone);
    }

    /**
     * The Availability Zone in which the VM is recovered. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
     * 
     * &gt; **Note:** `primary_zone` and `recovery_zone` must be specified together.
     * 
     */
    @Import(name="recoveryZone")
    private @Nullable Output<String> recoveryZone;

    /**
     * @return The Availability Zone in which the VM is recovered. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
     * 
     * &gt; **Note:** `primary_zone` and `recovery_zone` must be specified together.
     * 
     */
    public Optional<Output<String>> recoveryZone() {
        return Optional.ofNullable(this.recoveryZone);
    }

    private ReplicationRecoveryPlanAzureToAzureSettingsArgs() {}

    private ReplicationRecoveryPlanAzureToAzureSettingsArgs(ReplicationRecoveryPlanAzureToAzureSettingsArgs $) {
        this.primaryEdgeZone = $.primaryEdgeZone;
        this.primaryZone = $.primaryZone;
        this.recoveryEdgeZone = $.recoveryEdgeZone;
        this.recoveryZone = $.recoveryZone;
    }

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

    public static final class Builder {
        private ReplicationRecoveryPlanAzureToAzureSettingsArgs $;

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

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

        /**
         * @param primaryEdgeZone The Edge Zone within the Azure Region where the VM exists. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
         * 
         * @return builder
         * 
         */
        public Builder primaryEdgeZone(@Nullable Output<String> primaryEdgeZone) {
            $.primaryEdgeZone = primaryEdgeZone;
            return this;
        }

        /**
         * @param primaryEdgeZone The Edge Zone within the Azure Region where the VM exists. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
         * 
         * @return builder
         * 
         */
        public Builder primaryEdgeZone(String primaryEdgeZone) {
            return primaryEdgeZone(Output.of(primaryEdgeZone));
        }

        /**
         * @param primaryZone The Availability Zone in which the VM is located. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
         * 
         * @return builder
         * 
         */
        public Builder primaryZone(@Nullable Output<String> primaryZone) {
            $.primaryZone = primaryZone;
            return this;
        }

        /**
         * @param primaryZone The Availability Zone in which the VM is located. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
         * 
         * @return builder
         * 
         */
        public Builder primaryZone(String primaryZone) {
            return primaryZone(Output.of(primaryZone));
        }

        /**
         * @param recoveryEdgeZone The Edge Zone within the Azure Region where the VM is recovered. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
         * 
         * &gt; **Note:** `primary_edge_zone` and `recovery_edge_zone` must be specified together.
         * 
         * @return builder
         * 
         */
        public Builder recoveryEdgeZone(@Nullable Output<String> recoveryEdgeZone) {
            $.recoveryEdgeZone = recoveryEdgeZone;
            return this;
        }

        /**
         * @param recoveryEdgeZone The Edge Zone within the Azure Region where the VM is recovered. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
         * 
         * &gt; **Note:** `primary_edge_zone` and `recovery_edge_zone` must be specified together.
         * 
         * @return builder
         * 
         */
        public Builder recoveryEdgeZone(String recoveryEdgeZone) {
            return recoveryEdgeZone(Output.of(recoveryEdgeZone));
        }

        /**
         * @param recoveryZone The Availability Zone in which the VM is recovered. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
         * 
         * &gt; **Note:** `primary_zone` and `recovery_zone` must be specified together.
         * 
         * @return builder
         * 
         */
        public Builder recoveryZone(@Nullable Output<String> recoveryZone) {
            $.recoveryZone = recoveryZone;
            return this;
        }

        /**
         * @param recoveryZone The Availability Zone in which the VM is recovered. Changing this forces a new Site Recovery Replication Recovery Plan to be created.
         * 
         * &gt; **Note:** `primary_zone` and `recovery_zone` must be specified together.
         * 
         * @return builder
         * 
         */
        public Builder recoveryZone(String recoveryZone) {
            return recoveryZone(Output.of(recoveryZone));
        }

        public ReplicationRecoveryPlanAzureToAzureSettingsArgs build() {
            return $;
        }
    }

}
