Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 1 addition & 6 deletions pkg/apis/autoscaling/v1alpha1/metric_lifecycle.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ package v1alpha1
import (
"k8s.io/apimachinery/pkg/runtime/schema"
"knative.dev/pkg/apis"
duckv1 "knative.dev/pkg/apis/duck/v1"
)

const (
Expand Down Expand Up @@ -65,9 +64,5 @@ func (ms *MetricStatus) MarkMetricFailed(reason, message string) {
// IsReady looks at the conditions and if the condition MetricConditionReady
// is true
func (ms *MetricStatus) IsReady() bool {
return condSet.Manage(ms.duck()).IsHappy()
}

func (ms *MetricStatus) duck() *duckv1.Status {
return (*duckv1.Status)(&ms.Status)
return condSet.Manage(ms).IsHappy()
}
10 changes: 5 additions & 5 deletions pkg/apis/autoscaling/v1alpha1/metric_lifecycle_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"knative.dev/pkg/apis"
"knative.dev/pkg/apis/duck"
duckv1 "knative.dev/pkg/apis/duck/v1"
apitestv1 "knative.dev/pkg/apis/testing/v1"
apistest "knative.dev/pkg/apis/testing"
"knative.dev/serving/pkg/apis/autoscaling"
)

Expand Down Expand Up @@ -140,26 +140,26 @@ func TestMetricGetSetCondition(t *testing.T) {
func TestTypicalFlowWithMetricCondition(t *testing.T) {
m := &MetricStatus{}
m.InitializeConditions()
apitestv1.CheckConditionOngoing(m.duck(), MetricConditionReady, t)
apistest.CheckConditionOngoing(m, MetricConditionReady, t)

const (
wantReason = "reason"
wantMessage = "the error message"
)
m.MarkMetricFailed(wantReason, wantMessage)
apitestv1.CheckConditionFailed(m.duck(), MetricConditionReady, t)
apistest.CheckConditionFailed(m, MetricConditionReady, t)
if got := m.GetCondition(MetricConditionReady); got == nil || got.Reason != wantReason || got.Message != wantMessage {
t.Errorf("MarkMetricFailed = %v, wantReason %v, wantMessage %v", got, wantReason, wantMessage)
}

m.MarkMetricNotReady(wantReason, wantMessage)
apitestv1.CheckConditionOngoing(m.duck(), MetricConditionReady, t)
apistest.CheckConditionOngoing(m, MetricConditionReady, t)
if got := m.GetCondition(MetricConditionReady); got == nil || got.Reason != wantReason || got.Message != wantMessage {
t.Errorf("MarkMetricNotReady = %v, wantReason %v, wantMessage %v", got, wantReason, wantMessage)
}

m.MarkMetricReady()
apitestv1.CheckConditionSucceeded(m.duck(), MetricConditionReady, t)
apistest.CheckConditionSucceeded(m, MetricConditionReady, t)
}

func TestMetricGetGroupVersionKind(t *testing.T) {
Expand Down
17 changes: 6 additions & 11 deletions pkg/apis/autoscaling/v1alpha1/pa_lifecycle.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"

"knative.dev/pkg/apis"
duckv1 "knative.dev/pkg/apis/duck/v1"
"knative.dev/serving/pkg/apis/autoscaling"
)

Expand Down Expand Up @@ -133,7 +132,7 @@ func (pa *PodAutoscaler) PanicThresholdPercentage() (percentage float64, ok bool
// IsReady looks at the conditions and if the Status has a condition
// PodAutoscalerConditionReady returns true if ConditionStatus is True
func (pas *PodAutoscalerStatus) IsReady() bool {
return podCondSet.Manage(pas.duck()).IsHappy()
return podCondSet.Manage(pas).IsHappy()
}

// IsActivating returns true if the pod autoscaler is Activating if it is neither
Expand All @@ -151,27 +150,27 @@ func (pas *PodAutoscalerStatus) IsInactive() bool {

// GetCondition gets the condition `t`.
func (pas *PodAutoscalerStatus) GetCondition(t apis.ConditionType) *apis.Condition {
return podCondSet.Manage(pas.duck()).GetCondition(t)
return podCondSet.Manage(pas).GetCondition(t)
}

// InitializeConditions initializes the conditionhs of the PA.
func (pas *PodAutoscalerStatus) InitializeConditions() {
podCondSet.Manage(pas.duck()).InitializeConditions()
podCondSet.Manage(pas).InitializeConditions()
}

// MarkActive marks the PA active.
func (pas *PodAutoscalerStatus) MarkActive() {
podCondSet.Manage(pas.duck()).MarkTrue(PodAutoscalerConditionActive)
podCondSet.Manage(pas).MarkTrue(PodAutoscalerConditionActive)
}

// MarkActivating marks the PA as activating.
func (pas *PodAutoscalerStatus) MarkActivating(reason, message string) {
podCondSet.Manage(pas.duck()).MarkUnknown(PodAutoscalerConditionActive, reason, message)
podCondSet.Manage(pas).MarkUnknown(PodAutoscalerConditionActive, reason, message)
}

// MarkInactive marks the PA as inactive.
func (pas *PodAutoscalerStatus) MarkInactive(reason, message string) {
podCondSet.Manage(pas.duck()).MarkFalse(PodAutoscalerConditionActive, reason, message)
podCondSet.Manage(pas).MarkFalse(PodAutoscalerConditionActive, reason, message)
}

// MarkResourceNotOwned changes the "Active" condition to false to reflect that the
Expand Down Expand Up @@ -216,10 +215,6 @@ func (pas *PodAutoscalerStatus) inStatusFor(status corev1.ConditionStatus, now t
return now.Sub(cond.LastTransitionTime.Inner.Add(dur))
}

func (pas *PodAutoscalerStatus) duck() *duckv1.Status {
return (*duckv1.Status)(&pas.Status)
}

// GetDesiredScale returns the desired scale if ever set, or -1.
func (pas *PodAutoscalerStatus) GetDesiredScale() int32 {
if pas.DesiredScale != nil {
Expand Down
28 changes: 14 additions & 14 deletions pkg/apis/autoscaling/v1alpha1/pa_lifecycle_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (
"knative.dev/pkg/apis"
"knative.dev/pkg/apis/duck"
duckv1 "knative.dev/pkg/apis/duck/v1"
apitestv1 "knative.dev/pkg/apis/testing/v1"
apistest "knative.dev/pkg/apis/testing"
"knative.dev/pkg/ptr"
"knative.dev/serving/pkg/apis/autoscaling"
)
Expand Down Expand Up @@ -606,7 +606,7 @@ func TestMarkResourceNotOwned(t *testing.T) {
func TestMarkResourceFailedCreation(t *testing.T) {
pa := &PodAutoscalerStatus{}
pa.MarkResourceFailedCreation("doesn't", "matter")
apitestv1.CheckConditionFailed(pa.duck(), PodAutoscalerConditionActive, t)
apistest.CheckConditionFailed(pa, PodAutoscalerConditionActive, t)

active := pa.GetCondition("Active")
if active.Status != corev1.ConditionFalse {
Expand Down Expand Up @@ -868,38 +868,38 @@ func pa(annotations map[string]string) *PodAutoscaler {
func TestTypicalFlow(t *testing.T) {
r := &PodAutoscalerStatus{}
r.InitializeConditions()
apitestv1.CheckConditionOngoing(r.duck(), PodAutoscalerConditionActive, t)
apitestv1.CheckConditionOngoing(r.duck(), PodAutoscalerConditionReady, t)
apistest.CheckConditionOngoing(r, PodAutoscalerConditionActive, t)
apistest.CheckConditionOngoing(r, PodAutoscalerConditionReady, t)

// When we see traffic, mark ourselves active.
r.MarkActive()
apitestv1.CheckConditionSucceeded(r.duck(), PodAutoscalerConditionActive, t)
apitestv1.CheckConditionSucceeded(r.duck(), PodAutoscalerConditionReady, t)
apistest.CheckConditionSucceeded(r, PodAutoscalerConditionActive, t)
apistest.CheckConditionSucceeded(r, PodAutoscalerConditionReady, t)

// Check idempotency.
r.MarkActive()
apitestv1.CheckConditionSucceeded(r.duck(), PodAutoscalerConditionActive, t)
apitestv1.CheckConditionSucceeded(r.duck(), PodAutoscalerConditionReady, t)
apistest.CheckConditionSucceeded(r, PodAutoscalerConditionActive, t)
apistest.CheckConditionSucceeded(r, PodAutoscalerConditionReady, t)

// When we stop seeing traffic, mark outselves inactive.
r.MarkInactive("TheReason", "the message")
apitestv1.CheckConditionFailed(r.duck(), PodAutoscalerConditionActive, t)
apistest.CheckConditionFailed(r, PodAutoscalerConditionActive, t)
if !r.IsInactive() {
t.Error("IsInactive was not set.")
}
apitestv1.CheckConditionFailed(r.duck(), PodAutoscalerConditionReady, t)
apistest.CheckConditionFailed(r, PodAutoscalerConditionReady, t)

// When traffic hits the activator and we scale up the deployment we mark
// ourselves as activating.
r.MarkActivating("Activating", "Red team, GO!")
apitestv1.CheckConditionOngoing(r.duck(), PodAutoscalerConditionActive, t)
apitestv1.CheckConditionOngoing(r.duck(), PodAutoscalerConditionReady, t)
apistest.CheckConditionOngoing(r, PodAutoscalerConditionActive, t)
apistest.CheckConditionOngoing(r, PodAutoscalerConditionReady, t)

// When the activator successfully forwards traffic to the deployment,
// we mark ourselves as active once more.
r.MarkActive()
apitestv1.CheckConditionSucceeded(r.duck(), PodAutoscalerConditionActive, t)
apitestv1.CheckConditionSucceeded(r.duck(), PodAutoscalerConditionReady, t)
apistest.CheckConditionSucceeded(r, PodAutoscalerConditionActive, t)
apistest.CheckConditionSucceeded(r, PodAutoscalerConditionReady, t)
}

func TestTargetBC(t *testing.T) {
Expand Down
5 changes: 0 additions & 5 deletions pkg/apis/networking/v1alpha1/certificate_lifecycle.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import (

"k8s.io/apimachinery/pkg/runtime/schema"
"knative.dev/pkg/apis"
duckv1 "knative.dev/pkg/apis/duck/v1"
)

// InitializeConditions initializes the certificate conditions.
Expand Down Expand Up @@ -74,7 +73,3 @@ var certificateCondSet = apis.NewLivingConditionSet(CertificateConditionReady)
func (c *Certificate) GetGroupVersionKind() schema.GroupVersionKind {
return SchemeGroupVersion.WithKind("Certificate")
}

func (cs *CertificateStatus) duck() *duckv1.Status {
return &cs.Status
}
14 changes: 7 additions & 7 deletions pkg/apis/networking/v1alpha1/certificate_lifecycle_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import (
"knative.dev/pkg/apis"
"knative.dev/pkg/apis/duck"
duckv1 "knative.dev/pkg/apis/duck/v1"
apitestv1 "knative.dev/pkg/apis/testing/v1"
apistest "knative.dev/pkg/apis/testing"
)

func TestCertificateDuckTypes(t *testing.T) {
Expand Down Expand Up @@ -56,7 +56,7 @@ func TestCertificateGetGroupVersionKind(t *testing.T) {
func TestMarkReady(t *testing.T) {
c := &CertificateStatus{}
c.InitializeConditions()
apitestv1.CheckConditionOngoing(c.duck(), CertificateConditionReady, t)
apistest.CheckConditionOngoing(c, CertificateConditionReady, t)

c.MarkReady()
if !c.IsReady() {
Expand All @@ -67,26 +67,26 @@ func TestMarkReady(t *testing.T) {
func TestMarkNotReady(t *testing.T) {
c := &CertificateStatus{}
c.InitializeConditions()
apitestv1.CheckCondition(c.duck(), CertificateConditionReady, corev1.ConditionUnknown)
apistest.CheckCondition(c, CertificateConditionReady, corev1.ConditionUnknown)

c.MarkNotReady("unknow", "unknown")
apitestv1.CheckCondition(c.duck(), CertificateConditionReady, corev1.ConditionUnknown)
apistest.CheckCondition(c, CertificateConditionReady, corev1.ConditionUnknown)
}

func TestMarkFailed(t *testing.T) {
c := &CertificateStatus{}
c.InitializeConditions()
apitestv1.CheckCondition(c.duck(), CertificateConditionReady, corev1.ConditionUnknown)
apistest.CheckCondition(c, CertificateConditionReady, corev1.ConditionUnknown)

c.MarkFailed("failed", "failed")
apitestv1.CheckConditionFailed(c.duck(), CertificateConditionReady, t)
apistest.CheckConditionFailed(c, CertificateConditionReady, t)
}

func TestMarkResourceNotOwned(t *testing.T) {
c := &CertificateStatus{}
c.InitializeConditions()
c.MarkResourceNotOwned("doesn't", "own")
apitestv1.CheckConditionFailed(c.duck(), CertificateConditionReady, t)
apistest.CheckConditionFailed(c, CertificateConditionReady, t)
}

func TestGetCondition(t *testing.T) {
Expand Down
5 changes: 0 additions & 5 deletions pkg/apis/networking/v1alpha1/ingress_lifecycle.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import (

"k8s.io/apimachinery/pkg/runtime/schema"
"knative.dev/pkg/apis"
duckv1 "knative.dev/pkg/apis/duck/v1"
)

var ingressCondSet = apis.NewLivingConditionSet(
Expand Down Expand Up @@ -93,7 +92,3 @@ func (is *IngressStatus) MarkIngressNotReady(reason, message string) {
func (is *IngressStatus) IsReady() bool {
return ingressCondSet.Manage(is).IsHappy()
}

func (is *IngressStatus) duck() *duckv1.Status {
return &is.Status
}
26 changes: 13 additions & 13 deletions pkg/apis/networking/v1alpha1/ingress_lifecycle_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import (
"knative.dev/pkg/apis"
"knative.dev/pkg/apis/duck"
duckv1 "knative.dev/pkg/apis/duck/v1"
apitestv1 "knative.dev/pkg/apis/testing/v1"
apistest "knative.dev/pkg/apis/testing"
)

func TestIngressDuckTypes(t *testing.T) {
Expand Down Expand Up @@ -75,48 +75,48 @@ func TestIngressTypicalFlow(t *testing.T) {
r := &IngressStatus{}
r.InitializeConditions()

apitestv1.CheckConditionOngoing(r.duck(), IngressConditionReady, t)
apistest.CheckConditionOngoing(r, IngressConditionReady, t)

// Then network is configured.
r.MarkNetworkConfigured()
apitestv1.CheckConditionSucceeded(r.duck(), IngressConditionNetworkConfigured, t)
apitestv1.CheckConditionOngoing(r.duck(), IngressConditionReady, t)
apistest.CheckConditionSucceeded(r, IngressConditionNetworkConfigured, t)
apistest.CheckConditionOngoing(r, IngressConditionReady, t)

// Then ingress is pending.
r.MarkLoadBalancerNotReady()
apitestv1.CheckConditionOngoing(r.duck(), IngressConditionLoadBalancerReady, t)
apitestv1.CheckConditionOngoing(r.duck(), IngressConditionReady, t)
apistest.CheckConditionOngoing(r, IngressConditionLoadBalancerReady, t)
apistest.CheckConditionOngoing(r, IngressConditionReady, t)

r.MarkLoadBalancerFailed("some reason", "some message")
apitestv1.CheckConditionFailed(r.duck(), IngressConditionLoadBalancerReady, t)
apitestv1.CheckConditionFailed(r.duck(), IngressConditionLoadBalancerReady, t)
apistest.CheckConditionFailed(r, IngressConditionLoadBalancerReady, t)
apistest.CheckConditionFailed(r, IngressConditionLoadBalancerReady, t)

// Then ingress has address.
r.MarkLoadBalancerReady(
[]LoadBalancerIngressStatus{{DomainInternal: "gateway.default.svc"}},
[]LoadBalancerIngressStatus{{DomainInternal: "gateway.default.svc"}},
[]LoadBalancerIngressStatus{{DomainInternal: "private.gateway.default.svc"}},
)
apitestv1.CheckConditionSucceeded(r.duck(), IngressConditionLoadBalancerReady, t)
apitestv1.CheckConditionSucceeded(r.duck(), IngressConditionReady, t)
apistest.CheckConditionSucceeded(r, IngressConditionLoadBalancerReady, t)
apistest.CheckConditionSucceeded(r, IngressConditionReady, t)
if !r.IsReady() {
t.Fatal("IsReady()=false, wanted true")
}

// Mark not owned.
r.MarkResourceNotOwned("i own", "you")
apitestv1.CheckConditionFailed(r.duck(), IngressConditionReady, t)
apistest.CheckConditionFailed(r, IngressConditionReady, t)

// Mark network configured, and check that ingress is ready again
r.MarkNetworkConfigured()
apitestv1.CheckConditionSucceeded(r.duck(), IngressConditionReady, t)
apistest.CheckConditionSucceeded(r, IngressConditionReady, t)
if !r.IsReady() {
t.Fatal("IsReady()=false, wanted true")
}

// Mark ingress not ready
r.MarkIngressNotReady("", "")
apitestv1.CheckConditionOngoing(r.duck(), IngressConditionReady, t)
apistest.CheckConditionOngoing(r, IngressConditionReady, t)
}

func TestIngressGetCondition(t *testing.T) {
Expand Down
5 changes: 0 additions & 5 deletions pkg/apis/networking/v1alpha1/serverlessservice_lifecycle.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"

"knative.dev/pkg/apis"
duckv1 "knative.dev/pkg/apis/duck/v1"
)

var serverlessServiceCondSet = apis.NewLivingConditionSet(
Expand Down Expand Up @@ -91,10 +90,6 @@ func (sss *ServerlessServiceStatus) IsReady() bool {
return serverlessServiceCondSet.Manage(sss).IsHappy()
}

func (sss *ServerlessServiceStatus) duck() *duckv1.Status {
return &sss.Status
}

// ProxyFor returns how long it has been since Activator was moved
// to the request path.
func (sss *ServerlessServiceStatus) ProxyFor() time.Duration {
Expand Down
Loading