Merge pull request #57059 from ericchiang/client-go/remove-openapi-import

Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

client-go: remove open-api import from types

This builds off of https://github.com/kubernetes/kube-openapi/pull/21 and removes the following imports from `k8s.io/client-go/kubernetes`:

```
github.com/PuerkitoBio/purell
github.com/PuerkitoBio/urlesc
github.com/emicklei/go-restful
github.com/emicklei/go-restful/log
github.com/go-openapi/jsonpointer
github.com/go-openapi/jsonreference
github.com/go-openapi/spec
github.com/go-openapi/swag
github.com/mailru/easyjson/buffer
github.com/mailru/easyjson/jlexer
github.com/mailru/easyjson/jwriter
golang.org/x/text/cases
golang.org/x/text/internal
golang.org/x/text/internal/tag
golang.org/x/text/language
golang.org/x/text/runes
golang.org/x/text/secure/precis
golang.org/x/text/width
k8s.io/kube-openapi/pkg/common
```

/assign @sttts 
/assign @mbohlool 

cc @kubernetes/sig-api-machinery-pr-reviews 


```release-note
NONE
```
pull/6/head
Kubernetes Submit Queue 2018-01-12 01:26:16 -08:00 committed by GitHub
commit f6d0632bbb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 211 additions and 536 deletions

16
Godeps/Godeps.json generated
View File

@ -3212,35 +3212,35 @@
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/aggregator", "ImportPath": "k8s.io/kube-openapi/pkg/aggregator",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/builder", "ImportPath": "k8s.io/kube-openapi/pkg/builder",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/common", "ImportPath": "k8s.io/kube-openapi/pkg/common",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/generators", "ImportPath": "k8s.io/kube-openapi/pkg/generators",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/handler", "ImportPath": "k8s.io/kube-openapi/pkg/handler",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/util", "ImportPath": "k8s.io/kube-openapi/pkg/util",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto", "ImportPath": "k8s.io/kube-openapi/pkg/util/proto",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto/validation", "ImportPath": "k8s.io/kube-openapi/pkg/util/proto/validation",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/utils/clock", "ImportPath": "k8s.io/utils/clock",

View File

@ -13,11 +13,7 @@ go_library(
"types.go", "types.go",
], ],
importpath = "k8s.io/kubernetes/pkg/api/unversioned", importpath = "k8s.io/kubernetes/pkg/api/unversioned",
deps = [ deps = ["//vendor/github.com/google/gofuzz:go_default_library"],
"//vendor/github.com/go-openapi/spec:go_default_library",
"//vendor/github.com/google/gofuzz:go_default_library",
"//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
],
) )
filegroup( filegroup(

View File

@ -20,9 +20,6 @@ import (
"encoding/json" "encoding/json"
"time" "time"
openapi "k8s.io/kube-openapi/pkg/common"
"github.com/go-openapi/spec"
"github.com/google/gofuzz" "github.com/google/gofuzz"
) )
@ -141,16 +138,15 @@ func (t Time) MarshalJSON() ([]byte, error) {
return json.Marshal(t.UTC().Format(time.RFC3339)) return json.Marshal(t.UTC().Format(time.RFC3339))
} }
func (_ Time) OpenAPIDefinition() openapi.OpenAPIDefinition { // OpenAPISchemaType is used by the kube-openapi generator when constructing
return openapi.OpenAPIDefinition{ // the OpenAPI spec of this type.
Schema: spec.Schema{ //
SchemaProps: spec.SchemaProps{ // See: https://github.com/kubernetes/kube-openapi/tree/master/pkg/generators
Type: []string{"string"}, func (_ Time) OpenAPISchemaType() []string { return []string{"string"} }
Format: "date-time",
}, // OpenAPISchemaFormat is used by the kube-openapi generator when constructing
}, // the OpenAPI spec of this type.
} func (_ Time) OpenAPISchemaFormat() string { return "date-time" }
}
// MarshalQueryParameter converts to a URL query parameter value // MarshalQueryParameter converts to a URL query parameter value
func (t Time) MarshalQueryParameter() (string, error) { func (t Time) MarshalQueryParameter() (string, error) {

View File

@ -6,38 +6,6 @@
"./..." "./..."
], ],
"Deps": [ "Deps": [
{
"ImportPath": "github.com/PuerkitoBio/purell",
"Rev": "8a290539e2e8629dbc4e6bad948158f790ec31f4"
},
{
"ImportPath": "github.com/PuerkitoBio/urlesc",
"Rev": "5bd2802263f21d8788851d5305584c82a5c75d7e"
},
{
"ImportPath": "github.com/emicklei/go-restful",
"Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46"
},
{
"ImportPath": "github.com/emicklei/go-restful/log",
"Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46"
},
{
"ImportPath": "github.com/go-openapi/jsonpointer",
"Rev": "46af16f9f7b149af66e5d1bd010e3574dc06de98"
},
{
"ImportPath": "github.com/go-openapi/jsonreference",
"Rev": "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272"
},
{
"ImportPath": "github.com/go-openapi/spec",
"Rev": "7abd5745472fff5eb3685386d5fb8bf38683154d"
},
{
"ImportPath": "github.com/go-openapi/swag",
"Rev": "f3f9494671f93fcff853e3c6e9e948b3eb71e590"
},
{ {
"ImportPath": "github.com/gogo/protobuf/proto", "ImportPath": "github.com/gogo/protobuf/proto",
"Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7"
@ -54,18 +22,6 @@
"ImportPath": "github.com/google/gofuzz", "ImportPath": "github.com/google/gofuzz",
"Rev": "44d81051d367757e1c7c6a5a86423ece9afcf63c" "Rev": "44d81051d367757e1c7c6a5a86423ece9afcf63c"
}, },
{
"ImportPath": "github.com/mailru/easyjson/buffer",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{
"ImportPath": "github.com/mailru/easyjson/jlexer",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{
"ImportPath": "github.com/mailru/easyjson/jwriter",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{ {
"ImportPath": "github.com/spf13/pflag", "ImportPath": "github.com/spf13/pflag",
"Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" "Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7"
@ -86,34 +42,10 @@
"ImportPath": "golang.org/x/net/lex/httplex", "ImportPath": "golang.org/x/net/lex/httplex",
"Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f"
}, },
{
"ImportPath": "golang.org/x/text/cases",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/internal",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/internal/tag",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/language",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/runes",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "golang.org/x/text/secure/bidirule", "ImportPath": "golang.org/x/text/secure/bidirule",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
}, },
{
"ImportPath": "golang.org/x/text/secure/precis",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "golang.org/x/text/transform", "ImportPath": "golang.org/x/text/transform",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
@ -126,18 +58,10 @@
"ImportPath": "golang.org/x/text/unicode/norm", "ImportPath": "golang.org/x/text/unicode/norm",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
}, },
{
"ImportPath": "golang.org/x/text/width",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "gopkg.in/inf.v0", "ImportPath": "gopkg.in/inf.v0",
"Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4"
}, },
{
"ImportPath": "gopkg.in/yaml.v2",
"Rev": "53feefa2559fb8dfa8d81baad31be332c97d6c77"
},
{ {
"ImportPath": "k8s.io/apimachinery/pkg/api/resource", "ImportPath": "k8s.io/apimachinery/pkg/api/resource",
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
@ -218,10 +142,6 @@
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect", "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}, },
{
"ImportPath": "k8s.io/kube-openapi/pkg/common",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1"
},
{ {
"ImportPath": "k8s.io/apimachinery/pkg/api/resource", "ImportPath": "k8s.io/apimachinery/pkg/api/resource",
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

View File

@ -1632,23 +1632,23 @@
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/builder", "ImportPath": "k8s.io/kube-openapi/pkg/builder",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/common", "ImportPath": "k8s.io/kube-openapi/pkg/common",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/handler", "ImportPath": "k8s.io/kube-openapi/pkg/handler",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/util", "ImportPath": "k8s.io/kube-openapi/pkg/util",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto", "ImportPath": "k8s.io/kube-openapi/pkg/util/proto",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/apimachinery/pkg/api/equality", "ImportPath": "k8s.io/apimachinery/pkg/api/equality",

View File

@ -6,14 +6,6 @@
"./..." "./..."
], ],
"Deps": [ "Deps": [
{
"ImportPath": "github.com/PuerkitoBio/purell",
"Rev": "8a290539e2e8629dbc4e6bad948158f790ec31f4"
},
{
"ImportPath": "github.com/PuerkitoBio/urlesc",
"Rev": "5bd2802263f21d8788851d5305584c82a5c75d7e"
},
{ {
"ImportPath": "github.com/davecgh/go-spew/spew", "ImportPath": "github.com/davecgh/go-spew/spew",
"Rev": "782f4967f2dc4564575ca782fe2d04090b5faca8" "Rev": "782f4967f2dc4564575ca782fe2d04090b5faca8"
@ -30,14 +22,6 @@
"ImportPath": "github.com/elazarl/goproxy", "ImportPath": "github.com/elazarl/goproxy",
"Rev": "c4fc26588b6ef8af07a191fcb6476387bdd46711" "Rev": "c4fc26588b6ef8af07a191fcb6476387bdd46711"
}, },
{
"ImportPath": "github.com/emicklei/go-restful",
"Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46"
},
{
"ImportPath": "github.com/emicklei/go-restful/log",
"Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46"
},
{ {
"ImportPath": "github.com/evanphx/json-patch", "ImportPath": "github.com/evanphx/json-patch",
"Rev": "944e07253867aacae43c04b2e6a239005443f33a" "Rev": "944e07253867aacae43c04b2e6a239005443f33a"
@ -46,22 +30,6 @@
"ImportPath": "github.com/ghodss/yaml", "ImportPath": "github.com/ghodss/yaml",
"Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee" "Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee"
}, },
{
"ImportPath": "github.com/go-openapi/jsonpointer",
"Rev": "46af16f9f7b149af66e5d1bd010e3574dc06de98"
},
{
"ImportPath": "github.com/go-openapi/jsonreference",
"Rev": "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272"
},
{
"ImportPath": "github.com/go-openapi/spec",
"Rev": "7abd5745472fff5eb3685386d5fb8bf38683154d"
},
{
"ImportPath": "github.com/go-openapi/swag",
"Rev": "f3f9494671f93fcff853e3c6e9e948b3eb71e590"
},
{ {
"ImportPath": "github.com/gogo/protobuf/proto", "ImportPath": "github.com/gogo/protobuf/proto",
"Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7"
@ -126,18 +94,6 @@
"ImportPath": "github.com/json-iterator/go", "ImportPath": "github.com/json-iterator/go",
"Rev": "13f86432b882000a51c6e610c620974462691a97" "Rev": "13f86432b882000a51c6e610c620974462691a97"
}, },
{
"ImportPath": "github.com/mailru/easyjson/buffer",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{
"ImportPath": "github.com/mailru/easyjson/jlexer",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{
"ImportPath": "github.com/mailru/easyjson/jwriter",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{ {
"ImportPath": "github.com/mxk/go-flowrate/flowrate", "ImportPath": "github.com/mxk/go-flowrate/flowrate",
"Rev": "cca7078d478f8520f85629ad7c68962d31ed7682" "Rev": "cca7078d478f8520f85629ad7c68962d31ed7682"
@ -190,34 +146,10 @@
"ImportPath": "golang.org/x/net/websocket", "ImportPath": "golang.org/x/net/websocket",
"Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f"
}, },
{
"ImportPath": "golang.org/x/text/cases",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/internal",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/internal/tag",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/language",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/runes",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "golang.org/x/text/secure/bidirule", "ImportPath": "golang.org/x/text/secure/bidirule",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
}, },
{
"ImportPath": "golang.org/x/text/secure/precis",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "golang.org/x/text/transform", "ImportPath": "golang.org/x/text/transform",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
@ -230,10 +162,6 @@
"ImportPath": "golang.org/x/text/unicode/norm", "ImportPath": "golang.org/x/text/unicode/norm",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
}, },
{
"ImportPath": "golang.org/x/text/width",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "gopkg.in/inf.v0", "ImportPath": "gopkg.in/inf.v0",
"Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4"
@ -242,13 +170,9 @@
"ImportPath": "gopkg.in/yaml.v2", "ImportPath": "gopkg.in/yaml.v2",
"Rev": "53feefa2559fb8dfa8d81baad31be332c97d6c77" "Rev": "53feefa2559fb8dfa8d81baad31be332c97d6c77"
}, },
{
"ImportPath": "k8s.io/kube-openapi/pkg/common",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1"
},
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto", "ImportPath": "k8s.io/kube-openapi/pkg/util/proto",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
} }
] ]
} }

View File

@ -38,11 +38,9 @@ go_library(
], ],
importpath = "k8s.io/apimachinery/pkg/api/resource", importpath = "k8s.io/apimachinery/pkg/api/resource",
deps = [ deps = [
"//vendor/github.com/go-openapi/spec:go_default_library",
"//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/gopkg.in/inf.v0:go_default_library", "//vendor/gopkg.in/inf.v0:go_default_library",
"//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
], ],
) )

View File

@ -27,9 +27,7 @@ import (
flag "github.com/spf13/pflag" flag "github.com/spf13/pflag"
"github.com/go-openapi/spec"
inf "gopkg.in/inf.v0" inf "gopkg.in/inf.v0"
openapi "k8s.io/kube-openapi/pkg/common"
) )
// Quantity is a fixed-point representation of a number. // Quantity is a fixed-point representation of a number.
@ -399,17 +397,15 @@ func (q Quantity) DeepCopy() Quantity {
return q return q
} }
// OpenAPIDefinition returns openAPI definition for this type. // OpenAPISchemaType is used by the kube-openapi generator when constructing
func (_ Quantity) OpenAPIDefinition() openapi.OpenAPIDefinition { // the OpenAPI spec of this type.
return openapi.OpenAPIDefinition{ //
Schema: spec.Schema{ // See: https://github.com/kubernetes/kube-openapi/tree/master/pkg/generators
SchemaProps: spec.SchemaProps{ func (_ Quantity) OpenAPISchemaType() []string { return []string{"string"} }
Type: []string{"string"},
Format: "", // OpenAPISchemaFormat is used by the kube-openapi generator when constructing
}, // the OpenAPI spec of this type.
}, func (_ Quantity) OpenAPISchemaFormat() string { return "" }
}
}
// CanonicalizeBytes returns the canonical form of q and its suffix (see comment on Quantity). // CanonicalizeBytes returns the canonical form of q and its suffix (see comment on Quantity).
// //

View File

@ -53,7 +53,6 @@ go_library(
], ],
importpath = "k8s.io/apimachinery/pkg/apis/meta/v1", importpath = "k8s.io/apimachinery/pkg/apis/meta/v1",
deps = [ deps = [
"//vendor/github.com/go-openapi/spec:go_default_library",
"//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
"//vendor/github.com/google/gofuzz:go_default_library", "//vendor/github.com/google/gofuzz:go_default_library",
@ -67,7 +66,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
], ],
) )

View File

@ -20,9 +20,6 @@ import (
"encoding/json" "encoding/json"
"time" "time"
openapi "k8s.io/kube-openapi/pkg/common"
"github.com/go-openapi/spec"
"github.com/google/gofuzz" "github.com/google/gofuzz"
) )
@ -149,16 +146,15 @@ func (t MicroTime) MarshalJSON() ([]byte, error) {
return json.Marshal(t.UTC().Format(RFC3339Micro)) return json.Marshal(t.UTC().Format(RFC3339Micro))
} }
func (_ MicroTime) OpenAPIDefinition() openapi.OpenAPIDefinition { // OpenAPISchemaType is used by the kube-openapi generator when constructing
return openapi.OpenAPIDefinition{ // the OpenAPI spec of this type.
Schema: spec.Schema{ //
SchemaProps: spec.SchemaProps{ // See: https://github.com/kubernetes/kube-openapi/tree/master/pkg/generators
Type: []string{"string"}, func (_ MicroTime) OpenAPISchemaType() []string { return []string{"string"} }
Format: "date-time",
}, // OpenAPISchemaFormat is used by the kube-openapi generator when constructing
}, // the OpenAPI spec of this type.
} func (_ MicroTime) OpenAPISchemaFormat() string { return "date-time" }
}
// MarshalQueryParameter converts to a URL query parameter value // MarshalQueryParameter converts to a URL query parameter value
func (t MicroTime) MarshalQueryParameter() (string, error) { func (t MicroTime) MarshalQueryParameter() (string, error) {

View File

@ -20,9 +20,6 @@ import (
"encoding/json" "encoding/json"
"time" "time"
openapi "k8s.io/kube-openapi/pkg/common"
"github.com/go-openapi/spec"
"github.com/google/gofuzz" "github.com/google/gofuzz"
) )
@ -151,16 +148,15 @@ func (t Time) MarshalJSON() ([]byte, error) {
return json.Marshal(t.UTC().Format(time.RFC3339)) return json.Marshal(t.UTC().Format(time.RFC3339))
} }
func (_ Time) OpenAPIDefinition() openapi.OpenAPIDefinition { // OpenAPISchemaType is used by the kube-openapi generator when constructing
return openapi.OpenAPIDefinition{ // the OpenAPI spec of this type.
Schema: spec.Schema{ //
SchemaProps: spec.SchemaProps{ // See: https://github.com/kubernetes/kube-openapi/tree/master/pkg/generators
Type: []string{"string"}, func (_ Time) OpenAPISchemaType() []string { return []string{"string"} }
Format: "date-time",
}, // OpenAPISchemaFormat is used by the kube-openapi generator when constructing
}, // the OpenAPI spec of this type.
} func (_ Time) OpenAPISchemaFormat() string { return "date-time" }
}
// MarshalQueryParameter converts to a URL query parameter value // MarshalQueryParameter converts to a URL query parameter value
func (t Time) MarshalQueryParameter() (string, error) { func (t Time) MarshalQueryParameter() (string, error) {

View File

@ -22,11 +22,9 @@ go_library(
], ],
importpath = "k8s.io/apimachinery/pkg/util/intstr", importpath = "k8s.io/apimachinery/pkg/util/intstr",
deps = [ deps = [
"//vendor/github.com/go-openapi/spec:go_default_library",
"//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/google/gofuzz:go_default_library", "//vendor/github.com/google/gofuzz:go_default_library",
"//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
], ],
) )

View File

@ -24,9 +24,6 @@ import (
"strconv" "strconv"
"strings" "strings"
openapi "k8s.io/kube-openapi/pkg/common"
"github.com/go-openapi/spec"
"github.com/golang/glog" "github.com/golang/glog"
"github.com/google/gofuzz" "github.com/google/gofuzz"
) )
@ -120,16 +117,15 @@ func (intstr IntOrString) MarshalJSON() ([]byte, error) {
} }
} }
func (_ IntOrString) OpenAPIDefinition() openapi.OpenAPIDefinition { // OpenAPISchemaType is used by the kube-openapi generator when constructing
return openapi.OpenAPIDefinition{ // the OpenAPI spec of this type.
Schema: spec.Schema{ //
SchemaProps: spec.SchemaProps{ // See: https://github.com/kubernetes/kube-openapi/tree/master/pkg/generators
Type: []string{"string"}, func (_ IntOrString) OpenAPISchemaType() []string { return []string{"string"} }
Format: "int-or-string",
}, // OpenAPISchemaFormat is used by the kube-openapi generator when constructing
}, // the OpenAPI spec of this type.
} func (_ IntOrString) OpenAPISchemaFormat() string { return "int-or-string" }
}
func (intstr *IntOrString) Fuzz(c fuzz.Continue) { func (intstr *IntOrString) Fuzz(c fuzz.Continue) {
if intstr == nil { if intstr == nil {

View File

@ -1764,23 +1764,23 @@
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/builder", "ImportPath": "k8s.io/kube-openapi/pkg/builder",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/common", "ImportPath": "k8s.io/kube-openapi/pkg/common",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/handler", "ImportPath": "k8s.io/kube-openapi/pkg/handler",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/util", "ImportPath": "k8s.io/kube-openapi/pkg/util",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto", "ImportPath": "k8s.io/kube-openapi/pkg/util/proto",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/client-go/discovery", "ImportPath": "k8s.io/client-go/discovery",

View File

@ -30,14 +30,6 @@
"ImportPath": "github.com/Azure/go-autorest/autorest/date", "ImportPath": "github.com/Azure/go-autorest/autorest/date",
"Rev": "e14a70c556c8e0db173358d1a903dca345a8e75e" "Rev": "e14a70c556c8e0db173358d1a903dca345a8e75e"
}, },
{
"ImportPath": "github.com/PuerkitoBio/purell",
"Rev": "8a290539e2e8629dbc4e6bad948158f790ec31f4"
},
{
"ImportPath": "github.com/PuerkitoBio/urlesc",
"Rev": "5bd2802263f21d8788851d5305584c82a5c75d7e"
},
{ {
"ImportPath": "github.com/coreos/go-oidc/http", "ImportPath": "github.com/coreos/go-oidc/http",
"Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f" "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f"
@ -86,34 +78,10 @@
"ImportPath": "github.com/docker/spdystream/spdy", "ImportPath": "github.com/docker/spdystream/spdy",
"Rev": "449fdfce4d962303d702fec724ef0ad181c92528" "Rev": "449fdfce4d962303d702fec724ef0ad181c92528"
}, },
{
"ImportPath": "github.com/emicklei/go-restful",
"Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46"
},
{
"ImportPath": "github.com/emicklei/go-restful/log",
"Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46"
},
{ {
"ImportPath": "github.com/ghodss/yaml", "ImportPath": "github.com/ghodss/yaml",
"Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee" "Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee"
}, },
{
"ImportPath": "github.com/go-openapi/jsonpointer",
"Rev": "46af16f9f7b149af66e5d1bd010e3574dc06de98"
},
{
"ImportPath": "github.com/go-openapi/jsonreference",
"Rev": "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272"
},
{
"ImportPath": "github.com/go-openapi/spec",
"Rev": "7abd5745472fff5eb3685386d5fb8bf38683154d"
},
{
"ImportPath": "github.com/go-openapi/swag",
"Rev": "f3f9494671f93fcff853e3c6e9e948b3eb71e590"
},
{ {
"ImportPath": "github.com/gogo/protobuf/proto", "ImportPath": "github.com/gogo/protobuf/proto",
"Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7"
@ -222,18 +190,6 @@
"ImportPath": "github.com/juju/ratelimit", "ImportPath": "github.com/juju/ratelimit",
"Rev": "5b9ff866471762aa2ab2dced63c9fb6f53921342" "Rev": "5b9ff866471762aa2ab2dced63c9fb6f53921342"
}, },
{
"ImportPath": "github.com/mailru/easyjson/buffer",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{
"ImportPath": "github.com/mailru/easyjson/jlexer",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{
"ImportPath": "github.com/mailru/easyjson/jwriter",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{ {
"ImportPath": "github.com/pmezard/go-difflib/difflib", "ImportPath": "github.com/pmezard/go-difflib/difflib",
"Rev": "d8ed2627bdf02c080bf22230dbb337003b7aba2d" "Rev": "d8ed2627bdf02c080bf22230dbb337003b7aba2d"
@ -302,34 +258,10 @@
"ImportPath": "golang.org/x/sys/windows", "ImportPath": "golang.org/x/sys/windows",
"Rev": "95c6576299259db960f6c5b9b69ea52422860fce" "Rev": "95c6576299259db960f6c5b9b69ea52422860fce"
}, },
{
"ImportPath": "golang.org/x/text/cases",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/internal",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/internal/tag",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/language",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/runes",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "golang.org/x/text/secure/bidirule", "ImportPath": "golang.org/x/text/secure/bidirule",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
}, },
{
"ImportPath": "golang.org/x/text/secure/precis",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "golang.org/x/text/transform", "ImportPath": "golang.org/x/text/transform",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
@ -342,10 +274,6 @@
"ImportPath": "golang.org/x/text/unicode/norm", "ImportPath": "golang.org/x/text/unicode/norm",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
}, },
{
"ImportPath": "golang.org/x/text/width",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "gopkg.in/inf.v0", "ImportPath": "gopkg.in/inf.v0",
"Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4"
@ -682,13 +610,9 @@
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect", "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}, },
{
"ImportPath": "k8s.io/kube-openapi/pkg/common",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1"
},
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto", "ImportPath": "k8s.io/kube-openapi/pkg/util/proto",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
} }
] ]
} }

View File

@ -260,11 +260,11 @@
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/common", "ImportPath": "k8s.io/kube-openapi/pkg/common",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/generators", "ImportPath": "k8s.io/kube-openapi/pkg/generators",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
} }
] ]
} }

View File

@ -1620,27 +1620,27 @@
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/aggregator", "ImportPath": "k8s.io/kube-openapi/pkg/aggregator",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/builder", "ImportPath": "k8s.io/kube-openapi/pkg/builder",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/common", "ImportPath": "k8s.io/kube-openapi/pkg/common",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/handler", "ImportPath": "k8s.io/kube-openapi/pkg/handler",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/util", "ImportPath": "k8s.io/kube-openapi/pkg/util",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto", "ImportPath": "k8s.io/kube-openapi/pkg/util/proto",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
} }
] ]
} }

View File

@ -6,42 +6,10 @@
"./..." "./..."
], ],
"Deps": [ "Deps": [
{
"ImportPath": "github.com/PuerkitoBio/purell",
"Rev": "8a290539e2e8629dbc4e6bad948158f790ec31f4"
},
{
"ImportPath": "github.com/PuerkitoBio/urlesc",
"Rev": "5bd2802263f21d8788851d5305584c82a5c75d7e"
},
{
"ImportPath": "github.com/emicklei/go-restful",
"Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46"
},
{
"ImportPath": "github.com/emicklei/go-restful/log",
"Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46"
},
{ {
"ImportPath": "github.com/ghodss/yaml", "ImportPath": "github.com/ghodss/yaml",
"Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee" "Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee"
}, },
{
"ImportPath": "github.com/go-openapi/jsonpointer",
"Rev": "46af16f9f7b149af66e5d1bd010e3574dc06de98"
},
{
"ImportPath": "github.com/go-openapi/jsonreference",
"Rev": "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272"
},
{
"ImportPath": "github.com/go-openapi/spec",
"Rev": "7abd5745472fff5eb3685386d5fb8bf38683154d"
},
{
"ImportPath": "github.com/go-openapi/swag",
"Rev": "f3f9494671f93fcff853e3c6e9e948b3eb71e590"
},
{ {
"ImportPath": "github.com/gogo/protobuf/proto", "ImportPath": "github.com/gogo/protobuf/proto",
"Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7"
@ -98,18 +66,6 @@
"ImportPath": "github.com/juju/ratelimit", "ImportPath": "github.com/juju/ratelimit",
"Rev": "5b9ff866471762aa2ab2dced63c9fb6f53921342" "Rev": "5b9ff866471762aa2ab2dced63c9fb6f53921342"
}, },
{
"ImportPath": "github.com/mailru/easyjson/buffer",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{
"ImportPath": "github.com/mailru/easyjson/jlexer",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{
"ImportPath": "github.com/mailru/easyjson/jwriter",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{ {
"ImportPath": "github.com/spf13/pflag", "ImportPath": "github.com/spf13/pflag",
"Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" "Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7"
@ -130,34 +86,10 @@
"ImportPath": "golang.org/x/net/lex/httplex", "ImportPath": "golang.org/x/net/lex/httplex",
"Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f"
}, },
{
"ImportPath": "golang.org/x/text/cases",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/internal",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/internal/tag",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/language",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/runes",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "golang.org/x/text/secure/bidirule", "ImportPath": "golang.org/x/text/secure/bidirule",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
}, },
{
"ImportPath": "golang.org/x/text/secure/precis",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "golang.org/x/text/transform", "ImportPath": "golang.org/x/text/transform",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
@ -170,10 +102,6 @@
"ImportPath": "golang.org/x/text/unicode/norm", "ImportPath": "golang.org/x/text/unicode/norm",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
}, },
{
"ImportPath": "golang.org/x/text/width",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "gopkg.in/inf.v0", "ImportPath": "gopkg.in/inf.v0",
"Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4"
@ -497,10 +425,6 @@
{ {
"ImportPath": "k8s.io/client-go/util/integer", "ImportPath": "k8s.io/client-go/util/integer",
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
{
"ImportPath": "k8s.io/kube-openapi/pkg/common",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1"
} }
] ]
} }

View File

@ -1608,23 +1608,23 @@
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/builder", "ImportPath": "k8s.io/kube-openapi/pkg/builder",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/common", "ImportPath": "k8s.io/kube-openapi/pkg/common",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/handler", "ImportPath": "k8s.io/kube-openapi/pkg/handler",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/util", "ImportPath": "k8s.io/kube-openapi/pkg/util",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
}, },
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto", "ImportPath": "k8s.io/kube-openapi/pkg/util/proto",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
} }
] ]
} }

View File

@ -6,46 +6,14 @@
"./..." "./..."
], ],
"Deps": [ "Deps": [
{
"ImportPath": "github.com/PuerkitoBio/purell",
"Rev": "8a290539e2e8629dbc4e6bad948158f790ec31f4"
},
{
"ImportPath": "github.com/PuerkitoBio/urlesc",
"Rev": "5bd2802263f21d8788851d5305584c82a5c75d7e"
},
{ {
"ImportPath": "github.com/davecgh/go-spew/spew", "ImportPath": "github.com/davecgh/go-spew/spew",
"Rev": "782f4967f2dc4564575ca782fe2d04090b5faca8" "Rev": "782f4967f2dc4564575ca782fe2d04090b5faca8"
}, },
{
"ImportPath": "github.com/emicklei/go-restful",
"Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46"
},
{
"ImportPath": "github.com/emicklei/go-restful/log",
"Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46"
},
{ {
"ImportPath": "github.com/ghodss/yaml", "ImportPath": "github.com/ghodss/yaml",
"Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee" "Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee"
}, },
{
"ImportPath": "github.com/go-openapi/jsonpointer",
"Rev": "46af16f9f7b149af66e5d1bd010e3574dc06de98"
},
{
"ImportPath": "github.com/go-openapi/jsonreference",
"Rev": "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272"
},
{
"ImportPath": "github.com/go-openapi/spec",
"Rev": "7abd5745472fff5eb3685386d5fb8bf38683154d"
},
{
"ImportPath": "github.com/go-openapi/swag",
"Rev": "f3f9494671f93fcff853e3c6e9e948b3eb71e590"
},
{ {
"ImportPath": "github.com/gogo/protobuf/proto", "ImportPath": "github.com/gogo/protobuf/proto",
"Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7"
@ -122,18 +90,6 @@
"ImportPath": "github.com/juju/ratelimit", "ImportPath": "github.com/juju/ratelimit",
"Rev": "5b9ff866471762aa2ab2dced63c9fb6f53921342" "Rev": "5b9ff866471762aa2ab2dced63c9fb6f53921342"
}, },
{
"ImportPath": "github.com/mailru/easyjson/buffer",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{
"ImportPath": "github.com/mailru/easyjson/jlexer",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{
"ImportPath": "github.com/mailru/easyjson/jwriter",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
{ {
"ImportPath": "github.com/spf13/pflag", "ImportPath": "github.com/spf13/pflag",
"Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" "Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7"
@ -170,34 +126,10 @@
"ImportPath": "golang.org/x/sys/windows", "ImportPath": "golang.org/x/sys/windows",
"Rev": "95c6576299259db960f6c5b9b69ea52422860fce" "Rev": "95c6576299259db960f6c5b9b69ea52422860fce"
}, },
{
"ImportPath": "golang.org/x/text/cases",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/internal",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/internal/tag",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/language",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{
"ImportPath": "golang.org/x/text/runes",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "golang.org/x/text/secure/bidirule", "ImportPath": "golang.org/x/text/secure/bidirule",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
}, },
{
"ImportPath": "golang.org/x/text/secure/precis",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "golang.org/x/text/transform", "ImportPath": "golang.org/x/text/transform",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
@ -210,10 +142,6 @@
"ImportPath": "golang.org/x/text/unicode/norm", "ImportPath": "golang.org/x/text/unicode/norm",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
}, },
{
"ImportPath": "golang.org/x/text/width",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
{ {
"ImportPath": "gopkg.in/inf.v0", "ImportPath": "gopkg.in/inf.v0",
"Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4"
@ -966,13 +894,9 @@
"ImportPath": "k8s.io/client-go/util/workqueue", "ImportPath": "k8s.io/client-go/util/workqueue",
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}, },
{
"ImportPath": "k8s.io/kube-openapi/pkg/common",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1"
},
{ {
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto", "ImportPath": "k8s.io/kube-openapi/pkg/util/proto",
"Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" "Rev": "a07b7bbb58e7fdc5144f8d7046331d29fc9ad3b3"
} }
] ]
} }

View File

@ -11,5 +11,36 @@ escape or quote the value string. Extensions can be used to pass more informatio
documentation generators. For example a type might have a friendly name to be displayed in documentation or documentation generators. For example a type might have a friendly name to be displayed in documentation or
being used in a client's fluent interface. being used in a client's fluent interface.
# Custom OpenAPI type definitions
Custom types which otherwise don't map directly to OpenAPI can override their
OpenAPI definition by implementing a function named "OpenAPIDefinition" with
the following signature:
import openapi "k8s.io/kube-openapi/pkg/common"
// ...
type Time struct {
time.Time
}
func (_ Time) OpenAPIDefinition() openapi.OpenAPIDefinition {
return openapi.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
Type: []string{"string"},
Format: "date-time",
},
},
}
}
Alternatively, the type can avoid the "openapi" import by defining the following
methods. The following example produces the same OpenAPI definition as the
example above:
func (_ Time) OpenAPISchemaType() []string { return []string{"string"} }
func (_ Time) OpenAPISchemaFormat() string { return "date-time" }
TODO(mehdy): Make k8s:openapi-gen a parameter to the generator now that OpenAPI has its own repo. TODO(mehdy): Make k8s:openapi-gen a parameter to the generator now that OpenAPI has its own repo.

View File

@ -118,35 +118,13 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
`)...) `)...)
outputPath := arguments.OutputPackagePath
if err := context.AddDir(outputPath); err != nil {
glog.Fatalf("Failed to load output package: %v", err)
}
// Compute the canonical output path to allow retrieval of the
// package for a vendored output path.
const vendorPath = "/vendor/"
canonicalOutputPath := outputPath
if strings.Contains(outputPath, vendorPath) {
canonicalOutputPath = outputPath[strings.Index(outputPath, vendorPath)+len(vendorPath):]
}
// The package for outputPath is mapped to the canonical path
pkg := context.Universe[canonicalOutputPath]
if pkg == nil {
glog.Fatalf("Got nil output package: %v", err)
}
return generator.Packages{ return generator.Packages{
&generator.DefaultPackage{ &generator.DefaultPackage{
PackageName: strings.Split(filepath.Base(pkg.Path), ".")[0], PackageName: filepath.Base(arguments.OutputPackagePath),
// Use the supplied output path rather than the canonical PackagePath: arguments.OutputPackagePath,
// one to allow generation into the path of a
// vendored package.
PackagePath: outputPath,
HeaderText: header, HeaderText: header,
GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) { GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
return []generator.Generator{NewOpenAPIGen(arguments.OutputFileBaseName, pkg, context)} return []generator.Generator{NewOpenAPIGen(arguments.OutputFileBaseName, arguments.OutputPackagePath, context)}
}, },
FilterFunc: func(c *generator.Context, t *types.Type) bool { FilterFunc: func(c *generator.Context, t *types.Type) bool {
// There is a conflict between this codegen and codecgen, we should avoid types generated for codecgen // There is a conflict between this codegen and codecgen, we should avoid types generated for codecgen
@ -175,12 +153,12 @@ const (
type openAPIGen struct { type openAPIGen struct {
generator.DefaultGen generator.DefaultGen
// TargetPackage is the package that will get GetOpenAPIDefinitions function returns all open API definitions. // TargetPackage is the package that will get GetOpenAPIDefinitions function returns all open API definitions.
targetPackage *types.Package targetPackage string
imports namer.ImportTracker imports namer.ImportTracker
context *generator.Context context *generator.Context
} }
func NewOpenAPIGen(sanitizedName string, targetPackage *types.Package, context *generator.Context) generator.Generator { func NewOpenAPIGen(sanitizedName string, targetPackage string, context *generator.Context) generator.Generator {
return &openAPIGen{ return &openAPIGen{
DefaultGen: generator.DefaultGen{ DefaultGen: generator.DefaultGen{
OptionalName: sanitizedName, OptionalName: sanitizedName,
@ -194,7 +172,7 @@ func NewOpenAPIGen(sanitizedName string, targetPackage *types.Package, context *
func (g *openAPIGen) Namers(c *generator.Context) namer.NameSystems { func (g *openAPIGen) Namers(c *generator.Context) namer.NameSystems {
// Have the raw namer for this file track what it imports. // Have the raw namer for this file track what it imports.
return namer.NameSystems{ return namer.NameSystems{
"raw": namer.NewRawNamer(g.targetPackage.Path, g.imports), "raw": namer.NewRawNamer(g.targetPackage, g.imports),
} }
} }
@ -207,10 +185,10 @@ func (g *openAPIGen) Filter(c *generator.Context, t *types.Type) bool {
} }
func (g *openAPIGen) isOtherPackage(pkg string) bool { func (g *openAPIGen) isOtherPackage(pkg string) bool {
if pkg == g.targetPackage.Path { if pkg == g.targetPackage {
return false return false
} }
if strings.HasSuffix(pkg, "\""+g.targetPackage.Path+"\"") { if strings.HasSuffix(pkg, "\""+g.targetPackage+"\"") {
return false return false
} }
return true return true
@ -300,23 +278,37 @@ func newOpenAPITypeWriter(sw *generator.SnippetWriter) openAPITypeWriter {
} }
} }
func methodReturnsValue(mt *types.Type, pkg, name string) bool {
if len(mt.Signature.Parameters) != 0 || len(mt.Signature.Results) != 1 {
return false
}
r := mt.Signature.Results[0]
return r.Name.Name == name && r.Name.Package == pkg
}
func hasOpenAPIDefinitionMethod(t *types.Type) bool { func hasOpenAPIDefinitionMethod(t *types.Type) bool {
for mn, mt := range t.Methods { for mn, mt := range t.Methods {
if mn != "OpenAPIDefinition" { if mn != "OpenAPIDefinition" {
continue continue
} }
if len(mt.Signature.Parameters) != 0 || len(mt.Signature.Results) != 1 { return methodReturnsValue(mt, openAPICommonPackagePath, "OpenAPIDefinition")
return false
}
r := mt.Signature.Results[0]
if r.Name.Name != "OpenAPIDefinition" || r.Name.Package != openAPICommonPackagePath {
return false
}
return true
} }
return false return false
} }
func hasOpenAPIDefinitionMethods(t *types.Type) bool {
var hasSchemaTypeMethod, hasOpenAPISchemaFormat bool
for mn, mt := range t.Methods {
switch mn {
case "OpenAPISchemaType":
hasSchemaTypeMethod = methodReturnsValue(mt, "", "[]string")
case "OpenAPISchemaFormat":
hasOpenAPISchemaFormat = methodReturnsValue(mt, "", "string")
}
}
return hasSchemaTypeMethod && hasOpenAPISchemaFormat
}
// typeShortName returns short package name (e.g. the name x appears in package x definition) dot type name. // typeShortName returns short package name (e.g. the name x appears in package x definition) dot type name.
func typeShortName(t *types.Type) string { func typeShortName(t *types.Type) string {
return filepath.Base(t.Name.Package) + "." + t.Name.Name return filepath.Base(t.Name.Package) + "." + t.Name.Name
@ -360,6 +352,28 @@ func (g openAPITypeWriter) generate(t *types.Type) error {
g.Do("$.type|raw${}.OpenAPIDefinition(),\n", args) g.Do("$.type|raw${}.OpenAPIDefinition(),\n", args)
return nil return nil
} }
if hasOpenAPIDefinitionMethods(t) {
// Since this generated snippet is part of a map:
//
// map[string]common.OpenAPIDefinition: {
// "TYPE_NAME": {
// Schema: spec.Schema{ ... },
// },
// }
//
// For compliance with gofmt -s it's important we elide the
// struct type. The type is implied by the map and will be
// removed otherwise.
g.Do("{\n"+
"Schema: spec.Schema{\n"+
"SchemaProps: spec.SchemaProps{\n"+
"Type:$.type|raw${}.OpenAPISchemaType(),\n"+
"Format:$.type|raw${}.OpenAPISchemaFormat(),\n"+
"},\n"+
"},\n"+
"},\n", args)
return nil
}
g.Do("{\nSchema: spec.Schema{\nSchemaProps: spec.SchemaProps{\n", nil) g.Do("{\nSchema: spec.Schema{\nSchemaProps: spec.SchemaProps{\n", nil)
g.generateDescription(t.CommentLines) g.generateDescription(t.CommentLines)
g.Do("Properties: map[string]$.SpecSchemaType|raw${\n", args) g.Do("Properties: map[string]$.SpecSchemaType|raw${\n", args)

View File

@ -210,11 +210,18 @@ func (d *Definitions) parseKind(s *openapi_v2.Schema, path *Path) (Schema, error
}, nil }, nil
} }
func (d *Definitions) parseArbitrary(s *openapi_v2.Schema, path *Path) (Schema, error) {
return &Arbitrary{
BaseSchema: d.parseBaseSchema(s, path),
}, nil
}
// ParseSchema creates a walkable Schema from an openapi schema. While // ParseSchema creates a walkable Schema from an openapi schema. While
// this function is public, it doesn't leak through the interface. // this function is public, it doesn't leak through the interface.
func (d *Definitions) ParseSchema(s *openapi_v2.Schema, path *Path) (Schema, error) { func (d *Definitions) ParseSchema(s *openapi_v2.Schema, path *Path) (Schema, error) {
if len(s.GetType().GetValue()) == 1 { objectTypes := s.GetType().GetValue()
t := s.GetType().GetValue()[0] if len(objectTypes) == 1 {
t := objectTypes[0]
switch t { switch t {
case object: case object:
return d.parseMap(s, path) return d.parseMap(s, path)
@ -229,6 +236,9 @@ func (d *Definitions) ParseSchema(s *openapi_v2.Schema, path *Path) (Schema, err
if s.GetProperties() != nil { if s.GetProperties() != nil {
return d.parseKind(s, path) return d.parseKind(s, path)
} }
if len(objectTypes) == 0 || (len(objectTypes) == 1 && objectTypes[0] == "") {
return d.parseArbitrary(s, path)
}
return d.parsePrimitive(s, path) return d.parsePrimitive(s, path)
} }

View File

@ -58,6 +58,14 @@ type SchemaVisitor interface {
VisitReference(Reference) VisitReference(Reference)
} }
// SchemaVisitorArbitrary is an additional visitor interface which handles
// arbitrary types. For backwards compatability, it's a separate interface
// which is checked for at runtime.
type SchemaVisitorArbitrary interface {
SchemaVisitor
VisitArbitrary(*Arbitrary)
}
// Schema is the base definition of an openapi type. // Schema is the base definition of an openapi type.
type Schema interface { type Schema interface {
// Giving a visitor here will let you visit the actual type. // Giving a visitor here will let you visit the actual type.
@ -242,6 +250,23 @@ func (p *Primitive) GetName() string {
return fmt.Sprintf("%s (%s)", p.Type, p.Format) return fmt.Sprintf("%s (%s)", p.Type, p.Format)
} }
// Arbitrary is a value of any type (primitive, object or array)
type Arbitrary struct {
BaseSchema
}
var _ Schema = &Arbitrary{}
func (a *Arbitrary) Accept(v SchemaVisitor) {
if visitor, ok := v.(SchemaVisitorArbitrary); ok {
visitor.VisitArbitrary(a)
}
}
func (a *Arbitrary) GetName() string {
return "Arbitrary value (primitive, object or array)"
}
// Reference implementation depends on the type of document. // Reference implementation depends on the type of document.
type Reference interface { type Reference interface {
Schema Schema

View File

@ -127,6 +127,9 @@ func (item *mapItem) VisitKind(schema *proto.Kind) {
} }
} }
func (item *mapItem) VisitArbitrary(schema *proto.Arbitrary) {
}
func (item *mapItem) VisitReference(schema proto.Reference) { func (item *mapItem) VisitReference(schema proto.Reference) {
// passthrough // passthrough
schema.SubSchema().Accept(item) schema.SubSchema().Accept(item)
@ -163,11 +166,14 @@ func (item *arrayItem) VisitArray(schema *proto.Array) {
} }
func (item *arrayItem) VisitMap(schema *proto.Map) { func (item *arrayItem) VisitMap(schema *proto.Map) {
item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: "array", Actual: "map"}) item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: "map", Actual: "array"})
} }
func (item *arrayItem) VisitKind(schema *proto.Kind) { func (item *arrayItem) VisitKind(schema *proto.Kind) {
item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: "array", Actual: "map"}) item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: "map", Actual: "array"})
}
func (item *arrayItem) VisitArbitrary(schema *proto.Arbitrary) {
} }
func (item *arrayItem) VisitReference(schema proto.Reference) { func (item *arrayItem) VisitReference(schema proto.Reference) {
@ -226,6 +232,9 @@ func (item *primitiveItem) VisitKind(schema *proto.Kind) {
item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: "map", Actual: item.Kind}) item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: "map", Actual: item.Kind})
} }
func (item *primitiveItem) VisitArbitrary(schema *proto.Arbitrary) {
}
func (item *primitiveItem) VisitReference(schema proto.Reference) { func (item *primitiveItem) VisitReference(schema proto.Reference) {
// passthrough // passthrough
schema.SubSchema().Accept(item) schema.SubSchema().Accept(item)