diff --git a/generator/generator.go b/generator/generator.go index ab259d13..8137a0d3 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -74,6 +74,10 @@ func getTypeString(nullable bool, typeName string, schema *types.Schema, schemas return "string" case "enum": return "string" + case "intOrString": + return "intstr.IntOrString" + case "dnsLabel": + return "string" default: if schema != nil && schemas != nil { otherSchema := schemas.Schema(&schema.Version, typeName) diff --git a/generator/type_template.go b/generator/type_template.go index e790936a..0044c12e 100644 --- a/generator/type_template.go +++ b/generator/type_template.go @@ -5,6 +5,7 @@ var typeTemplate = `package client {{- if .schema | hasGet }} import ( "github.com/rancher/norman/types" + "k8s.io/apimachinery/pkg/util/intstr" ) {{- end}} diff --git a/parse/builder/builder.go b/parse/builder/builder.go index 4c073e51..b19a827d 100644 --- a/parse/builder/builder.go +++ b/parse/builder/builder.go @@ -239,6 +239,14 @@ func (b *Builder) convert(fieldType string, value interface{}, op Operation) (in return convert.ToString(value), nil case "string": return convert.ToString(value), nil + case "dnsLabel": + return convert.ToString(value), nil + case "intOrString": + num, err := convert.ToNumber(value) + if err == nil { + return num, nil + } + return convert.ToString(value), nil case "base64": return convert.ToString(value), nil case "reference": diff --git a/types/reflection.go b/types/reflection.go index 5b0cb51b..61192ce2 100644 --- a/types/reflection.go +++ b/types/reflection.go @@ -423,7 +423,7 @@ func (s *Schemas) determineSchemaType(version *APIVersion, t reflect.Type) (stri return "date", nil } if t.Name() == "IntOrString" { - return "string", nil + return "intOrString", nil } if t.Name() == "Quantity" { return "string", nil