github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/controllers/core/dockerimage/status.go (about)

     1  package dockerimage
     2  
     3  import (
     4  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     5  
     6  	"github.com/tilt-dev/tilt/internal/container"
     7  	"github.com/tilt-dev/tilt/pkg/apis"
     8  	"github.com/tilt-dev/tilt/pkg/apis/core/v1alpha1"
     9  	"github.com/tilt-dev/tilt/pkg/model"
    10  )
    11  
    12  // Return a basic Building Status.
    13  func ToBuildingStatus(iTarget model.ImageTarget, startTime metav1.MicroTime) v1alpha1.DockerImageStatus {
    14  	return v1alpha1.DockerImageStatus{
    15  		Building: &v1alpha1.DockerImageStateBuilding{
    16  			StartedAt: startTime,
    17  		},
    18  	}
    19  }
    20  
    21  // Return a completed status when the image build failed.
    22  func ToCompletedFailStatus(iTarget model.ImageTarget, startTime metav1.MicroTime,
    23  	stages []v1alpha1.DockerImageStageStatus, err error) v1alpha1.DockerImageStatus {
    24  	finishTime := apis.NowMicro()
    25  
    26  	// Complete all stages.
    27  	for i, stage := range stages {
    28  		if stage.StartedAt != nil && stage.FinishedAt == nil {
    29  			stage.FinishedAt = &finishTime
    30  			stage.Error = err.Error()
    31  		}
    32  		stages[i] = stage
    33  	}
    34  
    35  	return v1alpha1.DockerImageStatus{
    36  		Completed: &v1alpha1.DockerImageStateCompleted{
    37  			StartedAt:  startTime,
    38  			FinishedAt: finishTime,
    39  			Error:      err.Error(),
    40  		},
    41  		StageStatuses: stages,
    42  	}
    43  }
    44  
    45  // Return a completed status when the image build succeeded.
    46  func ToCompletedSuccessStatus(iTarget model.ImageTarget, startTime metav1.MicroTime,
    47  	stages []v1alpha1.DockerImageStageStatus, refs container.TaggedRefs) v1alpha1.DockerImageStatus {
    48  	finishTime := apis.NowMicro()
    49  
    50  	// Complete all stages.
    51  	for i, stage := range stages {
    52  		if stage.StartedAt != nil && stage.FinishedAt == nil {
    53  			stage.FinishedAt = &finishTime
    54  		}
    55  		stages[i] = stage
    56  	}
    57  
    58  	return v1alpha1.DockerImageStatus{
    59  		Ref: container.FamiliarString(refs.LocalRef),
    60  		Completed: &v1alpha1.DockerImageStateCompleted{
    61  			StartedAt:  startTime,
    62  			FinishedAt: finishTime,
    63  		},
    64  		StageStatuses: stages,
    65  	}
    66  }