Merge pull request #9548 from tb365/bugfix/tb-bugfix-121801

Bugfix/tb bugfix 121801
This commit is contained in:
Zexi Li
2020-12-23 09:47:43 +08:00
committed by GitHub
16 changed files with 59 additions and 14 deletions
+22 -3
View File
@@ -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")
+1 -1
View File
@@ -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()
}