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)
}
}