func (opts AuthOptions) ToTokenV2CreateMap() (map[string]interface{}, error) {
	authMap := make(map[string]interface{})
	if opts.Username != "" {
		if opts.Password != "" {
			authMap["passwordCredentials"] = map[string]interface{}{
				"username": opts.Username,
				"password": opts.Password,
			}
		} else {
			return nil, ErrMissingInput{Argument: "Password"}
		}
	} else if opts.TokenID != "" {
		authMap["token"] = map[string]interface{}{
			"id": opts.TokenID,
		}
	} else {
		return nil, ErrMissingInput{Argument: "Username"}
	}
	if opts.TenantID != "" {
		authMap["tenantId"] = opts.TenantID
	}
	if opts.TenantName != "" {
		authMap["tenantName"] = opts.TenantName
	}
	return map[string]interface{}{"auth": authMap}, nil
}
ToTokenV2CreateMap allows AuthOptions to satisfy the AuthOptionsBuilder
interface in the v2 tokens package
package gophercloud
type AuthOptions struct {
	IdentityEndpoint string `json:"-"`
	Username string `json:"username,omitempty"`
	UserID   string `json:"-"`
	Password string `json:"password,omitempty"`
	DomainID   string `json:"-"`
	DomainName string `json:"name,omitempty"`
	TenantID   string `json:"tenantId,omitempty"`
	TenantName string `json:"tenantName,omitempty"`
	AllowReauth bool `json:"-"`
	TokenID string `json:"-"`
	Scope *AuthScope `json:"-"`
	ApplicationCredentialID     string `json:"-"`
	ApplicationCredentialName   string `json:"-"`
	ApplicationCredentialSecret string `json:"-"`
}
type AuthScope struct {
	ProjectID   string
	ProjectName string
	DomainID    string
	DomainName  string
}