package model
import (
dbmodel "github.com/goodrain/rainbond/db/model"
"time"
)
type Plugin struct {
PluginID string `json:"plugin_id" validate:"plugin_id|required"`
PluginName string `json:"plugin_name" validate:"plugin_name|required"`
PluginInfo string `json:"plugin_info" validate:"plugin_info"`
ImageURL string `json:"image_url" validate:"image_url"`
GitURL string `json:"git_url" validate:"git_url"`
BuildModel string `json:"build_model" validate:"build_model"`
PluginModel string `json:"plugin_model" validate:"plugin_model"`
TenantID string `json:"tenant_id" validate:"tenant_id"`
}
func (p *Plugin) DbModel(tenantID string) *dbmodel.TenantPlugin {
return &dbmodel.TenantPlugin{
PluginID: p.PluginID,
PluginName: p.PluginName,
PluginInfo: p.PluginInfo,
ImageURL: p.ImageURL,
GitURL: p.GitURL,
BuildModel: p.BuildModel,
PluginModel: p.PluginModel,
TenantID: tenantID,
}
}
type BatchCreatePlugins struct {
Plugins []*Plugin `json:"plugins"`
}
type CreatePluginStruct struct {
TenantName string `json:"tenant_name"`
Body struct {
PluginID string `json:"plugin_id" validate:"plugin_id|required"`
PluginName string `json:"plugin_name" validate:"plugin_name|required"`
PluginInfo string `json:"plugin_info" validate:"plugin_info"`
ImageURL string `json:"image_url" validate:"image_url"`
GitURL string `json:"git_url" validate:"git_url"`
BuildModel string `json:"build_model" validate:"build_model"`
PluginModel string `json:"plugin_model" validate:"plugin_model"`
TenantID string `json:"tenant_id" validate:"tenant_id"`
}
}
type UpdatePluginStruct struct {
TenantName string `json:"tenant_name" validate:"tenant_name|required"`
PluginID string `json:"plugin_id" validate:"tenant_name|required"`
Body struct {
PluginName string `json:"plugin_name" validate:"plugin_name"`
PluginInfo string `json:"plugin_info" validate:"plugin_info"`
ImageURL string `json:"image_url" validate:"image_url"`
GitURL string `json:"git_url" validate:"git_url"`
BuildModel string `json:"build_model" validate:"build_model"`
PluginModel string `json:"plugin_model" validate:"plugin_model"`
}
}
type DeletePluginStruct struct {
TenantName string `json:"tenant_name" validate:"tenant_name|required"`
PluginID string `json:"plugin_id" validate:"plugin_id|required"`
}
type ENVStruct struct {
TenantName string `json:"tenant_name" validate:"tenant_name"`
PluginID string `json:"plugin_id" validate:"plugin_id"`
VersionID string `json:"version_id" validate:"version_id"`
Body struct {
EVNInfo []*PluginDefaultENV
}
}
type DeleteENVstruct struct {
TenantName string `json:"tenant_name" validate:"tenant_name|required"`
PluginID string `json:"plugin_id" validate:"plugin_id|required"`
VersionID string `json:"version_id" validate:"version_id|required"`
ENVName string `json:"env_name" validate:"env_name|required"`
}
type PluginDefaultENV struct {
PluginID string `json:"plugin_id" validate:"plugin_id"`
VersionID string `json:"version_id" validate:"version_id"`
ENVName string `json:"env_name" validate:"env_name"`
ENVValue string `json:"env_value" validate:"env_value"`
IsChange bool `json:"is_change" validate:"is_change|bool"`
}
type BuildPluginStruct struct {
TenantName string `json:"tenant_name" validate:"tenant_name"`
PluginID string `json:"plugin_id" validate:"plugin_id"`
Body struct {
EventID string `json:"event_id" validate:"event_id"`
PluginCPU int `json:"plugin_cpu" validate:"plugin_cpu|required"`
PluginMemory int `json:"plugin_memory" validate:"plugin_memory|required"`
PluginCMD string `json:"plugin_cmd" validate:"plugin_cmd"`
BuildVersion string `json:"build_version" validate:"build_version|required"`
DeployVersion string `json:"deploy_version" validate:"deploy_version"`
RepoURL string `json:"repo_url" validate:"repo_url"`
Username string `json:"username"`
Password string `json:"password"`
Info string `json:"info" validate:"info"`
Operator string `json:"operator" validate:"operator"`
TenantID string `json:"tenant_id" validate:"tenant_id"`
BuildImage string `json:"build_image" validate:"build_image"`
ImageInfo struct {
HubURL string `json:"hub_url"`
HubUser string `json:"hub_user"`
HubPassword string `json:"hub_password"`
Namespace string `json:"namespace"`
IsTrust bool `json:"is_trust,omitempty"`
} `json:"ImageInfo" validate:"ImageInfo"`
Arch string `json:"arch"`
}
}
type BuildPluginReq struct {
PluginID string `json:"plugin_id" validate:"plugin_id"`
EventID string `json:"event_id" validate:"event_id"`
PluginCPU int `json:"plugin_cpu" validate:"plugin_cpu|required"`
PluginMemory int `json:"plugin_memory" validate:"plugin_memory|required"`
PluginCMD string `json:"plugin_cmd" validate:"plugin_cmd"`
BuildVersion string `json:"build_version" validate:"build_version|required"`
DeployVersion string `json:"deploy_version" validate:"deploy_version"`
RepoURL string `json:"repo_url" validate:"repo_url"`
Username string `json:"username"`
Password string `json:"password"`
Info string `json:"info" validate:"info"`
Operator string `json:"operator" validate:"operator"`
TenantID string `json:"tenant_id" validate:"tenant_id"`
BuildImage string `json:"build_image" validate:"build_image"`
ImageInfo struct {
HubURL string `json:"hub_url"`
HubUser string `json:"hub_user"`
HubPassword string `json:"hub_password"`
Namespace string `json:"namespace"`
IsTrust bool `json:"is_trust,omitempty"`
} `json:"ImageInfo" validate:"ImageInfo"`
}
func (b BuildPluginReq) DbModel(plugin *dbmodel.TenantPlugin) *dbmodel.TenantPluginBuildVersion {
buildVersion := &dbmodel.TenantPluginBuildVersion{
VersionID: b.BuildVersion,
DeployVersion: b.DeployVersion,
PluginID: b.PluginID,
Kind: plugin.BuildModel,
Repo: b.RepoURL,
GitURL: plugin.GitURL,
BaseImage: plugin.ImageURL,
ContainerCPU: b.PluginCPU,
ContainerMemory: b.PluginMemory,
ContainerCMD: b.PluginCMD,
BuildTime: time.Now().Format(time.RFC3339),
Info: b.Info,
Status: "building",
}
if b.PluginCPU == 0 {
buildVersion.ContainerCPU = 125
}
if b.PluginMemory == 0 {
buildVersion.ContainerMemory = 50
}
return buildVersion
}
type BatchBuildPlugins struct {
Plugins []*BuildPluginReq `json:"plugins"`
}
type PluginBuildVersionStruct struct {
TenantName string `json:"tenant_name" validate:"tenant_name"`
PluginID string `json:"plugin_id" validate:"plugin_id"`
VersionID string `json:"version_id" validate:"version_id"`
}
type AllPluginBuildVersionStruct struct {
TenantName string `json:"tenant_name" validate:"tenant_name"`
PluginID string `json:"plugin_id" validate:"plugin_id"`
}
type PluginSetStruct struct {
TenantName string `json:"tenant_name"`
ServiceAlias string `json:"service_alias"`
Body struct {
PluginID string `json:"plugin_id" validate:"plugin_id"`
VersionID string `json:"version_id" validate:"version_id"`
Switch bool `json:"switch" validate:"switch|bool"`
PluginCPU int `json:"plugin_cpu" validate:"plugin_cpu"`
PluginMemory int `json:"plugin_memory" validate:"plugin_memory"`
ConfigEnvs ConfigEnvs `json:"config_envs" validate:"config_envs"`
}
}
type GetPluginsStruct struct {
TenantName string `json:"tenant_name"`
}
type GetPluginSetStruct struct {
TenantName string `json:"tenant_name"`
ServiceAlias string `json:"service_alias"`
}
type DeletePluginSetStruct struct {
TenantName string `json:"tenant_name"`
ServiceAlias string `json:"service_alias"`
PluginID string `json:"plugin_id"`
}
type GetPluginEnvStruct struct {
TenantName string `json:"tenant_name"`
PluginID string `json:"plugin_id"`
VersionID string `json:"version_id"`
}
type GetVersionEnvStruct struct {
TenantName string `json:"tenant_name"`
ServiceAlias string `json:"service_alias"`
PluginID string `json:"plugin_id"`
}
type SetVersionEnv struct {
TenantName string `json:"tenant_name"`
ServiceAlias string `json:"service_alias"`
PluginID string `json:"plugin_id"`
Body struct {
TenantID string `json:"tenant_id"`
ServiceID string `json:"service_id"`
ConfigEnvs ConfigEnvs `json:"config_envs" validate:"config_envs"`
}
}
type ConfigEnvs struct {
NormalEnvs []*VersionEnv `json:"normal_envs" validate:"normal_envs"`
ComplexEnvs *ResourceSpec `json:"complex_envs" validate:"complex_envs"`
}
type VersionEnv struct {
EnvName string `json:"env_name" validate:"env_name"`
EnvValue string `json:"env_value" validate:"env_value"`
}
func (v *VersionEnv) DbModel(componentID, pluginID string) *dbmodel.TenantPluginVersionEnv {
return &dbmodel.TenantPluginVersionEnv{
ServiceID: componentID,
PluginID: pluginID,
EnvName: v.EnvName,
EnvValue: v.EnvValue,
}
}
type TransPlugins struct {
TenantName string `json:"tenant_name"`
Body struct {
FromTenantName string `json:"from_tenant_name" validate:"from_tenant_name"`
PluginsID []string `json:"plugins_id" validate:"plugins_id"`
}
}
type PluginVersionEnv struct {
EnvName string `json:"env_name" validate:"env_name"`
EnvValue string `json:"env_value" validate:"env_value"`
}
func (p *PluginVersionEnv) DbModel(componentID, pluginID string) *dbmodel.TenantPluginVersionEnv {
return &dbmodel.TenantPluginVersionEnv{
ServiceID: componentID,
PluginID: pluginID,
EnvName: p.EnvName,
EnvValue: p.EnvValue,
}
}
type TenantPluginVersionConfig struct {
ConfigStr string `json:"config_str" validate:"config_str"`
}
func (p *TenantPluginVersionConfig) DbModel(componentID, pluginID string) *dbmodel.TenantPluginVersionDiscoverConfig {
return &dbmodel.TenantPluginVersionDiscoverConfig{
ServiceID: componentID,
PluginID: pluginID,
ConfigStr: p.ConfigStr,
}
}
type ComponentPlugin struct {
PluginID string `json:"plugin_id"`
VersionID string `json:"version_id"`
PluginModel string `json:"plugin_model"`
ContainerCPU int `json:"container_cpu"`
ContainerMemory int `json:"container_memory"`
Switch bool `json:"switch"`
ConfigEnvs ConfigEnvs `json:"config_envs" validate:"config_envs"`
}
func (p *ComponentPlugin) DbModel(componentID string) *dbmodel.TenantServicePluginRelation {
return &dbmodel.TenantServicePluginRelation{
VersionID: p.VersionID,
ServiceID: componentID,
PluginID: p.PluginID,
Switch: p.Switch,
PluginModel: p.PluginModel,
ContainerCPU: p.ContainerCPU,
ContainerMemory: p.ContainerMemory,
}
}