// *** WARNING: this file was generated by pulumigen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.ComponentModel;
using Pulumi;

namespace Pulumi.ScalewayInstances.Action
{
    /// <summary>
    /// The action to perform on the server
    /// </summary>
    [EnumType]
    public readonly struct Action : IEquatable<Action>
    {
        private readonly string _value;

        private Action(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static Action Poweron { get; } = new Action("poweron");
        public static Action Backup { get; } = new Action("backup");
        public static Action StopInPlace { get; } = new Action("stop_in_place");
        public static Action Poweroff { get; } = new Action("poweroff");
        public static Action Terminate { get; } = new Action("terminate");
        public static Action Reboot { get; } = new Action("reboot");

        public static bool operator ==(Action left, Action right) => left.Equals(right);
        public static bool operator !=(Action left, Action right) => !left.Equals(right);

        public static explicit operator string(Action value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is Action other && Equals(other);
        public bool Equals(Action other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1ListServerActionsResponseActionsItem : IEquatable<ScalewayInstanceV1ListServerActionsResponseActionsItem>
    {
        private readonly string _value;

        private ScalewayInstanceV1ListServerActionsResponseActionsItem(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1ListServerActionsResponseActionsItem Poweron { get; } = new ScalewayInstanceV1ListServerActionsResponseActionsItem("poweron");
        public static ScalewayInstanceV1ListServerActionsResponseActionsItem Backup { get; } = new ScalewayInstanceV1ListServerActionsResponseActionsItem("backup");
        public static ScalewayInstanceV1ListServerActionsResponseActionsItem StopInPlace { get; } = new ScalewayInstanceV1ListServerActionsResponseActionsItem("stop_in_place");
        public static ScalewayInstanceV1ListServerActionsResponseActionsItem Poweroff { get; } = new ScalewayInstanceV1ListServerActionsResponseActionsItem("poweroff");
        public static ScalewayInstanceV1ListServerActionsResponseActionsItem Terminate { get; } = new ScalewayInstanceV1ListServerActionsResponseActionsItem("terminate");
        public static ScalewayInstanceV1ListServerActionsResponseActionsItem Reboot { get; } = new ScalewayInstanceV1ListServerActionsResponseActionsItem("reboot");

        public static bool operator ==(ScalewayInstanceV1ListServerActionsResponseActionsItem left, ScalewayInstanceV1ListServerActionsResponseActionsItem right) => left.Equals(right);
        public static bool operator !=(ScalewayInstanceV1ListServerActionsResponseActionsItem left, ScalewayInstanceV1ListServerActionsResponseActionsItem right) => !left.Equals(right);

        public static explicit operator string(ScalewayInstanceV1ListServerActionsResponseActionsItem value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1ListServerActionsResponseActionsItem other && Equals(other);
        public bool Equals(ScalewayInstanceV1ListServerActionsResponseActionsItem other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType : IEquatable<ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType>
    {
        private readonly string _value;

        private ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType LSsd { get; } = new ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType("l_ssd");
        public static ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType BSsd { get; } = new ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType("b_ssd");
        public static ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType Unified { get; } = new ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType("unified");

        public static bool operator ==(ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType left, ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType right) => left.Equals(right);
        public static bool operator !=(ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType left, ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType right) => !left.Equals(right);

        public static explicit operator string(ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType other && Equals(other);
        public bool Equals(ScalewayInstanceV1ServerActionRequestVolumeBackupTemplateVolumeType other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    /// <summary>
    /// The task status
    /// </summary>
    [EnumType]
    public readonly struct ScalewayInstanceV1TaskStatus : IEquatable<ScalewayInstanceV1TaskStatus>
    {
        private readonly string _value;

        private ScalewayInstanceV1TaskStatus(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1TaskStatus Pending { get; } = new ScalewayInstanceV1TaskStatus("pending");
        public static ScalewayInstanceV1TaskStatus Started { get; } = new ScalewayInstanceV1TaskStatus("started");
        public static ScalewayInstanceV1TaskStatus Success { get; } = new ScalewayInstanceV1TaskStatus("success");
        public static ScalewayInstanceV1TaskStatus Failure { get; } = new ScalewayInstanceV1TaskStatus("failure");
        public static ScalewayInstanceV1TaskStatus Retry { get; } = new ScalewayInstanceV1TaskStatus("retry");

        public static bool operator ==(ScalewayInstanceV1TaskStatus left, ScalewayInstanceV1TaskStatus right) => left.Equals(right);
        public static bool operator !=(ScalewayInstanceV1TaskStatus left, ScalewayInstanceV1TaskStatus right) => !left.Equals(right);

        public static explicit operator string(ScalewayInstanceV1TaskStatus value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1TaskStatus other && Equals(other);
        public bool Equals(ScalewayInstanceV1TaskStatus other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }
}
