Skip to content

Commit 903adc9

Browse files
authored
Merge pull request #314 from kajinamit/keystone-domain
Give specific domain id for user/project
2 parents 36c6d81 + 61ed30b commit 903adc9

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

modules/openstack/project.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
type Project struct {
2828
Name string
2929
Description string
30+
DomainID string
3031
}
3132

3233
// CreateProject - creates project with projectName and projectDescription if it does not exist
@@ -35,7 +36,7 @@ func (o *OpenStack) CreateProject(
3536
p Project,
3637
) (string, error) {
3738
var projectID string
38-
allPages, err := projects.List(o.osclient, projects.ListOpts{Name: p.Name}).AllPages()
39+
allPages, err := projects.List(o.osclient, projects.ListOpts{Name: p.Name, DomainID: p.DomainID}).AllPages()
3940
if err != nil {
4041
return projectID, err
4142
}
@@ -49,8 +50,9 @@ func (o *OpenStack) CreateProject(
4950
createOpts := projects.CreateOpts{
5051
Name: p.Name,
5152
Description: p.Description,
53+
DomainID: p.DomainID,
5254
}
53-
log.Info(fmt.Sprintf("Creating project %s", p.Name))
55+
log.Info(fmt.Sprintf("Creating project %s in %s", p.Name, p.DomainID))
5456
project, err := projects.Create(o.osclient, createOpts).Extract()
5557
if err != nil {
5658
return projectID, err

modules/openstack/user.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ type User struct {
3232
Name string
3333
Password string
3434
ProjectID string
35+
DomainID string
3536
}
3637

3738
// CreateUser - creates user with userName, password and default project projectID
@@ -44,6 +45,7 @@ func (o *OpenStack) CreateUser(
4445
user, err := o.GetUser(
4546
log,
4647
u.Name,
48+
u.DomainID,
4749
)
4850
// If the user is not found, don't count that as an error here
4951
if err != nil && !strings.Contains(err.Error(), UserNotFound) {
@@ -56,10 +58,14 @@ func (o *OpenStack) CreateUser(
5658
userID = user.ID
5759
} else {
5860
createOpts := users.CreateOpts{
59-
Name: u.Name,
60-
DefaultProjectID: u.ProjectID,
61-
Password: u.Password,
61+
Name: u.Name,
62+
Password: u.Password,
63+
DomainID: u.DomainID,
6264
}
65+
if u.ProjectID != "" {
66+
createOpts.DefaultProjectID = u.ProjectID
67+
}
68+
6369
user, err := users.Create(o.GetOSClient(), createOpts).Extract()
6470
if err != nil {
6571
return userID, err
@@ -76,8 +82,9 @@ func (o *OpenStack) CreateUser(
7682
func (o *OpenStack) GetUser(
7783
log logr.Logger,
7884
userName string,
85+
domainID string,
7986
) (*users.User, error) {
80-
allPages, err := users.List(o.GetOSClient(), users.ListOpts{Name: userName}).AllPages()
87+
allPages, err := users.List(o.GetOSClient(), users.ListOpts{Name: userName, DomainID: domainID}).AllPages()
8188
if err != nil {
8289
return nil, err
8390
}
@@ -88,6 +95,8 @@ func (o *OpenStack) GetUser(
8895

8996
if len(allUsers) == 0 {
9097
return nil, fmt.Errorf(fmt.Sprintf("%s %s", userName, UserNotFound))
98+
} else if len(allUsers) > 1 {
99+
return nil, fmt.Errorf(fmt.Sprintf("multiple users named \"%s\" found", userName))
91100
}
92101

93102
return &allUsers[0], nil
@@ -97,18 +106,20 @@ func (o *OpenStack) GetUser(
97106
func (o *OpenStack) DeleteUser(
98107
log logr.Logger,
99108
userName string,
109+
domainID string,
100110
) error {
101111
user, err := o.GetUser(
102112
log,
103113
userName,
114+
domainID,
104115
)
105116
// If the user is not found, don't count that as an error here
106117
if err != nil && !strings.Contains(err.Error(), "user not found in keystone") {
107118
return err
108119
}
109120

110121
if user != nil {
111-
log.Info(fmt.Sprintf("Deleting user %s", user.Name))
122+
log.Info(fmt.Sprintf("Deleting user %s in %s", user.Name, user.DomainID))
112123
err = users.Delete(o.GetOSClient(), user.ID).ExtractErr()
113124
if err != nil {
114125
return err

0 commit comments

Comments
 (0)