package v1alpha1 import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "edge-infra.dev/pkg/edge/api/graph/model" clusterConstant "edge-infra.dev/pkg/edge/constants/api/cluster" "edge-infra.dev/pkg/edge/constants/api/fleet" ) const ( // ClusterKind is the kind for the cluster k8s resource. ClusterKind = "Cluster" // ClusterNS is the namespace for the cluster k8s resource. ClusterNS = "clusters" ) func OwnerReference(cluster *Cluster) []v1.OwnerReference { return []v1.OwnerReference{ *v1.NewControllerRef(cluster, GroupVersion.WithKind(ClusterGVK.Kind)), } } // NewCluster returns a new cluster k8s resource. func NewCluster(name, projectID, organization, _fleet, _type, location, nodeVersion, machineType, clusterEdgeID string, numNodes int, banner *model.Banner) *Cluster { clusterName := clusterEdgeID return &Cluster{ TypeMeta: v1.TypeMeta{ Kind: ClusterKind, APIVersion: GroupVersion.String(), }, ObjectMeta: v1.ObjectMeta{ Name: clusterName, }, Spec: ClusterSpec{ Name: name, ProjectID: projectID, Banner: banner.Name, BannerEdgeID: banner.BannerEdgeID, Organization: organization, Fleet: fleet.Type(_fleet), Type: clusterConstant.Type(_type), Location: location, NodeVersion: nodeVersion, NumNode: numNodes, MachineType: machineType, }, } } func (c *Cluster) AddAutoscaling(autoscale bool, minNodes, maxNodes int) { c.Spec.Autoscale = autoscale c.Spec.MaxNodes = maxNodes c.Spec.MinNodes = minNodes }