github.com/grahambrereton-form3/tilt@v0.10.18/internal/synclet/sidecar/inject.go (about)

     1  package sidecar
     2  
     3  import (
     4  	v1 "k8s.io/api/core/v1"
     5  
     6  	"github.com/windmilleng/tilt/internal/container"
     7  	"github.com/windmilleng/tilt/internal/k8s"
     8  )
     9  
    10  // Inject the synclet into any Pod
    11  func InjectSyncletSidecar(entity k8s.K8sEntity, selector container.RefSelector, container SyncletContainer) (k8s.K8sEntity, bool, error) {
    12  	entity = entity.DeepCopy()
    13  
    14  	pods, err := k8s.ExtractPods(&entity)
    15  	if err != nil {
    16  		return k8s.K8sEntity{}, false, err
    17  	}
    18  
    19  	replaced := false
    20  	for _, pod := range pods {
    21  		ok, err := k8s.PodContainsRef(*pod, selector)
    22  		if err != nil {
    23  			return k8s.K8sEntity{}, false, err
    24  		}
    25  
    26  		if !ok {
    27  			continue
    28  		}
    29  
    30  		replaced = true
    31  		vol := SyncletVolume.DeepCopy()
    32  		pod.Volumes = append(pod.Volumes, *vol)
    33  
    34  		container := (*v1.Container)(container).DeepCopy()
    35  		pod.Containers = append(pod.Containers, *container)
    36  	}
    37  	return entity, replaced, nil
    38  }