@@ -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(
7682func (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(
97106func (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