Repository: knative/serving
Pull request #9936 (2020-10-23 23:37:22)

Active is no longer used in the route
When we introduced SKS and revision based activation route no longer cares about
revision being scaled to zero, since it no longer programms the route differently.

/assign @tcnghia 

knative-prow-robot: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative/serving/pull/9936#" title="Author self-approved">vagababov</a>*

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=knative%2Fserving).

The pull request process is described [here](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process)

<details >
Needs approval from an approver in each of these files:

- ~~[pkg/reconciler/route/OWNERS](https://github.com/knative/serving/blob/master/pkg/reconciler/route/OWNERS)~~ [vagababov]

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":[]} -->
codecov[bot]: # [Codecov](https://codecov.io/gh/knative/serving/pull/9936?src=pr&el=h1) Report
> Merging [#9936](https://codecov.io/gh/knative/serving/pull/9936?src=pr&el=desc) into [master](https://codecov.io/gh/knative/serving/commit/e37c364f2d5a89d13b6b635b4385f985fc3f2a3f?el=desc) will **decrease** coverage by `0.00%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/knative/serving/pull/9936/graphs/tree.svg?width=650&height=150&src=pr&token=MPpDfAj4Ui)](https://codecov.io/gh/knative/serving/pull/9936?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master    #9936      +/-   ##
==========================================
- Coverage   87.81%   87.80%   -0.01%     
==========================================
  Files         183      183              
  Lines        8632     8630       -2     
==========================================
- Hits         7580     7578       -2     
- Misses        801      802       +1     
+ Partials      251      250       -1     
```


| [Impacted Files](https://codecov.io/gh/knative/serving/pull/9936?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/reconciler/route/traffic/traffic.go](https://codecov.io/gh/knative/serving/pull/9936/diff?src=pr&el=tree#diff-cGtnL3JlY29uY2lsZXIvcm91dGUvdHJhZmZpYy90cmFmZmljLmdv) | `93.10% <ø> (-0.08%)` | :arrow_down: |
| [pkg/activator/net/revision\_backends.go](https://codecov.io/gh/knative/serving/pull/9936/diff?src=pr&el=tree#diff-cGtnL2FjdGl2YXRvci9uZXQvcmV2aXNpb25fYmFja2VuZHMuZ28=) | `90.49% <0.00%> (-0.91%)` | :arrow_down: |
| [pkg/reconciler/autoscaling/kpa/scaler.go](https://codecov.io/gh/knative/serving/pull/9936/diff?src=pr&el=tree#diff-cGtnL3JlY29uY2lsZXIvYXV0b3NjYWxpbmcva3BhL3NjYWxlci5nbw==) | `90.00% <0.00%> (+1.42%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/knative/serving/pull/9936?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/knative/serving/pull/9936?src=pr&el=footer). Last update [e37c364...09f2862](https://codecov.io/gh/knative/serving/pull/9936?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


Patch:
diff --git a/pkg/reconciler/revision/controller.go b/pkg/reconciler/revision/controller.go
index 6ec0e9a33..043adb94e 100644
--- a/pkg/reconciler/revision/controller.go
+++ b/pkg/reconciler/revision/controller.go
@@ -20,6 +20,7 @@ import (
 	"context"
 	"net/http"
 
+	"go.uber.org/zap"
 	cachingclient "knative.dev/caching/pkg/client/injection/client"
 	imageinformer "knative.dev/caching/pkg/client/injection/informers/caching/v1alpha1/image"
 	kubeclient "knative.dev/pkg/client/injection/kube/client"
@@ -105,7 +106,7 @@ func newControllerWithOptions(
 
 	transport := http.DefaultTransport
 	if rt, err := newResolverTransport(k8sCertPath, digestResolutionWorkers, digestResolutionWorkers); err != nil {
-		logging.FromContext(ctx).Error("Failed to create resolver transport: ", err)
+		logging.FromContext(ctx).Errorw("Failed to create resolver transport", zap.Error(err))
 	} else {
 		transport = rt
 	}
diff --git a/pkg/reconciler/route/traffic/rollout.go b/pkg/reconciler/route/traffic/rollout.go
index aef33dcde..32e4afcde 100644
--- a/pkg/reconciler/route/traffic/rollout.go
+++ b/pkg/reconciler/route/traffic/rollout.go
@@ -43,6 +43,11 @@ type ConfigurationRollout struct {
 	ConfigurationName string `json:"configurationName"`
 	Tag               string `json:"tag,omitempty"`
 
+	// Percent denotes the total percentage for this configuration.
+	// The individual percentages of the Revisions below will sum to this
+	// number.
+	Percent int `json:"percent"`
+
 	// The revisions in the rollout. In steady state this should
 	// contain 0 (no revision is ready) or 1 (rollout done).
 	// During the actual rollout it will contain N revisions
diff --git a/pkg/reconciler/route/traffic/traffic.go b/pkg/reconciler/route/traffic/traffic.go
index 88906cf1b..649765c57 100644
--- a/pkg/reconciler/route/traffic/traffic.go
+++ b/pkg/reconciler/route/traffic/traffic.go
@@ -36,11 +36,10 @@ import (
 // DefaultTarget is the unnamed default target for the traffic.
 const DefaultTarget = ""
 
-// A RevisionTarget adds the Active/Inactive state and the transport protocol of a
+// A RevisionTarget adds the transport protocol and the service name of a
 // Revision to a flattened TrafficTarget.
 type RevisionTarget struct {
 	v1.TrafficTarget
-	Active      bool
 	Protocol    net.ProtocolType
 	ServiceName string // Revision service name.
 }
@@ -167,6 +166,8 @@ func newBuilder(
 
 // BuildRollout builds the current rollout state.
 // It is expected to be invoked after applySpecTraffic.
+// Returned Rollout will be sorted by tag and within tag by configuration
+// (only default tag can have more than configuration object attached).
 // TODO(vagababov): actually deal with rollouts, vs just report desired state.
 func (cfg *Config) BuildRollout() *Rollout {
 	rollout := &Rollout{}
@@ -205,9 +206,12 @@ func buildRolloutForTag(r *Rollout, tag string, rts RevisionTargets) {
 		r.Configurations = append(r.Configurations, ConfigurationRollout{
 			ConfigurationName: rt.ConfigurationName,
 			Tag:               tag,
+			Percent:           int(zeroIfNil(rt.Percent)),
 			Revisions: []RevisionRollout{{
 				RevisionName: rt.RevisionName,
-				Percent:      int(valIfNil(0, rt.Percent)),
+				// Note: this will match config value in steady state, but
+				// during rollout it will be overridden by the rollout logic.
+				Percent: int(zeroIfNil(rt.Percent)),
 			}},
 		})
 	}
@@ -306,7 +310,6 @@ func (cb *configBuilder) addConfigurationTarget(tt *v1.TrafficTarget) error {
 	ntt := tt.DeepCopy()
 	target := RevisionTarget{
 		TrafficTarget: *ntt,
-		Active:        !rev.Status.IsActivationRequired(),
 		Protocol:      rev.GetProtocol(),
 		ServiceName:   rev.Status.ServiceName,
 	}
@@ -326,7 +329,6 @@ func (cb *configBuilder) addRevisionTarget(tt *v1.TrafficTarget) error {
 	ntt := tt.DeepCopy()
 	target := RevisionTarget{
 		TrafficTarget: *ntt,
-		Active:        !rev.Status.IsActivationRequired(),
 		Protocol:      rev.GetProtocol(),
 		ServiceName:   rev.Status.ServiceName,
 	}
@@ -340,10 +342,10 @@ func (cb *configBuilder) addRevisionTarget(tt *v1.TrafficTarget) error {
 	return nil
 }
 
-// valIfNil returns `val` if `ptr==nil`, or `*ptr` otherwise.
-func valIfNil(val int64, ptr *int64) int64 {
+// zeroIfNil returns `0` if `ptr==nil`, or `*ptr` otherwise.
+func zeroIfNil(ptr *int64) int64 {
 	if ptr == nil {
-		return val
+		return 0
 	}
 	return *ptr
 }
@@ -354,7 +356,7 @@ func mergeIfNecessary(rts RevisionTargets, rt RevisionTarget) RevisionTargets {
 	for i := range rts {
 		if rts[i].Tag == rt.Tag && rts[i].RevisionName == rt.RevisionName &&
 			*rt.LatestRevision == *rts[i].LatestRevision {
-			rts[i].Percent = ptr.Int64(valIfNil(0, rts[i].Percent) + valIfNil(0, rt.Percent))
+			rts[i].Percent = ptr.Int64(zeroIfNil(rts[i].Percent) + zeroIfNil(rt.Percent))
 			return rts
 		}
 	}


Test patch:
diff --git a/pkg/reconciler/route/reconcile_resources_test.go b/pkg/reconciler/route/reconcile_resources_test.go
index fa5d8a328..2df0af8b8 100644
--- a/pkg/reconciler/route/reconcile_resources_test.go
+++ b/pkg/reconciler/route/reconcile_resources_test.go
@@ -123,7 +123,6 @@ func TestReconcileTargetValidRevision(t *testing.T) {
 				RevisionName: "revision",
 				Percent:      ptr.Int64(100),
 			},
-			Active: true,
 		}}}}
 
 	ctx = config.ToContext(ctx, &config.Config{
@@ -175,7 +174,6 @@ func TestReconcileRevisionTargetDoesNotExist(t *testing.T) {
 				RevisionName: "invalid-revision",
 				Percent:      ptr.Int64(100),
 			},
-			Active: true,
 		}}}}
 	ctx = config.ToContext(ctx, &config.Config{
 		GC: &gc.Config{
@@ -219,7 +217,6 @@ func newTestIngress(t *testing.T, r *v1.Route, trafficOpts ...func(tc *traffic.C
 				RevisionName: "revision",
 				Percent:      ptr.Int64(100),
 			},
-			Active: true,
 		}}}}
 
 	for _, opt := range trafficOpts {
@@ -233,7 +230,7 @@ func newTestIngress(t *testing.T, r *v1.Route, trafficOpts ...func(tc *traffic.C
 	}}
 	ingress, err := resources.MakeIngress(getContext(), r, tc, tls, "foo-ingress")
 	if err != nil {
-		t.Error("Unexpected error", err)
+		t.Error("Unexpected error:", err)
 	}
 	return ingress
 }
@@ -252,7 +249,7 @@ func TestReconcileCertificatesInsert(t *testing.T) {
 	}
 	created := getCertificateFromClient(ctx, t, certificate)
 	if diff := cmp.Diff(certificate, created); diff != "" {
-		t.Error("Unexpected diff (-want +got):", diff)
+		t.Errorf("Unexpected diff (-want +got):\n%s", diff)
 	}
 }
 
diff --git a/pkg/reconciler/route/resources/ingress_test.go b/pkg/reconciler/route/resources/ingress_test.go
index d060cbe55..f9ef370cf 100644
--- a/pkg/reconciler/route/resources/ingress_test.go
+++ b/pkg/reconciler/route/resources/ingress_test.go
@@ -171,7 +171,6 @@ func TestMakeIngressSpecCorrectRules(t *testing.T) {
 				Percent:           ptr.Int64(100),
 			},
 			ServiceName: "gilberto",
-			Active:      true,
 		}},
 		"v1": {{
 			TrafficTarget: v1.TrafficTarget{
@@ -180,7 +179,6 @@ func TestMakeIngressSpecCorrectRules(t *testing.T) {
 				Percent:           ptr.Int64(100),
 			},
 			ServiceName: "jobim",
-			Active:      true,
 		}},
 	}
 
@@ -304,7 +302,6 @@ func TestMakeIngressSpecCorrectRuleVisibility(t *testing.T) {
 					Percent:           ptr.Int64(100),
 				},
 				ServiceName: "gilberto",
-				Active:      true,
 			}},
 		},
 		expectedVisibility: map[netv1alpha1.IngressVisibility][]string{
@@ -322,7 +319,6 @@ func TestMakeIngressSpecCorrectRuleVisibility(t *testing.T) {
 					Percent:           ptr.Int64(100),
 				},
 				ServiceName: "gilberto",
-				Active:      true,
 			}},
 		},
 		serviceVisibility: map[string]netv1alpha1.IngressVisibility{
@@ -342,7 +338,6 @@ func TestMakeIngressSpecCorrectRuleVisibility(t *testing.T) {
 					Percent:           ptr.Int64(100),
 				},
 				ServiceName: "gilberto",
-				Active:      true,
 			}},
 		},
 		expectedVisibility: map[netv1alpha1.IngressVisibility][]string{
@@ -381,7 +376,6 @@ func TestMakeIngressSpecCorrectRulesWithTagBasedRouting(t *testing.T) {
 				Percent:           ptr.Int64(100),
 			},
 			ServiceName: "gilberto",
-			Active:      true,
 		}},
 		"v1": {{
 			TrafficTarget: v1.TrafficTarget{
@@ -390,7 +384,6 @@ func TestMakeIngressSpecCorrectRulesWithTagBasedRouting(t *testing.T) {
 				Percent:           ptr.Int64(100),
 			},
 			ServiceName: "jobim",
-			Active:      true,
 		}},
 	}
 
@@ -556,7 +549,6 @@ func TestMakeIngressRuleVanilla(t *testing.T) {
 			Percent:           ptr.Int64(100),
 		},
 		ServiceName: "chocolate",
-		Active:      true,
 	}}
 	domains := []string{"a.com", "b.org"}
 	rule := makeIngressRule(domains, ns, netv1alpha1.IngressVisibilityExternalIP, targets)
@@ -598,14 +590,12 @@ func TestMakeIngressRuleZeroPercentTarget(t *testing.T) {
 			Percent:           ptr.Int64(100),
 		},
 		ServiceName: "active-target",
-		Active:      true,
 	}, {
 		TrafficTarget: v1.TrafficTarget{
 			ConfigurationName: "new-config",
 			RevisionName:      "new-revision",
 			Percent:           ptr.Int64(0),
 		},
-		Active: true,
 	}}
 	domains := []string{"test.org"}
 	rule := makeIngressRule(domains, ns, netv1alpha1.IngressVisibilityExternalIP, targets)
@@ -644,14 +634,11 @@ func TestMakeIngressRuleNilPercentTarget(t *testing.T) {
 			Percent:           ptr.Int64(100),
 		},
 		ServiceName: "active-target",
-		Active:      true,
 	}, {
 		TrafficTarget: v1.TrafficTarget{
 			ConfigurationName: "new-config",
 			RevisionName:      "new-revision",
-			Percent:           nil,
 		},
-		Active: true,
 	}}
 	domains := []string{"test.org"}
 	rule := makeIngressRule(domains, ns, netv1alpha1.IngressVisibilityExternalIP, targets)
@@ -690,7 +677,6 @@ func TestMakeIngressRuleTwoTargets(t *testing.T) {
 			Percent:           ptr.Int64(80),
 		},
 		ServiceName: "nigh",
-		Active:      true,
 	}, {
 		TrafficTarget: v1.TrafficTarget{
 			ConfigurationName: "new-config",
@@ -698,7 +684,6 @@ func TestMakeIngressRuleTwoTargets(t *testing.T) {
 			Percent:           ptr.Int64(20),
 		},
 		ServiceName: "death",
-		Active:      true,
 	}}
 	domains := []string{"test.org"}
 	rule := makeIngressRule(domains, ns, netv1alpha1.IngressVisibilityExternalIP, targets)
@@ -748,7 +733,6 @@ func TestMakeIngressRuleInactiveTarget(t *testing.T) {
 			Percent:           ptr.Int64(100),
 		},
 		ServiceName: "strange-quark",
-		Active:      false,
 	}}
 	domains := []string{"a.com", "b.org"}
 	rule := makeIngressRule(domains, ns, netv1alpha1.IngressVisibilityExternalIP, targets)
@@ -789,7 +773,6 @@ func TestMakeIngressRuleTwoInactiveTargets(t *testing.T) {
 			Percent:           ptr.Int64(80),
 		},
 		ServiceName: "up-quark",
-		Active:      false,
 	}, {
 		TrafficTarget: v1.TrafficTarget{
 			ConfigurationName: "new-config",
@@ -797,7 +780,6 @@ func TestMakeIngressRuleTwoInactiveTargets(t *testing.T) {
 			Percent:           ptr.Int64(20),
 		},
 		ServiceName: "down-quark",
-		Active:      false,
 	}}
 	domains := []string{"a.com", "b.org"}
 	rule := makeIngressRule(domains, ns, netv1alpha1.IngressVisibilityExternalIP, targets)
@@ -848,14 +830,12 @@ func TestMakeIngressRuleZeroPercentTargetInactive(t *testing.T) {
 			Percent:           ptr.Int64(100),
 		},
 		ServiceName: "apathy-sets-in",
-		Active:      true,
 	}, {
 		TrafficTarget: v1.TrafficTarget{
 			ConfigurationName: "new-config",
 			RevisionName:      "new-revision",
 			Percent:           ptr.Int64(0),
 		},
-		Active: false,
 	}}
 	domains := []string{"test.org"}
 	rule := makeIngressRule(domains, ns, netv1alpha1.IngressVisibilityExternalIP, targets)
@@ -893,14 +873,12 @@ func TestMakeIngressRuleNilPercentTargetInactive(t *testing.T) {
 			Percent:           ptr.Int64(100),
 		},
 		ServiceName: "apathy-sets-in",
-		Active:      true,
 	}, {
 		TrafficTarget: v1.TrafficTarget{
 			ConfigurationName: "new-config",
 			RevisionName:      "new-revision",
 			Percent:           nil,
 		},
-		Active: false,
 	}}
 	domains := []string{"test.org"}
 	rule := makeIngressRule(domains, ns, netv1alpha1.IngressVisibilityExternalIP, targets)
@@ -999,7 +977,6 @@ func TestMakeIngressACMEChallenges(t *testing.T) {
 				Percent:           ptr.Int64(100),
 			},
 			ServiceName: "gilberto",
-			Active:      true,
 		}},
 	}
 
@@ -1103,7 +1080,6 @@ func TestMakeIngressFailToGenerateDomain(t *testing.T) {
 				Percent:           ptr.Int64(100),
 			},
 			ServiceName: "gilberto",
-			Active:      true,
 		}},
 	}
 
@@ -1135,7 +1111,6 @@ func TestMakeIngressFailToGenerateTagHost(t *testing.T) {
 				Percent:           ptr.Int64(100),
 			},
 			ServiceName: "gilberto",
-			Active:      true,
 		}},
 		"v1": {{
 			TrafficTarget: v1.TrafficTarget{
@@ -1144,7 +1119,6 @@ func TestMakeIngressFailToGenerateTagHost(t *testing.T) {
 				Percent:           ptr.Int64(100),
 			},
 			ServiceName: "jobim",
-			Active:      true,
 		}},
 	}
 
diff --git a/pkg/reconciler/route/table_test.go b/pkg/reconciler/route/table_test.go
index daf07354f..5ba5edbdb 100644
--- a/pkg/reconciler/route/table_test.go
+++ b/pkg/reconciler/route/table_test.go
@@ -151,7 +151,6 @@ func TestReconcile(t *testing.T) {
 								RevisionName:      "ing-unknown-00001",
 							},
 							ServiceName: "mcd",
-							Active:      true,
 						}},
 					},
 				},
@@ -199,7 +198,6 @@ func TestReconcile(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 							},
 							ServiceName: "mcd",
-							Active:      true,
 						}},
 					},
 				}, WithLoadbalancerFailed("TestFailure", "failure"),
@@ -250,7 +248,6 @@ func TestReconcile(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 							},
 							ServiceName: "bk",
-							Active:      true,
 						}},
 					},
 				},
@@ -306,7 +303,6 @@ func TestReconcile(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "tb",
-							Active:      true,
 						}},
 					},
 					Visibility: map[string]netv1alpha1.IngressVisibility{
@@ -358,7 +354,6 @@ func TestReconcile(t *testing.T) {
 								Percent:           ptr.Int64(100),
 								LatestRevision:    ptr.Bool(true),
 							},
-							Active: true,
 						}},
 					},
 				},
@@ -459,7 +454,6 @@ func TestReconcile(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 							},
 							ServiceName: "astrid",
-							Active:      true,
 						}},
 					},
 				},
@@ -519,7 +513,6 @@ func TestReconcile(t *testing.T) {
 								RevisionName:      "config-00001",
 								Percent:           ptr.Int64(100),
 							},
-							Active: true,
 						}},
 					},
 				},
@@ -597,7 +590,6 @@ func TestReconcile(t *testing.T) {
 								RevisionName:      "config-00001",
 								Percent:           ptr.Int64(100),
 							},
-							Active:      true,
 							ServiceName: "my-service",
 						}},
 					},
@@ -618,7 +610,6 @@ func TestReconcile(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 								Percent:           ptr.Int64(100),
 							},
-							Active:      true,
 							ServiceName: "my-service",
 						}},
 					},
@@ -660,7 +651,6 @@ func TestReconcile(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "daisy",
-							Active:      true,
 						}},
 					},
 				},
@@ -699,7 +689,6 @@ func TestReconcile(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "magnolia",
-							Active:      true,
 						}},
 					},
 				},
@@ -721,7 +710,6 @@ func TestReconcile(t *testing.T) {
 								Percent:      ptr.Int64(100),
 							},
 							ServiceName: "belltown",
-							Active:      true,
 						}},
 					},
 				},
@@ -759,7 +747,6 @@ func TestReconcile(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 							},
 							ServiceName: "tb",
-							Active:      true,
 						}},
 					},
 				},
@@ -783,7 +770,6 @@ func TestReconcile(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 							},
 							ServiceName: "tb",
-							Active:      true,
 						}},
 					},
 					Visibility: map[string]netv1alpha1.IngressVisibility{
@@ -827,7 +813,6 @@ func TestReconcile(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 							},
 							ServiceName: "tb",
-							Active:      true,
 						}},
 					},
 					Visibility: map[string]netv1alpha1.IngressVisibility{
@@ -852,7 +837,6 @@ func TestReconcile(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 							},
 							ServiceName: "tb",
-							Active:      true,
 						}},
 					},
 				},
@@ -906,7 +890,6 @@ func TestReconcile(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "fremont",
-							Active:      true,
 						}},
 					},
 				},
@@ -927,7 +910,6 @@ func TestReconcile(t *testing.T) {
 								Percent:      ptr.Int64(100),
 							},
 							ServiceName: "wallingford",
-							Active:      true,
 						}},
 					},
 				},
@@ -975,7 +957,6 @@ func TestReconcile(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 								Percent:           ptr.Int64(100),
 							},
-							Active: true,
 						}},
 					},
 				},
@@ -1020,7 +1001,6 @@ func TestReconcile(t *testing.T) {
 								RevisionName:      "config-00001",
 								Percent:           ptr.Int64(100),
 							},
-							Active: true,
 						}},
 					},
 				},
@@ -1066,7 +1046,6 @@ func TestReconcile(t *testing.T) {
 								RevisionName:      "config-00001",
 								Percent:           ptr.Int64(100),
 							},
-							Active: true,
 						}},
 					},
 				},
@@ -1107,7 +1086,6 @@ func TestReconcile(t *testing.T) {
 								RevisionName:      "config-00001",
 								Percent:           ptr.Int64(100),
 							},
-							Active: true,
 						}},
 					},
 				},
@@ -1146,7 +1124,6 @@ func TestReconcile(t *testing.T) {
 								Percent:      ptr.Int64(100),
 							},
 							ServiceName: "magnusson-park",
-							Active:      true,
 						}},
 					},
 				},
@@ -1166,7 +1143,6 @@ func TestReconcile(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "windermere",
-							Active:      true,
 						}},
 					},
 				},
@@ -1239,7 +1215,6 @@ func TestReconcile(t *testing.T) {
 								RevisionName: "config-00001",
 								Percent:      ptr.Int64(100),
 							},
-							Active: true,
 						}},
 					},
 				},
@@ -1296,7 +1271,6 @@ func TestReconcile(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 							},
 							ServiceName: "blue-ridge",
-							Active:      true,
 						}, {
 							TrafficTarget: v1.TrafficTarget{
 								ConfigurationName: "green",
@@ -1305,7 +1279,6 @@ func TestReconcile(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 							},
 							ServiceName: "green-lake",
-							Active:      true,
 						}},
 					},
 				},
@@ -1394,7 +1367,6 @@ func TestReconcile(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 							},
 							ServiceName: "shades",
-							Active:      true,
 						}},
 						"gray": {{
 							TrafficTarget: v1.TrafficTarget{
@@ -1404,7 +1376,6 @@ func TestReconcile(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 							},
 							ServiceName: "shades",
-							Active:      true,
 						}},
 						"also-gray": {{
 							TrafficTarget: v1.TrafficTarget{
@@ -1412,7 +1383,6 @@ func TestReconcile(t *testing.T) {
 								Percent:      ptr.Int64(100),
 							},
 							ServiceName: "shades",
-							Active:      true,
 						}},
 					},
 				},
@@ -1545,7 +1515,6 @@ func TestReconcile(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 							},
 							ServiceName: "alki-beach",
-							Active:      true,
 						}},
 					},
 				},
@@ -1565,7 +1534,6 @@ func TestReconcile(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "rainier-beach",
-							Active:      true,
 						}},
 					},
 				},
@@ -1667,7 +1635,6 @@ func TestReconcile(t *testing.T) {
 								RevisionName:      "config-00001",
 								Percent:           ptr.Int64(100),
 							},
-							Active: true,
 						}},
 					},
 				},
@@ -1781,7 +1748,6 @@ func TestReconcileResponsiveGC(t *testing.T) {
 								LatestRevision:    ptr.Bool(true),
 								Percent:           ptr.Int64(100),
 							},
-							Active: true,
 						}},
 					},
 				},
@@ -1825,7 +1791,6 @@ func TestReconcileResponsiveGC(t *testing.T) {
 								RevisionName: "config-00001",
 								Percent:      ptr.Int64(100),
 							},
-							Active: true,
 						}},
 					},
 				},
@@ -1880,7 +1845,6 @@ func TestReconcileEnableAutoTLS(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "mcd",
-							Active:      true,
 						}},
 					},
 				},
@@ -1937,7 +1901,6 @@ func TestReconcileEnableAutoTLS(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "mcd",
-							Active:      true,
 						}},
 					},
 				},
@@ -1991,7 +1954,6 @@ func TestReconcileEnableAutoTLS(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "mcd",
-							Active:      true,
 						}},
 					},
 				},
@@ -2068,7 +2030,6 @@ func TestReconcileEnableAutoTLS(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "mcd",
-							Active:      true,
 						}},
 					},
 				},
@@ -2160,7 +2121,6 @@ func TestReconcileEnableAutoTLS(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "mcd",
-							Active:      true,
 						}},
 					},
 				},
@@ -2292,13 +2252,9 @@ func TestReconcileEnableAutoTLS(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "mcd",
-							Active:      true,
 						}},
 					},
-				},
-				nil,
-				nil,
-			),
+				}, nil, nil),
 			simpleK8sService(
 				Route("default", "becomes-ready", WithConfigTarget("config"), WithRouteUID("12-34")),
 				WithExternalName("becomes-ready.default.example.com"),
@@ -2350,7 +2306,6 @@ func TestReconcileEnableAutoTLS(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "tb",
-							Active:      true,
 						}},
 					},
 				},
@@ -2374,7 +2329,6 @@ func TestReconcileEnableAutoTLS(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "tb",
-							Active:      true,
 						}},
 					},
 					Visibility: map[string]netv1alpha1.IngressVisibility{
@@ -2481,13 +2435,9 @@ func TestReconcileEnableAutoTLSHTTPDisabled(t *testing.T) {
 								Percent:           ptr.Int64(100),
 							},
 							ServiceName: "mcd",
-							Active:      true,
 						}},
 					},
-				},
-				nil,
-				nil,
-			),
+				}, nil, nil),
 			simpleK8sService(
 				Route("default", "becomes-ready", WithConfigTarget("config"), WithRouteUID("12-34")),
 				WithExternalName("becomes-ready.default.example.com"),
diff --git a/pkg/reconciler/route/traffic/traffic_test.go b/pkg/reconciler/route/traffic/traffic_test.go
index 3472cf9ba..863b2e870 100644
--- a/pkg/reconciler/route/traffic/traffic_test.go
+++ b/pkg/reconciler/route/traffic/traffic_test.go
@@ -147,7 +147,6 @@ func TestBuildTrafficConfigurationVanilla(t *testing.T) {
 					Percent:           ptr.Int64(100),
 					LatestRevision:    ptr.Bool(true),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 		},
@@ -158,7 +157,6 @@ func TestBuildTrafficConfigurationVanilla(t *testing.T) {
 				Percent:           ptr.Int64(100),
 				LatestRevision:    ptr.Bool(true),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}},
 		Configurations: map[string]*v1.Configuration{
@@ -179,6 +177,7 @@ func TestBuildTrafficConfigurationVanilla(t *testing.T) {
 	wantR := &Rollout{
 		Configurations: []ConfigurationRollout{{
 			ConfigurationName: goodConfig.Name,
+			Percent:           100,
 			Revisions: []RevisionRollout{{
 				RevisionName: goodNewRev.Name,
 				Percent:      100,
@@ -209,7 +208,6 @@ func TestBuildTrafficConfigurationNoNameRevision(t *testing.T) {
 					Percent:           ptr.Int64(100),
 					LatestRevision:    ptr.Bool(false),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 		},
@@ -220,7 +218,6 @@ func TestBuildTrafficConfigurationNoNameRevision(t *testing.T) {
 				Percent:           ptr.Int64(100),
 				LatestRevision:    ptr.Bool(false),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}},
 		Configurations: map[string]*v1.Configuration{goodConfig.Name: goodConfig},
@@ -248,7 +245,6 @@ func TestBuildTrafficConfigurationVanillaScaledToZero(t *testing.T) {
 					Percent:           ptr.Int64(100),
 					LatestRevision:    ptr.Bool(true),
 				},
-				Active:   false,
 				Protocol: net.ProtocolHTTP1,
 			}},
 		},
@@ -259,7 +255,6 @@ func TestBuildTrafficConfigurationVanillaScaledToZero(t *testing.T) {
 				Percent:           ptr.Int64(100),
 				LatestRevision:    ptr.Bool(true),
 			},
-			Active:   false,
 			Protocol: net.ProtocolHTTP1,
 		}},
 		Configurations: map[string]*v1.Configuration{
@@ -282,6 +277,7 @@ func TestBuildTrafficConfigurationVanillaScaledToZero(t *testing.T) {
 	wantR := &Rollout{
 		Configurations: []ConfigurationRollout{{
 			ConfigurationName: inactiveConfig.Name,
+			Percent:           100,
 			Revisions: []RevisionRollout{{
 				RevisionName: inactiveRev.Name,
 				Percent:      100,
@@ -304,7 +300,6 @@ func TestBuildTrafficConfigurationTwoConfigs(t *testing.T) {
 					Percent:           ptr.Int64(90),
 					LatestRevision:    ptr.Bool(true),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}, {
 				TrafficTarget: v1.TrafficTarget{
@@ -313,7 +308,6 @@ func TestBuildTrafficConfigurationTwoConfigs(t *testing.T) {
 					Percent:           ptr.Int64(10),
 					LatestRevision:    ptr.Bool(true),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 		},
@@ -324,7 +318,6 @@ func TestBuildTrafficConfigurationTwoConfigs(t *testing.T) {
 				Percent:           ptr.Int64(90),
 				LatestRevision:    ptr.Bool(true),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}, {
 			TrafficTarget: v1.TrafficTarget{
@@ -333,7 +326,6 @@ func TestBuildTrafficConfigurationTwoConfigs(t *testing.T) {
 				Percent:           ptr.Int64(10),
 				LatestRevision:    ptr.Bool(true),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}},
 		Configurations: map[string]*v1.Configuration{
@@ -368,7 +360,6 @@ func TestBuildTrafficConfigurationTwoEntriesSameConfig(t *testing.T) {
 					Percent:           ptr.Int64(100),
 					LatestRevision:    ptr.Bool(true),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 		},
@@ -379,7 +370,6 @@ func TestBuildTrafficConfigurationTwoEntriesSameConfig(t *testing.T) {
 				Percent:           ptr.Int64(100),
 				LatestRevision:    ptr.Bool(true),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}},
 		Configurations: map[string]*v1.Configuration{
@@ -432,6 +422,7 @@ func TestBuildTrafficConfigurationTwoEntriesSameConfig(t *testing.T) {
 	wantR := &Rollout{
 		Configurations: []ConfigurationRollout{{
 			ConfigurationName: niceConfig.Name,
+			Percent:           100,
 			Revisions: []RevisionRollout{{
 				RevisionName: niceNewRev.Name,
 				Percent:      100,
@@ -454,7 +445,6 @@ func TestBuildTrafficConfigThreeConfigs(t *testing.T) {
 					Percent:           ptr.Int64(30),
 					LatestRevision:    ptr.Bool(true),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}, {
 				TrafficTarget: v1.TrafficTarget{
@@ -464,7 +454,6 @@ func TestBuildTrafficConfigThreeConfigs(t *testing.T) {
 					LatestRevision:    ptr.Bool(true),
 					Tag:               "robert",
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}, {
 				TrafficTarget: v1.TrafficTarget{
@@ -474,7 +463,6 @@ func TestBuildTrafficConfigThreeConfigs(t *testing.T) {
 					LatestRevision:    ptr.Bool(true),
 					Tag:               "jackson",
 				},
-				Active:   false,
 				Protocol: net.ProtocolHTTP1,
 			}},
 			"robert": {{
@@ -485,7 +473,6 @@ func TestBuildTrafficConfigThreeConfigs(t *testing.T) {
 					Tag:               "robert",
 					LatestRevision:    ptr.Bool(true),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 			"jackson": {{
@@ -496,7 +483,6 @@ func TestBuildTrafficConfigThreeConfigs(t *testing.T) {
 					Tag:               "jackson",
 					LatestRevision:    ptr.Bool(true),
 				},
-				Active:   false,
 				Protocol: net.ProtocolHTTP1,
 			}},
 		},
@@ -507,7 +493,6 @@ func TestBuildTrafficConfigThreeConfigs(t *testing.T) {
 				Percent:           ptr.Int64(30),
 				LatestRevision:    ptr.Bool(true),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}, {
 			TrafficTarget: v1.TrafficTarget{
@@ -517,7 +502,6 @@ func TestBuildTrafficConfigThreeConfigs(t *testing.T) {
 				LatestRevision:    ptr.Bool(true),
 				Tag:               "robert",
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}, {
 			TrafficTarget: v1.TrafficTarget{
@@ -527,7 +511,6 @@ func TestBuildTrafficConfigThreeConfigs(t *testing.T) {
 				LatestRevision:    ptr.Bool(true),
 				Tag:               "jackson",
 			},
-			Active:   false,
 			Protocol: net.ProtocolHTTP1,
 		}},
 		Configurations: map[string]*v1.Configuration{
@@ -566,18 +549,21 @@ func TestBuildTrafficConfigThreeConfigs(t *testing.T) {
 		// Default tag configs are sorted as well.
 		Configurations: []ConfigurationRollout{{
 			ConfigurationName: goodConfig.Name,
+			Percent:           35,
 			Revisions: []RevisionRollout{{
 				RevisionName: goodNewRev.Name,
 				Percent:      35,
 			}},
 		}, {
 			ConfigurationName: inactiveConfig.Name,
+			Percent:           35,
 			Revisions: []RevisionRollout{{
 				RevisionName: inactiveRev.Name,
 				Percent:      35,
 			}},
 		}, {
 			ConfigurationName: niceConfig.Name,
+			Percent:           30,
 			Revisions: []RevisionRollout{{
 				RevisionName: niceNewRev.Name,
 				Percent:      30,
@@ -586,6 +572,7 @@ func TestBuildTrafficConfigThreeConfigs(t *testing.T) {
 			// Note sorting flipped these two.
 			ConfigurationName: inactiveConfig.Name,
 			Tag:               "jackson",
+			Percent:           100,
 			Revisions: []RevisionRollout{{
 				RevisionName: inactiveRev.Name,
 				Percent:      100,
@@ -593,6 +580,7 @@ func TestBuildTrafficConfigThreeConfigs(t *testing.T) {
 		}, {
 			ConfigurationName: goodConfig.Name,
 			Tag:               "robert",
+			Percent:           100,
 			Revisions: []RevisionRollout{{
 				RevisionName: goodNewRev.Name,
 				Percent:      100,
@@ -613,7 +601,6 @@ func TestBuildTrafficConfigurationTwoEntriesSameConfigDifferentTags(t *testing.T
 					Percent:           ptr.Int64(100),
 					LatestRevision:    ptr.Bool(true),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 			"robert": {{
@@ -624,7 +611,6 @@ func TestBuildTrafficConfigurationTwoEntriesSameConfigDifferentTags(t *testing.T
 					Tag:               "robert",
 					LatestRevision:    ptr.Bool(true),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 		},
@@ -635,7 +621,6 @@ func TestBuildTrafficConfigurationTwoEntriesSameConfigDifferentTags(t *testing.T
 				Percent:           ptr.Int64(90),
 				LatestRevision:    ptr.Bool(true),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}, {
 			TrafficTarget: v1.TrafficTarget{
@@ -645,7 +630,6 @@ func TestBuildTrafficConfigurationTwoEntriesSameConfigDifferentTags(t *testing.T
 				LatestRevision:    ptr.Bool(true),
 				Tag:               "robert",
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}},
 		Configurations: map[string]*v1.Configuration{
@@ -675,6 +659,7 @@ func TestBuildTrafficConfigurationTwoEntriesSameConfigDifferentTags(t *testing.T
 	wantR := &Rollout{
 		Configurations: []ConfigurationRollout{{
 			ConfigurationName: niceConfig.Name,
+			Percent:           100,
 			Revisions: []RevisionRollout{{
 				RevisionName: niceNewRev.Name,
 				Percent:      100,
@@ -682,6 +667,7 @@ func TestBuildTrafficConfigurationTwoEntriesSameConfigDifferentTags(t *testing.T
 		}, {
 			ConfigurationName: niceConfig.Name,
 			Tag:               "robert",
+			Percent:           100,
 			Revisions: []RevisionRollout{{
 				RevisionName: niceNewRev.Name,
 				Percent:      100,
@@ -704,7 +690,6 @@ func TestBuildTrafficConfigurationCanary(t *testing.T) {
 					Percent:           ptr.Int64(90),
 					LatestRevision:    ptr.Bool(false),
 				},
-				Active:   true,
 				Protocol: net.ProtocolHTTP1,
 			}, {
 				TrafficTarget: v1.TrafficTarget{
@@ -713,7 +698,6 @@ func TestBuildTrafficConfigurationCanary(t *testing.T) {
 					Percent:           ptr.Int64(10),
 					LatestRevision:    ptr.Bool(true),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 		},
@@ -724,7 +708,6 @@ func TestBuildTrafficConfigurationCanary(t *testing.T) {
 				Percent:           ptr.Int64(90),
 				LatestRevision:    ptr.Bool(false),
 			},
-			Active:   true,
 			Protocol: net.ProtocolHTTP1,
 		}, {
 			TrafficTarget: v1.TrafficTarget{
@@ -733,7 +716,6 @@ func TestBuildTrafficConfigurationCanary(t *testing.T) {
 				Percent:           ptr.Int64(10),
 				LatestRevision:    ptr.Bool(true),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}},
 		Configurations: map[string]*v1.Configuration{
@@ -769,7 +751,6 @@ func TestBuildTrafficConfigurationConsolidated(t *testing.T) {
 					Percent:           ptr.Int64(49),
 					LatestRevision:    ptr.Bool(false),
 				},
-				Active:   true,
 				Protocol: net.ProtocolHTTP1,
 			}, {
 				TrafficTarget: v1.TrafficTarget{
@@ -779,7 +760,6 @@ func TestBuildTrafficConfigurationConsolidated(t *testing.T) {
 					Percent:           ptr.Int64(51),
 					LatestRevision:    ptr.Bool(false),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 			"one": {{
@@ -790,7 +770,6 @@ func TestBuildTrafficConfigurationConsolidated(t *testing.T) {
 					Percent:           ptr.Int64(100),
 					LatestRevision:    ptr.Bool(false),
 				},
-				Active:   true,
 				Protocol: net.ProtocolHTTP1,
 			}},
 			"two": {{
@@ -801,7 +780,6 @@ func TestBuildTrafficConfigurationConsolidated(t *testing.T) {
 					Percent:           ptr.Int64(100),
 					LatestRevision:    ptr.Bool(false),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 			"also-two": {{
@@ -812,7 +790,6 @@ func TestBuildTrafficConfigurationConsolidated(t *testing.T) {
 					Percent:           ptr.Int64(100),
 					LatestRevision:    ptr.Bool(true),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 		},
@@ -824,7 +801,6 @@ func TestBuildTrafficConfigurationConsolidated(t *testing.T) {
 				Percent:           ptr.Int64(49),
 				LatestRevision:    ptr.Bool(false),
 			},
-			Active:   true,
 			Protocol: net.ProtocolHTTP1,
 		}, {
 			TrafficTarget: v1.TrafficTarget{
@@ -834,7 +810,6 @@ func TestBuildTrafficConfigurationConsolidated(t *testing.T) {
 				Percent:           ptr.Int64(50),
 				LatestRevision:    ptr.Bool(false),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}, {
 			TrafficTarget: v1.TrafficTarget{
@@ -844,7 +819,6 @@ func TestBuildTrafficConfigurationConsolidated(t *testing.T) {
 				Percent:           ptr.Int64(1),
 				LatestRevision:    ptr.Bool(true),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}},
 		Configurations: map[string]*v1.Configuration{
@@ -885,7 +859,6 @@ func TestBuildTrafficConfigurationTwoFixedRevisions(t *testing.T) {
 					Percent:           ptr.Int64(90),
 					LatestRevision:    ptr.Bool(false),
 				},
-				Active:   true,
 				Protocol: net.ProtocolHTTP1,
 			}, {
 				TrafficTarget: v1.TrafficTarget{
@@ -894,7 +867,6 @@ func TestBuildTrafficConfigurationTwoFixedRevisions(t *testing.T) {
 					Percent:           ptr.Int64(10),
 					LatestRevision:    ptr.Bool(false),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 		},
@@ -905,7 +877,6 @@ func TestBuildTrafficConfigurationTwoFixedRevisions(t *testing.T) {
 				Percent:           ptr.Int64(90),
 				LatestRevision:    ptr.Bool(false),
 			},
-			Active:   true,
 			Protocol: net.ProtocolHTTP1,
 		}, {
 			TrafficTarget: v1.TrafficTarget{
@@ -914,7 +885,6 @@ func TestBuildTrafficConfigurationTwoFixedRevisions(t *testing.T) {
 				Percent:           ptr.Int64(10),
 				LatestRevision:    ptr.Bool(false),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}},
 		Configurations: map[string]*v1.Configuration{
@@ -957,7 +927,6 @@ func TestBuildTrafficConfigurationTwoFixedRevisionsFromTwoConfigurations(t *test
 					Percent:           ptr.Int64(40),
 					LatestRevision:    ptr.Bool(false),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}, {
 				TrafficTarget: v1.TrafficTarget{
@@ -966,7 +935,6 @@ func TestBuildTrafficConfigurationTwoFixedRevisionsFromTwoConfigurations(t *test
 					Percent:           ptr.Int64(60),
 					LatestRevision:    ptr.Bool(false),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 		},
@@ -977,7 +945,6 @@ func TestBuildTrafficConfigurationTwoFixedRevisionsFromTwoConfigurations(t *test
 				Percent:           ptr.Int64(40),
 				LatestRevision:    ptr.Bool(false),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}, {
 			TrafficTarget: v1.TrafficTarget{
@@ -986,7 +953,6 @@ func TestBuildTrafficConfigurationTwoFixedRevisionsFromTwoConfigurations(t *test
 				Percent:           ptr.Int64(60),
 				LatestRevision:    ptr.Bool(false),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}},
 		Configurations: map[string]*v1.Configuration{
@@ -1022,7 +988,6 @@ func TestBuildTrafficConfigurationPreliminary(t *testing.T) {
 					Percent:           ptr.Int64(100),
 					LatestRevision:    ptr.Bool(false),
 				},
-				Active:   true,
 				Protocol: net.ProtocolHTTP1,
 			}, {
 				TrafficTarget: v1.TrafficTarget{
@@ -1032,7 +997,6 @@ func TestBuildTrafficConfigurationPreliminary(t *testing.T) {
 					LatestRevision:    ptr.Bool(false),
 					Percent:           ptr.Int64(0),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}, {
 				TrafficTarget: v1.TrafficTarget{
@@ -1042,7 +1006,6 @@ func TestBuildTrafficConfigurationPreliminary(t *testing.T) {
 					Percent:           ptr.Int64(0),
 					LatestRevision:    ptr.Bool(true),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 			"beta": {{
@@ -1053,7 +1016,6 @@ func TestBuildTrafficConfigurationPreliminary(t *testing.T) {
 					Percent:           ptr.Int64(100),
 					LatestRevision:    ptr.Bool(false),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 			"alpha": {{
@@ -1064,7 +1026,6 @@ func TestBuildTrafficConfigurationPreliminary(t *testing.T) {
 					Percent:           ptr.Int64(100),
 					LatestRevision:    ptr.Bool(true),
 				},
-				Active:   true,
 				Protocol: net.ProtocolH2C,
 			}},
 		},
@@ -1075,7 +1036,6 @@ func TestBuildTrafficConfigurationPreliminary(t *testing.T) {
 				Percent:           ptr.Int64(100),
 				LatestRevision:    ptr.Bool(false),
 			},
-			Active:   true,
 			Protocol: net.ProtocolHTTP1,
 		}, {
 			TrafficTarget: v1.TrafficTarget{
@@ -1085,7 +1045,6 @@ func TestBuildTrafficConfigurationPreliminary(t *testing.T) {
 				LatestRevision:    ptr.Bool(false),
 				Percent:           ptr.Int64(0),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}, {
 			TrafficTarget: v1.TrafficTarget{
@@ -1095,7 +1054,6 @@ func TestBuildTrafficConfigurationPreliminary(t *testing.T) {
 				LatestRevision:    ptr.Bool(true),
 				Percent:           ptr.Int64(0),
 			},
-			Active:   true,
 			Protocol: net.ProtocolH2C,
 		}},
 		Configurations: map[string]*v1.Configuration{