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

import com.pulumi.core.annotations.CustomType;
import java.lang.String;
import java.util.Objects;

@CustomType
public final class VirtualMachineAvailabilityGroupListenerReplica {
    /**
     * @return The replica commit mode for the availability group. Possible values are `Synchronous_Commit` and `Asynchronous_Commit`. Changing this forces a new resource to be created.
     * 
     */
    private String commit;
    /**
     * @return The replica failover mode for the availability group. Possible values are `Manual` and `Automatic`. Changing this forces a new resource to be created.
     * 
     */
    private String failoverMode;
    /**
     * @return The replica readable secondary mode for the availability group. Possible values are `No`, `Read_Only` and `All`. Changing this forces a new resource to be created.
     * 
     */
    private String readableSecondary;
    /**
     * @return The replica role for the availability group. Possible values are `Primary` and `Secondary`. Changing this forces a new resource to be created.
     * 
     */
    private String role;
    /**
     * @return The ID of the SQL Virtual Machine. Changing this forces a new resource to be created.
     * 
     */
    private String sqlVirtualMachineId;

    private VirtualMachineAvailabilityGroupListenerReplica() {}
    /**
     * @return The replica commit mode for the availability group. Possible values are `Synchronous_Commit` and `Asynchronous_Commit`. Changing this forces a new resource to be created.
     * 
     */
    public String commit() {
        return this.commit;
    }
    /**
     * @return The replica failover mode for the availability group. Possible values are `Manual` and `Automatic`. Changing this forces a new resource to be created.
     * 
     */
    public String failoverMode() {
        return this.failoverMode;
    }
    /**
     * @return The replica readable secondary mode for the availability group. Possible values are `No`, `Read_Only` and `All`. Changing this forces a new resource to be created.
     * 
     */
    public String readableSecondary() {
        return this.readableSecondary;
    }
    /**
     * @return The replica role for the availability group. Possible values are `Primary` and `Secondary`. Changing this forces a new resource to be created.
     * 
     */
    public String role() {
        return this.role;
    }
    /**
     * @return The ID of the SQL Virtual Machine. Changing this forces a new resource to be created.
     * 
     */
    public String sqlVirtualMachineId() {
        return this.sqlVirtualMachineId;
    }

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

    public static Builder builder(VirtualMachineAvailabilityGroupListenerReplica defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String commit;
        private String failoverMode;
        private String readableSecondary;
        private String role;
        private String sqlVirtualMachineId;
        public Builder() {}
        public Builder(VirtualMachineAvailabilityGroupListenerReplica defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.commit = defaults.commit;
    	      this.failoverMode = defaults.failoverMode;
    	      this.readableSecondary = defaults.readableSecondary;
    	      this.role = defaults.role;
    	      this.sqlVirtualMachineId = defaults.sqlVirtualMachineId;
        }

        @CustomType.Setter
        public Builder commit(String commit) {
            this.commit = Objects.requireNonNull(commit);
            return this;
        }
        @CustomType.Setter
        public Builder failoverMode(String failoverMode) {
            this.failoverMode = Objects.requireNonNull(failoverMode);
            return this;
        }
        @CustomType.Setter
        public Builder readableSecondary(String readableSecondary) {
            this.readableSecondary = Objects.requireNonNull(readableSecondary);
            return this;
        }
        @CustomType.Setter
        public Builder role(String role) {
            this.role = Objects.requireNonNull(role);
            return this;
        }
        @CustomType.Setter
        public Builder sqlVirtualMachineId(String sqlVirtualMachineId) {
            this.sqlVirtualMachineId = Objects.requireNonNull(sqlVirtualMachineId);
            return this;
        }
        public VirtualMachineAvailabilityGroupListenerReplica build() {
            final var o = new VirtualMachineAvailabilityGroupListenerReplica();
            o.commit = commit;
            o.failoverMode = failoverMode;
            o.readableSecondary = readableSecondary;
            o.role = role;
            o.sqlVirtualMachineId = sqlVirtualMachineId;
            return o;
        }
    }
}
