diff --git a/cmd/webhook/main.go b/cmd/webhook/main.go index 1fcb0b5c2016..a4dca48534e0 100644 --- a/cmd/webhook/main.go +++ b/cmd/webhook/main.go @@ -42,6 +42,7 @@ import ( autoscalingv1alpha1 "knative.dev/serving/pkg/apis/autoscaling/v1alpha1" apiconfig "knative.dev/serving/pkg/apis/config" net "knative.dev/serving/pkg/apis/networking/v1alpha1" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" "knative.dev/serving/pkg/apis/serving/v1beta1" ) @@ -122,6 +123,10 @@ func main() { v1beta1.SchemeGroupVersion.WithKind("Configuration"): &v1beta1.Configuration{}, v1beta1.SchemeGroupVersion.WithKind("Route"): &v1beta1.Route{}, v1beta1.SchemeGroupVersion.WithKind("Service"): &v1beta1.Service{}, + v1.SchemeGroupVersion.WithKind("Revision"): &v1.Revision{}, + v1.SchemeGroupVersion.WithKind("Configuration"): &v1.Configuration{}, + v1.SchemeGroupVersion.WithKind("Route"): &v1.Route{}, + v1.SchemeGroupVersion.WithKind("Service"): &v1.Service{}, autoscalingv1alpha1.SchemeGroupVersion.WithKind("PodAutoscaler"): &autoscalingv1alpha1.PodAutoscaler{}, autoscalingv1alpha1.SchemeGroupVersion.WithKind("Metric"): &autoscalingv1alpha1.Metric{}, net.SchemeGroupVersion.WithKind("Certificate"): &net.Certificate{}, @@ -137,7 +142,7 @@ func main() { // Decorate contexts with the current state of the config. ctxFunc := func(ctx context.Context) context.Context { - return v1beta1.WithUpgradeViaDefaulting(store.ToContext(ctx)) + return v1.WithUpgradeViaDefaulting(store.ToContext(ctx)) } controller, err := webhook.New(kubeClient, options, admissionControllers, logger, ctxFunc) diff --git a/config/v1beta1/300-configuration.yaml b/config/v1beta1/300-configuration.yaml index 2ba6f7cb1c3b..6fcd9d220066 100644 --- a/config/v1beta1/300-configuration.yaml +++ b/config/v1beta1/300-configuration.yaml @@ -28,6 +28,9 @@ spec: - name: v1beta1 served: true storage: false + - name: v1 + served: true + storage: false names: kind: Configuration plural: configurations diff --git a/config/v1beta1/300-revision.yaml b/config/v1beta1/300-revision.yaml index fedbcc3969c8..979d0b952f12 100644 --- a/config/v1beta1/300-revision.yaml +++ b/config/v1beta1/300-revision.yaml @@ -28,6 +28,9 @@ spec: - name: v1beta1 served: true storage: false + - name: v1 + served: true + storage: false names: kind: Revision plural: revisions diff --git a/config/v1beta1/300-route.yaml b/config/v1beta1/300-route.yaml index 6b62f57493fb..fed77971e010 100644 --- a/config/v1beta1/300-route.yaml +++ b/config/v1beta1/300-route.yaml @@ -28,6 +28,9 @@ spec: - name: v1beta1 served: true storage: false + - name: v1 + served: true + storage: false names: kind: Route plural: routes diff --git a/config/v1beta1/300-service.yaml b/config/v1beta1/300-service.yaml index 18682794dd06..55602201e35a 100644 --- a/config/v1beta1/300-service.yaml +++ b/config/v1beta1/300-service.yaml @@ -28,6 +28,9 @@ spec: - name: v1beta1 served: true storage: false + - name: v1 + served: true + storage: false names: kind: Service plural: services diff --git a/pkg/activator/handler/handler_test.go b/pkg/activator/handler/handler_test.go index d79bac6e3f83..209eba04f302 100644 --- a/pkg/activator/handler/handler_test.go +++ b/pkg/activator/handler/handler_test.go @@ -46,8 +46,8 @@ import ( "knative.dev/serving/pkg/apis/networking" nv1a1 "knative.dev/serving/pkg/apis/networking/v1alpha1" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" servingfake "knative.dev/serving/pkg/client/clientset/versioned/fake" servinginformers "knative.dev/serving/pkg/client/informers/externalversions" servingv1informers "knative.dev/serving/pkg/client/informers/externalversions/serving/v1alpha1" @@ -526,7 +526,7 @@ func revision(namespace, name string) *v1alpha1.Revision { }, }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), }, }, diff --git a/pkg/activator/net/revision_backends_test.go b/pkg/activator/net/revision_backends_test.go index 4cbc969c4ab2..0589dfe3f92b 100644 --- a/pkg/activator/net/revision_backends_test.go +++ b/pkg/activator/net/revision_backends_test.go @@ -41,8 +41,8 @@ import ( activatortest "knative.dev/serving/pkg/activator/testing" "knative.dev/serving/pkg/apis/networking" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" fakeservingclient "knative.dev/serving/pkg/client/injection/client/fake" fakerevisioninformer "knative.dev/serving/pkg/client/injection/informers/serving/v1alpha1/revision/fake" "knative.dev/serving/pkg/network" @@ -64,7 +64,7 @@ func revision(revID types.NamespacedName, protocol networking.ProtocolType) *v1a Name: revID.Name, }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ diff --git a/pkg/apis/serving/v1alpha1/configuration_conversion.go b/pkg/apis/serving/v1alpha1/configuration_conversion.go index e9b427931383..837154b3e8eb 100644 --- a/pkg/apis/serving/v1alpha1/configuration_conversion.go +++ b/pkg/apis/serving/v1alpha1/configuration_conversion.go @@ -21,6 +21,7 @@ import ( "fmt" "knative.dev/pkg/apis" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1beta1" ) @@ -33,13 +34,19 @@ func (source *Configuration) ConvertUp(ctx context.Context, obj apis.Convertible return err } return source.Status.ConvertUp(ctx, &sink.Status) + case *v1.Configuration: + sink.ObjectMeta = source.ObjectMeta + if err := source.Spec.ConvertUp(ctx, &sink.Spec); err != nil { + return err + } + return source.Status.ConvertUp(ctx, &sink.Status) default: return fmt.Errorf("unknown version, got: %T", sink) } } // ConvertUp helps implement apis.Convertible -func (source *ConfigurationSpec) ConvertUp(ctx context.Context, sink *v1beta1.ConfigurationSpec) error { +func (source *ConfigurationSpec) ConvertUp(ctx context.Context, sink *v1.ConfigurationSpec) error { if source.DeprecatedBuild != nil { return ConvertErrorf("build", "build cannot be migrated forward.") } @@ -56,14 +63,14 @@ func (source *ConfigurationSpec) ConvertUp(ctx context.Context, sink *v1beta1.Co } // ConvertUp helps implement apis.Convertible -func (source *ConfigurationStatus) ConvertUp(ctx context.Context, sink *v1beta1.ConfigurationStatus) error { +func (source *ConfigurationStatus) ConvertUp(ctx context.Context, sink *v1.ConfigurationStatus) error { source.Status.ConvertTo(ctx, &sink.Status) return source.ConfigurationStatusFields.ConvertUp(ctx, &sink.ConfigurationStatusFields) } // ConvertUp helps implement apis.Convertible -func (source *ConfigurationStatusFields) ConvertUp(ctx context.Context, sink *v1beta1.ConfigurationStatusFields) error { +func (source *ConfigurationStatusFields) ConvertUp(ctx context.Context, sink *v1.ConfigurationStatusFields) error { sink.LatestReadyRevisionName = source.LatestReadyRevisionName sink.LatestCreatedRevisionName = source.LatestCreatedRevisionName return nil @@ -78,26 +85,32 @@ func (sink *Configuration) ConvertDown(ctx context.Context, obj apis.Convertible return err } return sink.Status.ConvertDown(ctx, source.Status) + case *v1.Configuration: + sink.ObjectMeta = source.ObjectMeta + if err := sink.Spec.ConvertDown(ctx, source.Spec); err != nil { + return err + } + return sink.Status.ConvertDown(ctx, source.Status) default: return fmt.Errorf("unknown version, got: %T", source) } } // ConvertDown helps implement apis.Convertible -func (sink *ConfigurationSpec) ConvertDown(ctx context.Context, source v1beta1.ConfigurationSpec) error { +func (sink *ConfigurationSpec) ConvertDown(ctx context.Context, source v1.ConfigurationSpec) error { sink.Template = &RevisionTemplateSpec{} return sink.Template.ConvertDown(ctx, source.Template) } // ConvertDown helps implement apis.Convertible -func (sink *ConfigurationStatus) ConvertDown(ctx context.Context, source v1beta1.ConfigurationStatus) error { +func (sink *ConfigurationStatus) ConvertDown(ctx context.Context, source v1.ConfigurationStatus) error { source.Status.ConvertTo(ctx, &sink.Status) return sink.ConfigurationStatusFields.ConvertDown(ctx, source.ConfigurationStatusFields) } // ConvertDown helps implement apis.Convertible -func (sink *ConfigurationStatusFields) ConvertDown(ctx context.Context, source v1beta1.ConfigurationStatusFields) error { +func (sink *ConfigurationStatusFields) ConvertDown(ctx context.Context, source v1.ConfigurationStatusFields) error { sink.LatestReadyRevisionName = source.LatestReadyRevisionName sink.LatestCreatedRevisionName = source.LatestCreatedRevisionName return nil diff --git a/pkg/apis/serving/v1alpha1/configuration_conversion_test.go b/pkg/apis/serving/v1alpha1/configuration_conversion_test.go index a76cf7ad77f7..7bfe6b797403 100644 --- a/pkg/apis/serving/v1alpha1/configuration_conversion_test.go +++ b/pkg/apis/serving/v1alpha1/configuration_conversion_test.go @@ -25,8 +25,10 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" + "knative.dev/pkg/apis" duckv1 "knative.dev/pkg/apis/duck/v1" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1beta1" ) @@ -42,7 +44,34 @@ func TestConfigurationConversionBadType(t *testing.T) { } } +func TestConfigurationConversionTemplateError(t *testing.T) { + tests := []struct { + name string + cs *ConfigurationSpec + }{{ + name: "multiple of", + cs: &ConfigurationSpec{ + Template: &RevisionTemplateSpec{}, + DeprecatedRevisionTemplate: &RevisionTemplateSpec{}, + }, + }, { + name: "missing", + cs: &ConfigurationSpec{}, + }} + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + result := &v1.ConfigurationSpec{} + if err := test.cs.ConvertUp(context.Background(), result); err == nil { + t.Errorf("ConvertUp() = %#v, wanted error", result) + } + }) + } +} + func TestConfigurationConversion(t *testing.T) { + versions := []apis.Convertible{&v1.Configuration{}, &v1beta1.Configuration{}} + tests := []struct { name string in *Configuration @@ -58,7 +87,7 @@ func TestConfigurationConversion(t *testing.T) { Spec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Containers: []corev1.Container{{ @@ -113,7 +142,7 @@ func TestConfigurationConversion(t *testing.T) { }, Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -149,55 +178,57 @@ func TestConfigurationConversion(t *testing.T) { } for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - beta := &v1beta1.Configuration{} - if err := test.in.ConvertUp(context.Background(), beta); err != nil { - if test.badField != "" { - cce, ok := err.(*CannotConvertError) - if ok && cce.Field == test.badField { - return + for _, version := range versions { + t.Run(test.name, func(t *testing.T) { + ver := version + if err := test.in.ConvertUp(context.Background(), ver); err != nil { + if test.badField != "" { + cce, ok := err.(*CannotConvertError) + if ok && cce.Field == test.badField { + return + } } + t.Errorf("ConvertUp() = %v", err) + } else if test.badField != "" { + t.Errorf("ConvertUp() = %#v, wanted bad field %q", ver, + test.badField) + return } - t.Errorf("ConvertUp() = %v", err) - } else if test.badField != "" { - t.Errorf("CovnertUp() = %#v, wanted bad field %q", beta, - test.badField) - return - } - got := &Configuration{} - if err := got.ConvertDown(context.Background(), beta); err != nil { - t.Errorf("ConvertDown() = %v", err) - } - if diff := cmp.Diff(test.in, got); diff != "" { - t.Errorf("roundtrip (-want, +got) = %v", diff) - } - }) + got := &Configuration{} + if err := got.ConvertDown(context.Background(), ver); err != nil { + t.Errorf("ConvertDown() = %v", err) + } + if diff := cmp.Diff(test.in, got); diff != "" { + t.Errorf("roundtrip (-want, +got) = %v", diff) + } + }) - // A variant of the test that uses `revisionTemplate:` and `container:`, - // but end up with what we have above anyways. - t.Run(test.name+" (deprecated)", func(t *testing.T) { - start := toDeprecated(test.in) - beta := &v1beta1.Configuration{} - if err := start.ConvertUp(context.Background(), beta); err != nil { - if test.badField != "" { - cce, ok := err.(*CannotConvertError) - if ok && cce.Field == test.badField { - return + // A variant of the test that uses `revisionTemplate:` and `container:`, + // but end up with what we have above anyways. + t.Run(test.name+" (deprecated)", func(t *testing.T) { + ver := version + start := toDeprecated(test.in) + if err := start.ConvertUp(context.Background(), ver); err != nil { + if test.badField != "" { + cce, ok := err.(*CannotConvertError) + if ok && cce.Field == test.badField { + return + } } + t.Errorf("ConvertUp() = %v", err) + } else if test.badField != "" { + t.Errorf("CovnertUp() = %#v, wanted bad field %q", ver, + test.badField) + return } - t.Errorf("ConvertUp() = %v", err) - } else if test.badField != "" { - t.Errorf("CovnertUp() = %#v, wanted bad field %q", beta, - test.badField) - return - } - got := &Configuration{} - if err := got.ConvertDown(context.Background(), beta); err != nil { - t.Errorf("ConvertDown() = %v", err) - } - if diff := cmp.Diff(test.in, got); diff != "" { - t.Errorf("roundtrip (-want, +got) = %v", diff) - } - }) + got := &Configuration{} + if err := got.ConvertDown(context.Background(), ver); err != nil { + t.Errorf("ConvertDown() = %v", err) + } + if diff := cmp.Diff(test.in, got); diff != "" { + t.Errorf("roundtrip (-want, +got) = %v", diff) + } + }) + } } } diff --git a/pkg/apis/serving/v1alpha1/configuration_defaults.go b/pkg/apis/serving/v1alpha1/configuration_defaults.go index 0e6795def1b0..dbd7d9213328 100644 --- a/pkg/apis/serving/v1alpha1/configuration_defaults.go +++ b/pkg/apis/serving/v1alpha1/configuration_defaults.go @@ -21,7 +21,7 @@ import ( "knative.dev/pkg/apis" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) func (c *Configuration) SetDefaults(ctx context.Context) { @@ -30,11 +30,11 @@ func (c *Configuration) SetDefaults(ctx context.Context) { } func (cs *ConfigurationSpec) SetDefaults(ctx context.Context) { - if v1beta1.IsUpgradeViaDefaulting(ctx) { - beta := v1beta1.ConfigurationSpec{} - if cs.ConvertUp(ctx, &beta) == nil { + if v1.IsUpgradeViaDefaulting(ctx) { + v1 := v1.ConfigurationSpec{} + if cs.ConvertUp(ctx, &v1) == nil { alpha := ConfigurationSpec{} - if alpha.ConvertDown(ctx, beta) == nil { + if alpha.ConvertDown(ctx, v1) == nil { *cs = alpha } } diff --git a/pkg/apis/serving/v1alpha1/configuration_defaults_test.go b/pkg/apis/serving/v1alpha1/configuration_defaults_test.go index e9524f979f86..796d1c65a8ec 100644 --- a/pkg/apis/serving/v1alpha1/configuration_defaults_test.go +++ b/pkg/apis/serving/v1alpha1/configuration_defaults_test.go @@ -27,7 +27,7 @@ import ( "knative.dev/pkg/ptr" "knative.dev/serving/pkg/apis/config" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) var ( @@ -63,7 +63,7 @@ func TestConfigurationDefaulting(t *testing.T) { Spec: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), }, @@ -78,7 +78,7 @@ func TestConfigurationDefaulting(t *testing.T) { }, }, { name: "lemonade", - wc: v1beta1.WithUpgradeViaDefaulting, + wc: v1.WithUpgradeViaDefaulting, in: &Configuration{ Spec: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ @@ -94,7 +94,7 @@ func TestConfigurationDefaulting(t *testing.T) { Spec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), PodSpec: corev1.PodSpec{ @@ -116,7 +116,7 @@ func TestConfigurationDefaulting(t *testing.T) { Spec: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{}}, }, @@ -129,7 +129,7 @@ func TestConfigurationDefaulting(t *testing.T) { Spec: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), PodSpec: corev1.PodSpec{ @@ -150,7 +150,7 @@ func TestConfigurationDefaulting(t *testing.T) { Spec: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), }, @@ -166,7 +166,7 @@ func TestConfigurationDefaulting(t *testing.T) { Spec: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), }, diff --git a/pkg/apis/serving/v1alpha1/configuration_validation_test.go b/pkg/apis/serving/v1alpha1/configuration_validation_test.go index ca30a70f6db2..4e2f9fb3d0c3 100644 --- a/pkg/apis/serving/v1alpha1/configuration_validation_test.go +++ b/pkg/apis/serving/v1alpha1/configuration_validation_test.go @@ -30,7 +30,7 @@ import ( "knative.dev/pkg/apis" "knative.dev/serving/pkg/apis/config" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) func TestConfigurationSpecValidation(t *testing.T) { @@ -55,7 +55,7 @@ func TestConfigurationSpecValidation(t *testing.T) { c: &ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "hellworld", @@ -123,7 +123,7 @@ func TestConfigurationSpecValidation(t *testing.T) { c: &ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "hellworld", @@ -505,7 +505,7 @@ func TestConfigurationSubresourceUpdate(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultMaxRevisionTimeoutSeconds - 1), }, }, @@ -526,7 +526,7 @@ func TestConfigurationSubresourceUpdate(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultMaxRevisionTimeoutSeconds + 1), }, }, @@ -547,7 +547,7 @@ func TestConfigurationSubresourceUpdate(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultMaxRevisionTimeoutSeconds - 1), }, }, @@ -568,7 +568,7 @@ func TestConfigurationSubresourceUpdate(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultMaxRevisionTimeoutSeconds + 1), }, }, diff --git a/pkg/apis/serving/v1alpha1/revision_conversion.go b/pkg/apis/serving/v1alpha1/revision_conversion.go index 19e7b7b73842..555c7dadc5f0 100644 --- a/pkg/apis/serving/v1alpha1/revision_conversion.go +++ b/pkg/apis/serving/v1alpha1/revision_conversion.go @@ -23,6 +23,7 @@ import ( corev1 "k8s.io/api/core/v1" "knative.dev/pkg/apis" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1beta1" ) @@ -39,13 +40,13 @@ func (source *Revision) ConvertUp(ctx context.Context, obj apis.Convertible) err } // ConvertUp helps implement apis.Convertible -func (source *RevisionTemplateSpec) ConvertUp(ctx context.Context, sink *v1beta1.RevisionTemplateSpec) error { +func (source *RevisionTemplateSpec) ConvertUp(ctx context.Context, sink *v1.RevisionTemplateSpec) error { sink.ObjectMeta = source.ObjectMeta return source.Spec.ConvertUp(ctx, &sink.Spec) } // ConvertUp helps implement apis.Convertible -func (source *RevisionSpec) ConvertUp(ctx context.Context, sink *v1beta1.RevisionSpec) error { +func (source *RevisionSpec) ConvertUp(ctx context.Context, sink *v1.RevisionSpec) error { if source.TimeoutSeconds != nil { sink.TimeoutSeconds = ptr.Int64(*source.TimeoutSeconds) } @@ -76,7 +77,7 @@ func (source *RevisionSpec) ConvertUp(ctx context.Context, sink *v1beta1.Revisio } // ConvertUp helps implement apis.Convertible -func (source *RevisionStatus) ConvertUp(ctx context.Context, sink *v1beta1.RevisionStatus) { +func (source *RevisionStatus) ConvertUp(ctx context.Context, sink *v1.RevisionStatus) { source.Status.ConvertTo(ctx, &sink.Status) sink.ServiceName = source.ServiceName @@ -97,19 +98,19 @@ func (sink *Revision) ConvertDown(ctx context.Context, obj apis.Convertible) err } // ConvertDown helps implement apis.Convertible -func (sink *RevisionTemplateSpec) ConvertDown(ctx context.Context, source v1beta1.RevisionTemplateSpec) error { +func (sink *RevisionTemplateSpec) ConvertDown(ctx context.Context, source v1.RevisionTemplateSpec) error { sink.ObjectMeta = source.ObjectMeta return sink.Spec.ConvertDown(ctx, source.Spec) } // ConvertDown helps implement apis.Convertible -func (sink *RevisionSpec) ConvertDown(ctx context.Context, source v1beta1.RevisionSpec) error { +func (sink *RevisionSpec) ConvertDown(ctx context.Context, source v1.RevisionSpec) error { sink.RevisionSpec = *source.DeepCopy() return nil } // ConvertDown helps implement apis.Convertible -func (sink *RevisionStatus) ConvertDown(ctx context.Context, source v1beta1.RevisionStatus) { +func (sink *RevisionStatus) ConvertDown(ctx context.Context, source v1.RevisionStatus) { source.Status.ConvertTo(ctx, &sink.Status) sink.ServiceName = source.ServiceName diff --git a/pkg/apis/serving/v1alpha1/revision_conversion_test.go b/pkg/apis/serving/v1alpha1/revision_conversion_test.go index 53b126e99993..e0a12e3b61e9 100644 --- a/pkg/apis/serving/v1alpha1/revision_conversion_test.go +++ b/pkg/apis/serving/v1alpha1/revision_conversion_test.go @@ -27,6 +27,7 @@ import ( "knative.dev/pkg/apis" duckv1 "knative.dev/pkg/apis/duck/v1" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1beta1" ) @@ -56,7 +57,7 @@ func TestRevisionConversion(t *testing.T) { Generation: 1, }, Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Containers: []corev1.Container{{ @@ -107,7 +108,7 @@ func TestRevisionConversion(t *testing.T) { Kind: "Build", Name: "foo", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Containers: []corev1.Container{{ @@ -218,7 +219,7 @@ func TestRevisionConversionError(t *testing.T) { Generation: 1, }, Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Containers: []corev1.Container{{ @@ -253,7 +254,7 @@ func TestRevisionConversionError(t *testing.T) { Generation: 1, }, Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Containers: []corev1.Container{}, diff --git a/pkg/apis/serving/v1alpha1/revision_defaults.go b/pkg/apis/serving/v1alpha1/revision_defaults.go index 6adfba651621..3f8356d37f9e 100644 --- a/pkg/apis/serving/v1alpha1/revision_defaults.go +++ b/pkg/apis/serving/v1alpha1/revision_defaults.go @@ -22,7 +22,7 @@ import ( corev1 "k8s.io/api/core/v1" "knative.dev/pkg/apis" "knative.dev/pkg/ptr" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) func (r *Revision) SetDefaults(ctx context.Context) { @@ -30,11 +30,11 @@ func (r *Revision) SetDefaults(ctx context.Context) { } func (rs *RevisionSpec) SetDefaults(ctx context.Context) { - if v1beta1.IsUpgradeViaDefaulting(ctx) { - beta := v1beta1.RevisionSpec{} - if rs.ConvertUp(ctx, &beta) == nil { + if v1.IsUpgradeViaDefaulting(ctx) { + v1 := v1.RevisionSpec{} + if rs.ConvertUp(ctx, &v1) == nil { alpha := RevisionSpec{} - if alpha.ConvertDown(ctx, beta) == nil { + if alpha.ConvertDown(ctx, v1) == nil { *rs = alpha } } diff --git a/pkg/apis/serving/v1alpha1/revision_defaults_test.go b/pkg/apis/serving/v1alpha1/revision_defaults_test.go index 925fd15251a5..a87b5eedf90e 100644 --- a/pkg/apis/serving/v1alpha1/revision_defaults_test.go +++ b/pkg/apis/serving/v1alpha1/revision_defaults_test.go @@ -27,7 +27,7 @@ import ( "knative.dev/pkg/ptr" "knative.dev/serving/pkg/apis/config" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) var defaultProbe = &corev1.Probe{ @@ -49,7 +49,7 @@ func TestRevisionDefaulting(t *testing.T) { in: &Revision{}, want: &Revision{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(0), TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), }, @@ -69,7 +69,7 @@ func TestRevisionDefaulting(t *testing.T) { }, want: &Revision{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(0), TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), }, @@ -101,7 +101,7 @@ func TestRevisionDefaulting(t *testing.T) { }, want: &Revision{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(0), TimeoutSeconds: ptr.Int64(123), }, @@ -122,7 +122,7 @@ func TestRevisionDefaulting(t *testing.T) { Name: "bar", }}, }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), }, @@ -140,7 +140,7 @@ func TestRevisionDefaulting(t *testing.T) { Resources: defaultResources, ReadinessProbe: defaultProbe, }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), }, @@ -148,7 +148,7 @@ func TestRevisionDefaulting(t *testing.T) { }, }, { name: "lemonade", - wc: v1beta1.WithUpgradeViaDefaulting, + wc: v1.WithUpgradeViaDefaulting, in: &Revision{ Spec: RevisionSpec{ DeprecatedContainer: &corev1.Container{ @@ -157,7 +157,7 @@ func TestRevisionDefaulting(t *testing.T) { Name: "bar", }}, }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), }, @@ -165,7 +165,7 @@ func TestRevisionDefaulting(t *testing.T) { }, want: &Revision{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Name: config.DefaultUserContainerName, @@ -185,13 +185,13 @@ func TestRevisionDefaulting(t *testing.T) { }, }, { name: "lemonade (no overwrite)", - wc: v1beta1.WithUpgradeViaDefaulting, + wc: v1.WithUpgradeViaDefaulting, in: &Revision{ Spec: RevisionSpec{ DeprecatedContainer: &corev1.Container{ Image: "bar", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), PodSpec: corev1.PodSpec{ @@ -209,7 +209,7 @@ func TestRevisionDefaulting(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "bar", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), PodSpec: corev1.PodSpec{ @@ -228,7 +228,7 @@ func TestRevisionDefaulting(t *testing.T) { in: &Revision{ Spec: RevisionSpec{ DeprecatedContainer: &corev1.Container{}, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), }, @@ -236,7 +236,7 @@ func TestRevisionDefaulting(t *testing.T) { }, want: &Revision{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), }, @@ -252,14 +252,14 @@ func TestRevisionDefaulting(t *testing.T) { in: &Revision{ Spec: RevisionSpec{ DeprecatedContainer: &corev1.Container{}, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(123), }, }, }, want: &Revision{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(123), TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), }, @@ -276,7 +276,7 @@ func TestRevisionDefaulting(t *testing.T) { Spec: RevisionSpec{ DeprecatedConcurrencyModel: "Single", DeprecatedContainer: &corev1.Container{}, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: nil, // unspecified }, }, @@ -284,7 +284,7 @@ func TestRevisionDefaulting(t *testing.T) { want: &Revision{ Spec: RevisionSpec{ DeprecatedConcurrencyModel: "Single", - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), }, diff --git a/pkg/apis/serving/v1alpha1/revision_lifecycle_test.go b/pkg/apis/serving/v1alpha1/revision_lifecycle_test.go index 3eaf657516b9..bb0fb0e32205 100644 --- a/pkg/apis/serving/v1alpha1/revision_lifecycle_test.go +++ b/pkg/apis/serving/v1alpha1/revision_lifecycle_test.go @@ -34,7 +34,7 @@ import ( av1alpha1 "knative.dev/serving/pkg/apis/autoscaling/v1alpha1" net "knative.dev/serving/pkg/apis/networking" "knative.dev/serving/pkg/apis/serving" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) func TestRevisionDuckTypes(t *testing.T) { @@ -777,7 +777,7 @@ func TestGetContainerConcurrency(t *testing.T) { }, { name: "get containerConcurrency by passing value", status: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(10), }, }, @@ -816,7 +816,7 @@ func TestGetContainer(t *testing.T) { }, { name: "get first container info even after passing multiple", status: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Name: "firstContainer", diff --git a/pkg/apis/serving/v1alpha1/revision_types.go b/pkg/apis/serving/v1alpha1/revision_types.go index 10d07e66688c..c964baea9a26 100644 --- a/pkg/apis/serving/v1alpha1/revision_types.go +++ b/pkg/apis/serving/v1alpha1/revision_types.go @@ -23,7 +23,7 @@ import ( duckv1 "knative.dev/pkg/apis/duck/v1" "knative.dev/pkg/kmeta" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) // +genclient @@ -110,7 +110,7 @@ const ( // RevisionSpec holds the desired state of the Revision (from the client). type RevisionSpec struct { - v1beta1.RevisionSpec `json:",inline"` + v1.RevisionSpec `json:",inline"` // DeprecatedGeneration was used prior in Kubernetes versions <1.11 // when metadata.generation was not being incremented by the api server diff --git a/pkg/apis/serving/v1alpha1/revision_validation_test.go b/pkg/apis/serving/v1alpha1/revision_validation_test.go index 9e6b6f681554..dc0caf8283d3 100644 --- a/pkg/apis/serving/v1alpha1/revision_validation_test.go +++ b/pkg/apis/serving/v1alpha1/revision_validation_test.go @@ -34,7 +34,7 @@ import ( net "knative.dev/serving/pkg/apis/networking" "knative.dev/serving/pkg/apis/serving" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) func TestConcurrencyModelValidation(t *testing.T) { @@ -105,7 +105,7 @@ func TestRevisionSpecValidation(t *testing.T) { }, { name: "missing container", rs: &RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Volumes: []corev1.Volume{{ Name: "the-name", @@ -122,7 +122,7 @@ func TestRevisionSpecValidation(t *testing.T) { }, { name: "more container", rs: &RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -137,7 +137,7 @@ func TestRevisionSpecValidation(t *testing.T) { }, { name: "with ContainerConcurrency", rs: &RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -158,7 +158,7 @@ func TestRevisionSpecValidation(t *testing.T) { ReadOnly: true, }}, }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Volumes: []corev1.Volume{{ Name: "the-name", @@ -183,7 +183,7 @@ func TestRevisionSpecValidation(t *testing.T) { ReadOnly: true, }}, }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Volumes: []corev1.Volume{{ Name: "the-name", @@ -239,7 +239,7 @@ func TestRevisionSpecValidation(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(6000), }, }, @@ -252,7 +252,7 @@ func TestRevisionSpecValidation(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(100), }, }, @@ -275,7 +275,7 @@ func TestRevisionSpecValidation(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(0), }, }, @@ -286,7 +286,7 @@ func TestRevisionSpecValidation(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(-30), }, }, @@ -557,7 +557,7 @@ func TestImmutableFields(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(100), }, }, @@ -570,7 +570,7 @@ func TestImmutableFields(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(100), }, }, @@ -700,7 +700,7 @@ func TestImmutableFields(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "foobar", }, @@ -735,7 +735,7 @@ func TestImmutableFields(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "foobar", }, diff --git a/pkg/apis/serving/v1alpha1/route_conversion.go b/pkg/apis/serving/v1alpha1/route_conversion.go index cf033ba393e5..77787639256f 100644 --- a/pkg/apis/serving/v1alpha1/route_conversion.go +++ b/pkg/apis/serving/v1alpha1/route_conversion.go @@ -21,8 +21,9 @@ import ( "fmt" "knative.dev/pkg/apis" + duckv1 "knative.dev/pkg/apis/duck/v1" duckv1alpha1 "knative.dev/pkg/apis/duck/v1alpha1" - duckv1beta1 "knative.dev/pkg/apis/duck/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1beta1" ) @@ -39,8 +40,8 @@ func (source *Route) ConvertUp(ctx context.Context, obj apis.Convertible) error } // ConvertUp helps implement apis.Convertible -func (source *RouteSpec) ConvertUp(ctx context.Context, sink *v1beta1.RouteSpec) error { - sink.Traffic = make([]v1beta1.TrafficTarget, len(source.Traffic)) +func (source *RouteSpec) ConvertUp(ctx context.Context, sink *v1.RouteSpec) error { + sink.Traffic = make([]v1.TrafficTarget, len(source.Traffic)) for i := range source.Traffic { if err := source.Traffic[i].ConvertUp(ctx, &sink.Traffic[i]); err != nil { return err @@ -50,7 +51,7 @@ func (source *RouteSpec) ConvertUp(ctx context.Context, sink *v1beta1.RouteSpec) } // ConvertUp helps implement apis.Convertible -func (source *TrafficTarget) ConvertUp(ctx context.Context, sink *v1beta1.TrafficTarget) error { +func (source *TrafficTarget) ConvertUp(ctx context.Context, sink *v1.TrafficTarget) error { *sink = source.TrafficTarget switch { case source.Tag != "" && source.DeprecatedName != "": @@ -64,26 +65,26 @@ func (source *TrafficTarget) ConvertUp(ctx context.Context, sink *v1beta1.Traffi } // ConvertUp helps implement apis.Convertible -func (source *RouteStatus) ConvertUp(ctx context.Context, sink *v1beta1.RouteStatus) { +func (source *RouteStatus) ConvertUp(ctx context.Context, sink *v1.RouteStatus) { source.Status.ConvertTo(ctx, &sink.Status) source.RouteStatusFields.ConvertUp(ctx, &sink.RouteStatusFields) } // ConvertUp helps implement apis.Convertible -func (source *RouteStatusFields) ConvertUp(ctx context.Context, sink *v1beta1.RouteStatusFields) { +func (source *RouteStatusFields) ConvertUp(ctx context.Context, sink *v1.RouteStatusFields) { if source.URL != nil { sink.URL = source.URL.DeepCopy() } if source.Address != nil { if sink.Address == nil { - sink.Address = &duckv1beta1.Addressable{} + sink.Address = &duckv1.Addressable{} } source.Address.ConvertUp(ctx, sink.Address) } - sink.Traffic = make([]v1beta1.TrafficTarget, len(source.Traffic)) + sink.Traffic = make([]v1.TrafficTarget, len(source.Traffic)) for i := range source.Traffic { source.Traffic[i].ConvertUp(ctx, &sink.Traffic[i]) } @@ -103,7 +104,7 @@ func (sink *Route) ConvertDown(ctx context.Context, obj apis.Convertible) error } // ConvertDown helps implement apis.Convertible -func (sink *RouteSpec) ConvertDown(ctx context.Context, source v1beta1.RouteSpec) { +func (sink *RouteSpec) ConvertDown(ctx context.Context, source v1.RouteSpec) { sink.Traffic = make([]TrafficTarget, len(source.Traffic)) for i := range source.Traffic { sink.Traffic[i].ConvertDown(ctx, source.Traffic[i]) @@ -111,19 +112,19 @@ func (sink *RouteSpec) ConvertDown(ctx context.Context, source v1beta1.RouteSpec } // ConvertDown helps implement apis.Convertible -func (sink *TrafficTarget) ConvertDown(ctx context.Context, source v1beta1.TrafficTarget) { +func (sink *TrafficTarget) ConvertDown(ctx context.Context, source v1.TrafficTarget) { sink.TrafficTarget = source } // ConvertDown helps implement apis.Convertible -func (sink *RouteStatus) ConvertDown(ctx context.Context, source v1beta1.RouteStatus) { +func (sink *RouteStatus) ConvertDown(ctx context.Context, source v1.RouteStatus) { source.Status.ConvertTo(ctx, &sink.Status) sink.RouteStatusFields.ConvertDown(ctx, source.RouteStatusFields) } // ConvertDown helps implement apis.Convertible -func (sink *RouteStatusFields) ConvertDown(ctx context.Context, source v1beta1.RouteStatusFields) { +func (sink *RouteStatusFields) ConvertDown(ctx context.Context, source v1.RouteStatusFields) { if source.URL != nil { sink.URL = source.URL.DeepCopy() } diff --git a/pkg/apis/serving/v1alpha1/route_conversion_test.go b/pkg/apis/serving/v1alpha1/route_conversion_test.go index 82c5dc2015c8..f2ffe1dc69e9 100644 --- a/pkg/apis/serving/v1alpha1/route_conversion_test.go +++ b/pkg/apis/serving/v1alpha1/route_conversion_test.go @@ -28,6 +28,7 @@ import ( duckv1alpha1 "knative.dev/pkg/apis/duck/v1alpha1" duckv1beta1 "knative.dev/pkg/apis/duck/v1beta1" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1beta1" ) @@ -58,7 +59,7 @@ func TestRouteConversion(t *testing.T) { }, Spec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "foo", Percent: ptr.Int64(100), }, @@ -74,7 +75,7 @@ func TestRouteConversion(t *testing.T) { }, RouteStatusFields: RouteStatusFields{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo-00001", Percent: ptr.Int64(100), }, @@ -106,7 +107,7 @@ func TestRouteConversion(t *testing.T) { }, Spec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo-00002", Percent: ptr.Int64(100), }, @@ -122,7 +123,7 @@ func TestRouteConversion(t *testing.T) { }, RouteStatusFields: RouteStatusFields{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo-00001", Percent: ptr.Int64(100), }, @@ -154,25 +155,25 @@ func TestRouteConversion(t *testing.T) { }, Spec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo-00001", Percent: ptr.Int64(90), Tag: "current", }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo-00002", Percent: ptr.Int64(10), Tag: "candidate", }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "foo", Percent: nil, Tag: "latest", }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "foo", Percent: ptr.Int64(0), Tag: "latest2", @@ -189,7 +190,7 @@ func TestRouteConversion(t *testing.T) { }, RouteStatusFields: RouteStatusFields{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo-00001", Percent: ptr.Int64(90), Tag: "current", @@ -199,7 +200,7 @@ func TestRouteConversion(t *testing.T) { }, }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo-00002", Percent: ptr.Int64(10), Tag: "candidate", @@ -209,7 +210,7 @@ func TestRouteConversion(t *testing.T) { }, }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo-00003", Percent: nil, Tag: "latest", @@ -219,7 +220,7 @@ func TestRouteConversion(t *testing.T) { }, }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo-00003", Percent: ptr.Int64(0), Tag: "latest2", @@ -246,7 +247,7 @@ func TestRouteConversion(t *testing.T) { Spec: RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "candidate", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo-00001", Percent: ptr.Int64(100), Tag: "current", diff --git a/pkg/apis/serving/v1alpha1/route_defaults.go b/pkg/apis/serving/v1alpha1/route_defaults.go index b7651807eae8..1acb0d0a2e31 100644 --- a/pkg/apis/serving/v1alpha1/route_defaults.go +++ b/pkg/apis/serving/v1alpha1/route_defaults.go @@ -21,7 +21,7 @@ import ( "knative.dev/pkg/apis" "knative.dev/pkg/ptr" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) func (r *Route) SetDefaults(ctx context.Context) { @@ -29,18 +29,18 @@ func (r *Route) SetDefaults(ctx context.Context) { } func (rs *RouteSpec) SetDefaults(ctx context.Context) { - if v1beta1.IsUpgradeViaDefaulting(ctx) { - beta := v1beta1.RouteSpec{} - if rs.ConvertUp(ctx, &beta) == nil { + if v1.IsUpgradeViaDefaulting(ctx) { + v1 := v1.RouteSpec{} + if rs.ConvertUp(ctx, &v1) == nil { alpha := RouteSpec{} - alpha.ConvertDown(ctx, beta) + alpha.ConvertDown(ctx, v1) *rs = alpha } } - if len(rs.Traffic) == 0 && v1beta1.HasDefaultConfigurationName(ctx) { + if len(rs.Traffic) == 0 && v1.HasDefaultConfigurationName(ctx) { rs.Traffic = []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), }, diff --git a/pkg/apis/serving/v1alpha1/route_defaults_test.go b/pkg/apis/serving/v1alpha1/route_defaults_test.go index 6d3af647380b..e452af3c5d1c 100644 --- a/pkg/apis/serving/v1alpha1/route_defaults_test.go +++ b/pkg/apis/serving/v1alpha1/route_defaults_test.go @@ -23,7 +23,7 @@ import ( "github.com/google/go-cmp/cmp" "knative.dev/pkg/ptr" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) func TestRouteDefaulting(t *testing.T) { @@ -38,12 +38,12 @@ func TestRouteDefaulting(t *testing.T) { Spec: RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "foo", Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "bar", RevisionName: "foo", Percent: ptr.Int64(50), @@ -55,13 +55,13 @@ func TestRouteDefaulting(t *testing.T) { Spec: RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "foo", Percent: ptr.Int64(50), LatestRevision: ptr.Bool(true), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "bar", RevisionName: "foo", Percent: ptr.Int64(50), @@ -72,17 +72,17 @@ func TestRouteDefaulting(t *testing.T) { }, }, { name: "lemonade", - wc: v1beta1.WithUpgradeViaDefaulting, + wc: v1.WithUpgradeViaDefaulting, in: &Route{ Spec: RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "foo", Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "bar", RevisionName: "foo", Percent: ptr.Int64(50), @@ -93,14 +93,14 @@ func TestRouteDefaulting(t *testing.T) { want: &Route{ Spec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "foo", ConfigurationName: "foo", Percent: ptr.Int64(50), LatestRevision: ptr.Bool(true), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "bar", RevisionName: "foo", Percent: ptr.Int64(50), @@ -111,18 +111,18 @@ func TestRouteDefaulting(t *testing.T) { }, }, { name: "lemonade (conflict)", - wc: v1beta1.WithUpgradeViaDefaulting, + wc: v1.WithUpgradeViaDefaulting, in: &Route{ Spec: RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "foo", Percent: ptr.Int64(50), }, }, { DeprecatedName: "baz", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "bar", RevisionName: "foo", Percent: ptr.Int64(50), @@ -134,14 +134,14 @@ func TestRouteDefaulting(t *testing.T) { Spec: RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "foo", Percent: ptr.Int64(50), LatestRevision: ptr.Bool(true), }, }, { DeprecatedName: "baz", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "bar", RevisionName: "foo", Percent: ptr.Int64(50), @@ -152,17 +152,17 @@ func TestRouteDefaulting(t *testing.T) { }, }, { name: "lemonade (collision)", - wc: v1beta1.WithUpgradeViaDefaulting, + wc: v1.WithUpgradeViaDefaulting, in: &Route{ Spec: RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "bar", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "foo", Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "bar", RevisionName: "foo", Percent: ptr.Int64(50), @@ -173,14 +173,14 @@ func TestRouteDefaulting(t *testing.T) { want: &Route{ Spec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "bar", ConfigurationName: "foo", Percent: ptr.Int64(50), LatestRevision: ptr.Bool(true), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "bar", RevisionName: "foo", Percent: ptr.Int64(50), diff --git a/pkg/apis/serving/v1alpha1/route_types.go b/pkg/apis/serving/v1alpha1/route_types.go index eab3c28999bf..75de459a0baf 100644 --- a/pkg/apis/serving/v1alpha1/route_types.go +++ b/pkg/apis/serving/v1alpha1/route_types.go @@ -24,7 +24,7 @@ import ( duckv1alpha1 "knative.dev/pkg/apis/duck/v1alpha1" "knative.dev/pkg/kmeta" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) // +genclient @@ -70,9 +70,9 @@ type TrafficTarget struct { // +optional DeprecatedName string `json:"name,omitempty"` - // We inherit most of our fields by inlining the v1beta1 type. - // Ultimately all non-v1beta1 fields will be deprecated. - v1beta1.TrafficTarget `json:",inline"` + // We inherit most of our fields by inlining the v1 type. + // Ultimately all non-v1 fields will be deprecated. + v1.TrafficTarget `json:",inline"` } // RouteSpec holds the desired state of the Route (from the client). diff --git a/pkg/apis/serving/v1alpha1/route_validation.go b/pkg/apis/serving/v1alpha1/route_validation.go index 5f33d0b14cc0..83cf3aa8d32c 100644 --- a/pkg/apis/serving/v1alpha1/route_validation.go +++ b/pkg/apis/serving/v1alpha1/route_validation.go @@ -47,7 +47,7 @@ func (rs *RouteSpec) Validate(ctx context.Context) *apis.FieldError { percentSum := int64(0) for i, tt := range rs.Traffic { - // Delegate to the v1beta1 validation. + // Delegate to the v1 validation. errs = errs.Also(tt.TrafficTarget.Validate(ctx).ViaFieldIndex("traffic", i)) if tt.Percent != nil { diff --git a/pkg/apis/serving/v1alpha1/route_validation_test.go b/pkg/apis/serving/v1alpha1/route_validation_test.go index 8be29cf6ff85..ed3178948011 100644 --- a/pkg/apis/serving/v1alpha1/route_validation_test.go +++ b/pkg/apis/serving/v1alpha1/route_validation_test.go @@ -26,7 +26,7 @@ import ( "knative.dev/pkg/apis" "knative.dev/pkg/ptr" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) func TestRouteValidation(t *testing.T) { @@ -42,7 +42,7 @@ func TestRouteValidation(t *testing.T) { }, Spec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo", Percent: ptr.Int64(100), }, @@ -59,13 +59,13 @@ func TestRouteValidation(t *testing.T) { Spec: RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "prod", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo", Percent: ptr.Int64(90), }, }, { DeprecatedName: "experiment", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "bar", Percent: ptr.Int64(10), }, @@ -82,7 +82,7 @@ func TestRouteValidation(t *testing.T) { Spec: RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(100), }, }}, @@ -103,7 +103,7 @@ func TestRouteValidation(t *testing.T) { }, Spec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo", Percent: ptr.Int64(100), }, @@ -122,7 +122,7 @@ func TestRouteValidation(t *testing.T) { }, Spec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo", Percent: ptr.Int64(90), }, @@ -144,7 +144,7 @@ func TestRouteValidation(t *testing.T) { }, Spec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo", Percent: ptr.Int64(100), }, @@ -180,7 +180,7 @@ func TestRouteSpecValidation(t *testing.T) { name: "valid", rs: &RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo", Percent: ptr.Int64(100), }, @@ -192,13 +192,13 @@ func TestRouteSpecValidation(t *testing.T) { rs: &RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "prod", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo", Percent: ptr.Int64(90), }, }, { DeprecatedName: "experiment", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "bar", Percent: ptr.Int64(10), }, @@ -214,7 +214,7 @@ func TestRouteSpecValidation(t *testing.T) { rs: &RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(100), }, }}, @@ -230,7 +230,7 @@ func TestRouteSpecValidation(t *testing.T) { name: "invalid revision name", rs: &RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "b@r", Percent: ptr.Int64(100), }, @@ -245,7 +245,7 @@ func TestRouteSpecValidation(t *testing.T) { name: "invalid revision name", rs: &RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "f**", Percent: ptr.Int64(100), }, @@ -261,13 +261,13 @@ func TestRouteSpecValidation(t *testing.T) { rs: &RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "bar", Percent: ptr.Int64(50), }, }, { DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "baz", Percent: ptr.Int64(50), }, @@ -279,13 +279,13 @@ func TestRouteSpecValidation(t *testing.T) { rs: &RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "bar", Percent: ptr.Int64(50), }, }, { DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "bar", Percent: ptr.Int64(50), }, @@ -297,13 +297,13 @@ func TestRouteSpecValidation(t *testing.T) { rs: &RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "bar", Percent: ptr.Int64(50), }, }, { DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "bar", Percent: ptr.Int64(50), }, @@ -314,12 +314,12 @@ func TestRouteSpecValidation(t *testing.T) { name: "invalid total percentage", rs: &RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "bar", Percent: ptr.Int64(99), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "baz", Percent: ptr.Int64(99), }, @@ -334,7 +334,7 @@ func TestRouteSpecValidation(t *testing.T) { rs: &RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "foo", RevisionName: "bar", Percent: ptr.Int64(100), @@ -347,12 +347,12 @@ func TestRouteSpecValidation(t *testing.T) { rs: &RouteSpec{ Traffic: []TrafficTarget{{ DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "bar", Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "foo", RevisionName: "bar", Percent: ptr.Int64(50), @@ -387,7 +387,7 @@ func TestTrafficTargetValidation(t *testing.T) { name: "valid with name and revision", tt: &TrafficTarget{ DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "bar", Percent: ptr.Int64(12), }, @@ -397,7 +397,7 @@ func TestTrafficTargetValidation(t *testing.T) { name: "valid with name and configuration", tt: &TrafficTarget{ DeprecatedName: "baz", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "blah", Percent: ptr.Int64(37), }, @@ -407,7 +407,7 @@ func TestTrafficTargetValidation(t *testing.T) { name: "valid with no percent", tt: &TrafficTarget{ DeprecatedName: "ooga", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "booga", }, }, @@ -415,7 +415,7 @@ func TestTrafficTargetValidation(t *testing.T) { }, { name: "valid with no name", tt: &TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "booga", Percent: ptr.Int64(100), }, @@ -424,7 +424,7 @@ func TestTrafficTargetValidation(t *testing.T) { }, { name: "invalid with both", tt: &TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo", ConfigurationName: "bar", }, @@ -437,7 +437,7 @@ func TestTrafficTargetValidation(t *testing.T) { name: "invalid with neither", tt: &TrafficTarget{ DeprecatedName: "foo", - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(100), }, }, @@ -448,7 +448,7 @@ func TestTrafficTargetValidation(t *testing.T) { }, { name: "invalid percent too low", tt: &TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo", Percent: ptr.Int64(-5), }, @@ -457,7 +457,7 @@ func TestTrafficTargetValidation(t *testing.T) { }, { name: "invalid percent too high", tt: &TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo", Percent: ptr.Int64(101), }, @@ -466,7 +466,7 @@ func TestTrafficTargetValidation(t *testing.T) { }, { name: "disallowed url set", tt: &TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "foo", Percent: ptr.Int64(100), URL: &apis.URL{ diff --git a/pkg/apis/serving/v1alpha1/service_conversion.go b/pkg/apis/serving/v1alpha1/service_conversion.go index c791c90b6fd4..7256c0dccf49 100644 --- a/pkg/apis/serving/v1alpha1/service_conversion.go +++ b/pkg/apis/serving/v1alpha1/service_conversion.go @@ -22,6 +22,7 @@ import ( "knative.dev/pkg/apis" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1beta1" ) @@ -34,17 +35,23 @@ func (source *Service) ConvertUp(ctx context.Context, obj apis.Convertible) erro return err } return source.Status.ConvertUp(ctx, &sink.Status) + case *v1.Service: + sink.ObjectMeta = source.ObjectMeta + if err := source.Spec.ConvertUp(ctx, &sink.Spec); err != nil { + return err + } + return source.Status.ConvertUp(ctx, &sink.Status) default: return fmt.Errorf("unknown version, got: %T", sink) } } // ConvertUp helps implement apis.Convertible -func (source *ServiceSpec) ConvertUp(ctx context.Context, sink *v1beta1.ServiceSpec) error { +func (source *ServiceSpec) ConvertUp(ctx context.Context, sink *v1.ServiceSpec) error { switch { case source.DeprecatedRunLatest != nil: - sink.RouteSpec = v1beta1.RouteSpec{ - Traffic: []v1beta1.TrafficTarget{{ + sink.RouteSpec = v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), }}, @@ -53,8 +60,8 @@ func (source *ServiceSpec) ConvertUp(ctx context.Context, sink *v1beta1.ServiceS case source.DeprecatedRelease != nil: if len(source.DeprecatedRelease.Revisions) == 2 { - sink.RouteSpec = v1beta1.RouteSpec{ - Traffic: []v1beta1.TrafficTarget{{ + sink.RouteSpec = v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ RevisionName: source.DeprecatedRelease.Revisions[0], Percent: ptr.Int64(int64(100 - source.DeprecatedRelease.RolloutPercent)), Tag: "current", @@ -69,8 +76,8 @@ func (source *ServiceSpec) ConvertUp(ctx context.Context, sink *v1beta1.ServiceS }}, } } else { - sink.RouteSpec = v1beta1.RouteSpec{ - Traffic: []v1beta1.TrafficTarget{{ + sink.RouteSpec = v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ RevisionName: source.DeprecatedRelease.Revisions[0], Percent: ptr.Int64(100), Tag: "current", @@ -90,8 +97,8 @@ func (source *ServiceSpec) ConvertUp(ctx context.Context, sink *v1beta1.ServiceS return source.DeprecatedRelease.Configuration.ConvertUp(ctx, &sink.ConfigurationSpec) case source.DeprecatedPinned != nil: - sink.RouteSpec = v1beta1.RouteSpec{ - Traffic: []v1beta1.TrafficTarget{{ + sink.RouteSpec = v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ RevisionName: source.DeprecatedPinned.RevisionName, Percent: ptr.Int64(100), }}, @@ -108,7 +115,7 @@ func (source *ServiceSpec) ConvertUp(ctx context.Context, sink *v1beta1.ServiceS } // ConvertUp helps implement apis.Convertible -func (source *ServiceStatus) ConvertUp(ctx context.Context, sink *v1beta1.ServiceStatus) error { +func (source *ServiceStatus) ConvertUp(ctx context.Context, sink *v1.ServiceStatus) error { source.Status.ConvertTo(ctx, &sink.Status) source.RouteStatusFields.ConvertUp(ctx, &sink.RouteStatusFields) @@ -124,19 +131,25 @@ func (sink *Service) ConvertDown(ctx context.Context, obj apis.Convertible) erro return err } return sink.Status.ConvertDown(ctx, source.Status) + case *v1.Service: + sink.ObjectMeta = source.ObjectMeta + if err := sink.Spec.ConvertDown(ctx, source.Spec); err != nil { + return err + } + return sink.Status.ConvertDown(ctx, source.Status) default: return fmt.Errorf("unknown version, got: %T", source) } } // ConvertDown helps implement apis.Convertible -func (sink *ServiceSpec) ConvertDown(ctx context.Context, source v1beta1.ServiceSpec) error { +func (sink *ServiceSpec) ConvertDown(ctx context.Context, source v1.ServiceSpec) error { sink.RouteSpec.ConvertDown(ctx, source.RouteSpec) return sink.ConfigurationSpec.ConvertDown(ctx, source.ConfigurationSpec) } // ConvertDown helps implement apis.Convertible -func (sink *ServiceStatus) ConvertDown(ctx context.Context, source v1beta1.ServiceStatus) error { +func (sink *ServiceStatus) ConvertDown(ctx context.Context, source v1.ServiceStatus) error { source.Status.ConvertTo(ctx, &sink.Status) sink.RouteStatusFields.ConvertDown(ctx, source.RouteStatusFields) diff --git a/pkg/apis/serving/v1alpha1/service_conversion_test.go b/pkg/apis/serving/v1alpha1/service_conversion_test.go index eb283bcd0078..879035eb15bf 100644 --- a/pkg/apis/serving/v1alpha1/service_conversion_test.go +++ b/pkg/apis/serving/v1alpha1/service_conversion_test.go @@ -24,8 +24,10 @@ import ( corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "knative.dev/pkg/apis" duckv1 "knative.dev/pkg/apis/duck/v1" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1beta1" ) @@ -42,6 +44,8 @@ func TestServiceConversionBadType(t *testing.T) { } func TestServiceConversion(t *testing.T) { + versions := []apis.Convertible{&v1.Service{}, &v1beta1.Service{}} + tests := []struct { name string in *Service @@ -57,7 +61,7 @@ func TestServiceConversion(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Containers: []corev1.Container{{ @@ -85,7 +89,7 @@ func TestServiceConversion(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -107,7 +111,7 @@ func TestServiceConversion(t *testing.T) { }, RouteStatusFields: RouteStatusFields{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", Percent: ptr.Int64(100), RevisionName: "foo-00001", @@ -120,21 +124,23 @@ func TestServiceConversion(t *testing.T) { }} for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - beta := &v1beta1.Service{} - if err := test.in.ConvertUp(context.Background(), beta); err != nil { - t.Errorf("ConvertUp() = %v", err) - } - t.Logf("ConvertUp() = %#v", beta) - got := &Service{} - if err := got.ConvertDown(context.Background(), beta); err != nil { - t.Errorf("ConvertDown() = %v", err) - } - t.Logf("ConvertDown() = %#v", got) - if diff := cmp.Diff(test.in, got); diff != "" { - t.Errorf("roundtrip (-want, +got) = %v", diff) - } - }) + for _, version := range versions { + t.Run(test.name, func(t *testing.T) { + ver := version + if err := test.in.ConvertUp(context.Background(), ver); err != nil { + t.Errorf("ConvertUp() = %v", err) + } + t.Logf("ConvertUp() = %#v", ver) + got := &Service{} + if err := got.ConvertDown(context.Background(), ver); err != nil { + t.Errorf("ConvertDown() = %v", err) + } + t.Logf("ConvertDown() = %#v", got) + if diff := cmp.Diff(test.in, got); diff != "" { + t.Errorf("roundtrip (-want, +got) = %v", diff) + } + }) + } } } @@ -153,7 +159,7 @@ func TestServiceConversionFromDeprecated(t *testing.T) { }, RouteStatusFields: RouteStatusFields{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(100), RevisionName: "foo-00001", }, @@ -161,6 +167,7 @@ func TestServiceConversionFromDeprecated(t *testing.T) { }, } + versions := []apis.Convertible{&v1.Service{}, &v1beta1.Service{}} tests := []struct { name string in *Service @@ -179,7 +186,7 @@ func TestServiceConversionFromDeprecated(t *testing.T) { Configuration: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Volumes: []corev1.Volume{{ @@ -219,7 +226,7 @@ func TestServiceConversionFromDeprecated(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Containers: []corev1.Container{{ @@ -247,7 +254,7 @@ func TestServiceConversionFromDeprecated(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), }, @@ -270,7 +277,7 @@ func TestServiceConversionFromDeprecated(t *testing.T) { Configuration: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Volumes: []corev1.Volume{{ @@ -310,7 +317,7 @@ func TestServiceConversionFromDeprecated(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Containers: []corev1.Container{{ @@ -338,13 +345,13 @@ func TestServiceConversionFromDeprecated(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "current", RevisionName: "foo-00001", Percent: ptr.Int64(100), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", LatestRevision: ptr.Bool(true), Percent: nil, @@ -369,7 +376,7 @@ func TestServiceConversionFromDeprecated(t *testing.T) { Configuration: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Volumes: []corev1.Volume{{ @@ -409,7 +416,7 @@ func TestServiceConversionFromDeprecated(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Containers: []corev1.Container{{ @@ -437,19 +444,19 @@ func TestServiceConversionFromDeprecated(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "current", RevisionName: "foo-00001", Percent: ptr.Int64(78), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "candidate", RevisionName: "foo-00002", Percent: ptr.Int64(22), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", LatestRevision: ptr.Bool(true), Percent: nil, @@ -474,7 +481,7 @@ func TestServiceConversionFromDeprecated(t *testing.T) { Configuration: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Volumes: []corev1.Volume{{ @@ -514,7 +521,7 @@ func TestServiceConversionFromDeprecated(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Containers: []corev1.Container{{ @@ -542,19 +549,19 @@ func TestServiceConversionFromDeprecated(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "current", RevisionName: "foo-00001", Percent: ptr.Int64(63), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "candidate", LatestRevision: ptr.Bool(true), Percent: ptr.Int64(37), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", LatestRevision: ptr.Bool(true), Percent: nil, @@ -578,7 +585,7 @@ func TestServiceConversionFromDeprecated(t *testing.T) { Configuration: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Volumes: []corev1.Volume{{ @@ -618,7 +625,7 @@ func TestServiceConversionFromDeprecated(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "robocop", Containers: []corev1.Container{{ @@ -646,7 +653,7 @@ func TestServiceConversionFromDeprecated(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foo-00001", Percent: ptr.Int64(100), }, @@ -672,26 +679,28 @@ func TestServiceConversionFromDeprecated(t *testing.T) { }} for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - beta := &v1beta1.Service{} - if err := test.in.ConvertUp(context.Background(), beta); err != nil { - if test.badField != "" { - cce, ok := err.(*CannotConvertError) - if ok && cce.Field == test.badField { - return + for _, version := range versions { + t.Run(test.name, func(t *testing.T) { + ver := version + if err := test.in.ConvertUp(context.Background(), ver); err != nil { + if test.badField != "" { + cce, ok := err.(*CannotConvertError) + if ok && cce.Field == test.badField { + return + } } + t.Errorf("ConvertUp() = %v", err) + } + t.Logf("ConvertUp() = %#v", ver) + got := &Service{} + if err := got.ConvertDown(context.Background(), ver); err != nil { + t.Errorf("ConvertDown() = %v", err) + } + t.Logf("ConvertDown() = %#v", got) + if diff := cmp.Diff(test.want, got); diff != "" { + t.Errorf("roundtrip (-want, +got) = %v", diff) } - t.Errorf("ConvertUp() = %v", err) - } - t.Logf("ConvertUp() = %#v", beta) - got := &Service{} - if err := got.ConvertDown(context.Background(), beta); err != nil { - t.Errorf("ConvertDown() = %v", err) - } - t.Logf("ConvertDown() = %#v", got) - if diff := cmp.Diff(test.want, got); diff != "" { - t.Errorf("roundtrip (-want, +got) = %v", diff) - } - }) + }) + } } } diff --git a/pkg/apis/serving/v1alpha1/service_defaults.go b/pkg/apis/serving/v1alpha1/service_defaults.go index 484b45c1e5c0..17d87c70fa78 100644 --- a/pkg/apis/serving/v1alpha1/service_defaults.go +++ b/pkg/apis/serving/v1alpha1/service_defaults.go @@ -23,7 +23,7 @@ import ( "knative.dev/pkg/apis" "knative.dev/serving/pkg/apis/serving" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) func (s *Service) SetDefaults(ctx context.Context) { @@ -51,11 +51,11 @@ func (s *Service) SetDefaults(ctx context.Context) { } func (ss *ServiceSpec) SetDefaults(ctx context.Context) { - if v1beta1.IsUpgradeViaDefaulting(ctx) { - beta := v1beta1.ServiceSpec{} - if ss.ConvertUp(ctx, &beta) == nil { + if v1.IsUpgradeViaDefaulting(ctx) { + v1 := v1.ServiceSpec{} + if ss.ConvertUp(ctx, &v1) == nil { alpha := ServiceSpec{} - if alpha.ConvertDown(ctx, beta) == nil { + if alpha.ConvertDown(ctx, v1) == nil { *ss = alpha } } @@ -70,6 +70,6 @@ func (ss *ServiceSpec) SetDefaults(ctx context.Context) { } else if ss.DeprecatedManual != nil { } else { ss.ConfigurationSpec.SetDefaults(ctx) - ss.RouteSpec.SetDefaults(v1beta1.WithDefaultConfigurationName(ctx)) + ss.RouteSpec.SetDefaults(v1.WithDefaultConfigurationName(ctx)) } } diff --git a/pkg/apis/serving/v1alpha1/service_defaults_test.go b/pkg/apis/serving/v1alpha1/service_defaults_test.go index fa4794ee1b3d..36821b87f26b 100644 --- a/pkg/apis/serving/v1alpha1/service_defaults_test.go +++ b/pkg/apis/serving/v1alpha1/service_defaults_test.go @@ -28,7 +28,7 @@ import ( "knative.dev/pkg/apis" "knative.dev/serving/pkg/apis/config" "knative.dev/serving/pkg/apis/serving" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) func TestServiceDefaulting(t *testing.T) { @@ -45,7 +45,7 @@ func TestServiceDefaulting(t *testing.T) { Spec: ServiceSpec{ RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }, @@ -87,7 +87,7 @@ func TestServiceDefaulting(t *testing.T) { Configuration: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), }, @@ -104,7 +104,7 @@ func TestServiceDefaulting(t *testing.T) { }, }, { name: "run latest (lemonade)", - wc: v1beta1.WithUpgradeViaDefaulting, + wc: v1.WithUpgradeViaDefaulting, in: &Service{ Spec: ServiceSpec{ DeprecatedRunLatest: &RunLatestType{ @@ -125,7 +125,7 @@ func TestServiceDefaulting(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), PodSpec: corev1.PodSpec{ @@ -142,7 +142,7 @@ func TestServiceDefaulting(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }, @@ -159,7 +159,7 @@ func TestServiceDefaulting(t *testing.T) { DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ DeprecatedContainer: &corev1.Container{}, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), }, @@ -175,7 +175,7 @@ func TestServiceDefaulting(t *testing.T) { Configuration: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), }, @@ -211,7 +211,7 @@ func TestServiceDefaulting(t *testing.T) { Configuration: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), }, @@ -228,7 +228,7 @@ func TestServiceDefaulting(t *testing.T) { }, }, { name: "pinned (lemonade)", - wc: v1beta1.WithUpgradeViaDefaulting, + wc: v1.WithUpgradeViaDefaulting, in: &Service{ Spec: ServiceSpec{ DeprecatedPinned: &PinnedType{ @@ -250,7 +250,7 @@ func TestServiceDefaulting(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), PodSpec: corev1.PodSpec{ @@ -267,7 +267,7 @@ func TestServiceDefaulting(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "asdf", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(false), @@ -285,7 +285,7 @@ func TestServiceDefaulting(t *testing.T) { DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ DeprecatedContainer: &corev1.Container{}, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), }, @@ -301,7 +301,7 @@ func TestServiceDefaulting(t *testing.T) { Configuration: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), }, @@ -341,7 +341,7 @@ func TestServiceDefaulting(t *testing.T) { Configuration: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), }, @@ -358,7 +358,7 @@ func TestServiceDefaulting(t *testing.T) { }, }, { name: "release (double, lemonade)", - wc: v1beta1.WithUpgradeViaDefaulting, + wc: v1.WithUpgradeViaDefaulting, in: &Service{ Spec: ServiceSpec{ DeprecatedRelease: &ReleaseType{ @@ -379,7 +379,7 @@ func TestServiceDefaulting(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), PodSpec: corev1.PodSpec{ @@ -395,21 +395,21 @@ func TestServiceDefaulting(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "current", Percent: ptr.Int64(57), RevisionName: "foo", LatestRevision: ptr.Bool(false), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "candidate", Percent: ptr.Int64(43), RevisionName: "bar", LatestRevision: ptr.Bool(false), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", Percent: nil, LatestRevision: ptr.Bool(true), @@ -420,7 +420,7 @@ func TestServiceDefaulting(t *testing.T) { }, }, { name: "release (double, @latest, lemonade)", - wc: v1beta1.WithUpgradeViaDefaulting, + wc: v1.WithUpgradeViaDefaulting, in: &Service{ Spec: ServiceSpec{ DeprecatedRelease: &ReleaseType{ @@ -441,7 +441,7 @@ func TestServiceDefaulting(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), PodSpec: corev1.PodSpec{ @@ -457,20 +457,20 @@ func TestServiceDefaulting(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "current", Percent: ptr.Int64(57), RevisionName: "foo", LatestRevision: ptr.Bool(false), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "candidate", Percent: ptr.Int64(43), LatestRevision: ptr.Bool(true), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", Percent: nil, LatestRevision: ptr.Bool(true), @@ -481,7 +481,7 @@ func TestServiceDefaulting(t *testing.T) { }, }, { name: "release (single, lemonade)", - wc: v1beta1.WithUpgradeViaDefaulting, + wc: v1.WithUpgradeViaDefaulting, in: &Service{ Spec: ServiceSpec{ DeprecatedRelease: &ReleaseType{ @@ -501,7 +501,7 @@ func TestServiceDefaulting(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), PodSpec: corev1.PodSpec{ @@ -517,14 +517,14 @@ func TestServiceDefaulting(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "current", Percent: ptr.Int64(100), RevisionName: "foo", LatestRevision: ptr.Bool(false), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", Percent: nil, LatestRevision: ptr.Bool(true), @@ -542,7 +542,7 @@ func TestServiceDefaulting(t *testing.T) { DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ DeprecatedContainer: &corev1.Container{}, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), }, @@ -558,7 +558,7 @@ func TestServiceDefaulting(t *testing.T) { Configuration: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), }, @@ -580,7 +580,7 @@ func TestServiceDefaulting(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "blah", @@ -598,7 +598,7 @@ func TestServiceDefaulting(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), PodSpec: corev1.PodSpec{ @@ -615,7 +615,7 @@ func TestServiceDefaulting(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }, @@ -638,7 +638,7 @@ func TestServiceDefaulting(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), }, @@ -652,7 +652,7 @@ func TestServiceDefaulting(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }, @@ -667,7 +667,7 @@ func TestServiceDefaulting(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "blah", @@ -688,7 +688,7 @@ func TestServiceDefaulting(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), PodSpec: corev1.PodSpec{ @@ -705,7 +705,7 @@ func TestServiceDefaulting(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }, @@ -720,7 +720,7 @@ func TestServiceDefaulting(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "blah", @@ -732,7 +732,7 @@ func TestServiceDefaulting(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(100), }, }}, @@ -744,7 +744,7 @@ func TestServiceDefaulting(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), PodSpec: corev1.PodSpec{ @@ -761,7 +761,7 @@ func TestServiceDefaulting(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }, diff --git a/pkg/apis/serving/v1alpha1/service_lifecycle_test.go b/pkg/apis/serving/v1alpha1/service_lifecycle_test.go index 7c77a0498f3b..c7f95d070718 100644 --- a/pkg/apis/serving/v1alpha1/service_lifecycle_test.go +++ b/pkg/apis/serving/v1alpha1/service_lifecycle_test.go @@ -28,7 +28,7 @@ import ( apitestv1 "knative.dev/pkg/apis/testing/v1" "knative.dev/pkg/ptr" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) func TestServiceDuckTypes(t *testing.T) { @@ -577,12 +577,12 @@ func TestRouteStatusPropagation(t *testing.T) { Host: "route.namespace.example.com", }, Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(100), RevisionName: "newstuff", }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: nil, RevisionName: "oldstuff", }, diff --git a/pkg/apis/serving/v1alpha1/service_validation.go b/pkg/apis/serving/v1alpha1/service_validation.go index f9a0352b434a..925aaaeff156 100644 --- a/pkg/apis/serving/v1alpha1/service_validation.go +++ b/pkg/apis/serving/v1alpha1/service_validation.go @@ -25,7 +25,7 @@ import ( "knative.dev/pkg/apis" "knative.dev/serving/pkg/apis/serving" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) // Validate validates the fields belonging to Service @@ -121,7 +121,7 @@ func (ss *ServiceSpec) Validate(ctx context.Context) *apis.FieldError { errs = errs.Also(ss.RouteSpec.Validate( // Within the context of Service, the RouteSpec has a default // configurationName. - v1beta1.WithDefaultConfigurationName(ctx))) + v1.WithDefaultConfigurationName(ctx))) } if len(set) > 1 { diff --git a/pkg/apis/serving/v1alpha1/service_validation_test.go b/pkg/apis/serving/v1alpha1/service_validation_test.go index 493cd16d3408..861e7e35a87f 100644 --- a/pkg/apis/serving/v1alpha1/service_validation_test.go +++ b/pkg/apis/serving/v1alpha1/service_validation_test.go @@ -30,7 +30,7 @@ import ( "knative.dev/pkg/apis" "knative.dev/pkg/ptr" "knative.dev/serving/pkg/apis/serving" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" ) const incorrectDNS1035Label = "not a DNS 1035 label: [a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name', or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?')]" @@ -52,7 +52,7 @@ func TestServiceValidation(t *testing.T) { Configuration: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "hellworld", @@ -79,7 +79,7 @@ func TestServiceValidation(t *testing.T) { Configuration: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "hellworld", @@ -129,7 +129,7 @@ func TestServiceValidation(t *testing.T) { Configuration: ConfigurationSpec{ DeprecatedRevisionTemplate: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "hellworld", @@ -563,7 +563,7 @@ func TestServiceValidation(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }, @@ -582,7 +582,7 @@ func TestServiceValidation(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -594,7 +594,7 @@ func TestServiceValidation(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "valid-00001", Percent: ptr.Int64(100), }, @@ -614,7 +614,7 @@ func TestServiceValidation(t *testing.T) { Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ DeprecatedConcurrencyModel: "Multi", - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -626,7 +626,7 @@ func TestServiceValidation(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "valid-00001", Percent: ptr.Int64(100), }, @@ -645,7 +645,7 @@ func TestServiceValidation(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -657,7 +657,7 @@ func TestServiceValidation(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }, @@ -678,7 +678,7 @@ func TestServiceValidation(t *testing.T) { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "hellworld", @@ -690,7 +690,7 @@ func TestServiceValidation(t *testing.T) { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(100), }, }}, @@ -997,7 +997,7 @@ func TestImmutableServiceFields(t *testing.T) { Name: "byo-name-bar", }, Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:bar", @@ -1127,7 +1127,7 @@ func TestServiceSubresourceUpdate(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultMaxRevisionTimeoutSeconds - 1), }, }, @@ -1152,7 +1152,7 @@ func TestServiceSubresourceUpdate(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultMaxRevisionTimeoutSeconds + 1), }, }, @@ -1177,7 +1177,7 @@ func TestServiceSubresourceUpdate(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultMaxRevisionTimeoutSeconds - 1), }, }, @@ -1202,7 +1202,7 @@ func TestServiceSubresourceUpdate(t *testing.T) { DeprecatedContainer: &corev1.Container{ Image: "helloworld", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultMaxRevisionTimeoutSeconds + 1), }, }, @@ -1234,7 +1234,7 @@ func getServiceSpec(image string) ServiceSpec { ConfigurationSpec: ConfigurationSpec{ Template: &RevisionTemplateSpec{ Spec: RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{Containers: []corev1.Container{{ Image: image, }}, @@ -1246,7 +1246,7 @@ func getServiceSpec(image string) ServiceSpec { }, RouteSpec: RouteSpec{ Traffic: []TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100)}, }}, diff --git a/pkg/apis/serving/v1beta1/configuration_defaults.go b/pkg/apis/serving/v1beta1/configuration_defaults.go index 926e3c09dda2..5c9808a3794c 100644 --- a/pkg/apis/serving/v1beta1/configuration_defaults.go +++ b/pkg/apis/serving/v1beta1/configuration_defaults.go @@ -27,8 +27,3 @@ func (c *Configuration) SetDefaults(ctx context.Context) { ctx = apis.WithinParent(ctx, c.ObjectMeta) c.Spec.SetDefaults(apis.WithinSpec(ctx)) } - -// SetDefaults implements apis.Defaultable -func (cs *ConfigurationSpec) SetDefaults(ctx context.Context) { - cs.Template.SetDefaults(ctx) -} diff --git a/pkg/apis/serving/v1beta1/configuration_defaults_test.go b/pkg/apis/serving/v1beta1/configuration_defaults_test.go index 41b45e649a86..28915915f605 100644 --- a/pkg/apis/serving/v1beta1/configuration_defaults_test.go +++ b/pkg/apis/serving/v1beta1/configuration_defaults_test.go @@ -21,10 +21,10 @@ import ( "testing" "github.com/google/go-cmp/cmp" - corev1 "k8s.io/api/core/v1" "knative.dev/pkg/ptr" "knative.dev/serving/pkg/apis/config" + "knative.dev/serving/pkg/apis/serving/v1" ) func TestConfigurationDefaulting(t *testing.T) { @@ -36,84 +36,17 @@ func TestConfigurationDefaulting(t *testing.T) { name: "empty", in: &Configuration{}, want: &Configuration{ - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), }, }, }, }, - }, { - name: "run latest", - in: &Configuration{ - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ - PodSpec: corev1.PodSpec{ - Containers: []corev1.Container{{ - Image: "busybox", - }}, - }, - }, - }, - }, - }, - want: &Configuration{ - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ - PodSpec: corev1.PodSpec{ - Containers: []corev1.Container{{ - Name: config.DefaultUserContainerName, - Image: "busybox", - Resources: defaultResources, - ReadinessProbe: defaultProbe, - }}, - }, - TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), - ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), - }, - }, - }, - }, - }, { - name: "run latest with some default overrides", - in: &Configuration{ - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ - PodSpec: corev1.PodSpec{ - Containers: []corev1.Container{{ - Image: "busybox", - }}, - }, - TimeoutSeconds: ptr.Int64(60), - ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), - }, - }, - }, - }, - want: &Configuration{ - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ - PodSpec: corev1.PodSpec{ - Containers: []corev1.Container{{ - Name: config.DefaultUserContainerName, - Image: "busybox", - Resources: defaultResources, - ReadinessProbe: defaultProbe, - }}, - }, - TimeoutSeconds: ptr.Int64(60), - ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), - }, - }, - }, - }, - }} + }, + } for _, test := range tests { t.Run(test.name, func(t *testing.T) { diff --git a/pkg/apis/serving/v1beta1/configuration_lifecycle.go b/pkg/apis/serving/v1beta1/configuration_lifecycle.go index 2a937bfc0aa1..b2b1297b82ba 100644 --- a/pkg/apis/serving/v1beta1/configuration_lifecycle.go +++ b/pkg/apis/serving/v1beta1/configuration_lifecycle.go @@ -16,20 +16,9 @@ limitations under the License. package v1beta1 -import ( - "k8s.io/apimachinery/pkg/runtime/schema" - - "knative.dev/pkg/apis" -) - -var configurationCondSet = apis.NewLivingConditionSet() +import "k8s.io/apimachinery/pkg/runtime/schema" // GetGroupVersionKind returns the GroupVersionKind. func (r *Configuration) GetGroupVersionKind() schema.GroupVersionKind { return SchemeGroupVersion.WithKind("Configuration") } - -// IsReady returns if the configuration is ready to serve the requested configuration. -func (cs *ConfigurationStatus) IsReady() bool { - return configurationCondSet.Manage(cs).IsHappy() -} diff --git a/pkg/apis/serving/v1beta1/configuration_types.go b/pkg/apis/serving/v1beta1/configuration_types.go index f20c7949017e..0460eb867e79 100644 --- a/pkg/apis/serving/v1beta1/configuration_types.go +++ b/pkg/apis/serving/v1beta1/configuration_types.go @@ -19,8 +19,8 @@ package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "knative.dev/pkg/apis" - duckv1 "knative.dev/pkg/apis/duck/v1" "knative.dev/pkg/kmeta" + "knative.dev/serving/pkg/apis/serving/v1" ) // +genclient @@ -37,10 +37,10 @@ type Configuration struct { metav1.ObjectMeta `json:"metadata,omitempty"` // +optional - Spec ConfigurationSpec `json:"spec,omitempty"` + Spec v1.ConfigurationSpec `json:"spec,omitempty"` // +optional - Status ConfigurationStatus `json:"status,omitempty"` + Status v1.ConfigurationStatus `json:"status,omitempty"` } // Verify that Configuration adheres to the appropriate interfaces. @@ -56,41 +56,12 @@ var ( _ kmeta.OwnerRefable = (*Configuration)(nil) ) -// ConfigurationSpec holds the desired state of the Configuration (from the client). -type ConfigurationSpec struct { - // Template holds the latest specification for the Revision to be stamped out. - // +optional - Template RevisionTemplateSpec `json:"template"` -} - const ( // ConfigurationConditionReady is set when the configuration's latest // underlying revision has reported readiness. ConfigurationConditionReady = apis.ConditionReady ) -// ConfigurationStatusFields holds the fields of Configuration's status that -// are not generally shared. This is defined separately and inlined so that -// other types can readily consume these fields via duck typing. -type ConfigurationStatusFields struct { - // LatestReadyRevisionName holds the name of the latest Revision stamped out - // from this Configuration that has had its "Ready" condition become "True". - // +optional - LatestReadyRevisionName string `json:"latestReadyRevisionName,omitempty"` - - // LatestCreatedRevisionName is the last revision that was created from this - // Configuration. It might not be ready yet, for that use LatestReadyRevisionName. - // +optional - LatestCreatedRevisionName string `json:"latestCreatedRevisionName,omitempty"` -} - -// ConfigurationStatus communicates the observed state of the Configuration (from the controller). -type ConfigurationStatus struct { - duckv1.Status `json:",inline"` - - ConfigurationStatusFields `json:",inline"` -} - // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // ConfigurationList is a list of Configuration resources diff --git a/pkg/apis/serving/v1beta1/configuration_validation.go b/pkg/apis/serving/v1beta1/configuration_validation.go index 2db09b9c5fba..98ed1129dda7 100644 --- a/pkg/apis/serving/v1beta1/configuration_validation.go +++ b/pkg/apis/serving/v1beta1/configuration_validation.go @@ -51,27 +51,12 @@ func (c *Configuration) Validate(ctx context.Context) (errs *apis.FieldError) { return errs } -// Validate implements apis.Validatable -func (cs *ConfigurationSpec) Validate(ctx context.Context) *apis.FieldError { - return cs.Template.Validate(ctx).ViaField("template") -} - -// Validate implements apis.Validatable -func (cs *ConfigurationStatus) Validate(ctx context.Context) *apis.FieldError { - return cs.ConfigurationStatusFields.Validate(ctx) -} - -// Validate implements apis.Validatable -func (csf *ConfigurationStatusFields) Validate(ctx context.Context) *apis.FieldError { - return nil -} - // validateLabels function validates configuration labels func (c *Configuration) validateLabels() (errs *apis.FieldError) { for key, val := range c.GetLabels() { switch { case key == config.VisibilityLabelKey: - errs = errs.Also(validateClusterVisibilityLabel(val)) + errs = errs.Also(serving.ValidateClusterVisibilityLabel(val)) case key == serving.RouteLabelKey: case key == serving.ServiceLabelKey: errs = errs.Also(verifyLabelOwnerRef(val, serving.ServiceLabelKey, "Service", c.GetOwnerReferences())) diff --git a/pkg/apis/serving/v1beta1/configuration_validation_test.go b/pkg/apis/serving/v1beta1/configuration_validation_test.go index 1b54ef19724a..9c80e1e4a2b9 100644 --- a/pkg/apis/serving/v1beta1/configuration_validation_test.go +++ b/pkg/apis/serving/v1beta1/configuration_validation_test.go @@ -23,6 +23,7 @@ import ( "knative.dev/pkg/ptr" "knative.dev/serving/pkg/apis/config" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" routeconfig "knative.dev/serving/pkg/reconciler/route/config" "github.com/google/go-cmp/cmp" @@ -43,9 +44,9 @@ func TestConfigurationValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -56,43 +57,21 @@ func TestConfigurationValidation(t *testing.T) { }, }, want: nil, - }, { - name: "invalid container concurrency", - c: &Configuration{ - ObjectMeta: metav1.ObjectMeta{ - Name: "valid", - }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ - PodSpec: corev1.PodSpec{ - Containers: []corev1.Container{{ - Image: "busybox", - }}, - }, - ContainerConcurrency: ptr.Int64(-10), - }, - }, - }, - }, - want: apis.ErrOutOfBoundsValue( - -10, 0, config.DefaultMaxRevisionContainerConcurrency, - "spec.template.spec.containerConcurrency"), }, { name: "valid BYO name", c: &Configuration{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-foo", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ - Image: "hellworld", + Image: "busybox", }}, }, }, @@ -106,15 +85,15 @@ func TestConfigurationValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ GenerateName: "byo-name-", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-foo", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ - Image: "hellworld", + Image: "busybox", }}, }, }, @@ -122,33 +101,8 @@ func TestConfigurationValidation(t *testing.T) { }, }, want: nil, - }, { - name: "invalid BYO name (not prefixed)", - c: &Configuration{ - ObjectMeta: metav1.ObjectMeta{ - Name: "byo-name", - }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - ObjectMeta: metav1.ObjectMeta{ - Name: "foo", - }, - Spec: RevisionSpec{ - PodSpec: corev1.PodSpec{ - Containers: []corev1.Container{{ - Image: "hellworld", - }}, - }, - }, - }, - }, - }, - want: apis.ErrInvalidValue(`"foo" must have prefix "byo-name-"`, - "spec.template.metadata.name"), }} - // TODO(dangerd): PodSpec validation failures. - for _, test := range tests { t.Run(test.name, func(t *testing.T) { got := test.c.Validate(context.Background()) @@ -161,15 +115,15 @@ func TestConfigurationValidation(t *testing.T) { } func TestConfigurationLabelValidation(t *testing.T) { - validConfigSpec := ConfigurationSpec{ - Template: RevisionTemplateSpec{ + validConfigSpec := v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-foo", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ - Image: "hellworld", + Image: "busybox", }}, }, }, @@ -333,9 +287,9 @@ func TestImmutableConfigurationFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "no-byo-name", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:foo", @@ -349,9 +303,9 @@ func TestImmutableConfigurationFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "no-byo-name", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:bar", @@ -368,12 +322,12 @@ func TestImmutableConfigurationFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "byo-name", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-foo", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:foo", @@ -387,12 +341,12 @@ func TestImmutableConfigurationFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "byo-name", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-bar", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:bar", @@ -409,12 +363,12 @@ func TestImmutableConfigurationFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "byo-name", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-foo", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:foo", @@ -428,12 +382,12 @@ func TestImmutableConfigurationFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "byo-name", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-foo", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:foo", @@ -450,12 +404,12 @@ func TestImmutableConfigurationFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "byo-name", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-foo", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:foo", @@ -469,12 +423,12 @@ func TestImmutableConfigurationFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "byo-name", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-foo", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:bar", @@ -487,7 +441,7 @@ func TestImmutableConfigurationFields(t *testing.T) { want: &apis.FieldError{ Message: "Saw the following changes without a name change (-old +new)", Paths: []string{"spec.template"}, - Details: "{*v1beta1.RevisionTemplateSpec}.Spec.PodSpec.Containers[0].Image:\n\t-: \"helloworld:bar\"\n\t+: \"helloworld:foo\"\n", + Details: "{*v1.RevisionTemplateSpec}.Spec.PodSpec.Containers[0].Image:\n\t-: \"helloworld:bar\"\n\t+: \"helloworld:foo\"\n", }, }} @@ -516,9 +470,9 @@ func TestConfigurationSubresourceUpdate(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -537,9 +491,9 @@ func TestConfigurationSubresourceUpdate(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -558,9 +512,9 @@ func TestConfigurationSubresourceUpdate(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -579,9 +533,9 @@ func TestConfigurationSubresourceUpdate(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", diff --git a/pkg/apis/serving/v1beta1/contexts.go b/pkg/apis/serving/v1beta1/contexts.go deleted file mode 100644 index 9cc23937ad58..000000000000 --- a/pkg/apis/serving/v1beta1/contexts.go +++ /dev/null @@ -1,52 +0,0 @@ -/* -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 v1beta1 - -import "context" - -// hdcnKey is used as the key for associating information -// with a context.Context. -type hdcnKey struct{} - -// WithDefaultConfigurationName notes on the context for nested validation -// that there is a default configuration name, which affects how an empty -// configurationName is validated. -func WithDefaultConfigurationName(ctx context.Context) context.Context { - return context.WithValue(ctx, hdcnKey{}, struct{}{}) -} - -// HasDefaultConfigurationName checks to see whether the given context has -// been marked as having a default configurationName. -func HasDefaultConfigurationName(ctx context.Context) bool { - return ctx.Value(hdcnKey{}) != nil -} - -// lemonadeKey is used as the key for associating information -// with a context.Context. -type lemonadeKey struct{} - -// WithUpgradeViaDefaulting notes on the context that we want defaulting to rewrite -// from v1alpha1 to v1beta1. -func WithUpgradeViaDefaulting(ctx context.Context) context.Context { - return context.WithValue(ctx, lemonadeKey{}, struct{}{}) -} - -// IsUpgradeViaDefaulting checks whether we should be "defaulting" from v1alpha1 to -// the v1beta1 subset. -func IsUpgradeViaDefaulting(ctx context.Context) bool { - return ctx.Value(lemonadeKey{}) != nil -} diff --git a/pkg/apis/serving/v1beta1/contexts_test.go b/pkg/apis/serving/v1beta1/contexts_test.go deleted file mode 100644 index 31f7cd2d97d2..000000000000 --- a/pkg/apis/serving/v1beta1/contexts_test.go +++ /dev/null @@ -1,62 +0,0 @@ -/* -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 v1beta1 - -import ( - "context" - "testing" -) - -func TestContexts(t *testing.T) { - ctx := context.Background() - - tests := []struct { - name string - ctx context.Context - check func(context.Context) bool - want bool - }{{ - name: "has default config name", - ctx: WithDefaultConfigurationName(ctx), - check: HasDefaultConfigurationName, - want: true, - }, { - name: "doesn't have default config name", - ctx: ctx, - check: HasDefaultConfigurationName, - want: false, - }, { - name: "are upgrading via defaulting", - ctx: WithUpgradeViaDefaulting(ctx), - check: IsUpgradeViaDefaulting, - want: true, - }, { - name: "aren't upgrading via defaulting", - ctx: ctx, - check: IsUpgradeViaDefaulting, - want: false, - }} - - for _, tc := range tests { - t.Run(tc.name, func(t *testing.T) { - got := tc.check(tc.ctx) - if tc.want != got { - t.Errorf("check() = %v, wanted %v", tc.want, got) - } - }) - } -} diff --git a/pkg/apis/serving/v1beta1/revision_defaults.go b/pkg/apis/serving/v1beta1/revision_defaults.go index cc38bb135003..4a00953945cc 100644 --- a/pkg/apis/serving/v1beta1/revision_defaults.go +++ b/pkg/apis/serving/v1beta1/revision_defaults.go @@ -18,84 +18,9 @@ package v1beta1 import ( "context" - - corev1 "k8s.io/api/core/v1" - "knative.dev/pkg/ptr" - "knative.dev/serving/pkg/apis/config" ) // SetDefaults implements apis.Defaultable func (r *Revision) SetDefaults(ctx context.Context) { r.Spec.SetDefaults(ctx) } - -// SetDefaults implements apis.Defaultable -func (rts *RevisionTemplateSpec) SetDefaults(ctx context.Context) { - rts.Spec.SetDefaults(ctx) -} - -// SetDefaults implements apis.Defaultable -func (rs *RevisionSpec) SetDefaults(ctx context.Context) { - cfg := config.FromContextOrDefaults(ctx) - - // Default TimeoutSeconds based on our configmap - if rs.TimeoutSeconds == nil || *rs.TimeoutSeconds == 0 { - rs.TimeoutSeconds = ptr.Int64(cfg.Defaults.RevisionTimeoutSeconds) - } - - // Default ContainerConcurrency based on our configmap - if rs.ContainerConcurrency == nil { - rs.ContainerConcurrency = ptr.Int64(cfg.Defaults.ContainerConcurrency) - } - - for idx := range rs.PodSpec.Containers { - if rs.PodSpec.Containers[idx].Name == "" { - rs.PodSpec.Containers[idx].Name = cfg.Defaults.UserContainerName(ctx) - } - - if rs.PodSpec.Containers[idx].Resources.Requests == nil { - rs.PodSpec.Containers[idx].Resources.Requests = corev1.ResourceList{} - } - if _, ok := rs.PodSpec.Containers[idx].Resources.Requests[corev1.ResourceCPU]; !ok { - if rsrc := cfg.Defaults.RevisionCPURequest; rsrc != nil { - rs.PodSpec.Containers[idx].Resources.Requests[corev1.ResourceCPU] = *rsrc - } - } - if _, ok := rs.PodSpec.Containers[idx].Resources.Requests[corev1.ResourceMemory]; !ok { - if rsrc := cfg.Defaults.RevisionMemoryRequest; rsrc != nil { - rs.PodSpec.Containers[idx].Resources.Requests[corev1.ResourceMemory] = *rsrc - } - } - - if rs.PodSpec.Containers[idx].Resources.Limits == nil { - rs.PodSpec.Containers[idx].Resources.Limits = corev1.ResourceList{} - } - if _, ok := rs.PodSpec.Containers[idx].Resources.Limits[corev1.ResourceCPU]; !ok { - if rsrc := cfg.Defaults.RevisionCPULimit; rsrc != nil { - rs.PodSpec.Containers[idx].Resources.Limits[corev1.ResourceCPU] = *rsrc - } - } - if _, ok := rs.PodSpec.Containers[idx].Resources.Limits[corev1.ResourceMemory]; !ok { - if rsrc := cfg.Defaults.RevisionMemoryLimit; rsrc != nil { - rs.PodSpec.Containers[idx].Resources.Limits[corev1.ResourceMemory] = *rsrc - } - } - if rs.PodSpec.Containers[idx].ReadinessProbe == nil { - rs.PodSpec.Containers[idx].ReadinessProbe = &corev1.Probe{} - } - if rs.PodSpec.Containers[idx].ReadinessProbe.TCPSocket == nil && - rs.PodSpec.Containers[idx].ReadinessProbe.HTTPGet == nil && - rs.PodSpec.Containers[idx].ReadinessProbe.Exec == nil { - rs.PodSpec.Containers[idx].ReadinessProbe.TCPSocket = &corev1.TCPSocketAction{} - } - - if rs.PodSpec.Containers[idx].ReadinessProbe.SuccessThreshold == 0 { - rs.PodSpec.Containers[idx].ReadinessProbe.SuccessThreshold = 1 - } - - vms := rs.PodSpec.Containers[idx].VolumeMounts - for i := range vms { - vms[i].ReadOnly = true - } - } -} diff --git a/pkg/apis/serving/v1beta1/revision_defaults_test.go b/pkg/apis/serving/v1beta1/revision_defaults_test.go index dff082846c3d..7b892f167d51 100644 --- a/pkg/apis/serving/v1beta1/revision_defaults_test.go +++ b/pkg/apis/serving/v1beta1/revision_defaults_test.go @@ -29,6 +29,7 @@ import ( "knative.dev/pkg/ptr" "knative.dev/serving/pkg/apis/config" + "knative.dev/serving/pkg/apis/serving/v1" ) var ( @@ -55,13 +56,13 @@ func TestRevisionDefaulting(t *testing.T) { }{{ name: "empty", in: &Revision{}, - want: &Revision{Spec: RevisionSpec{ + want: &Revision{Spec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), }}, }, { name: "with context", - in: &Revision{Spec: RevisionSpec{PodSpec: corev1.PodSpec{Containers: []corev1.Container{{}}}}}, + in: &Revision{Spec: v1.RevisionSpec{PodSpec: corev1.PodSpec{Containers: []corev1.Container{{}}}}}, wc: func(ctx context.Context) context.Context { s := config.NewStore(logtesting.TestLogger(t)) s.OnConfigChanged(&corev1.ConfigMap{ @@ -76,7 +77,7 @@ func TestRevisionDefaulting(t *testing.T) { return s.ToContext(ctx) }, want: &Revision{ - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(0), TimeoutSeconds: ptr.Int64(123), PodSpec: corev1.PodSpec{ @@ -91,7 +92,7 @@ func TestRevisionDefaulting(t *testing.T) { }, { name: "readonly volumes", in: &Revision{ - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "foo", @@ -105,7 +106,7 @@ func TestRevisionDefaulting(t *testing.T) { }, }, want: &Revision{ - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Name: config.DefaultUserContainerName, @@ -124,7 +125,7 @@ func TestRevisionDefaulting(t *testing.T) { }, }, { name: "timeout sets to default when 0 is specified", - in: &Revision{Spec: RevisionSpec{PodSpec: corev1.PodSpec{Containers: []corev1.Container{{}}}, TimeoutSeconds: ptr.Int64(0)}}, + in: &Revision{Spec: v1.RevisionSpec{PodSpec: corev1.PodSpec{Containers: []corev1.Container{{}}}, TimeoutSeconds: ptr.Int64(0)}}, wc: func(ctx context.Context) context.Context { s := config.NewStore(logtesting.TestLogger(t)) s.OnConfigChanged(&corev1.ConfigMap{ @@ -139,7 +140,7 @@ func TestRevisionDefaulting(t *testing.T) { return s.ToContext(ctx) }, want: &Revision{ - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(0), TimeoutSeconds: ptr.Int64(456), PodSpec: corev1.PodSpec{ @@ -154,7 +155,7 @@ func TestRevisionDefaulting(t *testing.T) { }, { name: "no overwrite", in: &Revision{ - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), PodSpec: corev1.PodSpec{ @@ -172,7 +173,7 @@ func TestRevisionDefaulting(t *testing.T) { }, }, want: &Revision{ - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(99), PodSpec: corev1.PodSpec{ @@ -194,7 +195,7 @@ func TestRevisionDefaulting(t *testing.T) { }, { name: "no overwrite exec", in: &Revision{ - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ ReadinessProbe: &corev1.Probe{ @@ -209,7 +210,7 @@ func TestRevisionDefaulting(t *testing.T) { }, }, want: &Revision{ - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), PodSpec: corev1.PodSpec{ @@ -231,12 +232,12 @@ func TestRevisionDefaulting(t *testing.T) { }, { name: "partially initialized", in: &Revision{ - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{Containers: []corev1.Container{{}}}, }, }, want: &Revision{ - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), PodSpec: corev1.PodSpec{ @@ -251,7 +252,7 @@ func TestRevisionDefaulting(t *testing.T) { }, { name: "multiple containers", in: &Revision{ - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Name: "busybox", @@ -262,7 +263,7 @@ func TestRevisionDefaulting(t *testing.T) { }, }, want: &Revision{ - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), PodSpec: corev1.PodSpec{ diff --git a/pkg/apis/serving/v1beta1/revision_lifecycle.go b/pkg/apis/serving/v1beta1/revision_lifecycle.go index d9046e497fd1..24f994bccf36 100644 --- a/pkg/apis/serving/v1beta1/revision_lifecycle.go +++ b/pkg/apis/serving/v1beta1/revision_lifecycle.go @@ -20,7 +20,6 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "knative.dev/pkg/apis" - "knative.dev/serving/pkg/apis/config" ) const ( @@ -34,22 +33,3 @@ var revisionCondSet = apis.NewLivingConditionSet() func (r *Revision) GetGroupVersionKind() schema.GroupVersionKind { return SchemeGroupVersion.WithKind("Revision") } - -// IsReady returns if the revision is ready to serve the requested configuration. -func (rs *RevisionStatus) IsReady() bool { - return revisionCondSet.Manage(rs).IsHappy() -} - -// GetContainerConcurrency returns the container concurrency. If -// container concurrency is not set, the default value will be returned. -// We use the original default (0) here for backwards compatibility. -// Previous versions of Knative equated unspecified and zero, so to avoid -// changing the value used by Revisions with unspecified values when a different -// default is configured, we use the original default instead of the configured -// default to remain safe across upgrades. -func (rs *RevisionSpec) GetContainerConcurrency() int64 { - if rs.ContainerConcurrency == nil { - return config.DefaultContainerConcurrency - } - return *rs.ContainerConcurrency -} diff --git a/pkg/apis/serving/v1beta1/revision_lifecycle_test.go b/pkg/apis/serving/v1beta1/revision_lifecycle_test.go index 8f11d48364a8..9693f06b404d 100644 --- a/pkg/apis/serving/v1beta1/revision_lifecycle_test.go +++ b/pkg/apis/serving/v1beta1/revision_lifecycle_test.go @@ -24,6 +24,7 @@ import ( "knative.dev/pkg/apis/duck" duckv1 "knative.dev/pkg/apis/duck/v1" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" ) func TestRevisionDuckTypes(t *testing.T) { @@ -60,15 +61,15 @@ func TestRevisionGetGroupVersionKind(t *testing.T) { func TestIsReady(t *testing.T) { cases := []struct { name string - status RevisionStatus + status v1.RevisionStatus isReady bool }{{ name: "empty status should not be ready", - status: RevisionStatus{}, + status: v1.RevisionStatus{}, isReady: false, }, { name: "Different condition type should not be ready", - status: RevisionStatus{ + status: v1.RevisionStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, @@ -79,7 +80,7 @@ func TestIsReady(t *testing.T) { isReady: false, }, { name: "False condition status should not be ready", - status: RevisionStatus{ + status: v1.RevisionStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: RevisionConditionReady, @@ -90,7 +91,7 @@ func TestIsReady(t *testing.T) { isReady: false, }, { name: "Unknown condition status should not be ready", - status: RevisionStatus{ + status: v1.RevisionStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: RevisionConditionReady, @@ -101,7 +102,7 @@ func TestIsReady(t *testing.T) { isReady: false, }, { name: "Missing condition status should not be ready", - status: RevisionStatus{ + status: v1.RevisionStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: RevisionConditionReady, @@ -111,7 +112,7 @@ func TestIsReady(t *testing.T) { isReady: false, }, { name: "True condition status should be ready", - status: RevisionStatus{ + status: v1.RevisionStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: RevisionConditionReady, @@ -122,7 +123,7 @@ func TestIsReady(t *testing.T) { isReady: true, }, { name: "Multiple conditions with ready status should be ready", - status: RevisionStatus{ + status: v1.RevisionStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, @@ -136,7 +137,7 @@ func TestIsReady(t *testing.T) { isReady: true, }, { name: "Multiple conditions with ready status false should not be ready", - status: RevisionStatus{ + status: v1.RevisionStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, @@ -161,15 +162,15 @@ func TestIsReady(t *testing.T) { func TestGetContainerConcurrency(t *testing.T) { cases := []struct { name string - status RevisionSpec + status v1.RevisionSpec want int64 }{{ name: "empty revisionSpec should return default value", - status: RevisionSpec{}, + status: v1.RevisionSpec{}, want: 0, }, { name: "get containerConcurrency by passing value", - status: RevisionSpec{ + status: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(10), }, want: 10, diff --git a/pkg/apis/serving/v1beta1/revision_types.go b/pkg/apis/serving/v1beta1/revision_types.go index 3b4aedb60724..fbd0bbe891eb 100644 --- a/pkg/apis/serving/v1beta1/revision_types.go +++ b/pkg/apis/serving/v1beta1/revision_types.go @@ -17,11 +17,10 @@ limitations under the License. package v1beta1 import ( - corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "knative.dev/pkg/apis" - duckv1 "knative.dev/pkg/apis/duck/v1" "knative.dev/pkg/kmeta" + "knative.dev/serving/pkg/apis/serving/v1" ) // +genclient @@ -38,10 +37,10 @@ type Revision struct { metav1.ObjectMeta `json:"metadata,omitempty"` // +optional - Spec RevisionSpec `json:"spec,omitempty"` + Spec v1.RevisionSpec `json:"spec,omitempty"` // +optional - Status RevisionStatus `json:"status,omitempty"` + Status v1.RevisionStatus `json:"status,omitempty"` } // Verify that Revision adheres to the appropriate interfaces. @@ -57,63 +56,12 @@ var ( _ kmeta.OwnerRefable = (*Revision)(nil) ) -// RevisionTemplateSpec describes the data a revision should have when created from a template. -// Based on: https://github.com/kubernetes/api/blob/e771f807/core/v1/types.go#L3179-L3190 -type RevisionTemplateSpec struct { - // +optional - metav1.ObjectMeta `json:"metadata,omitempty"` - - // +optional - Spec RevisionSpec `json:"spec,omitempty"` -} - -// RevisionSpec holds the desired state of the Revision (from the client). -type RevisionSpec struct { - corev1.PodSpec `json:",inline"` - - // ContainerConcurrency specifies the maximum allowed in-flight (concurrent) - // requests per container of the Revision. Defaults to `0` which means - // concurrency to the application is not limited, and the system decides the - // target concurrency for the autoscaler. - // +optional - ContainerConcurrency *int64 `json:"containerConcurrency,omitempty"` - - // TimeoutSeconds holds the max duration the instance is allowed for - // responding to a request. If unspecified, a system default will - // be provided. - // +optional - TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty"` -} - const ( // RevisionConditionReady is set when the revision is starting to materialize // runtime resources, and becomes true when those resources are ready. RevisionConditionReady = apis.ConditionReady ) -// RevisionStatus communicates the observed state of the Revision (from the controller). -type RevisionStatus struct { - duckv1.Status `json:",inline"` - - // ServiceName holds the name of a core Kubernetes Service resource that - // load balances over the pods backing this Revision. - // +optional - ServiceName string `json:"serviceName,omitempty"` - - // LogURL specifies the generated logging url for this particular revision - // based on the revision url template specified in the controller's config. - // +optional - LogURL string `json:"logUrl,omitempty"` - - // ImageDigest holds the resolved digest for the image specified - // within .Spec.Container.Image. The digest is resolved during the creation - // of Revision. This field holds the digest value regardless of whether - // a tag or digest was originally specified in the Container object. It - // may be empty if the image comes from a registry listed to skip resolution. - // +optional - ImageDigest string `json:"imageDigest,omitempty"` -} - // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // RevisionList is a list of Revision resources diff --git a/pkg/apis/serving/v1beta1/revision_validation.go b/pkg/apis/serving/v1beta1/revision_validation.go index 6cdd6d9644fc..43fe2f6f266a 100644 --- a/pkg/apis/serving/v1beta1/revision_validation.go +++ b/pkg/apis/serving/v1beta1/revision_validation.go @@ -18,12 +18,10 @@ package v1beta1 import ( "context" - "fmt" "strings" "knative.dev/pkg/apis" "knative.dev/pkg/kmp" - "knative.dev/serving/pkg/apis/autoscaling" "knative.dev/serving/pkg/apis/serving" ) @@ -55,80 +53,6 @@ func (r *Revision) Validate(ctx context.Context) *apis.FieldError { return errs } -// Validate implements apis.Validatable -func (rts *RevisionTemplateSpec) Validate(ctx context.Context) *apis.FieldError { - errs := rts.Spec.Validate(apis.WithinSpec(ctx)).ViaField("spec") - errs = errs.Also(autoscaling.ValidateAnnotations(rts.GetAnnotations()).ViaField("metadata.annotations")) - - // If the RevisionTemplateSpec has a name specified, then check that - // it follows the requirements on the name. - if rts.Name != "" { - var prefix string - if om := apis.ParentMeta(ctx); om.Name == "" { - prefix = om.GenerateName - } else { - prefix = om.Name + "-" - } - - if !strings.HasPrefix(rts.Name, prefix) { - errs = errs.Also(apis.ErrInvalidValue( - fmt.Sprintf("%q must have prefix %q", rts.Name, prefix), - "metadata.name")) - } - } - - errs = errs.Also(serving.ValidateQueueSidecarAnnotation(rts.Annotations).ViaField("metadata.annotations")) - return errs -} - -// VerifyNameChange checks that if a user brought their own name previously that it -// changes at the appropriate times. -func (current *RevisionTemplateSpec) VerifyNameChange(ctx context.Context, og RevisionTemplateSpec) *apis.FieldError { - if current.Name == "" { - // We only check that Name changes when the RevisionTemplate changes. - return nil - } - if current.Name != og.Name { - // The name changed, so we're good. - return nil - } - - if diff, err := kmp.ShortDiff(&og, current); err != nil { - return &apis.FieldError{ - Message: "Failed to diff RevisionTemplate", - Paths: []string{apis.CurrentField}, - Details: err.Error(), - } - } else if diff != "" { - return &apis.FieldError{ - Message: "Saw the following changes without a name change (-old +new)", - Paths: []string{apis.CurrentField}, - Details: diff, - } - } - return nil -} - -// Validate implements apis.Validatable -func (rs *RevisionSpec) Validate(ctx context.Context) *apis.FieldError { - errs := serving.ValidatePodSpec(rs.PodSpec) - - if rs.TimeoutSeconds != nil { - errs = errs.Also(serving.ValidateTimeoutSeconds(ctx, *rs.TimeoutSeconds)) - } - - if rs.ContainerConcurrency != nil { - errs = errs.Also(serving.ValidateContainerConcurrency(rs.ContainerConcurrency).ViaField("containerConcurrency")) - } - - return errs -} - -// Validate implements apis.Validatable -func (rs *RevisionStatus) Validate(ctx context.Context) *apis.FieldError { - return nil -} - // ValidateLabels function validates service labels func (r *Revision) ValidateLabels() (errs *apis.FieldError) { for key, val := range r.GetLabels() { diff --git a/pkg/apis/serving/v1beta1/revision_validation_test.go b/pkg/apis/serving/v1beta1/revision_validation_test.go index cf684e3328c4..00d5ccc8f556 100644 --- a/pkg/apis/serving/v1beta1/revision_validation_test.go +++ b/pkg/apis/serving/v1beta1/revision_validation_test.go @@ -33,6 +33,8 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "knative.dev/serving/pkg/apis/serving/v1" ) func TestRevisionValidation(t *testing.T) { @@ -46,7 +48,7 @@ func TestRevisionValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -61,7 +63,7 @@ func TestRevisionValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -89,7 +91,7 @@ func TestRevisionValidation(t *testing.T) { } func TestRevisionLabelAnnotationValidation(t *testing.T) { - validRevisionSpec := RevisionSpec{ + validRevisionSpec := v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -284,12 +286,12 @@ func TestContainerConcurrencyValidation(t *testing.T) { func TestRevisionSpecValidation(t *testing.T) { tests := []struct { name string - rs *RevisionSpec + rs *v1.RevisionSpec wc func(context.Context) context.Context want *apis.FieldError }{{ name: "valid", - rs: &RevisionSpec{ + rs: &v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -299,7 +301,7 @@ func TestRevisionSpecValidation(t *testing.T) { want: nil, }, { name: "with volume (ok)", - rs: &RevisionSpec{ + rs: &v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -322,7 +324,7 @@ func TestRevisionSpecValidation(t *testing.T) { want: nil, }, { name: "with volume name collision", - rs: &RevisionSpec{ + rs: &v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -353,7 +355,7 @@ func TestRevisionSpecValidation(t *testing.T) { }).ViaFieldIndex("volumes", 1), }, { name: "bad pod spec", - rs: &RevisionSpec{ + rs: &v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Name: "steve", @@ -365,7 +367,7 @@ func TestRevisionSpecValidation(t *testing.T) { want: apis.ErrDisallowedFields("containers[0].lifecycle"), }, { name: "missing container", - rs: &RevisionSpec{ + rs: &v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{}, }, @@ -373,7 +375,7 @@ func TestRevisionSpecValidation(t *testing.T) { want: apis.ErrMissingField("containers"), }, { name: "too many containers", - rs: &RevisionSpec{ + rs: &v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -385,7 +387,7 @@ func TestRevisionSpecValidation(t *testing.T) { want: apis.ErrMultipleOneOf("containers"), }, { name: "exceed max timeout", - rs: &RevisionSpec{ + rs: &v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -398,7 +400,7 @@ func TestRevisionSpecValidation(t *testing.T) { "timeoutSeconds"), }, { name: "exceed custom max timeout", - rs: &RevisionSpec{ + rs: &v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -421,7 +423,7 @@ func TestRevisionSpecValidation(t *testing.T) { want: apis.ErrOutOfBoundsValue(100, 0, 50, "timeoutSeconds"), }, { name: "negative timeout", - rs: &RevisionSpec{ + rs: &v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -461,7 +463,7 @@ func TestImmutableFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -473,7 +475,7 @@ func TestImmutableFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -491,7 +493,7 @@ func TestImmutableFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -504,7 +506,7 @@ func TestImmutableFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -532,7 +534,7 @@ func TestImmutableFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Resources: corev1.ResourceRequirements{ @@ -548,7 +550,7 @@ func TestImmutableFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Resources: corev1.ResourceRequirements{ @@ -563,7 +565,7 @@ func TestImmutableFields(t *testing.T) { want: &apis.FieldError{ Message: "Immutable fields changed (-old +new)", Paths: []string{"spec"}, - Details: `{v1beta1.RevisionSpec}.PodSpec.Containers[0].Resources.Requests["cpu"]: + Details: `{v1.RevisionSpec}.PodSpec.Containers[0].Resources.Requests["cpu"]: -: resource.Quantity: "{i:{value:100 scale:-3} d:{Dec:} s:100m Format:DecimalSI}" +: resource.Quantity: "{i:{value:50 scale:-3} d:{Dec:} s:50m Format:DecimalSI}" `, @@ -574,7 +576,7 @@ func TestImmutableFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -586,7 +588,7 @@ func TestImmutableFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -597,7 +599,7 @@ func TestImmutableFields(t *testing.T) { want: &apis.FieldError{ Message: "Immutable fields changed (-old +new)", Paths: []string{"spec"}, - Details: `{v1beta1.RevisionSpec}.PodSpec.Containers[0].Image: + Details: `{v1.RevisionSpec}.PodSpec.Containers[0].Image: -: "busybox" +: "helloworld" `, @@ -608,7 +610,7 @@ func TestImmutableFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -621,7 +623,7 @@ func TestImmutableFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -633,7 +635,7 @@ func TestImmutableFields(t *testing.T) { want: &apis.FieldError{ Message: "Immutable fields changed (-old +new)", Paths: []string{"spec"}, - Details: `*{v1beta1.RevisionSpec}.ContainerConcurrency: + Details: `*{v1.RevisionSpec}.ContainerConcurrency: -: "2" +: "1" `, @@ -644,7 +646,7 @@ func TestImmutableFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -657,7 +659,7 @@ func TestImmutableFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -668,7 +670,7 @@ func TestImmutableFields(t *testing.T) { want: &apis.FieldError{ Message: "Immutable fields changed (-old +new)", Paths: []string{"spec"}, - Details: `{v1beta1.RevisionSpec}.PodSpec.ServiceAccountName: + Details: `{v1.RevisionSpec}.PodSpec.ServiceAccountName: -: "" +: "foobar" `, @@ -679,7 +681,7 @@ func TestImmutableFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "foobar", Containers: []corev1.Container{{ @@ -692,7 +694,7 @@ func TestImmutableFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -703,10 +705,10 @@ func TestImmutableFields(t *testing.T) { want: &apis.FieldError{ Message: "Immutable fields changed (-old +new)", Paths: []string{"spec"}, - Details: `{v1beta1.RevisionSpec}.PodSpec.Containers[0].Image: + Details: `{v1.RevisionSpec}.PodSpec.Containers[0].Image: -: "busybox" +: "helloworld" -{v1beta1.RevisionSpec}.PodSpec.ServiceAccountName: +{v1.RevisionSpec}.PodSpec.ServiceAccountName: -: "" +: "foobar" `, @@ -730,12 +732,12 @@ func TestImmutableFields(t *testing.T) { func TestRevisionTemplateSpecValidation(t *testing.T) { tests := []struct { name string - rts *RevisionTemplateSpec + rts *v1.RevisionTemplateSpec want *apis.FieldError }{{ name: "valid", - rts: &RevisionTemplateSpec{ - Spec: RevisionSpec{ + rts: &v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -746,12 +748,12 @@ func TestRevisionTemplateSpecValidation(t *testing.T) { want: nil, }, { name: "empty spec", - rts: &RevisionTemplateSpec{}, + rts: &v1.RevisionTemplateSpec{}, want: apis.ErrMissingField("spec.containers"), }, { name: "nested spec error", - rts: &RevisionTemplateSpec{ - Spec: RevisionSpec{ + rts: &v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Name: "kevin", @@ -764,12 +766,12 @@ func TestRevisionTemplateSpecValidation(t *testing.T) { want: apis.ErrDisallowedFields("spec.containers[0].lifecycle"), }, { name: "has revision template name", - rts: &RevisionTemplateSpec{ + rts: &v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ // We let users bring their own revision name. Name: "parent-foo", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -780,14 +782,14 @@ func TestRevisionTemplateSpecValidation(t *testing.T) { want: nil, }, { name: "invalid metadata.annotations for scale", - rts: &RevisionTemplateSpec{ + rts: &v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Annotations: map[string]string{ autoscaling.MinScaleAnnotationKey: "5", autoscaling.MaxScaleAnnotationKey: "", }, }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -801,13 +803,13 @@ func TestRevisionTemplateSpecValidation(t *testing.T) { }).ViaField("annotations").ViaField("metadata"), }, { name: "Queue sidecar resource percentage annotation more than 100", - rts: &RevisionTemplateSpec{ + rts: &v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Annotations: map[string]string{ serving.QueueSideCarResourcePercentageAnnotation: "200", }, }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", @@ -821,13 +823,13 @@ func TestRevisionTemplateSpecValidation(t *testing.T) { }).ViaField("metadata.annotations"), }, { name: "Invalid queue sidecar resource percentage annotation", - rts: &RevisionTemplateSpec{ + rts: &v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Annotations: map[string]string{ serving.QueueSideCarResourcePercentageAnnotation: "50mx", }, }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld", diff --git a/pkg/apis/serving/v1beta1/route_defaults.go b/pkg/apis/serving/v1beta1/route_defaults.go index 6ee5677402d5..8f793619f4f5 100644 --- a/pkg/apis/serving/v1beta1/route_defaults.go +++ b/pkg/apis/serving/v1beta1/route_defaults.go @@ -20,32 +20,9 @@ import ( "context" "knative.dev/pkg/apis" - "knative.dev/pkg/ptr" ) // SetDefaults implements apis.Defaultable func (r *Route) SetDefaults(ctx context.Context) { r.Spec.SetDefaults(apis.WithinSpec(ctx)) } - -// SetDefaults implements apis.Defaultable -func (rs *RouteSpec) SetDefaults(ctx context.Context) { - if len(rs.Traffic) == 0 && HasDefaultConfigurationName(ctx) { - rs.Traffic = []TrafficTarget{{ - Percent: ptr.Int64(100), - LatestRevision: ptr.Bool(true), - }} - } - - for idx := range rs.Traffic { - rs.Traffic[idx].SetDefaults(ctx) - } -} - -// SetDefaults implements apis.Defaultable -func (tt *TrafficTarget) SetDefaults(ctx context.Context) { - if tt.LatestRevision == nil { - sense := (tt.RevisionName == "") - tt.LatestRevision = &sense - } -} diff --git a/pkg/apis/serving/v1beta1/route_defaults_test.go b/pkg/apis/serving/v1beta1/route_defaults_test.go index 7396a78c15fc..9c897c381444 100644 --- a/pkg/apis/serving/v1beta1/route_defaults_test.go +++ b/pkg/apis/serving/v1beta1/route_defaults_test.go @@ -22,6 +22,7 @@ import ( "github.com/google/go-cmp/cmp" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" ) func TestRouteDefaulting(t *testing.T) { @@ -38,20 +39,20 @@ func TestRouteDefaulting(t *testing.T) { name: "empty w/ default configuration", in: &Route{}, want: &Route{ - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), }}, }, }, - wc: WithDefaultConfigurationName, + wc: v1.WithDefaultConfigurationName, }, { // Make sure it keeps a 'nil' as a 'nil' and not 'zero' name: "implied zero percent", in: &Route{ - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), }, { @@ -60,8 +61,8 @@ func TestRouteDefaulting(t *testing.T) { }, }, want: &Route{ - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), }, { @@ -71,13 +72,13 @@ func TestRouteDefaulting(t *testing.T) { }}, }, }, - wc: WithDefaultConfigurationName, + wc: v1.WithDefaultConfigurationName, }, { // Just to make sure it doesn't convert a 'zero' into a 'nil' name: "explicit zero percent", in: &Route{ - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), }, { @@ -87,8 +88,8 @@ func TestRouteDefaulting(t *testing.T) { }, }, want: &Route{ - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), }, { @@ -98,12 +99,12 @@ func TestRouteDefaulting(t *testing.T) { }}, }, }, - wc: WithDefaultConfigurationName, + wc: v1.WithDefaultConfigurationName, }, { name: "latest revision defaulting", in: &Route{ - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ RevisionName: "foo", Percent: ptr.Int64(12), }, { @@ -116,8 +117,8 @@ func TestRouteDefaulting(t *testing.T) { }, }, want: &Route{ - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ RevisionName: "foo", Percent: ptr.Int64(12), LatestRevision: ptr.Bool(false), diff --git a/pkg/apis/serving/v1beta1/route_lifecycle.go b/pkg/apis/serving/v1beta1/route_lifecycle.go index ff5056111353..f4b93117da86 100644 --- a/pkg/apis/serving/v1beta1/route_lifecycle.go +++ b/pkg/apis/serving/v1beta1/route_lifecycle.go @@ -16,20 +16,9 @@ limitations under the License. package v1beta1 -import ( - "k8s.io/apimachinery/pkg/runtime/schema" - - "knative.dev/pkg/apis" -) - -var routeCondSet = apis.NewLivingConditionSet() +import "k8s.io/apimachinery/pkg/runtime/schema" // GetGroupVersionKind returns the GroupVersionKind. func (r *Route) GetGroupVersionKind() schema.GroupVersionKind { return SchemeGroupVersion.WithKind("Route") } - -// IsReady returns if the route is ready to serve the requested configuration. -func (rs *RouteStatus) IsReady() bool { - return routeCondSet.Manage(rs).IsHappy() -} diff --git a/pkg/apis/serving/v1beta1/route_types.go b/pkg/apis/serving/v1beta1/route_types.go index a6a5b255fad4..5dbc02728a69 100644 --- a/pkg/apis/serving/v1beta1/route_types.go +++ b/pkg/apis/serving/v1beta1/route_types.go @@ -20,9 +20,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "knative.dev/pkg/apis" - duckv1 "knative.dev/pkg/apis/duck/v1" - duckv1beta1 "knative.dev/pkg/apis/duck/v1beta1" "knative.dev/pkg/kmeta" + "knative.dev/serving/pkg/apis/serving/v1" ) // +genclient @@ -41,11 +40,11 @@ type Route struct { // Spec holds the desired state of the Route (from the client). // +optional - Spec RouteSpec `json:"spec,omitempty"` + Spec v1.RouteSpec `json:"spec,omitempty"` // Status communicates the observed state of the Route (from the controller). // +optional - Status RouteStatus `json:"status,omitempty"` + Status v1.RouteStatus `json:"status,omitempty"` } // Verify that Route adheres to the appropriate interfaces. @@ -61,95 +60,12 @@ var ( _ kmeta.OwnerRefable = (*Route)(nil) ) -// TrafficTarget holds a single entry of the routing table for a Route. -type TrafficTarget struct { - // Tag is optionally used to expose a dedicated url for referencing - // this target exclusively. - // +optional - // TODO(mattmoor): Discuss alternative naming options. - Tag string `json:"tag,omitempty"` - - // RevisionName of a specific revision to which to send this portion of - // traffic. This is mutually exclusive with ConfigurationName. - // +optional - RevisionName string `json:"revisionName,omitempty"` - - // ConfigurationName of a configuration to whose latest revision we will send - // this portion of traffic. When the "status.latestReadyRevisionName" of the - // referenced configuration changes, we will automatically migrate traffic - // from the prior "latest ready" revision to the new one. This field is never - // set in Route's status, only its spec. This is mutually exclusive with - // RevisionName. - // +optional - ConfigurationName string `json:"configurationName,omitempty"` - - // LatestRevision may be optionally provided to indicate that the latest - // ready Revision of the Configuration should be used for this traffic - // target. When provided LatestRevision must be true if RevisionName is - // empty; it must be false when RevisionName is non-empty. - // +optional - LatestRevision *bool `json:"latestRevision,omitempty"` - - // Percent indicates that percentage based routing should be used and - // the value indicates the percent of traffic that is be routed to this - // Revision or Configuration. `0` (zero) mean no traffic, `100` means all - // traffic. - // When percentage based routing is being used the follow rules apply: - // - the sum of all percent values must equal 100 - // - when not specified, the implied value for `percent` is zero for - // that particular Revision or Configuration - // +optional - Percent *int64 `json:"percent,omitempty"` - - // URL displays the URL for accessing named traffic targets. URL is displayed in - // status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and - // a hostname, but may not contain anything else (e.g. basic auth, url path, etc.) - // +optional - URL *apis.URL `json:"url,omitempty"` -} - -// RouteSpec holds the desired state of the Route (from the client). -type RouteSpec struct { - // Traffic specifies how to distribute traffic over a collection of - // revisions and configurations. - // +optional - Traffic []TrafficTarget `json:"traffic,omitempty"` -} - const ( // RouteConditionReady is set when the service is configured // and has available backends ready to receive traffic. RouteConditionReady = apis.ConditionReady ) -// RouteStatusFields holds the fields of Route's status that -// are not generally shared. This is defined separately and inlined so that -// other types can readily consume these fields via duck typing. -type RouteStatusFields struct { - // URL holds the url that will distribute traffic over the provided traffic targets. - // It generally has the form http[s]://{route-name}.{route-namespace}.{cluster-level-suffix} - // +optional - URL *apis.URL `json:"url,omitempty"` - - // Address holds the information needed for a Route to be the target of an event. - // +optional - Address *duckv1beta1.Addressable `json:"address,omitempty"` - - // Traffic holds the configured traffic distribution. - // These entries will always contain RevisionName references. - // When ConfigurationName appears in the spec, this will hold the - // LatestReadyRevisionName that we last observed. - // +optional - Traffic []TrafficTarget `json:"traffic,omitempty"` -} - -// RouteStatus communicates the observed state of the Route (from the controller). -type RouteStatus struct { - duckv1.Status `json:",inline"` - - RouteStatusFields `json:",inline"` -} - // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // RouteList is a list of Route resources diff --git a/pkg/apis/serving/v1beta1/route_validation.go b/pkg/apis/serving/v1beta1/route_validation.go index 437fd88b5e2b..2dde0fc8b45c 100644 --- a/pkg/apis/serving/v1beta1/route_validation.go +++ b/pkg/apis/serving/v1beta1/route_validation.go @@ -18,10 +18,8 @@ package v1beta1 import ( "context" - "fmt" "strings" - "k8s.io/apimachinery/pkg/util/validation" "knative.dev/pkg/apis" "knative.dev/serving/pkg/apis/serving" "knative.dev/serving/pkg/reconciler/route/config" @@ -36,171 +34,12 @@ func (r *Route) Validate(ctx context.Context) *apis.FieldError { return errs } -func validateTrafficList(ctx context.Context, traffic []TrafficTarget) *apis.FieldError { - var errs *apis.FieldError - - // Track the targets of named TrafficTarget entries (to detect duplicates). - trafficMap := make(map[string]int) - - sum := int64(0) - for i, tt := range traffic { - errs = errs.Also(tt.Validate(ctx).ViaIndex(i)) - - if idx, ok := trafficMap[tt.Tag]; ok { - // We want only single definition of the route, even if it points - // to the same config or revision. - errs = errs.Also(&apis.FieldError{ - Message: fmt.Sprintf("Multiple definitions for %q", tt.Tag), - Paths: []string{ - fmt.Sprintf("[%d].tag", i), - fmt.Sprintf("[%d].tag", idx), - }, - }) - } else { - trafficMap[tt.Tag] = i - } - if tt.Percent != nil { - sum += *tt.Percent - } - } - - if sum != 100 { - errs = errs.Also(&apis.FieldError{ - Message: fmt.Sprintf("Traffic targets sum to %d, want 100", sum), - Paths: []string{apis.CurrentField}, - }) - } - return errs -} - -// Validate implements apis.Validatable -func (rs *RouteSpec) Validate(ctx context.Context) *apis.FieldError { - return validateTrafficList(ctx, rs.Traffic).ViaField("traffic") -} - -// Validate verifies that TrafficTarget is properly configured. -func (tt *TrafficTarget) Validate(ctx context.Context) *apis.FieldError { - errs := tt.validateLatestRevision(ctx) - errs = tt.validateRevisionAndConfiguration(ctx, errs) - errs = tt.validateTrafficPercentage(errs) - return tt.validateUrl(ctx, errs) -} - -func (tt *TrafficTarget) validateRevisionAndConfiguration(ctx context.Context, errs *apis.FieldError) *apis.FieldError { - // We only validate the sense of latestRevision in the context of a Spec, - // and only when it is specified. - switch { - // When we have a default configurationName, we don't - // allow one to be specified. - case HasDefaultConfigurationName(ctx) && tt.ConfigurationName != "": - errs = errs.Also(apis.ErrDisallowedFields("configurationName")) - - // Both revisionName and configurationName are never allowed to - // appear concurrently. - case tt.RevisionName != "" && tt.ConfigurationName != "": - errs = errs.Also(apis.ErrMultipleOneOf( - "revisionName", "configurationName")) - - // When a revisionName appears, we must check that the name is valid. - case tt.RevisionName != "": - if el := validation.IsQualifiedName(tt.RevisionName); len(el) > 0 { - errs = errs.Also(apis.ErrInvalidKeyName( - tt.RevisionName, "revisionName", el...)) - } - - // When revisionName is missing in Status report an error. - case apis.IsInStatus(ctx): - errs = errs.Also(apis.ErrMissingField("revisionName")) - - // When configurationName is specified, we must check that the name is valid. - case tt.ConfigurationName != "": - if el := validation.IsQualifiedName(tt.ConfigurationName); len(el) > 0 { - errs = errs.Also(apis.ErrInvalidKeyName( - tt.ConfigurationName, "configurationName", el...)) - } - - // When we are using a default configurationName, it must be a valid name already. - case HasDefaultConfigurationName(ctx): - - // All other cases are missing one of revisionName or configurationName. - default: - errs = errs.Also(apis.ErrMissingOneOf( - "revisionName", "configurationName")) - } - return errs -} - -func (tt *TrafficTarget) validateTrafficPercentage(errs *apis.FieldError) *apis.FieldError { - // Check that the traffic Percentage is within bounds. - if tt.Percent != nil && (*tt.Percent < 0 || *tt.Percent > 100) { - errs = errs.Also(apis.ErrOutOfBoundsValue( - *tt.Percent, 0, 100, "percent")) - } - return errs -} - -func (tt *TrafficTarget) validateLatestRevision(ctx context.Context) *apis.FieldError { - if apis.IsInSpec(ctx) && tt.LatestRevision != nil { - lr := *tt.LatestRevision - pinned := tt.RevisionName != "" - if pinned == lr { - // The senses for whether to pin to a particular revision or - // float forward to the latest revision must match. - return apis.ErrInvalidValue(lr, "latestRevision") - } - } - return nil -} - -func (tt *TrafficTarget) validateUrl(ctx context.Context, errs *apis.FieldError) *apis.FieldError { - // Check that we set the URL appropriately. - if tt.URL.String() != "" { - // URL is not allowed in traffic under spec. - if apis.IsInSpec(ctx) { - errs = errs.Also(apis.ErrDisallowedFields("url")) - } - - // URL is not allowed in any traffic target without a name. - if tt.Tag == "" { - errs = errs.Also(apis.ErrDisallowedFields("url")) - } - } else if tt.Tag != "" { - // URL must be specified in status when name is specified. - if apis.IsInStatus(ctx) { - errs = errs.Also(apis.ErrMissingField("url")) - } - } - return errs -} - -// Validate implements apis.Validatable. -func (rs *RouteStatus) Validate(ctx context.Context) *apis.FieldError { - return rs.RouteStatusFields.Validate(ctx) -} - -// Validate implements apis.Validatable. -func (rsf *RouteStatusFields) Validate(ctx context.Context) *apis.FieldError { - // TODO(mattmoor): Validate other status fields. - - if len(rsf.Traffic) != 0 { - return validateTrafficList(ctx, rsf.Traffic).ViaField("traffic") - } - return nil -} - -func validateClusterVisibilityLabel(label string) (errs *apis.FieldError) { - if label != config.VisibilityClusterLocal { - errs = apis.ErrInvalidValue(label, config.VisibilityLabelKey) - } - return -} - // validateLabels function validates route labels. func (r *Route) validateLabels() (errs *apis.FieldError) { for key, val := range r.GetLabels() { switch { case key == config.VisibilityLabelKey: - errs = errs.Also(validateClusterVisibilityLabel(val)) + errs = errs.Also(serving.ValidateClusterVisibilityLabel(val)) case key == serving.ServiceLabelKey: errs = errs.Also(verifyLabelOwnerRef(val, serving.ServiceLabelKey, "Service", r.GetOwnerReferences())) case strings.HasPrefix(key, serving.GroupNamePrefix): diff --git a/pkg/apis/serving/v1beta1/route_validation_test.go b/pkg/apis/serving/v1beta1/route_validation_test.go index 85e51c8848e9..b9d5997c8da3 100644 --- a/pkg/apis/serving/v1beta1/route_validation_test.go +++ b/pkg/apis/serving/v1beta1/route_validation_test.go @@ -26,18 +26,19 @@ import ( "knative.dev/pkg/apis" "knative.dev/pkg/ptr" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" routeconfig "knative.dev/serving/pkg/reconciler/route/config" ) func TestTrafficTargetValidation(t *testing.T) { tests := []struct { name string - tt *TrafficTarget + tt *v1.TrafficTarget want *apis.FieldError wc func(context.Context) context.Context }{{ name: "valid with revisionName", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ RevisionName: "bar", Percent: ptr.Int64(12), }, @@ -45,7 +46,7 @@ func TestTrafficTargetValidation(t *testing.T) { want: nil, }, { name: "valid with revisionName and name (spec)", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ Tag: "foo", RevisionName: "bar", Percent: ptr.Int64(12), @@ -54,7 +55,7 @@ func TestTrafficTargetValidation(t *testing.T) { want: nil, }, { name: "valid with revisionName and name (status)", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ Tag: "foo", RevisionName: "bar", Percent: ptr.Int64(12), @@ -67,7 +68,7 @@ func TestTrafficTargetValidation(t *testing.T) { want: nil, }, { name: "invalid with revisionName and name (status)", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ Tag: "foo", RevisionName: "bar", Percent: ptr.Int64(12), @@ -76,7 +77,7 @@ func TestTrafficTargetValidation(t *testing.T) { want: apis.ErrMissingField("url"), }, { name: "invalid with bad revisionName", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ RevisionName: "b ar", Percent: ptr.Int64(12), }, @@ -85,7 +86,7 @@ func TestTrafficTargetValidation(t *testing.T) { "b ar", "revisionName", "name part must consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]')"), }, { name: "valid with revisionName and latestRevision", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ RevisionName: "bar", LatestRevision: ptr.Bool(false), Percent: ptr.Int64(12), @@ -94,7 +95,7 @@ func TestTrafficTargetValidation(t *testing.T) { want: nil, }, { name: "invalid with revisionName and latestRevision (spec)", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ RevisionName: "bar", LatestRevision: ptr.Bool(true), Percent: ptr.Int64(12), @@ -103,7 +104,7 @@ func TestTrafficTargetValidation(t *testing.T) { want: apis.ErrInvalidValue(true, "latestRevision"), }, { name: "valid with revisionName and latestRevision (status)", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ RevisionName: "bar", LatestRevision: ptr.Bool(true), Percent: ptr.Int64(12), @@ -112,7 +113,7 @@ func TestTrafficTargetValidation(t *testing.T) { want: nil, }, { name: "valid with configurationName", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ ConfigurationName: "bar", Percent: ptr.Int64(37), }, @@ -120,7 +121,7 @@ func TestTrafficTargetValidation(t *testing.T) { want: nil, }, { name: "valid with configurationName and name (spec)", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ Tag: "foo", ConfigurationName: "bar", Percent: ptr.Int64(37), @@ -129,7 +130,7 @@ func TestTrafficTargetValidation(t *testing.T) { want: nil, }, { name: "invalid with bad configurationName", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ ConfigurationName: "b ar", Percent: ptr.Int64(37), }, @@ -138,7 +139,7 @@ func TestTrafficTargetValidation(t *testing.T) { "b ar", "configurationName", "name part must consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]')"), }, { name: "valid with configurationName and latestRevision", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ ConfigurationName: "blah", LatestRevision: ptr.Bool(true), Percent: ptr.Int64(37), @@ -147,7 +148,7 @@ func TestTrafficTargetValidation(t *testing.T) { want: nil, }, { name: "invalid with configurationName and latestRevision", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ ConfigurationName: "blah", LatestRevision: ptr.Bool(false), Percent: ptr.Int64(37), @@ -156,44 +157,44 @@ func TestTrafficTargetValidation(t *testing.T) { want: apis.ErrInvalidValue(false, "latestRevision"), }, { name: "invalid with configurationName and default configurationName", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ ConfigurationName: "blah", Percent: ptr.Int64(37), }, - wc: WithDefaultConfigurationName, + wc: v1.WithDefaultConfigurationName, want: apis.ErrDisallowedFields("configurationName"), }, { name: "valid with only default configurationName", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ Percent: ptr.Int64(37), }, wc: func(ctx context.Context) context.Context { - return WithDefaultConfigurationName(apis.WithinSpec(ctx)) + return v1.WithDefaultConfigurationName(apis.WithinSpec(ctx)) }, want: nil, }, { name: "valid with default configurationName and latestRevision", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(37), }, wc: func(ctx context.Context) context.Context { - return WithDefaultConfigurationName(apis.WithinSpec(ctx)) + return v1.WithDefaultConfigurationName(apis.WithinSpec(ctx)) }, want: nil, }, { name: "invalid with default configurationName and latestRevision", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ LatestRevision: ptr.Bool(false), Percent: ptr.Int64(37), }, wc: func(ctx context.Context) context.Context { - return WithDefaultConfigurationName(apis.WithinSpec(ctx)) + return v1.WithDefaultConfigurationName(apis.WithinSpec(ctx)) }, want: apis.ErrInvalidValue(false, "latestRevision"), }, { name: "invalid without revisionName in status", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ ConfigurationName: "blah", Percent: ptr.Int64(37), }, @@ -201,42 +202,42 @@ func TestTrafficTargetValidation(t *testing.T) { want: apis.ErrMissingField("revisionName"), }, { name: "valid with revisionName and default configurationName", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ RevisionName: "bar", Percent: ptr.Int64(12), }, - wc: WithDefaultConfigurationName, + wc: v1.WithDefaultConfigurationName, want: nil, }, { name: "valid with no percent", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ ConfigurationName: "booga", }, want: nil, }, { name: "valid with nil percent", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ ConfigurationName: "booga", Percent: nil, }, want: nil, }, { name: "valid with zero percent", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ ConfigurationName: "booga", Percent: ptr.Int64(0), }, want: nil, }, { name: "valid with no name", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ ConfigurationName: "booga", Percent: ptr.Int64(100), }, want: nil, }, { name: "invalid with both", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ RevisionName: "foo", ConfigurationName: "bar", }, @@ -246,7 +247,7 @@ func TestTrafficTargetValidation(t *testing.T) { }, }, { name: "invalid with neither", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ Percent: ptr.Int64(100), }, want: &apis.FieldError{ @@ -255,21 +256,21 @@ func TestTrafficTargetValidation(t *testing.T) { }, }, { name: "invalid percent too low", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ RevisionName: "foo", Percent: ptr.Int64(-5), }, want: apis.ErrOutOfBoundsValue("-5", "0", "100", "percent"), }, { name: "invalid percent too high", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ RevisionName: "foo", Percent: ptr.Int64(101), }, want: apis.ErrOutOfBoundsValue("101", "0", "100", "percent"), }, { name: "disallowed url set", - tt: &TrafficTarget{ + tt: &v1.TrafficTarget{ ConfigurationName: "foo", Percent: ptr.Int64(100), URL: &apis.URL{ @@ -306,16 +307,16 @@ func TestRouteValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: "bar", RevisionName: "foo", Percent: ptr.Int64(100), }}, }, - Status: RouteStatus{ - RouteStatusFields: RouteStatusFields{ - Traffic: []TrafficTarget{{ + Status: v1.RouteStatus{ + RouteStatusFields: v1.RouteStatusFields{ + Traffic: []v1.TrafficTarget{{ Tag: "bar", RevisionName: "foo", Percent: ptr.Int64(100), @@ -334,8 +335,8 @@ func TestRouteValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: "prod", RevisionName: "foo", Percent: ptr.Int64(90), @@ -353,16 +354,16 @@ func TestRouteValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: "bar", RevisionName: "foo", Percent: ptr.Int64(100), }}, }, - Status: RouteStatus{ - RouteStatusFields: RouteStatusFields{ - Traffic: []TrafficTarget{{ + Status: v1.RouteStatus{ + RouteStatusFields: v1.RouteStatusFields{ + Traffic: []v1.TrafficTarget{{ Tag: "bar", RevisionName: "foo", Percent: ptr.Int64(100), @@ -382,8 +383,8 @@ func TestRouteValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: "foo", Percent: ptr.Int64(100), }}, @@ -402,8 +403,8 @@ func TestRouteValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: "foo", RevisionName: "bar", Percent: ptr.Int64(50), @@ -427,8 +428,8 @@ func TestRouteValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "do.not.use.dots", }, - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ RevisionName: "foo", Percent: ptr.Int64(100), }}, @@ -444,8 +445,8 @@ func TestRouteValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "do.not.use.dots", }, - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ RevisionName: "foo", Percent: ptr.Int64(90), }}, @@ -464,8 +465,8 @@ func TestRouteValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: strings.Repeat("a", 64), }, - Spec: RouteSpec{ - Traffic: []TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ RevisionName: "foo", Percent: ptr.Int64(100), }}, @@ -489,8 +490,8 @@ func TestRouteValidation(t *testing.T) { } func TestRouteLabelValidation(t *testing.T) { - validRouteSpec := RouteSpec{ - Traffic: []TrafficTarget{{ + validRouteSpec := v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: "bar", RevisionName: "foo", Percent: ptr.Int64(100), diff --git a/pkg/apis/serving/v1beta1/service_defaults.go b/pkg/apis/serving/v1beta1/service_defaults.go index 09af86568f28..e05d1ca81418 100644 --- a/pkg/apis/serving/v1beta1/service_defaults.go +++ b/pkg/apis/serving/v1beta1/service_defaults.go @@ -49,9 +49,3 @@ func (s *Service) SetDefaults(ctx context.Context) { } } } - -// SetDefaults implements apis.Defaultable -func (ss *ServiceSpec) SetDefaults(ctx context.Context) { - ss.ConfigurationSpec.SetDefaults(ctx) - ss.RouteSpec.SetDefaults(WithDefaultConfigurationName(ctx)) -} diff --git a/pkg/apis/serving/v1beta1/service_defaults_test.go b/pkg/apis/serving/v1beta1/service_defaults_test.go index b5a1de96d453..59ff1ef1a7ee 100644 --- a/pkg/apis/serving/v1beta1/service_defaults_test.go +++ b/pkg/apis/serving/v1beta1/service_defaults_test.go @@ -28,6 +28,7 @@ import ( "knative.dev/pkg/ptr" "knative.dev/serving/pkg/apis/config" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" ) func TestServiceDefaulting(t *testing.T) { @@ -39,17 +40,17 @@ func TestServiceDefaulting(t *testing.T) { name: "empty", in: &Service{}, want: &Service{ - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(config.DefaultRevisionTimeoutSeconds), ContainerConcurrency: ptr.Int64(config.DefaultContainerConcurrency), }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), }}, @@ -59,10 +60,10 @@ func TestServiceDefaulting(t *testing.T) { }, { name: "run latest", in: &Service{ - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -74,10 +75,10 @@ func TestServiceDefaulting(t *testing.T) { }, }, want: &Service{ - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Name: config.DefaultUserContainerName, @@ -91,8 +92,8 @@ func TestServiceDefaulting(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), }}, @@ -102,10 +103,10 @@ func TestServiceDefaulting(t *testing.T) { }, { name: "run latest with some default overrides", in: &Service{ - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -119,10 +120,10 @@ func TestServiceDefaulting(t *testing.T) { }, }, want: &Service{ - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Name: config.DefaultUserContainerName, @@ -136,8 +137,8 @@ func TestServiceDefaulting(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), }}, @@ -147,10 +148,10 @@ func TestServiceDefaulting(t *testing.T) { }, { name: "byo traffic block", in: &Service{ - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -159,8 +160,8 @@ func TestServiceDefaulting(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: "current", RevisionName: "foo", Percent: ptr.Int64(90), @@ -175,10 +176,10 @@ func TestServiceDefaulting(t *testing.T) { }, }, want: &Service{ - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Name: config.DefaultUserContainerName, @@ -192,8 +193,8 @@ func TestServiceDefaulting(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: "current", RevisionName: "foo", Percent: ptr.Int64(90), @@ -278,10 +279,10 @@ func TestAnnotateUserInfo(t *testing.T) { name: "update-diff-old-object", user: u2, this: &Service{ - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), }, }, @@ -289,10 +290,10 @@ func TestAnnotateUserInfo(t *testing.T) { }, }, prev: &Service{ - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(2), }, }, @@ -306,10 +307,10 @@ func TestAnnotateUserInfo(t *testing.T) { name: "update-diff-new-object", user: u3, this: withUserAnns(u1, u2, &Service{ - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), }, }, @@ -317,10 +318,10 @@ func TestAnnotateUserInfo(t *testing.T) { }, }), prev: withUserAnns(u1, u2, &Service{ - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(2), }, }, diff --git a/pkg/apis/serving/v1beta1/service_lifecycle.go b/pkg/apis/serving/v1beta1/service_lifecycle.go index 5168d911167e..ad59308fcd01 100644 --- a/pkg/apis/serving/v1beta1/service_lifecycle.go +++ b/pkg/apis/serving/v1beta1/service_lifecycle.go @@ -16,20 +16,9 @@ limitations under the License. package v1beta1 -import ( - "k8s.io/apimachinery/pkg/runtime/schema" - - "knative.dev/pkg/apis" -) - -var serviceCondSet = apis.NewLivingConditionSet() +import "k8s.io/apimachinery/pkg/runtime/schema" // GetGroupVersionKind returns the GroupVersionKind. func (s *Service) GetGroupVersionKind() schema.GroupVersionKind { return SchemeGroupVersion.WithKind("Service") } - -// IsReady returns if the service is ready to serve the requested configuration. -func (ss *ServiceStatus) IsReady() bool { - return serviceCondSet.Manage(ss).IsHappy() -} diff --git a/pkg/apis/serving/v1beta1/service_types.go b/pkg/apis/serving/v1beta1/service_types.go index fd1d8fe81821..66f106e3955d 100644 --- a/pkg/apis/serving/v1beta1/service_types.go +++ b/pkg/apis/serving/v1beta1/service_types.go @@ -20,8 +20,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "knative.dev/pkg/apis" - duckv1 "knative.dev/pkg/apis/duck/v1" "knative.dev/pkg/kmeta" + "knative.dev/serving/pkg/apis/serving/v1" ) // +genclient @@ -45,10 +45,10 @@ type Service struct { metav1.ObjectMeta `json:"metadata,omitempty"` // +optional - Spec ServiceSpec `json:"spec,omitempty"` + Spec v1.ServiceSpec `json:"spec,omitempty"` // +optional - Status ServiceStatus `json:"status,omitempty"` + Status v1.ServiceStatus `json:"status,omitempty"` } // Verify that Service adheres to the appropriate interfaces. @@ -64,24 +64,6 @@ var ( _ kmeta.OwnerRefable = (*Service)(nil) ) -// ServiceSpec represents the configuration for the Service object. -// A Service's specification is the union of the specifications for a Route -// and Configuration. The Service restricts what can be expressed in these -// fields, e.g. the Route must reference the provided Configuration; -// however, these limitations also enable friendlier defaulting, -// e.g. Route never needs a Configuration name, and may be defaulted to -// the appropriate "run latest" spec. -type ServiceSpec struct { - // ServiceSpec inlines an unrestricted ConfigurationSpec. - ConfigurationSpec `json:",inline"` - - // ServiceSpec inlines RouteSpec and restricts/defaults its fields - // via webhook. In particular, this spec can only reference this - // Service's configuration and revisions (which also influences - // defaults). - RouteSpec `json:",inline"` -} - // ConditionType represents a Service condition value const ( // ServiceConditionReady is set when the service is configured @@ -89,19 +71,6 @@ const ( ServiceConditionReady = apis.ConditionReady ) -// ServiceStatus represents the Status stanza of the Service resource. -type ServiceStatus struct { - duckv1.Status `json:",inline"` - - // In addition to inlining ConfigurationSpec, we also inline the fields - // specific to ConfigurationStatus. - ConfigurationStatusFields `json:",inline"` - - // In addition to inlining RouteSpec, we also inline the fields - // specific to RouteStatus. - RouteStatusFields `json:",inline"` -} - // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // ServiceList is a list of Service resources diff --git a/pkg/apis/serving/v1beta1/service_validation.go b/pkg/apis/serving/v1beta1/service_validation.go index d823b02b38f3..6daced418cae 100644 --- a/pkg/apis/serving/v1beta1/service_validation.go +++ b/pkg/apis/serving/v1beta1/service_validation.go @@ -51,26 +51,12 @@ func (s *Service) Validate(ctx context.Context) (errs *apis.FieldError) { return errs } -// Validate implements apis.Validatable -func (ss *ServiceSpec) Validate(ctx context.Context) *apis.FieldError { - return ss.ConfigurationSpec.Validate(ctx).Also( - // Within the context of Service, the RouteSpec has a default - // configurationName. - ss.RouteSpec.Validate(WithDefaultConfigurationName(ctx))) -} - -// Validate implements apis.Validatable -func (ss *ServiceStatus) Validate(ctx context.Context) *apis.FieldError { - return ss.ConfigurationStatusFields.Validate(ctx).Also( - ss.RouteStatusFields.Validate(ctx)) -} - // validateLabels function validates service labels func (s *Service) validateLabels() (errs *apis.FieldError) { for key, val := range s.GetLabels() { switch { case key == config.VisibilityLabelKey: - errs = errs.Also(validateClusterVisibilityLabel(val)) + errs = errs.Also(serving.ValidateClusterVisibilityLabel(val)) case strings.HasPrefix(key, serving.GroupNamePrefix): errs = errs.Also(apis.ErrInvalidKeyName(key, apis.CurrentField)) } diff --git a/pkg/apis/serving/v1beta1/service_validation_test.go b/pkg/apis/serving/v1beta1/service_validation_test.go index 05bcadda6684..70bf855a24cc 100644 --- a/pkg/apis/serving/v1beta1/service_validation_test.go +++ b/pkg/apis/serving/v1beta1/service_validation_test.go @@ -26,15 +26,16 @@ import ( "knative.dev/pkg/ptr" "knative.dev/serving/pkg/apis/config" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" routeconfig "knative.dev/serving/pkg/reconciler/route/config" "knative.dev/pkg/apis" ) func TestServiceValidation(t *testing.T) { - goodConfigSpec := ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + goodConfigSpec := v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -43,8 +44,8 @@ func TestServiceValidation(t *testing.T) { }, }, } - goodRouteSpec := RouteSpec{ - Traffic: []TrafficTarget{{ + goodRouteSpec := v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }}, @@ -60,10 +61,10 @@ func TestServiceValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ServiceSpec{ + Spec: v1.ServiceSpec{ ConfigurationSpec: goodConfigSpec, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }}, @@ -80,7 +81,7 @@ func TestServiceValidation(t *testing.T) { routeconfig.VisibilityLabelKey: "cluster-local", }, }, - Spec: ServiceSpec{ + Spec: v1.ServiceSpec{ ConfigurationSpec: goodConfigSpec, RouteSpec: goodRouteSpec, }, @@ -95,7 +96,7 @@ func TestServiceValidation(t *testing.T) { "serving.knative.dev/name": "some-value", }, }, - Spec: ServiceSpec{ + Spec: v1.ServiceSpec{ ConfigurationSpec: goodConfigSpec, RouteSpec: goodRouteSpec, }, @@ -110,7 +111,7 @@ func TestServiceValidation(t *testing.T) { "serving.name": "some-name", }, }, - Spec: ServiceSpec{ + Spec: v1.ServiceSpec{ ConfigurationSpec: goodConfigSpec, RouteSpec: goodRouteSpec, }, @@ -125,7 +126,7 @@ func TestServiceValidation(t *testing.T) { routeconfig.VisibilityLabelKey: "bad-label", }, }, - Spec: ServiceSpec{ + Spec: v1.ServiceSpec{ ConfigurationSpec: goodConfigSpec, RouteSpec: goodRouteSpec, }, @@ -137,10 +138,10 @@ func TestServiceValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ServiceSpec{ + Spec: v1.ServiceSpec{ ConfigurationSpec: goodConfigSpec, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: "current", LatestRevision: ptr.Bool(false), RevisionName: "valid-00001", @@ -165,10 +166,10 @@ func TestServiceValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ServiceSpec{ + Spec: v1.ServiceSpec{ ConfigurationSpec: goodConfigSpec, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ ConfigurationName: "valid", LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), @@ -183,10 +184,10 @@ func TestServiceValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ServiceSpec{ + Spec: v1.ServiceSpec{ ConfigurationSpec: goodConfigSpec, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ RevisionName: "valid", LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), @@ -201,10 +202,10 @@ func TestServiceValidation(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -214,8 +215,8 @@ func TestServiceValidation(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }}, @@ -253,10 +254,10 @@ func TestImmutableServiceFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "no-byo-name", }, - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:foo", @@ -265,8 +266,8 @@ func TestImmutableServiceFields(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }}, @@ -277,10 +278,10 @@ func TestImmutableServiceFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "no-byo-name", }, - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:bar", @@ -289,8 +290,8 @@ func TestImmutableServiceFields(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }}, @@ -304,13 +305,13 @@ func TestImmutableServiceFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "byo-name", }, - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-foo", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:foo", @@ -319,8 +320,8 @@ func TestImmutableServiceFields(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ RevisionName: "byo-name-foo", // Used it! Percent: ptr.Int64(100), }}, @@ -331,13 +332,13 @@ func TestImmutableServiceFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "byo-name", }, - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-bar", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:bar", @@ -346,8 +347,8 @@ func TestImmutableServiceFields(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ RevisionName: "byo-name-bar", // Used it! Percent: ptr.Int64(100), }}, @@ -361,13 +362,13 @@ func TestImmutableServiceFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "byo-name", }, - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-foo", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:foo", @@ -376,8 +377,8 @@ func TestImmutableServiceFields(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ RevisionName: "byo-name-bar", // Leave old. Percent: ptr.Int64(100), }}, @@ -388,13 +389,13 @@ func TestImmutableServiceFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "byo-name", }, - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-bar", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:bar", @@ -403,8 +404,8 @@ func TestImmutableServiceFields(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ RevisionName: "byo-name-bar", // Used it! Percent: ptr.Int64(100), }}, @@ -418,13 +419,13 @@ func TestImmutableServiceFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "byo-name", }, - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-foo", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:foo", @@ -433,8 +434,8 @@ func TestImmutableServiceFields(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }}, @@ -445,13 +446,13 @@ func TestImmutableServiceFields(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "byo-name", }, - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Name: "byo-name-foo", }, - Spec: RevisionSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:bar", @@ -460,8 +461,8 @@ func TestImmutableServiceFields(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }}, @@ -471,7 +472,7 @@ func TestImmutableServiceFields(t *testing.T) { want: &apis.FieldError{ Message: "Saw the following changes without a name change (-old +new)", Paths: []string{"spec.template"}, - Details: "{*v1beta1.RevisionTemplateSpec}.Spec.PodSpec.Containers[0].Image:\n\t-: \"helloworld:bar\"\n\t+: \"helloworld:foo\"\n", + Details: "{*v1.RevisionTemplateSpec}.Spec.PodSpec.Containers[0].Image:\n\t-: \"helloworld:bar\"\n\t+: \"helloworld:foo\"\n", }, }} @@ -500,10 +501,10 @@ func TestServiceSubresourceUpdate(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:foo", @@ -513,8 +514,8 @@ func TestServiceSubresourceUpdate(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }}, @@ -529,10 +530,10 @@ func TestServiceSubresourceUpdate(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:foo", @@ -542,8 +543,8 @@ func TestServiceSubresourceUpdate(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }}, @@ -558,10 +559,10 @@ func TestServiceSubresourceUpdate(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:foo", @@ -571,16 +572,16 @@ func TestServiceSubresourceUpdate(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }}, }, }, - Status: ServiceStatus{ - RouteStatusFields: RouteStatusFields{ - Traffic: []TrafficTarget{{ + Status: v1.ServiceStatus{ + RouteStatusFields: v1.RouteStatusFields{ + Traffic: []v1.TrafficTarget{{ Tag: "bar", RevisionName: "foo", Percent: ptr.Int64(50), URL: &apis.URL{ @@ -602,10 +603,10 @@ func TestServiceSubresourceUpdate(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:foo", @@ -615,8 +616,8 @@ func TestServiceSubresourceUpdate(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }}, @@ -631,10 +632,10 @@ func TestServiceSubresourceUpdate(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "valid", }, - Spec: ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ + Spec: v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "helloworld:foo", @@ -644,8 +645,8 @@ func TestServiceSubresourceUpdate(t *testing.T) { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }}, @@ -671,11 +672,11 @@ func TestServiceSubresourceUpdate(t *testing.T) { } } -func getServiceSpec(image string) ServiceSpec { - return ServiceSpec{ - ConfigurationSpec: ConfigurationSpec{ - Template: RevisionTemplateSpec{ - Spec: RevisionSpec{ +func getServiceSpec(image string) v1.ServiceSpec { + return v1.ServiceSpec{ + ConfigurationSpec: v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: image, @@ -685,8 +686,8 @@ func getServiceSpec(image string) ServiceSpec { }, }, }, - RouteSpec: RouteSpec{ - Traffic: []TrafficTarget{{ + RouteSpec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ LatestRevision: ptr.Bool(true), Percent: ptr.Int64(100), }}, diff --git a/pkg/apis/serving/v1beta1/zz_generated.deepcopy.go b/pkg/apis/serving/v1beta1/zz_generated.deepcopy.go index 43697fdd9e37..4c6ac4637d6d 100644 --- a/pkg/apis/serving/v1beta1/zz_generated.deepcopy.go +++ b/pkg/apis/serving/v1beta1/zz_generated.deepcopy.go @@ -22,8 +22,6 @@ package v1beta1 import ( runtime "k8s.io/apimachinery/pkg/runtime" - apis "knative.dev/pkg/apis" - duckv1beta1 "knative.dev/pkg/apis/duck/v1beta1" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -87,57 +85,6 @@ func (in *ConfigurationList) DeepCopyObject() runtime.Object { return nil } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConfigurationSpec) DeepCopyInto(out *ConfigurationSpec) { - *out = *in - in.Template.DeepCopyInto(&out.Template) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationSpec. -func (in *ConfigurationSpec) DeepCopy() *ConfigurationSpec { - if in == nil { - return nil - } - out := new(ConfigurationSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConfigurationStatus) DeepCopyInto(out *ConfigurationStatus) { - *out = *in - in.Status.DeepCopyInto(&out.Status) - out.ConfigurationStatusFields = in.ConfigurationStatusFields - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationStatus. -func (in *ConfigurationStatus) DeepCopy() *ConfigurationStatus { - if in == nil { - return nil - } - out := new(ConfigurationStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConfigurationStatusFields) DeepCopyInto(out *ConfigurationStatusFields) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationStatusFields. -func (in *ConfigurationStatusFields) DeepCopy() *ConfigurationStatusFields { - if in == nil { - return nil - } - out := new(ConfigurationStatusFields) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Revision) DeepCopyInto(out *Revision) { *out = *in @@ -199,68 +146,6 @@ func (in *RevisionList) DeepCopyObject() runtime.Object { return nil } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RevisionSpec) DeepCopyInto(out *RevisionSpec) { - *out = *in - in.PodSpec.DeepCopyInto(&out.PodSpec) - if in.ContainerConcurrency != nil { - in, out := &in.ContainerConcurrency, &out.ContainerConcurrency - *out = new(int64) - **out = **in - } - if in.TimeoutSeconds != nil { - in, out := &in.TimeoutSeconds, &out.TimeoutSeconds - *out = new(int64) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RevisionSpec. -func (in *RevisionSpec) DeepCopy() *RevisionSpec { - if in == nil { - return nil - } - out := new(RevisionSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RevisionStatus) DeepCopyInto(out *RevisionStatus) { - *out = *in - in.Status.DeepCopyInto(&out.Status) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RevisionStatus. -func (in *RevisionStatus) DeepCopy() *RevisionStatus { - if in == nil { - return nil - } - out := new(RevisionStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RevisionTemplateSpec) DeepCopyInto(out *RevisionTemplateSpec) { - *out = *in - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RevisionTemplateSpec. -func (in *RevisionTemplateSpec) DeepCopy() *RevisionTemplateSpec { - if in == nil { - return nil - } - out := new(RevisionTemplateSpec) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Route) DeepCopyInto(out *Route) { *out = *in @@ -322,80 +207,6 @@ func (in *RouteList) DeepCopyObject() runtime.Object { return nil } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RouteSpec) DeepCopyInto(out *RouteSpec) { - *out = *in - if in.Traffic != nil { - in, out := &in.Traffic, &out.Traffic - *out = make([]TrafficTarget, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouteSpec. -func (in *RouteSpec) DeepCopy() *RouteSpec { - if in == nil { - return nil - } - out := new(RouteSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RouteStatus) DeepCopyInto(out *RouteStatus) { - *out = *in - in.Status.DeepCopyInto(&out.Status) - in.RouteStatusFields.DeepCopyInto(&out.RouteStatusFields) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouteStatus. -func (in *RouteStatus) DeepCopy() *RouteStatus { - if in == nil { - return nil - } - out := new(RouteStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RouteStatusFields) DeepCopyInto(out *RouteStatusFields) { - *out = *in - if in.URL != nil { - in, out := &in.URL, &out.URL - *out = new(apis.URL) - (*in).DeepCopyInto(*out) - } - if in.Address != nil { - in, out := &in.Address, &out.Address - *out = new(duckv1beta1.Addressable) - (*in).DeepCopyInto(*out) - } - if in.Traffic != nil { - in, out := &in.Traffic, &out.Traffic - *out = make([]TrafficTarget, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouteStatusFields. -func (in *RouteStatusFields) DeepCopy() *RouteStatusFields { - if in == nil { - return nil - } - out := new(RouteStatusFields) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Service) DeepCopyInto(out *Service) { *out = *in @@ -456,71 +267,3 @@ func (in *ServiceList) DeepCopyObject() runtime.Object { } return nil } - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec) { - *out = *in - in.ConfigurationSpec.DeepCopyInto(&out.ConfigurationSpec) - in.RouteSpec.DeepCopyInto(&out.RouteSpec) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceSpec. -func (in *ServiceSpec) DeepCopy() *ServiceSpec { - if in == nil { - return nil - } - out := new(ServiceSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ServiceStatus) DeepCopyInto(out *ServiceStatus) { - *out = *in - in.Status.DeepCopyInto(&out.Status) - out.ConfigurationStatusFields = in.ConfigurationStatusFields - in.RouteStatusFields.DeepCopyInto(&out.RouteStatusFields) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceStatus. -func (in *ServiceStatus) DeepCopy() *ServiceStatus { - if in == nil { - return nil - } - out := new(ServiceStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TrafficTarget) DeepCopyInto(out *TrafficTarget) { - *out = *in - if in.LatestRevision != nil { - in, out := &in.LatestRevision, &out.LatestRevision - *out = new(bool) - **out = **in - } - if in.Percent != nil { - in, out := &in.Percent, &out.Percent - *out = new(int64) - **out = **in - } - if in.URL != nil { - in, out := &in.URL, &out.URL - *out = new(apis.URL) - (*in).DeepCopyInto(*out) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrafficTarget. -func (in *TrafficTarget) DeepCopy() *TrafficTarget { - if in == nil { - return nil - } - out := new(TrafficTarget) - in.DeepCopyInto(out) - return out -} diff --git a/pkg/reconciler/configuration/configuration.go b/pkg/reconciler/configuration/configuration.go index 216deda729b7..4912963d41ae 100644 --- a/pkg/reconciler/configuration/configuration.go +++ b/pkg/reconciler/configuration/configuration.go @@ -31,6 +31,7 @@ import ( "knative.dev/pkg/controller" "knative.dev/pkg/logging" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" "knative.dev/serving/pkg/apis/serving/v1beta1" listers "knative.dev/serving/pkg/client/listers/serving/v1alpha1" @@ -116,7 +117,7 @@ func (c *Reconciler) reconcile(ctx context.Context, config *v1alpha1.Configurati // and may not have had all of the assumed defaults specified. This won't result // in this getting written back to the API Server, but lets downstream logic make // assumptions about defaulting. - config.SetDefaults(v1beta1.WithUpgradeViaDefaulting(ctx)) + config.SetDefaults(v1.WithUpgradeViaDefaulting(ctx)) config.Status.InitializeConditions() if err := config.ConvertUp(ctx, &v1beta1.Configuration{}); err != nil { diff --git a/pkg/reconciler/configuration/configuration_test.go b/pkg/reconciler/configuration/configuration_test.go index 8f24d9be799b..366e25df919d 100644 --- a/pkg/reconciler/configuration/configuration_test.go +++ b/pkg/reconciler/configuration/configuration_test.go @@ -34,8 +34,8 @@ import ( "knative.dev/pkg/controller" logtesting "knative.dev/pkg/logging/testing" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/pkg/reconciler" "knative.dev/serving/pkg/reconciler/configuration/resources" @@ -45,7 +45,7 @@ import ( ) var revisionSpec = v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -426,7 +426,7 @@ func cfg(name, namespace string, generation int64, co ...ConfigOption) *v1alpha1 func rev(name, namespace string, generation int64, ro ...RevisionOption) *v1alpha1.Revision { r := resources.MakeRevision(cfg(name, namespace, generation)) - r.SetDefaults(v1beta1.WithUpgradeViaDefaulting(context.Background())) + r.SetDefaults(v1.WithUpgradeViaDefaulting(context.Background())) for _, opt := range ro { opt(r) } diff --git a/pkg/reconciler/configuration/queueing_test.go b/pkg/reconciler/configuration/queueing_test.go index b97b8289bd07..1edc55fdd460 100644 --- a/pkg/reconciler/configuration/queueing_test.go +++ b/pkg/reconciler/configuration/queueing_test.go @@ -29,8 +29,8 @@ import ( "knative.dev/pkg/controller" logtesting "knative.dev/pkg/logging/testing" "knative.dev/pkg/system" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" fakeservingclient "knative.dev/serving/pkg/client/injection/client/fake" "knative.dev/serving/pkg/gc" @@ -51,7 +51,7 @@ func getTestConfiguration() *v1alpha1.Configuration { Spec: v1alpha1.ConfigurationSpec{ Template: &v1alpha1.RevisionTemplateSpec{ Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ ServiceAccountName: "test-account", // corev1.Container has a lot of setting. We try to pass many diff --git a/pkg/reconciler/gc/gc_test.go b/pkg/reconciler/gc/gc_test.go index d609a74b156b..e7e455177dd3 100644 --- a/pkg/reconciler/gc/gc_test.go +++ b/pkg/reconciler/gc/gc_test.go @@ -33,8 +33,8 @@ import ( logtesting "knative.dev/pkg/logging/testing" "knative.dev/pkg/ptr" . "knative.dev/pkg/reconciler/testing" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" _ "knative.dev/serving/pkg/client/injection/informers/serving/v1alpha1/configuration/fake" _ "knative.dev/serving/pkg/client/injection/informers/serving/v1alpha1/revision/fake" gcconfig "knative.dev/serving/pkg/gc" @@ -46,7 +46,7 @@ import ( ) var revisionSpec = v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -343,7 +343,7 @@ func cfg(name, namespace string, generation int64, co ...ConfigOption) *v1alpha1 func rev(name, namespace string, generation int64, ro ...RevisionOption) *v1alpha1.Revision { r := resources.MakeRevision(cfg(name, namespace, generation)) - r.SetDefaults(v1beta1.WithUpgradeViaDefaulting(context.Background())) + r.SetDefaults(v1.WithUpgradeViaDefaulting(context.Background())) for _, opt := range ro { opt(r) } diff --git a/pkg/reconciler/labeler/labeler_test.go b/pkg/reconciler/labeler/labeler_test.go index 433503f4bcc1..a21ecbad2a51 100644 --- a/pkg/reconciler/labeler/labeler_test.go +++ b/pkg/reconciler/labeler/labeler_test.go @@ -35,8 +35,8 @@ import ( "knative.dev/pkg/kmeta" logtesting "knative.dev/pkg/logging/testing" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/pkg/reconciler" . "knative.dev/pkg/reconciler/testing" @@ -225,7 +225,7 @@ func routeWithTraffic(namespace, name string, traffic ...v1alpha1.TrafficTarget) func simpleRunLatest(namespace, name, config string) *v1alpha1.Route { return routeWithTraffic(namespace, name, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: config + "-dbnfd", Percent: ptr.Int64(100), }, diff --git a/pkg/reconciler/revision/queueing_test.go b/pkg/reconciler/revision/queueing_test.go index 4fa5013bd94d..018f3fbfa3fd 100644 --- a/pkg/reconciler/revision/queueing_test.go +++ b/pkg/reconciler/revision/queueing_test.go @@ -34,8 +34,8 @@ import ( tracetesting "knative.dev/pkg/tracing/testing" autoscalingv1alpha1 "knative.dev/serving/pkg/apis/autoscaling/v1alpha1" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/pkg/autoscaler" fakeservingclient "knative.dev/serving/pkg/client/injection/client/fake" "knative.dev/serving/pkg/deployment" @@ -78,7 +78,7 @@ func testRevision() *v1alpha1.Revision { UID: "test-rev-uid", }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ // corev1.Container has a lot of setting. We try to pass many // of them here to verify that we pass through the settings to diff --git a/pkg/reconciler/revision/resources/deploy_test.go b/pkg/reconciler/revision/resources/deploy_test.go index b695e5d45541..6560396b536b 100644 --- a/pkg/reconciler/revision/resources/deploy_test.go +++ b/pkg/reconciler/revision/resources/deploy_test.go @@ -36,8 +36,8 @@ import ( tracingconfig "knative.dev/pkg/tracing/config" "knative.dev/serving/pkg/apis/networking" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/pkg/autoscaler" "knative.dev/serving/pkg/deployment" "knative.dev/serving/pkg/metrics" @@ -233,7 +233,7 @@ var ( Name: containerName, Image: "busybox", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(45), }, }, diff --git a/pkg/reconciler/revision/resources/imagecache_test.go b/pkg/reconciler/revision/resources/imagecache_test.go index 53063f1560ef..a3c8d7700177 100644 --- a/pkg/reconciler/revision/resources/imagecache_test.go +++ b/pkg/reconciler/revision/resources/imagecache_test.go @@ -26,8 +26,8 @@ import ( caching "knative.dev/caching/pkg/apis/caching/v1alpha1" "knative.dev/pkg/ptr" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" ) func TestMakeImageCache(t *testing.T) { @@ -48,7 +48,7 @@ func TestMakeImageCache(t *testing.T) { UID: "1234", }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), }, DeprecatedContainer: &corev1.Container{ @@ -93,7 +93,7 @@ func TestMakeImageCache(t *testing.T) { UID: "1234", }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), PodSpec: corev1.PodSpec{ ServiceAccountName: "privilegeless", diff --git a/pkg/reconciler/revision/resources/pa_test.go b/pkg/reconciler/revision/resources/pa_test.go index 3cccad3eb9a8..1fc805eb9eac 100644 --- a/pkg/reconciler/revision/resources/pa_test.go +++ b/pkg/reconciler/revision/resources/pa_test.go @@ -29,8 +29,8 @@ import ( av1alpha1 "knative.dev/serving/pkg/apis/autoscaling/v1alpha1" "knative.dev/serving/pkg/apis/networking" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" ) func TestMakePA(t *testing.T) { @@ -55,7 +55,7 @@ func TestMakePA(t *testing.T) { }, }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), }, }, @@ -105,7 +105,7 @@ func TestMakePA(t *testing.T) { UID: "4321", }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(0), }, DeprecatedContainer: &corev1.Container{ @@ -158,7 +158,7 @@ func TestMakePA(t *testing.T) { UID: "4321", }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(0), }, DeprecatedContainer: &corev1.Container{ diff --git a/pkg/reconciler/revision/resources/queue_test.go b/pkg/reconciler/revision/resources/queue_test.go index 6baf92ac2d0f..5a9093eacd63 100644 --- a/pkg/reconciler/revision/resources/queue_test.go +++ b/pkg/reconciler/revision/resources/queue_test.go @@ -39,8 +39,8 @@ import ( tracingconfig "knative.dev/pkg/tracing/config" "knative.dev/serving/pkg/apis/networking" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/pkg/autoscaler" "knative.dev/serving/pkg/deployment" "knative.dev/serving/pkg/metrics" @@ -95,7 +95,7 @@ func TestMakeQueueContainer(t *testing.T) { UID: "1234", }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(45), }, @@ -125,7 +125,7 @@ func TestMakeQueueContainer(t *testing.T) { UID: "1234", }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(45), PodSpec: corev1.PodSpec{ @@ -174,7 +174,7 @@ func TestMakeQueueContainer(t *testing.T) { }, }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(45), }, @@ -215,7 +215,7 @@ func TestMakeQueueContainer(t *testing.T) { }}, }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(0), TimeoutSeconds: ptr.Int64(45), }, @@ -250,7 +250,7 @@ func TestMakeQueueContainer(t *testing.T) { UID: "1234", }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(0), TimeoutSeconds: ptr.Int64(45), }, @@ -291,7 +291,7 @@ func TestMakeQueueContainer(t *testing.T) { UID: "1234", }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(10), TimeoutSeconds: ptr.Int64(45), }, @@ -323,7 +323,7 @@ func TestMakeQueueContainer(t *testing.T) { UID: "1234", }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(0), TimeoutSeconds: ptr.Int64(45), }, @@ -356,7 +356,7 @@ func TestMakeQueueContainer(t *testing.T) { UID: "1234", }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(0), TimeoutSeconds: ptr.Int64(45), }, @@ -438,7 +438,7 @@ func TestMakeQueueContainerWithPercentageAnnotation(t *testing.T) { }, }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(45), PodSpec: corev1.PodSpec{ @@ -498,7 +498,7 @@ func TestMakeQueueContainerWithPercentageAnnotation(t *testing.T) { }, }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(45), PodSpec: corev1.PodSpec{ @@ -555,7 +555,7 @@ func TestMakeQueueContainerWithPercentageAnnotation(t *testing.T) { }, }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(45), PodSpec: corev1.PodSpec{ @@ -611,7 +611,7 @@ func TestMakeQueueContainerWithPercentageAnnotation(t *testing.T) { }, }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(45), PodSpec: corev1.PodSpec{ @@ -694,7 +694,7 @@ func TestProbeGenerationHTTPDefaults(t *testing.T) { UID: "1234", }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(45), PodSpec: corev1.PodSpec{ @@ -784,7 +784,7 @@ func TestProbeGenerationHTTP(t *testing.T) { UID: "1234", }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(45), PodSpec: corev1.PodSpec{ @@ -888,7 +888,7 @@ func TestTCPProbeGeneration(t *testing.T) { SuccessThreshold: 3, }, rev: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(45), PodSpec: corev1.PodSpec{ @@ -929,7 +929,7 @@ func TestTCPProbeGeneration(t *testing.T) { }, { name: "tcp defaults", rev: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(45), PodSpec: corev1.PodSpec{ @@ -989,7 +989,7 @@ func TestTCPProbeGeneration(t *testing.T) { InitialDelaySeconds: 3, }, rev: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ ContainerConcurrency: ptr.Int64(1), TimeoutSeconds: ptr.Int64(45), PodSpec: corev1.PodSpec{ diff --git a/pkg/reconciler/revision/revision.go b/pkg/reconciler/revision/revision.go index f21c00c8e8da..970141098cca 100644 --- a/pkg/reconciler/revision/revision.go +++ b/pkg/reconciler/revision/revision.go @@ -33,6 +33,7 @@ import ( cachinglisters "knative.dev/caching/pkg/client/listers/caching/v1alpha1" "knative.dev/pkg/controller" commonlogging "knative.dev/pkg/logging" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" "knative.dev/serving/pkg/apis/serving/v1beta1" palisters "knative.dev/serving/pkg/client/listers/autoscaling/v1alpha1" @@ -161,7 +162,7 @@ func (c *Reconciler) reconcile(ctx context.Context, rev *v1alpha1.Revision) erro // and may not have had all of the assumed defaults specified. This won't result // in this getting written back to the API Server, but lets downstream logic make // assumptions about defaulting. - rev.SetDefaults(v1beta1.WithUpgradeViaDefaulting(ctx)) + rev.SetDefaults(v1.WithUpgradeViaDefaulting(ctx)) rev.Status.InitializeConditions() c.updateRevisionLoggingURL(ctx, rev) diff --git a/pkg/reconciler/revision/table_test.go b/pkg/reconciler/revision/table_test.go index 9b4552b8d869..ba9e21e2c134 100644 --- a/pkg/reconciler/revision/table_test.go +++ b/pkg/reconciler/revision/table_test.go @@ -34,8 +34,8 @@ import ( tracingconfig "knative.dev/pkg/tracing/config" asv1a1 "knative.dev/serving/pkg/apis/autoscaling/v1alpha1" "knative.dev/serving/pkg/apis/networking" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/pkg/autoscaler" "knative.dev/serving/pkg/metrics" "knative.dev/serving/pkg/network" @@ -613,7 +613,7 @@ func rev(namespace, name string, ro ...RevisionOption) *v1alpha1.Revision { UID: "test-uid", }, Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", diff --git a/pkg/reconciler/route/queueing_test.go b/pkg/reconciler/route/queueing_test.go index 890e574fddfa..703f0b5544ad 100644 --- a/pkg/reconciler/route/queueing_test.go +++ b/pkg/reconciler/route/queueing_test.go @@ -31,8 +31,8 @@ import ( "knative.dev/pkg/ptr" "knative.dev/pkg/system" netv1alpha1 "knative.dev/serving/pkg/apis/networking/v1alpha1" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" fakeservingclient "knative.dev/serving/pkg/client/injection/client/fake" "knative.dev/serving/pkg/gc" "knative.dev/serving/pkg/network" @@ -50,7 +50,7 @@ func TestNewRouteCallsSyncHandler(t *testing.T) { // A route targeting the revision route := getTestRouteWithTrafficTargets( []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "test-rev", Percent: ptr.Int64(100), }, diff --git a/pkg/reconciler/route/reconcile_resources_test.go b/pkg/reconciler/route/reconcile_resources_test.go index 1a97acbd1e45..12a34eb58b64 100644 --- a/pkg/reconciler/route/reconcile_resources_test.go +++ b/pkg/reconciler/route/reconcile_resources_test.go @@ -29,8 +29,8 @@ import ( "knative.dev/pkg/ptr" "knative.dev/pkg/system" netv1alpha1 "knative.dev/serving/pkg/apis/networking/v1alpha1" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" fakecertinformer "knative.dev/serving/pkg/client/injection/informers/networking/v1alpha1/certificate/fake" fakeciinformer "knative.dev/serving/pkg/client/injection/informers/networking/v1alpha1/clusteringress/fake" "knative.dev/serving/pkg/gc" @@ -98,7 +98,7 @@ func TestReconcileClusterIngressUpdate(t *testing.T) { ci2 := newTestClusterIngress(t, r, func(tc *traffic.Config) { tc.Targets[traffic.DefaultTarget][0].TrafficTarget.Percent = ptr.Int64(50) tc.Targets[traffic.DefaultTarget] = append(tc.Targets[traffic.DefaultTarget], traffic.RevisionTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(50), RevisionName: "revision2", }, @@ -139,7 +139,7 @@ func TestReconcileTargetRevisions(t *testing.T) { name: "Valid target revision", tc: traffic.Config{Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "revision", Percent: ptr.Int64(100), }, @@ -149,7 +149,7 @@ func TestReconcileTargetRevisions(t *testing.T) { name: "invalid target revision", tc: traffic.Config{Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "inal-revision", Percent: ptr.Int64(100), }, @@ -178,7 +178,7 @@ func TestReconcileTargetRevisions(t *testing.T) { func newTestClusterIngress(t *testing.T, r *v1alpha1.Route, trafficOpts ...func(tc *traffic.Config)) netv1alpha1.IngressAccessor { tc := &traffic.Config{Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "revision", Percent: ptr.Int64(100), }, diff --git a/pkg/reconciler/route/resources/ingress_test.go b/pkg/reconciler/route/resources/ingress_test.go index 9c4ddca3cb80..f0f2d7d68801 100644 --- a/pkg/reconciler/route/resources/ingress_test.go +++ b/pkg/reconciler/route/resources/ingress_test.go @@ -28,8 +28,8 @@ import ( "knative.dev/serving/pkg/apis/networking" netv1alpha1 "knative.dev/serving/pkg/apis/networking/v1alpha1" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/pkg/reconciler/route/config" "knative.dev/serving/pkg/reconciler/route/traffic" @@ -88,7 +88,7 @@ func TestMakeClusterIngress_CorrectMetadata(t *testing.T) { func TestMakeClusterIngressSpec_CorrectRules(t *testing.T) { targets := map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "config", RevisionName: "v2", Percent: ptr.Int64(100), @@ -97,7 +97,7 @@ func TestMakeClusterIngressSpec_CorrectRules(t *testing.T) { Active: true, }}, "v1": {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "config", RevisionName: "v1", Percent: ptr.Int64(100), @@ -250,7 +250,7 @@ func TestMakeClusterIngressSpec_CorrectRuleVisibility(t *testing.T) { }, targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "config", RevisionName: "v2", Percent: ptr.Int64(100), @@ -277,7 +277,7 @@ func TestMakeClusterIngressSpec_CorrectRuleVisibility(t *testing.T) { }, targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "config", RevisionName: "v2", Percent: ptr.Int64(100), @@ -305,7 +305,7 @@ func TestMakeClusterIngressSpec_CorrectRuleVisibility(t *testing.T) { }, targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "config", RevisionName: "v2", Percent: ptr.Int64(100), @@ -426,7 +426,7 @@ func TestGetRouteDomains_NamedTarget(t *testing.T) { // One active target. func TestMakeClusterIngressRule_Vanilla(t *testing.T) { targets := []traffic.RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "config", RevisionName: "revision", Percent: ptr.Int64(100), @@ -468,7 +468,7 @@ func TestMakeClusterIngressRule_Vanilla(t *testing.T) { // One active target and a target of zero percent. func TestMakeClusterIngressRule_ZeroPercentTarget(t *testing.T) { targets := []traffic.RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "config", RevisionName: "revision", Percent: ptr.Int64(100), @@ -476,7 +476,7 @@ func TestMakeClusterIngressRule_ZeroPercentTarget(t *testing.T) { ServiceName: "active-target", Active: true, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "new-config", RevisionName: "new-revision", Percent: ptr.Int64(0), @@ -515,7 +515,7 @@ func TestMakeClusterIngressRule_ZeroPercentTarget(t *testing.T) { // One active target and a target of nil (implied zero) percent. func TestMakeClusterIngressRule_NilPercentTarget(t *testing.T) { targets := []traffic.RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "config", RevisionName: "revision", Percent: ptr.Int64(100), @@ -523,7 +523,7 @@ func TestMakeClusterIngressRule_NilPercentTarget(t *testing.T) { ServiceName: "active-target", Active: true, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "new-config", RevisionName: "new-revision", Percent: nil, @@ -562,7 +562,7 @@ func TestMakeClusterIngressRule_NilPercentTarget(t *testing.T) { // Two active targets. func TestMakeClusterIngressRule_TwoTargets(t *testing.T) { targets := []traffic.RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "config", RevisionName: "revision", Percent: ptr.Int64(80), @@ -570,7 +570,7 @@ func TestMakeClusterIngressRule_TwoTargets(t *testing.T) { ServiceName: "nigh", Active: true, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "new-config", RevisionName: "new-revision", Percent: ptr.Int64(20), @@ -620,7 +620,7 @@ func TestMakeClusterIngressRule_TwoTargets(t *testing.T) { // Inactive target. func TestMakeClusterIngressRule_InactiveTarget(t *testing.T) { targets := []traffic.RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "config", RevisionName: "revision", Percent: ptr.Int64(100), @@ -661,7 +661,7 @@ func TestMakeClusterIngressRule_InactiveTarget(t *testing.T) { // Two inactive targets. func TestMakeClusterIngressRule_TwoInactiveTargets(t *testing.T) { targets := []traffic.RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "config", RevisionName: "revision", Percent: ptr.Int64(80), @@ -669,7 +669,7 @@ func TestMakeClusterIngressRule_TwoInactiveTargets(t *testing.T) { ServiceName: "up-quark", Active: false, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "new-config", RevisionName: "new-revision", Percent: ptr.Int64(20), @@ -720,7 +720,7 @@ func TestMakeClusterIngressRule_TwoInactiveTargets(t *testing.T) { func TestMakeClusterIngressRule_ZeroPercentTargetInactive(t *testing.T) { targets := []traffic.RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "config", RevisionName: "revision", Percent: ptr.Int64(100), @@ -728,7 +728,7 @@ func TestMakeClusterIngressRule_ZeroPercentTargetInactive(t *testing.T) { ServiceName: "apathy-sets-in", Active: true, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "new-config", RevisionName: "new-revision", Percent: ptr.Int64(0), @@ -765,7 +765,7 @@ func TestMakeClusterIngressRule_ZeroPercentTargetInactive(t *testing.T) { func TestMakeClusterIngressRule_NilPercentTargetInactive(t *testing.T) { targets := []traffic.RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "config", RevisionName: "revision", Percent: ptr.Int64(100), @@ -773,7 +773,7 @@ func TestMakeClusterIngressRule_NilPercentTargetInactive(t *testing.T) { ServiceName: "apathy-sets-in", Active: true, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "new-config", RevisionName: "new-revision", Percent: nil, diff --git a/pkg/reconciler/route/resources/service_test.go b/pkg/reconciler/route/resources/service_test.go index 2201813bd3d8..3521ed52d3d2 100644 --- a/pkg/reconciler/route/resources/service_test.go +++ b/pkg/reconciler/route/resources/service_test.go @@ -24,8 +24,8 @@ import ( "github.com/google/go-cmp/cmp" netv1alpha1 "knative.dev/serving/pkg/apis/networking/v1alpha1" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/pkg/gc" "knative.dev/serving/pkg/network" "knative.dev/serving/pkg/reconciler/route/config" @@ -295,7 +295,7 @@ func TestMakeK8sPlaceholderService(t *testing.T) { cfg := testConfig() ctx := config.ToContext(context.Background(), cfg) target := traffic.RevisionTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "foo", }, } @@ -398,16 +398,16 @@ func TestGetDesiredServiceNames(t *testing.T) { }, { name: "only default traffic", - traffic: []v1alpha1.TrafficTarget{{TrafficTarget: v1beta1.TrafficTarget{}}}, + traffic: []v1alpha1.TrafficTarget{{TrafficTarget: v1.TrafficTarget{}}}, want: sets.NewString("myroute"), }, { name: "traffic targets with tag", traffic: []v1alpha1.TrafficTarget{ - {TrafficTarget: v1beta1.TrafficTarget{}}, - {TrafficTarget: v1beta1.TrafficTarget{Tag: "hello"}}, - {TrafficTarget: v1beta1.TrafficTarget{Tag: "hello"}}, - {TrafficTarget: v1beta1.TrafficTarget{Tag: "bye"}}, + {TrafficTarget: v1.TrafficTarget{}}, + {TrafficTarget: v1.TrafficTarget{Tag: "hello"}}, + {TrafficTarget: v1.TrafficTarget{Tag: "hello"}}, + {TrafficTarget: v1.TrafficTarget{Tag: "bye"}}, }, want: sets.NewString("myroute", "hello-myroute", "bye-myroute"), }, diff --git a/pkg/reconciler/route/route.go b/pkg/reconciler/route/route.go index 11cd0646ee70..a851ebfe7231 100644 --- a/pkg/reconciler/route/route.go +++ b/pkg/reconciler/route/route.go @@ -42,6 +42,7 @@ import ( "knative.dev/pkg/tracker" "knative.dev/serving/pkg/apis/networking" netv1alpha1 "knative.dev/serving/pkg/apis/networking/v1alpha1" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" "knative.dev/serving/pkg/apis/serving/v1beta1" clientset "knative.dev/serving/pkg/client/clientset/versioned" @@ -184,7 +185,7 @@ func (c *Reconciler) reconcile(ctx context.Context, r *v1alpha1.Route) error { // and may not have had all of the assumed defaults specified. This won't result // in this getting written back to the API Server, but lets downstream logic make // assumptions about defaulting. - r.SetDefaults(v1beta1.WithUpgradeViaDefaulting(ctx)) + r.SetDefaults(v1.WithUpgradeViaDefaulting(ctx)) r.Status.InitializeConditions() if err := r.ConvertUp(ctx, &v1beta1.Route{}); err != nil { diff --git a/pkg/reconciler/route/route_test.go b/pkg/reconciler/route/route_test.go index 1f314f023078..54aaee8b4010 100644 --- a/pkg/reconciler/route/route_test.go +++ b/pkg/reconciler/route/route_test.go @@ -50,8 +50,8 @@ import ( "knative.dev/pkg/system" netv1alpha1 "knative.dev/serving/pkg/apis/networking/v1alpha1" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/pkg/gc" "knative.dev/serving/pkg/network" "knative.dev/serving/pkg/reconciler/route/config" @@ -290,7 +290,7 @@ func TestCreateRouteForOneReserveRevision(t *testing.T) { // A route targeting the revision route := getTestRouteWithTrafficTargets( []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "test-rev", ConfigurationName: "test-config", Percent: ptr.Int64(100), @@ -402,12 +402,12 @@ func TestCreateRouteWithMultipleTargets(t *testing.T) { // A route targeting both the config and standalone revision. route := getTestRouteWithTrafficTargets( []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: config.Name, Percent: ptr.Int64(90), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: rev.Name, Percent: ptr.Int64(10), }, @@ -491,12 +491,12 @@ func TestCreateRouteWithOneTargetReserve(t *testing.T) { // A route targeting both the config and standalone revision route := getTestRouteWithTrafficTargets( []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: config.Name, Percent: ptr.Int64(90), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: rev.Name, ConfigurationName: "test-config", Percent: ptr.Int64(10), @@ -578,39 +578,39 @@ func TestCreateRouteWithDuplicateTargets(t *testing.T) { // A route with duplicate targets. These will be deduped. route := getTestRouteWithTrafficTargets( []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "test-config", Percent: ptr.Int64(30), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "test-config", Percent: ptr.Int64(20), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "test-rev", Percent: ptr.Int64(10), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "test-rev", Percent: ptr.Int64(5), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "test-revision-1", RevisionName: "test-rev", Percent: ptr.Int64(10), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "test-revision-1", RevisionName: "test-rev", Percent: ptr.Int64(10), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "test-revision-2", RevisionName: "test-rev", Percent: ptr.Int64(15), @@ -738,13 +738,13 @@ func TestCreateRouteWithNamedTargets(t *testing.T) { // targets route := getTestRouteWithTrafficTargets( []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "foo", RevisionName: "test-rev", Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "bar", ConfigurationName: "test-config", Percent: ptr.Int64(50), diff --git a/pkg/reconciler/route/table_test.go b/pkg/reconciler/route/table_test.go index ee7d54b91f8e..87eb9418700d 100644 --- a/pkg/reconciler/route/table_test.go +++ b/pkg/reconciler/route/table_test.go @@ -42,8 +42,8 @@ import ( "knative.dev/pkg/ptr" netv1alpha1 "knative.dev/serving/pkg/apis/networking/v1alpha1" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/pkg/gc" "knative.dev/serving/pkg/network" "knative.dev/serving/pkg/reconciler" @@ -145,7 +145,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -171,7 +171,7 @@ func TestReconcile(t *testing.T) { // Populated by reconciliation when all traffic has been assigned. WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressNotConfigured, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -209,7 +209,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -238,7 +238,7 @@ func TestReconcile(t *testing.T) { // Populated by reconciliation when all traffic has been assigned. WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressNotConfigured, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -279,7 +279,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -309,7 +309,7 @@ func TestReconcile(t *testing.T) { WithLocalDomain, WithAddress, WithInitRouteConditions, WithRouteLabel("serving.knative.dev/visibility", "cluster-local"), MarkTrafficAssigned, MarkIngressNotConfigured, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -335,7 +335,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -370,7 +370,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -399,7 +399,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -421,7 +421,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -464,7 +464,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -489,7 +489,7 @@ func TestReconcile(t *testing.T) { // the cluster ingress. WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -512,7 +512,7 @@ func TestReconcile(t *testing.T) { MarkTrafficAssigned, MarkIngressReady, WithRouteFinalizer, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -529,7 +529,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -560,7 +560,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithRouteFinalizer, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), }, @@ -576,7 +576,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -594,7 +594,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithRouteFinalizer, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -617,7 +617,7 @@ func TestReconcile(t *testing.T) { WithAnotherDomain, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithRouteFinalizer, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -635,7 +635,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -665,7 +665,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -692,7 +692,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithRouteFinalizer, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -710,7 +710,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -742,7 +742,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithRouteFinalizer, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), }, @@ -760,7 +760,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -776,7 +776,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -805,7 +805,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // This is the new config we're making become ready. RevisionName: "config-00002", Percent: ptr.Int64(100), @@ -822,7 +822,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithRouteFinalizer, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00002", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -845,7 +845,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -868,7 +868,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -891,7 +891,7 @@ func TestReconcile(t *testing.T) { WithLocalDomain, WithAddress, WithInitRouteConditions, WithRouteLabel("serving.knative.dev/visibility", "cluster-local"), WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -923,7 +923,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -945,7 +945,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -966,7 +966,7 @@ func TestReconcile(t *testing.T) { MarkTrafficAssigned, MarkIngressNotConfigured, WithAddress, WithInitRouteConditions, WithURL, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -996,7 +996,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithRouteFinalizer, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), }, @@ -1015,7 +1015,7 @@ func TestReconcile(t *testing.T) { Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ // Use the Revision name from the config. - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), }, @@ -1042,7 +1042,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // This is the new config we're making become ready. RevisionName: "config-00002", Percent: ptr.Int64(100), @@ -1059,7 +1059,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithRouteFinalizer, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00002", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -1078,7 +1078,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithRouteFinalizer, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -1095,7 +1095,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -1134,7 +1134,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -1151,7 +1151,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -1191,7 +1191,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -1208,7 +1208,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -1243,7 +1243,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -1260,7 +1260,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -1294,7 +1294,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -1311,7 +1311,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -1327,7 +1327,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -1355,7 +1355,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -1377,7 +1377,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "oldconfig-00001", Percent: ptr.Int64(100), }, @@ -1397,7 +1397,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "oldconfig-00001", Percent: ptr.Int64(100), @@ -1426,7 +1426,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "newconfig-00001", Percent: ptr.Int64(100), @@ -1444,7 +1444,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithRouteFinalizer, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "newconfig-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -1504,7 +1504,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -1520,7 +1520,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -1547,7 +1547,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(false), @@ -1561,12 +1561,12 @@ func TestReconcile(t *testing.T) { Objects: []runtime.Object{ route("default", "named-traffic-split", WithSpecTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "blue", Percent: ptr.Int64(50), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "green", Percent: ptr.Int64(50), }, @@ -1591,12 +1591,12 @@ func TestReconcile(t *testing.T) { simpleIngress( route("default", "named-traffic-split", WithURL, WithSpecTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "blue", Percent: ptr.Int64(50), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "green", Percent: ptr.Int64(50), }, @@ -1604,7 +1604,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "blue-00001", Percent: ptr.Int64(50), @@ -1612,7 +1612,7 @@ func TestReconcile(t *testing.T) { ServiceName: "blue-ridge", Active: true, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "green-00001", Percent: ptr.Int64(50), @@ -1627,12 +1627,12 @@ func TestReconcile(t *testing.T) { getContext(), route("default", "named-traffic-split", WithSpecTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "blue", Percent: ptr.Int64(50), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "green", Percent: ptr.Int64(50), }, @@ -1643,12 +1643,12 @@ func TestReconcile(t *testing.T) { WantStatusUpdates: []clientgotesting.UpdateActionImpl{{ Object: route("default", "named-traffic-split", WithRouteFinalizer, WithSpecTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "blue", Percent: ptr.Int64(50), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "green", Percent: ptr.Int64(50), }, @@ -1656,13 +1656,13 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressNotConfigured, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "blue-00001", Percent: ptr.Int64(50), LatestRevision: ptr.Bool(true), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "green-00001", Percent: ptr.Int64(50), LatestRevision: ptr.Bool(true), @@ -1680,13 +1680,13 @@ func TestReconcile(t *testing.T) { Objects: []runtime.Object{ route("default", "same-revision-targets", WithSpecTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "gray", ConfigurationName: "gray", Percent: ptr.Int64(50), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "also-gray", RevisionName: "gray-00001", Percent: ptr.Int64(50), @@ -1709,13 +1709,13 @@ func TestReconcile(t *testing.T) { simpleIngress( route("default", "same-revision-targets", WithURL, WithSpecTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "gray", ConfigurationName: "gray", Percent: ptr.Int64(50), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "also-gray", RevisionName: "gray-00001", Percent: ptr.Int64(50), @@ -1724,7 +1724,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "gray-00001", Percent: ptr.Int64(100), @@ -1733,7 +1733,7 @@ func TestReconcile(t *testing.T) { Active: true, }}, "gray": {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "gray-00001", Percent: ptr.Int64(100), @@ -1742,7 +1742,7 @@ func TestReconcile(t *testing.T) { Active: true, }}, "also-gray": {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "gray-00001", Percent: ptr.Int64(100), @@ -1757,13 +1757,13 @@ func TestReconcile(t *testing.T) { getContext(), route("default", "same-revision-targets", WithSpecTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "gray", ConfigurationName: "gray", Percent: ptr.Int64(50), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "also-gray", RevisionName: "gray-00001", Percent: ptr.Int64(50), @@ -1775,13 +1775,13 @@ func TestReconcile(t *testing.T) { getContext(), route("default", "same-revision-targets", WithSpecTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "gray", ConfigurationName: "gray", Percent: ptr.Int64(50), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "also-gray", RevisionName: "gray-00001", Percent: ptr.Int64(50), @@ -1793,13 +1793,13 @@ func TestReconcile(t *testing.T) { getContext(), route("default", "same-revision-targets", WithSpecTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "gray", ConfigurationName: "gray", Percent: ptr.Int64(50), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "also-gray", RevisionName: "gray-00001", Percent: ptr.Int64(50), @@ -1811,13 +1811,13 @@ func TestReconcile(t *testing.T) { WantStatusUpdates: []clientgotesting.UpdateActionImpl{{ Object: route("default", "same-revision-targets", WithSpecTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "gray", ConfigurationName: "gray", Percent: ptr.Int64(50), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "also-gray", RevisionName: "gray-00001", Percent: ptr.Int64(50), @@ -1826,7 +1826,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressNotConfigured, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "gray", RevisionName: "gray-00001", Percent: ptr.Int64(50), @@ -1837,7 +1837,7 @@ func TestReconcile(t *testing.T) { }, }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "also-gray", RevisionName: "gray-00001", Percent: ptr.Int64(50), @@ -1865,7 +1865,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "blue", RevisionName: "blue-00001", Percent: ptr.Int64(100), @@ -1885,7 +1885,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "blue-00001", Percent: ptr.Int64(100), @@ -1913,7 +1913,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "green-00001", Percent: ptr.Int64(100), @@ -1930,7 +1930,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "green-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -1948,19 +1948,19 @@ func TestReconcile(t *testing.T) { WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithSpecTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "blue", Percent: ptr.Int64(50), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "green", Percent: ptr.Int64(50), }, }), WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "blue", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -1978,7 +1978,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "blue-00001", Percent: ptr.Int64(100), @@ -1996,19 +1996,19 @@ func TestReconcile(t *testing.T) { MarkConfigurationNotReady("green"), WithSpecTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "blue", Percent: ptr.Int64(50), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "green", Percent: ptr.Int64(50), }, }), WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: "blue", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -2024,7 +2024,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithRouteFinalizer, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -2043,7 +2043,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -2076,7 +2076,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -2095,7 +2095,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -2110,7 +2110,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -2140,7 +2140,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), }, @@ -2155,7 +2155,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), }, @@ -2170,7 +2170,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), }, @@ -2192,7 +2192,7 @@ func TestReconcile(t *testing.T) { WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressReady, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), }, @@ -2208,7 +2208,7 @@ func TestReconcile(t *testing.T) { MarkTrafficAssigned, MarkIngressReady, WithRouteFinalizer, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -2225,7 +2225,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -2273,7 +2273,7 @@ func TestReconcile(t *testing.T) { MarkTrafficAssigned, MarkIngressReady, WithRouteFinalizer, WithStatusTraffic( v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -2290,7 +2290,7 @@ func TestReconcile(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -2370,7 +2370,7 @@ func TestReconcile_EnableAutoTLS(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -2402,7 +2402,7 @@ func TestReconcile_EnableAutoTLS(t *testing.T) { // Populated by reconciliation when all traffic has been assigned. WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressNotConfigured, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -2432,7 +2432,7 @@ func TestReconcile_EnableAutoTLS(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -2471,7 +2471,7 @@ func TestReconcile_EnableAutoTLS(t *testing.T) { // Populated by reconciliation when all traffic has been assigned. WithURL, WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressNotConfigured, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -2529,7 +2529,7 @@ func TestReconcile_EnableAutoTLS(t *testing.T) { &traffic.Config{ Targets: map[string]traffic.RevisionTargets{ traffic.DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ // Use the Revision name from the config. RevisionName: "config-00001", Percent: ptr.Int64(100), @@ -2565,7 +2565,7 @@ func TestReconcile_EnableAutoTLS(t *testing.T) { // Populated by reconciliation when all traffic has been assigned. WithAddress, WithInitRouteConditions, MarkTrafficAssigned, MarkIngressNotConfigured, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -2620,7 +2620,7 @@ func TestReconcile_EnableAutoTLS(t *testing.T) { WithRouteUID("12-34"), WithAddress, WithInitRouteConditions, WithURL, MarkTrafficAssigned, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-00001", Percent: ptr.Int64(100), LatestRevision: ptr.Bool(true), @@ -2697,7 +2697,7 @@ func cfg(namespace, name string, co ...ConfigOption) *v1alpha1.Configuration { Spec: v1alpha1.ConfigurationSpec{ Template: &v1alpha1.RevisionTemplateSpec{ Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", diff --git a/pkg/reconciler/route/traffic/traffic.go b/pkg/reconciler/route/traffic/traffic.go index 568b019606b8..5bedb43db63a 100644 --- a/pkg/reconciler/route/traffic/traffic.go +++ b/pkg/reconciler/route/traffic/traffic.go @@ -25,8 +25,8 @@ import ( "knative.dev/pkg/ptr" net "knative.dev/serving/pkg/apis/networking" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" listers "knative.dev/serving/pkg/client/listers/serving/v1alpha1" "knative.dev/serving/pkg/reconciler/route/domains" "knative.dev/serving/pkg/reconciler/route/resources/labels" @@ -40,7 +40,7 @@ const ( // A RevisionTarget adds the Active/Inactive state and the transport protocol of a // Revision to a flattened TrafficTarget. type RevisionTarget struct { - v1beta1.TrafficTarget + v1.TrafficTarget Active bool Protocol net.ProtocolType ServiceName string // Revision service name. @@ -91,7 +91,7 @@ func (t *Config) GetRevisionTrafficTargets(ctx context.Context, r *v1alpha1.Rout // We cannot `DeepCopy` here, since tt.TrafficTarget might contain both // configuration and revision. results[i] = v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: tt.Tag, RevisionName: tt.RevisionName, Percent: pp, diff --git a/pkg/reconciler/route/traffic/traffic_test.go b/pkg/reconciler/route/traffic/traffic_test.go index 23c5c036f514..6bd5686acdc3 100644 --- a/pkg/reconciler/route/traffic/traffic_test.go +++ b/pkg/reconciler/route/traffic/traffic_test.go @@ -30,8 +30,8 @@ import ( "knative.dev/pkg/ptr" net "knative.dev/serving/pkg/apis/networking" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" fakeclientset "knative.dev/serving/pkg/client/clientset/versioned/fake" informers "knative.dev/serving/pkg/client/informers/externalversions" listers "knative.dev/serving/pkg/client/listers/serving/v1alpha1" @@ -126,7 +126,7 @@ func setUp() { // The vanilla use case of 100% directing to latest ready revision of a single configuration. func TestBuildTrafficConfiguration_Vanilla(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, Percent: ptr.Int64(100), }, @@ -135,7 +135,7 @@ func TestBuildTrafficConfiguration_Vanilla(t *testing.T) { expected := &Config{ Targets: map[string]RevisionTargets{ DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, Percent: ptr.Int64(100), @@ -145,7 +145,7 @@ func TestBuildTrafficConfiguration_Vanilla(t *testing.T) { }}, }, revisionTargets: []RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, Percent: ptr.Int64(100), @@ -169,7 +169,7 @@ func TestBuildTrafficConfiguration_Vanilla(t *testing.T) { func TestBuildTrafficConfiguration_NoNameRevision(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: goodNewRev.Name, Percent: ptr.Int64(100), }, @@ -177,7 +177,7 @@ func TestBuildTrafficConfiguration_NoNameRevision(t *testing.T) { expected := &Config{ Targets: map[string]RevisionTargets{ DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: goodNewRev.Name, ConfigurationName: goodConfig.Name, Percent: ptr.Int64(100), @@ -187,7 +187,7 @@ func TestBuildTrafficConfiguration_NoNameRevision(t *testing.T) { }}, }, revisionTargets: []RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, Percent: ptr.Int64(100), @@ -208,7 +208,7 @@ func TestBuildTrafficConfiguration_NoNameRevision(t *testing.T) { // The vanilla use case of 100% directing to latest revision of an inactive configuration. func TestBuildTrafficConfiguration_VanillaScaledToZero(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: inactiveConfig.Name, Percent: ptr.Int64(100), }, @@ -216,7 +216,7 @@ func TestBuildTrafficConfiguration_VanillaScaledToZero(t *testing.T) { expected := &Config{ Targets: map[string]RevisionTargets{ DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: inactiveConfig.Name, RevisionName: inactiveRev.Name, Percent: ptr.Int64(100), @@ -226,7 +226,7 @@ func TestBuildTrafficConfiguration_VanillaScaledToZero(t *testing.T) { }}, }, revisionTargets: []RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: inactiveConfig.Name, RevisionName: inactiveRev.Name, Percent: ptr.Int64(100), @@ -251,12 +251,12 @@ func TestBuildTrafficConfiguration_VanillaScaledToZero(t *testing.T) { // Transitioning from one good config to another by splitting traffic. func TestBuildTrafficConfiguration_TwoConfigs(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: niceConfig.Name, Percent: ptr.Int64(90), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, Percent: ptr.Int64(10), }, @@ -264,7 +264,7 @@ func TestBuildTrafficConfiguration_TwoConfigs(t *testing.T) { expected := &Config{ Targets: map[string]RevisionTargets{ DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: niceConfig.Name, RevisionName: niceNewRev.Name, Percent: ptr.Int64(90), @@ -272,7 +272,7 @@ func TestBuildTrafficConfiguration_TwoConfigs(t *testing.T) { Active: true, Protocol: net.ProtocolH2C, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, Percent: ptr.Int64(10), @@ -282,7 +282,7 @@ func TestBuildTrafficConfiguration_TwoConfigs(t *testing.T) { }}, }, revisionTargets: []RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: niceConfig.Name, RevisionName: niceNewRev.Name, Percent: ptr.Int64(90), @@ -290,7 +290,7 @@ func TestBuildTrafficConfiguration_TwoConfigs(t *testing.T) { Active: true, Protocol: net.ProtocolH2C, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, Percent: ptr.Int64(10), @@ -317,12 +317,12 @@ func TestBuildTrafficConfiguration_TwoConfigs(t *testing.T) { // Splitting traffic between a fixed revision and the latest revision (canary). func TestBuildTrafficConfiguration_Canary(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: goodOldRev.Name, Percent: ptr.Int64(90), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, Percent: ptr.Int64(10), }, @@ -330,7 +330,7 @@ func TestBuildTrafficConfiguration_Canary(t *testing.T) { expected := &Config{ Targets: map[string]RevisionTargets{ DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodOldRev.Name, Percent: ptr.Int64(90), @@ -338,7 +338,7 @@ func TestBuildTrafficConfiguration_Canary(t *testing.T) { Active: true, Protocol: net.ProtocolHTTP1, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, Percent: ptr.Int64(10), @@ -348,7 +348,7 @@ func TestBuildTrafficConfiguration_Canary(t *testing.T) { }}, }, revisionTargets: []RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodOldRev.Name, Percent: ptr.Int64(90), @@ -356,7 +356,7 @@ func TestBuildTrafficConfiguration_Canary(t *testing.T) { Active: true, Protocol: net.ProtocolHTTP1, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, Percent: ptr.Int64(10), @@ -382,19 +382,19 @@ func TestBuildTrafficConfiguration_Canary(t *testing.T) { // Splitting traffic between latest revision and a fixed revision which is also latest. func TestBuildTrafficConfiguration_Consolidated(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "one", RevisionName: goodOldRev.Name, Percent: ptr.Int64(49), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "two", RevisionName: goodNewRev.Name, Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "also-two", ConfigurationName: goodConfig.Name, Percent: ptr.Int64(1), @@ -403,7 +403,7 @@ func TestBuildTrafficConfiguration_Consolidated(t *testing.T) { expected := &Config{ Targets: map[string]RevisionTargets{ DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "one", ConfigurationName: goodConfig.Name, RevisionName: goodOldRev.Name, @@ -412,7 +412,7 @@ func TestBuildTrafficConfiguration_Consolidated(t *testing.T) { Active: true, Protocol: net.ProtocolHTTP1, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "two", ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, @@ -422,7 +422,7 @@ func TestBuildTrafficConfiguration_Consolidated(t *testing.T) { Protocol: net.ProtocolH2C, }}, "one": {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "one", ConfigurationName: goodConfig.Name, RevisionName: goodOldRev.Name, @@ -432,7 +432,7 @@ func TestBuildTrafficConfiguration_Consolidated(t *testing.T) { Protocol: net.ProtocolHTTP1, }}, "two": {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "two", ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, @@ -442,7 +442,7 @@ func TestBuildTrafficConfiguration_Consolidated(t *testing.T) { Protocol: net.ProtocolH2C, }}, "also-two": {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "also-two", ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, @@ -453,7 +453,7 @@ func TestBuildTrafficConfiguration_Consolidated(t *testing.T) { }}, }, revisionTargets: []RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "one", ConfigurationName: goodConfig.Name, RevisionName: goodOldRev.Name, @@ -462,7 +462,7 @@ func TestBuildTrafficConfiguration_Consolidated(t *testing.T) { Active: true, Protocol: net.ProtocolHTTP1, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "two", ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, @@ -471,7 +471,7 @@ func TestBuildTrafficConfiguration_Consolidated(t *testing.T) { Active: true, Protocol: net.ProtocolH2C, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "also-two", ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, @@ -498,12 +498,12 @@ func TestBuildTrafficConfiguration_Consolidated(t *testing.T) { // Splitting traffic between a two fixed revisions. func TestBuildTrafficConfiguration_TwoFixedRevisions(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: goodOldRev.Name, Percent: ptr.Int64(90), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: goodNewRev.Name, Percent: ptr.Int64(10), }, @@ -511,7 +511,7 @@ func TestBuildTrafficConfiguration_TwoFixedRevisions(t *testing.T) { expected := &Config{ Targets: map[string]RevisionTargets{ DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodOldRev.Name, Percent: ptr.Int64(90), @@ -519,7 +519,7 @@ func TestBuildTrafficConfiguration_TwoFixedRevisions(t *testing.T) { Active: true, Protocol: net.ProtocolHTTP1, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, Percent: ptr.Int64(10), @@ -529,7 +529,7 @@ func TestBuildTrafficConfiguration_TwoFixedRevisions(t *testing.T) { }}, }, revisionTargets: []RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodOldRev.Name, Percent: ptr.Int64(90), @@ -537,7 +537,7 @@ func TestBuildTrafficConfiguration_TwoFixedRevisions(t *testing.T) { Active: true, Protocol: net.ProtocolHTTP1, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, Percent: ptr.Int64(10), @@ -563,12 +563,12 @@ func TestBuildTrafficConfiguration_TwoFixedRevisions(t *testing.T) { // Splitting traffic between a two fixed revisions of two configurations. func TestBuildTrafficConfiguration_TwoFixedRevisionsFromTwoConfigurations(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: goodNewRev.Name, Percent: ptr.Int64(40), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: niceNewRev.Name, Percent: ptr.Int64(60), }, @@ -576,7 +576,7 @@ func TestBuildTrafficConfiguration_TwoFixedRevisionsFromTwoConfigurations(t *tes expected := &Config{ Targets: map[string]RevisionTargets{ DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, Percent: ptr.Int64(40), @@ -584,7 +584,7 @@ func TestBuildTrafficConfiguration_TwoFixedRevisionsFromTwoConfigurations(t *tes Active: true, Protocol: net.ProtocolH2C, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: niceConfig.Name, RevisionName: niceNewRev.Name, Percent: ptr.Int64(60), @@ -594,7 +594,7 @@ func TestBuildTrafficConfiguration_TwoFixedRevisionsFromTwoConfigurations(t *tes }}, }, revisionTargets: []RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, Percent: ptr.Int64(40), @@ -602,7 +602,7 @@ func TestBuildTrafficConfiguration_TwoFixedRevisionsFromTwoConfigurations(t *tes Active: true, Protocol: net.ProtocolH2C, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: niceConfig.Name, RevisionName: niceNewRev.Name, Percent: ptr.Int64(60), @@ -629,17 +629,17 @@ func TestBuildTrafficConfiguration_TwoFixedRevisionsFromTwoConfigurations(t *tes // One fixed, two named targets for newer stuffs. func TestBuildTrafficConfiguration_Preliminary(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: goodOldRev.Name, Percent: ptr.Int64(100), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "beta", RevisionName: goodNewRev.Name, }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "alpha", ConfigurationName: niceConfig.Name, }, @@ -647,7 +647,7 @@ func TestBuildTrafficConfiguration_Preliminary(t *testing.T) { expected := &Config{ Targets: map[string]RevisionTargets{ DefaultTarget: {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodOldRev.Name, Percent: ptr.Int64(100), @@ -655,7 +655,7 @@ func TestBuildTrafficConfiguration_Preliminary(t *testing.T) { Active: true, Protocol: net.ProtocolHTTP1, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "beta", ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, @@ -663,7 +663,7 @@ func TestBuildTrafficConfiguration_Preliminary(t *testing.T) { Active: true, Protocol: net.ProtocolH2C, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "alpha", ConfigurationName: niceConfig.Name, RevisionName: niceNewRev.Name, @@ -672,7 +672,7 @@ func TestBuildTrafficConfiguration_Preliminary(t *testing.T) { Protocol: net.ProtocolH2C, }}, "beta": {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "beta", ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, @@ -682,7 +682,7 @@ func TestBuildTrafficConfiguration_Preliminary(t *testing.T) { Protocol: net.ProtocolH2C, }}, "alpha": {{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "alpha", ConfigurationName: niceConfig.Name, RevisionName: niceNewRev.Name, @@ -693,7 +693,7 @@ func TestBuildTrafficConfiguration_Preliminary(t *testing.T) { }}, }, revisionTargets: []RevisionTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: goodConfig.Name, RevisionName: goodOldRev.Name, Percent: ptr.Int64(100), @@ -701,7 +701,7 @@ func TestBuildTrafficConfiguration_Preliminary(t *testing.T) { Active: true, Protocol: net.ProtocolHTTP1, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "beta", ConfigurationName: goodConfig.Name, RevisionName: goodNewRev.Name, @@ -709,7 +709,7 @@ func TestBuildTrafficConfiguration_Preliminary(t *testing.T) { Active: true, Protocol: net.ProtocolH2C, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "alpha", ConfigurationName: niceConfig.Name, RevisionName: niceNewRev.Name, @@ -736,17 +736,17 @@ func TestBuildTrafficConfiguration_Preliminary(t *testing.T) { func TestBuildTrafficConfiguration_MissingConfig(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: goodOldRev.Name, Percent: ptr.Int64(100), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "beta", RevisionName: goodNewRev.Name, }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "alpha", ConfigurationName: missingConfig.Name, }, @@ -772,7 +772,7 @@ func TestBuildTrafficConfiguration_MissingConfig(t *testing.T) { func TestBuildTrafficConfiguration_NotRoutableRevision(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: unreadyRev.Name, Percent: ptr.Int64(100), }, @@ -793,7 +793,7 @@ func TestBuildTrafficConfiguration_NotRoutableRevision(t *testing.T) { func TestBuildTrafficConfiguration_NotRoutableConfiguration(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: unreadyConfig.Name, Percent: ptr.Int64(100), }, @@ -814,7 +814,7 @@ func TestBuildTrafficConfiguration_NotRoutableConfiguration(t *testing.T) { func TestBuildTrafficConfiguration_EmptyConfiguration(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: emptyConfig.Name, Percent: ptr.Int64(100), }, @@ -839,12 +839,12 @@ func TestBuildTrafficConfiguration_EmptyConfiguration(t *testing.T) { func TestBuildTrafficConfiguration_EmptyAndFailedConfigurations(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: emptyConfig.Name, Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: failedConfig.Name, Percent: ptr.Int64(50), }, @@ -868,12 +868,12 @@ func TestBuildTrafficConfiguration_EmptyAndFailedConfigurations(t *testing.T) { func TestBuildTrafficConfiguration_FailedAndEmptyConfigurations(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: failedConfig.Name, Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: emptyConfig.Name, Percent: ptr.Int64(50), }, @@ -897,12 +897,12 @@ func TestBuildTrafficConfiguration_FailedAndEmptyConfigurations(t *testing.T) { func TestBuildTrafficConfiguration_MissingRevision(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: missingRev.Name, Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: goodNewRev.Name, Percent: ptr.Int64(50), }, @@ -923,34 +923,34 @@ func TestBuildTrafficConfiguration_MissingRevision(t *testing.T) { func TestRoundTripping(t *testing.T) { tts := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: goodOldRev.Name, Percent: ptr.Int64(100), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "beta", RevisionName: goodNewRev.Name, }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "alpha", ConfigurationName: niceConfig.Name, }, }} expected := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: goodOldRev.Name, Percent: ptr.Int64(100), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "beta", RevisionName: goodNewRev.Name, URL: domains.URL(domains.HTTPScheme, "beta-test-route.test.example.com"), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "alpha", RevisionName: niceNewRev.Name, URL: domains.URL(domains.HTTPScheme, "alpha-test-route.test.example.com"), @@ -979,7 +979,7 @@ func testConfig(name string) *v1alpha1.Configuration { Spec: v1alpha1.ConfigurationSpec{ Template: &v1alpha1.RevisionTemplateSpec{ Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "test-image", diff --git a/pkg/reconciler/service/resources/configuration_test.go b/pkg/reconciler/service/resources/configuration_test.go index 301979b55679..69d897a8145f 100644 --- a/pkg/reconciler/service/resources/configuration_test.go +++ b/pkg/reconciler/service/resources/configuration_test.go @@ -23,13 +23,13 @@ import ( corev1 "k8s.io/api/core/v1" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" ) func makeConfiguration(service *v1alpha1.Service) (*v1alpha1.Configuration, error) { // We do this prior to reconciliation, so test with it enabled. - service.SetDefaults(v1beta1.WithUpgradeViaDefaulting(context.Background())) + service.SetDefaults(v1.WithUpgradeViaDefaulting(context.Background())) return MakeConfiguration(service) } diff --git a/pkg/reconciler/service/resources/route_test.go b/pkg/reconciler/service/resources/route_test.go index ec982ce2258e..7e7f52e6d0ef 100644 --- a/pkg/reconciler/service/resources/route_test.go +++ b/pkg/reconciler/service/resources/route_test.go @@ -25,14 +25,14 @@ import ( "knative.dev/pkg/ptr" "knative.dev/serving/pkg/apis/serving" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/pkg/reconciler/service/resources/names" ) func makeRoute(service *v1alpha1.Service) (*v1alpha1.Route, error) { // We do this prior to reconciliation, so test with it enabled. - service.SetDefaults(v1beta1.WithUpgradeViaDefaulting(context.Background())) + service.SetDefaults(v1.WithUpgradeViaDefaulting(context.Background())) return MakeRoute(service) } @@ -53,7 +53,7 @@ func TestRouteRunLatest(t *testing.T) { t.Fatalf("Expected %d traffic targets got %d", want, got) } wantT := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(100), ConfigurationName: testConfigName, LatestRevision: ptr.Bool(true), @@ -96,7 +96,7 @@ func TestRoutePinned(t *testing.T) { t.Fatalf("Expected %d traffic targets, got %d", want, got) } wantT := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(100), RevisionName: testRevisionName, LatestRevision: ptr.Bool(false), @@ -131,14 +131,14 @@ func TestRouteReleaseSingleRevision(t *testing.T) { t.Errorf("Expected %q for service namespace got %q", want, got) } wantT := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CurrentTrafficTarget, Percent: ptr.Int64(100), RevisionName: testRevisionName, LatestRevision: ptr.Bool(false), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.LatestTrafficTarget, ConfigurationName: testConfigName, LatestRevision: ptr.Bool(true), @@ -176,21 +176,21 @@ func TestRouteLatestRevisionSplit(t *testing.T) { t.Errorf("Expected %q for service namespace got %q", want, got) } wantT := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CurrentTrafficTarget, Percent: ptr.Int64(currentPercent), ConfigurationName: testConfigName, LatestRevision: ptr.Bool(true), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CandidateTrafficTarget, Percent: ptr.Int64(rolloutPercent), RevisionName: "juicy-revision", LatestRevision: ptr.Bool(false), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.LatestTrafficTarget, ConfigurationName: testConfigName, LatestRevision: ptr.Bool(true), @@ -228,21 +228,21 @@ func TestRouteLatestRevisionSplitCandidate(t *testing.T) { t.Errorf("Expected %q for service namespace got %q", want, got) } wantT := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CurrentTrafficTarget, Percent: ptr.Int64(currentPercent), RevisionName: "squishy-revision", LatestRevision: ptr.Bool(false), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CandidateTrafficTarget, Percent: ptr.Int64(rolloutPercent), ConfigurationName: testConfigName, LatestRevision: ptr.Bool(true), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.LatestTrafficTarget, ConfigurationName: testConfigName, LatestRevision: ptr.Bool(true), @@ -278,14 +278,14 @@ func TestRouteLatestRevisionNoSplit(t *testing.T) { } // Should have 2 named traffic targets (current, latest) wantT := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CurrentTrafficTarget, Percent: ptr.Int64(100), ConfigurationName: testConfigName, LatestRevision: ptr.Bool(true), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.LatestTrafficTarget, ConfigurationName: testConfigName, LatestRevision: ptr.Bool(true), @@ -324,21 +324,21 @@ func TestRouteReleaseTwoRevisions(t *testing.T) { } // Should have 3 named traffic targets (current, candidate, latest) wantT := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CurrentTrafficTarget, Percent: ptr.Int64(currentPercent), RevisionName: testRevisionName, LatestRevision: ptr.Bool(false), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CandidateTrafficTarget, Percent: ptr.Int64(100 - currentPercent), RevisionName: testCandidateRevisionName, LatestRevision: ptr.Bool(false), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.LatestTrafficTarget, ConfigurationName: testConfigName, LatestRevision: ptr.Bool(true), @@ -374,7 +374,7 @@ func TestInlineRouteSpec(t *testing.T) { t.Fatalf("Expected %d traffic targets got %d", want, got) } wantT := []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(100), ConfigurationName: testConfigName, LatestRevision: ptr.Bool(true), diff --git a/pkg/reconciler/service/resources/shared_test.go b/pkg/reconciler/service/resources/shared_test.go index 08ae0159de5e..6797dab24ebd 100644 --- a/pkg/reconciler/service/resources/shared_test.go +++ b/pkg/reconciler/service/resources/shared_test.go @@ -25,8 +25,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" . "knative.dev/serving/pkg/testing/v1alpha1" ) @@ -82,7 +82,7 @@ func createServiceInline() *v1alpha1.Service { WithInlineConfigSpec(createConfiguration(testContainerNameInline)), WithInlineRouteSpec(v1alpha1.RouteSpec{ Traffic: []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(100), }, }}, diff --git a/pkg/reconciler/service/service.go b/pkg/reconciler/service/service.go index c8d218842767..5cd3c8a54a2d 100644 --- a/pkg/reconciler/service/service.go +++ b/pkg/reconciler/service/service.go @@ -32,6 +32,7 @@ import ( "knative.dev/pkg/controller" "knative.dev/pkg/kmp" "knative.dev/pkg/logging" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" "knative.dev/serving/pkg/apis/serving/v1beta1" listers "knative.dev/serving/pkg/client/listers/serving/v1alpha1" @@ -131,7 +132,7 @@ func (c *Reconciler) reconcile(ctx context.Context, service *v1alpha1.Service) e // and may not have had all of the assumed defaults specified. This won't result // in this getting written back to the API Server, but lets downstream logic make // assumptions about defaulting. - service.SetDefaults(v1beta1.WithUpgradeViaDefaulting(ctx)) + service.SetDefaults(v1.WithUpgradeViaDefaulting(ctx)) service.Status.InitializeConditions() if err := service.ConvertUp(ctx, &v1beta1.Service{}); err != nil { diff --git a/pkg/reconciler/service/service_test.go b/pkg/reconciler/service/service_test.go index 3ed4fc84aeeb..c4c7028a678a 100644 --- a/pkg/reconciler/service/service_test.go +++ b/pkg/reconciler/service/service_test.go @@ -32,8 +32,8 @@ import ( "knative.dev/pkg/controller" logtesting "knative.dev/pkg/logging/testing" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/pkg/reconciler" "knative.dev/serving/pkg/reconciler/service/resources" presources "knative.dev/serving/pkg/resources" @@ -178,13 +178,13 @@ func TestReconcile(t *testing.T) { route("pinned3", "foo", WithReleaseRollout("pinned3-00001"), WithURL, WithAddress, WithInitRouteConditions, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CurrentTrafficTarget, RevisionName: "pinned3-00001", Percent: ptr.Int64(100), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.LatestTrafficTarget, RevisionName: "pinned3-00001", Percent: nil, @@ -203,13 +203,13 @@ func TestReconcile(t *testing.T) { // The delta induced by route object. WithReadyRoute, WithSvcStatusDomain, WithSvcStatusAddress, WithSvcStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CurrentTrafficTarget, RevisionName: "pinned3-00001", Percent: ptr.Int64(100), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.LatestTrafficTarget, RevisionName: "pinned3-00001", Percent: nil, @@ -293,7 +293,7 @@ func TestReconcile(t *testing.T) { route("release-nr", "foo", WithReleaseRollout("release-nr-00002"), RouteReady, WithURL, WithAddress, WithInitRouteConditions, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "release-nr-00001", Percent: ptr.Int64(100), }, @@ -306,7 +306,7 @@ func TestReconcile(t *testing.T) { WithReadyConfig("release-nr-00002"), WithServiceStatusRouteNotReady, WithSvcStatusDomain, WithSvcStatusAddress, WithSvcStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "release-nr-00001", Percent: ptr.Int64(100), }, @@ -332,7 +332,7 @@ func TestReconcile(t *testing.T) { route("release-nr", "foo", WithReleaseRollout("release-nr-00002", "release-nr-00003"), RouteReady, WithURL, WithAddress, WithInitRouteConditions, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "release-nr-00001", Percent: ptr.Int64(100), }, @@ -345,7 +345,7 @@ func TestReconcile(t *testing.T) { WithReadyConfig("release-nr-00003"), WithServiceStatusRouteNotReady, WithSvcStatusDomain, WithSvcStatusAddress, WithSvcStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "release-nr-00001", Percent: ptr.Int64(100), }, @@ -374,12 +374,12 @@ func TestReconcile(t *testing.T) { WithReleaseRolloutAndPercentage(42, "release-nr-ts-00002", "release-nr-ts-00003"), RouteReady, WithURL, WithAddress, WithInitRouteConditions, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "release-nr-ts-00001", Percent: ptr.Int64(58), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "release-nr-ts-00002", Percent: ptr.Int64(42), }, @@ -392,12 +392,12 @@ func TestReconcile(t *testing.T) { WithReadyConfig("release-nr-ts-00003"), WithServiceStatusRouteNotReady, WithSvcStatusDomain, WithSvcStatusAddress, WithSvcStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "release-nr-ts-00001", Percent: ptr.Int64(58), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "release-nr-ts-00002", Percent: ptr.Int64(42), }, @@ -427,12 +427,12 @@ func TestReconcile(t *testing.T) { RouteReady, WithURL, WithAddress, WithInitRouteConditions, // NB: here the revisions match, but percentages, don't. WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "release-nr-ts2-00002", Percent: ptr.Int64(58), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "release-nr-ts2-00003", Percent: ptr.Int64(42), }, @@ -445,12 +445,12 @@ func TestReconcile(t *testing.T) { WithReadyConfig("release-nr-ts2-00003"), WithServiceStatusRouteNotReady, WithSvcStatusDomain, WithSvcStatusAddress, WithSvcStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "release-nr-ts2-00002", Percent: ptr.Int64(58), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "release-nr-ts2-00003", Percent: ptr.Int64(42), }, @@ -475,13 +475,13 @@ func TestReconcile(t *testing.T) { WithReleaseRollout(v1alpha1.ReleaseLatestRevisionKeyword), RouteReady, WithURL, WithAddress, WithInitRouteConditions, WithStatusTraffic([]v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CurrentTrafficTarget, RevisionName: "release-ready-lr-00001", Percent: ptr.Int64(100), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.LatestTrafficTarget, RevisionName: "release-ready-lr-00001", }, @@ -501,13 +501,13 @@ func TestReconcile(t *testing.T) { // The delta induced by route object. WithReadyRoute, WithSvcStatusDomain, WithSvcStatusAddress, WithSvcStatusTraffic([]v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CurrentTrafficTarget, RevisionName: "release-ready-lr-00001", Percent: ptr.Int64(100), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.LatestTrafficTarget, RevisionName: "release-ready-lr-00001", }, @@ -538,19 +538,19 @@ func TestReconcile(t *testing.T) { 42, "release-ready-lr-00001", v1alpha1.ReleaseLatestRevisionKeyword), RouteReady, WithURL, WithAddress, WithInitRouteConditions, WithStatusTraffic([]v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CurrentTrafficTarget, RevisionName: "release-ready-lr-00001", Percent: ptr.Int64(58), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CandidateTrafficTarget, RevisionName: "release-ready-lr-00002", Percent: ptr.Int64(42), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.LatestTrafficTarget, RevisionName: "release-ready-lr-00002", }, @@ -571,19 +571,19 @@ func TestReconcile(t *testing.T) { // The delta induced by route object. WithReadyRoute, WithSvcStatusDomain, WithSvcStatusAddress, WithSvcStatusTraffic([]v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CurrentTrafficTarget, RevisionName: "release-ready-lr-00001", Percent: ptr.Int64(58), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CandidateTrafficTarget, RevisionName: "release-ready-lr-00002", Percent: ptr.Int64(42), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.LatestTrafficTarget, RevisionName: "release-ready-lr-00002", }, @@ -614,19 +614,19 @@ func TestReconcile(t *testing.T) { "release-ready-00001", "release-ready-00002"), RouteReady, WithURL, WithAddress, WithInitRouteConditions, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CurrentTrafficTarget, RevisionName: "release-ready-00001", Percent: ptr.Int64(42), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CandidateTrafficTarget, RevisionName: "release-ready-00002", Percent: ptr.Int64(58), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.LatestTrafficTarget, RevisionName: "release-ready-00002", Percent: nil, @@ -647,19 +647,19 @@ func TestReconcile(t *testing.T) { // The delta induced by route object. WithReadyRoute, WithSvcStatusDomain, WithSvcStatusAddress, WithSvcStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CurrentTrafficTarget, RevisionName: "release-ready-00001", Percent: ptr.Int64(42), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.CandidateTrafficTarget, RevisionName: "release-ready-00002", Percent: ptr.Int64(58), }, }, v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: v1alpha1.LatestTrafficTarget, RevisionName: "release-ready-00002", Percent: nil, @@ -1045,7 +1045,7 @@ func TestReconcile(t *testing.T) { route("all-ready", "foo", WithRunLatestRollout, RouteReady, WithURL, WithAddress, WithInitRouteConditions, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "all-ready-00001", Percent: ptr.Int64(100), }, @@ -1062,7 +1062,7 @@ func TestReconcile(t *testing.T) { // The delta induced by route object. WithReadyRoute, WithSvcStatusDomain, WithSvcStatusAddress, WithSvcStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "all-ready-00001", Percent: ptr.Int64(100), }, @@ -1090,7 +1090,7 @@ func TestReconcile(t *testing.T) { route("all-ready", "foo", WithRunLatestRollout, RouteReady, WithURL, WithAddress, WithInitRouteConditions, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "all-ready-00001", Percent: ptr.Int64(100), }, @@ -1108,7 +1108,7 @@ func TestReconcile(t *testing.T) { WithReadyRoute, WithSvcStatusDomain, WithSvcStatusAddress, MarkConfigurationNotReconciled, WithSvcStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "all-ready-00001", Percent: ptr.Int64(100), }, @@ -1133,7 +1133,7 @@ func TestReconcile(t *testing.T) { route("config-only-ready", "foo", WithRunLatestRollout, RouteReady, WithURL, WithAddress, WithInitRouteConditions, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-only-ready-00001", Percent: ptr.Int64(100), }, @@ -1149,7 +1149,7 @@ func TestReconcile(t *testing.T) { WithReadyConfig("config-only-ready-00002"), WithServiceStatusRouteNotReady, WithSvcStatusDomain, WithSvcStatusAddress, WithSvcStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-only-ready-00001", Percent: ptr.Int64(100), }, @@ -1175,7 +1175,7 @@ func TestReconcile(t *testing.T) { route("config-fails", "foo", WithRunLatestRollout, RouteReady, WithURL, WithAddress, WithInitRouteConditions, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-fails-00001", Percent: ptr.Int64(100), }, @@ -1189,7 +1189,7 @@ func TestReconcile(t *testing.T) { Object: Service("config-fails", "foo", WithRunLatestRollout, WithInitSvcConditions, WithReadyRoute, WithSvcStatusDomain, WithSvcStatusAddress, WithSvcStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "config-fails-00001", Percent: ptr.Int64(100), }, @@ -1306,7 +1306,7 @@ func TestReconcile(t *testing.T) { route("new-owner", "foo", WithRunLatestRollout, RouteReady, WithURL, WithAddress, WithInitRouteConditions, WithStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "new-owner-00001", Percent: ptr.Int64(100), }, @@ -1322,7 +1322,7 @@ func TestReconcile(t *testing.T) { // The delta induced by route object. WithReadyRoute, WithSvcStatusDomain, WithSvcStatusAddress, WithSvcStatusTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "new-owner-00001", Percent: ptr.Int64(100), }, @@ -1368,7 +1368,7 @@ func TestNew(t *testing.T) { func config(name, namespace string, so ServiceOption, co ...ConfigOption) *v1alpha1.Configuration { s := Service(name, namespace, so) - s.SetDefaults(v1beta1.WithUpgradeViaDefaulting(context.Background())) + s.SetDefaults(v1.WithUpgradeViaDefaulting(context.Background())) cfg, err := resources.MakeConfiguration(s) if err != nil { panic(fmt.Sprintf("MakeConfiguration() = %v", err)) @@ -1381,7 +1381,7 @@ func config(name, namespace string, so ServiceOption, co ...ConfigOption) *v1alp func route(name, namespace string, so ServiceOption, ro ...RouteOption) *v1alpha1.Route { s := Service(name, namespace, so) - s.SetDefaults(v1beta1.WithUpgradeViaDefaulting(context.Background())) + s.SetDefaults(v1.WithUpgradeViaDefaulting(context.Background())) route, err := resources.MakeRoute(s) if err != nil { panic(fmt.Sprintf("MakeRoute() = %v", err)) diff --git a/pkg/testing/v1alpha1/functional.go b/pkg/testing/v1alpha1/functional.go index 72c6a6e398ff..dce594b0b5b9 100644 --- a/pkg/testing/v1alpha1/functional.go +++ b/pkg/testing/v1alpha1/functional.go @@ -19,8 +19,8 @@ package v1alpha1 import ( corev1 "k8s.io/api/core/v1" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" ) var ( @@ -31,7 +31,7 @@ var ( DeprecatedContainer: &corev1.Container{ Image: "busybox", }, - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ TimeoutSeconds: ptr.Int64(60), }, }, diff --git a/pkg/testing/v1alpha1/route.go b/pkg/testing/v1alpha1/route.go index 8e4be8fd7e86..d603cf6b1423 100644 --- a/pkg/testing/v1alpha1/route.go +++ b/pkg/testing/v1alpha1/route.go @@ -29,8 +29,8 @@ import ( "knative.dev/pkg/ptr" "knative.dev/serving/pkg/apis/networking" netv1alpha1 "knative.dev/serving/pkg/apis/networking/v1alpha1" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" routenames "knative.dev/serving/pkg/reconciler/route/resources/names" ) @@ -70,7 +70,7 @@ func WithAnotherRouteFinalizer(r *v1alpha1.Route) { // WithConfigTarget sets the Route's traffic block to point at a particular Configuration. func WithConfigTarget(config string) RouteOption { return WithSpecTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ ConfigurationName: config, Percent: ptr.Int64(100), }, @@ -80,7 +80,7 @@ func WithConfigTarget(config string) RouteOption { // WithRevTarget sets the Route's traffic block to point at a particular Revision. func WithRevTarget(revision string) RouteOption { return WithSpecTraffic(v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: revision, Percent: ptr.Int64(100), }, diff --git a/pkg/testing/v1alpha1/service.go b/pkg/testing/v1alpha1/service.go index 3dc9797c7ce5..2b8b741fc3ff 100644 --- a/pkg/testing/v1alpha1/service.go +++ b/pkg/testing/v1alpha1/service.go @@ -28,8 +28,8 @@ import ( duckv1alpha1 "knative.dev/pkg/apis/duck/v1alpha1" duckv1beta1 "knative.dev/pkg/apis/duck/v1beta1" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/pkg/reconciler/route/domains" servicenames "knative.dev/serving/pkg/reconciler/service/resources/names" "knative.dev/serving/pkg/resources" @@ -94,7 +94,7 @@ func WithInlineRollout(s *v1alpha1.Service) { ConfigurationSpec: v1alpha1.ConfigurationSpec{ Template: &v1alpha1.RevisionTemplateSpec{ Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: "busybox", @@ -107,7 +107,7 @@ func WithInlineRollout(s *v1alpha1.Service) { }, RouteSpec: v1alpha1.RouteSpec{ Traffic: []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Percent: ptr.Int64(100), }, }}, diff --git a/pkg/testing/v1beta1/service.go b/pkg/testing/v1beta1/service.go index 1bfb7aeddef1..f28e581aebfe 100644 --- a/pkg/testing/v1beta1/service.go +++ b/pkg/testing/v1beta1/service.go @@ -22,6 +22,7 @@ import ( corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "knative.dev/pkg/ptr" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1beta1" presources "knative.dev/serving/pkg/resources" ) @@ -59,7 +60,7 @@ func ServiceWithoutNamespace(name string, so ...ServiceOption) *v1beta1.Service } // WithInlineConfigSpec confgures the Service to use the given config spec -func WithInlineConfigSpec(config v1beta1.ConfigurationSpec) ServiceOption { +func WithInlineConfigSpec(config v1.ConfigurationSpec) ServiceOption { return func(svc *v1beta1.Service) { svc.Spec.ConfigurationSpec = config } diff --git a/test/clients.go b/test/clients.go index 55a7592e6ccb..95198706a4db 100644 --- a/test/clients.go +++ b/test/clients.go @@ -26,6 +26,7 @@ import ( "k8s.io/client-go/tools/clientcmd" "knative.dev/pkg/test" "knative.dev/serving/pkg/client/clientset/versioned" + servingv1 "knative.dev/serving/pkg/client/clientset/versioned/typed/serving/v1" servingv1alpha1 "knative.dev/serving/pkg/client/clientset/versioned/typed/serving/v1alpha1" servingv1beta1 "knative.dev/serving/pkg/client/clientset/versioned/typed/serving/v1beta1" ) @@ -35,6 +36,7 @@ type Clients struct { KubeClient *test.KubeClient ServingAlphaClient *ServingAlphaClients ServingBetaClient *ServingBetaClients + ServingClient *ServingClients Dynamic dynamic.Interface } @@ -54,6 +56,14 @@ type ServingBetaClients struct { Services servingv1beta1.ServiceInterface } +// ServingClients holds instances of interfaces for making requests to knative serving clients +type ServingClients struct { + Routes servingv1.RouteInterface + Configs servingv1.ConfigurationInterface + Revisions servingv1.RevisionInterface + Services servingv1.ServiceInterface +} + // NewClients instantiates and returns several clientsets required for making request to the // Knative Serving cluster specified by the combination of clusterName and configPath. Clients can // make requests within namespace. @@ -83,6 +93,11 @@ func NewClients(configPath string, clusterName string, namespace string) (*Clien return nil, err } + clients.ServingClient, err = newServingClients(cfg, namespace) + if err != nil { + return nil, err + } + clients.Dynamic, err = dynamic.NewForConfig(cfg) if err != nil { return nil, err @@ -123,6 +138,22 @@ func newServingBetaClients(cfg *rest.Config, namespace string) (*ServingBetaClie }, nil } +// NewServingClients instantiates and returns the serving clientset required to make requests to the +// knative serving cluster. +func newServingClients(cfg *rest.Config, namespace string) (*ServingClients, error) { + cs, err := versioned.NewForConfig(cfg) + if err != nil { + return nil, err + } + + return &ServingClients{ + Configs: cs.ServingV1().Configurations(namespace), + Revisions: cs.ServingV1().Revisions(namespace), + Routes: cs.ServingV1().Routes(namespace), + Services: cs.ServingV1().Services(namespace), + }, nil +} + // Delete will delete all Routes and Configs with the names routes and configs, if clients // has been successfully initialized. func (clients *ServingAlphaClients) Delete(routes []string, configs []string, services []string) error { diff --git a/test/conformance/api/v1alpha1/blue_green_test.go b/test/conformance/api/v1alpha1/blue_green_test.go index 54c86c15975a..3bcfa376e71c 100644 --- a/test/conformance/api/v1alpha1/blue_green_test.go +++ b/test/conformance/api/v1alpha1/blue_green_test.go @@ -30,8 +30,8 @@ import ( "knative.dev/serving/test" v1a1test "knative.dev/serving/test/v1alpha1" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" ) const ( @@ -91,13 +91,13 @@ func TestBlueGreenRoute(t *testing.T) { t.Log("Updating RouteSpec") if _, err := v1a1test.UpdateServiceRouteSpec(t, clients, names, v1alpha1.RouteSpec{ Traffic: []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: blue.TrafficTarget, RevisionName: blue.Revision, Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: green.TrafficTarget, RevisionName: green.Revision, Percent: ptr.Int64(50), diff --git a/test/conformance/api/v1alpha1/revision_timeout_test.go b/test/conformance/api/v1alpha1/revision_timeout_test.go index c182164223fa..dce9a6a26f9c 100644 --- a/test/conformance/api/v1alpha1/revision_timeout_test.go +++ b/test/conformance/api/v1alpha1/revision_timeout_test.go @@ -30,8 +30,8 @@ import ( "k8s.io/apimachinery/pkg/types" "knative.dev/pkg/ptr" pkgTest "knative.dev/pkg/test" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" serviceresourcenames "knative.dev/serving/pkg/reconciler/service/resources/names" "knative.dev/serving/test" v1a1test "knative.dev/serving/test/v1alpha1" @@ -164,13 +164,13 @@ func TestRevisionTimeout(t *testing.T) { t.Log("Updating RouteSpec") if _, err := v1a1test.UpdateServiceRouteSpec(t, clients, names, v1alpha1.RouteSpec{ Traffic: []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: rev2s.TrafficTarget, RevisionName: rev2s.Revision, Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: rev5s.TrafficTarget, RevisionName: rev5s.Revision, Percent: ptr.Int64(50), diff --git a/test/conformance/api/v1alpha1/service_test.go b/test/conformance/api/v1alpha1/service_test.go index 19c227e69112..4aef9acaafd1 100644 --- a/test/conformance/api/v1alpha1/service_test.go +++ b/test/conformance/api/v1alpha1/service_test.go @@ -26,8 +26,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "knative.dev/pkg/ptr" pkgTest "knative.dev/pkg/test" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/test" v1a1test "knative.dev/serving/test/v1alpha1" ) @@ -283,13 +283,13 @@ func TestReleaseService(t *testing.T) { t.Log("1. Updating Service to ReleaseType using lastCreatedRevision") objects.Service, err = v1a1test.UpdateServiceRouteSpec(t, clients, names, v1alpha1.RouteSpec{ Traffic: []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "current", RevisionName: firstRevision, Percent: ptr.Int64(100), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", Percent: nil, }, @@ -301,7 +301,7 @@ func TestReleaseService(t *testing.T) { desiredTrafficShape := map[string]v1alpha1.TrafficTarget{ "current": { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "current", RevisionName: objects.Config.Status.LatestReadyRevisionName, Percent: ptr.Int64(100), @@ -309,7 +309,7 @@ func TestReleaseService(t *testing.T) { }, }, "latest": { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", RevisionName: objects.Config.Status.LatestReadyRevisionName, LatestRevision: ptr.Bool(true), @@ -344,7 +344,7 @@ func TestReleaseService(t *testing.T) { // Also verify traffic is in the correct shape. desiredTrafficShape["latest"] = v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", RevisionName: secondRevision, LatestRevision: ptr.Bool(true), @@ -368,19 +368,19 @@ func TestReleaseService(t *testing.T) { t.Log("3. Updating Service to split traffic between two revisions using Release mode") objects.Service, err = v1a1test.UpdateServiceRouteSpec(t, clients, names, v1alpha1.RouteSpec{ Traffic: []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "current", RevisionName: firstRevision, Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "candidate", RevisionName: secondRevision, Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", Percent: nil, }, @@ -392,7 +392,7 @@ func TestReleaseService(t *testing.T) { desiredTrafficShape = map[string]v1alpha1.TrafficTarget{ "current": { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "current", RevisionName: firstRevision, Percent: ptr.Int64(50), @@ -400,7 +400,7 @@ func TestReleaseService(t *testing.T) { }, }, "candidate": { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "candidate", RevisionName: secondRevision, Percent: ptr.Int64(50), @@ -408,7 +408,7 @@ func TestReleaseService(t *testing.T) { }, }, "latest": { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", RevisionName: secondRevision, LatestRevision: ptr.Bool(true), @@ -441,7 +441,7 @@ func TestReleaseService(t *testing.T) { thirdRevision := names.Revision desiredTrafficShape["latest"] = v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", RevisionName: thirdRevision, LatestRevision: ptr.Bool(true), @@ -466,18 +466,18 @@ func TestReleaseService(t *testing.T) { objects.Service, err = v1a1test.UpdateServiceRouteSpec(t, clients, names, v1alpha1.RouteSpec{ Traffic: []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "current", RevisionName: firstRevision, Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "candidate", Percent: ptr.Int64(50), }, }, { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "latest", Percent: nil, }, @@ -494,7 +494,7 @@ func TestReleaseService(t *testing.T) { // `candidate` now points to the latest. desiredTrafficShape["candidate"] = v1alpha1.TrafficTarget{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: "candidate", RevisionName: thirdRevision, Percent: ptr.Int64(50), diff --git a/test/conformance/api/v1beta1/blue_green_test.go b/test/conformance/api/v1beta1/blue_green_test.go index 914718b201ed..494a5245b175 100644 --- a/test/conformance/api/v1beta1/blue_green_test.go +++ b/test/conformance/api/v1beta1/blue_green_test.go @@ -27,7 +27,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "knative.dev/pkg/ptr" pkgTest "knative.dev/pkg/test" - "knative.dev/serving/pkg/apis/serving/v1beta1" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/test" v1b1test "knative.dev/serving/test/v1beta1" @@ -89,8 +89,8 @@ func TestBlueGreenRoute(t *testing.T) { } t.Log("Updating RouteSpec") - if _, err := v1b1test.UpdateServiceRouteSpec(t, clients, names, v1beta1.RouteSpec{ - Traffic: []v1beta1.TrafficTarget{{ + if _, err := v1b1test.UpdateServiceRouteSpec(t, clients, names, v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: blue.TrafficTarget, RevisionName: blue.Revision, Percent: ptr.Int64(50), diff --git a/test/conformance/api/v1beta1/migration_test.go b/test/conformance/api/v1beta1/migration_test.go index 464b42f58a17..eee859f12a56 100644 --- a/test/conformance/api/v1beta1/migration_test.go +++ b/test/conformance/api/v1beta1/migration_test.go @@ -32,7 +32,7 @@ import ( "knative.dev/serving/test" ) -func TestV1beta1Translation(t *testing.T) { +func TestTranslation(t *testing.T) { t.Parallel() cancel := logstream.Start(t) defer cancel() @@ -61,10 +61,19 @@ func TestV1beta1Translation(t *testing.T) { t.Fatalf("Failed to get v1beta1.Service: %v: %v", names.Service, err) } - // Check that the PodSpecs match + // Access the service over the v1 endpoint. + v1, err := clients.ServingClient.Services.Get(service.Name, metav1.GetOptions{}) + if err != nil { + t.Fatalf("Failed to get v1.Service: %v: %v", names.Service, err) + } + + // Check that all PodSpecs match if !equality.Semantic.DeepEqual(v1b1.Spec.Template.Spec.PodSpec, service.Spec.Template.Spec.PodSpec) { t.Fatalf("Failed to parse unstructured as v1beta1.Service: %v: %v", names.Service, err) } + if !equality.Semantic.DeepEqual(v1.Spec.Template.Spec.PodSpec, service.Spec.Template.Spec.PodSpec) { + t.Fatalf("Failed to parse unstructured as v1.Service: %v: %v", names.Service, err) + } } func TestV1beta1Rejection(t *testing.T) { diff --git a/test/conformance/api/v1beta1/revision_timeout_test.go b/test/conformance/api/v1beta1/revision_timeout_test.go index d43057ebbc91..18221417c61b 100644 --- a/test/conformance/api/v1beta1/revision_timeout_test.go +++ b/test/conformance/api/v1beta1/revision_timeout_test.go @@ -30,6 +30,7 @@ import ( "k8s.io/apimachinery/pkg/types" "knative.dev/pkg/ptr" pkgTest "knative.dev/pkg/test" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1beta1" serviceresourcenames "knative.dev/serving/pkg/reconciler/service/resources/names" "knative.dev/serving/test" @@ -161,8 +162,8 @@ func TestRevisionTimeout(t *testing.T) { rev5s.TrafficTarget = "rev5s" t.Log("Updating RouteSpec") - if _, err := v1b1test.UpdateServiceRouteSpec(t, clients, names, v1beta1.RouteSpec{ - Traffic: []v1beta1.TrafficTarget{{ + if _, err := v1b1test.UpdateServiceRouteSpec(t, clients, names, v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: rev2s.TrafficTarget, RevisionName: rev2s.Revision, Percent: ptr.Int64(50), diff --git a/test/conformance/api/v1beta1/service_test.go b/test/conformance/api/v1beta1/service_test.go index d66471b1dc99..1eb7672af61e 100644 --- a/test/conformance/api/v1beta1/service_test.go +++ b/test/conformance/api/v1beta1/service_test.go @@ -26,6 +26,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "knative.dev/pkg/ptr" pkgTest "knative.dev/pkg/test" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1beta1" "knative.dev/serving/test" v1b1test "knative.dev/serving/test/v1beta1" @@ -157,7 +158,7 @@ func TestService(t *testing.T) { } } -func waitForDesiredTrafficShape(t *testing.T, sName string, want map[string]v1beta1.TrafficTarget, clients *test.Clients) error { +func waitForDesiredTrafficShape(t *testing.T, sName string, want map[string]v1.TrafficTarget, clients *test.Clients) error { return v1b1test.WaitForServiceState( clients.ServingBetaClient, sName, func(s *v1beta1.Service) (bool, error) { // IsServiceReady never returns an error. @@ -165,11 +166,11 @@ func waitForDesiredTrafficShape(t *testing.T, sName string, want map[string]v1be return false, nil } // Match the traffic shape. - got := map[string]v1beta1.TrafficTarget{} + got := map[string]v1.TrafficTarget{} for _, tt := range s.Status.Traffic { got[tt.Tag] = tt } - ignoreURLs := cmpopts.IgnoreFields(v1beta1.TrafficTarget{}, "URL") + ignoreURLs := cmpopts.IgnoreFields(v1.TrafficTarget{}, "URL") if !cmp.Equal(got, want, ignoreURLs) { t.Logf("For service %s traffic shape mismatch: (-got, +want) %s", sName, cmp.Diff(got, want, ignoreURLs)) @@ -281,8 +282,8 @@ func TestServiceWithTrafficSplit(t *testing.T) { // 1. One Revision Specified, current == latest. t.Log("1. Updating Service to ReleaseType using lastCreatedRevision") - objects.Service, err = v1b1test.UpdateServiceRouteSpec(t, clients, names, v1beta1.RouteSpec{ - Traffic: []v1beta1.TrafficTarget{{ + objects.Service, err = v1b1test.UpdateServiceRouteSpec(t, clients, names, v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: "current", RevisionName: firstRevision, Percent: ptr.Int64(100), @@ -295,7 +296,7 @@ func TestServiceWithTrafficSplit(t *testing.T) { t.Fatalf("Failed to update Service: %v", err) } - desiredTrafficShape := map[string]v1beta1.TrafficTarget{ + desiredTrafficShape := map[string]v1.TrafficTarget{ "current": { Tag: "current", RevisionName: objects.Config.Status.LatestReadyRevisionName, @@ -335,7 +336,7 @@ func TestServiceWithTrafficSplit(t *testing.T) { secondRevision := names.Revision // Also verify traffic is in the correct shape. - desiredTrafficShape["latest"] = v1beta1.TrafficTarget{ + desiredTrafficShape["latest"] = v1.TrafficTarget{ Tag: "latest", RevisionName: secondRevision, LatestRevision: ptr.Bool(true), @@ -356,8 +357,8 @@ func TestServiceWithTrafficSplit(t *testing.T) { // 3. Two Revisions Specified, 50% rollout, candidate == latest. t.Log("3. Updating Service to split traffic between two revisions using Release mode") - objects.Service, err = v1b1test.UpdateServiceRouteSpec(t, clients, names, v1beta1.RouteSpec{ - Traffic: []v1beta1.TrafficTarget{{ + objects.Service, err = v1b1test.UpdateServiceRouteSpec(t, clients, names, v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: "current", RevisionName: firstRevision, Percent: ptr.Int64(50), @@ -374,7 +375,7 @@ func TestServiceWithTrafficSplit(t *testing.T) { t.Fatalf("Failed to update Service: %v", err) } - desiredTrafficShape = map[string]v1beta1.TrafficTarget{ + desiredTrafficShape = map[string]v1.TrafficTarget{ "current": { Tag: "current", RevisionName: firstRevision, @@ -418,7 +419,7 @@ func TestServiceWithTrafficSplit(t *testing.T) { } thirdRevision := names.Revision - desiredTrafficShape["latest"] = v1beta1.TrafficTarget{ + desiredTrafficShape["latest"] = v1.TrafficTarget{ Tag: "latest", RevisionName: thirdRevision, LatestRevision: ptr.Bool(true), @@ -440,8 +441,8 @@ func TestServiceWithTrafficSplit(t *testing.T) { // Now update the service to use `@latest` as candidate. t.Log("5. Updating Service to split traffic between two `current` and `@latest`") - objects.Service, err = v1b1test.UpdateServiceRouteSpec(t, clients, names, v1beta1.RouteSpec{ - Traffic: []v1beta1.TrafficTarget{{ + objects.Service, err = v1b1test.UpdateServiceRouteSpec(t, clients, names, v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: "current", RevisionName: firstRevision, Percent: ptr.Int64(50), @@ -463,7 +464,7 @@ func TestServiceWithTrafficSplit(t *testing.T) { } // `candidate` now points to the latest. - desiredTrafficShape["candidate"] = v1beta1.TrafficTarget{ + desiredTrafficShape["candidate"] = v1.TrafficTarget{ Tag: "candidate", RevisionName: thirdRevision, Percent: ptr.Int64(50), diff --git a/test/e2e/route_service_test.go b/test/e2e/route_service_test.go index 2c58dde5b80d..0d8055ff1896 100644 --- a/test/e2e/route_service_test.go +++ b/test/e2e/route_service_test.go @@ -23,8 +23,8 @@ import ( "knative.dev/pkg/ptr" "knative.dev/pkg/test/logstream" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" serviceresourcenames "knative.dev/serving/pkg/reconciler/service/resources/names" . "knative.dev/serving/pkg/testing/v1alpha1" "knative.dev/serving/test" @@ -52,7 +52,7 @@ func TestRoutesNotReady(t *testing.T) { withTrafficSpec := WithInlineRouteSpec(v1alpha1.RouteSpec{ Traffic: []v1alpha1.TrafficTarget{ { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ RevisionName: "foobar", // Invalid revision name. This allows Revision creation to succeed and Route configuration to fail Percent: ptr.Int64(100), }, diff --git a/test/e2e/subroutes_test.go b/test/e2e/subroutes_test.go index 2d5c4d85b8c7..6327fd96492e 100644 --- a/test/e2e/subroutes_test.go +++ b/test/e2e/subroutes_test.go @@ -22,7 +22,7 @@ import ( "strings" "testing" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" "knative.dev/pkg/apis/duck" "knative.dev/pkg/network" @@ -30,8 +30,8 @@ import ( "knative.dev/pkg/test/logstream" "knative.dev/serving/pkg/reconciler/route/resources/labels" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" routeconfig "knative.dev/serving/pkg/reconciler/route/config" "knative.dev/serving/test" v1a1test "knative.dev/serving/test/v1alpha1" @@ -67,7 +67,7 @@ func TestSubrouteLocalSTS(t *testing.T) { // We can't use a longer more descript withTrafficSpec := WithInlineRouteSpec(v1alpha1.RouteSpec{ Traffic: []v1alpha1.TrafficTarget{ { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: tag, Percent: ptr.Int64(100), }, @@ -115,7 +115,7 @@ func TestSubrouteVisibilityChange(t *testing.T) { withTrafficSpec := WithInlineRouteSpec(v1alpha1.RouteSpec{ Traffic: []v1alpha1.TrafficTarget{ { - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: tag, Percent: ptr.Int64(100), }, @@ -135,7 +135,7 @@ func TestSubrouteVisibilityChange(t *testing.T) { } serviceName := fmt.Sprintf("%s-%s", tag, resources.Route.Name) - svc, err := clients.KubeClient.Kube.CoreV1().Services(test.ServingNamespace).Get(serviceName, v1.GetOptions{}) + svc, err := clients.KubeClient.Kube.CoreV1().Services(test.ServingNamespace).Get(serviceName, metav1.GetOptions{}) if err != nil { t.Fatalf("Failed to get k8s service to modify: %s", err.Error()) } diff --git a/test/test_images/pizzaplanetv1/service.yaml b/test/test_images/pizzaplanetv1/service.yaml index 0fbbf1bf7e47..533453f78175 100644 --- a/test/test_images/pizzaplanetv1/service.yaml +++ b/test/test_images/pizzaplanetv1/service.yaml @@ -1,4 +1,4 @@ -apiVersion: serving.knative.dev/v1alpha1 +apiVersion: serving.knative.dev/v1 kind: Service metadata: name: pizzaplanetv1-test-image diff --git a/test/v1alpha1/configuration.go b/test/v1alpha1/configuration.go index 6cc83561234f..e538ed71ae4b 100644 --- a/test/v1alpha1/configuration.go +++ b/test/v1alpha1/configuration.go @@ -30,8 +30,8 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/wait" "knative.dev/pkg/test/logging" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" ptest "knative.dev/pkg/test" rtesting "knative.dev/serving/pkg/testing/v1alpha1" @@ -91,7 +91,7 @@ func ConfigurationSpec(imagePath string) *v1alpha1.ConfigurationSpec { return &v1alpha1.ConfigurationSpec{ Template: &v1alpha1.RevisionTemplateSpec{ Spec: v1alpha1.RevisionSpec{ - RevisionSpec: v1beta1.RevisionSpec{ + RevisionSpec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: imagePath, @@ -112,7 +112,7 @@ func LegacyConfigurationSpec(imagePath string) *v1alpha1.ConfigurationSpec { DeprecatedContainer: &corev1.Container{ Image: imagePath, }, - RevisionSpec: v1beta1.RevisionSpec{}, + RevisionSpec: v1.RevisionSpec{}, }, }, } diff --git a/test/v1alpha1/route.go b/test/v1alpha1/route.go index 1860f9cc4643..3758ffde78b6 100644 --- a/test/v1alpha1/route.go +++ b/test/v1alpha1/route.go @@ -30,8 +30,8 @@ import ( "knative.dev/pkg/ptr" "knative.dev/pkg/test/logging" "knative.dev/pkg/test/spoof" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1alpha1" - "knative.dev/serving/pkg/apis/serving/v1beta1" rtesting "knative.dev/serving/pkg/testing/v1alpha1" v1alpha1testing "knative.dev/serving/pkg/testing/v1alpha1" @@ -47,7 +47,7 @@ func Route(names test.ResourceNames, fopt ...v1alpha1testing.RouteOption) *v1alp }, Spec: v1alpha1.RouteSpec{ Traffic: []v1alpha1.TrafficTarget{{ - TrafficTarget: v1beta1.TrafficTarget{ + TrafficTarget: v1.TrafficTarget{ Tag: names.TrafficTarget, ConfigurationName: names.Config, Percent: ptr.Int64(100), diff --git a/test/v1beta1/configuration.go b/test/v1beta1/configuration.go index b1243529f46e..39416bfc7400 100644 --- a/test/v1beta1/configuration.go +++ b/test/v1beta1/configuration.go @@ -24,6 +24,7 @@ import ( "github.com/pkg/errors" corev1 "k8s.io/api/core/v1" "knative.dev/pkg/test/logging" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1beta1" // "k8s.io/apimachinery/pkg/api/resource" @@ -84,10 +85,10 @@ func WaitForConfigLatestRevision(clients *test.Clients, names test.ResourceNames // ConfigurationSpec returns the spec of a configuration to be used throughout different // CRD helpers. -func ConfigurationSpec(imagePath string) *v1beta1.ConfigurationSpec { - return &v1beta1.ConfigurationSpec{ - Template: v1beta1.RevisionTemplateSpec{ - Spec: v1beta1.RevisionSpec{ +func ConfigurationSpec(imagePath string) *v1.ConfigurationSpec { + return &v1.ConfigurationSpec{ + Template: v1.RevisionTemplateSpec{ + Spec: v1.RevisionSpec{ PodSpec: corev1.PodSpec{ Containers: []corev1.Container{{ Image: imagePath, diff --git a/test/v1beta1/route.go b/test/v1beta1/route.go index ac514f42369c..b40af48b2d85 100644 --- a/test/v1beta1/route.go +++ b/test/v1beta1/route.go @@ -28,6 +28,7 @@ import ( "knative.dev/pkg/ptr" "knative.dev/pkg/test/logging" "knative.dev/pkg/test/spoof" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1beta1" rtesting "knative.dev/serving/pkg/testing/v1beta1" @@ -41,8 +42,8 @@ func Route(names test.ResourceNames, fopt ...rtesting.RouteOption) *v1beta1.Rout ObjectMeta: metav1.ObjectMeta{ Name: names.Route, }, - Spec: v1beta1.RouteSpec{ - Traffic: []v1beta1.TrafficTarget{{ + Spec: v1.RouteSpec{ + Traffic: []v1.TrafficTarget{{ Tag: names.TrafficTarget, ConfigurationName: names.Config, Percent: ptr.Int64(100), diff --git a/test/v1beta1/service.go b/test/v1beta1/service.go index 3738aea39d9e..abf88e331252 100644 --- a/test/v1beta1/service.go +++ b/test/v1beta1/service.go @@ -29,6 +29,7 @@ import ( "k8s.io/apimachinery/pkg/util/wait" ptest "knative.dev/pkg/test" "knative.dev/pkg/test/logging" + "knative.dev/serving/pkg/apis/serving/v1" "knative.dev/serving/pkg/apis/serving/v1beta1" serviceresourcenames "knative.dev/serving/pkg/reconciler/service/resources/names" rtesting "knative.dev/serving/pkg/testing/v1beta1" @@ -152,7 +153,7 @@ func PatchService(t *testing.T, clients *test.Clients, svc *v1beta1.Service, fop } // UpdateServiceRouteSpec updates a service to use the route name in names. -func UpdateServiceRouteSpec(t *testing.T, clients *test.Clients, names test.ResourceNames, rs v1beta1.RouteSpec) (*v1beta1.Service, error) { +func UpdateServiceRouteSpec(t *testing.T, clients *test.Clients, names test.ResourceNames, rs v1.RouteSpec) (*v1beta1.Service, error) { patches := []jsonpatch.JsonPatchOperation{{ Operation: "replace", Path: "/spec/traffic",