diff --git a/rollouts/controllers/rollout_controller.go b/rollouts/controllers/rollout_controller.go index 1f38e4885f..6f2eb9be2c 100644 --- a/rollouts/controllers/rollout_controller.go +++ b/rollouts/controllers/rollout_controller.go @@ -207,7 +207,7 @@ func (r *RolloutReconciler) validateProgressiveRolloutStrategy(ctx context.Conte } clusterWaveMap := make(map[string]string) - for _, cluster := range allClusters.Items { + for _, cluster := range allClusters { clusterWaveMap[cluster.Name] = "" } @@ -224,11 +224,11 @@ func (r *RolloutReconciler) validateProgressiveRolloutStrategy(ctx context.Conte return err } - if len(waveClusters.Items) == 0 { + if len(waveClusters) == 0 { return fmt.Errorf("wave %q does not target any clusters", wave.Name) } - for _, cluster := range waveClusters.Items { + for _, cluster := range waveClusters { currentClusterWave, found := clusterWaveMap[cluster.Name] if !found { // this should never happen @@ -245,7 +245,7 @@ func (r *RolloutReconciler) validateProgressiveRolloutStrategy(ctx context.Conte pauseWaveNameFound = pauseWaveNameFound || pauseAfterWaveName == wave.Name } - for _, cluster := range allClusters.Items { + for _, cluster := range allClusters { wave, _ := clusterWaveMap[cluster.Name] if wave == "" { return fmt.Errorf("waves should cover all clusters selected by the rollout - cluster %s is not covered by any waves", cluster.Name) @@ -283,7 +283,7 @@ func (r *RolloutReconciler) reconcileRollout(ctx context.Context, rollout *gitop } logger.Info("discovered packages", "count", len(discoveredPackages), "packages", discoveredPackages) - packageClusterMatcherClient := packageclustermatcher.NewPackageClusterMatcher(targetClusters.Items, discoveredPackages) + packageClusterMatcherClient := packageclustermatcher.NewPackageClusterMatcher(targetClusters, discoveredPackages) clusterPackages, err := packageClusterMatcherClient.GetClusterPackages(rollout.Spec.PackageToTargetMatcher) if err != nil { return err @@ -442,7 +442,7 @@ func (r *RolloutReconciler) getWaveTargets(ctx context.Context, rollout *gitopsv return nil, err } - for _, cluster := range waveClusters.Items { + for _, cluster := range waveClusters { clusterNameToWaveTarget[cluster.Name] = &thisWaveTarget } @@ -624,7 +624,7 @@ type Targets struct { } type clusterPackagePair struct { - cluster *gkeclusterapis.ContainerCluster + cluster *clusterstore.Cluster packageRef *packagediscovery.DiscoveredPackage } diff --git a/rollouts/pkg/clusterstore/clusterstore.go b/rollouts/pkg/clusterstore/clusterstore.go index 2cb87de3c3..5f30d60dec 100644 --- a/rollouts/pkg/clusterstore/clusterstore.go +++ b/rollouts/pkg/clusterstore/clusterstore.go @@ -42,6 +42,11 @@ type ClusterStore struct { WorkloadIdentityHelper } +type Cluster struct { + Name string + Labels map[string]string +} + func (cs *ClusterStore) Init() error { if err := cs.WorkloadIdentityHelper.Init(cs.Config); err != nil { return err @@ -49,7 +54,7 @@ func (cs *ClusterStore) Init() error { return nil } -func (cs *ClusterStore) ListClusters(ctx context.Context, selectors ...*metav1.LabelSelector) (*gkeclusterapis.ContainerClusterList, error) { +func (cs *ClusterStore) ListClusters(ctx context.Context, selectors ...*metav1.LabelSelector) ([]Cluster, error) { gkeClusters, err := cs.listClusters(ctx, selectors[0]) if err != nil { return nil, err @@ -79,17 +84,14 @@ func (cs *ClusterStore) ListClusters(ctx context.Context, selectors ...*metav1.L return strings.Compare(gkeClusters.Items[i].Name, gkeClusters.Items[j].Name) == -1 }) - return gkeClusters, nil -} + clusters := []Cluster{} -func (cs *ClusterStore) PrintClusterInfos(ctx context.Context, clusters *gkeclusterapis.ContainerClusterList) { - logger := log.FromContext(ctx) - for _, gkeCluster := range clusters.Items { - logger.Info("gke clusters", "namespace", gkeCluster.Namespace, "name", gkeCluster.Name) - for _, cond := range gkeCluster.Status.Conditions { - logger.Info("gke cluster", "name", gkeCluster.Name, "condition", cond) - } + for _, containerCluster := range gkeClusters.Items { + cluster := toCluster(&containerCluster) + clusters = append(clusters, cluster) } + + return clusters, nil } func (cs *ClusterStore) getCluster(ctx context.Context, name string) (*gkeclusterapis.ContainerCluster, error) { @@ -199,3 +201,12 @@ func (cs *ClusterStore) getConfigConnectorContextTokenSource(ctx context.Context } return cs.WorkloadIdentityHelper.GetGcloudAccessTokenSource(ctx, kubeServiceAccount, googleServiceAccount) } + +func toCluster(containerCluster *gkeclusterapis.ContainerCluster) Cluster { + cluster := Cluster{ + Name: containerCluster.Name, + Labels: containerCluster.Labels, + } + + return cluster +} diff --git a/rollouts/pkg/packageclustermatcher/packageclustermatcher.go b/rollouts/pkg/packageclustermatcher/packageclustermatcher.go index 57a189707f..71d7302861 100644 --- a/rollouts/pkg/packageclustermatcher/packageclustermatcher.go +++ b/rollouts/pkg/packageclustermatcher/packageclustermatcher.go @@ -17,8 +17,8 @@ package packageclustermatcher import ( "fmt" - gkeclusterapis "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/container/v1beta1" gitopsv1alpha1 "github.com/GoogleContainerTools/kpt/rollouts/api/v1alpha1" + "github.com/GoogleContainerTools/kpt/rollouts/pkg/clusterstore" "github.com/GoogleContainerTools/kpt/rollouts/pkg/packagediscovery" "github.com/google/cel-go/cel" @@ -26,16 +26,16 @@ import ( ) type PackageClusterMatcher struct { - clusters []gkeclusterapis.ContainerCluster + clusters []clusterstore.Cluster packages []packagediscovery.DiscoveredPackage } type ClusterPackages struct { - Cluster gkeclusterapis.ContainerCluster + Cluster clusterstore.Cluster Packages []packagediscovery.DiscoveredPackage } -func NewPackageClusterMatcher(clusters []gkeclusterapis.ContainerCluster, packages []packagediscovery.DiscoveredPackage) *PackageClusterMatcher { +func NewPackageClusterMatcher(clusters []clusterstore.Cluster, packages []packagediscovery.DiscoveredPackage) *PackageClusterMatcher { return &PackageClusterMatcher{ clusters: clusters, packages: packages, @@ -56,8 +56,8 @@ func (m *PackageClusterMatcher) GetClusterPackages(matcher gitopsv1alpha1.Packag matchedPackages = packages case gitopsv1alpha1.CustomMatcher: celCluster := map[string]interface{}{ - "name": cluster.ObjectMeta.Name, - "labels": cluster.ObjectMeta.Labels, + "name": cluster.Name, + "labels": cluster.Labels, } for _, discoveredPackage := range packages {