func deleteApp()

in images/controller/cmd/reservation_broker/reservation_broker.go [700:750]


func deleteApp(app broker.AppConfigSpec, appCtx *AppContext, user, username string) (int, string) {
	statusCode := http.StatusOK
	msg := "shutdown"

	// Lock the reservation table
	appCtx.Lock()

	// Remove the reservation from the table.
	defer delete(appCtx.ReservedPods, user)

	defer appCtx.Unlock()

	if bPod, ok := appCtx.ReservedPods[user]; ok {
		podName := bPod.Name
		// Remove instance label from the pod.
		// This is done so that subsequest GET requests don't return the terminating pod.
		cmd := exec.Command("sh", "-c", fmt.Sprintf("kubectl label pod -n %s %s app.kubernetes.io/instance- 1>&2", app.Name, podName))
		stdoutStderr, err := cmd.CombinedOutput()
		if err != nil {
			log.Printf("warning: failed to remove instance label from pod: %s: %s\n%v", podName, stdoutStderr, err)
		}

		// Delete the pod from K8S
		log.Printf("deleting pod for user %s: %s", user, podName)

		cmd = exec.Command("sh", "-c", fmt.Sprintf("kubectl delete pod -n %s %s --wait=false 1>&2", app.Name, podName))
		stdoutStderr, err = cmd.CombinedOutput()
		if err != nil {
			log.Printf("failed to delete pod for user %s: %s: %s\n%v", user, podName, stdoutStderr, err)
			statusCode = http.StatusInternalServerError
			msg = "error deleting app"
			return statusCode, msg
		}

		// Delete the per-user resources
		if len(bPod.UserObjects) > 0 {
			objectTypes := strings.Join(bPod.UserObjects, ",")
			fullName := fmt.Sprintf("%s-%s", app.Name, broker.MakePodID(user))
			cmdStr := fmt.Sprintf("kubectl delete %s -n %s -l \"app.kubernetes.io/instance=%s\" --wait=false", objectTypes, app.Name, fullName)
			cmd = exec.Command("sh", "-o", "pipefail", "-c", cmdStr)
			stdoutStderr, err = cmd.CombinedOutput()
			if err != nil {
				log.Printf("error deleting per-user resources for %s: %v\n%s", user, err, stdoutStderr)
				statusCode = http.StatusInternalServerError
				msg = "error deleting app"
				return statusCode, msg
			}
		}
	}
	return statusCode, msg
}