mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-17 15:13:08 +00:00
RESTMapper should take into account multiple versions
When a CLI command `kubectl get rc --api-version=v1beta3` is called, the API resource name should match v1beta3, not whatever the default RESTMapper version is. This allows the correct resource name to be returned ("replicationcontrollers", instead of "replicationControllers").
This commit is contained in:
@@ -44,7 +44,7 @@ func DataToObjects(m meta.RESTMapper, t runtime.ObjectTyper, data []byte) (resul
|
||||
continue
|
||||
}
|
||||
|
||||
mapping, err := m.RESTMapping(version, kind)
|
||||
mapping, err := m.RESTMapping(kind, version)
|
||||
if err != nil {
|
||||
errors = append(errors, fmt.Errorf("item[%d] mapping: %v", i, err))
|
||||
continue
|
||||
|
@@ -37,6 +37,7 @@ func TestDescribeUnknownSchemaObject(t *testing.T) {
|
||||
buf := bytes.NewBuffer([]byte{})
|
||||
|
||||
cmd := f.NewCmdDescribe(buf)
|
||||
cmd.Flags().String("api-version", "default", "")
|
||||
cmd.Flags().String("namespace", "test", "")
|
||||
cmd.Run(cmd, []string{"type", "foo"})
|
||||
|
||||
|
@@ -37,6 +37,7 @@ func TestGetUnknownSchemaObject(t *testing.T) {
|
||||
buf := bytes.NewBuffer([]byte{})
|
||||
|
||||
cmd := f.NewCmdGet(buf)
|
||||
cmd.Flags().String("api-version", "default", "")
|
||||
cmd.Flags().String("namespace", "test", "")
|
||||
cmd.Run(cmd, []string{"type", "foo"})
|
||||
|
||||
|
@@ -201,13 +201,13 @@ func ResourceFromArgsOrFile(cmd *cobra.Command, args []string, filename string,
|
||||
usageError(cmd, "Must specify filename or command line params")
|
||||
}
|
||||
|
||||
version, kind, err := mapper.VersionAndKindForResource(resource)
|
||||
defaultVersion, kind, err := mapper.VersionAndKindForResource(resource)
|
||||
if err != nil {
|
||||
// The error returned by mapper is "no resource defined", which is a usage error
|
||||
usageError(cmd, err.Error())
|
||||
}
|
||||
|
||||
mapping, err = mapper.RESTMapping(version, kind)
|
||||
version := GetFlagString(cmd, "api-version")
|
||||
mapping, err = mapper.RESTMapping(kind, version, defaultVersion)
|
||||
checkErr(err)
|
||||
return
|
||||
}
|
||||
@@ -242,7 +242,7 @@ func ResourceFromArgs(cmd *cobra.Command, args []string, mapper meta.RESTMapper)
|
||||
version, kind, err := mapper.VersionAndKindForResource(resource)
|
||||
checkErr(err)
|
||||
|
||||
mapping, err = mapper.RESTMapping(version, kind)
|
||||
mapping, err = mapper.RESTMapping(kind, version)
|
||||
checkErr(err)
|
||||
return
|
||||
}
|
||||
@@ -268,10 +268,11 @@ func ResourceOrTypeFromArgs(cmd *cobra.Command, args []string, mapper meta.RESTM
|
||||
}
|
||||
}
|
||||
|
||||
version, kind, err := mapper.VersionAndKindForResource(resource)
|
||||
defaultVersion, kind, err := mapper.VersionAndKindForResource(resource)
|
||||
checkErr(err)
|
||||
|
||||
mapping, err = mapper.RESTMapping(version, kind)
|
||||
version := GetFlagString(cmd, "api-version")
|
||||
mapping, err = mapper.RESTMapping(kind, version, defaultVersion)
|
||||
checkErr(err)
|
||||
|
||||
return
|
||||
@@ -296,7 +297,7 @@ func ResourceFromFile(filename string, typer runtime.ObjectTyper, mapper meta.RE
|
||||
err = schema.ValidateBytes(data)
|
||||
checkErr(err)
|
||||
|
||||
mapping, err = mapper.RESTMapping(version, kind)
|
||||
mapping, err = mapper.RESTMapping(kind, version)
|
||||
checkErr(err)
|
||||
|
||||
obj, err := mapping.Codec.Decode(data)
|
||||
|
Reference in New Issue
Block a user