From e5a4b771ee2d9682bc95c07e29a3bacd3400a6a3 Mon Sep 17 00:00:00 2001 From: Rokibul Hasan Date: Tue, 29 Oct 2024 09:06:40 +0600 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=20Fix=20`klusterlet-info`=20comman?= =?UTF-8?q?d=20and=20update=20`hub-info`=20output.=20(#453)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix `klusterlet-info` command and update `hub-info` output. Signed-off-by: Rokibul Hasan * Handle Default mode of klusterlet Signed-off-by: Rokibul Hasan * Print addon-manager info Signed-off-by: Rokibul Hasan * Fix panic issue Signed-off-by: Rokibul Hasan * Handle addon-manager case Signed-off-by: Rokibul Hasan --------- Signed-off-by: Rokibul Hasan --- pkg/cmd/get/hubinfo/exec.go | 22 ++++++++++++++++++++++ pkg/cmd/get/klusterletinfo/exec.go | 24 ++++++++++++++++++------ pkg/helpers/check/check.go | 10 +++++++++- 3 files changed, 49 insertions(+), 7 deletions(-) diff --git a/pkg/cmd/get/hubinfo/exec.go b/pkg/cmd/get/hubinfo/exec.go index 860aa9442..c35db4b60 100644 --- a/pkg/cmd/get/hubinfo/exec.go +++ b/pkg/cmd/get/hubinfo/exec.go @@ -4,6 +4,8 @@ package hubinfo import ( "context" "fmt" + "open-cluster-management.io/api/feature" + "open-cluster-management.io/clusteradm/pkg/helpers/check" "github.com/spf13/cobra" "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" @@ -59,8 +61,10 @@ const ( componentNameRegistrationController = "cluster-manager-registration-controller" componentNameRegistrationWebhook = "cluster-manager-registration-webhook" + componentNameWorkController = "cluster-manager-work-controller" componentNameWorkWebhook = "cluster-manager-work-webhook" componentNamePlacementController = "cluster-manager-placement-controller" + componentNameAddOnManagerController = "cluster-manager-addon-manager-controller" ) func (o *Options) run() error { @@ -114,6 +118,10 @@ func (o *Options) printComponents() error { } o.printer.Write(printer.LEVEL_0, "Components:\n") + + if err := o.printAddOnManager(cmgr); err != nil { + return err + } if err := o.printRegistration(cmgr); err != nil { return err } @@ -141,6 +149,12 @@ func (o *Options) printRegistration(cmgr *v1.ClusterManager) error { func (o *Options) printWork(cmgr *v1.ClusterManager) error { o.printer.Write(printer.LEVEL_1, "Work:\n") + if cmgr.Spec.WorkConfiguration != nil && check.IsFeatureEnabled(cmgr.Spec.WorkConfiguration.FeatureGates, string(feature.ManifestWorkReplicaSet)) { + err := printer.PrintComponentsDeploy(o.printer, o.kubeClient, cmgr.Status.RelatedResources, componentNameWorkController) + if err != nil { + return err + } + } return printer.PrintComponentsDeploy(o.printer, o.kubeClient, cmgr.Status.RelatedResources, componentNameWorkWebhook) } @@ -149,6 +163,14 @@ func (o *Options) printPlacement(cmgr *v1.ClusterManager) error { return printer.PrintComponentsDeploy(o.printer, o.kubeClient, cmgr.Status.RelatedResources, componentNamePlacementController) } +func (o *Options) printAddOnManager(cmgr *v1.ClusterManager) error { + if cmgr.Spec.AddOnManagerConfiguration != nil && !check.IsFeatureEnabled(cmgr.Spec.AddOnManagerConfiguration.FeatureGates, string(feature.AddonManagement)) { + return nil + } + o.printer.Write(printer.LEVEL_1, "AddOn Manager:\n") + return printer.PrintComponentsDeploy(o.printer, o.kubeClient, cmgr.Status.RelatedResources, componentNameAddOnManagerController) +} + func (o *Options) printComponentsCRD(cmgr *v1.ClusterManager) error { o.printer.Write(printer.LEVEL_1, "CustomResourceDefinition:\n") return printer.PrintComponentsCRD(o.printer, o.crdClient, cmgr.Status.RelatedResources) diff --git a/pkg/cmd/get/klusterletinfo/exec.go b/pkg/cmd/get/klusterletinfo/exec.go index a09c785ae..24244c505 100644 --- a/pkg/cmd/get/klusterletinfo/exec.go +++ b/pkg/cmd/get/klusterletinfo/exec.go @@ -59,6 +59,7 @@ const ( componentNameRegistrationAgent = "klusterlet-registration-agent" componentNameWorkAgent = "klusterlet-work-agent" + componentNameKlusterletAgent = "klusterlet-agent" ) func (o *Options) run() error { @@ -136,14 +137,20 @@ func (o *Options) printRegistrationOperator() error { } func (o *Options) printComponents(klet *v1.Klusterlet) error { - o.printer.Write(printer.LEVEL_0, "Components:\n") - if err := o.printRegistration(klet); err != nil { - return err - } - if err := o.printWork(klet); err != nil { - return err + mode := klet.Spec.DeployOption.Mode + if mode == v1.InstallModeSingleton || mode == v1.InstallModeSingletonHosted { + if err := o.printAgent(klet); err != nil { + return err + } + } else { + if err := o.printRegistration(klet); err != nil { + return err + } + if err := o.printWork(klet); err != nil { + return err + } } if err := o.printComponentsCRD(klet); err != nil { return err @@ -161,6 +168,11 @@ func (o *Options) printWork(klet *v1.Klusterlet) error { return printer.PrintComponentsDeploy(o.printer, o.kubeClient, klet.Status.RelatedResources, componentNameWorkAgent) } +func (o *Options) printAgent(klet *v1.Klusterlet) error { + o.printer.Write(printer.LEVEL_1, "Controller:\n") + return printer.PrintComponentsDeploy(o.printer, o.kubeClient, klet.Status.RelatedResources, componentNameKlusterletAgent) +} + func (o *Options) printComponentsCRD(klet *v1.Klusterlet) error { o.printer.Write(printer.LEVEL_1, "CustomResourceDefinition:\n") return printer.PrintComponentsCRD(o.printer, o.crdClient, klet.Status.RelatedResources) diff --git a/pkg/helpers/check/check.go b/pkg/helpers/check/check.go index 42e20c69e..d241999ac 100644 --- a/pkg/helpers/check/check.go +++ b/pkg/helpers/check/check.go @@ -3,7 +3,6 @@ package check import ( "fmt" - "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" clusterclient "open-cluster-management.io/api/client/cluster/clientset/versioned" @@ -79,3 +78,12 @@ func findResource(list *metav1.APIResourceList, resourceName string) bool { } return false } + +func IsFeatureEnabled(featureGates []operatorv1.FeatureGate, feature string) bool { + for _, fg := range featureGates { + if fg.Feature == feature && fg.Mode == operatorv1.FeatureGateModeTypeEnable { + return true + } + } + return false +}