From e8b432a99c5bd9b846cd3186da35857dcb3e6968 Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Tue, 18 May 2021 15:18:05 +0800 Subject: [PATCH] fix(cloudid): clouduser use default domain --- pkg/multicloud/azure/clouduser.go | 36 +++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/pkg/multicloud/azure/clouduser.go b/pkg/multicloud/azure/clouduser.go index c7b60c6243..f15daf09c4 100644 --- a/pkg/multicloud/azure/clouduser.go +++ b/pkg/multicloud/azure/clouduser.go @@ -267,7 +267,19 @@ func (self *SAzureClient) CreateIClouduser(conf *cloudprovider.SClouduserCreateC } type SDomain struct { - Name string + Name string + AuthenticationType string + AvailabilityStatus string + IsAdminManaged bool + IsDefault bool + IsDefaultForCloudRedirections bool + IsInitial bool + IsRoot bool + IsVerified bool + ForceDeleteState string + State string + PasswordValidityPeriodInDays string + PasswordNotificationWindowInDays string } func (self *SAzureClient) GetDomains() ([]SDomain, error) { @@ -279,6 +291,19 @@ func (self *SAzureClient) GetDomains() ([]SDomain, error) { return domains, nil } +func (self *SAzureClient) GetDefaultDomain() (*SDomain, error) { + domains, err := self.GetDomains() + if err != nil { + return nil, errors.Wrapf(err, "GetDomains") + } + for i := range domains { + if domains[i].IsDefault { + return &domains[i], nil + } + } + return nil, cloudprovider.ErrNotFound +} + func (self *SAzureClient) CreateClouduser(name, password string) (*SClouduser, error) { passwordProfile := map[string]interface{}{ "password": "Lomo1824", @@ -293,14 +318,11 @@ func (self *SAzureClient) CreateClouduser(name, password string) (*SClouduser, e "passwordProfile": passwordProfile, "userPrincipalName": name, } - domains, err := self.GetDomains() + domain, err := self.GetDefaultDomain() if err != nil { - return nil, errors.Wrap(err, "GetDomains") + return nil, errors.Wrap(err, "GetDefaultDomain") } - if len(domains) == 0 { - return nil, errors.Wrap(err, "Missing domains") - } - params["userPrincipalName"] = fmt.Sprintf("%s@%s", name, domains[0].Name) + params["userPrincipalName"] = fmt.Sprintf("%s@%s", name, domain.Name) user := SClouduser{client: self} err = self.gcreate("users", jsonutils.Marshal(params), &user) if err != nil {