// *** 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.automation.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final HybridRunbookWorkerState Empty = new HybridRunbookWorkerState();

    /**
     * The name of the automation account in which the Hybrid Worker is created. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="automationAccountName")
    private @Nullable Output<String> automationAccountName;

    /**
     * @return The name of the automation account in which the Hybrid Worker is created. Changing this forces a new resource to be created.
     * 
     */
    public Optional<Output<String>> automationAccountName() {
        return Optional.ofNullable(this.automationAccountName);
    }

    /**
     * The IP address of assigned machine.
     * 
     */
    @Import(name="ip")
    private @Nullable Output<String> ip;

    /**
     * @return The IP address of assigned machine.
     * 
     */
    public Optional<Output<String>> ip() {
        return Optional.ofNullable(this.ip);
    }

    /**
     * Last Heartbeat from the Worker.
     * 
     */
    @Import(name="lastSeenDateTime")
    private @Nullable Output<String> lastSeenDateTime;

    /**
     * @return Last Heartbeat from the Worker.
     * 
     */
    public Optional<Output<String>> lastSeenDateTime() {
        return Optional.ofNullable(this.lastSeenDateTime);
    }

    /**
     * The registration time of the worker machine.
     * 
     */
    @Import(name="registrationDateTime")
    private @Nullable Output<String> registrationDateTime;

    /**
     * @return The registration time of the worker machine.
     * 
     */
    public Optional<Output<String>> registrationDateTime() {
        return Optional.ofNullable(this.registrationDateTime);
    }

    /**
     * The name of the Resource Group where the Automation should exist. Changing this forces a new Automation to be created.
     * 
     */
    @Import(name="resourceGroupName")
    private @Nullable Output<String> resourceGroupName;

    /**
     * @return The name of the Resource Group where the Automation should exist. Changing this forces a new Automation to be created.
     * 
     */
    public Optional<Output<String>> resourceGroupName() {
        return Optional.ofNullable(this.resourceGroupName);
    }

    /**
     * The ID of the virtual machine used for this HybridWorker. Changing this forces a new Automation to be created.
     * 
     */
    @Import(name="vmResourceId")
    private @Nullable Output<String> vmResourceId;

    /**
     * @return The ID of the virtual machine used for this HybridWorker. Changing this forces a new Automation to be created.
     * 
     */
    public Optional<Output<String>> vmResourceId() {
        return Optional.ofNullable(this.vmResourceId);
    }

    /**
     * The name of the HybridWorker Group. Changing this forces a new Automation to be created.
     * 
     */
    @Import(name="workerGroupName")
    private @Nullable Output<String> workerGroupName;

    /**
     * @return The name of the HybridWorker Group. Changing this forces a new Automation to be created.
     * 
     */
    public Optional<Output<String>> workerGroupName() {
        return Optional.ofNullable(this.workerGroupName);
    }

    /**
     * Specify the ID of this HybridWorker in UUID notation. Changing this forces a new Automation to be created.
     * 
     */
    @Import(name="workerId")
    private @Nullable Output<String> workerId;

    /**
     * @return Specify the ID of this HybridWorker in UUID notation. Changing this forces a new Automation to be created.
     * 
     */
    public Optional<Output<String>> workerId() {
        return Optional.ofNullable(this.workerId);
    }

    /**
     * The name of HybridWorker.
     * 
     */
    @Import(name="workerName")
    private @Nullable Output<String> workerName;

    /**
     * @return The name of HybridWorker.
     * 
     */
    public Optional<Output<String>> workerName() {
        return Optional.ofNullable(this.workerName);
    }

    /**
     * The type of the HybridWorker, the possible values are `HybridV1` and `HybridV2`.
     * 
     */
    @Import(name="workerType")
    private @Nullable Output<String> workerType;

    /**
     * @return The type of the HybridWorker, the possible values are `HybridV1` and `HybridV2`.
     * 
     */
    public Optional<Output<String>> workerType() {
        return Optional.ofNullable(this.workerType);
    }

    private HybridRunbookWorkerState() {}

    private HybridRunbookWorkerState(HybridRunbookWorkerState $) {
        this.automationAccountName = $.automationAccountName;
        this.ip = $.ip;
        this.lastSeenDateTime = $.lastSeenDateTime;
        this.registrationDateTime = $.registrationDateTime;
        this.resourceGroupName = $.resourceGroupName;
        this.vmResourceId = $.vmResourceId;
        this.workerGroupName = $.workerGroupName;
        this.workerId = $.workerId;
        this.workerName = $.workerName;
        this.workerType = $.workerType;
    }

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

    public static final class Builder {
        private HybridRunbookWorkerState $;

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

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

        /**
         * @param automationAccountName The name of the automation account in which the Hybrid Worker is created. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder automationAccountName(@Nullable Output<String> automationAccountName) {
            $.automationAccountName = automationAccountName;
            return this;
        }

        /**
         * @param automationAccountName The name of the automation account in which the Hybrid Worker is created. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder automationAccountName(String automationAccountName) {
            return automationAccountName(Output.of(automationAccountName));
        }

        /**
         * @param ip The IP address of assigned machine.
         * 
         * @return builder
         * 
         */
        public Builder ip(@Nullable Output<String> ip) {
            $.ip = ip;
            return this;
        }

        /**
         * @param ip The IP address of assigned machine.
         * 
         * @return builder
         * 
         */
        public Builder ip(String ip) {
            return ip(Output.of(ip));
        }

        /**
         * @param lastSeenDateTime Last Heartbeat from the Worker.
         * 
         * @return builder
         * 
         */
        public Builder lastSeenDateTime(@Nullable Output<String> lastSeenDateTime) {
            $.lastSeenDateTime = lastSeenDateTime;
            return this;
        }

        /**
         * @param lastSeenDateTime Last Heartbeat from the Worker.
         * 
         * @return builder
         * 
         */
        public Builder lastSeenDateTime(String lastSeenDateTime) {
            return lastSeenDateTime(Output.of(lastSeenDateTime));
        }

        /**
         * @param registrationDateTime The registration time of the worker machine.
         * 
         * @return builder
         * 
         */
        public Builder registrationDateTime(@Nullable Output<String> registrationDateTime) {
            $.registrationDateTime = registrationDateTime;
            return this;
        }

        /**
         * @param registrationDateTime The registration time of the worker machine.
         * 
         * @return builder
         * 
         */
        public Builder registrationDateTime(String registrationDateTime) {
            return registrationDateTime(Output.of(registrationDateTime));
        }

        /**
         * @param resourceGroupName The name of the Resource Group where the Automation should exist. Changing this forces a new Automation to be created.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(@Nullable Output<String> resourceGroupName) {
            $.resourceGroupName = resourceGroupName;
            return this;
        }

        /**
         * @param resourceGroupName The name of the Resource Group where the Automation should exist. Changing this forces a new Automation to be created.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(String resourceGroupName) {
            return resourceGroupName(Output.of(resourceGroupName));
        }

        /**
         * @param vmResourceId The ID of the virtual machine used for this HybridWorker. Changing this forces a new Automation to be created.
         * 
         * @return builder
         * 
         */
        public Builder vmResourceId(@Nullable Output<String> vmResourceId) {
            $.vmResourceId = vmResourceId;
            return this;
        }

        /**
         * @param vmResourceId The ID of the virtual machine used for this HybridWorker. Changing this forces a new Automation to be created.
         * 
         * @return builder
         * 
         */
        public Builder vmResourceId(String vmResourceId) {
            return vmResourceId(Output.of(vmResourceId));
        }

        /**
         * @param workerGroupName The name of the HybridWorker Group. Changing this forces a new Automation to be created.
         * 
         * @return builder
         * 
         */
        public Builder workerGroupName(@Nullable Output<String> workerGroupName) {
            $.workerGroupName = workerGroupName;
            return this;
        }

        /**
         * @param workerGroupName The name of the HybridWorker Group. Changing this forces a new Automation to be created.
         * 
         * @return builder
         * 
         */
        public Builder workerGroupName(String workerGroupName) {
            return workerGroupName(Output.of(workerGroupName));
        }

        /**
         * @param workerId Specify the ID of this HybridWorker in UUID notation. Changing this forces a new Automation to be created.
         * 
         * @return builder
         * 
         */
        public Builder workerId(@Nullable Output<String> workerId) {
            $.workerId = workerId;
            return this;
        }

        /**
         * @param workerId Specify the ID of this HybridWorker in UUID notation. Changing this forces a new Automation to be created.
         * 
         * @return builder
         * 
         */
        public Builder workerId(String workerId) {
            return workerId(Output.of(workerId));
        }

        /**
         * @param workerName The name of HybridWorker.
         * 
         * @return builder
         * 
         */
        public Builder workerName(@Nullable Output<String> workerName) {
            $.workerName = workerName;
            return this;
        }

        /**
         * @param workerName The name of HybridWorker.
         * 
         * @return builder
         * 
         */
        public Builder workerName(String workerName) {
            return workerName(Output.of(workerName));
        }

        /**
         * @param workerType The type of the HybridWorker, the possible values are `HybridV1` and `HybridV2`.
         * 
         * @return builder
         * 
         */
        public Builder workerType(@Nullable Output<String> workerType) {
            $.workerType = workerType;
            return this;
        }

        /**
         * @param workerType The type of the HybridWorker, the possible values are `HybridV1` and `HybridV2`.
         * 
         * @return builder
         * 
         */
        public Builder workerType(String workerType) {
            return workerType(Output.of(workerType));
        }

        public HybridRunbookWorkerState build() {
            return $;
        }
    }

}
