99 lines
3.2 KiB
Go
99 lines
3.2 KiB
Go
/*
|
|
Copyright 2017 The go-marathon Authors All rights reserved.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package marathon
|
|
|
|
import "time"
|
|
|
|
// ReadinessCheck represents a readiness check.
|
|
type ReadinessCheck struct {
|
|
Name *string `json:"name,omitempty"`
|
|
Protocol string `json:"protocol,omitempty"`
|
|
Path string `json:"path,omitempty"`
|
|
PortName string `json:"portName,omitempty"`
|
|
IntervalSeconds int `json:"intervalSeconds,omitempty"`
|
|
TimeoutSeconds int `json:"timeoutSeconds,omitempty"`
|
|
HTTPStatusCodesForReady *[]int `json:"httpStatusCodesForReady,omitempty"`
|
|
PreserveLastResponse *bool `json:"preserveLastResponse,omitempty"`
|
|
}
|
|
|
|
// SetName sets the name on the readiness check.
|
|
func (rc *ReadinessCheck) SetName(name string) *ReadinessCheck {
|
|
rc.Name = &name
|
|
return rc
|
|
}
|
|
|
|
// SetProtocol sets the protocol on the readiness check.
|
|
func (rc *ReadinessCheck) SetProtocol(proto string) *ReadinessCheck {
|
|
rc.Protocol = proto
|
|
return rc
|
|
}
|
|
|
|
// SetPath sets the path on the readiness check.
|
|
func (rc *ReadinessCheck) SetPath(p string) *ReadinessCheck {
|
|
rc.Path = p
|
|
return rc
|
|
}
|
|
|
|
// SetPortName sets the port name on the readiness check.
|
|
func (rc *ReadinessCheck) SetPortName(name string) *ReadinessCheck {
|
|
rc.PortName = name
|
|
return rc
|
|
}
|
|
|
|
// SetInterval sets the interval on the readiness check.
|
|
func (rc *ReadinessCheck) SetInterval(interval time.Duration) *ReadinessCheck {
|
|
secs := int(interval.Seconds())
|
|
rc.IntervalSeconds = secs
|
|
return rc
|
|
}
|
|
|
|
// SetTimeout sets the timeout on the readiness check.
|
|
func (rc *ReadinessCheck) SetTimeout(timeout time.Duration) *ReadinessCheck {
|
|
secs := int(timeout.Seconds())
|
|
rc.TimeoutSeconds = secs
|
|
return rc
|
|
}
|
|
|
|
// SetHTTPStatusCodesForReady sets the HTTP status codes for ready on the
|
|
// readiness check.
|
|
func (rc *ReadinessCheck) SetHTTPStatusCodesForReady(codes []int) *ReadinessCheck {
|
|
rc.HTTPStatusCodesForReady = &codes
|
|
return rc
|
|
}
|
|
|
|
// SetPreserveLastResponse sets the preserve last response flag on the
|
|
// readiness check.
|
|
func (rc *ReadinessCheck) SetPreserveLastResponse(preserve bool) *ReadinessCheck {
|
|
rc.PreserveLastResponse = &preserve
|
|
return rc
|
|
}
|
|
|
|
// ReadinessLastResponse holds the result of the last response embedded in a
|
|
// readiness check result.
|
|
type ReadinessLastResponse struct {
|
|
Body string `json:"body"`
|
|
ContentType string `json:"contentType"`
|
|
Status int `json:"status"`
|
|
}
|
|
|
|
// ReadinessCheckResult is the result of a readiness check.
|
|
type ReadinessCheckResult struct {
|
|
Name string `json:"name"`
|
|
TaskID string `json:"taskId"`
|
|
Ready bool `json:"ready"`
|
|
LastResponse ReadinessLastResponse `json:"lastResponse,omitempty"`
|
|
}
|