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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions CHANGELOG-v2.1.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Release 2.1.0

## What's New

* Config Type Target Field

## Config Type Target Field

Config types now have an optional `target` field that indicates what kind of entity the config type
is intended for. Valid values are `"service"` and `"router"`. The field is set on creation and is
immutable afterward.

This is the first step toward controller-managed router configuration. The `target` field lets us
distinguish between config types meant for services and config types meant for routers, which keeps
UIs, APIs, and validation clean. See `doc/design/ctrl-managed-router-config.md` for the full design.

A database migration sets `target = "service"` on all existing config types. Services and identity
service config overrides now require that referenced configs have a config type with
`target = "service"`.

The CLI has been updated to support the new field:

* `ziti edge create config-type` now accepts a `--target` flag
* `ziti edge list config-types` now shows a `Target` column
17 changes: 14 additions & 3 deletions common/pb/edge_cmd_pb/edge_cmd.pb.go

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

1 change: 1 addition & 0 deletions common/pb/edge_cmd_pb/edge_cmd.proto
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ message ConfigType {
string name = 2;
bytes schema = 3;
map<string, TagValue> tags = 4;
optional string target = 5;
Copy link
Copy Markdown
Member

@andrewpmartinez andrewpmartinez Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why optional? I assume this is for backward compatibility, but optional makes string be *string and doesn't really do much else besides letting us detect whether it was explicitly set or not. I don't see a reason to detect whether a setting is set or not.

I assume that the default is a target value of "service," and we could create an enum that does this:

enum ConfigTargetType {
  CONFIG_TYPE_SERVICE = 0;
  CONFIG_TYPE_ROUTER = 1;
}

Then the config type can be the enum type and default cleanly to 0 and not have to deal w/ pointer refs.

}

// Controllers
Expand Down
Loading
Loading