diff --git a/agent/config/runtime_test.go b/agent/config/runtime_test.go index dffcc4be96..85db6d3be9 100644 --- a/agent/config/runtime_test.go +++ b/agent/config/runtime_test.go @@ -4157,7 +4157,6 @@ func TestLoad_IntegrationWithFlags(t *testing.T) { "bootstrap": [ { "kind": "mesh", - "name": "mesh", "meta" : { "foo": "bar", "gir": "zim" @@ -4174,7 +4173,6 @@ func TestLoad_IntegrationWithFlags(t *testing.T) { config_entries { bootstrap { kind = "mesh" - name = "mesh" meta { "foo" = "bar" "gir" = "zim" @@ -4190,8 +4188,6 @@ func TestLoad_IntegrationWithFlags(t *testing.T) { rt.DataDir = dataDir rt.ConfigEntryBootstrap = []structs.ConfigEntry{ &structs.MeshConfigEntry{ - Kind: structs.MeshConfig, - Name: structs.MeshConfigMesh, Meta: map[string]string{ "foo": "bar", "gir": "zim", @@ -4212,7 +4208,6 @@ func TestLoad_IntegrationWithFlags(t *testing.T) { "bootstrap": [ { "Kind": "mesh", - "Name": "mesh", "Meta" : { "foo": "bar", "gir": "zim" @@ -4229,7 +4224,6 @@ func TestLoad_IntegrationWithFlags(t *testing.T) { config_entries { bootstrap { Kind = "mesh" - Name = "mesh" Meta { "foo" = "bar" "gir" = "zim" @@ -4245,8 +4239,6 @@ func TestLoad_IntegrationWithFlags(t *testing.T) { rt.DataDir = dataDir rt.ConfigEntryBootstrap = []structs.ConfigEntry{ &structs.MeshConfigEntry{ - Kind: structs.MeshConfig, - Name: structs.MeshConfigMesh, Meta: map[string]string{ "foo": "bar", "gir": "zim", diff --git a/agent/consul/fsm/snapshot_oss_test.go b/agent/consul/fsm/snapshot_oss_test.go index 99de8ebc9a..cb05399870 100644 --- a/agent/consul/fsm/snapshot_oss_test.go +++ b/agent/consul/fsm/snapshot_oss_test.go @@ -428,8 +428,6 @@ func TestFSM_SnapshotRestore_OSS(t *testing.T) { // mesh config entry meshConfig := &structs.MeshConfigEntry{ - Kind: structs.MeshConfig, - Name: structs.MeshConfigMesh, TransparentProxy: structs.TransparentProxyMeshConfig{ CatalogDestinationsOnly: true, }, diff --git a/agent/proxycfg/state_test.go b/agent/proxycfg/state_test.go index 122a6e5453..e86d1b21e8 100644 --- a/agent/proxycfg/state_test.go +++ b/agent/proxycfg/state_test.go @@ -1674,8 +1674,6 @@ func TestState_WatchesAndUpdates(t *testing.T) { CorrelationID: meshConfigEntryID, Result: &structs.ConfigEntryResponse{ Entry: &structs.MeshConfigEntry{ - Kind: structs.MeshConfig, - Name: structs.MeshConfigMesh, TransparentProxy: structs.TransparentProxyMeshConfig{}, }, }, diff --git a/agent/structs/config_entry.go b/agent/structs/config_entry.go index afa5f34fc1..e05e131efa 100644 --- a/agent/structs/config_entry.go +++ b/agent/structs/config_entry.go @@ -529,7 +529,7 @@ func MakeConfigEntry(kind, name string) (ConfigEntry, error) { case ServiceIntentions: return &ServiceIntentionsConfigEntry{Name: name}, nil case MeshConfig: - return &MeshConfigEntry{Name: name}, nil + return &MeshConfigEntry{}, nil default: return nil, fmt.Errorf("invalid config entry kind: %s", kind) } diff --git a/agent/structs/config_entry_mesh.go b/agent/structs/config_entry_mesh.go index 8e7688a06c..74d70765a4 100644 --- a/agent/structs/config_entry_mesh.go +++ b/agent/structs/config_entry_mesh.go @@ -7,9 +7,6 @@ import ( ) type MeshConfigEntry struct { - Kind string - Name string - // TransparentProxy contains cluster-wide options pertaining to TPROXY mode // when enabled. TransparentProxy TransparentProxyMeshConfig `alias:"transparent_proxy"` @@ -36,7 +33,7 @@ func (e *MeshConfigEntry) GetName() string { return "" } - return e.Name + return MeshConfigMesh } func (e *MeshConfigEntry) GetMeta() map[string]string { @@ -51,11 +48,7 @@ func (e *MeshConfigEntry) Normalize() error { return fmt.Errorf("config entry is nil") } - e.Kind = MeshConfig - e.Name = MeshConfigMesh - e.EnterpriseMeta.Normalize() - return nil } @@ -63,11 +56,6 @@ func (e *MeshConfigEntry) Validate() error { if e == nil { return fmt.Errorf("config entry is nil") } - - if e.Name != MeshConfigMesh { - return fmt.Errorf("invalid name (%q), only %q is supported", e.Name, MeshConfigMesh) - } - if err := validateConfigEntryMeta(e.Meta); err != nil { return err } diff --git a/agent/structs/config_entry_oss.go b/agent/structs/config_entry_oss.go index a3ca07c1b8..9773643dde 100644 --- a/agent/structs/config_entry_oss.go +++ b/agent/structs/config_entry_oss.go @@ -19,6 +19,9 @@ func validateUnusedKeys(unused []string) error { for _, k := range unused { switch { case k == "CreateIndex" || k == "ModifyIndex": + case k == "kind" || k == "Kind": + // The kind field is used to determine the target, but doesn't need + // to exist on the target. case strings.HasSuffix(strings.ToLower(k), "namespace"): err = multierror.Append(err, fmt.Errorf("invalid config key %q, namespaces are a consul enterprise feature", k)) default: diff --git a/agent/structs/config_entry_test.go b/agent/structs/config_entry_test.go index 38c10deb0b..cace510bb4 100644 --- a/agent/structs/config_entry_test.go +++ b/agent/structs/config_entry_test.go @@ -1310,7 +1310,6 @@ func TestDecodeConfigEntry(t *testing.T) { name: "mesh", snake: ` kind = "mesh" - name = "mesh" meta { "foo" = "bar" "gir" = "zim" @@ -1321,7 +1320,6 @@ func TestDecodeConfigEntry(t *testing.T) { `, camel: ` Kind = "mesh" - Name = "mesh" Meta { "foo" = "bar" "gir" = "zim" @@ -1331,8 +1329,6 @@ func TestDecodeConfigEntry(t *testing.T) { } `, expect: &MeshConfigEntry{ - Kind: MeshConfig, - Name: MeshConfigMesh, Meta: map[string]string{ "foo": "bar", "gir": "zim", diff --git a/agent/xds/listeners_test.go b/agent/xds/listeners_test.go index 2f9102f42a..bab7057798 100644 --- a/agent/xds/listeners_test.go +++ b/agent/xds/listeners_test.go @@ -519,8 +519,6 @@ func TestListenersFromSnapshot(t *testing.T) { snap.ConnectProxy.MeshConfigSet = true snap.ConnectProxy.MeshConfig = &structs.MeshConfigEntry{ - Kind: structs.MeshConfig, - Name: structs.MeshConfigMesh, TransparentProxy: structs.TransparentProxyMeshConfig{ CatalogDestinationsOnly: true, }, diff --git a/api/config_entry.go b/api/config_entry.go index 6ae23be898..5047d07a5b 100644 --- a/api/config_entry.go +++ b/api/config_entry.go @@ -295,7 +295,7 @@ func makeConfigEntry(kind, name string) (ConfigEntry, error) { case ServiceIntentions: return &ServiceIntentionsConfigEntry{Kind: kind, Name: name}, nil case MeshConfig: - return &MeshConfigEntry{Kind: kind, Name: name}, nil + return &MeshConfigEntry{}, nil default: return nil, fmt.Errorf("invalid config entry kind: %s", kind) } diff --git a/api/config_entry_cluster.go b/api/config_entry_cluster.go index 057059f8aa..915fab5d3d 100644 --- a/api/config_entry_cluster.go +++ b/api/config_entry_cluster.go @@ -1,7 +1,6 @@ package api type MeshConfigEntry struct { - Kind string Name string Namespace string `json:",omitempty"` TransparentProxy TransparentProxyMeshConfig `alias:"transparent_proxy"` @@ -15,11 +14,11 @@ type TransparentProxyMeshConfig struct { } func (e *MeshConfigEntry) GetKind() string { - return e.Kind + return MeshConfig } func (e *MeshConfigEntry) GetName() string { - return e.Name + return MeshConfigMesh } func (e *MeshConfigEntry) GetNamespace() string { diff --git a/api/config_entry_test.go b/api/config_entry_test.go index 4bf5e23681..74f92afe88 100644 --- a/api/config_entry_test.go +++ b/api/config_entry_test.go @@ -1141,7 +1141,6 @@ func TestDecodeConfigEntry(t *testing.T) { body: ` { "Kind": "mesh", - "Name": "mesh", "Meta" : { "foo": "bar", "gir": "zim" @@ -1152,8 +1151,6 @@ func TestDecodeConfigEntry(t *testing.T) { } `, expect: &MeshConfigEntry{ - Kind: "mesh", - Name: "mesh", Meta: map[string]string{ "foo": "bar", "gir": "zim", diff --git a/command/config/write/config_write.go b/command/config/write/config_write.go index e150b40af9..c7b3a72fd4 100644 --- a/command/config/write/config_write.go +++ b/command/config/write/config_write.go @@ -6,13 +6,14 @@ import ( "io" "time" + "github.com/hashicorp/go-multierror" + "github.com/mitchellh/cli" + "github.com/mitchellh/mapstructure" + "github.com/hashicorp/consul/api" "github.com/hashicorp/consul/command/flags" "github.com/hashicorp/consul/command/helpers" "github.com/hashicorp/consul/lib/decode" - "github.com/hashicorp/go-multierror" - "github.com/mitchellh/cli" - "github.com/mitchellh/mapstructure" ) func New(ui cli.Ui) *cmd { @@ -155,6 +156,12 @@ func newDecodeConfigEntry(raw map[string]interface{}) (api.ConfigEntry, error) { } for _, k := range md.Unused { + switch k { + case "kind", "Kind": + // The kind field is used to determine the target, but doesn't need + // to exist on the target. + continue + } err = multierror.Append(err, fmt.Errorf("invalid config key %q", k)) } if err != nil { diff --git a/command/config/write/config_write_test.go b/command/config/write/config_write_test.go index ee122f2b38..8b3fe120b9 100644 --- a/command/config/write/config_write_test.go +++ b/command/config/write/config_write_test.go @@ -2627,7 +2627,6 @@ func TestParseConfigEntry(t *testing.T) { name: "mesh", snake: ` kind = "mesh" - name = "mesh" meta { "foo" = "bar" "gir" = "zim" @@ -2638,7 +2637,6 @@ func TestParseConfigEntry(t *testing.T) { `, camel: ` Kind = "mesh" - Name = "mesh" Meta { "foo" = "bar" "gir" = "zim" @@ -2650,7 +2648,6 @@ func TestParseConfigEntry(t *testing.T) { snakeJSON: ` { "kind": "mesh", - "name": "mesh", "meta" : { "foo": "bar", "gir": "zim" @@ -2663,7 +2660,6 @@ func TestParseConfigEntry(t *testing.T) { camelJSON: ` { "Kind": "mesh", - "Name": "mesh", "Meta" : { "foo": "bar", "gir": "zim" @@ -2674,8 +2670,6 @@ func TestParseConfigEntry(t *testing.T) { } `, expect: &api.MeshConfigEntry{ - Kind: api.MeshConfig, - Name: api.MeshConfigMesh, Meta: map[string]string{ "foo": "bar", "gir": "zim",