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 }