apis/v1alpha1/commons.go (39 lines of code) (raw):

/* Copyright 2025 The KubeFleet Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package v1alpha1 import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) type ClusterState string const ( ClusterStateJoin ClusterState = "Join" ClusterStateLeave ClusterState = "Leave" MemberClusterFinalizer = "work.fleet.azure.com/membercluster-finalizer" ) const ( MemberClusterKind = "MemberCluster" MemberClusterResource = "memberclusters" InternalMemberClusterKind = "InternalMemberCluster" ClusterResourcePlacementKind = "ClusterResourcePlacement" ClusterResourcePlacementResource = "clusterresourceplacements" ) // ResourceUsage contains the observed resource usage of a member cluster. type ResourceUsage struct { // Capacity represents the total resource capacity of all the nodes on a member cluster. // +optional Capacity v1.ResourceList `json:"capacity,omitempty"` // Allocatable represents the total resources of all the nodes on a member cluster that are available for scheduling. // +optional Allocatable v1.ResourceList `json:"allocatable,omitempty"` // When the resource usage is observed. // +optional ObservationTime metav1.Time `json:"observationTime,omitempty"` } // AgentType defines a type of agent/binary running in a member cluster. type AgentType string const ( // MemberAgent (core) handles member cluster joining/leaving as well as k8s object placement from hub to member clusters. MemberAgent AgentType = "MemberAgent" // MultiClusterServiceAgent (networking) is responsible for exposing multi-cluster services via L4 load // balancer. MultiClusterServiceAgent AgentType = "MultiClusterServiceAgent" // ServiceExportImportAgent (networking) is responsible for export or import services across multi-clusters. ServiceExportImportAgent AgentType = "ServiceExportImportAgent" ) // AgentStatus defines the observed status of the member agent of the given type. type AgentStatus struct { // Type of the member agent. // +required Type AgentType `json:"type"` // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type // Conditions is an array of current observed conditions for the member agent. // +optional Conditions []metav1.Condition `json:"conditions,omitempty"` // Last time we received a heartbeat from the member agent. // +optional LastReceivedHeartbeat metav1.Time `json:"lastReceivedHeartbeat,omitempty"` } // AgentConditionType identifies a specific condition on the Agent. type AgentConditionType string const ( // AgentJoined indicates the join condition of the given member agent. // Its condition status can be one of the following: // - "True" means the member agent has joined. // - "False" means the member agent has left. // - "Unknown" means the member agent is joining or leaving or in an unknown status. AgentJoined AgentConditionType = "Joined" // AgentHealthy indicates the health condition of the given member agent. // Its condition status can be one of the following: // - "True" means the member agent is healthy. // - "False" means the member agent is unhealthy. // - "Unknown" means the member agent has an unknown health status. AgentHealthy AgentConditionType = "Healthy" )