in network/gitlab.go [348:403]
func (n *GitLabClient) VerifyRunner(runner common.RunnerCredentials, systemID string) *common.VerifyRunnerResponse {
request := common.VerifyRunnerRequest{
Token: runner.Token,
SystemID: systemID,
}
var response common.VerifyRunnerResponse
result, statusText, resp := n.doJSON(
context.Background(),
&runner,
http.MethodPost,
"runners/verify",
http.StatusOK,
RunnerTokenHeader(runner.Token),
&request,
&response,
)
if result == -1 {
// if server is not able to return JSON, let's try plain text (the legacy response format)
result, statusText, resp = n.doJSON(
context.Background(),
&runner,
http.MethodPost,
"runners/verify",
http.StatusOK,
RunnerTokenHeader(runner.Token),
&request,
nil,
)
}
defer func() { n.handleResponse(context.TODO(), resp, false) }()
switch result {
case http.StatusOK:
// this is expected due to fact that we ask for non-existing job
if TokenIsCreatedRunnerToken(runner.Token) {
runner.Log().Println("Verifying runner...", "is valid")
} else {
runner.Log().Println("Verifying runner...", "is alive")
}
return &response
case http.StatusForbidden:
if TokenIsCreatedRunnerToken(runner.Token) {
runner.Log().Println("Verifying runner...", "is not valid")
} else {
runner.Log().WithField("status", statusText).Errorln("Verifying runner...", "is removed")
}
return nil
case clientError:
runner.Log().WithField("status", statusText).Errorln("Verifying runner...", "client error")
return &response
default:
runner.Log().WithField("status", statusText).Errorln("Verifying runner...", "failed")
return &response
}
}