diff --git a/main.go b/main.go index a62025a..b4a2786 100644 --- a/main.go +++ b/main.go @@ -11,7 +11,7 @@ import ( func main() { - plugin_version := "0.2.3" + plugin_version := "0.3.0" apiClientMeta := &pluginutil.APIClientMeta{} flags := apiClientMeta.FlagSet() diff --git a/plugin/path_config.go b/plugin/path_config.go index 1c8e26f..b1c8bc7 100644 --- a/plugin/path_config.go +++ b/plugin/path_config.go @@ -2,9 +2,12 @@ package keystoneauth import ( "fmt" + "log" + "github.com/fatih/structs" "github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical/framework" + "github.com/parnurzeal/gorequest" ) func pathConfig(b *backend) *framework.Path { @@ -51,6 +54,23 @@ func (b *backend) pathConnectionWrite( connURL := data.Get("connection_url").(string) adminAuthToken := data.Get("admin_auth_token").(string) + request := gorequest.New() + resp, _, errs := request.Get("http://"+connURL+"/v3/users/"). + Set("X-Auth-Token", adminAuthToken). + Set("Content-type", "application/json"). + End() + + if errs != nil { + return nil, fmt.Errorf("", errs[0]) + } + if resp.StatusCode != 200 { + return nil, fmt.Errorf("Can't connect to keystone, " + + "check configuration options :`connection_url` and `admin_auth_token`" + + " or authentication permissions for OpenStack Keystone") + } else { + log.Printf("Succesfully connected to: %s", connURL) + } + // Store it entry, err := logical.StorageEntryJSON("config/connection", connectionConfig{ ConnectionURL: connURL,