From e644050e370527bd447f2a2b2350388c8b6f511b Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Thu, 10 Jan 2019 19:57:00 -0500 Subject: [PATCH] Fix a couple of instances where we are using LIST verb (#6026) * Fix a couple of instances where we are using LIST verb We specify it for the wrapping lookup function but for broader compatibility with proxies and such we want to filter it to a GET. In a couple of places we weren't doing that, so this updates those locations. --- api/sys_plugins.go | 13 ++++++++++--- api/sys_policy.go | 4 ++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/api/sys_plugins.go b/api/sys_plugins.go index d8881b2f4880..ebfcfbfc022e 100644 --- a/api/sys_plugins.go +++ b/api/sys_plugins.go @@ -42,6 +42,12 @@ func (c *Sys) ListPlugins(i *ListPluginsInput) (*ListPluginsResponse, error) { } req := c.c.NewRequest(method, path) + if method == "LIST" { + // Set this for broader compatibility, but we use LIST above to be able + // to handle the wrapping lookup function + req.Method = "GET" + req.Params.Set("list", "true") + } ctx, cancelFunc := context.WithCancel(context.Background()) defer cancelFunc() @@ -55,9 +61,10 @@ func (c *Sys) ListPlugins(i *ListPluginsInput) (*ListPluginsResponse, error) { defer resp.Body.Close() // We received an Unsupported Operation response from Vault, indicating - // Vault of an older version that doesn't support the READ method yet. - if resp.StatusCode == 405 && req.Method == "GET" { - req.Method = "LIST" + // Vault of an older version that doesn't support the GET method yet; + // switch it to a LIST. + if resp.StatusCode == 405 { + req.Params.Set("list", "true") resp, err := c.c.RawRequestWithContext(ctx, req) if err != nil { return nil, err diff --git a/api/sys_policy.go b/api/sys_policy.go index cdbb3f75a7a9..c0c239f960c6 100644 --- a/api/sys_policy.go +++ b/api/sys_policy.go @@ -10,6 +10,10 @@ import ( func (c *Sys) ListPolicies() ([]string, error) { r := c.c.NewRequest("LIST", "/v1/sys/policies/acl") + // Set this for broader compatibility, but we use LIST above to be able to + // handle the wrapping lookup function + r.Method = "GET" + r.Params.Set("list", "true") ctx, cancelFunc := context.WithCancel(context.Background()) defer cancelFunc()