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

package models

// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command

import (
	"context"
	"encoding/json"

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

// HashicorpCloudConsulCloudManager20231010ClusterConfigSize Size corresponds to the size of the VM that a cluster is provisioned
// with.
// These sizes are represented as "t-shirt" sizes, with each corresponding to a specific
// instance type depending on the cloud provider.
//
// swagger:model hashicorp.cloud.consul_cloud_manager_20231010.ClusterConfig.Size
type HashicorpCloudConsulCloudManager20231010ClusterConfigSize string

func NewHashicorpCloudConsulCloudManager20231010ClusterConfigSize(value HashicorpCloudConsulCloudManager20231010ClusterConfigSize) *HashicorpCloudConsulCloudManager20231010ClusterConfigSize {
	return &value
}

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

const (

	// HashicorpCloudConsulCloudManager20231010ClusterConfigSizeUNSET captures enum value "UNSET"
	HashicorpCloudConsulCloudManager20231010ClusterConfigSizeUNSET HashicorpCloudConsulCloudManager20231010ClusterConfigSize = "UNSET"

	// HashicorpCloudConsulCloudManager20231010ClusterConfigSizeXSMALL captures enum value "X_SMALL"
	HashicorpCloudConsulCloudManager20231010ClusterConfigSizeXSMALL HashicorpCloudConsulCloudManager20231010ClusterConfigSize = "X_SMALL"

	// HashicorpCloudConsulCloudManager20231010ClusterConfigSizeSMALL captures enum value "SMALL"
	HashicorpCloudConsulCloudManager20231010ClusterConfigSizeSMALL HashicorpCloudConsulCloudManager20231010ClusterConfigSize = "SMALL"

	// HashicorpCloudConsulCloudManager20231010ClusterConfigSizeMEDIUM captures enum value "MEDIUM"
	HashicorpCloudConsulCloudManager20231010ClusterConfigSizeMEDIUM HashicorpCloudConsulCloudManager20231010ClusterConfigSize = "MEDIUM"

	// HashicorpCloudConsulCloudManager20231010ClusterConfigSizeLARGE captures enum value "LARGE"
	HashicorpCloudConsulCloudManager20231010ClusterConfigSizeLARGE HashicorpCloudConsulCloudManager20231010ClusterConfigSize = "LARGE"
)

// for schema
var hashicorpCloudConsulCloudManager20231010ClusterConfigSizeEnum []interface{}

func init() {
	var res []HashicorpCloudConsulCloudManager20231010ClusterConfigSize
	if err := json.Unmarshal([]byte(`["UNSET","X_SMALL","SMALL","MEDIUM","LARGE"]`), &res); err != nil {
		panic(err)
	}
	for _, v := range res {
		hashicorpCloudConsulCloudManager20231010ClusterConfigSizeEnum = append(hashicorpCloudConsulCloudManager20231010ClusterConfigSizeEnum, v)
	}
}

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

// Validate validates this hashicorp cloud consul cloud manager 20231010 cluster config size
func (m HashicorpCloudConsulCloudManager20231010ClusterConfigSize) Validate(formats strfmt.Registry) error {
	var res []error

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

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

// ContextValidate validates this hashicorp cloud consul cloud manager 20231010 cluster config size based on context it is used
func (m HashicorpCloudConsulCloudManager20231010ClusterConfigSize) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
	return nil
}
