...
1 package config
2
3 import (
4 "context"
5
6 "github.com/gin-gonic/gin"
7 "k8s.io/apimachinery/pkg/api/errors"
8 "k8s.io/apimachinery/pkg/runtime"
9 "k8s.io/apimachinery/pkg/types"
10
11 corev1 "k8s.io/api/core/v1"
12 "sigs.k8s.io/controller-runtime/pkg/client"
13 "sigs.k8s.io/controller-runtime/pkg/client/config"
14
15 cmApi "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
16
17 api "edge-infra.dev/pkg/edge/device-registrar/api/v1alpha1"
18 iamApi "edge-infra.dev/pkg/edge/iam/api/v1alpha1"
19 ienApi "edge-infra.dev/pkg/sds/ien/k8s/apis/v1"
20 )
21
22 const Namespace = "device-registrar-clients"
23
24 const BootstrapHost = "edge-bootstrap.store.ncr.corp"
25 const Host = "store.ncr.corp"
26
27 var BootstrapURL = "https://" + BootstrapHost + "/bootstrap"
28 var ConnectURL = "https://" + BootstrapHost + "/connect"
29 var VIP = ""
30 var StoreID = ""
31
32 func GetClientandContext(c *gin.Context) (client.Client, context.Context, context.CancelFunc) {
33 var k8sClient client.Client
34 var err error
35
36
37 if gin.Mode() != gin.TestMode {
38 cfg := config.GetConfigOrDie()
39 k8sClient, err = client.New(cfg, client.Options{})
40 if err != nil {
41 panic(err)
42 }
43 } else {
44 k8sClient = c.MustGet("k8sClient").(client.Client)
45 }
46
47 ctx, cancel := context.WithCancel(context.Background())
48 return k8sClient, ctx, cancel
49 }
50
51 func GetVIP(ctx context.Context, k8sClient client.Client) (string, error) {
52 if VIP == "" {
53 ieNodeList := &ienApi.IENodeList{}
54 err := k8sClient.List(ctx, ieNodeList)
55 if err != nil {
56 return "", err
57 }
58 if len(ieNodeList.Items) == 0 {
59 return "", errors.NewBadRequest("no IENodes found")
60 }
61 VIP = ieNodeList.Items[0].Spec.NetworkServices.KubeVip
62 }
63
64 return VIP, nil
65 }
66
67 func GetStoreID(ctx context.Context, k8sClient client.Client) (string, error) {
68 if StoreID == "" {
69 edgeInfo := &corev1.ConfigMap{}
70 if err := k8sClient.Get(ctx, types.NamespacedName{
71 Name: "edge-info",
72 Namespace: "kube-public",
73 }, edgeInfo); err != nil {
74 return "", err
75 }
76 StoreID = edgeInfo.Data["cluster.edge.id"]
77 }
78 return StoreID, nil
79 }
80
81 func AddToScheme(scheme *runtime.Scheme) {
82 if err := api.AddToScheme(scheme); err != nil {
83 panic(err)
84 }
85 if err := iamApi.AddToScheme(scheme); err != nil {
86 panic(err)
87 }
88 if err := ienApi.AddToScheme(scheme); err != nil {
89 panic(err)
90 }
91 if err := cmApi.AddToScheme(scheme); err != nil {
92 panic(err)
93 }
94 }
95
View as plain text