mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 12:43:23 +00:00
Merge pull request #19300 from caesarxuchao/move-SwaggerSchema-to-disocovery
Auto commit by PR queue bot
This commit is contained in:
commit
36dc6eab34
@ -17,17 +17,9 @@ limitations under the License.
|
|||||||
package unversioned
|
package unversioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"net"
|
"net"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/emicklei/go-restful/swagger"
|
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
|
||||||
"k8s.io/kubernetes/pkg/version"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Interface holds the methods for clients of Kubernetes,
|
// Interface holds the methods for clients of Kubernetes,
|
||||||
@ -38,7 +30,6 @@ type Interface interface {
|
|||||||
ReplicationControllersNamespacer
|
ReplicationControllersNamespacer
|
||||||
ServicesNamespacer
|
ServicesNamespacer
|
||||||
EndpointsNamespacer
|
EndpointsNamespacer
|
||||||
VersionInterface
|
|
||||||
NodesInterface
|
NodesInterface
|
||||||
EventNamespacer
|
EventNamespacer
|
||||||
LimitRangesNamespacer
|
LimitRangesNamespacer
|
||||||
@ -49,7 +40,6 @@ type Interface interface {
|
|||||||
PersistentVolumesInterface
|
PersistentVolumesInterface
|
||||||
PersistentVolumeClaimsNamespacer
|
PersistentVolumeClaimsNamespacer
|
||||||
ComponentStatusesInterface
|
ComponentStatusesInterface
|
||||||
SwaggerSchemaInterface
|
|
||||||
Extensions() ExtensionsInterface
|
Extensions() ExtensionsInterface
|
||||||
Discovery() DiscoveryInterface
|
Discovery() DiscoveryInterface
|
||||||
}
|
}
|
||||||
@ -113,73 +103,13 @@ func (c *Client) ComponentStatuses() ComponentStatusInterface {
|
|||||||
return newComponentStatuses(c)
|
return newComponentStatuses(c)
|
||||||
}
|
}
|
||||||
|
|
||||||
// VersionInterface has a method to retrieve the server version.
|
|
||||||
type VersionInterface interface {
|
|
||||||
ServerVersion() (*version.Info, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Client is the implementation of a Kubernetes client.
|
// Client is the implementation of a Kubernetes client.
|
||||||
type Client struct {
|
type Client struct {
|
||||||
*RESTClient
|
*RESTClient
|
||||||
*ExtensionsClient
|
*ExtensionsClient
|
||||||
// TODO: remove this when we re-structure pkg/client.
|
|
||||||
*DiscoveryClient
|
*DiscoveryClient
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServerVersion retrieves and parses the server's version.
|
|
||||||
func (c *Client) ServerVersion() (*version.Info, error) {
|
|
||||||
body, err := c.Get().AbsPath("/version").Do().Raw()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
var info version.Info
|
|
||||||
err = json.Unmarshal(body, &info)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("got '%s': %v", string(body), err)
|
|
||||||
}
|
|
||||||
return &info, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// SwaggerSchemaInterface has a method to retrieve the swagger schema. Used in
|
|
||||||
// client.Interface
|
|
||||||
type SwaggerSchemaInterface interface {
|
|
||||||
SwaggerSchema(version unversioned.GroupVersion) (*swagger.ApiDeclaration, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SwaggerSchema retrieves and parses the swagger API schema the server supports.
|
|
||||||
func (c *Client) SwaggerSchema(version unversioned.GroupVersion) (*swagger.ApiDeclaration, error) {
|
|
||||||
if version.IsEmpty() {
|
|
||||||
return nil, fmt.Errorf("groupVersion cannot be empty")
|
|
||||||
}
|
|
||||||
|
|
||||||
groupList, err := c.Discovery().ServerGroups()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
groupVersions := ExtractGroupVersions(groupList)
|
|
||||||
// This check also takes care the case that kubectl is newer than the running endpoint
|
|
||||||
if stringDoesntExistIn(version.String(), groupVersions) {
|
|
||||||
return nil, fmt.Errorf("API version: %v is not supported by the server. Use one of: %v", version, groupVersions)
|
|
||||||
}
|
|
||||||
var path string
|
|
||||||
if version == v1.SchemeGroupVersion {
|
|
||||||
path = "/swaggerapi/api/" + version.Version
|
|
||||||
} else {
|
|
||||||
path = "/swaggerapi/apis/" + version.Group + "/" + version.Version
|
|
||||||
}
|
|
||||||
|
|
||||||
body, err := c.Get().AbsPath(path).Do().Raw()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
var schema swagger.ApiDeclaration
|
|
||||||
err = json.Unmarshal(body, &schema)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("got '%s': %v", string(body), err)
|
|
||||||
}
|
|
||||||
return &schema, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func stringDoesntExistIn(str string, slice []string) bool {
|
func stringDoesntExistIn(str string, slice []string) bool {
|
||||||
for _, s := range slice {
|
for _, s := range slice {
|
||||||
if s == str {
|
if s == str {
|
||||||
|
@ -50,7 +50,7 @@ func TestGetServerVersion(t *testing.T) {
|
|||||||
// defer server.Close()
|
// defer server.Close()
|
||||||
client := NewOrDie(&Config{Host: server.URL})
|
client := NewOrDie(&Config{Host: server.URL})
|
||||||
|
|
||||||
got, err := client.ServerVersion()
|
got, err := client.Discovery().ServerVersion()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected encoding error: %v", err)
|
t.Fatalf("unexpected encoding error: %v", err)
|
||||||
}
|
}
|
||||||
@ -278,7 +278,7 @@ func TestGetSwaggerSchema(t *testing.T) {
|
|||||||
// defer server.Close()
|
// defer server.Close()
|
||||||
|
|
||||||
client := NewOrDie(&Config{Host: server.URL})
|
client := NewOrDie(&Config{Host: server.URL})
|
||||||
got, err := client.SwaggerSchema(v1.SchemeGroupVersion)
|
got, err := client.Discovery().SwaggerSchema(v1.SchemeGroupVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected encoding error: %v", err)
|
t.Fatalf("unexpected encoding error: %v", err)
|
||||||
}
|
}
|
||||||
@ -298,7 +298,7 @@ func TestGetSwaggerSchemaFail(t *testing.T) {
|
|||||||
// defer server.Close()
|
// defer server.Close()
|
||||||
|
|
||||||
client := NewOrDie(&Config{Host: server.URL})
|
client := NewOrDie(&Config{Host: server.URL})
|
||||||
got, err := client.SwaggerSchema(unversioned.GroupVersion{Group: "api.group", Version: "v4"})
|
got, err := client.Discovery().SwaggerSchema(unversioned.GroupVersion{Group: "api.group", Version: "v4"})
|
||||||
if got != nil {
|
if got != nil {
|
||||||
t.Fatalf("unexpected response: %v", got)
|
t.Fatalf("unexpected response: %v", got)
|
||||||
}
|
}
|
||||||
|
@ -17,11 +17,17 @@ limitations under the License.
|
|||||||
package unversioned
|
package unversioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
|
"github.com/emicklei/go-restful/swagger"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
|
"k8s.io/kubernetes/pkg/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DiscoveryInterface holds the methods that discover server-supported API groups,
|
// DiscoveryInterface holds the methods that discover server-supported API groups,
|
||||||
@ -29,6 +35,8 @@ import (
|
|||||||
type DiscoveryInterface interface {
|
type DiscoveryInterface interface {
|
||||||
ServerGroupsInterface
|
ServerGroupsInterface
|
||||||
ServerResourcesInterface
|
ServerResourcesInterface
|
||||||
|
ServerVersionInterface
|
||||||
|
SwaggerSchemaInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServerGroupsInterface has methods for obtaining supported groups on the API server
|
// ServerGroupsInterface has methods for obtaining supported groups on the API server
|
||||||
@ -46,6 +54,18 @@ type ServerResourcesInterface interface {
|
|||||||
ServerResources() (map[string]*unversioned.APIResourceList, error)
|
ServerResources() (map[string]*unversioned.APIResourceList, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ServerVersionInterface has a method for retrieving the server's version.
|
||||||
|
type ServerVersionInterface interface {
|
||||||
|
// ServerVersion retrieves and parses the server's version (git version).
|
||||||
|
ServerVersion() (*version.Info, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SwaggerSchemaInterface has a method to retrieve the swagger schema.
|
||||||
|
type SwaggerSchemaInterface interface {
|
||||||
|
// SwaggerSchema retrieves and parses the swagger API schema the server supports.
|
||||||
|
SwaggerSchema(version unversioned.GroupVersion) (*swagger.ApiDeclaration, error)
|
||||||
|
}
|
||||||
|
|
||||||
// DiscoveryClient implements the functions that dicovery server-supported API groups,
|
// DiscoveryClient implements the functions that dicovery server-supported API groups,
|
||||||
// versions and resources.
|
// versions and resources.
|
||||||
type DiscoveryClient struct {
|
type DiscoveryClient struct {
|
||||||
@ -138,6 +158,54 @@ func (d *DiscoveryClient) ServerResources() (map[string]*unversioned.APIResource
|
|||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ServerVersion retrieves and parses the server's version (git version).
|
||||||
|
func (d *DiscoveryClient) ServerVersion() (*version.Info, error) {
|
||||||
|
body, err := d.Get().AbsPath("/version").Do().Raw()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var info version.Info
|
||||||
|
err = json.Unmarshal(body, &info)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("got '%s': %v", string(body), err)
|
||||||
|
}
|
||||||
|
return &info, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SwaggerSchema retrieves and parses the swagger API schema the server supports.
|
||||||
|
func (d *DiscoveryClient) SwaggerSchema(version unversioned.GroupVersion) (*swagger.ApiDeclaration, error) {
|
||||||
|
if version.IsEmpty() {
|
||||||
|
return nil, fmt.Errorf("groupVersion cannot be empty")
|
||||||
|
}
|
||||||
|
|
||||||
|
groupList, err := d.ServerGroups()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
groupVersions := ExtractGroupVersions(groupList)
|
||||||
|
// This check also takes care the case that kubectl is newer than the running endpoint
|
||||||
|
if stringDoesntExistIn(version.String(), groupVersions) {
|
||||||
|
return nil, fmt.Errorf("API version: %v is not supported by the server. Use one of: %v", version, groupVersions)
|
||||||
|
}
|
||||||
|
var path string
|
||||||
|
if version == v1.SchemeGroupVersion {
|
||||||
|
path = "/swaggerapi/api/" + version.Version
|
||||||
|
} else {
|
||||||
|
path = "/swaggerapi/apis/" + version.Group + "/" + version.Version
|
||||||
|
}
|
||||||
|
|
||||||
|
body, err := d.Get().AbsPath(path).Do().Raw()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var schema swagger.ApiDeclaration
|
||||||
|
err = json.Unmarshal(body, &schema)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("got '%s': %v", string(body), err)
|
||||||
|
}
|
||||||
|
return &schema, nil
|
||||||
|
}
|
||||||
|
|
||||||
func setDiscoveryDefaults(config *Config) error {
|
func setDiscoveryDefaults(config *Config) error {
|
||||||
config.Prefix = ""
|
config.Prefix = ""
|
||||||
config.GroupVersion = nil
|
config.GroupVersion = nil
|
||||||
|
@ -17,12 +17,10 @@ limitations under the License.
|
|||||||
package unversioned
|
package unversioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api/latest"
|
"k8s.io/kubernetes/pkg/api/latest"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
"k8s.io/kubernetes/pkg/version"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Interface holds the experimental methods for clients of Kubernetes
|
// Interface holds the experimental methods for clients of Kubernetes
|
||||||
@ -30,7 +28,6 @@ import (
|
|||||||
// Features of Extensions group are not supported and may be changed or removed in
|
// Features of Extensions group are not supported and may be changed or removed in
|
||||||
// incompatible ways at any time.
|
// incompatible ways at any time.
|
||||||
type ExtensionsInterface interface {
|
type ExtensionsInterface interface {
|
||||||
VersionInterface
|
|
||||||
HorizontalPodAutoscalersNamespacer
|
HorizontalPodAutoscalersNamespacer
|
||||||
ScaleNamespacer
|
ScaleNamespacer
|
||||||
DaemonSetsNamespacer
|
DaemonSetsNamespacer
|
||||||
@ -48,20 +45,6 @@ type ExtensionsClient struct {
|
|||||||
*RESTClient
|
*RESTClient
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServerVersion retrieves and parses the server's version.
|
|
||||||
func (c *ExtensionsClient) ServerVersion() (*version.Info, error) {
|
|
||||||
body, err := c.Get().AbsPath("/version").Do().Raw()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
var info version.Info
|
|
||||||
err = json.Unmarshal(body, &info)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("got '%s': %v", string(body), err)
|
|
||||||
}
|
|
||||||
return &info, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *ExtensionsClient) HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerInterface {
|
func (c *ExtensionsClient) HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerInterface {
|
||||||
return newHorizontalPodAutoscalers(c, namespace)
|
return newHorizontalPodAutoscalers(c, namespace)
|
||||||
}
|
}
|
||||||
|
@ -157,7 +157,7 @@ func MatchesServerVersion(client *Client, c *Config) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
clientVersion := version.Get()
|
clientVersion := version.Get()
|
||||||
serverVersion, err := client.ServerVersion()
|
serverVersion, err := client.Discovery().ServerVersion()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("couldn't read version from server: %v\n", err)
|
return fmt.Errorf("couldn't read version from server: %v\n", err)
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,6 @@ import (
|
|||||||
"github.com/emicklei/go-restful/swagger"
|
"github.com/emicklei/go-restful/swagger"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/registered"
|
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
@ -279,29 +278,6 @@ func (c *Fake) Discovery() client.DiscoveryInterface {
|
|||||||
return &FakeDiscovery{c}
|
return &FakeDiscovery{c}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Fake) ServerVersion() (*version.Info, error) {
|
|
||||||
action := ActionImpl{}
|
|
||||||
action.Verb = "get"
|
|
||||||
action.Resource = "version"
|
|
||||||
|
|
||||||
c.Invokes(action, nil)
|
|
||||||
versionInfo := version.Get()
|
|
||||||
return &versionInfo, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Fake) ServerAPIVersions() (*unversioned.APIVersions, error) {
|
|
||||||
action := ActionImpl{}
|
|
||||||
action.Verb = "get"
|
|
||||||
action.Resource = "apiversions"
|
|
||||||
|
|
||||||
c.Invokes(action, nil)
|
|
||||||
gvStrings := []string{}
|
|
||||||
for _, gv := range registered.EnabledVersions() {
|
|
||||||
gvStrings = append(gvStrings, gv.String())
|
|
||||||
}
|
|
||||||
return &unversioned.APIVersions{Versions: gvStrings}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Fake) ComponentStatuses() client.ComponentStatusInterface {
|
func (c *Fake) ComponentStatuses() client.ComponentStatusInterface {
|
||||||
return &FakeComponentStatuses{Fake: c}
|
return &FakeComponentStatuses{Fake: c}
|
||||||
}
|
}
|
||||||
@ -386,3 +362,13 @@ func (c *FakeDiscovery) ServerResources() (map[string]*unversioned.APIResourceLi
|
|||||||
func (c *FakeDiscovery) ServerGroups() (*unversioned.APIGroupList, error) {
|
func (c *FakeDiscovery) ServerGroups() (*unversioned.APIGroupList, error) {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *FakeDiscovery) ServerVersion() (*version.Info, error) {
|
||||||
|
action := ActionImpl{}
|
||||||
|
action.Verb = "get"
|
||||||
|
action.Resource = "version"
|
||||||
|
|
||||||
|
c.Invokes(action, nil)
|
||||||
|
versionInfo := version.Get()
|
||||||
|
return &versionInfo, nil
|
||||||
|
}
|
||||||
|
@ -320,7 +320,7 @@ func NewFactory(optionalClientConfig clientcmd.ClientConfig) *Factory {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return client.SwaggerSchema(version)
|
return client.Discovery().SwaggerSchema(version)
|
||||||
},
|
},
|
||||||
DefaultNamespace: func() (string, bool, error) {
|
DefaultNamespace: func() (string, bool, error) {
|
||||||
return clientConfig.Namespace()
|
return clientConfig.Namespace()
|
||||||
|
@ -26,7 +26,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func GetServerVersion(w io.Writer, kubeClient client.Interface) {
|
func GetServerVersion(w io.Writer, kubeClient client.Interface) {
|
||||||
serverVersion, err := kubeClient.ServerVersion()
|
serverVersion, err := kubeClient.Discovery().ServerVersion()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Couldn't read server version from server: %v\n", err)
|
fmt.Printf("Couldn't read server version from server: %v\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
@ -326,7 +326,7 @@ func testMasterUpgrade(ip, v string, mUp func(v string) error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func checkMasterVersion(c *client.Client, want string) error {
|
func checkMasterVersion(c *client.Client, want string) error {
|
||||||
v, err := c.ServerVersion()
|
v, err := c.Discovery().ServerVersion()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("checkMasterVersion() couldn't get the master version: %v", err)
|
return fmt.Errorf("checkMasterVersion() couldn't get the master version: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -972,7 +972,7 @@ func (r podResponseChecker) checkAllResponses() (done bool, err error) {
|
|||||||
// version.
|
// version.
|
||||||
//
|
//
|
||||||
// TODO(18726): This should be incorporated into client.VersionInterface.
|
// TODO(18726): This should be incorporated into client.VersionInterface.
|
||||||
func serverVersionGTE(v semver.Version, c client.VersionInterface) (bool, error) {
|
func serverVersionGTE(v semver.Version, c client.ServerVersionInterface) (bool, error) {
|
||||||
serverVersion, err := c.ServerVersion()
|
serverVersion, err := c.ServerVersion()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("Unable to get server version: %v", err)
|
return false, fmt.Errorf("Unable to get server version: %v", err)
|
||||||
|
@ -220,7 +220,7 @@ func contactOthers(state *State) {
|
|||||||
log.Fatalf("Unable to create client; error: %v\n", err)
|
log.Fatalf("Unable to create client; error: %v\n", err)
|
||||||
}
|
}
|
||||||
// Double check that that worked by getting the server version.
|
// Double check that that worked by getting the server version.
|
||||||
if v, err := client.ServerVersion(); err != nil {
|
if v, err := client.Discovery().ServerVersion(); err != nil {
|
||||||
log.Fatalf("Unable to get server version: %v\n", err)
|
log.Fatalf("Unable to get server version: %v\n", err)
|
||||||
} else {
|
} else {
|
||||||
log.Printf("Server version: %#v\n", v)
|
log.Printf("Server version: %#v\n", v)
|
||||||
|
@ -45,7 +45,7 @@ func TestClient(t *testing.T) {
|
|||||||
framework.DeleteAllEtcdKeys()
|
framework.DeleteAllEtcdKeys()
|
||||||
client := client.NewOrDie(&client.Config{Host: s.URL, GroupVersion: testapi.Default.GroupVersion()})
|
client := client.NewOrDie(&client.Config{Host: s.URL, GroupVersion: testapi.Default.GroupVersion()})
|
||||||
|
|
||||||
info, err := client.ServerVersion()
|
info, err := client.Discovery().ServerVersion()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user