From edbdbd7bbf2a31cfa708b301db615b20e7ff51aa Mon Sep 17 00:00:00 2001 From: Guillaume Giamarchi Date: Thu, 9 Apr 2015 17:40:21 +0200 Subject: [PATCH] Support Keystone v3 domains Fix #679 Signed-off-by: Guillaume Giamarchi --- docs/index.md | 3 +++ drivers/openstack/client.go | 4 ++++ drivers/openstack/openstack.go | 16 ++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/docs/index.md b/docs/index.md index 7ea5561819..5f097333f4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -767,6 +767,7 @@ Mandatory: Options: - `--openstack-auth-url`: Keystone service base URL. + - `--openstack-domain-name` or `--openstack-domain-id`: Domain to use for authentication (Keystone v3 only) - `--openstack-username`: User identifer to authenticate with. - `--openstack-password`: User password. It can be omitted if the standard environment variable `OS_PASSWORD` is set. - `--openstack-tenant-name` or `--openstack-tenant-id`: Identify the tenant in which the machine will be created. @@ -791,6 +792,8 @@ and CLI option are provided the CLI option takes the precedence. | Environment variable | CLI option | |----------------------|-----------------------------| | `OS_AUTH_URL` | `--openstack-auth-url` | +| `OS_DOMAIN_ID` | `--openstack-domain-id` | +| `OS_DOMAIN_NAME` | `--openstack-domain-name` | | `OS_USERNAME` | `--openstack-username` | | `OS_PASSWORD` | `--openstack-password` | | `OS_TENANT_NAME` | `--openstack-tenant-name` | diff --git a/drivers/openstack/client.go b/drivers/openstack/client.go index a3330926e0..711329652f 100644 --- a/drivers/openstack/client.go +++ b/drivers/openstack/client.go @@ -399,6 +399,8 @@ func (c *GenericClient) Authenticate(d *Driver) error { log.WithFields(log.Fields{ "AuthUrl": d.AuthUrl, "Insecure": d.Insecure, + "DomainID": d.DomainID, + "DomainName": d.DomainName, "Username": d.Username, "TenantName": d.TenantName, "TenantID": d.TenantId, @@ -406,6 +408,8 @@ func (c *GenericClient) Authenticate(d *Driver) error { opts := gophercloud.AuthOptions{ IdentityEndpoint: d.AuthUrl, + DomainID: d.DomainID, + DomainName: d.DomainName, Username: d.Username, Password: d.Password, TenantName: d.TenantName, diff --git a/drivers/openstack/openstack.go b/drivers/openstack/openstack.go index a8e88d33f6..6f313b3394 100644 --- a/drivers/openstack/openstack.go +++ b/drivers/openstack/openstack.go @@ -23,6 +23,8 @@ const ( type Driver struct { AuthUrl string Insecure bool + DomainID string + DomainName string Username string Password string TenantName string @@ -72,6 +74,18 @@ func GetCreateFlags() []cli.Flag { Name: "openstack-insecure", Usage: "Disable TLS credential checking.", }, + cli.StringFlag{ + EnvVar: "OS_DOMAIN_ID", + Name: "openstack-domain-id", + Usage: "OpenStack domain ID (identity v3 only)", + Value: "", + }, + cli.StringFlag{ + EnvVar: "OS_DOMAIN_NAME", + Name: "openstack-domain-name", + Usage: "OpenStack domain name (identity v3 only)", + Value: "", + }, cli.StringFlag{ EnvVar: "OS_USERNAME", Name: "openstack-username", @@ -229,6 +243,8 @@ func (d *Driver) DriverName() string { func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { d.AuthUrl = flags.String("openstack-auth-url") d.Insecure = flags.Bool("openstack-insecure") + d.DomainID = flags.String("openstack-domain-id") + d.DomainName = flags.String("openstack-domain-name") d.Username = flags.String("openstack-username") d.Password = flags.String("openstack-password") d.TenantName = flags.String("openstack-tenant-name")