in pkg/gcp/gcp-kubeconfig.go [492:541]
func AllClusters(ctx context.Context, kr *mesh.KRun, configProjectId string,
label string, meshID string) ([]*Cluster, error) {
clustersL := []*Cluster{}
if configProjectId == "" {
configProjectId = kr.ProjectId
}
opts := []option.ClientOption{}
if configProjectId != kr.ProjectId {
opts = append(opts, option.WithQuotaProject(configProjectId))
}
cl, err := container.NewClusterManagerClient(ctx,opts...)
if err != nil {
return nil, err
}
if configProjectId == "" {
configProjectId = kr.ProjectId
}
clcr := &containerpb.ListClustersRequest{
Parent: "projects/" + configProjectId + "/locations/-",
}
clusters, err := cl.ListClusters(ctx, clcr)
if err != nil {
return nil, err
}
for _, c := range clusters.Clusters {
if label != "" { // Filtered by label - if the filter is specified, ignore non-labeled clusters
if meshID == "" { // If a value for label was specified, used it for filtering
if c.ResourceLabels[label] == "" {
continue
}
} else {
if c.ResourceLabels[label] != meshID {
continue
}
}
}
clustersL = append(clustersL, &Cluster{
ProjectId: configProjectId,
ClusterName: c.Name,
ClusterLocation: c.Location,
GKECluster: c,
KubeConfig: addClusterConfig(c, configProjectId, c.Location, c.Name),
})
}
return clustersL, nil
}