in controllers/stage/chain/remove_labels_from_codebase_docker_streams.go [22:61]
func (h RemoveLabelsFromCodebaseDockerStreamsAfterCdPipelineUpdate) ServeRequest(ctx context.Context, stage *cdPipeApi.Stage) error {
log := ctrl.LoggerFrom(ctx)
if stage.IsManualTriggerType() {
log.Info("Trigger type is not auto deploy, skipping")
return nil
}
log.Info("start deleting environment labels from codebase image stream resources.")
pipe, err := util.GetCdPipeline(h.client, stage)
if err != nil {
return fmt.Errorf("failed to get %v cd pipeline: %w", stage.Spec.CdPipeline, err)
}
annotations := pipe.GetAnnotations()[dockerStreamsBeforeUpdateAnnotationKey]
if annotations == "" {
log.Info("CodebaseImageStream doesn't contain %v annotation." +
" skip deleting env labels from CodebaseImageStream resources")
return nil
}
streams := strings.Split(annotations, ",")
for _, v := range streams {
stream, err := cluster.GetCodebaseImageStream(h.client, v, stage.Namespace)
if err != nil {
return fmt.Errorf("failed to get %v codebase image stream: %w", stream, err)
}
env := fmt.Sprintf("%v/%v", pipe.Name, stage.Spec.Name)
deleteLabel(&stream.ObjectMeta, env)
if err := h.client.Update(context.Background(), stream); err != nil {
return fmt.Errorf("failed to update %v codebase image stream: %w", stream, err)
}
}
log.Info("environment labels have been deleted from codebase image stream resources.")
return nil
}