From c563f021b03c56878877deef2bd6ce993f876135 Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Wed, 27 May 2020 15:46:53 +0800 Subject: [PATCH] fix: domain user no previleges to convert host --- pkg/compute/models/hosts.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pkg/compute/models/hosts.go b/pkg/compute/models/hosts.go index a687b15bd7..ed57e17cda 100644 --- a/pkg/compute/models/hosts.go +++ b/pkg/compute/models/hosts.go @@ -4345,9 +4345,12 @@ func (self *SHost) PerformConvertHypervisor(ctx context.Context, userCred mcclie if err != nil { return nil, httperrors.NewNotAcceptableError("Convert error: %s", err.Error()) } + // admin delegate user to create system resource + input.ProjectDomain = userCred.GetProjectDomainId() + input.Project = userCred.GetProjectId() params := input.JSON(input) - // ownerId := userCred.GetProjectId() - guest, err := db.DoCreate(GuestManager, ctx, userCred, nil, params, userCred) + adminCred := auth.AdminCredential() + guest, err := db.DoCreate(GuestManager, ctx, adminCred, nil, params, userCred) if err != nil { return nil, err } @@ -4355,7 +4358,7 @@ func (self *SHost) PerformConvertHypervisor(ctx context.Context, userCred mcclie lockman.LockObject(ctx, guest) defer lockman.ReleaseObject(ctx, guest) - guest.PostCreate(ctx, userCred, userCred, nil, params) + guest.PostCreate(ctx, adminCred, userCred, nil, params) }() log.Infof("Host convert to %s", guest.GetName()) db.OpsLog.LogEvent(self, db.ACT_CONVERT_START, "", userCred) @@ -4366,7 +4369,7 @@ func (self *SHost) PerformConvertHypervisor(ctx context.Context, userCred mcclie opts.Set("server_id", jsonutils.NewString(guest.GetId())) opts.Set("convert_host_type", jsonutils.NewString(hostType)) - task, err := taskman.TaskManager.NewTask(ctx, "BaremetalConvertHypervisorTask", self, userCred, opts, "", "", nil) + task, err := taskman.TaskManager.NewTask(ctx, "BaremetalConvertHypervisorTask", self, adminCred, opts, "", "", nil) if err != nil { return nil, err }