aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/hashicorp/vault/api/sys_policy.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/hashicorp/vault/api/sys_policy.go')
-rw-r--r--vendor/github.com/hashicorp/vault/api/sys_policy.go60
1 files changed, 36 insertions, 24 deletions
diff --git a/vendor/github.com/hashicorp/vault/api/sys_policy.go b/vendor/github.com/hashicorp/vault/api/sys_policy.go
index 9c9d9c0..1fa3259 100644
--- a/vendor/github.com/hashicorp/vault/api/sys_policy.go
+++ b/vendor/github.com/hashicorp/vault/api/sys_policy.go
@@ -1,39 +1,47 @@
package api
-import "fmt"
+import (
+ "context"
+ "errors"
+ "fmt"
+
+ "github.com/mitchellh/mapstructure"
+)
func (c *Sys) ListPolicies() ([]string, error) {
r := c.c.NewRequest("GET", "/v1/sys/policy")
- resp, err := c.c.RawRequest(r)
+
+ ctx, cancelFunc := context.WithCancel(context.Background())
+ defer cancelFunc()
+ resp, err := c.c.RawRequestWithContext(ctx, r)
if err != nil {
return nil, err
}
defer resp.Body.Close()
- var result map[string]interface{}
- err = resp.DecodeJSON(&result)
+ secret, err := ParseSecret(resp.Body)
if err != nil {
return nil, err
}
-
- var ok bool
- if _, ok = result["policies"]; !ok {
- return nil, fmt.Errorf("policies not found in response")
+ if secret == nil || secret.Data == nil {
+ return nil, errors.New("data from server response is empty")
}
- listRaw := result["policies"].([]interface{})
- var policies []string
-
- for _, val := range listRaw {
- policies = append(policies, val.(string))
+ var result []string
+ err = mapstructure.Decode(secret.Data["policies"], &result)
+ if err != nil {
+ return nil, err
}
- return policies, err
+ return result, err
}
func (c *Sys) GetPolicy(name string) (string, error) {
- r := c.c.NewRequest("GET", fmt.Sprintf("/v1/sys/policy/%s", name))
- resp, err := c.c.RawRequest(r)
+ r := c.c.NewRequest("GET", fmt.Sprintf("/v1/sys/policies/acl/%s", name))
+
+ ctx, cancelFunc := context.WithCancel(context.Background())
+ defer cancelFunc()
+ resp, err := c.c.RawRequestWithContext(ctx, r)
if resp != nil {
defer resp.Body.Close()
if resp.StatusCode == 404 {
@@ -44,16 +52,15 @@ func (c *Sys) GetPolicy(name string) (string, error) {
return "", err
}
- var result map[string]interface{}
- err = resp.DecodeJSON(&result)
+ secret, err := ParseSecret(resp.Body)
if err != nil {
return "", err
}
-
- if rulesRaw, ok := result["rules"]; ok {
- return rulesRaw.(string), nil
+ if secret == nil || secret.Data == nil {
+ return "", errors.New("data from server response is empty")
}
- if policyRaw, ok := result["policy"]; ok {
+
+ if policyRaw, ok := secret.Data["policy"]; ok {
return policyRaw.(string), nil
}
@@ -70,7 +77,9 @@ func (c *Sys) PutPolicy(name, rules string) error {
return err
}
- resp, err := c.c.RawRequest(r)
+ ctx, cancelFunc := context.WithCancel(context.Background())
+ defer cancelFunc()
+ resp, err := c.c.RawRequestWithContext(ctx, r)
if err != nil {
return err
}
@@ -81,7 +90,10 @@ func (c *Sys) PutPolicy(name, rules string) error {
func (c *Sys) DeletePolicy(name string) error {
r := c.c.NewRequest("DELETE", fmt.Sprintf("/v1/sys/policy/%s", name))
- resp, err := c.c.RawRequest(r)
+
+ ctx, cancelFunc := context.WithCancel(context.Background())
+ defer cancelFunc()
+ resp, err := c.c.RawRequestWithContext(ctx, r)
if err == nil {
defer resp.Body.Close()
}