Skip to content

Commit

Permalink
Merge pull request #3537 from PetrusZ/fix/env_sleep_cron
Browse files Browse the repository at this point in the history
fix env sleep cron not deleted after delete env or project
  • Loading branch information
jamsman94 authored May 31, 2024
2 parents 73d35ff + bebfe78 commit ce6706f
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 10 deletions.
26 changes: 25 additions & 1 deletion pkg/microservice/aslan/core/environment/service/environment.go
Original file line number Diff line number Diff line change
Expand Up @@ -2003,7 +2003,10 @@ func DeleteProduct(username, envName, productName, requestID string, isDelete bo
log.Infof("[%s] delete product %s", username, productInfo.Namespace)
commonservice.LogProductStats(username, setting.DeleteProductEvent, productName, requestID, eventStart, log)

// @todo stop env sleep cron
err = deleteEnvSleepCron(productInfo.ProductName, productInfo.EnvName)
if err != nil {
log.Errorf("deleteEnvSleepCron error: %v", err)
}

ctx := context.TODO()
switch productInfo.Source {
Expand Down Expand Up @@ -4386,3 +4389,24 @@ func UpsertEnvSleepCron(projectName, envName string, production *bool, req *EnvS

return nil
}

func deleteEnvSleepCron(projectName, envName string) error {
sleepName := util.GetEnvSleepCronName(projectName, envName, true)
opt := &commonrepo.CronjobDeleteOption{
ParentName: sleepName,
ParentType: setting.EnvSleepCronjob,
}
err := commonrepo.NewCronjobColl().Delete(opt)
if err != nil {
return fmt.Errorf("failed to delete env sleep cron job %s for sleep, err: %w", sleepName, err)
}

awakeName := util.GetEnvSleepCronName(projectName, envName, false)
opt.ParentName = awakeName
err = commonrepo.NewCronjobColl().Delete(opt)
if err != nil {
return fmt.Errorf("failed to delete env sleep cron job %s for awake, err: %w", sleepName, err)
}

return nil
}
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,10 @@ func DeleteProductionProduct(username, envName, productName, requestID string, l
log.Errorf("failed to delete zadig label from namespace %s, error: %v", productInfo.Namespace, err)
}

// @todo stop env sleep cron
err = deleteEnvSleepCron(productInfo.ProductName, productInfo.EnvName)
if err != nil {
log.Errorf("deleteEnvSleepCron error: %v", err)
}

if productInfo.IstioGrayscale.Enable && !productInfo.IstioGrayscale.IsBase {
ctx := context.TODO()
Expand Down
6 changes: 2 additions & 4 deletions pkg/microservice/aslan/core/project/handler/product.go
Original file line number Diff line number Diff line change
Expand Up @@ -365,10 +365,8 @@ func DeleteProductTemplate(c *gin.Context) {

isDelete, err := strconv.ParseBool(c.Query("is_delete"))
if err != nil {
if err != nil {
ctx.Err = e.ErrInvalidParam.AddDesc("invalidParam is_delete")
return
}
ctx.Err = e.ErrInvalidParam.AddDesc("invalidParam is_delete")
return
}
ctx.Err = projectservice.DeleteProductTemplate(ctx.UserName, projectKey, ctx.RequestID, isDelete, ctx.Logger)
}
Expand Down
26 changes: 25 additions & 1 deletion pkg/microservice/aslan/core/project/service/product.go
Original file line number Diff line number Diff line change
Expand Up @@ -667,7 +667,10 @@ func DeleteProductTemplate(userName, productName, requestID string, isDelete boo
return e.ErrDeleteProduct
}

// @todo stop env sleep cron
err = deleteEnvSleepCron(env.ProductName, env.EnvName)
if err != nil {
log.Errorf("deleteEnvSleepCron error: %v", err)
}
}

if err = DeleteTestModules(productName, requestID, log); err != nil {
Expand Down Expand Up @@ -1487,3 +1490,24 @@ func GetUnGroupedProjectKeys() ([]string, error) {
}
return unGroupedKeys, nil
}

func deleteEnvSleepCron(projectName, envName string) error {
sleepName := util.GetEnvSleepCronName(projectName, envName, true)
opt := &commonrepo.CronjobDeleteOption{
ParentName: sleepName,
ParentType: setting.EnvSleepCronjob,
}
err := commonrepo.NewCronjobColl().Delete(opt)
if err != nil {
return fmt.Errorf("failed to delete env sleep cron job %s for sleep, err: %w", sleepName, err)
}

awakeName := util.GetEnvSleepCronName(projectName, envName, false)
opt.ParentName = awakeName
err = commonrepo.NewCronjobColl().Delete(opt)
if err != nil {
return fmt.Errorf("failed to delete env sleep cron job %s for awake, err: %w", sleepName, err)
}

return nil
}
2 changes: 2 additions & 0 deletions pkg/microservice/aslan/core/stat/service/ai/ai_analysis.go
Original file line number Diff line number Diff line change
Expand Up @@ -469,6 +469,8 @@ func AnalyzeMonthAttention(start, end int64, data []*service2.MonthAttention, lo
}
}

answer = strings.TrimPrefix(answer, "```json\n")
answer = strings.TrimSuffix(answer, "```")
resp := &AIAttentionResp{}
err = json.Unmarshal([]byte(answer), resp)
if err != nil {
Expand Down
3 changes: 2 additions & 1 deletion pkg/microservice/aslan/core/stat/service/ai/stat_prompt.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,5 +90,6 @@ const AttentionPrompt = `你需要从两个月数据中做对比,分析出两
1.步骤一,计算current_month和last_month的构建成功率,测试成功率,部署成功率,发布成功率,发布频次,以及需求研发周期等数据的差值,你必须对计算结果做检查,判断是否正确,否则重新计算;
2.步骤二,根据差值的绝对值从大到小排序,取前三个差值最大的数据;
3.步骤三,根据差值的正负,分别输出三条变化的内容,如果差值为正,则输出“项目A测试成功率提升了40%”,如果差值为负,则输出“项目A测试成功率下降了40%”。
你的输出必须是JSON格式,返回前必须对你的回答进行检查,并根据两个月差异的从大到小进行排序再返回,保证差异最大的内容在最上面,有错误则重新进行计算并分析,如果项目数大于5,则返回变化最大的5条内容,如果项目数量小于5条,则返回变化最大的3条内容,如果没有数据,则返回如下JSON内容{\n \"answer\":[]\n}。
你的输出必须是JSON格式,返回前必须对你的回答进行检查,并根据两个月差异的从大到小进行排序再返回,保证差异最大的内容在最上面,有错误则重新进行计算并分析,如果项目数大于5,则返回变化最大的5条内容,如果项目数量小于5条,则返回变化最大的3条内容。
注意不需要返回分析步骤,如果没有数据,则返回如下JSON内容{\n \"answer\":[]\n}。
`
13 changes: 11 additions & 2 deletions pkg/microservice/aslan/core/stat/service/stat_calculator.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"strings"

"github.com/Knetic/govaluate"
"go.mongodb.org/mongo-driver/mongo"

"github.com/koderover/zadig/v2/pkg/microservice/aslan/config"
commonrepo "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/repository/mongodb"
Expand Down Expand Up @@ -458,7 +459,11 @@ func GetRequirementDevelopmentLeadTime(startTime, endTime int64, project string)
ItemKey: "requirement_development_lead_time",
})
if err != nil {
return 0.0, err
if err != mongo.ErrNoDocuments {
return 0.0, err
} else {
return 0.0, nil
}
}
externalSystem, err := commonrepo.NewExternalSystemColl().GetByID(boardConfig.APIConfig.ExternalSystemId)
if err != nil {
Expand Down Expand Up @@ -488,7 +493,11 @@ func GetRequirementDeliveryLeadTime(startTime, endTime int64, project string) (f
ItemKey: "requirement_delivery_lead_time",
})
if err != nil {
return 0.0, err
if err != mongo.ErrNoDocuments {
return 0.0, err
} else {
return 0.0, nil
}
}
externalSystem, err := commonrepo.NewExternalSystemColl().GetByID(boardConfig.APIConfig.ExternalSystemId)
if err != nil {
Expand Down

0 comments on commit ce6706f

Please sign in to comment.