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

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.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final InstallationTemplateArgs Empty = new InstallationTemplateArgs();

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

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

    @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", required=true)
    private Output<String> defaultLanguage;

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

    /**
     * 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 template name.
     * 
     */
    @Import(name="templateName", required=true)
    private Output<String> templateName;

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

    private InstallationTemplateArgs() {}

    private InstallationTemplateArgs(InstallationTemplateArgs $) {
        this.baseTemplateName = $.baseTemplateName;
        this.customization = $.customization;
        this.defaultLanguage = $.defaultLanguage;
        this.removeDefaultPartitionSchemes = $.removeDefaultPartitionSchemes;
        this.templateName = $.templateName;
    }

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

    public static final class Builder {
        private InstallationTemplateArgs $;

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

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

        /**
         * @param baseTemplateName The name of an existing installation template, choose one among the list given by `ovh.getInstallationTemplates` datasource.
         * 
         * @return builder
         * 
         */
        public Builder baseTemplateName(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));
        }

        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(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 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 templateName This template name.
         * 
         * @return builder
         * 
         */
        public Builder templateName(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 InstallationTemplateArgs build() {
            $.baseTemplateName = Objects.requireNonNull($.baseTemplateName, "expected parameter 'baseTemplateName' to be non-null");
            $.defaultLanguage = Objects.requireNonNull($.defaultLanguage, "expected parameter 'defaultLanguage' to be non-null");
            $.templateName = Objects.requireNonNull($.templateName, "expected parameter 'templateName' to be non-null");
            return $;
        }
    }

}
