get.porter.sh/porter@v1.3.0/pkg/cnab/provider/credentials.go (about)

     1  package cnabprovider
     2  
     3  import (
     4  	"context"
     5  
     6  	"get.porter.sh/porter/pkg/cnab"
     7  	"get.porter.sh/porter/pkg/storage"
     8  	"get.porter.sh/porter/pkg/tracing"
     9  )
    10  
    11  func (r *Runtime) loadCredentials(ctx context.Context, b cnab.ExtendedBundle, run *storage.Run) error {
    12  	ctx, span := tracing.StartSpan(ctx)
    13  	defer span.EndSpan()
    14  
    15  	resolvedCredentials, err := r.credentials.ResolveAll(ctx, run.Credentials, run.Credentials.Keys())
    16  	if err != nil {
    17  		return span.Error(err)
    18  	}
    19  
    20  	for i, cred := range run.Credentials.Credentials {
    21  		if resolvedValue, ok := resolvedCredentials[cred.Name]; ok {
    22  			run.Credentials.Credentials[i].ResolvedValue = resolvedValue
    23  		}
    24  	}
    25  
    26  	err = run.Credentials.ValidateBundle(b.Credentials, run.Action)
    27  	if err != nil {
    28  		return span.Error(err)
    29  	}
    30  
    31  	err = run.SetCredentialsDigest()
    32  	if err != nil {
    33  		// Just warn since the digest isn't critical for running the bundle
    34  		// If it's not set properly, we will recalculate as needed
    35  		span.Warnf("WARNING: unable to set the run's credentials digest: %w", err)
    36  	}
    37  
    38  	return nil
    39  }