func handleSpotITN()

in pkg/mock/spot/spot.go [74:105]


func handleSpotITN(res http.ResponseWriter, req *http.Request) {
	requestTime := time.Now().Unix()
	if c.MockTriggerTime != "" {
		triggerTime, _ := time.Parse(time.RFC3339, c.MockTriggerTime)
		delayRemaining := triggerTime.Unix() - requestTime
		if delayRemaining > 0 {
			log.Printf("MockTriggerTime %s was not reached yet. The spot itn will be available in %ds. Returning `notFoundResponse` for now", triggerTime, delayRemaining)
			server.ReturnNotFoundResponse(res)
			return
		}
	} else {
		delayInSeconds := c.MockDelayInSec
		delayRemaining := delayInSeconds - (requestTime - spotItnStartTime)
		if delayRemaining > 0 {
			log.Printf("Delaying the response by %ds as requested. The spot itn will be available in %ds. Returning `notFoundResponse` for now", delayInSeconds, delayRemaining)
			server.ReturnNotFoundResponse(res)
			return
		}
	}
	// default time to requestTime + 2min, unless overridden
	mockResponseTime := time.Now().UTC().Add(time.Minute * time.Duration(2)).Format(time.RFC3339)
	if c.SpotConfig.TerminationTime != "" {
		mockResponseTime = c.SpotConfig.TerminationTime
	}
	// return mock response after the delay or trigger time has elapsed
	switch req.URL.Path {
	case instanceActionPath:
		server.FormatAndReturnJSONResponse(res, getInstanceActionResponse(mockResponseTime))
	case terminationTimePath:
		server.FormatAndReturnTextResponse(res, mockResponseTime)
	}
}