From 3b9ebae21680698f9980eaa928d6a618380d96d7 Mon Sep 17 00:00:00 2001 From: CURZOLA Pierre Date: Wed, 20 May 2020 18:06:58 +0200 Subject: [PATCH 1/7] remove drain command --- Gopkg.lock | 6 ++--- Gopkg.toml | 2 +- cmd/autocomplete/log_drains_remove.go | 30 ++++++++++++++++++++++ cmd/commands.go | 1 + log_drains/remove.go | 37 +++++++++++++++++++++++++++ 5 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 cmd/autocomplete/log_drains_remove.go create mode 100644 log_drains/remove.go diff --git a/Gopkg.lock b/Gopkg.lock index 33e77c262..d5f697422 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -26,7 +26,8 @@ revision = "8eb48cc6f27eafda8e3a9627edba494a1d229a01" [[projects]] - digest = "1:13f8c81c5ca5de26437177f7e63da07a703b45cb0dac9f4141beef0cd448cad2" + branch = "feature/cli/554/add_log_drains_del_cmd" + digest = "1:40ae488a4e927a7c247abd84487118d38f19bbd400b65747d2818fa03424afb7" name = "github.com/Scalingo/go-scalingo" packages = [ ".", @@ -37,8 +38,7 @@ "io", ] pruneopts = "NUT" - revision = "9f30cefb0ea118d42f84c30964bbb3a842f004be" - version = "v4.5.2" + revision = "2feae75efa770bc5833d58f652c3690efc7fe125" [[projects]] digest = "1:ab7f2d565135ccc3b35eb2427819fbca0501d582eba5091e684275022d3ff3ba" diff --git a/Gopkg.toml b/Gopkg.toml index 093576317..30e1e61bf 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -26,7 +26,7 @@ [[constraint]] name = "github.com/Scalingo/go-scalingo" - version = "^4" + branch = "feature/cli/554/add_log_drains_del_cmd" [[constraint]] branch = "master" diff --git a/cmd/autocomplete/log_drains_remove.go b/cmd/autocomplete/log_drains_remove.go new file mode 100644 index 000000000..2afa2137d --- /dev/null +++ b/cmd/autocomplete/log_drains_remove.go @@ -0,0 +1,30 @@ +package autocomplete + +import ( + "fmt" + + "github.com/Scalingo/cli/config" + "github.com/urfave/cli" + "gopkg.in/errgo.v1" +) + +func LogDrainsRemoveAutoComplete(c *cli.Context) error { + appName := CurrentAppCompletion(c) + if appName == "" { + return nil + } + + client, err := config.ScalingoClient() + if err != nil { + return errgo.Notef(err, "fail to get Scalingo client") + } + drains, err := client.LogDrainsList(appName) + if err == nil { + + for _, drain := range drains { + fmt.Println(drain.URL) + } + } + + return nil +} diff --git a/cmd/commands.go b/cmd/commands.go index 99755842e..1e05452dd 100644 --- a/cmd/commands.go +++ b/cmd/commands.go @@ -221,6 +221,7 @@ var ( // Log drains logDrainsAddCommand, logDrainsListCommand, + logDrainsRemoveCommand, gitSetup, gitShow, diff --git a/log_drains/remove.go b/log_drains/remove.go new file mode 100644 index 000000000..1b42dce20 --- /dev/null +++ b/log_drains/remove.go @@ -0,0 +1,37 @@ +package log_drains + +import ( + "github.com/Scalingo/cli/config" + "github.com/Scalingo/cli/io" + "github.com/Scalingo/go-scalingo" + "gopkg.in/errgo.v1" +) + +func Remove(app string, URL string) error { + c, err := config.ScalingoClient() + if err != nil { + return errgo.Notef(err, "fail to get Scalingo client") + } + + err = c.LogDrainRemove(app, URL) + if err != nil { + return errgo.Mask(err) + } + + io.Status("The log drain:", URL, "has been deleted") + return nil +} + +func findLogDrainsBeforeRemove(c *scalingo.Client, app string, URL string) (scalingo.LogDrain, error) { + drains, err := c.LogDrainsList(app) + if err != nil { + return scalingo.LogDrain{}, errgo.Mask(err) + } + + for _, d := range drains { + if d.URL == URL { + return d, nil + } + } + return scalingo.LogDrain{}, errgo.New("There is no such log drain, please ensure you've added it correctly.") +} From db9ae04371b07d314996d9cdd708511106e91298 Mon Sep 17 00:00:00 2001 From: CURZOLA Pierre Date: Wed, 20 May 2020 18:46:40 +0200 Subject: [PATCH 2/7] add cmd management and update deps --- Gopkg.lock | 4 +-- cmd/log_drains.go | 34 +++++++++++++++++-- log_drains/remove.go | 15 -------- .../Scalingo/go-scalingo/log_drains.go | 30 ++++++++++++++++ 4 files changed, 64 insertions(+), 19 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index d5f697422..5260f2b5d 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -27,7 +27,7 @@ [[projects]] branch = "feature/cli/554/add_log_drains_del_cmd" - digest = "1:40ae488a4e927a7c247abd84487118d38f19bbd400b65747d2818fa03424afb7" + digest = "1:de17197855c36bda72c0fee89959ca4f745e893a5185f3f9f26dab316975f13b" name = "github.com/Scalingo/go-scalingo" packages = [ ".", @@ -38,7 +38,7 @@ "io", ] pruneopts = "NUT" - revision = "2feae75efa770bc5833d58f652c3690efc7fe125" + revision = "b83c1952fb9b04dc04e0e4281d0e94cc2b366240" [[projects]] digest = "1:ab7f2d565135ccc3b35eb2427819fbca0501d582eba5091e684275022d3ff3ba" diff --git a/cmd/log_drains.go b/cmd/log_drains.go index b02eae7ff..a1999c80b 100644 --- a/cmd/log_drains.go +++ b/cmd/log_drains.go @@ -18,7 +18,7 @@ var ( $ scalingo --app my-app log-drains - # See also commands 'log-drains-add'`, + # See also commands 'log-drains-add', 'log-drains-remove'`, Action: func(c *cli.Context) { currentApp := appdetect.CurrentApp(c) @@ -59,7 +59,7 @@ var ( $ scalingo --app my-app log-drains-add --type syslog --host custom.logstash.com --port 12345 $ scalingo --app my-app log-drains-add --type elk --url https://my-user:123456789abcdef@logstash-app-name.osc-fr1.scalingo.io - # See also commands 'log-drains'`, + # See also commands 'log-drains', 'log-drains-remove'`, Action: func(c *cli.Context) { currentApp := appdetect.CurrentApp(c) @@ -80,4 +80,34 @@ var ( autocomplete.CmdFlagsAutoComplete(c, "log-drains") }, } + + logDrainsRemoveCommand = cli.Command{ + Name: "log-drains-remove", + Category: "Log drains", + Flags: []cli.Flag{appFlag}, + Usage: "Remove a log drain from an application", + Description: `Remove a log drain from an application: + + $ scalingo --app my-app log-drains-remove syslog://custom.logstash.com:12345 + + # See also commands 'log-drains-add', 'log-drains' and 'log-drains'`, + + Action: func(c *cli.Context) { + currentApp := appdetect.CurrentApp(c) + var err error + if len(c.Args()) == 1 { + err = log_drains.Remove(currentApp, c.Args()[0]) + } else { + cli.ShowCommandHelp(c, "log-drains-remove") + } + + if err != nil { + errorQuit(err) + } + }, + BashComplete: func(c *cli.Context) { + autocomplete.CmdFlagsAutoComplete(c, "log-drains-remove") + autocomplete.LogDrainsRemoveAutoComplete(c) + }, + } ) diff --git a/log_drains/remove.go b/log_drains/remove.go index 1b42dce20..4489807a4 100644 --- a/log_drains/remove.go +++ b/log_drains/remove.go @@ -3,7 +3,6 @@ package log_drains import ( "github.com/Scalingo/cli/config" "github.com/Scalingo/cli/io" - "github.com/Scalingo/go-scalingo" "gopkg.in/errgo.v1" ) @@ -21,17 +20,3 @@ func Remove(app string, URL string) error { io.Status("The log drain:", URL, "has been deleted") return nil } - -func findLogDrainsBeforeRemove(c *scalingo.Client, app string, URL string) (scalingo.LogDrain, error) { - drains, err := c.LogDrainsList(app) - if err != nil { - return scalingo.LogDrain{}, errgo.Mask(err) - } - - for _, d := range drains { - if d.URL == URL { - return d, nil - } - } - return scalingo.LogDrain{}, errgo.New("There is no such log drain, please ensure you've added it correctly.") -} diff --git a/vendor/github.com/Scalingo/go-scalingo/log_drains.go b/vendor/github.com/Scalingo/go-scalingo/log_drains.go index 50c8a4496..c3f2397a6 100644 --- a/vendor/github.com/Scalingo/go-scalingo/log_drains.go +++ b/vendor/github.com/Scalingo/go-scalingo/log_drains.go @@ -1,12 +1,16 @@ package scalingo import ( + "net/http" + + httpclient "github.com/Scalingo/go-scalingo/http" "gopkg.in/errgo.v1" ) type LogDrainsService interface { LogDrainsList(app string) ([]LogDrain, error) LogDrainAdd(app string, params LogDrainAddParams) (*LogDrainRes, error) + LogDrainRemove(app, URL string) error } var _ LogDrainsService = (*Client)(nil) @@ -21,6 +25,10 @@ type LogDrain struct { DrainRegion string `json:"drain_region"` } +type logDrainReq struct { + Drain LogDrain `json:"drain"` +} + type LogDrainRes struct { Drain LogDrain `json:"drain"` } @@ -63,3 +71,25 @@ func (c *Client) LogDrainAdd(app string, params LogDrainAddParams) (*LogDrainRes return &logDrainRes, nil } + +func (c *Client) LogDrainRemove(app, URL string) error { + var logDrainRes LogDrainRes + payload := make(map[string]string) + payload = map[string]string{ + "url": URL, + } + + req := &httpclient.APIRequest{ + Method: "DELETE", + Endpoint: "/apps/" + app + "/log_drains", + Expected: httpclient.Statuses{http.StatusOK}, + Params: payload, + } + + err := c.ScalingoAPI().DoRequest(req, &logDrainRes) + if err != nil { + return errgo.Notef(err, "fail to delete log drain") + } + + return nil +} From a6680762b94e860e332b102a85453831a4efaecb Mon Sep 17 00:00:00 2001 From: CURZOLA Pierre Date: Mon, 25 May 2020 11:23:41 +0200 Subject: [PATCH 3/7] update deps --- Gopkg.lock | 4 ++-- vendor/github.com/Scalingo/go-scalingo/log_drains.go | 9 ++------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index 5260f2b5d..350392de1 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -27,7 +27,7 @@ [[projects]] branch = "feature/cli/554/add_log_drains_del_cmd" - digest = "1:de17197855c36bda72c0fee89959ca4f745e893a5185f3f9f26dab316975f13b" + digest = "1:a1635c85bc0f760bbc43b180f4dd51e04d8a1774752268cb555446435c46b402" name = "github.com/Scalingo/go-scalingo" packages = [ ".", @@ -38,7 +38,7 @@ "io", ] pruneopts = "NUT" - revision = "b83c1952fb9b04dc04e0e4281d0e94cc2b366240" + revision = "ea8f03c8a69643e438a23d25afc24eb0b3686498" [[projects]] digest = "1:ab7f2d565135ccc3b35eb2427819fbca0501d582eba5091e684275022d3ff3ba" diff --git a/vendor/github.com/Scalingo/go-scalingo/log_drains.go b/vendor/github.com/Scalingo/go-scalingo/log_drains.go index c3f2397a6..f8b3d2240 100644 --- a/vendor/github.com/Scalingo/go-scalingo/log_drains.go +++ b/vendor/github.com/Scalingo/go-scalingo/log_drains.go @@ -25,10 +25,6 @@ type LogDrain struct { DrainRegion string `json:"drain_region"` } -type logDrainReq struct { - Drain LogDrain `json:"drain"` -} - type LogDrainRes struct { Drain LogDrain `json:"drain"` } @@ -73,7 +69,6 @@ func (c *Client) LogDrainAdd(app string, params LogDrainAddParams) (*LogDrainRes } func (c *Client) LogDrainRemove(app, URL string) error { - var logDrainRes LogDrainRes payload := make(map[string]string) payload = map[string]string{ "url": URL, @@ -82,11 +77,11 @@ func (c *Client) LogDrainRemove(app, URL string) error { req := &httpclient.APIRequest{ Method: "DELETE", Endpoint: "/apps/" + app + "/log_drains", - Expected: httpclient.Statuses{http.StatusOK}, + Expected: httpclient.Statuses{http.StatusNoContent}, Params: payload, } - err := c.ScalingoAPI().DoRequest(req, &logDrainRes) + err := c.ScalingoAPI().DoRequest(req, nil) if err != nil { return errgo.Notef(err, "fail to delete log drain") } From 9d72d74a9ff13df01abe7471e7ebd289457c16ee Mon Sep 17 00:00:00 2001 From: CURZOLA Pierre Date: Mon, 25 May 2020 11:38:15 +0200 Subject: [PATCH 4/7] update changelog. Error management on autocomplete --- CHANGELOG.md | 3 +++ cmd/autocomplete/domains_remove.go | 9 +++++---- cmd/autocomplete/log_drains_remove.go | 9 +++++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16068eda4..807797ea0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ * Add log drains add command [#561](https://github.com/Scalingo/cli/pull/561) [go-scalingo #164](https://github.com/Scalingo/go-scalingo/pull/164) +* Add log drains delete command + [#567](https://github.com/Scalingo/cli/pull/567) + [go-scalingo #167](https://github.com/Scalingo/go-scalingo/pull/167) ### 1.17.0 diff --git a/cmd/autocomplete/domains_remove.go b/cmd/autocomplete/domains_remove.go index 0bf08c774..44db76286 100644 --- a/cmd/autocomplete/domains_remove.go +++ b/cmd/autocomplete/domains_remove.go @@ -19,11 +19,12 @@ func DomainsRemoveAutoComplete(c *cli.Context) error { return errgo.Notef(err, "fail to get Scalingo client") } domains, err := client.DomainsList(appName) - if err == nil { + if err != nil { + return errgo.Notef(err, "fail to get domains list") + } - for _, domain := range domains { - fmt.Println(domain.Name) - } + for _, domain := range domains { + fmt.Println(domain.Name) } return nil diff --git a/cmd/autocomplete/log_drains_remove.go b/cmd/autocomplete/log_drains_remove.go index 2afa2137d..9bbadb5b5 100644 --- a/cmd/autocomplete/log_drains_remove.go +++ b/cmd/autocomplete/log_drains_remove.go @@ -19,11 +19,12 @@ func LogDrainsRemoveAutoComplete(c *cli.Context) error { return errgo.Notef(err, "fail to get Scalingo client") } drains, err := client.LogDrainsList(appName) - if err == nil { + if err != nil { + return errgo.Notef(err, "fail to get log drains list") + } - for _, drain := range drains { - fmt.Println(drain.URL) - } + for _, drain := range drains { + fmt.Println(drain.URL) } return nil From 79fd6642ae4a1cbc2f3b18398d43b1c3ca702ebe Mon Sep 17 00:00:00 2001 From: CURZOLA Pierre Date: Mon, 25 May 2020 11:43:51 +0200 Subject: [PATCH 5/7] fix typo + err messages --- cmd/log_drains.go | 2 +- log_drains/remove.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/log_drains.go b/cmd/log_drains.go index a1999c80b..0af3430a3 100644 --- a/cmd/log_drains.go +++ b/cmd/log_drains.go @@ -90,7 +90,7 @@ var ( $ scalingo --app my-app log-drains-remove syslog://custom.logstash.com:12345 - # See also commands 'log-drains-add', 'log-drains' and 'log-drains'`, + # See also commands 'log-drains-add', 'log-drains'`, Action: func(c *cli.Context) { currentApp := appdetect.CurrentApp(c) diff --git a/log_drains/remove.go b/log_drains/remove.go index 4489807a4..ef3db5fbd 100644 --- a/log_drains/remove.go +++ b/log_drains/remove.go @@ -9,12 +9,12 @@ import ( func Remove(app string, URL string) error { c, err := config.ScalingoClient() if err != nil { - return errgo.Notef(err, "fail to get Scalingo client") + return errgo.Notef(err, "fail to get Scalingo client to remove a log drain from the application") } err = c.LogDrainRemove(app, URL) if err != nil { - return errgo.Mask(err) + return errgo.Notef(err, "fail to remove the log drain from the application") } io.Status("The log drain:", URL, "has been deleted") From e56c23c41ac555de5c5ac627c8f2f047e5547a56 Mon Sep 17 00:00:00 2001 From: CURZOLA Pierre Date: Mon, 25 May 2020 14:49:57 +0200 Subject: [PATCH 6/7] update go-scalingo deps --- Gopkg.lock | 4 ++-- vendor/github.com/Scalingo/go-scalingo/log_drains.go | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index 350392de1..c6ccb6e66 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -27,7 +27,7 @@ [[projects]] branch = "feature/cli/554/add_log_drains_del_cmd" - digest = "1:a1635c85bc0f760bbc43b180f4dd51e04d8a1774752268cb555446435c46b402" + digest = "1:07201e6d503d992dfe159527dac247af0a27b3ec608e958d10ba77b98055f708" name = "github.com/Scalingo/go-scalingo" packages = [ ".", @@ -38,7 +38,7 @@ "io", ] pruneopts = "NUT" - revision = "ea8f03c8a69643e438a23d25afc24eb0b3686498" + revision = "0f54664864f4de65ff77cb47eb1eb79eaf16a63b" [[projects]] digest = "1:ab7f2d565135ccc3b35eb2427819fbca0501d582eba5091e684275022d3ff3ba" diff --git a/vendor/github.com/Scalingo/go-scalingo/log_drains.go b/vendor/github.com/Scalingo/go-scalingo/log_drains.go index f8b3d2240..6ebf10b12 100644 --- a/vendor/github.com/Scalingo/go-scalingo/log_drains.go +++ b/vendor/github.com/Scalingo/go-scalingo/log_drains.go @@ -69,8 +69,7 @@ func (c *Client) LogDrainAdd(app string, params LogDrainAddParams) (*LogDrainRes } func (c *Client) LogDrainRemove(app, URL string) error { - payload := make(map[string]string) - payload = map[string]string{ + payload := map[string]string{ "url": URL, } From 2d8474bc3a8cc99edba93593d60b5a7eedb08f26 Mon Sep 17 00:00:00 2001 From: CURZOLA Pierre Date: Mon, 25 May 2020 15:32:01 +0200 Subject: [PATCH 7/7] deps sync with version --- Gopkg.lock | 6 +++--- Gopkg.toml | 2 +- vendor/github.com/Scalingo/go-scalingo/version.go | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index c6ccb6e66..7a1242f0a 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -26,8 +26,7 @@ revision = "8eb48cc6f27eafda8e3a9627edba494a1d229a01" [[projects]] - branch = "feature/cli/554/add_log_drains_del_cmd" - digest = "1:07201e6d503d992dfe159527dac247af0a27b3ec608e958d10ba77b98055f708" + digest = "1:08eece729c1bef63ba65ac49a2dda812a07c69f489178917c6fe227f8d89301e" name = "github.com/Scalingo/go-scalingo" packages = [ ".", @@ -38,7 +37,8 @@ "io", ] pruneopts = "NUT" - revision = "0f54664864f4de65ff77cb47eb1eb79eaf16a63b" + revision = "69d49c22431d4655ab091eeb3e527de5413e67e6" + version = "v4.5.3" [[projects]] digest = "1:ab7f2d565135ccc3b35eb2427819fbca0501d582eba5091e684275022d3ff3ba" diff --git a/Gopkg.toml b/Gopkg.toml index 30e1e61bf..ef1fc2120 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -26,7 +26,7 @@ [[constraint]] name = "github.com/Scalingo/go-scalingo" - branch = "feature/cli/554/add_log_drains_del_cmd" + version = "^4" [[constraint]] branch = "master" diff --git a/vendor/github.com/Scalingo/go-scalingo/version.go b/vendor/github.com/Scalingo/go-scalingo/version.go index 8c8806305..965100ec1 100644 --- a/vendor/github.com/Scalingo/go-scalingo/version.go +++ b/vendor/github.com/Scalingo/go-scalingo/version.go @@ -1,3 +1,3 @@ package scalingo -var Version = "4.5.2" +var Version = "4.5.3"