Support Keystone v3 domains

Fix #679

Signed-off-by: Guillaume Giamarchi <guillaume.giamarchi@gmail.com>
This commit is contained in:
Guillaume Giamarchi 2015-04-09 17:40:21 +02:00
parent 0153beea59
commit edbdbd7bbf
3 changed files with 23 additions and 0 deletions

View File

@ -767,6 +767,7 @@ Mandatory:
Options: Options:
- `--openstack-auth-url`: Keystone service base URL. - `--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-username`: User identifer to authenticate with.
- `--openstack-password`: User password. It can be omitted if the standard environment variable `OS_PASSWORD` is set. - `--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. - `--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 | | Environment variable | CLI option |
|----------------------|-----------------------------| |----------------------|-----------------------------|
| `OS_AUTH_URL` | `--openstack-auth-url` | | `OS_AUTH_URL` | `--openstack-auth-url` |
| `OS_DOMAIN_ID` | `--openstack-domain-id` |
| `OS_DOMAIN_NAME` | `--openstack-domain-name` |
| `OS_USERNAME` | `--openstack-username` | | `OS_USERNAME` | `--openstack-username` |
| `OS_PASSWORD` | `--openstack-password` | | `OS_PASSWORD` | `--openstack-password` |
| `OS_TENANT_NAME` | `--openstack-tenant-name` | | `OS_TENANT_NAME` | `--openstack-tenant-name` |

View File

@ -399,6 +399,8 @@ func (c *GenericClient) Authenticate(d *Driver) error {
log.WithFields(log.Fields{ log.WithFields(log.Fields{
"AuthUrl": d.AuthUrl, "AuthUrl": d.AuthUrl,
"Insecure": d.Insecure, "Insecure": d.Insecure,
"DomainID": d.DomainID,
"DomainName": d.DomainName,
"Username": d.Username, "Username": d.Username,
"TenantName": d.TenantName, "TenantName": d.TenantName,
"TenantID": d.TenantId, "TenantID": d.TenantId,
@ -406,6 +408,8 @@ func (c *GenericClient) Authenticate(d *Driver) error {
opts := gophercloud.AuthOptions{ opts := gophercloud.AuthOptions{
IdentityEndpoint: d.AuthUrl, IdentityEndpoint: d.AuthUrl,
DomainID: d.DomainID,
DomainName: d.DomainName,
Username: d.Username, Username: d.Username,
Password: d.Password, Password: d.Password,
TenantName: d.TenantName, TenantName: d.TenantName,

View File

@ -23,6 +23,8 @@ const (
type Driver struct { type Driver struct {
AuthUrl string AuthUrl string
Insecure bool Insecure bool
DomainID string
DomainName string
Username string Username string
Password string Password string
TenantName string TenantName string
@ -72,6 +74,18 @@ func GetCreateFlags() []cli.Flag {
Name: "openstack-insecure", Name: "openstack-insecure",
Usage: "Disable TLS credential checking.", 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{ cli.StringFlag{
EnvVar: "OS_USERNAME", EnvVar: "OS_USERNAME",
Name: "openstack-username", Name: "openstack-username",
@ -229,6 +243,8 @@ func (d *Driver) DriverName() string {
func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
d.AuthUrl = flags.String("openstack-auth-url") d.AuthUrl = flags.String("openstack-auth-url")
d.Insecure = flags.Bool("openstack-insecure") 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.Username = flags.String("openstack-username")
d.Password = flags.String("openstack-password") d.Password = flags.String("openstack-password")
d.TenantName = flags.String("openstack-tenant-name") d.TenantName = flags.String("openstack-tenant-name")