-
Notifications
You must be signed in to change notification settings - Fork 373
/
org_resource_deployment.go
137 lines (122 loc) · 3.77 KB
/
org_resource_deployment.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
// Copyright (c) 2021 Terminus, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package dbclient
import (
"time"
"github.com/jinzhu/gorm"
"github.com/erda-project/erda/apistructs"
)
// ListDeploymentsByOrgID list deployment by org id
func (c *DBClient) ListDeploymentsByOrgID(param *apistructs.OrgRunningTasksListRequest,
orgID uint64) (int64, *[]Deployments, error) {
var (
total int64
deployments []Deployments
endedAt time.Time
err error
)
db := c.DB.Where("org_id = ?", orgID)
if param.Cluster != "" {
db = db.Where("cluster_name = ?", param.Cluster)
}
if param.ProjectName != "" {
db = db.Where("project_name = ?", param.ProjectName)
}
if param.AppName != "" {
db = db.Where("application_name = ?", param.AppName)
}
if param.PipelineID != 0 {
db = db.Where("pipeline_id = ?", param.PipelineID)
}
if param.Status != "" {
db = db.Where("status = ?", param.Status)
}
if param.UserID != "" {
db = db.Where("user_id = ?", param.UserID)
}
if param.Env != "" {
db = db.Where("env = ?", param.Env)
}
if param.EndTime == 0 {
endedAt = time.Now()
} else {
endedAt = time.Unix(0, param.EndTime*1000000)
}
db = db.Where("created_at < ?", endedAt)
if param.StartTime != 0 {
startedAt := time.Unix(0, param.StartTime*1000000)
db = db.Where("created_at > ?", startedAt)
}
if err = db.Order("updated_at DESC").
Offset((param.PageNo - 1) * param.PageSize).
Limit(param.PageSize).Find(&deployments).Error; err != nil {
return 0, nil, err
}
// 符合条件的 deployment 总量
if err = db.Model(&Deployments{}).Count(&total).Error; err != nil {
return 0, nil, err
}
return total, &deployments, nil
}
// DeleteDeployment 删除 deployment 信息
func (c *DBClient) DeleteDeployment(orgID string, taskID uint64) error {
return c.Where("org_id = ?", orgID).Where("task_id = ?", taskID).
Delete(&Deployments{}).Error
}
// GetDeployment get deployment info
func (c *DBClient) GetDeployment(orgID string, taskID uint64) []Deployments {
var deployments []Deployments
if err := c.Where("org_id = ?", orgID).
Where("task_id = ?", taskID).
Find(&deployments).Error; err != nil {
if gorm.IsRecordNotFoundError(err) {
return nil
}
return nil
}
return deployments
}
// UpdateDeploymentStatus update deployment status
func (c *DBClient) UpdateDeploymentStatus(deployment *Deployments) error {
return c.Save(deployment).Error
}
// CreateDeployment create running deployment
func (c *DBClient) CreateDeployment(deployment *Deployments) error {
return c.Create(deployment).Error
}
// ListExpiredDeployments list expire deployment from specific time
func (c *DBClient) ListExpiredDeployments(startTime string) []Deployments {
var deployments []Deployments
if err := c.Where("created_at < ?", startTime).
Find(&deployments).Error; err != nil {
if gorm.IsRecordNotFoundError(err) {
return nil
}
return nil
}
return deployments
}
// ListRunningDeployments list running deployments
func (c *DBClient) ListRunningDeployments() []Deployments {
var deployments []Deployments
if err := c.Where("status not in (?)",
[]string{"Success", "AnalyzeFailed", "Timeout", "StopByUser", "Failed", "NoNeedBySystem"}).
Find(&deployments).Error; err != nil {
if gorm.IsRecordNotFoundError(err) {
return nil
}
return nil
}
return deployments
}