Skip to content

Commit

Permalink
Add cluster status api
Browse files Browse the repository at this point in the history
Signed-off-by: Tamal Saha <[email protected]>
  • Loading branch information
tamalsaha committed Oct 5, 2023
1 parent 441747e commit d7fc99b
Show file tree
Hide file tree
Showing 10 changed files with 433 additions and 14 deletions.
79 changes: 79 additions & 0 deletions apis/meta/v1alpha1/clusterstatus_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
Copyright AppsCode Inc. and Contributors.
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 (
kmapi "kmodules.xyz/client-go/api/v1"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

const (
ResourceKindClusterStatus = "ClusterStatus"
ResourceClusterStatus = "clusterstatus"
ResourceClusterStatuses = "clusterstatuses"
)

// ClusterStatus is the Schema for any resource supported by resource-metrics library

// +genclient
// +genclient:nonNamespaced
// +genclient:onlyVerbs=create
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ClusterStatus struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// +optional
Response *ClusterStatusResponse `json:"response,omitempty"`
}

type ClusterStatusResponse struct {
// Phase represents current status of the cluster
// +optional
Phase ClusterPhase `json:"phase,omitempty"`
// Reason explains the reason behind the cluster current phase
// +optional
Reason ClusterPhaseReason `json:"reason,omitempty"`
// Message specifies additional information regarding the possible actions for the user
// +optional
Message string `json:"message,omitempty"`
// +optional
ClusterManagers []string `json:"clusterManagers,omitempty"`
// ClusterAPI contains capi cluster information if the cluster is created by cluster-api
// +optional
ClusterAPI *kmapi.CAPIClusterInfo `json:"clusterAPI,omitempty"`
}

type ClusterPhase string

const (
ClusterPhaseActive ClusterPhase = "Active"
ClusterPhaseInactive ClusterPhase = "Inactive"
ClusterPhaseNotReady ClusterPhase = "NotReady"
ClusterPhaseNotConnected ClusterPhase = "NotConnected"
ClusterPhaseRegistered ClusterPhase = "Registered"
ClusterPhaseNotImported ClusterPhase = "NotImported"
)

type ClusterPhaseReason string

const (
ClusterNotFound ClusterPhaseReason = "ClusterNotFound"
AuthIssue ClusterPhaseReason = "AuthIssue"
MissingComponent ClusterPhaseReason = "MissingComponent"
ReasonUnknown ClusterPhaseReason = "Unknown"
)
96 changes: 96 additions & 0 deletions apis/meta/v1alpha1/openapi_generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions apis/meta/v1alpha1/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ func Resource(resource string) schema.GroupResource {
func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&ChartPresetQuery{},
&ClusterStatus{},
&ResourceCalculator{},
&ResourceDescriptor{},
&ResourceDescriptorList{},
Expand Down
85 changes: 71 additions & 14 deletions apis/meta/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit d7fc99b

Please sign in to comment.