package config import ( "context" "github.com/gin-gonic/gin" "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" corev1 "k8s.io/api/core/v1" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/config" cmApi "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1" api "edge-infra.dev/pkg/edge/device-registrar/api/v1alpha1" iamApi "edge-infra.dev/pkg/edge/iam/api/v1alpha1" ienApi "edge-infra.dev/pkg/sds/ien/k8s/apis/v1" ) const Namespace = "device-registrar-clients" const BootstrapHost = "edge-bootstrap.store.ncr.corp" const Host = "store.ncr.corp" var BootstrapURL = "https://" + BootstrapHost + "/bootstrap" var ConnectURL = "https://" + BootstrapHost + "/connect" var VIP = "" var StoreID = "" func GetClientandContext(c *gin.Context) (client.Client, context.Context, context.CancelFunc) { var k8sClient client.Client var err error // use mock client when testing if gin.Mode() != gin.TestMode { cfg := config.GetConfigOrDie() k8sClient, err = client.New(cfg, client.Options{}) if err != nil { panic(err) } } else { k8sClient = c.MustGet("k8sClient").(client.Client) } ctx, cancel := context.WithCancel(context.Background()) return k8sClient, ctx, cancel } func GetVIP(ctx context.Context, k8sClient client.Client) (string, error) { if VIP == "" { ieNodeList := &ienApi.IENodeList{} err := k8sClient.List(ctx, ieNodeList) if err != nil { return "", err } if len(ieNodeList.Items) == 0 { return "", errors.NewBadRequest("no IENodes found") } VIP = ieNodeList.Items[0].Spec.NetworkServices.KubeVip } return VIP, nil } func GetStoreID(ctx context.Context, k8sClient client.Client) (string, error) { if StoreID == "" { edgeInfo := &corev1.ConfigMap{} if err := k8sClient.Get(ctx, types.NamespacedName{ Name: "edge-info", Namespace: "kube-public", }, edgeInfo); err != nil { return "", err } StoreID = edgeInfo.Data["cluster.edge.id"] } return StoreID, nil } func AddToScheme(scheme *runtime.Scheme) { if err := api.AddToScheme(scheme); err != nil { panic(err) } if err := iamApi.AddToScheme(scheme); err != nil { panic(err) } if err := ienApi.AddToScheme(scheme); err != nil { panic(err) } if err := cmApi.AddToScheme(scheme); err != nil { panic(err) } }