...

Source file src/github.com/datawire/ambassador/v2/cmd/entrypoint/snapshot.go

Documentation: github.com/datawire/ambassador/v2/cmd/entrypoint

     1  package entrypoint
     2  
     3  import (
     4  	"context"
     5  	"encoding/json"
     6  	"fmt"
     7  
     8  	amb "github.com/datawire/ambassador/v2/pkg/api/getambassador.io/v3alpha1"
     9  	"github.com/datawire/ambassador/v2/pkg/kates"
    10  	snapshotTypes "github.com/datawire/ambassador/v2/pkg/snapshot/v1"
    11  	"github.com/datawire/dlib/dlog"
    12  )
    13  
    14  // NewKubernetesSnapshot creates a new, empty set of Ambassador inputs.
    15  func NewKubernetesSnapshot() *snapshotTypes.KubernetesSnapshot {
    16  	a := &snapshotTypes.KubernetesSnapshot{}
    17  	a.FSSecrets = make(map[snapshotTypes.SecretRef]*kates.Secret)
    18  
    19  	return a
    20  }
    21  
    22  // GetAmbID extracts the AmbassadorID from the kubernetes resource.
    23  func GetAmbID(ctx context.Context, resource kates.Object) amb.AmbassadorID {
    24  	switch r := resource.(type) {
    25  	case *amb.Host:
    26  		var id amb.AmbassadorID
    27  		if r.Spec != nil {
    28  			if len(r.Spec.AmbassadorID) > 0 {
    29  				id = r.Spec.AmbassadorID
    30  			}
    31  		}
    32  		return id
    33  
    34  	case *amb.Mapping:
    35  		return r.Spec.AmbassadorID
    36  	case *amb.TCPMapping:
    37  		return r.Spec.AmbassadorID
    38  	case *amb.Module:
    39  		return r.Spec.AmbassadorID
    40  	case *amb.TLSContext:
    41  		return r.Spec.AmbassadorID
    42  	case *amb.AuthService:
    43  		return r.Spec.AmbassadorID
    44  	case *amb.RateLimitService:
    45  		return r.Spec.AmbassadorID
    46  	case *amb.LogService:
    47  		return r.Spec.AmbassadorID
    48  	case *amb.TracingService:
    49  		return r.Spec.AmbassadorID
    50  	case *amb.DevPortal:
    51  		return r.Spec.AmbassadorID
    52  	case *amb.ConsulResolver:
    53  		return r.Spec.AmbassadorID
    54  	case *amb.KubernetesEndpointResolver:
    55  		return r.Spec.AmbassadorID
    56  	case *amb.KubernetesServiceResolver:
    57  		return r.Spec.AmbassadorID
    58  	}
    59  
    60  	ann := resource.GetAnnotations()
    61  	idstr, ok := ann["getambassador.io/ambassador-id"]
    62  	if ok {
    63  		var id amb.AmbassadorID
    64  		err := json.Unmarshal([]byte(idstr), &id)
    65  		if err != nil {
    66  			dlog.Errorf(ctx, "%s: error parsing ambassador-id '%s'", location(resource), idstr)
    67  		} else {
    68  			return id
    69  		}
    70  	}
    71  
    72  	return amb.AmbassadorID{}
    73  }
    74  
    75  func location(obj kates.Object) string {
    76  	return fmt.Sprintf("%s %s in namespace %s", obj.GetObjectKind().GroupVersionKind().Kind, obj.GetName(),
    77  		obj.GetNamespace())
    78  }
    79  

View as plain text