// Code generated by go-swagger; DO NOT EDIT.

// Copyright Authors of Cilium
// SPDX-License-Identifier: Apache-2.0

package models

import (
	"context"
	"encoding/json"

	"github.com/go-openapi/errors"
	"github.com/go-openapi/strfmt"
	"github.com/go-openapi/validate"
)

// EndpointState State of endpoint
//
// swagger:model EndpointState
type EndpointState string

func NewEndpointState(value EndpointState) *EndpointState {
	return &value
}

// Pointer returns a pointer to a freshly-allocated EndpointState.
func (m EndpointState) Pointer() *EndpointState {
	return &m
}

const (

	// EndpointStateWaitingDashForDashIdentity captures enum value "waiting-for-identity"
	EndpointStateWaitingDashForDashIdentity EndpointState = "waiting-for-identity"

	// EndpointStateNotDashReady captures enum value "not-ready"
	EndpointStateNotDashReady EndpointState = "not-ready"

	// EndpointStateWaitingDashToDashRegenerate captures enum value "waiting-to-regenerate"
	EndpointStateWaitingDashToDashRegenerate EndpointState = "waiting-to-regenerate"

	// EndpointStateRegenerating captures enum value "regenerating"
	EndpointStateRegenerating EndpointState = "regenerating"

	// EndpointStateRestoring captures enum value "restoring"
	EndpointStateRestoring EndpointState = "restoring"

	// EndpointStateReady captures enum value "ready"
	EndpointStateReady EndpointState = "ready"

	// EndpointStateDisconnecting captures enum value "disconnecting"
	EndpointStateDisconnecting EndpointState = "disconnecting"

	// EndpointStateDisconnected captures enum value "disconnected"
	EndpointStateDisconnected EndpointState = "disconnected"

	// EndpointStateInvalid captures enum value "invalid"
	EndpointStateInvalid EndpointState = "invalid"
)

// for schema
var endpointStateEnum []any

func init() {
	var res []EndpointState
	if err := json.Unmarshal([]byte(`["waiting-for-identity","not-ready","waiting-to-regenerate","regenerating","restoring","ready","disconnecting","disconnected","invalid"]`), &res); err != nil {
		panic(err)
	}
	for _, v := range res {
		endpointStateEnum = append(endpointStateEnum, v)
	}
}

func (m EndpointState) validateEndpointStateEnum(path, location string, value EndpointState) error {
	if err := validate.EnumCase(path, location, value, endpointStateEnum, true); err != nil {
		return err
	}
	return nil
}

// Validate validates this endpoint state
func (m EndpointState) Validate(formats strfmt.Registry) error {
	var res []error

	// value enum
	if err := m.validateEndpointStateEnum("", "body", m); err != nil {
		return err
	}

	if len(res) > 0 {
		return errors.CompositeValidationError(res...)
	}
	return nil
}

// ContextValidate validates this endpoint state based on context it is used
func (m EndpointState) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
	return nil
}
