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

import com.pulumi.aws.fsx.outputs.GetWindowsFileSystemAuditLogConfiguration;
import com.pulumi.core.annotations.CustomType;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;

@CustomType
public final class GetWindowsFileSystemResult {
    /**
     * @return The ID for Microsoft Active Directory instance that the file system is join to.
     * 
     */
    private String activeDirectoryId;
    /**
     * @return An array DNS alias names associated with the Amazon FSx file system.
     * 
     */
    private List<String> aliases;
    /**
     * @return Amazon Resource Name of the file system.
     * 
     */
    private String arn;
    /**
     * @return The configuration that Amazon FSx for Windows File Server uses to audit and log user accesses of files, folders, and file shares on the Amazon FSx for Windows File Server file system.
     * 
     */
    private List<GetWindowsFileSystemAuditLogConfiguration> auditLogConfigurations;
    /**
     * @return The number of days to retain automatic backups.
     * 
     */
    private Integer automaticBackupRetentionDays;
    private String backupId;
    /**
     * @return A boolean flag indicating whether tags on the file system should be copied to backups.
     * 
     */
    private Boolean copyTagsToBackups;
    /**
     * @return The preferred time (in `HH:MM` format) to take daily automatic backups, in the UTC time zone.
     * 
     */
    private String dailyAutomaticBackupStartTime;
    /**
     * @return The file system deployment type.
     * 
     */
    private String deploymentType;
    /**
     * @return DNS name for the file system (e.g. `fs-12345678.corp.example.com`).
     * 
     */
    private String dnsName;
    /**
     * @return Identifier of the file system (e.g. `fs-12345678`).
     * 
     */
    private String id;
    /**
     * @return ARN for the KMS Key to encrypt the file system at rest.
     * 
     */
    private String kmsKeyId;
    private List<String> networkInterfaceIds;
    /**
     * @return AWS account identifier that created the file system.
     * 
     */
    private String ownerId;
    /**
     * @return The IP address of the primary, or preferred, file server.
     * 
     */
    private String preferredFileServerIp;
    /**
     * @return Specifies the subnet in which you want the preferred file server to be located.
     * 
     */
    private String preferredSubnetId;
    private List<String> securityGroupIds;
    private Boolean skipFinalBackup;
    /**
     * @return The storage capacity of the file system in gibibytes (GiB).
     * 
     */
    private Integer storageCapacity;
    /**
     * @return The type of storage the file system is using. If set to `SSD`, the file system uses solid state drive storage. If set to `HDD`, the file system uses hard disk drive storage.
     * 
     */
    private String storageType;
    /**
     * @return Specifies the IDs of the subnets that the file system is accessible from.
     * 
     */
    private List<String> subnetIds;
    /**
     * @return The tags to associate with the file system.
     * 
     */
    private Map<String,String> tags;
    /**
     * @return Throughput (megabytes per second) of the file system in power of 2 increments. Minimum of `8` and maximum of `2048`.
     * 
     */
    private Integer throughputCapacity;
    /**
     * @return The ID of the primary virtual private cloud (VPC) for the file system.
     * 
     */
    private String vpcId;
    /**
     * @return The preferred start time (in `d:HH:MM` format) to perform weekly maintenance, in the UTC time zone.
     * 
     */
    private String weeklyMaintenanceStartTime;

    private GetWindowsFileSystemResult() {}
    /**
     * @return The ID for Microsoft Active Directory instance that the file system is join to.
     * 
     */
    public String activeDirectoryId() {
        return this.activeDirectoryId;
    }
    /**
     * @return An array DNS alias names associated with the Amazon FSx file system.
     * 
     */
    public List<String> aliases() {
        return this.aliases;
    }
    /**
     * @return Amazon Resource Name of the file system.
     * 
     */
    public String arn() {
        return this.arn;
    }
    /**
     * @return The configuration that Amazon FSx for Windows File Server uses to audit and log user accesses of files, folders, and file shares on the Amazon FSx for Windows File Server file system.
     * 
     */
    public List<GetWindowsFileSystemAuditLogConfiguration> auditLogConfigurations() {
        return this.auditLogConfigurations;
    }
    /**
     * @return The number of days to retain automatic backups.
     * 
     */
    public Integer automaticBackupRetentionDays() {
        return this.automaticBackupRetentionDays;
    }
    public String backupId() {
        return this.backupId;
    }
    /**
     * @return A boolean flag indicating whether tags on the file system should be copied to backups.
     * 
     */
    public Boolean copyTagsToBackups() {
        return this.copyTagsToBackups;
    }
    /**
     * @return The preferred time (in `HH:MM` format) to take daily automatic backups, in the UTC time zone.
     * 
     */
    public String dailyAutomaticBackupStartTime() {
        return this.dailyAutomaticBackupStartTime;
    }
    /**
     * @return The file system deployment type.
     * 
     */
    public String deploymentType() {
        return this.deploymentType;
    }
    /**
     * @return DNS name for the file system (e.g. `fs-12345678.corp.example.com`).
     * 
     */
    public String dnsName() {
        return this.dnsName;
    }
    /**
     * @return Identifier of the file system (e.g. `fs-12345678`).
     * 
     */
    public String id() {
        return this.id;
    }
    /**
     * @return ARN for the KMS Key to encrypt the file system at rest.
     * 
     */
    public String kmsKeyId() {
        return this.kmsKeyId;
    }
    public List<String> networkInterfaceIds() {
        return this.networkInterfaceIds;
    }
    /**
     * @return AWS account identifier that created the file system.
     * 
     */
    public String ownerId() {
        return this.ownerId;
    }
    /**
     * @return The IP address of the primary, or preferred, file server.
     * 
     */
    public String preferredFileServerIp() {
        return this.preferredFileServerIp;
    }
    /**
     * @return Specifies the subnet in which you want the preferred file server to be located.
     * 
     */
    public String preferredSubnetId() {
        return this.preferredSubnetId;
    }
    public List<String> securityGroupIds() {
        return this.securityGroupIds;
    }
    public Boolean skipFinalBackup() {
        return this.skipFinalBackup;
    }
    /**
     * @return The storage capacity of the file system in gibibytes (GiB).
     * 
     */
    public Integer storageCapacity() {
        return this.storageCapacity;
    }
    /**
     * @return The type of storage the file system is using. If set to `SSD`, the file system uses solid state drive storage. If set to `HDD`, the file system uses hard disk drive storage.
     * 
     */
    public String storageType() {
        return this.storageType;
    }
    /**
     * @return Specifies the IDs of the subnets that the file system is accessible from.
     * 
     */
    public List<String> subnetIds() {
        return this.subnetIds;
    }
    /**
     * @return The tags to associate with the file system.
     * 
     */
    public Map<String,String> tags() {
        return this.tags;
    }
    /**
     * @return Throughput (megabytes per second) of the file system in power of 2 increments. Minimum of `8` and maximum of `2048`.
     * 
     */
    public Integer throughputCapacity() {
        return this.throughputCapacity;
    }
    /**
     * @return The ID of the primary virtual private cloud (VPC) for the file system.
     * 
     */
    public String vpcId() {
        return this.vpcId;
    }
    /**
     * @return The preferred start time (in `d:HH:MM` format) to perform weekly maintenance, in the UTC time zone.
     * 
     */
    public String weeklyMaintenanceStartTime() {
        return this.weeklyMaintenanceStartTime;
    }

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

    public static Builder builder(GetWindowsFileSystemResult defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String activeDirectoryId;
        private List<String> aliases;
        private String arn;
        private List<GetWindowsFileSystemAuditLogConfiguration> auditLogConfigurations;
        private Integer automaticBackupRetentionDays;
        private String backupId;
        private Boolean copyTagsToBackups;
        private String dailyAutomaticBackupStartTime;
        private String deploymentType;
        private String dnsName;
        private String id;
        private String kmsKeyId;
        private List<String> networkInterfaceIds;
        private String ownerId;
        private String preferredFileServerIp;
        private String preferredSubnetId;
        private List<String> securityGroupIds;
        private Boolean skipFinalBackup;
        private Integer storageCapacity;
        private String storageType;
        private List<String> subnetIds;
        private Map<String,String> tags;
        private Integer throughputCapacity;
        private String vpcId;
        private String weeklyMaintenanceStartTime;
        public Builder() {}
        public Builder(GetWindowsFileSystemResult defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.activeDirectoryId = defaults.activeDirectoryId;
    	      this.aliases = defaults.aliases;
    	      this.arn = defaults.arn;
    	      this.auditLogConfigurations = defaults.auditLogConfigurations;
    	      this.automaticBackupRetentionDays = defaults.automaticBackupRetentionDays;
    	      this.backupId = defaults.backupId;
    	      this.copyTagsToBackups = defaults.copyTagsToBackups;
    	      this.dailyAutomaticBackupStartTime = defaults.dailyAutomaticBackupStartTime;
    	      this.deploymentType = defaults.deploymentType;
    	      this.dnsName = defaults.dnsName;
    	      this.id = defaults.id;
    	      this.kmsKeyId = defaults.kmsKeyId;
    	      this.networkInterfaceIds = defaults.networkInterfaceIds;
    	      this.ownerId = defaults.ownerId;
    	      this.preferredFileServerIp = defaults.preferredFileServerIp;
    	      this.preferredSubnetId = defaults.preferredSubnetId;
    	      this.securityGroupIds = defaults.securityGroupIds;
    	      this.skipFinalBackup = defaults.skipFinalBackup;
    	      this.storageCapacity = defaults.storageCapacity;
    	      this.storageType = defaults.storageType;
    	      this.subnetIds = defaults.subnetIds;
    	      this.tags = defaults.tags;
    	      this.throughputCapacity = defaults.throughputCapacity;
    	      this.vpcId = defaults.vpcId;
    	      this.weeklyMaintenanceStartTime = defaults.weeklyMaintenanceStartTime;
        }

        @CustomType.Setter
        public Builder activeDirectoryId(String activeDirectoryId) {
            this.activeDirectoryId = Objects.requireNonNull(activeDirectoryId);
            return this;
        }
        @CustomType.Setter
        public Builder aliases(List<String> aliases) {
            this.aliases = Objects.requireNonNull(aliases);
            return this;
        }
        public Builder aliases(String... aliases) {
            return aliases(List.of(aliases));
        }
        @CustomType.Setter
        public Builder arn(String arn) {
            this.arn = Objects.requireNonNull(arn);
            return this;
        }
        @CustomType.Setter
        public Builder auditLogConfigurations(List<GetWindowsFileSystemAuditLogConfiguration> auditLogConfigurations) {
            this.auditLogConfigurations = Objects.requireNonNull(auditLogConfigurations);
            return this;
        }
        public Builder auditLogConfigurations(GetWindowsFileSystemAuditLogConfiguration... auditLogConfigurations) {
            return auditLogConfigurations(List.of(auditLogConfigurations));
        }
        @CustomType.Setter
        public Builder automaticBackupRetentionDays(Integer automaticBackupRetentionDays) {
            this.automaticBackupRetentionDays = Objects.requireNonNull(automaticBackupRetentionDays);
            return this;
        }
        @CustomType.Setter
        public Builder backupId(String backupId) {
            this.backupId = Objects.requireNonNull(backupId);
            return this;
        }
        @CustomType.Setter
        public Builder copyTagsToBackups(Boolean copyTagsToBackups) {
            this.copyTagsToBackups = Objects.requireNonNull(copyTagsToBackups);
            return this;
        }
        @CustomType.Setter
        public Builder dailyAutomaticBackupStartTime(String dailyAutomaticBackupStartTime) {
            this.dailyAutomaticBackupStartTime = Objects.requireNonNull(dailyAutomaticBackupStartTime);
            return this;
        }
        @CustomType.Setter
        public Builder deploymentType(String deploymentType) {
            this.deploymentType = Objects.requireNonNull(deploymentType);
            return this;
        }
        @CustomType.Setter
        public Builder dnsName(String dnsName) {
            this.dnsName = Objects.requireNonNull(dnsName);
            return this;
        }
        @CustomType.Setter
        public Builder id(String id) {
            this.id = Objects.requireNonNull(id);
            return this;
        }
        @CustomType.Setter
        public Builder kmsKeyId(String kmsKeyId) {
            this.kmsKeyId = Objects.requireNonNull(kmsKeyId);
            return this;
        }
        @CustomType.Setter
        public Builder networkInterfaceIds(List<String> networkInterfaceIds) {
            this.networkInterfaceIds = Objects.requireNonNull(networkInterfaceIds);
            return this;
        }
        public Builder networkInterfaceIds(String... networkInterfaceIds) {
            return networkInterfaceIds(List.of(networkInterfaceIds));
        }
        @CustomType.Setter
        public Builder ownerId(String ownerId) {
            this.ownerId = Objects.requireNonNull(ownerId);
            return this;
        }
        @CustomType.Setter
        public Builder preferredFileServerIp(String preferredFileServerIp) {
            this.preferredFileServerIp = Objects.requireNonNull(preferredFileServerIp);
            return this;
        }
        @CustomType.Setter
        public Builder preferredSubnetId(String preferredSubnetId) {
            this.preferredSubnetId = Objects.requireNonNull(preferredSubnetId);
            return this;
        }
        @CustomType.Setter
        public Builder securityGroupIds(List<String> securityGroupIds) {
            this.securityGroupIds = Objects.requireNonNull(securityGroupIds);
            return this;
        }
        public Builder securityGroupIds(String... securityGroupIds) {
            return securityGroupIds(List.of(securityGroupIds));
        }
        @CustomType.Setter
        public Builder skipFinalBackup(Boolean skipFinalBackup) {
            this.skipFinalBackup = Objects.requireNonNull(skipFinalBackup);
            return this;
        }
        @CustomType.Setter
        public Builder storageCapacity(Integer storageCapacity) {
            this.storageCapacity = Objects.requireNonNull(storageCapacity);
            return this;
        }
        @CustomType.Setter
        public Builder storageType(String storageType) {
            this.storageType = Objects.requireNonNull(storageType);
            return this;
        }
        @CustomType.Setter
        public Builder subnetIds(List<String> subnetIds) {
            this.subnetIds = Objects.requireNonNull(subnetIds);
            return this;
        }
        public Builder subnetIds(String... subnetIds) {
            return subnetIds(List.of(subnetIds));
        }
        @CustomType.Setter
        public Builder tags(Map<String,String> tags) {
            this.tags = Objects.requireNonNull(tags);
            return this;
        }
        @CustomType.Setter
        public Builder throughputCapacity(Integer throughputCapacity) {
            this.throughputCapacity = Objects.requireNonNull(throughputCapacity);
            return this;
        }
        @CustomType.Setter
        public Builder vpcId(String vpcId) {
            this.vpcId = Objects.requireNonNull(vpcId);
            return this;
        }
        @CustomType.Setter
        public Builder weeklyMaintenanceStartTime(String weeklyMaintenanceStartTime) {
            this.weeklyMaintenanceStartTime = Objects.requireNonNull(weeklyMaintenanceStartTime);
            return this;
        }
        public GetWindowsFileSystemResult build() {
            final var o = new GetWindowsFileSystemResult();
            o.activeDirectoryId = activeDirectoryId;
            o.aliases = aliases;
            o.arn = arn;
            o.auditLogConfigurations = auditLogConfigurations;
            o.automaticBackupRetentionDays = automaticBackupRetentionDays;
            o.backupId = backupId;
            o.copyTagsToBackups = copyTagsToBackups;
            o.dailyAutomaticBackupStartTime = dailyAutomaticBackupStartTime;
            o.deploymentType = deploymentType;
            o.dnsName = dnsName;
            o.id = id;
            o.kmsKeyId = kmsKeyId;
            o.networkInterfaceIds = networkInterfaceIds;
            o.ownerId = ownerId;
            o.preferredFileServerIp = preferredFileServerIp;
            o.preferredSubnetId = preferredSubnetId;
            o.securityGroupIds = securityGroupIds;
            o.skipFinalBackup = skipFinalBackup;
            o.storageCapacity = storageCapacity;
            o.storageType = storageType;
            o.subnetIds = subnetIds;
            o.tags = tags;
            o.throughputCapacity = throughputCapacity;
            o.vpcId = vpcId;
            o.weeklyMaintenanceStartTime = weeklyMaintenanceStartTime;
            return o;
        }
    }
}
