github.com/grahambrereton-form3/tilt@v0.10.18/internal/k8s/target.go (about)

     1  package k8s
     2  
     3  import (
     4  	"k8s.io/apimachinery/pkg/labels"
     5  
     6  	"github.com/pkg/errors"
     7  
     8  	"github.com/windmilleng/tilt/pkg/model"
     9  )
    10  
    11  func NewTarget(
    12  	name model.TargetName,
    13  	entities []K8sEntity,
    14  	portForwards []model.PortForward,
    15  	extraPodSelectors []labels.Selector,
    16  	dependencyIDs []model.TargetID,
    17  	refInjectCounts map[string]int) (model.K8sTarget, error) {
    18  	sorted := SortedEntities(entities)
    19  	yaml, err := SerializeSpecYAML(sorted)
    20  	if err != nil {
    21  		return model.K8sTarget{}, err
    22  	}
    23  
    24  	// Use a min component count of 2 for computing names,
    25  	// so that the resource type appears
    26  	displayNames := UniqueNames(sorted, 2)
    27  
    28  	return model.K8sTarget{
    29  		Name:              name,
    30  		YAML:              yaml,
    31  		PortForwards:      portForwards,
    32  		ExtraPodSelectors: extraPodSelectors,
    33  		DisplayNames:      displayNames,
    34  	}.WithDependencyIDs(dependencyIDs).WithRefInjectCounts(refInjectCounts), nil
    35  }
    36  
    37  func NewK8sOnlyManifest(name model.ManifestName, entities []K8sEntity) (model.Manifest, error) {
    38  	kTarget, err := NewTarget(name.TargetName(), entities, nil, nil, nil, nil)
    39  	if err != nil {
    40  		return model.Manifest{}, err
    41  	}
    42  	return model.Manifest{Name: name}.WithDeployTarget(kTarget), nil
    43  }
    44  
    45  func NewK8sOnlyManifestFromYAML(yaml string) (model.Manifest, error) {
    46  	entities, err := ParseYAMLFromString(yaml)
    47  	if err != nil {
    48  		return model.Manifest{}, errors.Wrap(err, "NewK8sOnlyManifestFromYAML")
    49  	}
    50  
    51  	manifest, err := NewK8sOnlyManifest(model.UnresourcedYAMLManifestName, entities)
    52  	if err != nil {
    53  		return model.Manifest{}, errors.Wrap(err, "NewK8sOnlyManifestFromYAML")
    54  	}
    55  	return manifest, nil
    56  }