...

Source file src/edge-infra.dev/pkg/edge/device-registrar/config/config.go

Documentation: edge-infra.dev/pkg/edge/device-registrar/config

     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  	// use mock client when testing
    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