2018-03-14 14:12:26 +08:00
|
|
|
|
// Copyright (C) 2014-2018 Goodrain Co., Ltd.
|
2017-11-07 11:40:44 +08:00
|
|
|
|
// RAINBOND, Application Management Platform
|
2018-03-14 14:33:31 +08:00
|
|
|
|
|
2017-11-07 11:40:44 +08:00
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
|
|
|
// it under the terms of the GNU General Public License as published by
|
|
|
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
// (at your option) any later version. For any non-GPL usage of Rainbond,
|
|
|
|
|
// one or multiple Commercial Licenses authorized by Goodrain Co., Ltd.
|
|
|
|
|
// must be obtained first.
|
2018-03-14 14:33:31 +08:00
|
|
|
|
|
2017-11-07 11:40:44 +08:00
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
// GNU General Public License for more details.
|
2018-03-14 14:33:31 +08:00
|
|
|
|
|
2017-11-07 11:40:44 +08:00
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
|
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
|
|
package model
|
|
|
|
|
|
2018-03-04 22:48:50 +08:00
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"os"
|
|
|
|
|
"strings"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
2017-11-07 11:40:44 +08:00
|
|
|
|
|
|
|
|
|
//Model 默认字段
|
|
|
|
|
type Model struct {
|
2019-08-23 14:41:56 +08:00
|
|
|
|
ID uint `gorm:"column:ID;primary_key"`
|
2019-08-22 14:20:08 +08:00
|
|
|
|
CreatedAt time.Time `gorm:"column:create_time" json:"create_time"`
|
2017-11-07 11:40:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//IDModel 默认ID字段
|
|
|
|
|
type IDModel struct {
|
|
|
|
|
ID uint `gorm:"column:ID;primary_key"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Interface model interface
|
|
|
|
|
type Interface interface {
|
|
|
|
|
TableName() string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Tenants 租户信息
|
|
|
|
|
type Tenants struct {
|
|
|
|
|
Model
|
2018-11-14 23:08:30 +08:00
|
|
|
|
Name string `gorm:"column:name;size:40;unique_index"`
|
|
|
|
|
UUID string `gorm:"column:uuid;size:33;unique_index"`
|
|
|
|
|
EID string `gorm:"column:eid"`
|
2018-10-23 18:11:27 +08:00
|
|
|
|
LimitMemory int `gorm:"column:limit_memory"`
|
2017-11-07 11:40:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TableName 返回租户表名称
|
|
|
|
|
func (t *Tenants) TableName() string {
|
|
|
|
|
return "tenants"
|
|
|
|
|
}
|
|
|
|
|
|
2019-03-06 15:27:28 +08:00
|
|
|
|
// ServiceKind kind of service
|
|
|
|
|
type ServiceKind string
|
|
|
|
|
|
|
|
|
|
// ServiceKindThirdParty means third-party service
|
|
|
|
|
var ServiceKindThirdParty ServiceKind = "third_party"
|
|
|
|
|
|
|
|
|
|
// ServiceKindInternal means internal service
|
|
|
|
|
var ServiceKindInternal ServiceKind = "internal"
|
|
|
|
|
|
|
|
|
|
func (s ServiceKind) String() string {
|
|
|
|
|
return string(s)
|
|
|
|
|
}
|
|
|
|
|
|
2018-11-14 23:08:30 +08:00
|
|
|
|
//TenantServices app service base info
|
2017-11-07 11:40:44 +08:00
|
|
|
|
type TenantServices struct {
|
|
|
|
|
Model
|
|
|
|
|
TenantID string `gorm:"column:tenant_id;size:32" json:"tenant_id"`
|
|
|
|
|
ServiceID string `gorm:"column:service_id;size:32" json:"service_id"`
|
|
|
|
|
// 服务key
|
|
|
|
|
ServiceKey string `gorm:"column:service_key;size:32" json:"service_key"`
|
|
|
|
|
// 服务别名
|
|
|
|
|
ServiceAlias string `gorm:"column:service_alias;size:30" json:"service_alias"`
|
2018-11-14 23:08:30 +08:00
|
|
|
|
// service regist endpoint name(host name), used of statefulset
|
|
|
|
|
ServiceName string `gorm:"column:service_name;size:100" json:"service_name"`
|
2017-11-07 11:40:44 +08:00
|
|
|
|
// 服务描述
|
|
|
|
|
Comment string `gorm:"column:comment" json:"comment"`
|
|
|
|
|
// 容器CPU权重
|
|
|
|
|
ContainerCPU int `gorm:"column:container_cpu;default:500" json:"container_cpu"`
|
|
|
|
|
// 容器最大内存
|
|
|
|
|
ContainerMemory int `gorm:"column:container_memory;default:128" json:"container_memory"`
|
2018-11-19 18:56:28 +08:00
|
|
|
|
//UpgradeMethod service upgrade controller type
|
|
|
|
|
//such as : `Rolling` `OnDelete`
|
|
|
|
|
UpgradeMethod string `gorm:"column:upgrade_method;default:'Rolling'" json:"upgrade_method"`
|
2017-11-07 11:40:44 +08:00
|
|
|
|
// 扩容方式;0:无状态;1:有状态;2:分区
|
|
|
|
|
ExtendMethod string `gorm:"column:extend_method;default:'stateless';" json:"extend_method"`
|
|
|
|
|
// 节点数
|
|
|
|
|
Replicas int `gorm:"column:replicas;default:1" json:"replicas"`
|
|
|
|
|
// 部署版本
|
|
|
|
|
DeployVersion string `gorm:"column:deploy_version" json:"deploy_version"`
|
|
|
|
|
// 服务分类:application,cache,store
|
|
|
|
|
Category string `gorm:"column:category" json:"category"`
|
2018-11-14 23:08:30 +08:00
|
|
|
|
// 服务当前状态:undeploy,running,closed,unusual,starting,checking,stoping(deprecated)
|
2017-11-07 11:40:44 +08:00
|
|
|
|
CurStatus string `gorm:"column:cur_status;default:'undeploy'" json:"cur_status"`
|
2018-11-14 23:08:30 +08:00
|
|
|
|
// 计费状态 为1 计费,为0不计费 (deprecated)
|
2017-11-07 11:40:44 +08:00
|
|
|
|
Status int `gorm:"column:status;default:0" json:"status"`
|
|
|
|
|
// 最新操作ID
|
|
|
|
|
EventID string `gorm:"column:event_id" json:"event_id"`
|
2018-11-14 23:08:30 +08:00
|
|
|
|
// 租户ID
|
2017-11-07 11:40:44 +08:00
|
|
|
|
Namespace string `gorm:"column:namespace" json:"namespace"`
|
|
|
|
|
// 更新时间
|
|
|
|
|
UpdateTime time.Time `gorm:"column:update_time" json:"update_time"`
|
|
|
|
|
// 服务创建类型cloud云市服务,assistant云帮服务
|
|
|
|
|
ServiceOrigin string `gorm:"column:service_origin;default:'assistant'" json:"service_origin"`
|
2019-02-25 01:07:37 +08:00
|
|
|
|
// kind of service. option: internal, third_party
|
|
|
|
|
Kind string `gorm:"column:kind;default:'internal'" json:"kind"`
|
2018-03-04 22:48:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Image 镜像
|
|
|
|
|
type Image struct {
|
|
|
|
|
Host string
|
|
|
|
|
Namespace string
|
|
|
|
|
Name string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (i Image) String() string {
|
|
|
|
|
return fmt.Sprintf("%s/%s/%s", i.Host, i.Namespace, i.Name)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//ParseImage 简单解析镜像名
|
|
|
|
|
func ParseImage(name string) (image Image) {
|
|
|
|
|
i := strings.IndexRune(name, '/')
|
|
|
|
|
if i == -1 || (!strings.ContainsAny(name[:i], ".:") && name[:i] != "localhost") {
|
|
|
|
|
image.Host, image.Name = "docker.io", name
|
|
|
|
|
} else {
|
|
|
|
|
image.Host, image.Name = name[:i], name[i+1:]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
j := strings.IndexRune(image.Name, '/')
|
|
|
|
|
if j != -1 {
|
|
|
|
|
image.Namespace = image.Name[:j]
|
|
|
|
|
image.Name = image.Name[j+1:]
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//CreateShareSlug 生成源码包分享的地址
|
2018-03-05 15:07:19 +08:00
|
|
|
|
func (t *TenantServices) CreateShareSlug(servicekey, namespace, version string) string {
|
|
|
|
|
return fmt.Sprintf("%s/%s/%s_%s.tgz", namespace, servicekey, version, t.DeployVersion)
|
2018-03-04 22:48:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
2017-11-07 11:40:44 +08:00
|
|
|
|
//ChangeDelete ChangeDelete
|
|
|
|
|
func (t *TenantServices) ChangeDelete() *TenantServicesDelete {
|
|
|
|
|
delete := TenantServicesDelete(*t)
|
2018-11-22 14:33:29 +08:00
|
|
|
|
delete.UpdateTime = time.Now()
|
2017-11-07 11:40:44 +08:00
|
|
|
|
return &delete
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Autodomain 构建默认域名
|
|
|
|
|
func (t *TenantServices) Autodomain(tenantName string, containerPort int) string {
|
|
|
|
|
exDomain := os.Getenv("EX_DOMAIN")
|
|
|
|
|
if exDomain == "" {
|
|
|
|
|
return ""
|
|
|
|
|
}
|
|
|
|
|
if strings.Contains(exDomain, ":") {
|
|
|
|
|
exDomain = strings.Split(exDomain, ":")[0]
|
|
|
|
|
}
|
2018-03-14 12:43:35 +08:00
|
|
|
|
return fmt.Sprintf("%d.%s.%s.%s", containerPort, t.ServiceAlias, tenantName, exDomain)
|
2017-11-07 11:40:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TableName 表名
|
|
|
|
|
func (t *TenantServices) TableName() string {
|
|
|
|
|
return "tenant_services"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TenantServicesDelete 已删除的应用表
|
|
|
|
|
type TenantServicesDelete struct {
|
|
|
|
|
Model
|
|
|
|
|
TenantID string `gorm:"column:tenant_id;size:32" json:"tenant_id"`
|
|
|
|
|
ServiceID string `gorm:"column:service_id;size:32" json:"service_id"`
|
|
|
|
|
// 服务key
|
|
|
|
|
ServiceKey string `gorm:"column:service_key;size:32" json:"service_key"`
|
|
|
|
|
// 服务别名
|
|
|
|
|
ServiceAlias string `gorm:"column:service_alias;size:30" json:"service_alias"`
|
2018-11-14 23:08:30 +08:00
|
|
|
|
// service regist endpoint name(host name), used of statefulset
|
|
|
|
|
ServiceName string `gorm:"column:service_name;size:100" json:"service_name"`
|
2017-11-07 11:40:44 +08:00
|
|
|
|
// 服务描述
|
|
|
|
|
Comment string `gorm:"column:comment" json:"comment"`
|
|
|
|
|
// 容器CPU权重
|
|
|
|
|
ContainerCPU int `gorm:"column:container_cpu;default:500" json:"container_cpu"`
|
|
|
|
|
// 容器最大内存
|
|
|
|
|
ContainerMemory int `gorm:"column:container_memory;default:128" json:"container_memory"`
|
2018-11-19 18:56:28 +08:00
|
|
|
|
//UpgradeMethod service upgrade controller type
|
|
|
|
|
//such as : `Rolling` `OnDelete`
|
|
|
|
|
UpgradeMethod string `gorm:"column:upgrade_method;default:'Rolling'" json:"upgrade_method"`
|
2017-11-07 11:40:44 +08:00
|
|
|
|
// 扩容方式;0:无状态;1:有状态;2:分区
|
|
|
|
|
ExtendMethod string `gorm:"column:extend_method;default:'stateless';" json:"extend_method"`
|
|
|
|
|
// 节点数
|
|
|
|
|
Replicas int `gorm:"column:replicas;default:1" json:"replicas"`
|
|
|
|
|
// 部署版本
|
|
|
|
|
DeployVersion string `gorm:"column:deploy_version" json:"deploy_version"`
|
|
|
|
|
// 服务分类:application,cache,store
|
|
|
|
|
Category string `gorm:"column:category" json:"category"`
|
2018-11-22 14:33:29 +08:00
|
|
|
|
// 服务当前状态:undeploy,running,closed,unusual,starting,checking,stoping(deprecated)
|
2017-11-07 11:40:44 +08:00
|
|
|
|
CurStatus string `gorm:"column:cur_status;default:'undeploy'" json:"cur_status"`
|
2018-11-22 14:33:29 +08:00
|
|
|
|
// 计费状态 为1 计费,为0不计费 (deprecated)
|
2017-11-07 11:40:44 +08:00
|
|
|
|
Status int `gorm:"column:status;default:0" json:"status"`
|
|
|
|
|
// 最新操作ID
|
|
|
|
|
EventID string `gorm:"column:event_id" json:"event_id"`
|
2018-11-22 14:33:29 +08:00
|
|
|
|
// 租户ID
|
2017-11-07 11:40:44 +08:00
|
|
|
|
Namespace string `gorm:"column:namespace" json:"namespace"`
|
|
|
|
|
// 更新时间
|
|
|
|
|
UpdateTime time.Time `gorm:"column:update_time" json:"update_time"`
|
|
|
|
|
// 服务创建类型cloud云市服务,assistant云帮服务
|
|
|
|
|
ServiceOrigin string `gorm:"column:service_origin;default:'assistant'" json:"service_origin"`
|
2019-02-25 01:07:37 +08:00
|
|
|
|
// kind of service. option: internal, third_party
|
|
|
|
|
Kind string `gorm:"column:kind;default:'internal'" json:"kind"`
|
2017-11-07 11:40:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TableName 表名
|
|
|
|
|
func (t *TenantServicesDelete) TableName() string {
|
|
|
|
|
return "tenant_services_delete"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TenantServicesPort 应用端口信息
|
2018-11-19 18:56:28 +08:00
|
|
|
|
type TenantServicesPort struct {
|
2017-11-07 11:40:44 +08:00
|
|
|
|
Model
|
|
|
|
|
TenantID string `gorm:"column:tenant_id;size:32" validate:"tenant_id|between:30,33" json:"tenant_id"`
|
|
|
|
|
ServiceID string `gorm:"column:service_id;size:32" validate:"service_id|between:30,33" json:"service_id"`
|
|
|
|
|
ContainerPort int `gorm:"column:container_port" validate:"container_port|required|numeric_between:1,65535" json:"container_port"`
|
|
|
|
|
MappingPort int `gorm:"column:mapping_port" validate:"mapping_port|required|numeric_between:1,65535" json:"mapping_port"`
|
2019-02-25 20:04:48 +08:00
|
|
|
|
Protocol string `gorm:"column:protocol" validate:"protocol|required|in:http,https,tcp,grpc,udp,mysql" json:"protocol"`
|
2017-11-07 11:40:44 +08:00
|
|
|
|
PortAlias string `gorm:"column:port_alias" validate:"port_alias|required|alpha_dash" json:"port_alias"`
|
2019-05-18 17:59:35 +08:00
|
|
|
|
IsInnerService *bool `gorm:"column:is_inner_service" validate:"is_inner_service|bool" json:"is_inner_service"`
|
|
|
|
|
IsOuterService *bool `gorm:"column:is_outer_service" validate:"is_outer_service|bool" json:"is_outer_service"`
|
2017-11-07 11:40:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TableName 表名
|
|
|
|
|
func (t *TenantServicesPort) TableName() string {
|
|
|
|
|
return "tenant_services_port"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TenantServiceLBMappingPort stream应用端口映射情况
|
|
|
|
|
type TenantServiceLBMappingPort struct {
|
|
|
|
|
Model
|
|
|
|
|
ServiceID string `gorm:"column:service_id;size:32"`
|
|
|
|
|
//负载均衡VS使用端口
|
|
|
|
|
Port int `gorm:"column:port;unique_index"`
|
|
|
|
|
//此字段废除
|
|
|
|
|
// IP string `gorm:"column:ip"`
|
|
|
|
|
//应用原端口
|
|
|
|
|
ContainerPort int `gorm:"column:container_port"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TableName 表名
|
|
|
|
|
func (t *TenantServiceLBMappingPort) TableName() string {
|
|
|
|
|
return "tenant_lb_mapping_port"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TenantServiceRelation 应用依赖关系
|
|
|
|
|
type TenantServiceRelation struct {
|
|
|
|
|
Model
|
|
|
|
|
TenantID string `gorm:"column:tenant_id;size:32" validate:"tenant_id" json:"tenant_id"`
|
|
|
|
|
ServiceID string `gorm:"column:service_id;size:32" validate:"service_id" json:"service_id"`
|
|
|
|
|
DependServiceID string `gorm:"column:dep_service_id;size:32" validate:"depend_service_id" json:"depend_service_id"`
|
|
|
|
|
DependServiceType string `gorm:"column:dep_service_type" validate:"dep_service_type" json:"dep_service_type"`
|
|
|
|
|
DependOrder int `gorm:"column:dep_order" validate:"dep_order" json:"dep_order"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TableName 表名
|
|
|
|
|
func (t *TenantServiceRelation) TableName() string {
|
2018-11-22 14:33:29 +08:00
|
|
|
|
return "tenant_services_relation"
|
2017-11-07 11:40:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TenantServiceEnvVar 应用环境变量
|
|
|
|
|
type TenantServiceEnvVar struct {
|
|
|
|
|
Model
|
|
|
|
|
TenantID string `gorm:"column:tenant_id;size:32" validate:"tenant_id|between:30,33" json:"tenant_id"`
|
|
|
|
|
ServiceID string `gorm:"column:service_id;size:32" validate:"service_id|between:30,33" json:"service_id"`
|
|
|
|
|
ContainerPort int `gorm:"column:container_port" validate:"container_port|numeric_between:1,65535" json:"container_port"`
|
|
|
|
|
Name string `gorm:"column:name;size:100" validate:"name" json:"name"`
|
|
|
|
|
AttrName string `gorm:"column:attr_name" validate:"env_name|required" json:"attr_name"`
|
2019-08-07 11:17:12 +08:00
|
|
|
|
AttrValue string `gorm:"column:attr_value;size:1024" validate:"env_value|required" json:"attr_value"`
|
2017-11-07 11:40:44 +08:00
|
|
|
|
IsChange bool `gorm:"column:is_change" validate:"is_change|bool" json:"is_change"`
|
|
|
|
|
Scope string `gorm:"column:scope;default:'outer'" validate:"scope|in:outer,inner,both" json:"scope"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TableName 表名
|
|
|
|
|
func (t *TenantServiceEnvVar) TableName() string {
|
|
|
|
|
//TODO:表名修改
|
2018-11-22 14:33:29 +08:00
|
|
|
|
return "tenant_services_envs"
|
2017-11-07 11:40:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TenantServiceMountRelation 应用挂载依赖纪录
|
|
|
|
|
type TenantServiceMountRelation struct {
|
|
|
|
|
Model
|
|
|
|
|
TenantID string `gorm:"column:tenant_id;size:32" json:"tenant_id" validate:"tenant_id|between:30,33"`
|
|
|
|
|
ServiceID string `gorm:"column:service_id;size:32" json:"service_id" validate:"service_id|between:30,33"`
|
|
|
|
|
DependServiceID string `gorm:"column:dep_service_id;size:32" json:"dep_service_id" validate:"dep_service_id|between:30,33"`
|
|
|
|
|
//挂载路径(挂载应用可自定义)
|
|
|
|
|
VolumePath string `gorm:"column:mnt_name" json:"volume_path" validate:"volume_path|required"`
|
|
|
|
|
//主机路径(依赖应用的共享存储对应的主机路径)
|
|
|
|
|
HostPath string `gorm:"column:mnt_dir" json:"host_path" validate:"host_path"`
|
|
|
|
|
//存储名称(依赖应用的共享存储对应的名称)
|
|
|
|
|
VolumeName string `gorm:"column:volume_name;size:40" json:"volume_name" validate:"volume_name|required"`
|
2019-01-08 14:43:32 +08:00
|
|
|
|
VolumeType string `gorm:"column:volume_type" json:"volume_type" validate:"volume_type|required"`
|
2017-11-07 11:40:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TableName 表名
|
|
|
|
|
func (t *TenantServiceMountRelation) TableName() string {
|
2018-11-22 14:33:29 +08:00
|
|
|
|
return "tenant_services_mnt_relation"
|
2017-11-07 11:40:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//VolumeType 存储类型
|
|
|
|
|
type VolumeType string
|
|
|
|
|
|
|
|
|
|
//ShareFileVolumeType 共享文件存储
|
|
|
|
|
var ShareFileVolumeType VolumeType = "share-file"
|
|
|
|
|
|
|
|
|
|
//LocalVolumeType 本地文件存储
|
|
|
|
|
var LocalVolumeType VolumeType = "local"
|
|
|
|
|
|
|
|
|
|
//MemoryFSVolumeType 内存文件存储
|
|
|
|
|
var MemoryFSVolumeType VolumeType = "memoryfs"
|
|
|
|
|
|
2019-01-04 14:26:29 +08:00
|
|
|
|
//ConfigFileVolumeType configuration file volume type
|
|
|
|
|
var ConfigFileVolumeType VolumeType = "config-file"
|
|
|
|
|
|
2017-11-07 11:40:44 +08:00
|
|
|
|
func (vt VolumeType) String() string {
|
|
|
|
|
return string(vt)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TenantServiceVolume 应用持久化纪录
|
|
|
|
|
type TenantServiceVolume struct {
|
|
|
|
|
Model
|
|
|
|
|
ServiceID string `gorm:"column:service_id;size:32" json:"service_id"`
|
|
|
|
|
//服务类型
|
|
|
|
|
Category string `gorm:"column:category;size:50" json:"category"`
|
|
|
|
|
//存储类型(share,local,tmpfs)
|
|
|
|
|
VolumeType string `gorm:"column:volume_type;size:20" json:"volume_type"`
|
|
|
|
|
//存储名称
|
|
|
|
|
VolumeName string `gorm:"column:volume_name;size:40" json:"volume_name"`
|
|
|
|
|
//主机地址
|
|
|
|
|
HostPath string `gorm:"column:host_path" json:"host_path"`
|
|
|
|
|
//挂载地址
|
|
|
|
|
VolumePath string `gorm:"column:volume_path" json:"volume_path"`
|
|
|
|
|
//是否只读
|
|
|
|
|
IsReadOnly bool `gorm:"column:is_read_only;default:false" json:"is_read_only"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TableName 表名
|
|
|
|
|
func (t *TenantServiceVolume) TableName() string {
|
2018-11-22 14:33:29 +08:00
|
|
|
|
return "tenant_services_volume"
|
2017-11-07 11:40:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
2019-01-06 22:13:19 +08:00
|
|
|
|
// TenantServiceConfigFile represents a data in configMap which is one of the types of volumes
|
|
|
|
|
type TenantServiceConfigFile struct {
|
|
|
|
|
Model
|
2019-03-06 14:06:42 +08:00
|
|
|
|
ServiceID string `gorm:"column:service_id;size:32" json:"service_id"`
|
2019-01-07 18:26:18 +08:00
|
|
|
|
VolumeName string `gorm:"column:volume_name;size:32" json:"volume_name"`
|
2019-01-06 22:13:19 +08:00
|
|
|
|
FileContent string `gorm:"column:file_content;size:65535" json:"filename"`
|
|
|
|
|
}
|
|
|
|
|
|
2019-03-06 14:06:42 +08:00
|
|
|
|
// TableName returns table name of TenantServiceConfigFile.
|
2019-01-06 22:13:19 +08:00
|
|
|
|
func (t *TenantServiceConfigFile) TableName() string {
|
|
|
|
|
return "tenant_service_config_file"
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-07 11:40:44 +08:00
|
|
|
|
//TenantServiceLable 应用高级标签
|
|
|
|
|
type TenantServiceLable struct {
|
|
|
|
|
Model
|
|
|
|
|
ServiceID string `gorm:"column:service_id;size:32"`
|
|
|
|
|
LabelKey string `gorm:"column:label_key;size:50"`
|
|
|
|
|
LabelValue string `gorm:"column:label_value;size:50"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TableName 表名
|
|
|
|
|
func (t *TenantServiceLable) TableName() string {
|
2018-11-22 14:33:29 +08:00
|
|
|
|
return "tenant_services_label"
|
2017-11-07 11:40:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//LabelKeyNodeSelector 节点选择标签
|
|
|
|
|
var LabelKeyNodeSelector = "node-selector"
|
|
|
|
|
|
|
|
|
|
//LabelKeyNodeAffinity 节点亲和标签
|
|
|
|
|
var LabelKeyNodeAffinity = "node-affinity"
|
|
|
|
|
|
|
|
|
|
//LabelKeyServiceType 应用部署类型标签
|
|
|
|
|
var LabelKeyServiceType = "service-type"
|
|
|
|
|
|
|
|
|
|
//LabelKeyServiceAffinity 应用亲和标签
|
|
|
|
|
var LabelKeyServiceAffinity = "service-affinity"
|
|
|
|
|
|
|
|
|
|
//LabelKeyServiceAntyAffinity 应用反亲和标签
|
|
|
|
|
var LabelKeyServiceAntyAffinity = "service-anti-affinity"
|
2018-11-22 14:33:29 +08:00
|
|
|
|
|
|
|
|
|
//TenantServiceProbe 应用探针信息
|
|
|
|
|
type TenantServiceProbe struct {
|
|
|
|
|
Model
|
|
|
|
|
ServiceID string `gorm:"column:service_id;size:32" json:"service_id" validate:"service_id|between:30,33"`
|
|
|
|
|
ProbeID string `gorm:"column:probe_id;size:32" json:"probe_id" validate:"probe_id|between:30,33"`
|
|
|
|
|
Mode string `gorm:"column:mode;default:'liveness'" json:"mode" validate:"mode"`
|
|
|
|
|
Scheme string `gorm:"column:scheme;default:'scheme'" json:"scheme" validate:"scheme"`
|
|
|
|
|
Path string `gorm:"column:path" json:"path" validate:"path"`
|
|
|
|
|
Port int `gorm:"column:port;size:5;default:80" json:"port" validate:"port|required|numeric_between:1,65535"`
|
|
|
|
|
Cmd string `gorm:"column:cmd;size:150" json:"cmd" validate:"cmd"`
|
|
|
|
|
//http请求头,key=value,key2=value2
|
|
|
|
|
HTTPHeader string `gorm:"column:http_header;size:300" json:"http_header" validate:"http_header"`
|
|
|
|
|
//初始化等候时间
|
|
|
|
|
InitialDelaySecond int `gorm:"column:initial_delay_second;size:2;default:1" json:"initial_delay_second" validate:"initial_delay_second"`
|
|
|
|
|
//检测间隔时间
|
|
|
|
|
PeriodSecond int `gorm:"column:period_second;size:2;default:3" json:"period_second" validate:"period_second"`
|
|
|
|
|
//检测超时时间
|
|
|
|
|
TimeoutSecond int `gorm:"column:timeout_second;size:3;default:30" json:"timeout_second" validate:"timeout_second"`
|
|
|
|
|
//是否启用
|
2019-03-31 13:03:38 +08:00
|
|
|
|
IsUsed *int `gorm:"column:is_used;size:1;default:1" json:"is_used" validate:"is_used"`
|
2018-11-22 14:33:29 +08:00
|
|
|
|
//标志为失败的检测次数
|
|
|
|
|
FailureThreshold int `gorm:"column:failure_threshold;size:2;default:3" json:"failure_threshold" validate:"failure_threshold"`
|
|
|
|
|
//标志为成功的检测次数
|
2019-02-27 09:44:41 +08:00
|
|
|
|
SuccessThreshold int `gorm:"column:success_threshold;size:2;default:1" json:"success_threshold" validate:"success_threshold"`
|
|
|
|
|
FailureAction string `gorm:"column:failure_action;" json:"failure_action" validate:"failure_action"`
|
2018-11-22 14:33:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
2019-03-09 21:54:17 +08:00
|
|
|
|
// FailureActionType type of failure action.
|
|
|
|
|
type FailureActionType string
|
|
|
|
|
|
|
|
|
|
func (fat FailureActionType) String() string {
|
|
|
|
|
return string(fat)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
// IgnoreFailureAction do nothing when the probe result is a failure
|
|
|
|
|
IgnoreFailureAction FailureActionType = "ignore"
|
|
|
|
|
// OfflineFailureAction offline the probe object when the probe result is a failure
|
|
|
|
|
OfflineFailureAction FailureActionType = "readiness"
|
|
|
|
|
// RestartFailureAction restart the probe object when the probe result is a failure
|
|
|
|
|
RestartFailureAction FailureActionType = "liveness"
|
|
|
|
|
)
|
|
|
|
|
|
2018-11-22 14:33:29 +08:00
|
|
|
|
//TableName 表名
|
|
|
|
|
func (t *TenantServiceProbe) TableName() string {
|
|
|
|
|
return "tenant_services_probe"
|
|
|
|
|
}
|