/*
 * Pipeline API
 *
 * Pipeline is a feature rich application platform, built for containers on top of Kubernetes to automate the DevOps experience, continuous application development and the lifecycle of deployments. 
 *
 * API version: latest
 * Contact: info@banzaicloud.com
 * Generated by: OpenAPI Generator (https://openapi-generator.tech)
 */

package pipeline

type GetClusterStatusResponse struct {

	Status string `json:"status,omitempty"`

	StatusMessage string `json:"statusMessage,omitempty"`

	Name string `json:"name,omitempty"`

	Cloud string `json:"cloud,omitempty"`

	Distribution string `json:"distribution,omitempty"`

	Version string `json:"version,omitempty"`

	Spot bool `json:"spot,omitempty"`

	Location string `json:"location,omitempty"`

	Id int32 `json:"id,omitempty"`

	Logging bool `json:"logging,omitempty"`

	Monitoring bool `json:"monitoring,omitempty"`

	Securityscan bool `json:"securityscan,omitempty"`

	CreatedAt string `json:"createdAt,omitempty"`

	StartedAt string `json:"startedAt,omitempty"`

	CreatorName string `json:"creatorName,omitempty"`

	CreatorId int32 `json:"creatorId,omitempty"`

	Region string `json:"region,omitempty"`

	Oidc OidcConfig `json:"oidc,omitempty"`

	NodePools map[string]NodePoolStatus `json:"nodePools,omitempty"`

	TotalSummary ResourceSummary `json:"totalSummary,omitempty"`
}

// AssertGetClusterStatusResponseRequired checks if the required fields are not zero-ed
func AssertGetClusterStatusResponseRequired(obj GetClusterStatusResponse) error {
	if err := AssertOidcConfigRequired(obj.Oidc); err != nil {
		return err
	}
	if err := AssertResourceSummaryRequired(obj.TotalSummary); err != nil {
		return err
	}
	return nil
}

// AssertRecurseGetClusterStatusResponseRequired recursively checks if required fields are not zero-ed in a nested slice.
// Accepts only nested slice of GetClusterStatusResponse (e.g. [][]GetClusterStatusResponse), otherwise ErrTypeAssertionError is thrown.
func AssertRecurseGetClusterStatusResponseRequired(objSlice interface{}) error {
	return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error {
		aGetClusterStatusResponse, ok := obj.(GetClusterStatusResponse)
		if !ok {
			return ErrTypeAssertionError
		}
		return AssertGetClusterStatusResponseRequired(aGetClusterStatusResponse)
	})
}
