sdk/java/src/main/java/com/pulumi/ovh/Me/inputs/InstallationTemplateState.java
// *** 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.ovh.Me.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.ovh.Me.inputs.InstallationTemplateCustomizationArgs;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final InstallationTemplateState Empty = new InstallationTemplateState();

    /**
     * List of all language available for this template.
     * 
     */
    @Import(name="availableLanguages")
    private @Nullable Output<List<String>> availableLanguages;

    /**
     * @return List of all language available for this template.
     * 
     */
    public Optional<Output<List<String>>> availableLanguages() {
        return Optional.ofNullable(this.availableLanguages);
    }

    /**
     * The name of an existing installation template, choose one among the list given by `ovh.getInstallationTemplates` datasource.
     * 
     */
    @Import(name="baseTemplateName")
    private @Nullable Output<String> baseTemplateName;

    /**
     * @return The name of an existing installation template, choose one among the list given by `ovh.getInstallationTemplates` datasource.
     * 
     */
    public Optional<Output<String>> baseTemplateName() {
        return Optional.ofNullable(this.baseTemplateName);
    }

    /**
     * This distribution is new and, although tested and functional, may still display odd behaviour.
     * 
     */
    @Import(name="beta")
    private @Nullable Output<Boolean> beta;

    /**
     * @return This distribution is new and, although tested and functional, may still display odd behaviour.
     * 
     */
    public Optional<Output<Boolean>> beta() {
        return Optional.ofNullable(this.beta);
    }

    /**
     * This template bit format (32 or 64).
     * 
     */
    @Import(name="bitFormat")
    private @Nullable Output<Integer> bitFormat;

    /**
     * @return This template bit format (32 or 64).
     * 
     */
    public Optional<Output<Integer>> bitFormat() {
        return Optional.ofNullable(this.bitFormat);
    }

    /**
     * Category of this template (informative only). (basic, customer, hosting, other, readyToUse, virtualisation).
     * 
     */
    @Import(name="category")
    private @Nullable Output<String> category;

    /**
     * @return Category of this template (informative only). (basic, customer, hosting, other, readyToUse, virtualisation).
     * 
     */
    public Optional<Output<String>> category() {
        return Optional.ofNullable(this.category);
    }

    @Import(name="customization")
    private @Nullable Output<InstallationTemplateCustomizationArgs> customization;

    public Optional<Output<InstallationTemplateCustomizationArgs>> customization() {
        return Optional.ofNullable(this.customization);
    }

    /**
     * The default language of this template.
     * 
     */
    @Import(name="defaultLanguage")
    private @Nullable Output<String> defaultLanguage;

    /**
     * @return The default language of this template.
     * 
     */
    public Optional<Output<String>> defaultLanguage() {
        return Optional.ofNullable(this.defaultLanguage);
    }

    /**
     * is this distribution deprecated.
     * 
     */
    @Import(name="deprecated")
    private @Nullable Output<Boolean> deprecated;

    /**
     * @return is this distribution deprecated.
     * 
     */
    public Optional<Output<Boolean>> deprecated() {
        return Optional.ofNullable(this.deprecated);
    }

    /**
     * information about this template.
     * 
     */
    @Import(name="description")
    private @Nullable Output<String> description;

    /**
     * @return information about this template.
     * 
     */
    public Optional<Output<String>> description() {
        return Optional.ofNullable(this.description);
    }

    /**
     * the distribution this template is based on.
     * 
     */
    @Import(name="distribution")
    private @Nullable Output<String> distribution;

    /**
     * @return the distribution this template is based on.
     * 
     */
    public Optional<Output<String>> distribution() {
        return Optional.ofNullable(this.distribution);
    }

    /**
     * this template family type (bsd,linux,solaris,windows).
     * 
     */
    @Import(name="family")
    private @Nullable Output<String> family;

    /**
     * @return this template family type (bsd,linux,solaris,windows).
     * 
     */
    public Optional<Output<String>> family() {
        return Optional.ofNullable(this.family);
    }

    /**
     * Filesystems available (btrfs,ext3,ext4,ntfs,reiserfs,swap,ufs,xfs,zfs).
     * 
     */
    @Import(name="filesystems")
    private @Nullable Output<List<String>> filesystems;

    /**
     * @return Filesystems available (btrfs,ext3,ext4,ntfs,reiserfs,swap,ufs,xfs,zfs).
     * 
     */
    public Optional<Output<List<String>>> filesystems() {
        return Optional.ofNullable(this.filesystems);
    }

    /**
     * This distribution supports hardware raid configuration through the OVHcloud API.
     * 
     */
    @Import(name="hardRaidConfiguration")
    private @Nullable Output<Boolean> hardRaidConfiguration;

    /**
     * @return This distribution supports hardware raid configuration through the OVHcloud API.
     * 
     */
    public Optional<Output<Boolean>> hardRaidConfiguration() {
        return Optional.ofNullable(this.hardRaidConfiguration);
    }

    /**
     * Date of last modification of the base image.
     * 
     */
    @Import(name="lastModification")
    private @Nullable Output<String> lastModification;

    /**
     * @return Date of last modification of the base image.
     * 
     */
    public Optional<Output<String>> lastModification() {
        return Optional.ofNullable(this.lastModification);
    }

    /**
     * This distribution supports Logical Volumes (Linux LVM)
     * 
     */
    @Import(name="lvmReady")
    private @Nullable Output<Boolean> lvmReady;

    /**
     * @return This distribution supports Logical Volumes (Linux LVM)
     * 
     */
    public Optional<Output<Boolean>> lvmReady() {
        return Optional.ofNullable(this.lvmReady);
    }

    /**
     * Remove default partition schemes at creation.
     * 
     */
    @Import(name="removeDefaultPartitionSchemes")
    private @Nullable Output<Boolean> removeDefaultPartitionSchemes;

    /**
     * @return Remove default partition schemes at creation.
     * 
     */
    public Optional<Output<Boolean>> removeDefaultPartitionSchemes() {
        return Optional.ofNullable(this.removeDefaultPartitionSchemes);
    }

    /**
     * This distribution supports installation using the distribution&#39;s native kernel instead of the recommended OVHcloud kernel.
     * 
     */
    @Import(name="supportsDistributionKernel")
    private @Nullable Output<Boolean> supportsDistributionKernel;

    /**
     * @return This distribution supports installation using the distribution&#39;s native kernel instead of the recommended OVHcloud kernel.
     * 
     */
    public Optional<Output<Boolean>> supportsDistributionKernel() {
        return Optional.ofNullable(this.supportsDistributionKernel);
    }

    /**
     * This distribution supports RTM software.
     * 
     */
    @Import(name="supportsRtm")
    private @Nullable Output<Boolean> supportsRtm;

    /**
     * @return This distribution supports RTM software.
     * 
     */
    public Optional<Output<Boolean>> supportsRtm() {
        return Optional.ofNullable(this.supportsRtm);
    }

    /**
     * This distribution supports the microsoft SQL server.
     * 
     */
    @Import(name="supportsSqlServer")
    private @Nullable Output<Boolean> supportsSqlServer;

    /**
     * @return This distribution supports the microsoft SQL server.
     * 
     */
    public Optional<Output<Boolean>> supportsSqlServer() {
        return Optional.ofNullable(this.supportsSqlServer);
    }

    /**
     * This template name.
     * 
     */
    @Import(name="templateName")
    private @Nullable Output<String> templateName;

    /**
     * @return This template name.
     * 
     */
    public Optional<Output<String>> templateName() {
        return Optional.ofNullable(this.templateName);
    }

    private InstallationTemplateState() {}

    private InstallationTemplateState(InstallationTemplateState $) {
        this.availableLanguages = $.availableLanguages;
        this.baseTemplateName = $.baseTemplateName;
        this.beta = $.beta;
        this.bitFormat = $.bitFormat;
        this.category = $.category;
        this.customization = $.customization;
        this.defaultLanguage = $.defaultLanguage;
        this.deprecated = $.deprecated;
        this.description = $.description;
        this.distribution = $.distribution;
        this.family = $.family;
        this.filesystems = $.filesystems;
        this.hardRaidConfiguration = $.hardRaidConfiguration;
        this.lastModification = $.lastModification;
        this.lvmReady = $.lvmReady;
        this.removeDefaultPartitionSchemes = $.removeDefaultPartitionSchemes;
        this.supportsDistributionKernel = $.supportsDistributionKernel;
        this.supportsRtm = $.supportsRtm;
        this.supportsSqlServer = $.supportsSqlServer;
        this.templateName = $.templateName;
    }

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

    public static final class Builder {
        private InstallationTemplateState $;

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

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

        /**
         * @param availableLanguages List of all language available for this template.
         * 
         * @return builder
         * 
         */
        public Builder availableLanguages(@Nullable Output<List<String>> availableLanguages) {
            $.availableLanguages = availableLanguages;
            return this;
        }

        /**
         * @param availableLanguages List of all language available for this template.
         * 
         * @return builder
         * 
         */
        public Builder availableLanguages(List<String> availableLanguages) {
            return availableLanguages(Output.of(availableLanguages));
        }

        /**
         * @param availableLanguages List of all language available for this template.
         * 
         * @return builder
         * 
         */
        public Builder availableLanguages(String... availableLanguages) {
            return availableLanguages(List.of(availableLanguages));
        }

        /**
         * @param baseTemplateName The name of an existing installation template, choose one among the list given by `ovh.getInstallationTemplates` datasource.
         * 
         * @return builder
         * 
         */
        public Builder baseTemplateName(@Nullable Output<String> baseTemplateName) {
            $.baseTemplateName = baseTemplateName;
            return this;
        }

        /**
         * @param baseTemplateName The name of an existing installation template, choose one among the list given by `ovh.getInstallationTemplates` datasource.
         * 
         * @return builder
         * 
         */
        public Builder baseTemplateName(String baseTemplateName) {
            return baseTemplateName(Output.of(baseTemplateName));
        }

        /**
         * @param beta This distribution is new and, although tested and functional, may still display odd behaviour.
         * 
         * @return builder
         * 
         */
        public Builder beta(@Nullable Output<Boolean> beta) {
            $.beta = beta;
            return this;
        }

        /**
         * @param beta This distribution is new and, although tested and functional, may still display odd behaviour.
         * 
         * @return builder
         * 
         */
        public Builder beta(Boolean beta) {
            return beta(Output.of(beta));
        }

        /**
         * @param bitFormat This template bit format (32 or 64).
         * 
         * @return builder
         * 
         */
        public Builder bitFormat(@Nullable Output<Integer> bitFormat) {
            $.bitFormat = bitFormat;
            return this;
        }

        /**
         * @param bitFormat This template bit format (32 or 64).
         * 
         * @return builder
         * 
         */
        public Builder bitFormat(Integer bitFormat) {
            return bitFormat(Output.of(bitFormat));
        }

        /**
         * @param category Category of this template (informative only). (basic, customer, hosting, other, readyToUse, virtualisation).
         * 
         * @return builder
         * 
         */
        public Builder category(@Nullable Output<String> category) {
            $.category = category;
            return this;
        }

        /**
         * @param category Category of this template (informative only). (basic, customer, hosting, other, readyToUse, virtualisation).
         * 
         * @return builder
         * 
         */
        public Builder category(String category) {
            return category(Output.of(category));
        }

        public Builder customization(@Nullable Output<InstallationTemplateCustomizationArgs> customization) {
            $.customization = customization;
            return this;
        }

        public Builder customization(InstallationTemplateCustomizationArgs customization) {
            return customization(Output.of(customization));
        }

        /**
         * @param defaultLanguage The default language of this template.
         * 
         * @return builder
         * 
         */
        public Builder defaultLanguage(@Nullable Output<String> defaultLanguage) {
            $.defaultLanguage = defaultLanguage;
            return this;
        }

        /**
         * @param defaultLanguage The default language of this template.
         * 
         * @return builder
         * 
         */
        public Builder defaultLanguage(String defaultLanguage) {
            return defaultLanguage(Output.of(defaultLanguage));
        }

        /**
         * @param deprecated is this distribution deprecated.
         * 
         * @return builder
         * 
         */
        public Builder deprecated(@Nullable Output<Boolean> deprecated) {
            $.deprecated = deprecated;
            return this;
        }

        /**
         * @param deprecated is this distribution deprecated.
         * 
         * @return builder
         * 
         */
        public Builder deprecated(Boolean deprecated) {
            return deprecated(Output.of(deprecated));
        }

        /**
         * @param description information about this template.
         * 
         * @return builder
         * 
         */
        public Builder description(@Nullable Output<String> description) {
            $.description = description;
            return this;
        }

        /**
         * @param description information about this template.
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

        /**
         * @param distribution the distribution this template is based on.
         * 
         * @return builder
         * 
         */
        public Builder distribution(@Nullable Output<String> distribution) {
            $.distribution = distribution;
            return this;
        }

        /**
         * @param distribution the distribution this template is based on.
         * 
         * @return builder
         * 
         */
        public Builder distribution(String distribution) {
            return distribution(Output.of(distribution));
        }

        /**
         * @param family this template family type (bsd,linux,solaris,windows).
         * 
         * @return builder
         * 
         */
        public Builder family(@Nullable Output<String> family) {
            $.family = family;
            return this;
        }

        /**
         * @param family this template family type (bsd,linux,solaris,windows).
         * 
         * @return builder
         * 
         */
        public Builder family(String family) {
            return family(Output.of(family));
        }

        /**
         * @param filesystems Filesystems available (btrfs,ext3,ext4,ntfs,reiserfs,swap,ufs,xfs,zfs).
         * 
         * @return builder
         * 
         */
        public Builder filesystems(@Nullable Output<List<String>> filesystems) {
            $.filesystems = filesystems;
            return this;
        }

        /**
         * @param filesystems Filesystems available (btrfs,ext3,ext4,ntfs,reiserfs,swap,ufs,xfs,zfs).
         * 
         * @return builder
         * 
         */
        public Builder filesystems(List<String> filesystems) {
            return filesystems(Output.of(filesystems));
        }

        /**
         * @param filesystems Filesystems available (btrfs,ext3,ext4,ntfs,reiserfs,swap,ufs,xfs,zfs).
         * 
         * @return builder
         * 
         */
        public Builder filesystems(String... filesystems) {
            return filesystems(List.of(filesystems));
        }

        /**
         * @param hardRaidConfiguration This distribution supports hardware raid configuration through the OVHcloud API.
         * 
         * @return builder
         * 
         */
        public Builder hardRaidConfiguration(@Nullable Output<Boolean> hardRaidConfiguration) {
            $.hardRaidConfiguration = hardRaidConfiguration;
            return this;
        }

        /**
         * @param hardRaidConfiguration This distribution supports hardware raid configuration through the OVHcloud API.
         * 
         * @return builder
         * 
         */
        public Builder hardRaidConfiguration(Boolean hardRaidConfiguration) {
            return hardRaidConfiguration(Output.of(hardRaidConfiguration));
        }

        /**
         * @param lastModification Date of last modification of the base image.
         * 
         * @return builder
         * 
         */
        public Builder lastModification(@Nullable Output<String> lastModification) {
            $.lastModification = lastModification;
            return this;
        }

        /**
         * @param lastModification Date of last modification of the base image.
         * 
         * @return builder
         * 
         */
        public Builder lastModification(String lastModification) {
            return lastModification(Output.of(lastModification));
        }

        /**
         * @param lvmReady This distribution supports Logical Volumes (Linux LVM)
         * 
         * @return builder
         * 
         */
        public Builder lvmReady(@Nullable Output<Boolean> lvmReady) {
            $.lvmReady = lvmReady;
            return this;
        }

        /**
         * @param lvmReady This distribution supports Logical Volumes (Linux LVM)
         * 
         * @return builder
         * 
         */
        public Builder lvmReady(Boolean lvmReady) {
            return lvmReady(Output.of(lvmReady));
        }

        /**
         * @param removeDefaultPartitionSchemes Remove default partition schemes at creation.
         * 
         * @return builder
         * 
         */
        public Builder removeDefaultPartitionSchemes(@Nullable Output<Boolean> removeDefaultPartitionSchemes) {
            $.removeDefaultPartitionSchemes = removeDefaultPartitionSchemes;
            return this;
        }

        /**
         * @param removeDefaultPartitionSchemes Remove default partition schemes at creation.
         * 
         * @return builder
         * 
         */
        public Builder removeDefaultPartitionSchemes(Boolean removeDefaultPartitionSchemes) {
            return removeDefaultPartitionSchemes(Output.of(removeDefaultPartitionSchemes));
        }

        /**
         * @param supportsDistributionKernel This distribution supports installation using the distribution&#39;s native kernel instead of the recommended OVHcloud kernel.
         * 
         * @return builder
         * 
         */
        public Builder supportsDistributionKernel(@Nullable Output<Boolean> supportsDistributionKernel) {
            $.supportsDistributionKernel = supportsDistributionKernel;
            return this;
        }

        /**
         * @param supportsDistributionKernel This distribution supports installation using the distribution&#39;s native kernel instead of the recommended OVHcloud kernel.
         * 
         * @return builder
         * 
         */
        public Builder supportsDistributionKernel(Boolean supportsDistributionKernel) {
            return supportsDistributionKernel(Output.of(supportsDistributionKernel));
        }

        /**
         * @param supportsRtm This distribution supports RTM software.
         * 
         * @return builder
         * 
         */
        public Builder supportsRtm(@Nullable Output<Boolean> supportsRtm) {
            $.supportsRtm = supportsRtm;
            return this;
        }

        /**
         * @param supportsRtm This distribution supports RTM software.
         * 
         * @return builder
         * 
         */
        public Builder supportsRtm(Boolean supportsRtm) {
            return supportsRtm(Output.of(supportsRtm));
        }

        /**
         * @param supportsSqlServer This distribution supports the microsoft SQL server.
         * 
         * @return builder
         * 
         */
        public Builder supportsSqlServer(@Nullable Output<Boolean> supportsSqlServer) {
            $.supportsSqlServer = supportsSqlServer;
            return this;
        }

        /**
         * @param supportsSqlServer This distribution supports the microsoft SQL server.
         * 
         * @return builder
         * 
         */
        public Builder supportsSqlServer(Boolean supportsSqlServer) {
            return supportsSqlServer(Output.of(supportsSqlServer));
        }

        /**
         * @param templateName This template name.
         * 
         * @return builder
         * 
         */
        public Builder templateName(@Nullable Output<String> templateName) {
            $.templateName = templateName;
            return this;
        }

        /**
         * @param templateName This template name.
         * 
         * @return builder
         * 
         */
        public Builder templateName(String templateName) {
            return templateName(Output.of(templateName));
        }

        public InstallationTemplateState build() {
            return $;
        }
    }

}
