From e03c72e8551d1c8f51270da0faa40b1235d03e1c Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Tue, 29 May 2018 14:34:53 -0700 Subject: [PATCH] DnsLabelRestricted type to validate against RFC 1035 k8s uses restricted format for services dnsLabelRestricted: dns1035LabelFmt string = "[a-z]([-a-z0-9]*[a-z0-9])?" dnsLabel:dns1123LabelFmt string = "[a-z0-9]([-a-z0-9]*[a-z0-9])?" --- generator/generator.go | 2 ++ parse/builder/builder.go | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/generator/generator.go b/generator/generator.go index aba26901..27df2039 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -78,6 +78,8 @@ func getTypeString(nullable bool, typeName string, schema *types.Schema, schemas return "intstr.IntOrString" case "dnsLabel": return "string" + case "dnsLabelRestricted": + return "string" case "hostname": return "string" default: diff --git a/parse/builder/builder.go b/parse/builder/builder.go index f3a6d343..540f7270 100644 --- a/parse/builder/builder.go +++ b/parse/builder/builder.go @@ -272,6 +272,18 @@ func (b *Builder) convert(fieldType string, value interface{}, op Operation) (in } } return str, nil + case "dnsLabelRestricted": + str := convert.ToString(value) + if str == "" { + return "", nil + } + if op == Create || op == Update { + if errs := validation.IsDNS1035Label(str); len(errs) != 0 { + return value, httperror.NewAPIError(httperror.InvalidFormat, fmt.Sprintf("invalid value %s: %s", value, + strings.Join(errs, ","))) + } + } + return str, nil case "hostname": str := convert.ToString(value) if str == "" {