From 33a5c6540cb0932fd9da05687cc0ed52bdb36c87 Mon Sep 17 00:00:00 2001 From: Paul Dix Date: Fri, 13 Jun 2014 16:20:07 -0400 Subject: [PATCH] Add dropshards --- influxdb.go | 17 ++++++++++++++++- influxdb_test.go | 5 +++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/influxdb.go b/influxdb.go index b8bf100f88..22d56deb26 100644 --- a/influxdb.go +++ b/influxdb.go @@ -100,7 +100,11 @@ func (self *Client) CreateDatabase(name string) error { } func (self *Client) del(url string) (*http.Response, error) { - req, err := http.NewRequest("DELETE", url, nil) + return self.delWithBody(url, nil) +} + +func (self *Client) delWithBody(url string, body *bytes.Buffer) (*http.Response, error) { + req, err := http.NewRequest("DELETE", url, body) if err != nil { return nil, err } @@ -406,3 +410,14 @@ func (self *Client) GetShards() (*LongTermShortTermShards, error) { return shards, nil } + +func (self *Client) DropShard(id uint32, serverIds []uint32) error { + url := self.getUrlWithUserAndPass(fmt.Sprintf("/cluster/shards/%d", id), self.username, self.password) + ids := map[string][]uint32{"serverIds": serverIds} + body, err := json.Marshal(ids) + if err != nil { + return err + } + _, err = self.delWithBody(url, bytes.NewBuffer(body)) + return err +} diff --git a/influxdb_test.go b/influxdb_test.go index e4b99f9f36..84c1723b01 100644 --- a/influxdb_test.go +++ b/influxdb_test.go @@ -104,4 +104,9 @@ func TestClient(t *testing.T) { if shards == nil || len(shards.ShortTerm) == 0 || err != nil { t.Error("There were no shards in the db: ", err) } + + err = client.DropShard(shards.ShortTerm[0].Id, []uint32{uint32(1)}) + if err != nil { + t.Error(err) + } }