mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-08-31 01:35:56 +08:00
Merge pull request #9548 from tb365/bugfix/tb-bugfix-121801
Bugfix/tb bugfix 121801
This commit is contained in:
@@ -33,6 +33,7 @@ import (
|
||||
|
||||
"yunion.io/x/onecloud/pkg/apis"
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/consts"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/policy"
|
||||
@@ -40,6 +41,7 @@ import (
|
||||
"yunion.io/x/onecloud/pkg/cloudprovider"
|
||||
"yunion.io/x/onecloud/pkg/httperrors"
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/util/rbacutils"
|
||||
"yunion.io/x/onecloud/pkg/util/stringutils2"
|
||||
)
|
||||
|
||||
@@ -190,12 +192,12 @@ func (man *SLoadbalancerAclManager) ValidateCreateData(ctx context.Context, user
|
||||
return nil, err
|
||||
}
|
||||
|
||||
input := apis.VirtualResourceCreateInput{}
|
||||
input := apis.SharableVirtualResourceCreateInput{}
|
||||
err = data.Unmarshal(&input)
|
||||
if err != nil {
|
||||
return nil, httperrors.NewInternalServerError("unmarshal VirtualResourceCreateInput fail %s", err)
|
||||
return nil, httperrors.NewInternalServerError("unmarshal SharableVirtualResourceCreateInput fail %s", err)
|
||||
}
|
||||
input, err = man.SVirtualResourceBaseManager.ValidateCreateData(ctx, userCred, ownerId, query, input)
|
||||
input, err = man.SSharableVirtualResourceBaseManager.ValidateCreateData(ctx, userCred, ownerId, query, input)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -216,6 +218,23 @@ func (man *SLoadbalancerAclManager) ValidateCreateData(ctx context.Context, user
|
||||
return region.GetDriver().ValidateCreateLoadbalancerAclData(ctx, userCred, data)
|
||||
}
|
||||
|
||||
func (lbacl *SLoadbalancerAcl) CustomizeCreate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) error {
|
||||
if !data.Contains("public_scope") {
|
||||
if db.IsAdminAllowPerform(userCred, lbacl, "public") && ownerId.GetProjectDomainId() == userCred.GetProjectDomainId() {
|
||||
lbacl.SetShare(rbacutils.ScopeSystem)
|
||||
} else if db.IsDomainAllowPerform(userCred, lbacl, "public") && ownerId.GetProjectId() == userCred.GetProjectId() && consts.GetNonDefaultDomainProjects() {
|
||||
// only if non_default_domain_projects turned on, share to domain
|
||||
lbacl.SetShare(rbacutils.ScopeDomain)
|
||||
} else {
|
||||
lbacl.SetShare(rbacutils.ScopeNone)
|
||||
}
|
||||
|
||||
data.(*jsonutils.JSONDict).Set("public_scope", jsonutils.NewString(lbacl.PublicScope))
|
||||
}
|
||||
|
||||
return lbacl.SSharableVirtualResourceBase.CustomizeCreate(ctx, userCred, ownerId, query, data)
|
||||
}
|
||||
|
||||
func (lbacl *SLoadbalancerAcl) AllowPerformStatus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -265,6 +265,7 @@ func (lbacl *SCachedLoadbalancerAcl) ValidateDeleteCondition(ctx context.Context
|
||||
Filter(sqlchemy.OR(sqlchemy.IsNull(pdF), sqlchemy.IsFalse(pdF))).
|
||||
Equals("domain_id", lbacl.DomainId).
|
||||
Equals("acl_id", lbaclId).
|
||||
Equals("cached_acl_id", lbaclId).
|
||||
CountWithError()
|
||||
if err != nil {
|
||||
return httperrors.NewInternalServerError("get acl count fail %s", err)
|
||||
|
||||
@@ -102,6 +102,7 @@ func (self *SCachedLoadbalancerCertificate) ValidateDeleteCondition(ctx context.
|
||||
n, err := t.Query().
|
||||
Equals("domain_id", self.DomainId).
|
||||
Equals("certificate_id", lbcertId).
|
||||
Equals("cached_certificate_id", self.GetId()).
|
||||
Filter(sqlchemy.OR(sqlchemy.IsNull(pdF), sqlchemy.IsFalse(pdF))).
|
||||
CountWithError()
|
||||
if err != nil {
|
||||
|
||||
@@ -30,6 +30,7 @@ import (
|
||||
|
||||
"yunion.io/x/onecloud/pkg/apis"
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/consts"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/policy"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/validators"
|
||||
@@ -340,6 +341,23 @@ func (man *SLoadbalancerCertificateManager) ValidateCreateData(ctx context.Conte
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (lbcert *SLoadbalancerCertificate) CustomizeCreate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) error {
|
||||
if !data.Contains("public_scope") {
|
||||
if db.IsAdminAllowPerform(userCred, lbcert, "public") && ownerId.GetProjectDomainId() == userCred.GetProjectDomainId() {
|
||||
lbcert.SetShare(rbacutils.ScopeSystem)
|
||||
} else if db.IsDomainAllowPerform(userCred, lbcert, "public") && ownerId.GetProjectId() == userCred.GetProjectId() && consts.GetNonDefaultDomainProjects() {
|
||||
// only if non_default_domain_projects turned on, share to domain
|
||||
lbcert.SetShare(rbacutils.ScopeDomain)
|
||||
} else {
|
||||
lbcert.SetShare(rbacutils.ScopeNone)
|
||||
}
|
||||
|
||||
data.(*jsonutils.JSONDict).Set("public_scope", jsonutils.NewString(lbcert.PublicScope))
|
||||
}
|
||||
|
||||
return lbcert.SSharableVirtualResourceBase.CustomizeCreate(ctx, userCred, ownerId, query, data)
|
||||
}
|
||||
|
||||
func (man *SLoadbalancerCertificateManager) InitializeData() error {
|
||||
// initialize newly added null certificate fingerprint column
|
||||
q := man.Query().IsNull("fingerprint")
|
||||
|
||||
@@ -102,7 +102,7 @@ func (region *SRegion) GetLoadbalancerBackends(backendgroupId string) ([]SLoadba
|
||||
}
|
||||
|
||||
func (backend *SLoadbalancerBackend) GetProjectId() string {
|
||||
return ""
|
||||
return backend.lbbg.GetProjectId()
|
||||
}
|
||||
|
||||
func (backend *SLoadbalancerBackend) SyncConf(ctx context.Context, port, weight int) error {
|
||||
|
||||
@@ -274,5 +274,5 @@ func (backendgroup *SLoadbalancerBackendGroup) RemoveBackendServer(serverId stri
|
||||
}
|
||||
|
||||
func (backendgroup *SLoadbalancerBackendGroup) GetProjectId() string {
|
||||
return ""
|
||||
return backendgroup.lb.GetProjectId()
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ func (backend *SLoadbalancerDefaultBackend) GetBackendId() string {
|
||||
}
|
||||
|
||||
func (backend *SLoadbalancerDefaultBackend) GetProjectId() string {
|
||||
return ""
|
||||
return backend.lbbg.GetProjectId()
|
||||
}
|
||||
|
||||
func (backend *SLoadbalancerDefaultBackend) SyncConf(ctx context.Context, port, weight int) error {
|
||||
|
||||
@@ -156,5 +156,5 @@ func (backendgroup *SLoadbalancerDefaultBackendGroup) RemoveBackendServer(server
|
||||
}
|
||||
|
||||
func (backendgroup *SLoadbalancerDefaultBackendGroup) GetProjectId() string {
|
||||
return ""
|
||||
return backendgroup.lb.GetProjectId()
|
||||
}
|
||||
|
||||
@@ -367,5 +367,5 @@ func (listerner *SLoadbalancerHTTPListener) Sync(ctx context.Context, lblis *clo
|
||||
}
|
||||
|
||||
func (listerner *SLoadbalancerHTTPListener) GetProjectId() string {
|
||||
return ""
|
||||
return listerner.lb.GetProjectId()
|
||||
}
|
||||
|
||||
@@ -397,5 +397,5 @@ func (listerner *SLoadbalancerHTTPSListener) Sync(ctx context.Context, lblis *cl
|
||||
}
|
||||
|
||||
func (listerner *SLoadbalancerHTTPSListener) GetProjectId() string {
|
||||
return ""
|
||||
return listerner.lb.GetProjectId()
|
||||
}
|
||||
|
||||
@@ -98,6 +98,12 @@ func (lbr *SLoadbalancerListenerRule) GetPath() string {
|
||||
}
|
||||
|
||||
func (lbr *SLoadbalancerListenerRule) GetProjectId() string {
|
||||
if lbr.httpListener != nil {
|
||||
return lbr.httpListener.GetProjectId()
|
||||
} else if lbr.httpsListener != nil {
|
||||
return lbr.httpsListener.GetProjectId()
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ func (backend *SLoadbalancerMasterSlaveBackend) GetBackendId() string {
|
||||
}
|
||||
|
||||
func (backend *SLoadbalancerMasterSlaveBackend) GetProjectId() string {
|
||||
return ""
|
||||
return backend.lbbg.GetProjectId()
|
||||
}
|
||||
|
||||
func (backend *SLoadbalancerMasterSlaveBackend) SyncConf(ctx context.Context, port, weight int) error {
|
||||
|
||||
@@ -211,5 +211,5 @@ func (backendgroup *SLoadbalancerMasterSlaveBackendGroup) RemoveBackendServer(se
|
||||
}
|
||||
|
||||
func (backendgroup *SLoadbalancerMasterSlaveBackendGroup) GetProjectId() string {
|
||||
return ""
|
||||
return backendgroup.lb.GetProjectId()
|
||||
}
|
||||
|
||||
@@ -137,5 +137,5 @@ func (region *SRegion) GetLoadbalancerServerCertificates() ([]SLoadbalancerServe
|
||||
}
|
||||
|
||||
func (certificate *SLoadbalancerServerCertificate) GetProjectId() string {
|
||||
return ""
|
||||
return certificate.ResourceGroupId
|
||||
}
|
||||
|
||||
@@ -356,5 +356,5 @@ func (listerner *SLoadbalancerTCPListener) Sync(ctx context.Context, lblis *clou
|
||||
}
|
||||
|
||||
func (listerner *SLoadbalancerTCPListener) GetProjectId() string {
|
||||
return ""
|
||||
return listerner.lb.GetProjectId()
|
||||
}
|
||||
|
||||
@@ -282,5 +282,5 @@ func (listerner *SLoadbalancerUDPListener) Sync(ctx context.Context, lblis *clou
|
||||
}
|
||||
|
||||
func (listerner *SLoadbalancerUDPListener) GetProjectId() string {
|
||||
return ""
|
||||
return listerner.lb.GetProjectId()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user