All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.googlenative.baremetalsolution.v2.InstanceArgs Maven / Gradle / Ivy

// *** 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.googlenative.baremetalsolution.v2;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.googlenative.baremetalsolution.v2.enums.InstanceWorkloadProfile;
import com.pulumi.googlenative.baremetalsolution.v2.inputs.GoogleCloudBaremetalsolutionV2LogicalInterfaceArgs;
import com.pulumi.googlenative.baremetalsolution.v2.inputs.LunArgs;
import com.pulumi.googlenative.baremetalsolution.v2.inputs.VolumeArgs;
import java.lang.Boolean;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final InstanceArgs Empty = new InstanceArgs();

    /**
     * True if you enable hyperthreading for the server, otherwise false. The default value is false.
     * 
     */
    @Import(name="hyperthreadingEnabled")
    private @Nullable Output hyperthreadingEnabled;

    /**
     * @return True if you enable hyperthreading for the server, otherwise false. The default value is false.
     * 
     */
    public Optional> hyperthreadingEnabled() {
        return Optional.ofNullable(this.hyperthreadingEnabled);
    }

    /**
     * Labels as key value pairs.
     * 
     */
    @Import(name="labels")
    private @Nullable Output> labels;

    /**
     * @return Labels as key value pairs.
     * 
     */
    public Optional>> labels() {
        return Optional.ofNullable(this.labels);
    }

    @Import(name="location")
    private @Nullable Output location;

    public Optional> location() {
        return Optional.ofNullable(this.location);
    }

    /**
     * List of logical interfaces for the instance. The number of logical interfaces will be the same as number of hardware bond/nic on the chosen network template. For the non-multivlan configurations (for eg, existing servers) that use existing default network template (bondaa-bondaa), both the Instance.networks field and the Instance.logical_interfaces fields will be filled to ensure backward compatibility. For the others, only Instance.logical_interfaces will be filled.
     * 
     */
    @Import(name="logicalInterfaces")
    private @Nullable Output> logicalInterfaces;

    /**
     * @return List of logical interfaces for the instance. The number of logical interfaces will be the same as number of hardware bond/nic on the chosen network template. For the non-multivlan configurations (for eg, existing servers) that use existing default network template (bondaa-bondaa), both the Instance.networks field and the Instance.logical_interfaces fields will be filled to ensure backward compatibility. For the others, only Instance.logical_interfaces will be filled.
     * 
     */
    public Optional>> logicalInterfaces() {
        return Optional.ofNullable(this.logicalInterfaces);
    }

    /**
     * Immutable. List of LUNs associated with this server.
     * 
     */
    @Import(name="luns")
    private @Nullable Output> luns;

    /**
     * @return Immutable. List of LUNs associated with this server.
     * 
     */
    public Optional>> luns() {
        return Optional.ofNullable(this.luns);
    }

    /**
     * Immutable. The server type. [Available server types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
     * 
     */
    @Import(name="machineType")
    private @Nullable Output machineType;

    /**
     * @return Immutable. The server type. [Available server types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
     * 
     */
    public Optional> machineType() {
        return Optional.ofNullable(this.machineType);
    }

    /**
     * Immutable. The resource name of this `Instance`. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. Format: `projects/{project}/locations/{location}/instances/{instance}`
     * 
     */
    @Import(name="name")
    private @Nullable Output name;

    /**
     * @return Immutable. The resource name of this `Instance`. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. Format: `projects/{project}/locations/{location}/instances/{instance}`
     * 
     */
    public Optional> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * Instance network template name. For eg, bondaa-bondaa, bondab-nic, etc. Generally, the template name follows the syntax of "bond" or "nic".
     * 
     */
    @Import(name="networkTemplate")
    private @Nullable Output networkTemplate;

    /**
     * @return Instance network template name. For eg, bondaa-bondaa, bondab-nic, etc. Generally, the template name follows the syntax of "bond" or "nic".
     * 
     */
    public Optional> networkTemplate() {
        return Optional.ofNullable(this.networkTemplate);
    }

    /**
     * The OS image currently installed on the server.
     * 
     */
    @Import(name="osImage")
    private @Nullable Output osImage;

    /**
     * @return The OS image currently installed on the server.
     * 
     */
    public Optional> osImage() {
        return Optional.ofNullable(this.osImage);
    }

    /**
     * Immutable. Pod name. Pod is an independent part of infrastructure. Instance can be connected to the assets (networks, volumes) allocated in the same pod only.
     * 
     */
    @Import(name="pod")
    private @Nullable Output pod;

    /**
     * @return Immutable. Pod name. Pod is an independent part of infrastructure. Instance can be connected to the assets (networks, volumes) allocated in the same pod only.
     * 
     */
    public Optional> pod() {
        return Optional.ofNullable(this.pod);
    }

    @Import(name="project")
    private @Nullable Output project;

    public Optional> project() {
        return Optional.ofNullable(this.project);
    }

    /**
     * Input only. List of Volumes to attach to this Instance on creation. This field won't be populated in Get/List responses.
     * 
     */
    @Import(name="volumes")
    private @Nullable Output> volumes;

    /**
     * @return Input only. List of Volumes to attach to this Instance on creation. This field won't be populated in Get/List responses.
     * 
     */
    public Optional>> volumes() {
        return Optional.ofNullable(this.volumes);
    }

    /**
     * The workload profile for the instance.
     * 
     */
    @Import(name="workloadProfile")
    private @Nullable Output workloadProfile;

    /**
     * @return The workload profile for the instance.
     * 
     */
    public Optional> workloadProfile() {
        return Optional.ofNullable(this.workloadProfile);
    }

    private InstanceArgs() {}

    private InstanceArgs(InstanceArgs $) {
        this.hyperthreadingEnabled = $.hyperthreadingEnabled;
        this.labels = $.labels;
        this.location = $.location;
        this.logicalInterfaces = $.logicalInterfaces;
        this.luns = $.luns;
        this.machineType = $.machineType;
        this.name = $.name;
        this.networkTemplate = $.networkTemplate;
        this.osImage = $.osImage;
        this.pod = $.pod;
        this.project = $.project;
        this.volumes = $.volumes;
        this.workloadProfile = $.workloadProfile;
    }

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

    public static final class Builder {
        private InstanceArgs $;

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

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

        /**
         * @param hyperthreadingEnabled True if you enable hyperthreading for the server, otherwise false. The default value is false.
         * 
         * @return builder
         * 
         */
        public Builder hyperthreadingEnabled(@Nullable Output hyperthreadingEnabled) {
            $.hyperthreadingEnabled = hyperthreadingEnabled;
            return this;
        }

        /**
         * @param hyperthreadingEnabled True if you enable hyperthreading for the server, otherwise false. The default value is false.
         * 
         * @return builder
         * 
         */
        public Builder hyperthreadingEnabled(Boolean hyperthreadingEnabled) {
            return hyperthreadingEnabled(Output.of(hyperthreadingEnabled));
        }

        /**
         * @param labels Labels as key value pairs.
         * 
         * @return builder
         * 
         */
        public Builder labels(@Nullable Output> labels) {
            $.labels = labels;
            return this;
        }

        /**
         * @param labels Labels as key value pairs.
         * 
         * @return builder
         * 
         */
        public Builder labels(Map labels) {
            return labels(Output.of(labels));
        }

        public Builder location(@Nullable Output location) {
            $.location = location;
            return this;
        }

        public Builder location(String location) {
            return location(Output.of(location));
        }

        /**
         * @param logicalInterfaces List of logical interfaces for the instance. The number of logical interfaces will be the same as number of hardware bond/nic on the chosen network template. For the non-multivlan configurations (for eg, existing servers) that use existing default network template (bondaa-bondaa), both the Instance.networks field and the Instance.logical_interfaces fields will be filled to ensure backward compatibility. For the others, only Instance.logical_interfaces will be filled.
         * 
         * @return builder
         * 
         */
        public Builder logicalInterfaces(@Nullable Output> logicalInterfaces) {
            $.logicalInterfaces = logicalInterfaces;
            return this;
        }

        /**
         * @param logicalInterfaces List of logical interfaces for the instance. The number of logical interfaces will be the same as number of hardware bond/nic on the chosen network template. For the non-multivlan configurations (for eg, existing servers) that use existing default network template (bondaa-bondaa), both the Instance.networks field and the Instance.logical_interfaces fields will be filled to ensure backward compatibility. For the others, only Instance.logical_interfaces will be filled.
         * 
         * @return builder
         * 
         */
        public Builder logicalInterfaces(List logicalInterfaces) {
            return logicalInterfaces(Output.of(logicalInterfaces));
        }

        /**
         * @param logicalInterfaces List of logical interfaces for the instance. The number of logical interfaces will be the same as number of hardware bond/nic on the chosen network template. For the non-multivlan configurations (for eg, existing servers) that use existing default network template (bondaa-bondaa), both the Instance.networks field and the Instance.logical_interfaces fields will be filled to ensure backward compatibility. For the others, only Instance.logical_interfaces will be filled.
         * 
         * @return builder
         * 
         */
        public Builder logicalInterfaces(GoogleCloudBaremetalsolutionV2LogicalInterfaceArgs... logicalInterfaces) {
            return logicalInterfaces(List.of(logicalInterfaces));
        }

        /**
         * @param luns Immutable. List of LUNs associated with this server.
         * 
         * @return builder
         * 
         */
        public Builder luns(@Nullable Output> luns) {
            $.luns = luns;
            return this;
        }

        /**
         * @param luns Immutable. List of LUNs associated with this server.
         * 
         * @return builder
         * 
         */
        public Builder luns(List luns) {
            return luns(Output.of(luns));
        }

        /**
         * @param luns Immutable. List of LUNs associated with this server.
         * 
         * @return builder
         * 
         */
        public Builder luns(LunArgs... luns) {
            return luns(List.of(luns));
        }

        /**
         * @param machineType Immutable. The server type. [Available server types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
         * 
         * @return builder
         * 
         */
        public Builder machineType(@Nullable Output machineType) {
            $.machineType = machineType;
            return this;
        }

        /**
         * @param machineType Immutable. The server type. [Available server types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
         * 
         * @return builder
         * 
         */
        public Builder machineType(String machineType) {
            return machineType(Output.of(machineType));
        }

        /**
         * @param name Immutable. The resource name of this `Instance`. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. Format: `projects/{project}/locations/{location}/instances/{instance}`
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output name) {
            $.name = name;
            return this;
        }

        /**
         * @param name Immutable. The resource name of this `Instance`. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. Format: `projects/{project}/locations/{location}/instances/{instance}`
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param networkTemplate Instance network template name. For eg, bondaa-bondaa, bondab-nic, etc. Generally, the template name follows the syntax of "bond" or "nic".
         * 
         * @return builder
         * 
         */
        public Builder networkTemplate(@Nullable Output networkTemplate) {
            $.networkTemplate = networkTemplate;
            return this;
        }

        /**
         * @param networkTemplate Instance network template name. For eg, bondaa-bondaa, bondab-nic, etc. Generally, the template name follows the syntax of "bond" or "nic".
         * 
         * @return builder
         * 
         */
        public Builder networkTemplate(String networkTemplate) {
            return networkTemplate(Output.of(networkTemplate));
        }

        /**
         * @param osImage The OS image currently installed on the server.
         * 
         * @return builder
         * 
         */
        public Builder osImage(@Nullable Output osImage) {
            $.osImage = osImage;
            return this;
        }

        /**
         * @param osImage The OS image currently installed on the server.
         * 
         * @return builder
         * 
         */
        public Builder osImage(String osImage) {
            return osImage(Output.of(osImage));
        }

        /**
         * @param pod Immutable. Pod name. Pod is an independent part of infrastructure. Instance can be connected to the assets (networks, volumes) allocated in the same pod only.
         * 
         * @return builder
         * 
         */
        public Builder pod(@Nullable Output pod) {
            $.pod = pod;
            return this;
        }

        /**
         * @param pod Immutable. Pod name. Pod is an independent part of infrastructure. Instance can be connected to the assets (networks, volumes) allocated in the same pod only.
         * 
         * @return builder
         * 
         */
        public Builder pod(String pod) {
            return pod(Output.of(pod));
        }

        public Builder project(@Nullable Output project) {
            $.project = project;
            return this;
        }

        public Builder project(String project) {
            return project(Output.of(project));
        }

        /**
         * @param volumes Input only. List of Volumes to attach to this Instance on creation. This field won't be populated in Get/List responses.
         * 
         * @return builder
         * 
         */
        public Builder volumes(@Nullable Output> volumes) {
            $.volumes = volumes;
            return this;
        }

        /**
         * @param volumes Input only. List of Volumes to attach to this Instance on creation. This field won't be populated in Get/List responses.
         * 
         * @return builder
         * 
         */
        public Builder volumes(List volumes) {
            return volumes(Output.of(volumes));
        }

        /**
         * @param volumes Input only. List of Volumes to attach to this Instance on creation. This field won't be populated in Get/List responses.
         * 
         * @return builder
         * 
         */
        public Builder volumes(VolumeArgs... volumes) {
            return volumes(List.of(volumes));
        }

        /**
         * @param workloadProfile The workload profile for the instance.
         * 
         * @return builder
         * 
         */
        public Builder workloadProfile(@Nullable Output workloadProfile) {
            $.workloadProfile = workloadProfile;
            return this;
        }

        /**
         * @param workloadProfile The workload profile for the instance.
         * 
         * @return builder
         * 
         */
        public Builder workloadProfile(InstanceWorkloadProfile workloadProfile) {
            return workloadProfile(Output.of(workloadProfile));
        }

        public InstanceArgs build() {
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy