mirror of https://github.com/knative/pkg.git
126 lines
4.2 KiB
Go
126 lines
4.2 KiB
Go
/*
|
|
Copyright 2019 The Knative Authors
|
|
|
|
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 apis
|
|
|
|
import (
|
|
corev1 "k8s.io/api/core/v1"
|
|
)
|
|
|
|
// Conditions is the schema for the conditions portion of the payload
|
|
type Conditions []Condition
|
|
|
|
// ConditionType is a camel-cased condition type.
|
|
type ConditionType string
|
|
|
|
const (
|
|
// ConditionReady specifies that the resource is ready.
|
|
// For long-running resources.
|
|
ConditionReady ConditionType = "Ready"
|
|
// ConditionSucceeded specifies that the resource has finished.
|
|
// For resource which run to completion.
|
|
ConditionSucceeded ConditionType = "Succeeded"
|
|
)
|
|
|
|
// ConditionSeverity expresses the severity of a Condition Type failing.
|
|
type ConditionSeverity string
|
|
|
|
const (
|
|
// ConditionSeverityError specifies that a failure of a condition type
|
|
// should be viewed as an error. As "Error" is the default for conditions
|
|
// we use the empty string (coupled with omitempty) to avoid confusion in
|
|
// the case where the condition is in state "True" (aka nothing is wrong).
|
|
ConditionSeverityError ConditionSeverity = ""
|
|
// ConditionSeverityWarning specifies that a failure of a condition type
|
|
// should be viewed as a warning, but that things could still work.
|
|
ConditionSeverityWarning ConditionSeverity = "Warning"
|
|
// ConditionSeverityInfo specifies that a failure of a condition type
|
|
// should be viewed as purely informational, and that things could still work.
|
|
ConditionSeverityInfo ConditionSeverity = "Info"
|
|
)
|
|
|
|
// Condition defines a readiness condition for a Knative resource.
|
|
// See: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties
|
|
// +k8s:deepcopy-gen=true
|
|
type Condition struct {
|
|
// Type of condition.
|
|
// +required
|
|
Type ConditionType `json:"type" description:"type of status condition"`
|
|
|
|
// Status of the condition, one of True, False, Unknown.
|
|
// +required
|
|
Status corev1.ConditionStatus `json:"status" description:"status of the condition, one of True, False, Unknown"`
|
|
|
|
// Severity with which to treat failures of this type of condition.
|
|
// When this is not specified, it defaults to Error.
|
|
// +optional
|
|
Severity ConditionSeverity `json:"severity,omitempty" description:"how to interpret failures of this condition, one of Error, Warning, Info"`
|
|
|
|
// LastTransitionTime is the last time the condition transitioned from one status to another.
|
|
// We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic
|
|
// differences (all other things held constant).
|
|
// +optional
|
|
LastTransitionTime VolatileTime `json:"lastTransitionTime,omitempty" description:"last time the condition transit from one status to another"`
|
|
|
|
// The reason for the condition's last transition.
|
|
// +optional
|
|
Reason string `json:"reason,omitempty" description:"one-word CamelCase reason for the condition's last transition"`
|
|
|
|
// A human readable message indicating details about the transition.
|
|
// +optional
|
|
Message string `json:"message,omitempty" description:"human-readable message indicating details about last transition"`
|
|
}
|
|
|
|
// IsTrue is true if the condition is True
|
|
func (c *Condition) IsTrue() bool {
|
|
if c == nil {
|
|
return false
|
|
}
|
|
return c.Status == corev1.ConditionTrue
|
|
}
|
|
|
|
// IsFalse is true if the condition is False
|
|
func (c *Condition) IsFalse() bool {
|
|
if c == nil {
|
|
return false
|
|
}
|
|
return c.Status == corev1.ConditionFalse
|
|
}
|
|
|
|
// IsUnknown is true if the condition is Unknown
|
|
func (c *Condition) IsUnknown() bool {
|
|
if c == nil {
|
|
return true
|
|
}
|
|
return c.Status == corev1.ConditionUnknown
|
|
}
|
|
|
|
// GetReason returns a nil save string of Reason
|
|
func (c *Condition) GetReason() string {
|
|
if c == nil {
|
|
return ""
|
|
}
|
|
return c.Reason
|
|
}
|
|
|
|
// GetMessage returns a nil save string of Message
|
|
func (c *Condition) GetMessage() string {
|
|
if c == nil {
|
|
return ""
|
|
}
|
|
return c.Message
|
|
}
|