get.porter.sh/porter@v1.3.0/pkg/cnab/provider/parameters.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  // loadParameters resolves the prepared parameter set associated with the Run, and
    12  // updates Run.Parameters with the resolved values.
    13  func (r *Runtime) loadParameters(ctx context.Context, b cnab.ExtendedBundle, run *storage.Run) error {
    14  	ctx, span := tracing.StartSpan(ctx)
    15  	defer span.EndSpan()
    16  
    17  	resolvedParameters, err := r.parameters.ResolveAll(ctx, run.Parameters, run.Parameters.Keys())
    18  	if err != nil {
    19  		return err
    20  	}
    21  
    22  	// Apply the resolved values back onto the run, these won't be persisted but are used in-memory
    23  	for i, param := range run.Parameters.Parameters {
    24  		run.Parameters.Parameters[i].ResolvedValue = resolvedParameters[param.Name]
    25  	}
    26  
    27  	if err = run.Parameters.ValidateBundle(b.Parameters, run.Action); err != nil {
    28  		return span.Error(err)
    29  	}
    30  
    31  	if err = run.SetParametersDigest(); err != nil {
    32  		// Just warn since the digest isn't critical for running the bundle
    33  		// If it's not set properly, we will recalculate as needed
    34  		span.Warnf("WARNING: unable to set the run's parameters digest: %w", err)
    35  	}
    36  
    37  	return nil
    38  }