github.com/telepresenceio/telepresence/v2@v2.20.0-pro.6.0.20240517030216-236ea954e789/pkg/client/userd/trafficmgr/agents.go (about)

     1  package trafficmgr
     2  
     3  import (
     4  	"context"
     5  
     6  	k8sErrors "k8s.io/apimachinery/pkg/api/errors"
     7  	meta "k8s.io/apimachinery/pkg/apis/meta/v1"
     8  	"sigs.k8s.io/yaml"
     9  
    10  	"github.com/datawire/dlib/dlog"
    11  	"github.com/datawire/k8sapi/pkg/k8sapi"
    12  	"github.com/telepresenceio/telepresence/v2/pkg/agentconfig"
    13  	"github.com/telepresenceio/telepresence/v2/pkg/errcat"
    14  )
    15  
    16  func (s *session) getCurrentSidecarsInNamespace(ctx context.Context, ns string) map[string]*agentconfig.Sidecar {
    17  	// Load configmap entry from the telepresence-agents configmap
    18  	cm, err := k8sapi.GetK8sInterface(ctx).CoreV1().ConfigMaps(ns).Get(ctx, agentconfig.ConfigMap, meta.GetOptions{})
    19  	if err != nil {
    20  		if !k8sErrors.IsNotFound(err) {
    21  			dlog.Error(ctx, errcat.User.New(err))
    22  		}
    23  		return nil
    24  	}
    25  
    26  	if cm.Data == nil {
    27  		dlog.Debugf(ctx, "unable to read data in configmap %q", agentconfig.ConfigMap)
    28  	}
    29  
    30  	sidecars := make(map[string]*agentconfig.Sidecar, len(cm.Data))
    31  	for workload, sidecar := range cm.Data {
    32  		var cfg agentconfig.Sidecar
    33  		if err = yaml.Unmarshal([]byte(sidecar), &cfg); err != nil {
    34  			dlog.Errorf(ctx, "Unable to parse entry for %q in configmap %q: %v", workload, agentconfig.ConfigMap, err)
    35  			continue
    36  		}
    37  		sidecars[workload] = &cfg
    38  	}
    39  
    40  	return sidecars
    41  }