Files
ProjectOctopus/agent-deploy/c_middle/DeployMiddleware.go
2024-07-15 16:27:15 +08:00

215 lines
5.4 KiB
Go
Executable File

package c_middle
import (
"encoding/base64"
"github.com/go-playground/validator/v10"
"wdd.io/agent-common/logger"
"wdd.io/agent-common/utils"
"wdd.io/agent-deploy/z_dep"
)
var (
log = logger.Log
DefaultMysqlConfig = &MySQlConfig{
MySQLNodePort: "33306",
MySQLRootPasswordBase64: base64.StdEncoding.EncodeToString([]byte("QzfXQhd3bQ")),
MySQLRootPassword: "QzfXQhd3bQ",
MySQLK8sAdminPassword: "fP#UaH6qQ3)8",
}
DefaultRabbitConfig = &RabbitMQConfig{
RabbitNodePort: "35672",
RabbitDashboardNodePort: "35675",
RabbitPassword: "nYcRN91r._hj",
RabbitPasswordBase64: "blljUk45MXIuX2hq",
}
DefaultEmqxConfig = &EmqxConfig{
EmqxNodePort: "31883",
EmqxDashboardNodePort: "38085",
EmqxWebSocketNodePort: "38083",
EmqxPassword: "odD8#Ve7.B",
}
DefaultMongoConfig = &MongoConfig{
MongoPassword: "REdPza8#oVlt",
}
)
type MySQlConfig struct {
z_dep.CommonEnvironmentConfig
MySQLNodePort string
MySQLRootPassword string `validate:"required" comment:"string"`
MySQLRootPasswordBase64 string `validate:"required" comment:"base64"`
MySQLK8sAdminPassword string `validate:"required" comment:"string"`
}
type RedisConfig struct {
z_dep.CommonEnvironmentConfig
}
type RabbitMQConfig struct {
z_dep.CommonEnvironmentConfig
RabbitNodePort string
RabbitDashboardNodePort string
RabbitPassword string
RabbitPasswordBase64 string
}
type NacosConfig struct {
z_dep.CommonEnvironmentConfig
MySQLK8sAdminPassword string
NacosNodePort string
}
type MongoConfig struct {
z_dep.CommonEnvironmentConfig
MongoPassword string
MongoNodePort string
}
type EmqxConfig struct {
z_dep.CommonEnvironmentConfig
EmqxNodePort string
EmqxDashboardNodePort string
EmqxWebSocketNodePort string
EmqxPassword string
}
func (emqx *EmqxConfig) MidEmqxDeploy(commonEnv *z_dep.CommonEnvironmentConfig) bool {
// copy
utils.CopySameFields(commonEnv, emqx)
validate := validator.New()
err := validate.Struct(emqx)
if err != nil {
log.ErrorF("backend config validate error: %v\n", err)
return false
}
if !z_dep.ParseEnvToApplyFile(emqx, CmiiEmqxTemplate, z_dep.EmqxApplyFilePath) {
return false
}
return true
}
func MidEmqxDeploy(commonEnv *z_dep.CommonEnvironmentConfig) bool {
return commonEnv.ParseCommonEnvToApplyFile(CmiiEmqxTemplate, z_dep.EmqxApplyFilePath)
}
func (mongo *MongoConfig) MidMongoDeploy(commonEnv *z_dep.CommonEnvironmentConfig) bool {
// copy
utils.CopySameFields(commonEnv, mongo)
validate := validator.New()
err := validate.Struct(mongo)
if err != nil {
log.ErrorF("backend config validate error: %v\n", err)
return false
}
if !z_dep.ParseEnvToApplyFile(mongo, CmiiMongoTemplate, z_dep.MongoApplyFilePath) {
return false
}
return true
}
func MidMongoDeploy(commonEnv *z_dep.CommonEnvironmentConfig) bool {
return commonEnv.ParseCommonEnvToApplyFile(CmiiMongoTemplate, z_dep.MongoApplyFilePath)
}
func (rabbit *RabbitMQConfig) MidRabbitMQDeploy(commonEnv *z_dep.CommonEnvironmentConfig) bool {
// copy
utils.CopySameFields(commonEnv, rabbit)
validate := validator.New()
err := validate.Struct(rabbit)
if err != nil {
log.ErrorF("backend config validate error: %v\n", err)
return false
}
if !z_dep.ParseEnvToApplyFile(rabbit, CmiiRabbitMQTemplate, z_dep.RabbitMQApplyFilePath) {
return false
}
return true
}
func MidRabbitMQDeploy(commonEnv *z_dep.CommonEnvironmentConfig) bool {
return commonEnv.ParseCommonEnvToApplyFile(CmiiRabbitMQTemplate, z_dep.RabbitMQApplyFilePath)
}
func (redis *RedisConfig) MidRedisDeploy(commonEnv *z_dep.CommonEnvironmentConfig) bool {
// copy
utils.CopySameFields(commonEnv, redis)
validate := validator.New()
err := validate.Struct(redis)
if err != nil {
log.ErrorF("backend config validate error: %v\n", err)
return false
}
if !z_dep.ParseEnvToApplyFile(redis, CmiiRedisTemplate, z_dep.RedisApplyFilePath) {
return false
}
return true
}
func MidRedisDeploy(commonEnv *z_dep.CommonEnvironmentConfig) bool {
return commonEnv.ParseCommonEnvToApplyFile(CmiiRedisTemplate, z_dep.RedisApplyFilePath)
}
func (mysql *MySQlConfig) MidMySQlDeploy(commonEnv *z_dep.CommonEnvironmentConfig) bool {
// copy
utils.CopySameFields(commonEnv, mysql)
validate := validator.New()
err := validate.Struct(mysql)
if err != nil {
log.ErrorF("backend config validate error: %v\n", err)
return false
}
if !z_dep.ParseEnvToApplyFile(mysql, CmiiMySQLTemplate, z_dep.MySQLApplyFilePath) {
return false
}
return true
}
func MidMySQlDeploy(commonEnv *z_dep.CommonEnvironmentConfig) bool {
return commonEnv.ParseCommonEnvToApplyFile(CmiiMySQLTemplate, z_dep.MySQLApplyFilePath)
}
func (nacos *NacosConfig) MidNacosDeploy(commonEnv *z_dep.CommonEnvironmentConfig) bool {
// copy
utils.CopySameFields(commonEnv, nacos)
validate := validator.New()
err := validate.Struct(nacos)
if err != nil {
log.ErrorF("backend config validate error: %v\n", err)
return false
}
if !z_dep.ParseEnvToApplyFile(nacos, CmiiNacosTemplate, z_dep.NacosApplyFilePath) {
return false
}
return true
}
func MidNacosDeploy(commonEnv *z_dep.CommonEnvironmentConfig) bool {
return commonEnv.ParseCommonEnvToApplyFile(CmiiNacosTemplate, z_dep.NacosApplyFilePath)
}
func PVCDeploy(commonEnv *z_dep.CommonEnvironmentConfig) bool {
return commonEnv.ParseCommonEnvToApplyFile(CmiiPVCTemplate, z_dep.PVCApplyFilePath)
}