func updatePodForUser()

in images/controller/cmd/reservation_broker/reservation_broker.go [514:552]


func updatePodForUser(app broker.AppConfigSpec, user, sessionKey, pod string, objectTypes []string) error {
	// Remove label from the pod that releases it from the K8S Deployment controller.
	cmd := exec.Command("sh", "-c", fmt.Sprintf("kubectl label pod -n %s %s app.kubernetes.io/managed-by=reservation-broker --overwrite=true 1>&2", app.Name, pod))
	stdoutStderr, err := cmd.CombinedOutput()
	if err != nil {
		return fmt.Errorf("%s\n%v", stdoutStderr, err)
	}

	// Add broker user annotation
	cmd = exec.Command("sh", "-c", fmt.Sprintf("kubectl annotate pod --overwrite=true -n %s %s 'app.broker/user=%s' 1>&2", app.Name, pod, user))
	stdoutStderr, err = cmd.CombinedOutput()
	if err != nil {
		return fmt.Errorf("%s\n%v", stdoutStderr, err)
	}

	// Add session key annotation
	cmd = exec.Command("sh", "-c", fmt.Sprintf("kubectl annotate pod --overwrite=true -n %s %s 'app.broker/session-key=%s' 1>&2", app.Name, pod, sessionKey))
	stdoutStderr, err = cmd.CombinedOutput()
	if err != nil {
		return fmt.Errorf("%s\n%v", stdoutStderr, err)
	}

	// Add annotation with found object types
	cmd = exec.Command("sh", "-c", fmt.Sprintf("kubectl annotate pod --overwrite=true -n %s %s 'app.broker/last-applied-object-types=%s' 1>&2", app.Name, pod, strings.Join(objectTypes, ",")))
	stdoutStderr, err = cmd.CombinedOutput()
	if err != nil {
		return fmt.Errorf("%s\n%v", stdoutStderr, err)
	}

	// Add label for instance ID
	instanceID := fmt.Sprintf("%s-%s", app.Name, broker.MakePodID(user))
	cmd = exec.Command("sh", "-c", fmt.Sprintf("kubectl label pod -n %s %s app.kubernetes.io/instance=%s --overwrite=true 1>&2", app.Name, pod, instanceID))
	stdoutStderr, err = cmd.CombinedOutput()
	if err != nil {
		return fmt.Errorf("%s\n%v", stdoutStderr, err)
	}

	return nil
}