mirror of
https://github.com/psviderski/uncloud.git
synced 2026-11-10 20:54:17 +00:00
fix(labels): allow setting 'uncloud.' prefixed labels on services using a client but not CLI or Compose
This commit is contained in:
@@ -130,6 +130,9 @@ func ServiceSpecFromCompose(project *types.Project, serviceName string) (api.Ser
|
||||
}
|
||||
|
||||
if len(service.Deploy.Labels) > 0 {
|
||||
if err = api.ValidateLabels(service.Deploy.Labels); err != nil {
|
||||
return spec, fmt.Errorf("invalid deploy.labels: %w", err)
|
||||
}
|
||||
spec.Labels = maps.Clone(service.Deploy.Labels)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -950,6 +950,42 @@ services:
|
||||
}
|
||||
}
|
||||
|
||||
func TestServiceSpecFromCompose_InvalidServiceLabels(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
label string
|
||||
wantErr string
|
||||
}{
|
||||
{name: "reserved prefix", label: api.LabelManaged, wantErr: "reserved prefix"},
|
||||
{name: "reserved daemon prefix", label: "uncloudd.foo", wantErr: "reserved prefix"},
|
||||
{name: "managed service", label: api.LabelReservedPrefix + "service.managed", wantErr: "reserved prefix"},
|
||||
{name: "whitespace in key", label: "my label", wantErr: "must not contain whitespace"},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
composeYAML := `
|
||||
services:
|
||||
web:
|
||||
image: nginx
|
||||
deploy:
|
||||
labels:
|
||||
- ` + tt.label + `=value
|
||||
`
|
||||
project, err := LoadProjectFromContent(context.Background(), composeYAML)
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = ServiceSpecFromCompose(project, "web")
|
||||
require.ErrorContains(t, err, "invalid deploy.labels")
|
||||
require.ErrorContains(t, err, tt.wantErr)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestServiceSpecFromCompose_UpdateConfig(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user