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 d8881b2f48..ebfcfbfc02 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 cdbb3f75a7..c0c239f960 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()