Repository: jenkins-x/lighthouse
Pull request #961 (2020-08-21 18:53:29)

chore: remove deck and sinker config (deadcode)
This PR removes deck and sinker config (deadcode).

abayer: Yeah, that's there to try to preserve the existing templates for report comments, but I'm fine with changing where that's recorded.
abayer: /lgtm

Patch:
diff --git a/charts/lighthouse/templates/config-cm.yaml b/charts/lighthouse/templates/config-cm.yaml
index 3ec67b6a..749f7a1e 100644
--- a/charts/lighthouse/templates/config-cm.yaml
+++ b/charts/lighthouse/templates/config-cm.yaml
@@ -19,8 +19,6 @@ data:
     branch-protection:
       orgs: {}
       protect-tested-repos: true
-    deck:
-      spyglass: {}
     gerrit: {}
     github:
       LinkURL: null
@@ -42,7 +40,6 @@ data:
 {{- end }}
     push_gateway:
       serve_metrics: false
-    sinker: {}
     tide:
       context_options:
         from-branch-protection: true
diff --git a/config.yaml b/config.yaml
index e9174634..fef13faf 100644
--- a/config.yaml
+++ b/config.yaml
@@ -21,8 +21,6 @@ branch-protection:
             contexts:
               - pr-build
   protect-tested-repos: true
-deck:
-  spyglass: {}
 gerrit: {}
 owners_dir_blacklist:
   default: null
@@ -85,7 +83,6 @@ presubmits:
       trigger: (?m)^/test( all| this),?(\s+|$)
 prowjob_namespace: jx
 push_gateway: {}
-sinker: {}
 tide:
   context_options:
     from-branch-protection: true
diff --git a/docs/config/Lighthouse config.md b/docs/config/Lighthouse config.md
index 579a92c4..8cc3b0d2 100644
--- a/docs/config/Lighthouse config.md
+++ b/docs/config/Lighthouse config.md
@@ -3,14 +3,11 @@
 - [Branch](#Branch)
 - [BranchProtection](#BranchProtection)
 - [Brancher](#Brancher)
-- [Branding](#Branding)
 - [ChangedFilesProvider](#ChangedFilesProvider)
 - [Config](#Config)
 - [ContextPolicy](#ContextPolicy)
 - [Controller](#Controller)
 - [Cookie](#Cookie)
-- [Deck](#Deck)
-- [ExternalAgentLog](#ExternalAgentLog)
 - [Gerrit](#Gerrit)
 - [GitHubOptions](#GitHubOptions)
 - [GithubOAuthConfig](#GithubOAuthConfig)
@@ -46,8 +43,6 @@
 - [Reporter](#Reporter)
 - [Restrictions](#Restrictions)
 - [ReviewPolicy](#ReviewPolicy)
-- [Sinker](#Sinker)
-- [Spyglass](#Spyglass)
 - [UtilityConfig](#UtilityConfig)
 
 
@@ -82,17 +77,6 @@ Brancher is for shared code between jobs that only run against certain<br />bran
 | re |  | *regexp.Regexp | No | We'll set these when we load it. |
 | reSkip |  | *regexp.Regexp | No |  |
 
-## Branding
-
-Branding holds branding configuration for deck.
-
-| Variable Name | Stanza | Type | Required | Description |
-|---|---|---|---|---|
-| Logo | `logo` | string | No | Logo is the location of the logo that will be loaded in deck. |
-| Favicon | `favicon` | string | No | Favicon is the location of the favicon that will be loaded in deck. |
-| BackgroundColor | `background_color` | string | No | BackgroundColor is the color of the background. |
-| HeaderColor | `header_color` | string | No | HeaderColor is the color of the header. |
-
 ## ChangedFilesProvider
 
 ChangedFilesProvider returns a slice of modified files.
@@ -139,31 +123,6 @@ Cookie holds the secret returned from github that authenticates the user who aut
 |---|---|---|---|---|
 | Secret | `secret` | string | No |  |
 
-## Deck
-
-Deck holds config for deck.
-
-| Variable Name | Stanza | Type | Required | Description |
-|---|---|---|---|---|
-| Spyglass | `spyglass` | [Spyglass](#Spyglass) | No | Spyglass specifies which viewers will be used for which artifacts when viewing a job in Deck |
-| KeeperUpdatePeriodString | `tide_update_period` | string | No | KeeperUpdatePeriodString compiles into KeeperUpdatePeriod at load time. |
-| KeeperUpdatePeriod | `-` | time.Duration | Yes | KeeperUpdatePeriod specifies how often Deck will fetch status from Keeper. Defaults to 10s. |
-| HiddenRepos | `hidden_repos` | []string | No | HiddenRepos is a list of orgs and/or repos that should not be displayed by Deck. |
-| ExternalAgentLogs | `external_agent_logs` | [][ExternalAgentLog](#ExternalAgentLog) | No | ExternalAgentLogs ensures external agents can expose<br />their logs in prow. |
-| Branding | `branding` | *[Branding](#Branding) | No | Branding of the frontend |
-
-## ExternalAgentLog
-
-ExternalAgentLog ensures an external agent like Jenkins can expose<br />its logs in prow.
-
-| Variable Name | Stanza | Type | Required | Description |
-|---|---|---|---|---|
-| Agent | `agent` | string | No | Agent is an external prow agent that supports exposing<br />logs via deck. |
-| SelectorString | `selector` | string | No | SelectorString compiles into Selector at load time. |
-| Selector | `-` | labels.Selector | Yes | Selector can be used in prow deployments where the workload has<br />been sharded between controllers of the same agent. For more info<br />see https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors |
-| URLTemplateString | `url_template` | string | No | URLTemplateString compiles into URLTemplate at load time. |
-| URLTemplate | `-` | *template.Template | No | URLTemplate is compiled at load time from URLTemplateString. It<br />will be passed a builder.PipelineOptions and the generated URL should provide<br />logs for the PipelineOptions. |
-
 ## Gerrit
 
 Gerrit is config for the gerrit controller.
@@ -456,8 +415,6 @@ ProwConfig is config for all prow controllers
 |---|---|---|---|---|
 | Keeper | `tide` | [Keeper](#Keeper) | No |  |
 | Plank | `plank` | [Plank](#Plank) | No |  |
-| Sinker | `sinker` | [Sinker](#Sinker) | No |  |
-| Deck | `deck` | [Deck](#Deck) | No |  |
 | BranchProtection | `branch-protection` | [BranchProtection](#BranchProtection) | No |  |
 | Orgs | `orgs` | map[string]org.Config | No |  |
 | Gerrit | `gerrit` | [Gerrit](#Gerrit) | No |  |
@@ -552,29 +509,6 @@ ReviewPolicy specifies github approval/review criteria.<br />Any nil values inhe
 | RequireOwners | `require_code_owner_reviews` | *bool | No | RequireOwners overrides whether CODEOWNERS must approve PRs if set |
 | Approvals | `required_approving_review_count` | *int | No | Approvals overrides the number of approvals required if set (set to 0 to disable) |
 
-## Sinker
-
-Sinker is config for the sinker controller.
-
-| Variable Name | Stanza | Type | Required | Description |
-|---|---|---|---|---|
-| ResyncPeriodString | `resync_period` | string | No | ResyncPeriodString compiles into ResyncPeriod at load time. |
-| ResyncPeriod | `-` | time.Duration | Yes | ResyncPeriod is how often the controller will perform a garbage<br />collection. Defaults to one hour. |
-| MaxLighthouseJobAgeString | `max_lighthouseJob_age` | string | No | MaxLighthouseJobAgeString compiles into MaxLighthouseJobAge at load time. |
-| MaxLighthouseJobAge | `-` | time.Duration | Yes | MaxLighthouseJobAge is how old a LighthouseJob can be before it is garbage-collected.<br />Defaults to one week. |
-| MaxPodAgeString | `max_pod_age` | string | No | MaxPodAgeString compiles into MaxPodAge at load time. |
-| MaxPodAge | `-` | time.Duration | Yes | MaxPodAge is how old a Pod can be before it is garbage-collected.<br />Defaults to one day. |
-
-## Spyglass
-
-Spyglass holds config for Spyglass
-
-| Variable Name | Stanza | Type | Required | Description |
-|---|---|---|---|---|
-| Viewers | `viewers` | map[string][]string | No | Viewers is a map of Regexp strings to viewer names that defines which sets<br />of artifacts need to be consumed by which viewers. The keys are compiled<br />and stored in RegexCache at load time. |
-| RegexCache | `-` | map[string]*regexp.Regexp | No | RegexCache is a map of viewer regexp strings to their compiled equivalents. |
-| SizeLimit | `size_limit` | int64 | No | SizeLimit is the max size artifact in bytes that Spyglass will attempt to<br />read in entirety. This will only affect viewers attempting to use<br />artifact.ReadAll(). To exclude outlier artifacts, set this limit to<br />expected file size + variance. To include all artifacts with high<br />probability, use 2*maximum observed artifact size. |
-
 ## UtilityConfig
 
 UtilityConfig holds decoration metadata, such as how to clone and additional containers/etc
diff --git a/pkg/config/config.go b/pkg/config/config.go
index 43574457..6e801a53 100644
--- a/pkg/config/config.go
+++ b/pkg/config/config.go
@@ -73,8 +73,6 @@ type JobConfig struct {
 type ProwConfig struct {
 	Keeper           Keeper                `json:"tide,omitempty"`
 	Plank            Plank                 `json:"plank,omitempty"`
-	Sinker           Sinker                `json:"sinker,omitempty"`
-	Deck             Deck                  `json:"deck,omitempty"`
 	BranchProtection BranchProtection      `json:"branch-protection,omitempty"`
 	Orgs             map[string]org.Config `json:"orgs,omitempty"`
 	Gerrit           Gerrit                `json:"gerrit,omitempty"`
@@ -232,90 +230,6 @@ type JenkinsOperator struct {
 	LabelSelector labels.Selector `json:"-"`
 }
 
-// Sinker is config for the sinker controller.
-type Sinker struct {
-	// ResyncPeriodString compiles into ResyncPeriod at load time.
-	ResyncPeriodString string `json:"resync_period,omitempty"`
-	// ResyncPeriod is how often the controller will perform a garbage
-	// collection. Defaults to one hour.
-	ResyncPeriod time.Duration `json:"-"`
-	// MaxLighthouseJobAgeString compiles into MaxLighthouseJobAge at load time.
-	MaxLighthouseJobAgeString string `json:"max_lighthouseJob_age,omitempty"`
-	// MaxLighthouseJobAge is how old a LighthouseJob can be before it is garbage-collected.
-	// Defaults to one week.
-	MaxLighthouseJobAge time.Duration `json:"-"`
-	// MaxPodAgeString compiles into MaxPodAge at load time.
-	MaxPodAgeString string `json:"max_pod_age,omitempty"`
-	// MaxPodAge is how old a Pod can be before it is garbage-collected.
-	// Defaults to one day.
-	MaxPodAge time.Duration `json:"-"`
-}
-
-// Spyglass holds config for Spyglass
-type Spyglass struct {
-	// Viewers is a map of Regexp strings to viewer names that defines which sets
-	// of artifacts need to be consumed by which viewers. The keys are compiled
-	// and stored in RegexCache at load time.
-	Viewers map[string][]string `json:"viewers,omitempty"`
-	// RegexCache is a map of viewer regexp strings to their compiled equivalents.
-	RegexCache map[string]*regexp.Regexp `json:"-"`
-	// SizeLimit is the max size artifact in bytes that Spyglass will attempt to
-	// read in entirety. This will only affect viewers attempting to use
-	// artifact.ReadAll(). To exclude outlier artifacts, set this limit to
-	// expected file size + variance. To include all artifacts with high
-	// probability, use 2*maximum observed artifact size.
-	SizeLimit int64 `json:"size_limit,omitempty"`
-}
-
-// Deck holds config for deck.
-type Deck struct {
-	// Spyglass specifies which viewers will be used for which artifacts when viewing a job in Deck
-	Spyglass Spyglass `json:"spyglass,omitempty"`
-	// KeeperUpdatePeriodString compiles into KeeperUpdatePeriod at load time.
-	KeeperUpdatePeriodString string `json:"tide_update_period,omitempty"`
-	// KeeperUpdatePeriod specifies how often Deck will fetch status from Keeper. Defaults to 10s.
-	KeeperUpdatePeriod time.Duration `json:"-"`
-	// HiddenRepos is a list of orgs and/or repos that should not be displayed by Deck.
-	HiddenRepos []string `json:"hidden_repos,omitempty"`
-	// ExternalAgentLogs ensures external agents can expose
-	// their logs in prow.
-	ExternalAgentLogs []ExternalAgentLog `json:"external_agent_logs,omitempty"`
-	// Branding of the frontend
-	Branding *Branding `json:"branding,omitempty"`
-}
-
-// ExternalAgentLog ensures an external agent like Jenkins can expose
-// its logs in prow.
-type ExternalAgentLog struct {
-	// Agent is an external prow agent that supports exposing
-	// logs via deck.
-	Agent string `json:"agent,omitempty"`
-	// SelectorString compiles into Selector at load time.
-	SelectorString string `json:"selector,omitempty"`
-	// Selector can be used in prow deployments where the workload has
-	// been sharded between controllers of the same agent. For more info
-	// see https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
-	Selector labels.Selector `json:"-"`
-	// URLTemplateString compiles into URLTemplate at load time.
-	URLTemplateString string `json:"url_template,omitempty"`
-	// URLTemplate is compiled at load time from URLTemplateString. It
-	// will be passed a builder.PipelineOptions and the generated URL should provide
-	// logs for the PipelineOptions.
-	URLTemplate *template.Template `json:"-"`
-}
-
-// Branding holds branding configuration for deck.
-type Branding struct {
-	// Logo is the location of the logo that will be loaded in deck.
-	Logo string `json:"logo,omitempty"`
-	// Favicon is the location of the favicon that will be loaded in deck.
-	Favicon string `json:"favicon,omitempty"`
-	// BackgroundColor is the color of the background.
-	BackgroundColor string `json:"background_color,omitempty"`
-	// HeaderColor is the color of the header.
-	HeaderColor string `json:"header_color,omitempty"`
-}
-
 // PubsubSubscriptions maps GCP projects to a list of Topics.
 type PubsubSubscriptions map[string][]string
 
@@ -864,62 +778,6 @@ func parseProwConfig(c *Config) error {
 		}
 	}
 
-	for i, agentToTmpl := range c.Deck.ExternalAgentLogs {
-		urlTemplate, err := template.New(agentToTmpl.Agent).Parse(agentToTmpl.URLTemplateString)
-		if err != nil {
-			return fmt.Errorf("parsing template for agent %q: %v", agentToTmpl.Agent, err)
-		}
-		c.Deck.ExternalAgentLogs[i].URLTemplate = urlTemplate
-		// we need to validate selectors used by deck since these are not
-		// sent to the api server.
-		s, err := labels.Parse(c.Deck.ExternalAgentLogs[i].SelectorString)
-		if err != nil {
-			return fmt.Errorf("error parsing selector %q: %v", c.Deck.ExternalAgentLogs[i].SelectorString, err)
-		}
-		c.Deck.ExternalAgentLogs[i].Selector = s
-	}
-
-	if c.Deck.KeeperUpdatePeriodString == "" {
-		c.Deck.KeeperUpdatePeriod = time.Second * 10
-	} else {
-		period, err := time.ParseDuration(c.Deck.KeeperUpdatePeriodString)
-		if err != nil {
-			return fmt.Errorf("cannot parse duration for deck.tide_update_period: %v", err)
-		}
-		c.Deck.KeeperUpdatePeriod = period
-	}
-
-	if c.Deck.Spyglass.SizeLimit == 0 {
-		c.Deck.Spyglass.SizeLimit = 100e6
-	} else if c.Deck.Spyglass.SizeLimit <= 0 {
-		return fmt.Errorf("invalid value for deck.spyglass.size_limit, must be >=0")
-	}
-
-	c.Deck.Spyglass.RegexCache = make(map[string]*regexp.Regexp)
-	for k := range c.Deck.Spyglass.Viewers {
-		r, err := regexp.Compile(k)
-		if err != nil {
-			return fmt.Errorf("cannot compile regexp %s, err: %v", k, err)
-		}
-		c.Deck.Spyglass.RegexCache[k] = r
-	}
-
-	// Map old viewer names to the new ones for backwards compatibility.
-	// TODO(Katharine, #10274): remove this, eventually.
-	oldViewers := map[string]string{
-		"build-log-viewer": "buildlog",
-		"metadata-viewer":  "metadata",
-		"junit-viewer":     "junit",
-	}
-
-	for re, viewers := range c.Deck.Spyglass.Viewers {
-		for i, v := range viewers {
-			if rename, ok := oldViewers[v]; ok {
-				c.Deck.Spyglass.Viewers[re][i] = rename
-			}
-		}
-	}
-
 	if c.PushGateway.IntervalString == "" {
 		c.PushGateway.Interval = time.Minute
 	} else {
@@ -930,36 +788,6 @@ func parseProwConfig(c *Config) error {
 		c.PushGateway.Interval = interval
 	}
 
-	if c.Sinker.ResyncPeriodString == "" {
-		c.Sinker.ResyncPeriod = time.Hour
-	} else {
-		resyncPeriod, err := time.ParseDuration(c.Sinker.ResyncPeriodString)
-		if err != nil {
-			return fmt.Errorf("cannot parse duration for sinker.resync_period: %v", err)
-		}
-		c.Sinker.ResyncPeriod = resyncPeriod
-	}
-
-	if c.Sinker.MaxLighthouseJobAgeString == "" {
-		c.Sinker.MaxLighthouseJobAge = 7 * 24 * time.Hour
-	} else {
-		maxLighthouseJobAge, err := time.ParseDuration(c.Sinker.MaxLighthouseJobAgeString)
-		if err != nil {
-			return fmt.Errorf("cannot parse duration for max_lighthouseJob_age: %v", err)
-		}
-		c.Sinker.MaxLighthouseJobAge = maxLighthouseJobAge
-	}
-
-	if c.Sinker.MaxPodAgeString == "" {
-		c.Sinker.MaxPodAge = 24 * time.Hour
-	} else {
-		maxPodAge, err := time.ParseDuration(c.Sinker.MaxPodAgeString)
-		if err != nil {
-			return fmt.Errorf("cannot parse duration for max_pod_age: %v", err)
-		}
-		c.Sinker.MaxPodAge = maxPodAge
-	}
-
 	if c.Keeper.SyncPeriodString == "" {
 		c.Keeper.SyncPeriod = time.Minute
 	} else {


Test patch:
diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go
index 1a9c412e..cfc7197a 100644
--- a/pkg/config/config_test.go
+++ b/pkg/config/config_test.go
@@ -113,157 +113,6 @@ func TestDefaultJobBase(t *testing.T) {
 	}
 }
 
-func TestSpyglassConfig(t *testing.T) {
-	testCases := []struct {
-		name                 string
-		spyglassConfig       string
-		expectedViewers      map[string][]string
-		expectedRegexMatches map[string][]string
-		expectedSizeLimit    int64
-		expectError          bool
-	}{
-		{
-			name: "Default: build log, metadata, junit",
-			spyglassConfig: `
-deck:
-  spyglass:
-    size_limit: 500e+6
-    viewers:
-      "started.json|finished.json":
-      - "metadata"
-      "build-log.txt":
-      - "buildlog"
-      "artifacts/junit.*\\.xml":
-      - "junit"
-`,
-			expectedViewers: map[string][]string{
-				"started.json|finished.json": {"metadata"},
-				"build-log.txt":              {"buildlog"},
-				"artifacts/junit.*\\.xml":    {"junit"},
-			},
-			expectedRegexMatches: map[string][]string{
-				"started.json|finished.json": {"started.json", "finished.json"},
-				"build-log.txt":              {"build-log.txt"},
-				"artifacts/junit.*\\.xml":    {"artifacts/junit01.xml", "artifacts/junit_runner.xml"},
-			},
-			expectedSizeLimit: 500e6,
-			expectError:       false,
-		},
-		{
-			name: "Backwards compatibility",
-			spyglassConfig: `
-deck:
-  spyglass:
-    size_limit: 500e+6
-    viewers:
-      "started.json|finished.json":
-      - "metadata-viewer"
-      "build-log.txt":
-      - "build-log-viewer"
-      "artifacts/junit.*\\.xml":
-      - "junit-viewer"
-`,
-			expectedViewers: map[string][]string{
-				"started.json|finished.json": {"metadata"},
-				"build-log.txt":              {"buildlog"},
-				"artifacts/junit.*\\.xml":    {"junit"},
-			},
-			expectedSizeLimit: 500e6,
-			expectError:       false,
-		},
-		{
-			name: "Invalid spyglass size limit",
-			spyglassConfig: `
-deck:
-  spyglass:
-    size_limit: -4
-    viewers:
-      "started.json|finished.json":
-      - "metadata-viewer"
-      "build-log.txt":
-      - "build-log-viewer"
-      "artifacts/junit.*\\.xml":
-      - "junit-viewer"
-`,
-			expectError: true,
-		},
-		{
-			name: "Invalid Spyglass regexp",
-			spyglassConfig: `
-deck:
-  spyglass:
-    size_limit: 5
-    viewers:
-      "started.json\|]finished.json":
-      - "metadata-viewer"
-`,
-			expectError: true,
-		},
-	}
-	for _, tc := range testCases {
-		// save the config
-		spyglassConfigDir, err := ioutil.TempDir("", "spyglassConfig")
-		if err != nil {
-			t.Fatalf("fail to make tempdir: %v", err)
-		}
-		defer os.RemoveAll(spyglassConfigDir)
-
-		spyglassConfig := filepath.Join(spyglassConfigDir, "config.yaml")
-		if err := ioutil.WriteFile(spyglassConfig, []byte(tc.spyglassConfig), 0666); err != nil {
-			t.Fatalf("fail to write spyglass config: %v", err)
-		}
-
-		cfg, err := Load(spyglassConfig, "")
-		if (err != nil) != tc.expectError {
-			t.Fatalf("tc %s: expected error: %v, got: %v, error: %v", tc.name, tc.expectError, (err != nil), err)
-		}
-
-		if err != nil {
-			continue
-		}
-		got := cfg.Deck.Spyglass.Viewers
-		for re, viewNames := range got {
-			expected, ok := tc.expectedViewers[re]
-			if !ok {
-				t.Errorf("With re %s, got %s, was not found in expected.", re, viewNames)
-				continue
-			}
-			if !reflect.DeepEqual(expected, viewNames) {
-				t.Errorf("With re %s, got %s, expected view name %s", re, viewNames, expected)
-			}
-
-		}
-		for re, viewNames := range tc.expectedViewers {
-			gotNames, ok := got[re]
-			if !ok {
-				t.Errorf("With re %s, expected %s, was not found in got.", re, viewNames)
-				continue
-			}
-			if !reflect.DeepEqual(gotNames, viewNames) {
-				t.Errorf("With re %s, got %s, expected view name %s", re, gotNames, viewNames)
-			}
-		}
-
-		for expectedRegex, matches := range tc.expectedRegexMatches {
-			compiledRegex, ok := cfg.Deck.Spyglass.RegexCache[expectedRegex]
-			if !ok {
-				t.Errorf("tc %s, regex %s was not found in the spyglass regex cache", tc.name, expectedRegex)
-				continue
-			}
-			for _, match := range matches {
-				if !compiledRegex.MatchString(match) {
-					t.Errorf("tc %s expected compiled regex %s to match %s, did not match.", tc.name, expectedRegex, match)
-				}
-			}
-
-		}
-		if cfg.Deck.Spyglass.SizeLimit != tc.expectedSizeLimit {
-			t.Errorf("%s expected SizeLimit %d, got %d", tc.name, tc.expectedSizeLimit, cfg.Deck.Spyglass.SizeLimit)
-		}
-	}
-
-}
-
 func TestValidateAgent(t *testing.T) {
 	k := string(JenkinsXAgent)
 	ns := "default"
diff --git a/pkg/foghorn/controller_test.go b/pkg/foghorn/controller_test.go
index 08c6def0..e85ebd95 100644
--- a/pkg/foghorn/controller_test.go
+++ b/pkg/foghorn/controller_test.go
@@ -45,8 +45,6 @@ func TestReconcile(t *testing.T) {
 		ProwConfig: config.ProwConfig{
 			Keeper:                 config.Keeper{},
 			Plank:                  config.Plank{},
-			Sinker:                 config.Sinker{},
-			Deck:                   config.Deck{},
 			BranchProtection:       config.BranchProtection{},
 			Orgs:                   nil,
 			Gerrit:                 config.Gerrit{},
diff --git a/pkg/repoconfig/merge/test_data/simple/expected-config.yaml b/pkg/repoconfig/merge/test_data/simple/expected-config.yaml
index 1d463cbc..6ea8420a 100644
--- a/pkg/repoconfig/merge/test_data/simple/expected-config.yaml
+++ b/pkg/repoconfig/merge/test_data/simple/expected-config.yaml
@@ -6,8 +6,6 @@ branch-protection:
           required_status_checks:
             contexts:
             - lint
-deck:
-  spyglass: {}
 gerrit: {}
 github:
   LinkURL: null
@@ -30,7 +28,6 @@ presubmits:
     trigger: /lint
 push_gateway:
   serve_metrics: false
-sinker: {}
 tide:
   context_options:
     required-if-present-contexts: null
diff --git a/pkg/repoconfig/merge/test_data/simple/source-config.yaml b/pkg/repoconfig/merge/test_data/simple/source-config.yaml
index a734d431..19456fe0 100644
--- a/pkg/repoconfig/merge/test_data/simple/source-config.yaml
+++ b/pkg/repoconfig/merge/test_data/simple/source-config.yaml
@@ -1,6 +1,4 @@
 branch-protection: {}
-deck:
-  spyglass: {}
 gerrit: {}
 github:
   LinkURL: null
@@ -11,7 +9,6 @@ plank: {}
 presubmits: {}
 push_gateway:
   serve_metrics: false
-sinker: {}
 tide:
   context_options:
     required-if-present-contexts: null
\ No newline at end of file
diff --git a/pkg/webhook/test_data/test_config.yaml b/pkg/webhook/test_data/test_config.yaml
index ff36a23d..819ec71d 100644
--- a/pkg/webhook/test_data/test_config.yaml
+++ b/pkg/webhook/test_data/test_config.yaml
@@ -65,8 +65,6 @@ branch-protection:
             contexts:
             - pr-build
   protect-tested-repos: true
-deck:
-  spyglass: {}
 gerrit: {}
 owners_dir_excludes:
   default: null
@@ -272,7 +270,6 @@ presubmits:
     trigger: (?m)^/test( all| this),?(\s+|$)
 prowjob_namespace: jx
 push_gateway: {}
-sinker: {}
 tide:
   context_options:
     from-branch-protection: true
diff --git a/test/e2e/test_data/example-config.tmpl.yml b/test/e2e/test_data/example-config.tmpl.yml
index c89eb2b0..20b9b373 100644
--- a/test/e2e/test_data/example-config.tmpl.yml
+++ b/test/e2e/test_data/example-config.tmpl.yml
@@ -7,8 +7,6 @@ branch-protection:
             contexts:
             - pr-build
   protect-tested-repos: true
-deck:
-  spyglass: {}
 gerrit: {}
 github:
   LinkURL: null
@@ -29,7 +27,6 @@ presubmits:
 prowjob_namespace: {{ .Namespace }}
 push_gateway:
   serve_metrics: false
-sinker: {}
 tide:
   context_options:
     from-branch-protection: true