Files
2024-08-13 22:28:17 +03:00

55 lines
2.4 KiB
Go

// SPDX-License-Identifier: AGPL-3.0-only
// Provenance-includes-location: https://github.com/kubernetes/kube-aggregator/blob/master/pkg/apis/apiregistration/v1/helper/helpers.go
// Provenance-includes-license: Apache-2.0
// Provenance-includes-copyright: The Kubernetes Authors.
package helper
import (
"strings"
v0alpha1 "github.com/grafana/grafana/pkg/aggregator/apis/aggregation/v0alpha1"
"k8s.io/apimachinery/pkg/runtime/schema"
)
// DataPlaneServiceNameToGroupVersion returns the GroupVersion for a given dataplaneServiceNam. The name
// must be valid, but any object you get back from an informer will be valid.
func DataPlaneServiceNameToGroupVersion(dataplaneServiceName string) schema.GroupVersion {
tokens := strings.SplitN(dataplaneServiceName, ".", 2)
return schema.GroupVersion{Group: tokens[1], Version: tokens[0]}
}
// SetDataPlaneServiceCondition sets the status condition. It either overwrites the existing one or
// creates a new one
func SetDataPlaneServiceCondition(dataplaneService *v0alpha1.DataPlaneService, newCondition v0alpha1.DataPlaneServiceCondition) {
existingCondition := GetDataPlaneServiceConditionByType(dataplaneService, newCondition.Type)
if existingCondition == nil {
dataplaneService.Status.Conditions = append(dataplaneService.Status.Conditions, newCondition)
return
}
if existingCondition.Status != newCondition.Status {
existingCondition.Status = newCondition.Status
existingCondition.LastTransitionTime = newCondition.LastTransitionTime
}
existingCondition.Reason = newCondition.Reason
existingCondition.Message = newCondition.Message
}
// IsDataPlaneServiceConditionTrue indicates if the condition is present and strictly true
func IsDataPlaneServiceConditionTrue(dataplaneService *v0alpha1.DataPlaneService, conditionType v0alpha1.DataPlaneServiceConditionType) bool {
condition := GetDataPlaneServiceConditionByType(dataplaneService, conditionType)
return condition != nil && condition.Status == v0alpha1.ConditionTrue
}
// GetDataPlaneServiceConditionByType gets an *DataPlaneServiceCondition by DataPlaneServiceConditionType if present
func GetDataPlaneServiceConditionByType(dataplaneService *v0alpha1.DataPlaneService, conditionType v0alpha1.DataPlaneServiceConditionType) *v0alpha1.DataPlaneServiceCondition {
for i := range dataplaneService.Status.Conditions {
if dataplaneService.Status.Conditions[i].Type == conditionType {
return &dataplaneService.Status.Conditions[i]
}
}
return nil
}