Skip to content

Commit

Permalink
merge frontned (#5126)
Browse files Browse the repository at this point in the history
  • Loading branch information
hLinx committed Jun 24, 2024
2 parents 8156fbd + e90dde2 commit b9a2981
Show file tree
Hide file tree
Showing 226 changed files with 19,010 additions and 876 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -203,8 +203,8 @@ func (u *AddUser) execScript() error {
return err
}
if flag == true {
u.runtime.Logger.Info("user:%s has been existed", u.ConfParams.Username)
return nil
u.runtime.Logger.Error("user:%s has been existed", u.ConfParams.Username)
return fmt.Errorf("user:%s has been existed", u.ConfParams.Username)
}
cmd = fmt.Sprintf(
"%s -u %s -p '%s' --host %s --port %d --authenticationDatabase=admin --quiet --eval '%s' %s",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,8 @@ func (d *DelUser) execScript() error {
return err
}
if flag == false {
d.runtime.Logger.Info(fmt.Sprintf("user:%s is not existed", d.ConfParams.Username))
return nil
d.runtime.Logger.Error(fmt.Sprintf("user:%s is not existed", d.ConfParams.Username))
return fmt.Errorf("user:%s is not existed", d.ConfParams.Username)
}

// 执行脚本
Expand Down
42 changes: 19 additions & 23 deletions dbm-services/mysql/db-priv/service/migrate_account_rule.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,17 @@ func (m *MigratePara) MigrateAccountRule(jsonPara string, ticket string) ([]Priv
Self: openDB(m.GcsDb.User, m.GcsDb.Psw, fmt.Sprintf("%s:%s", m.GcsDb.Host, m.GcsDb.Port), m.GcsDb.Name),
}
defer GcsDb.Self.Close()
// 检查scr、gcs中的账号规则,mysql和spider的一起检查
users, errMsg := CheckOldPriv(m.Key, appWhere, m.SapPassword, &exclude)
// 检查scr、gcs中的账号规则,mysql和spider分开检查
var dbmodule string
if m.Range == "mysql" {
dbmodule = " not like 'spider%' "
} else if m.Range == "spider" {
dbmodule = " like 'spider%' "
} else {
return nil, nil, nil, nil, nil, fmt.Errorf("不支持range值[%s],支持mysql、spider", m.Range)
}

users, errMsg := CheckOldPriv(m.Key, appWhere, m.SapPassword, &exclude, dbmodule)
passTips := "all check pass"
// 仅检查,不迁移
if m.Mode == "check" {
Expand Down Expand Up @@ -60,8 +69,7 @@ func (m *MigratePara) MigrateAccountRule(jsonPara string, ticket string) ([]Priv
AddPrivLog(PrivLog{BkBizId: 0, Ticket: ticket, Operator: "migrator", Para: jsonPara, Time: time.Now()})

// 获取需要迁移的scr、gcs中的账号规则
// db_module为spider_master/spider_slave属于spider的权限规则
// 其他不明确的,同时迁移到mysql和spider下
// db_module包含spider属于spider的权限规则;其他迁移到mysql下
mysqlUids, uids, exUids, errOuter := FilterMigratePriv(appWhere, &exclude)
if errOuter != nil {
slog.Error("get privilege uid to migrate", "err", errOuter)
Expand Down Expand Up @@ -89,20 +97,8 @@ func (m *MigratePara) MigrateAccountRule(jsonPara string, ticket string) ([]Priv
}
slog.Info("migrate account rule success")
return nil, nil, success, fail, exUids, nil
} else if m.Range == "all" {
success, fail, errs := MigrateForMysqlOrSpider(apps, mysqlUids, "mysql", users)
successSpider, failSpider, errs1 := MigrateForMysqlOrSpider(apps, mysqlUids, "spider", users)
errs = append(errs, errMsg...)
errs = append(errs, errs1...)
if len(errs) > 0 {
slog.Info("migrate account rule fail")
return success, fail, successSpider, failSpider, exUids, errno.MigrateFail.Add("\n" +
strings.Join(errs, "\n"))
}
slog.Info("migrate account rule success")
return success, fail, successSpider, failSpider, exUids, nil
} else {
return nil, nil, nil, nil, nil, fmt.Errorf("不支持range值[%s],支持all、mysql、spider", m.Range)
return nil, nil, nil, nil, nil, fmt.Errorf("不支持range值[%s],支持mysql、spider", m.Range)
}
}

Expand Down Expand Up @@ -184,28 +180,28 @@ func (m *MigratePara) CheckPara() (map[string]int64, error) {
return nil, fmt.Errorf(
"mode值为:%s,可选模式\ncheck --- 仅检查不实施\nrun --- 检查并且迁移\nforce-run --- 强制执行", m.Mode)
}
if !(m.Range == "all" || m.Range == "mysql" || m.Range == "spider") {
return nil, fmt.Errorf("不支持range值[%s],支持all、mysql、spider", m.Range)
if !(m.Range == "mysql" || m.Range == "spider") {
return nil, fmt.Errorf("不支持range值[%s],支持mysql、spider", m.Range)
}
return apps, nil
}

// CheckOldPriv 检查旧的密码格式
func CheckOldPriv(key, appWhere, sap string, exclude *[]AppUser) ([]PrivModule, []string) {
func CheckOldPriv(key, appWhere, sap string, exclude *[]AppUser, dbmodule string) ([]PrivModule, []string) {
slog.Info("begin check different privileges")
// 检查是否存在多种权限,需要合并
err1 := CheckDifferentPrivileges(appWhere)
err1 := CheckDifferentPrivileges(appWhere, dbmodule)
slog.Info("end check different privileges")
slog.Info("CheckDifferentPrivileges", "error", err1)
slog.Info("CheckDifferentPrivileges", "exclude", exclude)
slog.Info("begin check privileges format")
// 检查权限格式是否正确
err2 := CheckPrivilegesFormat(appWhere, exclude)
err2 := CheckPrivilegesFormat(appWhere, exclude, dbmodule)
slog.Info("end check privileges format")
slog.Info("CheckPrivilegesFormat", "error", err2)
slog.Info("CheckPrivilegesFormat", "exclude", exclude)
// 检查密码,并且获取帐号以及密码
users, err3 := CheckAndGetPassword(key, appWhere, sap, exclude)
users, err3 := CheckAndGetPassword(key, appWhere, sap, exclude, dbmodule)
slog.Info("CheckAndGetPassword", "error", err3)
slog.Info("CheckAndGetPassword", "exclude", exclude)
err := append(err1, err2...)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,10 @@ func FilterMigratePriv(appWhere string, exclude *[]AppUser) ([]string, []string,
}
if !excludeFlag {
suid := strconv.Itoa(module.Uid)
uids = append(uids, suid)
// gcs spider_master 、spider_slave 的帐号规则不被添加到dbm tendbha的帐号规则中
if module.DbModule != "spider_master" && module.DbModule != "spider_slave" {
// gcs DbModule包含spider的帐号规则迁移到tendbcluster,否则添加到dbm tendbha的帐号规则中
if strings.Contains(module.DbModule, "spider") {
uids = append(uids, suid)
} else {
mysqlUids = append(mysqlUids, suid)
}
} else {
Expand Down Expand Up @@ -164,7 +165,7 @@ func DoAddAccountRule(rule *PrivModule, apps map[string]int64, clusterType strin
}

// CheckAndGetPassword 检查以及获取密码
func CheckAndGetPassword(key, appWhere, sap string, exclude *[]AppUser) ([]PrivModule, []string) {
func CheckAndGetPassword(key, appWhere, sap string, exclude *[]AppUser, dbmodule string) ([]PrivModule, []string) {
users := make([]*PrivModule, 0)
var errMsg []string
var migrateUsers []PrivModule
Expand All @@ -173,7 +174,7 @@ func CheckAndGetPassword(key, appWhere, sap string, exclude *[]AppUser) ([]PrivM
Psw string `gorm:"column:psw;not_null" json:"psw"`
}
vsql := fmt.Sprintf("select app,user,AES_DECRYPT(psw,'%s') as psw"+
" from tb_app_priv_module where app in (%s) ", key, appWhere)
" from tb_app_priv_module where app in (%s) and db_module %s", key, appWhere, dbmodule)
if len(*exclude) > 0 {
var where string
for _, ex := range *exclude {
Expand Down Expand Up @@ -283,17 +284,18 @@ func CheckAndGetPassword(key, appWhere, sap string, exclude *[]AppUser) ([]PrivM
*exclude = append(*exclude, diffentPassword...)
}
if len(wrongSapPassword) > 0 {
errMsg = append(errMsg, fmt.Sprintf("sap账号密码错误:%v", diffentPassword))
errMsg = append(errMsg, fmt.Sprintf("sap账号密码错误:%v", wrongSapPassword))
*exclude = append(*exclude, wrongSapPassword...)
}
return migrateUsers, errMsg
}

// CheckDifferentPrivileges 同账号有不同的权限范围
func CheckDifferentPrivileges(appWhere string) []string {
func CheckDifferentPrivileges(appWhere string, dbmodule string) []string {
var errMsg []string
vsql := fmt.Sprintf("select app,user,dbname,count(distinct(privileges)) as cnt "+
" from tb_app_priv_module where app in (%s) group by app,user,dbname order by 1,2,3", appWhere)
" from tb_app_priv_module where app in (%s) and db_module %s group by app,user,dbname order by 1,2,3",
appWhere, dbmodule)
count := make([]*Count, 0)
err := GcsDb.Self.Debug().Raw(vsql).Scan(&count).Error
if err != nil {
Expand All @@ -320,11 +322,11 @@ func CheckDifferentPrivileges(appWhere string) []string {
}

// CheckPrivilegesFormat 检查权限格式
func CheckPrivilegesFormat(appWhere string, exclude *[]AppUser) []string {
func CheckPrivilegesFormat(appWhere string, exclude *[]AppUser, dbmodule string) []string {
var errMsg []string
UniqMap := make(map[string]struct{})
vsql := fmt.Sprintf("select uid,app,user,dbname,privileges "+
" from tb_app_priv_module where app in (%s)", appWhere)
" from tb_app_priv_module where app in (%s) and db_module %s ", appWhere, dbmodule)
rules := make([]*PrivModule, 0)
err := GcsDb.Self.Debug().Raw(vsql).Scan(&rules).Error
if err != nil {
Expand Down
6 changes: 2 additions & 4 deletions dbm-ui/backend/bk_dataview/grafana/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,13 +129,11 @@ def perform_provisioning(self, request):
# 仅当db中配置了监控的token,才进行数据源初始化
if SystemSettings.objects.filter(key=SystemSettingsEnum.BKM_DBM_TOKEN.value).exists():
# 注入数据源
ds_list = []
logger.info("create datasource monitor for grafana")
for ds in provisioning.datasources(request, org_name, org_id):
if not isinstance(ds, Datasource):
raise ValueError("%s is not instance %s" % (type(ds), Datasource))
ds_list.append(ds)
self.handler.handle_datasources(request, org_name, org_id, ds_list)
logger.info(f"create datasource monitor for grafana. {ds}")
self.handler.handle_datasources(request, org_name, org_id, [ds])
else:
logger.error("skip datasource init for grafana, please set BKM_DBM_TOKEN in database")

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 3.2.25 on 2024-06-21 04:16

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("db_dirty", "0001_initial"),
]

operations = [
migrations.AlterModelOptions(
name="dirtymachine",
options={"verbose_name": "污点池机器(DirtyMachine)", "verbose_name_plural": "污点池机器(DirtyMachine)"},
),
]
3 changes: 3 additions & 0 deletions dbm-ui/backend/db_dirty/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,6 @@ class DirtyMachine(AuditedModel):
ip = models.CharField(max_length=LEN_MIDDLE, help_text=_("主机IP"))
flow = models.ForeignKey(Flow, on_delete=models.CASCADE, help_text=_("关联任务"))
ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE, help_text=_("关联单据"))

class Meta:
verbose_name = verbose_name_plural = _("污点池机器(DirtyMachine)")
26 changes: 26 additions & 0 deletions dbm-ui/backend/db_meta/migrations/0038_auto_20240621_1226.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Generated by Django 3.2.25 on 2024-06-21 04:26

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("db_meta", "0037_auto_20240520_1104"),
]

operations = [
migrations.AlterModelOptions(
name="proxyinstance",
options={"verbose_name": "代理实例(ProxyInstance)", "verbose_name_plural": "代理实例(ProxyInstance)"},
),
migrations.AlterModelOptions(
name="storageinstance",
options={"verbose_name": "存储实例(StorageInstance)", "verbose_name_plural": "存储实例(StorageInstance)"},
),
migrations.AlterField(
model_name="clusterentry",
name="entry",
field=models.CharField(default="", max_length=200),
),
]
2 changes: 1 addition & 1 deletion dbm-ui/backend/db_meta/models/cluster_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class ClusterEntry(AuditedModel):

cluster = models.ForeignKey(Cluster, on_delete=models.PROTECT)
cluster_entry_type = models.CharField(max_length=64, choices=ClusterEntryType.get_choices(), default="")
entry = models.CharField(max_length=200, unique=True, default="")
entry = models.CharField(max_length=200, default="")

forward_to = models.ForeignKey(
"self",
Expand Down
2 changes: 0 additions & 2 deletions dbm-ui/backend/db_meta/models/instance.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,6 @@ class Meta:
"machine",
"port",
)
ordering = ("-create_at",)

@property
def instance_type(self):
Expand Down Expand Up @@ -227,7 +226,6 @@ class Meta:
"machine",
"port",
)
ordering = ("-create_at",)

@property
def instance_role(self):
Expand Down
4 changes: 2 additions & 2 deletions dbm-ui/backend/db_meta/models/machine.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ def __str__(self):

@property
def dbm_meta(self) -> dict:
proxies = self.proxyinstance_set.all()
storages = self.storageinstance_set.all()
proxies = self.proxyinstance_set.order_by("-create_at").all()
storages = self.storageinstance_set.order_by("-create_at").all()

host_labels = []

Expand Down
25 changes: 25 additions & 0 deletions dbm-ui/backend/db_monitor/migrations/0020_auto_20240621_1216.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Generated by Django 3.2.25 on 2024-06-21 04:16

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("db_monitor", "0019_alter_dashboard_unique_together"),
]

operations = [
migrations.AlterModelOptions(
name="dutyrule",
options={"verbose_name": "轮值规则(DutyRule)", "verbose_name_plural": "轮值规则(DutyRule)"},
),
migrations.AlterModelOptions(
name="monitorpolicy",
options={"verbose_name": "告警策略(MonitorPolicy)"},
),
migrations.AlterModelOptions(
name="noticegroup",
options={"verbose_name": "告警通知组(NoticeGroup)", "verbose_name_plural": "告警通知组(NoticeGroup)"},
),
]
6 changes: 3 additions & 3 deletions dbm-ui/backend/db_monitor/models/alarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class NoticeGroup(AuditedModel):
dba_sync = models.BooleanField(help_text=_("自动同步DBA人员配置"), default=True)

class Meta:
verbose_name_plural = verbose_name = _("告警通知组")
verbose_name_plural = verbose_name = _("告警通知组(NoticeGroup)")
unique_together = ("bk_biz_id", "name")

@classmethod
Expand Down Expand Up @@ -327,7 +327,7 @@ def priority_distinct(cls) -> list:
return list(cls.objects.values_list("priority", flat=True).distinct().order_by("-priority"))

class Meta:
verbose_name_plural = verbose_name = _("轮值规则")
verbose_name_plural = verbose_name = _("轮值规则(DutyRule)")


class RuleTemplate(AuditedModel):
Expand Down Expand Up @@ -607,7 +607,7 @@ class MonitorPolicy(AuditedModel):
)

class Meta:
verbose_name = _("告警策略")
verbose_name = _("告警策略(MonitorPolicy)")

def calc_from_targets(self):
"""根据目标计算优先级"""
Expand Down
21 changes: 21 additions & 0 deletions dbm-ui/backend/db_package/migrations/0005_alter_package_options.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Generated by Django 3.2.25 on 2024-06-21 04:16

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("db_package", "0004_alter_package_size"),
]

operations = [
migrations.AlterModelOptions(
name="package",
options={
"ordering": ("-create_at",),
"verbose_name": "介质包(Package)",
"verbose_name_plural": "介质包(Package)",
},
),
]
2 changes: 1 addition & 1 deletion dbm-ui/backend/db_package/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class Package(AuditedModel):
update_at = models.DateTimeField(_("更新时间"), default=timezone.now)

class Meta:
verbose_name = _("介质包(Package)")
verbose_name_plural = verbose_name = _("介质包(Package)")
ordering = ("-create_at",)

@classmethod
Expand Down
1 change: 1 addition & 0 deletions dbm-ui/backend/db_periodic_task/local_tasks/db_proxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ def _job_push_config_file(_cloud_id, _file_list, _nginx_list):
"bk_cloud_id": _cloud_id,
"bk_agent_id": _nginx["bk_agent_id"],
"ip": _nginx["ip"],
"bk_host_id": _nginx["bk_host_id"],
"bk_host_innerip": _nginx["ip"],
}
for _nginx in _nginx_list
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Generated by Django 3.2.25 on 2024-06-21 04:16

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("db_periodic_task", "0001_initial"),
]

operations = [
migrations.AlterModelOptions(
name="dbperiodictask",
options={
"ordering": ["-id"],
"verbose_name": "周期任务(PeriodicTask)",
"verbose_name_plural": "周期任务(PeriodicTask)",
},
),
]
Loading

0 comments on commit b9a2981

Please sign in to comment.