Skip to content

Commit

Permalink
Merge remote-tracking branch 'github-bk-bcs/master'
Browse files Browse the repository at this point in the history
* github-bk-bcs/master:
  fix: 批量修改权限添加loading效果 (#3298)
  feat: 支持配置模板文件权限、用户、用户组批量编辑--story=118013648 (#3297)
  feat: 模板新增批量修改权限 (#3296)
  feat:资源视图列表增加资源创建来源 (#3251)
  feat:bcs-helm-manager/bcs-project-manager/bcs-cluster-manager 接入trace (#3203)
  feat:新增dependabot alerts导出到表格方法 (#3266)
  • Loading branch information
wenxinlee2015 committed Jun 20, 2024
2 parents ebdc69c + 7c3ba44 commit 0a79aee
Show file tree
Hide file tree
Showing 42 changed files with 8,184 additions and 6,853 deletions.
33 changes: 33 additions & 0 deletions bcs-services/bcs-bscp/cmd/config-server/service/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -542,3 +542,36 @@ func (s *Service) BatchUpsertTemplates(ctx context.Context, req *pbcs.BatchUpser
resp := &pbcs.BatchUpsertTemplatesResp{Ids: data.Ids}
return resp, nil
}

// BatchUpdateTemplatePermissions 批量更新模板权限
func (s *Service) BatchUpdateTemplatePermissions(ctx context.Context, req *pbcs.BatchUpdateTemplatePermissionsReq) (
*pbcs.BatchUpdateTemplatePermissionsResp, error) {

grpcKit := kit.FromGrpcContext(ctx)

res := []*meta.ResourceAttribute{
{Basic: meta.Basic{Type: meta.Biz, Action: meta.FindBusinessResource}, BizID: req.BizId},
}

if err := s.authorizer.Authorize(grpcKit, res...); err != nil {
return nil, err
}

if req.User == "" && req.UserGroup == "" && req.Privilege == "" {
return nil, nil
}

resp, err := s.client.DS.BatchUpdateTemplatePermissions(grpcKit.RpcCtx(), &pbds.BatchUpdateTemplatePermissionsReq{
BizId: req.BizId,
TemplateIds: req.TemplateIds,
User: req.User,
UserGroup: req.UserGroup,
Privilege: req.Privilege,
})

if err != nil {
return nil, err
}

return &pbcs.BatchUpdateTemplatePermissionsResp{Ids: resp.Ids}, nil
}
49 changes: 49 additions & 0 deletions bcs-services/bcs-bscp/cmd/data-service/service/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@ import (
"strings"
"time"

"github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf"
"github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/gen"
"github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table"
"github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n"
"github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit"
"github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/logs"
pbbase "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/protocol/core/base"
Expand Down Expand Up @@ -953,3 +955,50 @@ func (s *Service) validateBatchUpsertTemplates(grpcKit *kit.Kit, updateId []uint
}
return oldTemplateData, nil
}

// BatchUpdateTemplatePermissions 批量更新模板权限
func (s *Service) BatchUpdateTemplatePermissions(ctx context.Context, req *pbds.BatchUpdateTemplatePermissionsReq) (
*pbds.BatchUpdateTemplatePermissionsResp, error) {

kt := kit.FromGrpcContext(ctx)

// 获取最新的模板配置
tmps, err := s.dao.TemplateRevision().ListLatestRevisionsGroupByTemplateIds(kt, req.GetTemplateIds())
if err != nil {
return nil, errf.Errorf(errf.DBOpFailed,
i18n.T(kt, fmt.Sprintf("lists the latest version by template ids failed, err: %s", err.Error())))
}

toCreate := make([]*table.TemplateRevision, 0)
for _, v := range tmps {
v.Spec.RevisionName = tools.GenerateRevisionName()
if req.User != "" {
v.Spec.Permission.User = req.User
}
if req.UserGroup != "" {
v.Spec.Permission.UserGroup = req.UserGroup
}
if req.Privilege != "" {
v.Spec.Permission.Privilege = req.Privilege
}
v.Revision = &table.CreatedRevision{
Creator: kt.User,
CreatedAt: time.Now().UTC(),
}
toCreate = append(toCreate, &table.TemplateRevision{
Spec: v.Spec,
Attachment: v.Attachment,
Revision: v.Revision,
})
}
if err := s.dao.TemplateRevision().BatchCreate(kt, toCreate); err != nil {
return nil, errf.Errorf(errf.DBOpFailed,
i18n.T(kt, fmt.Sprintf("batch update of template permissions failed, err: %s", err.Error())))
}

ids := []uint32{}
for _, v := range toCreate {
ids = append(ids, v.ID)
}
return &pbds.BatchUpdateTemplatePermissionsResp{Ids: ids}, nil
}
33 changes: 24 additions & 9 deletions bcs-services/bcs-bscp/pkg/dal/dao/template_revision.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ type TemplateRevision interface {
BatchCreateWithTx(kit *kit.Kit, tx *gen.QueryTx, revisions []*table.TemplateRevision) error
// ListLatestRevisionsGroupByTemplateIds Lists the latest version groups by template ids
ListLatestRevisionsGroupByTemplateIds(kit *kit.Kit, templateIDs []uint32) ([]*table.TemplateRevision, error)
// BatchCreate batch create template revisions.
BatchCreate(kit *kit.Kit, revisions []*table.TemplateRevision) error
}

var _ TemplateRevision = new(templateRevisionDao)
Expand All @@ -64,6 +66,25 @@ type templateRevisionDao struct {
auditDao AuditDao
}

// BatchCreate batch create template revisions.
func (dao *templateRevisionDao) BatchCreate(kit *kit.Kit, revisions []*table.TemplateRevision) error {
if len(revisions) == 0 {
return nil
}
ids, err := dao.idGen.Batch(kit, table.TemplateRevisionsTable, len(revisions))
if err != nil {
return err
}
for i, item := range revisions {
if err := item.ValidateCreate(); err != nil {
return err
}
item.ID = ids[i]
}

return dao.genQ.TemplateRevision.WithContext(kit.Ctx).CreateInBatches(revisions, 200)
}

// Create one template revision instance.
func (dao *templateRevisionDao) Create(kit *kit.Kit, g *table.TemplateRevision) (uint32, error) {
if err := g.ValidateCreate(); err != nil {
Expand Down Expand Up @@ -289,21 +310,15 @@ func (dao *templateRevisionDao) BatchCreateWithTx(kit *kit.Kit, tx *gen.QueryTx,
}

// ListLatestRevisionsGroupByTemplateIds Lists the latest version groups by template ids
// nolint
func (dao *templateRevisionDao) ListLatestRevisionsGroupByTemplateIds(kit *kit.Kit,
templateIDs []uint32) ([]*table.TemplateRevision, error) {
m := dao.genQ.TemplateRevision
// 根据templateIDs获取一列最大 templateRevisionIDs
// 再通过最大 templateRevisionIDs 获取 templateRevision 数据
var templateRevisionIDs []struct {
Id uint32
}
err := m.WithContext(kit.Ctx).
Select(m.ID.Max().As("id")).
Where(m.TemplateID.In(templateIDs...)).
var templateRevisionIDs []struct{ Id uint32 }
if err := m.WithContext(kit.Ctx).Select(m.ID.Max().As("id")).Where(m.TemplateID.In(templateIDs...)).
Group(m.TemplateID).
Scan(&templateRevisionIDs)
if err != nil {
Scan(&templateRevisionIDs); err != nil {
return nil, err
}
ids := []uint32{}
Expand Down
Loading

0 comments on commit 0a79aee

Please sign in to comment.