func getAppStatus()

in images/controller/cmd/reservation_broker/reservation_broker.go [557:586]


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

	instanceID := fmt.Sprintf("%s-%s", app.Name, broker.MakePodID(user))
	selector := fmt.Sprintf("app.kubernetes.io/instance=%s", instanceID)
	status, err := broker.GetPodStatus(app.Name, selector)
	if err != nil {
		log.Printf("failed to get pod status for selector: %s: %v", selector, err)
		statusCode = http.StatusInternalServerError
		msg = "error fetching status"
		return statusCode, msg
	}

	msg = status.Status

	if status.Status == "waiting" {
		statusCode = http.StatusCreated
	}

	if status.Status == "ready" {
		statusCode = http.StatusOK
		cookieName := fmt.Sprintf("broker_%s", app.Name)
		cookieValue := broker.MakeCookieValue(user, appCtx.CookieSecret)
		appPath := fmt.Sprintf("/%s/", app.Name)
		broker.SetCookie(w, cookieName, cookieValue, appPath, maxCookieAgeSeconds)
	}

	return statusCode, msg
}