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()