diff --git a/pkg/client/client.go b/pkg/client/client.go index 7746cbcc4e7..9b91ab94e36 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -41,6 +41,7 @@ type Interface interface { ReplicationControllerInterface ServiceInterface VersionInterface + MinionInterface } // PodInterface has methods to work with Pod resources @@ -78,6 +79,10 @@ type VersionInterface interface { ServerVersion() (*version.Info, error) } +type MinionInterface interface { + ListMinions() (api.MinionList, error) +} + // Client is the actual implementation of a Kubernetes client. type Client struct { *RESTClient @@ -369,3 +374,9 @@ func (c *Client) ServerVersion() (*version.Info, error) { } return &info, nil } + +// Lists all the minions in the cluster. +func (c *Client) ListMinions() (minionList api.MinionList, err error) { + err = c.Get().Path("minions").Do().Into(&minionList) + return +} diff --git a/pkg/client/client_test.go b/pkg/client/client_test.go index 269d0c02371..b00391dae7d 100644 --- a/pkg/client/client_test.go +++ b/pkg/client/client_test.go @@ -542,3 +542,12 @@ func TestGetServerVersion(t *testing.T) { t.Errorf("expected %v, got %v", e, a) } } + +func TestListMinions(t *testing.T) { + c := &testClient{ + Request: testRequest{Method: "GET", Path: "/minions"}, + Response: Response{StatusCode: 200, Body: &api.MinionList{JSONBase: api.JSONBase{ID: "minion-1"}}}, + } + response, err := c.Setup().ListMinions() + c.Validate(t, &response, err) +} diff --git a/pkg/client/fake.go b/pkg/client/fake.go index dbe49d26ac8..7ee2df2a6f1 100644 --- a/pkg/client/fake.go +++ b/pkg/client/fake.go @@ -128,3 +128,8 @@ func (c *Fake) ServerVersion() (*version.Info, error) { versionInfo := version.Get() return &versionInfo, nil } + +func (c *Fake) ListMinions() (api.MinionList, error) { + c.Actions = append(c.Actions, FakeAction{Action: "list-minions", Value: nil}) + return api.MinionList{}, nil +}