mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 11:21:47 +00:00
Update client library to react to changes in Decoding
This commit is contained in:
parent
24a7919002
commit
efe88e0818
@ -48,13 +48,14 @@ func (g *genGroup) Namers(c *generator.Context) namer.NameSystems {
|
||||
}
|
||||
|
||||
func (g *genGroup) Imports(c *generator.Context) (imports []string) {
|
||||
return append(g.imports.ImportLines(), "fmt")
|
||||
return g.imports.ImportLines()
|
||||
}
|
||||
|
||||
func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
|
||||
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
||||
const pkgUnversioned = "k8s.io/kubernetes/pkg/client/unversioned"
|
||||
const pkgRegistered = "k8s.io/kubernetes/pkg/apimachinery/registered"
|
||||
const pkgAPI = "k8s.io/kubernetes/pkg/api"
|
||||
apiPath := func(group string) string {
|
||||
if group == "legacy" {
|
||||
return `"/api"`
|
||||
@ -81,6 +82,7 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer
|
||||
"latestGroup": c.Universe.Variable(types.Name{Package: pkgRegistered, Name: "Group"}),
|
||||
"GroupOrDie": c.Universe.Variable(types.Name{Package: pkgRegistered, Name: "GroupOrDie"}),
|
||||
"apiPath": apiPath(g.group),
|
||||
"latestCodecs": c.Universe.Variable(types.Name{Package: pkgAPI, Name: "Codecs"}),
|
||||
}
|
||||
sw.Do(groupInterfaceTemplate, m)
|
||||
sw.Do(groupClientTemplate, m)
|
||||
@ -181,12 +183,7 @@ func setConfigDefaults(config *$.Config|raw$) error {
|
||||
config.GroupVersion = ©GroupVersion
|
||||
//}
|
||||
|
||||
versionInterfaces, err := g.InterfacesFor(*config.GroupVersion)
|
||||
if err != nil {
|
||||
return fmt.Errorf("$.Group$ API version '%s' is not recognized (valid values: %s)",
|
||||
config.GroupVersion, g.GroupVersions)
|
||||
}
|
||||
config.Codec = versionInterfaces.Codec
|
||||
config.Codec = $.latestCodecs|raw$.LegacyCodec(*config.GroupVersion)
|
||||
if config.QPS == 0 {
|
||||
config.QPS = 5
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ limitations under the License.
|
||||
package unversioned
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
api "k8s.io/kubernetes/pkg/api"
|
||||
registered "k8s.io/kubernetes/pkg/apimachinery/registered"
|
||||
unversioned "k8s.io/kubernetes/pkg/client/unversioned"
|
||||
)
|
||||
@ -79,12 +79,7 @@ func setConfigDefaults(config *unversioned.Config) error {
|
||||
config.GroupVersion = ©GroupVersion
|
||||
//}
|
||||
|
||||
versionInterfaces, err := g.InterfacesFor(*config.GroupVersion)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Testgroup API version '%s' is not recognized (valid values: %s)",
|
||||
config.GroupVersion, g.GroupVersions)
|
||||
}
|
||||
config.Codec = versionInterfaces.Codec
|
||||
config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion)
|
||||
if config.QPS == 0 {
|
||||
config.QPS = 5
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ func init() {
|
||||
return
|
||||
}
|
||||
testapi.Groups[testgroup.SchemeGroupVersion.Group] = testapi.NewTestGroup(
|
||||
unversioned.GroupVersion{Group: testgroup.SchemeGroupVersion.Group, Version: registered.GroupOrDie(testgroup.SchemeGroupVersion.Group).GroupVersion.Version},
|
||||
registered.GroupOrDie(testgroup.SchemeGroupVersion.Group).GroupVersion,
|
||||
testgroup.SchemeGroupVersion)
|
||||
testHelper = testapi.Groups[testgroup.SchemeGroupVersion.Group]
|
||||
}
|
||||
|
@ -128,7 +128,7 @@ type objects struct {
|
||||
types map[string][]runtime.Object
|
||||
last map[string]int
|
||||
scheme ObjectScheme
|
||||
decoder runtime.ObjectDecoder
|
||||
decoder runtime.Decoder
|
||||
}
|
||||
|
||||
var _ ObjectRetriever = &objects{}
|
||||
@ -143,7 +143,7 @@ var _ ObjectRetriever = &objects{}
|
||||
// as a runtime.Object if Status == Success). If multiple PodLists are provided, they
|
||||
// will be returned in order by the Kind call, and the last PodList will be reused for
|
||||
// subsequent calls.
|
||||
func NewObjects(scheme ObjectScheme, decoder runtime.ObjectDecoder) ObjectRetriever {
|
||||
func NewObjects(scheme ObjectScheme, decoder runtime.Decoder) ObjectRetriever {
|
||||
return objects{
|
||||
types: make(map[string][]runtime.Object),
|
||||
last: make(map[string]int),
|
||||
|
@ -30,7 +30,7 @@ import (
|
||||
|
||||
// Clientset returns a clientset that will respond with the provided objects
|
||||
func NewSimpleClientset(objects ...runtime.Object) *Clientset {
|
||||
o := core.NewObjects(api.Scheme, api.Scheme)
|
||||
o := core.NewObjects(api.Scheme, api.Codecs.UniversalDecoder())
|
||||
for _, obj := range objects {
|
||||
if err := o.Add(obj); err != nil {
|
||||
panic(err)
|
||||
|
@ -18,6 +18,7 @@ package unversioned
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
registered "k8s.io/kubernetes/pkg/apimachinery/registered"
|
||||
unversioned "k8s.io/kubernetes/pkg/client/unversioned"
|
||||
)
|
||||
@ -109,12 +110,7 @@ func setConfigDefaults(config *unversioned.Config) error {
|
||||
config.GroupVersion = ©GroupVersion
|
||||
//}
|
||||
|
||||
versionInterfaces, err := g.InterfacesFor(*config.GroupVersion)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Extensions API version '%s' is not recognized (valid values: %s)",
|
||||
config.GroupVersion, g.GroupVersions)
|
||||
}
|
||||
config.Codec = versionInterfaces.Codec
|
||||
config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion)
|
||||
if config.QPS == 0 {
|
||||
config.QPS = 5
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ package unversioned
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
registered "k8s.io/kubernetes/pkg/apimachinery/registered"
|
||||
unversioned "k8s.io/kubernetes/pkg/client/unversioned"
|
||||
)
|
||||
@ -149,12 +150,7 @@ func setConfigDefaults(config *unversioned.Config) error {
|
||||
config.GroupVersion = ©GroupVersion
|
||||
//}
|
||||
|
||||
versionInterfaces, err := g.InterfacesFor(*config.GroupVersion)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Legacy API version '%s' is not recognized (valid values: %s)",
|
||||
config.GroupVersion, g.GroupVersions)
|
||||
}
|
||||
config.Codec = versionInterfaces.Codec
|
||||
config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion)
|
||||
if config.QPS == 0 {
|
||||
config.QPS = 5
|
||||
}
|
||||
|
@ -30,6 +30,8 @@ import (
|
||||
"k8s.io/kubernetes/pkg/version"
|
||||
)
|
||||
|
||||
const nameRequiredError = "resource name may not be empty"
|
||||
|
||||
func TestGetServerVersion(t *testing.T) {
|
||||
expect := version.Info{
|
||||
Major: "foo",
|
||||
@ -75,7 +77,7 @@ func TestGetServerGroupsWithV1Server(t *testing.T) {
|
||||
}
|
||||
output, err := json.Marshal(obj)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected encoding error: %v", err)
|
||||
t.Fatalf("unexpected encoding error: %v", err)
|
||||
return
|
||||
}
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
@ -88,7 +90,7 @@ func TestGetServerGroupsWithV1Server(t *testing.T) {
|
||||
// ServerGroups should not return an error even if server returns error at /api and /apis
|
||||
apiGroupList, err := client.Discovery().ServerGroups()
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
groupVersions := ExtractGroupVersions(apiGroupList)
|
||||
if !reflect.DeepEqual(groupVersions, []string{"v1"}) {
|
||||
|
@ -27,6 +27,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/api/errors"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/version"
|
||||
)
|
||||
|
||||
@ -209,8 +210,7 @@ func (d *DiscoveryClient) SwaggerSchema(version unversioned.GroupVersion) (*swag
|
||||
func setDiscoveryDefaults(config *Config) error {
|
||||
config.APIPath = ""
|
||||
config.GroupVersion = nil
|
||||
// Discovery client deals with unversioned objects, so we use api.Codec.
|
||||
config.Codec = api.Codec
|
||||
config.Codec = runtime.NoopEncoder{api.Codecs.UniversalDecoder()}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -17,8 +17,7 @@ limitations under the License.
|
||||
package unversioned
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||
)
|
||||
@ -121,12 +120,7 @@ func setExtensionsDefaults(config *Config) error {
|
||||
config.GroupVersion = ©GroupVersion
|
||||
//}
|
||||
|
||||
versionInterfaces, err := g.InterfacesFor(*config.GroupVersion)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Extensions API group/version '%v' is not recognized (valid values: %v)",
|
||||
config.GroupVersion, registered.GroupOrDie(extensions.GroupName).GroupVersions)
|
||||
}
|
||||
config.Codec = versionInterfaces.Codec
|
||||
config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion)
|
||||
if config.QPS == 0 {
|
||||
config.QPS = 5
|
||||
}
|
||||
|
@ -378,12 +378,8 @@ func SetKubernetesDefaults(config *Config) error {
|
||||
// TODO: Unconditionally set the config.Version, until we fix the config.
|
||||
copyGroupVersion := g.GroupVersion
|
||||
config.GroupVersion = ©GroupVersion
|
||||
versionInterfaces, err := g.InterfacesFor(*config.GroupVersion)
|
||||
if err != nil {
|
||||
return fmt.Errorf("API version '%v' is not recognized (valid values: %v)", *config.GroupVersion, registered.GroupOrDie(api.GroupName).GroupVersions)
|
||||
}
|
||||
if config.Codec == nil {
|
||||
config.Codec = versionInterfaces.Codec
|
||||
config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion)
|
||||
}
|
||||
if config.QPS == 0.0 {
|
||||
config.QPS = 5.0
|
||||
|
@ -56,7 +56,7 @@ func TestNegotiateVersion(t *testing.T) {
|
||||
name: "server supports client default",
|
||||
version: &uapi.GroupVersion{Version: "version1"},
|
||||
config: &unversioned.Config{},
|
||||
serverVersions: []string{"/version1", testapi.Default.GroupVersion().String()},
|
||||
serverVersions: []string{"version1", testapi.Default.GroupVersion().String()},
|
||||
clientVersions: []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
|
||||
expectedVersion: &uapi.GroupVersion{Version: "version1"},
|
||||
},
|
||||
@ -64,28 +64,28 @@ func TestNegotiateVersion(t *testing.T) {
|
||||
name: "server falls back to client supported",
|
||||
version: testapi.Default.GroupVersion(),
|
||||
config: &unversioned.Config{},
|
||||
serverVersions: []string{"/version1"},
|
||||
serverVersions: []string{"version1"},
|
||||
clientVersions: []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
|
||||
expectedVersion: &uapi.GroupVersion{Version: "version1"},
|
||||
},
|
||||
{
|
||||
name: "explicit version supported",
|
||||
config: &unversioned.Config{GroupVersion: testapi.Default.GroupVersion()},
|
||||
serverVersions: []string{"/version1", testapi.Default.GroupVersion().String()},
|
||||
serverVersions: []string{"/ersion1", testapi.Default.GroupVersion().String()},
|
||||
clientVersions: []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
|
||||
expectedVersion: testapi.Default.GroupVersion(),
|
||||
},
|
||||
{
|
||||
name: "explicit version not supported",
|
||||
config: &unversioned.Config{GroupVersion: testapi.Default.GroupVersion()},
|
||||
serverVersions: []string{"/version1"},
|
||||
serverVersions: []string{"version1"},
|
||||
clientVersions: []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
|
||||
expectErr: func(err error) bool { return strings.Contains(err.Error(), `server does not support API version "v1"`) },
|
||||
},
|
||||
{
|
||||
name: "connection refused error",
|
||||
config: &unversioned.Config{GroupVersion: testapi.Default.GroupVersion()},
|
||||
serverVersions: []string{"/version1"},
|
||||
serverVersions: []string{"version1"},
|
||||
clientVersions: []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
|
||||
sendErr: errors.New("connection refused"),
|
||||
expectErr: func(err error) bool { return strings.Contains(err.Error(), "connection refused") },
|
||||
|
@ -222,7 +222,7 @@ func TestSetsCodec(t *testing.T) {
|
||||
if e, a := expected.Prefix, client.RESTClient.versionedAPIPath; e != a {
|
||||
t.Errorf("expected %#v, got %#v", e, a)
|
||||
}
|
||||
if e, a := expected.Codec, client.RESTClient.Codec; e != a {
|
||||
if e, a := expected.Codec, client.RESTClient.Codec; !reflect.DeepEqual(e, a) {
|
||||
t.Errorf("expected %#v, got %#v", e, a)
|
||||
}
|
||||
}
|
||||
|
@ -452,7 +452,7 @@ func (r *Request) VersionedParams(obj runtime.Object, convertor runtime.ObjectCo
|
||||
continue
|
||||
}
|
||||
if k == unversioned.FieldSelectorQueryParam(r.groupVersion.String()) {
|
||||
if value == "" {
|
||||
if len(value) == 0 {
|
||||
// Don't set an empty selector for backward compatibility.
|
||||
// Since there is no way to get the difference between empty
|
||||
// and unspecified string, we don't set it to avoid having
|
||||
@ -717,7 +717,7 @@ func (r *Request) Stream() (io.ReadCloser, error) {
|
||||
return nil, fmt.Errorf("%v while accessing %v", resp.Status, url)
|
||||
}
|
||||
|
||||
if runtimeObject, err := r.codec.Decode(bodyBytes); err == nil {
|
||||
if runtimeObject, err := runtime.Decode(r.codec, bodyBytes); err == nil {
|
||||
statusError := errors.FromObject(runtimeObject)
|
||||
|
||||
if _, ok := statusError.(errors.APIStatus); ok {
|
||||
@ -846,8 +846,10 @@ func (r *Request) transformResponse(resp *http.Response, req *http.Request) Resu
|
||||
|
||||
// Did the server give us a status response?
|
||||
isStatusResponse := false
|
||||
var status unversioned.Status
|
||||
if err := r.codec.DecodeInto(body, &status); err == nil && status.Status != "" {
|
||||
var status *unversioned.Status
|
||||
result, err := runtime.Decode(r.codec, body)
|
||||
if out, ok := result.(*unversioned.Status); err == nil && ok && len(out.Status) > 0 {
|
||||
status = out
|
||||
isStatusResponse = true
|
||||
}
|
||||
|
||||
@ -858,14 +860,14 @@ func (r *Request) transformResponse(resp *http.Response, req *http.Request) Resu
|
||||
if !isStatusResponse {
|
||||
return Result{err: r.transformUnstructuredResponseError(resp, req, body)}
|
||||
}
|
||||
return Result{err: errors.FromObject(&status)}
|
||||
return Result{err: errors.FromObject(status)}
|
||||
}
|
||||
|
||||
// If the server gave us a status back, look at what it was.
|
||||
success := resp.StatusCode >= http.StatusOK && resp.StatusCode <= http.StatusPartialContent
|
||||
if isStatusResponse && (status.Status != unversioned.StatusSuccess && !success) {
|
||||
// "Failed" requests are clearly just an error and it makes sense to return them as such.
|
||||
return Result{err: errors.FromObject(&status)}
|
||||
return Result{err: errors.FromObject(status)}
|
||||
}
|
||||
|
||||
return Result{
|
||||
@ -965,7 +967,8 @@ func (r Result) Get() (runtime.Object, error) {
|
||||
if r.err != nil {
|
||||
return nil, r.err
|
||||
}
|
||||
return r.codec.Decode(r.body)
|
||||
obj, err := runtime.Decode(r.codec, r.body)
|
||||
return obj, err
|
||||
}
|
||||
|
||||
// StatusCode returns the HTTP status code of the request. (Only valid if no
|
||||
@ -975,12 +978,12 @@ func (r Result) StatusCode(statusCode *int) Result {
|
||||
return r
|
||||
}
|
||||
|
||||
// Into stores the result into obj, if possible.
|
||||
// Into stores the result into obj, if possible. If obj is nil it is ignored.
|
||||
func (r Result) Into(obj runtime.Object) error {
|
||||
if r.err != nil {
|
||||
return r.err
|
||||
}
|
||||
return r.codec.DecodeInto(r.body, obj)
|
||||
return runtime.DecodeInto(r.codec, r.body, obj)
|
||||
}
|
||||
|
||||
// WasCreated updates the provided bool pointer to whether the server returned
|
||||
|
@ -698,7 +698,7 @@ func TestDoRequestNewWay(t *testing.T) {
|
||||
Port: 12345,
|
||||
TargetPort: intstr.FromInt(12345),
|
||||
}}}}
|
||||
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
||||
expectedBody, _ := runtime.Encode(testapi.Default.Codec(), expectedObj)
|
||||
fakeHandler := utiltesting.FakeHandler{
|
||||
StatusCode: 200,
|
||||
ResponseBody: string(expectedBody),
|
||||
@ -861,13 +861,13 @@ func BenchmarkCheckRetryClosesBody(b *testing.B) {
|
||||
|
||||
func TestDoRequestNewWayReader(t *testing.T) {
|
||||
reqObj := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo"}}
|
||||
reqBodyExpected, _ := testapi.Default.Codec().Encode(reqObj)
|
||||
reqBodyExpected, _ := runtime.Encode(testapi.Default.Codec(), reqObj)
|
||||
expectedObj := &api.Service{Spec: api.ServiceSpec{Ports: []api.ServicePort{{
|
||||
Protocol: "TCP",
|
||||
Port: 12345,
|
||||
TargetPort: intstr.FromInt(12345),
|
||||
}}}}
|
||||
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
||||
expectedBody, _ := runtime.Encode(testapi.Default.Codec(), expectedObj)
|
||||
fakeHandler := utiltesting.FakeHandler{
|
||||
StatusCode: 200,
|
||||
ResponseBody: string(expectedBody),
|
||||
@ -902,13 +902,13 @@ func TestDoRequestNewWayReader(t *testing.T) {
|
||||
|
||||
func TestDoRequestNewWayObj(t *testing.T) {
|
||||
reqObj := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo"}}
|
||||
reqBodyExpected, _ := testapi.Default.Codec().Encode(reqObj)
|
||||
reqBodyExpected, _ := runtime.Encode(testapi.Default.Codec(), reqObj)
|
||||
expectedObj := &api.Service{Spec: api.ServiceSpec{Ports: []api.ServicePort{{
|
||||
Protocol: "TCP",
|
||||
Port: 12345,
|
||||
TargetPort: intstr.FromInt(12345),
|
||||
}}}}
|
||||
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
||||
expectedBody, _ := runtime.Encode(testapi.Default.Codec(), expectedObj)
|
||||
fakeHandler := utiltesting.FakeHandler{
|
||||
StatusCode: 200,
|
||||
ResponseBody: string(expectedBody),
|
||||
@ -943,7 +943,7 @@ func TestDoRequestNewWayObj(t *testing.T) {
|
||||
|
||||
func TestDoRequestNewWayFile(t *testing.T) {
|
||||
reqObj := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo"}}
|
||||
reqBodyExpected, err := testapi.Default.Codec().Encode(reqObj)
|
||||
reqBodyExpected, err := runtime.Encode(testapi.Default.Codec(), reqObj)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
}
|
||||
@ -964,7 +964,7 @@ func TestDoRequestNewWayFile(t *testing.T) {
|
||||
Port: 12345,
|
||||
TargetPort: intstr.FromInt(12345),
|
||||
}}}}
|
||||
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
||||
expectedBody, _ := runtime.Encode(testapi.Default.Codec(), expectedObj)
|
||||
fakeHandler := utiltesting.FakeHandler{
|
||||
StatusCode: 200,
|
||||
ResponseBody: string(expectedBody),
|
||||
@ -1000,7 +1000,7 @@ func TestDoRequestNewWayFile(t *testing.T) {
|
||||
|
||||
func TestWasCreated(t *testing.T) {
|
||||
reqObj := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo"}}
|
||||
reqBodyExpected, err := testapi.Default.Codec().Encode(reqObj)
|
||||
reqBodyExpected, err := runtime.Encode(testapi.Default.Codec(), reqObj)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
}
|
||||
@ -1010,7 +1010,7 @@ func TestWasCreated(t *testing.T) {
|
||||
Port: 12345,
|
||||
TargetPort: intstr.FromInt(12345),
|
||||
}}}}
|
||||
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
||||
expectedBody, _ := runtime.Encode(testapi.Default.Codec(), expectedObj)
|
||||
fakeHandler := utiltesting.FakeHandler{
|
||||
StatusCode: 201,
|
||||
ResponseBody: string(expectedBody),
|
||||
@ -1138,7 +1138,7 @@ func TestBody(t *testing.T) {
|
||||
const data = "test payload"
|
||||
|
||||
obj := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo"}}
|
||||
bodyExpected, _ := testapi.Default.Codec().Encode(obj)
|
||||
bodyExpected, _ := runtime.Encode(testapi.Default.Codec(), obj)
|
||||
|
||||
f, err := ioutil.TempFile("", "test_body")
|
||||
if err != nil {
|
||||
|
@ -28,13 +28,14 @@ import (
|
||||
"k8s.io/kubernetes/pkg/api/errors"
|
||||
"k8s.io/kubernetes/pkg/api/testapi"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/util"
|
||||
utiltesting "k8s.io/kubernetes/pkg/util/testing"
|
||||
)
|
||||
|
||||
func TestDoRequestSuccess(t *testing.T) {
|
||||
status := &unversioned.Status{Status: unversioned.StatusSuccess}
|
||||
expectedBody, _ := testapi.Default.Codec().Encode(status)
|
||||
expectedBody, _ := runtime.Encode(testapi.Default.Codec(), status)
|
||||
fakeHandler := utiltesting.FakeHandler{
|
||||
StatusCode: 200,
|
||||
ResponseBody: string(expectedBody),
|
||||
@ -60,7 +61,7 @@ func TestDoRequestSuccess(t *testing.T) {
|
||||
if fakeHandler.RequestReceived.Header["Authorization"] == nil {
|
||||
t.Errorf("Request is missing authorization header: %#v", fakeHandler.RequestReceived)
|
||||
}
|
||||
statusOut, err := testapi.Default.Codec().Decode(body)
|
||||
statusOut, err := runtime.Decode(testapi.Default.Codec(), body)
|
||||
if err != nil {
|
||||
t.Errorf("Unexpected error %#v", err)
|
||||
}
|
||||
@ -78,7 +79,7 @@ func TestDoRequestFailed(t *testing.T) {
|
||||
Message: " \"\" not found",
|
||||
Details: &unversioned.StatusDetails{},
|
||||
}
|
||||
expectedBody, _ := testapi.Default.Codec().Encode(status)
|
||||
expectedBody, _ := runtime.Encode(testapi.Default.Codec(), status)
|
||||
fakeHandler := utiltesting.FakeHandler{
|
||||
StatusCode: 404,
|
||||
ResponseBody: string(expectedBody),
|
||||
@ -111,7 +112,7 @@ func TestDoRequestFailed(t *testing.T) {
|
||||
|
||||
func TestDoRequestCreated(t *testing.T) {
|
||||
status := &unversioned.Status{Status: unversioned.StatusSuccess}
|
||||
expectedBody, _ := testapi.Default.Codec().Encode(status)
|
||||
expectedBody, _ := runtime.Encode(testapi.Default.Codec(), status)
|
||||
fakeHandler := utiltesting.FakeHandler{
|
||||
StatusCode: 201,
|
||||
ResponseBody: string(expectedBody),
|
||||
@ -138,7 +139,7 @@ func TestDoRequestCreated(t *testing.T) {
|
||||
if !created {
|
||||
t.Errorf("Expected object to be created")
|
||||
}
|
||||
statusOut, err := testapi.Default.Codec().Decode(body)
|
||||
statusOut, err := runtime.Decode(testapi.Default.Codec(), body)
|
||||
if err != nil {
|
||||
t.Errorf("Unexpected error %#v", err)
|
||||
}
|
||||
|
@ -128,7 +128,7 @@ type objects struct {
|
||||
types map[string][]runtime.Object
|
||||
last map[string]int
|
||||
scheme ObjectScheme
|
||||
decoder runtime.ObjectDecoder
|
||||
decoder runtime.Decoder
|
||||
}
|
||||
|
||||
var _ ObjectRetriever = &objects{}
|
||||
@ -143,7 +143,7 @@ var _ ObjectRetriever = &objects{}
|
||||
// as a runtime.Object if Status == Success). If multiple PodLists are provided, they
|
||||
// will be returned in order by the Kind call, and the last PodList will be reused for
|
||||
// subsequent calls.
|
||||
func NewObjects(scheme ObjectScheme, decoder runtime.ObjectDecoder) ObjectRetriever {
|
||||
func NewObjects(scheme ObjectScheme, decoder runtime.Decoder) ObjectRetriever {
|
||||
return objects{
|
||||
types: make(map[string][]runtime.Object),
|
||||
last: make(map[string]int),
|
||||
@ -153,10 +153,7 @@ func NewObjects(scheme ObjectScheme, decoder runtime.ObjectDecoder) ObjectRetrie
|
||||
}
|
||||
|
||||
func (o objects) Kind(kind unversioned.GroupVersionKind, name string) (runtime.Object, error) {
|
||||
// TODO our test clients deal in internal versions. We need to plumb that knowledge down here
|
||||
// we might do this via an extra function to the scheme to allow getting internal group versions
|
||||
// I'm punting for now
|
||||
kind.Version = ""
|
||||
kind.Version = runtime.APIVersionInternal
|
||||
|
||||
empty, _ := o.scheme.New(kind)
|
||||
nilValue := reflect.Zero(reflect.TypeOf(empty)).Interface().(runtime.Object)
|
||||
|
@ -213,7 +213,7 @@ func body(t *testing.T, obj runtime.Object, raw *string) *string {
|
||||
if !found {
|
||||
t.Errorf("Group %s is not registered in testapi", fqKind.GroupVersion().Group)
|
||||
}
|
||||
bs, err = g.Codec().Encode(obj)
|
||||
bs, err = runtime.Encode(g.Codec(), obj)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected encoding error: %v", err)
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ import (
|
||||
|
||||
// NewSimpleFake returns a client that will respond with the provided objects
|
||||
func NewSimpleFake(objects ...runtime.Object) *Fake {
|
||||
o := NewObjects(api.Scheme, api.Scheme)
|
||||
o := NewObjects(api.Scheme, api.Codecs.UniversalDecoder())
|
||||
for _, obj := range objects {
|
||||
if err := o.Add(obj); err != nil {
|
||||
panic(err)
|
||||
|
@ -26,8 +26,8 @@ import (
|
||||
)
|
||||
|
||||
func TestNewClient(t *testing.T) {
|
||||
o := NewObjects(api.Scheme, api.Scheme)
|
||||
if err := AddObjectsFromPath("../../../../examples/guestbook/frontend-service.yaml", o, api.Scheme); err != nil {
|
||||
o := NewObjects(api.Scheme, api.Codecs.UniversalDecoder())
|
||||
if err := AddObjectsFromPath("../../../../examples/guestbook/frontend-service.yaml", o, api.Codecs.UniversalDecoder()); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
client := &Fake{}
|
||||
@ -52,7 +52,7 @@ func TestNewClient(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestErrors(t *testing.T) {
|
||||
o := NewObjects(api.Scheme, api.Scheme)
|
||||
o := NewObjects(api.Scheme, api.Codecs.UniversalDecoder())
|
||||
o.Add(&api.List{
|
||||
Items: []runtime.Object{
|
||||
// This first call to List will return this error
|
||||
|
Loading…
Reference in New Issue
Block a user