Files
netbird-kubernetes-operator/internal/netbirdutil/group.go
T

50 lines
1.3 KiB
Go
Raw Normal View History

2026-04-23 08:55:49 +02:00
package netbirdutil
import (
"context"
"fmt"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"sigs.k8s.io/controller-runtime/pkg/client"
2026-04-30 13:39:11 +02:00
netbird "github.com/netbirdio/netbird/shared/management/client/rest"
2026-04-23 08:55:49 +02:00
nbv1alpha1 "github.com/netbirdio/kubernetes-operator/api/v1alpha1"
)
2026-04-23 13:12:09 +02:00
func GetGroupIDs(ctx context.Context, k8sClient client.Client, nbClient *netbird.Client, refs []nbv1alpha1.GroupReference, namespace string) ([]string, error) {
2026-04-23 08:55:49 +02:00
groupIDs := []string{}
for _, ref := range refs {
switch {
2026-04-23 13:12:09 +02:00
case ref.Name != nil:
group, err := nbClient.Groups.GetByName(ctx, *ref.Name)
2026-04-23 08:55:49 +02:00
if err != nil {
return nil, err
}
2026-04-23 13:12:09 +02:00
groupIDs = append(groupIDs, group.Id)
case ref.ID != nil:
group, err := nbClient.Groups.Get(ctx, *ref.ID)
if err != nil {
return nil, err
}
groupIDs = append(groupIDs, group.Id)
2026-04-23 08:55:49 +02:00
case ref.LocalRef != nil:
group := nbv1alpha1.Group{
ObjectMeta: metav1.ObjectMeta{
Name: ref.LocalRef.Name,
Namespace: namespace,
},
}
err := k8sClient.Get(ctx, client.ObjectKeyFromObject(&group), &group)
if err != nil {
return nil, err
}
if group.Status.GroupID == "" {
return nil, fmt.Errorf("group %s in groups list is not ready", group.Name)
}
groupIDs = append(groupIDs, group.Status.GroupID)
}
}
return groupIDs, nil
}