model

package
v0.0.0-...-8cd4dec Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 17, 2025 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AlertEventSilenceRequest

type AlertEventSilenceRequest struct {
	UseName bool   `json:"useName"` // 是否启用名称静默
	Time    string `json:"time"`
}

type Api

type Api struct {
	ID          int    `json:"id" gorm:"primaryKey;column:id;comment:主键ID"`
	Name        string `json:"name" gorm:"column:name;type:varchar(50);not null;comment:API名称"`
	Path        string `json:"path" gorm:"column:path;type:varchar(255);not null;comment:API路径"`
	Method      int    `json:"method" gorm:"column:method;type:tinyint(1);not null;comment:HTTP请求方法(1:GET,2:POST,3:PUT,4:DELETE)"`
	Description string `json:"description" gorm:"column:description;type:varchar(500);comment:API描述"`
	Version     string `json:"version" gorm:"column:version;type:varchar(20);default:v1;comment:API版本"`
	Category    int    `json:"category" gorm:"column:category;type:tinyint(1);not null;comment:API分类(1:系统,2:业务)"`
	IsPublic    int    `json:"is_public" gorm:"column:is_public;type:tinyint(1);default:0;comment:是否公开(0:否,1:是)"`
	CreateTime  int64  `json:"create_time" gorm:"column:create_time;autoCreateTime;comment:创建时间"`
	UpdateTime  int64  `json:"update_time" gorm:"column:update_time;autoUpdateTime;comment:更新时间"`
	IsDeleted   int    `json:"is_deleted" gorm:"column:is_deleted;type:tinyint(1);default:0;comment:是否删除(0:否,1:是)"`
}

type AssignUserRoleRequest

type AssignUserRoleRequest struct {
	UserId  int   `json:"user_id" binding:"required,gt=0"` // 用户ID
	RoleIds []int `json:"role_ids"`                        // 角色ID列表
	ApiIds  []int `json:"api_ids"`                         // API ID列表
}

type AssignUsersRoleRequest

type AssignUsersRoleRequest struct {
	UserIds []int `json:"user_ids" binding:"required,gt=0"` // 用户ID
	RoleIds []int `json:"role_ids"`                         // 角色ID列表
}

type BatchDeleteReq

type BatchDeleteReq struct {
	IDs []int `json:"ids" binding:"required"`
}

type BatchEventAlertSilenceRequest

type BatchEventAlertSilenceRequest struct {
	IDs []int `json:"ids" binding:"required"`
	AlertEventSilenceRequest
}

type BatchRequest

type BatchRequest struct {
	IDs []int `json:"ids" binding:"required"`
}

type BindResourceReq

type BindResourceReq struct {
	NodeId      int   `json:"nodeId" `
	ResourceIds []int `json:"resource_ids" binding:"required,min=1"`
}

type ChangePasswordRequest

type ChangePasswordRequest struct {
	Username        string `json:"username"`
	Password        string `json:"password"`
	NewPassword     string `json:"newPassword"`
	ConfirmPassword string `json:"confirmPassword"`
}

type ChartItem

type ChartItem struct {
	Name  string `json:"name"`  // 分类名称
	Value int    `json:"value"` // 分类对应的值
}

ChartItem 用于前端展示的图表数据结构

type ClusterNamespaces

type ClusterNamespaces struct {
	ClusterName string      `json:"cluster_name"` // 集群名称
	ClusterId   int         `json:"cluster_id"`   // 集群ID
	Namespaces  []Namespace `json:"namespaces"`   // 命名空间列表
}

ClusterNamespaces 表示一个集群及其命名空间列表

type ContainerCore

type ContainerCore struct {
	Envs          StringList `json:"envs,omitempty" gorm:"comment:环境变量组,格式 key=value"`          // 环境变量组
	Labels        StringList `json:"labels,omitempty" gorm:"comment:标签组,格式 key=value"`          // 标签组
	Commands      StringList `json:"commands,omitempty" gorm:"comment:启动命令组"`                   // 启动命令组
	Args          StringList `json:"args,omitempty" gorm:"comment:启动参数,空格分隔"`                   // 启动参数
	CpuRequest    string     `json:"cpu_request,omitempty" gorm:"comment:CPU 请求量"`              // CPU 请求量
	CpuLimit      string     `json:"cpu_limit,omitempty" gorm:"comment:CPU 限制量"`                // CPU 限制量
	MemoryRequest string     `json:"memory_request,omitempty" gorm:"comment:内存请求量"`             // 内存请求量
	MemoryLimit   string     `json:"memory_limit,omitempty" gorm:"comment:内存限制量"`               // 内存限制量
	VolumeJson    string     `json:"volume_json,omitempty" gorm:"type:text;comment:卷和挂载配置JSON"` // 卷和挂载配置JSON
	PortJson      string     `json:"port_json,omitempty" gorm:"type:text;comment:容器和服务端口配置"`    // 容器和服务端口配置

	// 前端使用字段
	EnvsFront       []KeyValueItem     `json:"envs_front,omitempty" gorm:"-"`        // 前端显示的环境变量
	LabelsFront     []KeyValueItem     `json:"labels_front,omitempty" gorm:"-"`      // 前端显示的标签
	CommandsFront   []KeyValueItem     `json:"commands_front,omitempty" gorm:"-"`    // 前端显示的命令
	ArgsFront       []KeyValueItem     `json:"args_front,omitempty" gorm:"-"`        // 前端显示的参数
	VolumeJsonFront []K8sOneVolume     `json:"volume_json_front,omitempty" gorm:"-"` // 前端显示的卷配置
	PortJsonFront   []core.ServicePort `json:"port_json_front,omitempty" gorm:"-"`   // 前端显示的端口配置
}

ContainerCore 包含容器的核心配置

type CreateApiRequest

type CreateApiRequest struct {
	Name        string `json:"name" binding:"required"`       // API名称
	Path        string `json:"path" binding:"required"`       // API路径
	Method      int    `json:"method" binding:"required"`     // 请求方法
	Description string `json:"description"`                   // API描述
	Version     string `json:"version"`                       // API版本
	Category    int    `json:"category"`                      // API分类
	IsPublic    int    `json:"is_public" binding:"oneof=0 1"` // 是否公开
}

type CreateMenuRequest

type CreateMenuRequest struct {
	Name      string    `json:"name" binding:"required"`    // 菜单名称
	Path      string    `json:"path" binding:"required"`    // 菜单路径
	ParentId  int       `json:"parent_id" binding:"gte=0"`  // 父菜单ID
	Component string    `json:"component"`                  // 组件
	RouteName string    `json:"route_name"`                 // 路由名称
	Hidden    int       `json:"hidden" binding:"oneof=0 1"` // 是否隐藏
	Redirect  string    `json:"redirect"`                   // 重定向路径
	Meta      MetaField `json:"meta"`                       // 元数据
	Children  []*Menu   `json:"children" gorm:"-"`
}

type CreateNamespaceRequest

type CreateNamespaceRequest struct {
	ClusterId   int      `json:"cluster_id" binding:"required"`
	Name        string   `json:"namespace" binding:"required"`
	Labels      []string `json:"labels,omitempty"`      // 命名空间标签
	Annotations []string `json:"annotations,omitempty"` // 命名空间注解
}

CreateNamespaceRequest 创建新的命名空间请求结构体

type CreateRoleRequest

type CreateRoleRequest struct {
	Name        string `json:"name" binding:"required"`        // 角色名称
	Description string `json:"description"`                    // 角色描述
	RoleType    int    `json:"role_type" binding:"required"`   // 角色类型
	IsDefault   int    `json:"is_default" binding:"oneof=0 1"` // 是否默认角色
	ApiIds      []int  `json:"api_ids"`                        // API ID列表
}

type DeleteMenuRequest

type DeleteMenuRequest struct {
	Id int `json:"id" binding:"required,gt=0"` // 菜单ID
}

type DeleteUserRequest

type DeleteUserRequest struct {
	UserId int `json:"user_id"`
}

type EcsBuyWorkOrder

type EcsBuyWorkOrder struct {
	Vendor         string `json:"vendor" gorm:"type:varchar(50);comment:云厂商名称, 例: 阿里云"`                    // 云厂商名称
	Num            int    `json:"num" gorm:"comment:购买的 ECS 实例数量"`                                         // 购买的 ECS 实例数量
	BindLeafNodeId int    `json:"bindLeafNodeId" gorm:"comment:绑定的叶子节点 ID"`                                // 绑定的叶子节点 ID
	InstanceType   string `json:"instance_type" gorm:"type:varchar(100);comment:实例类型, 例: ecs.g8a.2xlarge"` // 实例类型
	Hostnames      string `json:"hostnames" gorm:"type:text;comment:主机名, 支持多条记录, 用 \\n 分隔"`                // 主机名, 支持多条记录, 用 \n 分隔
}

EcsBuyWorkOrder 购买 ECS 工作订单的结构体

type Event

type Event struct {
	Reason         string           `json:"reason"`          // 事件原因
	Message        string           `json:"message"`         // 事件消息
	Type           string           `json:"type"`            // 事件类型,例如 Normal, Warning
	FirstTimestamp time.Time        `json:"first_timestamp"` // 第一次发生时间
	LastTimestamp  time.Time        `json:"last_timestamp"`  // 最后一次发生时间
	Count          int32            `json:"count"`           // 事件发生次数
	Source         core.EventSource `json:"source"`          // 事件来源
}

Event 命名空间事件响应结构体

type GetApiRequest

type GetApiRequest struct {
	ID int `json:"id" binding:"required,gt=0"` // API ID
}

type GetMenuRequest

type GetMenuRequest struct {
	Id int `json:"id" binding:"required,gt=0"` // 菜单ID
}

type GetRoleRequest

type GetRoleRequest struct {
	Id int `json:"id" binding:"required,gt=0"` // 角色ID
}

type IdRequest

type IdRequest struct {
	ID int `json:"id" binding:"required"`
}

type InstanceConfig

type InstanceConfig struct {
	AvailabilityZone        string `json:"instance_availability_zone"` // 可用区 ID
	InstanceType            string `json:"instance_type"`              // ECS 实例类型
	SystemDiskCategory      string `json:"system_disk_category"`       // 系统盘类型
	SystemDiskName          string `json:"system_disk_name"`           // 系统盘名称
	SystemDiskDescription   string `json:"system_disk_description"`    // 系统盘描述
	ImageID                 string `json:"image_id"`                   // 镜像 ID
	InstanceName            string `json:"instance_name"`              // 实例名称
	VSwitchID               string `json:"instance_vswitch_id"`        // 关联的 VSwitch ID
	InternetMaxBandwidthOut int    `json:"internet_max_bandwidth_out"` // 最大公网带宽
}

InstanceConfig 表示 ECS 实例的配置

type K8sApp

type K8sApp struct {
	Model
	Name         string        `json:"name" binding:"required,min=1,max=200" gorm:"size:100;comment:应用名称"` // 应用名称
	K8sProjectID int           `json:"k8s_project_id" gorm:"comment:关联的 Kubernetes 项目ID"`                  // 关联的 Kubernetes 项目ID
	TreeNodeID   int           `json:"tree_node_id" gorm:"comment:关联的树节点ID"`                               // 关联的树节点ID
	UserID       int           `json:"user_id" gorm:"comment:创建者用户ID"`                                     // 创建者用户ID
	Cluster      string        `json:"cluster" gorm:"size:100;comment:所属集群名称"`                             // 所属集群名称
	K8sInstances []K8sInstance `json:"k8s_instances" gorm:"foreignKey:K8sAppID;comment:关联的 Kubernetes 实例"` // 关联的 Kubernetes 实例
	ServiceType  string        `json:"service_type,omitempty" gorm:"comment:服务类型"`                         // 服务类型
	Namespace    string        `json:"namespace,omitempty" gorm:"comment:Kubernetes 命名空间"`                 // Kubernetes 命名空间

	ContainerCore `json:"containerCore"` // 容器核心配置

	// 前端使用字段
	TreeNodeObj    *TreeNode   `json:"tree_node_obj,omitempty" gorm:"-"`    // 树节点对象
	ClusterObj     *K8sCluster `json:"cluster_obj,omitempty" gorm:"-"`      // 集群对象
	ProjectObj     *K8sProject `json:"project_obj,omitempty" gorm:"-"`      // 项目对象
	CreateUserName string      `json:"create_username,omitempty" gorm:"-"`  // 创建者用户名
	NodePath       string      `json:"node_path,omitempty" gorm:"-"`        // 节点路径
	K8sProjectName string      `json:"k8s_project_name,omitempty" gorm:"-"` // 项目名称
}

K8sApp 面向运维的 Kubernetes 应用

type K8sCluster

type K8sCluster struct {
	Model
	Name                string     `json:"name" binding:"required,min=1,max=200" gorm:"size:100;comment:集群名称"`      // 集群名称
	NameZh              string     `json:"name_zh" binding:"required,min=1,max=500" gorm:"size:100;comment:集群中文名称"` // 集群中文名称
	UserID              int        `json:"user_id" gorm:"comment:创建者用户ID"`                                          // 创建者用户ID
	CpuRequest          string     `json:"cpu_request,omitempty" gorm:"comment:CPU 请求量"`                            // CPU 请求量
	CpuLimit            string     `json:"cpu_limit,omitempty" gorm:"comment:CPU 限制量"`                              // CPU 限制量
	MemoryRequest       string     `json:"memory_request,omitempty" gorm:"comment:内存请求量"`                           // 内存请求量
	MemoryLimit         string     `json:"memory_limit,omitempty" gorm:"comment:内存限制量"`                             // 内存限制量
	RestrictedNameSpace StringList `json:"restricted_name_space" gorm:"comment:资源限制命名空间"`                           // 资源限制命名空间

	Env                  string `json:"env,omitempty" gorm:"comment:集群环境,例如 prod, stage, dev, rc, press"`     // 集群环境
	Version              string `json:"version,omitempty" gorm:"comment:集群版本"`                                // 集群版本
	ApiServerAddr        string `json:"api_server_addr,omitempty" gorm:"comment:API Server 地址"`               // API Server 地址
	KubeConfigContent    string `json:"kube_config_content,omitempty" gorm:"type:text;comment:kubeConfig 内容"` // kubeConfig 内容
	ActionTimeoutSeconds int    `json:"action_timeout_seconds,omitempty" gorm:"comment:操作超时时间(秒)"`            // 操作超时时间(秒)

	// 前端使用字段
	CreateUserName    string            `json:"create_username,omitempty" gorm:"-"`      // 创建者用户名
	LastProbeSuccess  bool              `json:"last_probe_success,omitempty" gorm:"-"`   // 最近一次探测是否成功
	LastProbeErrorMsg string            `json:"last_probe_error_msg,omitempty" gorm:"-"` // 最近一次探测错误信息
	LabelsFront       string            `json:"labels_front,omitempty" gorm:"-"`         // 前端显示的标签字符串
	AnnotationsFront  string            `json:"annotations_front,omitempty" gorm:"-"`    // 前端显示的注解字符串
	LabelsMap         map[string]string `json:"labels_map,omitempty" gorm:"-"`           // 标签键值对映射
	AnnotationsMap    map[string]string `json:"annotations_map,omitempty" gorm:"-"`      // 注解键值对映射
}

K8sCluster Kubernetes 集群的配置

type K8sClusterNodesRequest

type K8sClusterNodesRequest struct {
	ClusterId int    `json:"cluster_id" binding:"required"` // 集群id,必填
	NodeName  string `json:"node_name" binding:"required"`  // 节点名称列表,必填
}

K8sClusterNodesRequest 定义集群节点请求的基础结构

type K8sConfigMapRequest

type K8sConfigMapRequest struct {
	ClusterId      int             `json:"cluster_id" binding:"required"` // 集群id,必填
	Namespace      string          `json:"namespace"`                     // 命名空间,可选, 删除用
	ConfigMapNames []string        `json:"config_map_names"`              // ConfigMap 名称,可选, 删除用
	ConfigMap      *core.ConfigMap `json:"config_map"`                    // ConfigMap 对象, 可选
}

K8sConfigMapRequest ConfigMap 相关请求结构

type K8sContainerPort

type K8sContainerPort struct {
	Name          string `json:"name,omitempty" gorm:"size:100;comment:端口名称"`            // 端口名称(可选)
	ContainerPort int    `json:"container_port" binding:"required" gorm:"comment:容器端口号"` // 容器端口号
	Protocol      string `json:"protocol,omitempty" gorm:"size:10;comment:协议类型"`         // 协议类型,例如 "TCP", "UDP"
}

K8sContainerPort 容器的端口配置

type K8sCronjob

type K8sCronjob struct {
	Model
	Name         string     `json:"name" binding:"required,min=1,max=200" gorm:"size:100;comment:定时任务名称"` // 定时任务名称
	Cluster      string     `json:"cluster,omitempty" gorm:"size:100;comment:所属集群"`                       // 所属集群
	TreeNodeID   int        `json:"tree_node_id" gorm:"comment:关联的树节点ID"`                                 // 关联的树节点ID
	UserID       int        `json:"user_id" gorm:"comment:创建者用户ID"`                                       // 创建者用户ID
	K8sProjectID int        `json:"k8s_project_id" gorm:"comment:关联的 Kubernetes 项目ID"`                    // 关联的 Kubernetes 项目ID
	Namespace    string     `json:"namespace,omitempty" gorm:"comment:命名空间"`                              // 命名空间
	Schedule     string     `json:"schedule,omitempty" gorm:"comment:调度表达式"`                              // 调度表达式
	Image        string     `json:"image,omitempty" gorm:"comment:镜像"`                                    // 镜像
	Commands     StringList `json:"commands,omitempty" gorm:"comment:启动命令组"`                              // 启动命令组
	Args         StringList `json:"args,omitempty" gorm:"comment:启动参数,空格分隔"`                              // 启动参数

	// 前端使用字段
	CommandsFront       []KeyValueItem `json:"commands_front,omitempty" gorm:"-"`         // 前端显示的命令
	ArgsFront           []KeyValueItem `json:"args_front,omitempty" gorm:"-"`             // 前端显示的参数
	LastScheduleTime    string         `json:"last_schedule_time,omitempty" gorm:"-"`     // 最近一次调度时间
	LastSchedulePodName string         `json:"last_schedule_pod_name,omitempty" gorm:"-"` // 最近一次调度的 Pod 名称
	CreateUserName      string         `json:"create_username,omitempty" gorm:"-"`        // 创建者用户名
	NodePath            string         `json:"node_path,omitempty" gorm:"-"`              // 节点路径
	Key                 string         `json:"key" gorm:"-"`                              // 前端表格使用的Key
	TreeNodeObj         *TreeNode      `json:"tree_node_obj,omitempty" gorm:"-"`          // 树节点对象
	ClusterObj          *K8sCluster    `json:"cluster_obj,omitempty" gorm:"-"`            // 集群对象
	ProjectObj          *K8sProject    `json:"project_obj,omitempty" gorm:"-"`            // 项目对象
	K8sProjectName      string         `json:"k8s_project_name,omitempty" gorm:"-"`       // 项目名称
}

K8sCronjob Kubernetes 定时任务的配置

type K8sDeploymentRequest

type K8sDeploymentRequest struct {
	ClusterId       int                `json:"cluster_id" binding:"required"` // 集群名称,必填
	Namespace       string             `json:"namespace" binding:"required"`  // 命名空间,必填
	DeploymentNames []string           `json:"deployment_names"`              // Deployment 名称,可选
	DeploymentYaml  *appsv1.Deployment `json:"deployment_yaml"`               // Deployment 对象, 可选
}

K8sDeploymentRequest Deployment 相关请求结构

type K8sEnvVar

type K8sEnvVar struct {
	Name  string `json:"name" binding:"required" gorm:"size:100;comment:环境变量名称"` // 环境变量名称
	Value string `json:"value" gorm:"size:500;comment:环境变量值"`                    // 环境变量值
}

K8sEnvVar 环境变量的键值对

type K8sHTTPGetAction

type K8sHTTPGetAction struct {
	Path   string `json:"path" binding:"required" gorm:"size:255;comment:探测路径"` // 探测路径,必填,长度限制为255字符
	Port   int    `json:"port" binding:"required" gorm:"comment:探测端口号"`         // 探测端口号,必填
	Scheme string `json:"scheme,omitempty" gorm:"size:10;comment:协议类型"`         // 协议类型,例如 "HTTP", "HTTPS",长度限制为10字符
}

K8sHTTPGetAction HTTP GET 探测动作

type K8sInstance

type K8sInstance struct {
	Model
	Name          string                 `json:"name" binding:"required,min=1,max=200" gorm:"size:100;comment:实例名称"` // 实例名称
	UserID        int                    `json:"user_id" gorm:"comment:创建者用户ID"`                                     // 创建者用户ID
	Cluster       string                 `json:"cluster,omitempty" gorm:"size:100;comment:所属集群"`                     // 所属集群
	ContainerCore `json:"containerCore"` // 容器核心配置
	Image         string                 `json:"image,omitempty" gorm:"comment:镜像"`            // 镜像
	Replicas      int                    `json:"replicas,omitempty" gorm:"comment:副本数量"`       // 副本数量
	K8sAppID      int                    `json:"k8s_appId" gorm:"comment:关联的 Kubernetes 应用ID"` // 关联的 Kubernetes 应用ID

	// 前端使用字段
	K8sAppName     string      `json:"k8s_app_name,omitempty" gorm:"-"`    // 应用名称
	CreateUserName string      `json:"create_username,omitempty" gorm:"-"` // 创建者用户名
	NodePath       string      `json:"node_path,omitempty" gorm:"-"`       // 节点路径
	Key            string      `json:"key" gorm:"-"`                       // 前端表格使用的Key
	Namespace      string      `json:"namespace,omitempty" gorm:"-"`       // 命名空间
	K8sAppObj      *K8sApp     `json:"k8s_app_obj,omitempty" gorm:"-"`     // 应用对象
	ClusterObj     *K8sCluster `json:"cluster_obj,omitempty" gorm:"-"`     // 集群对象
	ReadyStatus    string      `json:"ready_status,omitempty" gorm:"-"`    // 就绪状态
}

K8sInstance Kubernetes 实例的配置

type K8sNode

type K8sNode struct {
	Name              string               `json:"name" binding:"required,min=1,max=200" gorm:"size:100;comment:节点名称"`    // 节点名称
	ClusterID         int                  `json:"cluster_id" gorm:"index;not null;comment:所属集群ID"`                       // 所属集群ID
	Status            string               `json:"status" gorm:"comment:节点状态,例如 Ready, NotReady, SchedulingDisabled"`     // 节点状态
	ScheduleEnable    bool                 `json:"schedule_enable" gorm:"comment:节点是否可调度"`                                // 节点是否可调度
	Roles             []string             `json:"roles" gorm:"type:text;serializer:json;comment:节点角色,例如 master, worker"` // 节点角色
	Age               string               `json:"age" gorm:"comment:节点存在时间,例如 5d"`                                       // 节点存在时间
	IP                string               `json:"ip" gorm:"comment:节点内部IP"`                                              // 节点内部IP
	PodNum            int                  `json:"pod_num" gorm:"comment:节点上的 Pod 数量"`                                    // 节点上的 Pod 数量
	CpuRequestInfo    string               `json:"cpu_request_info" gorm:"comment:CPU 请求信息,例如 500m/2"`                    // CPU 请求信息
	CpuLimitInfo      string               `json:"cpu_limit_info" gorm:"comment:CPU 限制信息,例如 1/2"`                         // CPU 限制信息
	CpuUsageInfo      string               `json:"cpu_usage_info" gorm:"comment:CPU 使用信息,例如 300m/2 (15%)"`                // CPU 使用信息
	MemoryRequestInfo string               `json:"memory_request_info" gorm:"comment:内存请求信息,例如 1Gi/8Gi"`                  // 内存请求信息
	MemoryLimitInfo   string               `json:"memory_limit_info" gorm:"comment:内存限制信息,例如 2Gi/8Gi"`                    // 内存限制信息
	MemoryUsageInfo   string               `json:"memory_usage_info" gorm:"comment:内存使用信息,例如 1.5Gi/8Gi (18.75%)"`         // 内存使用信息
	PodNumInfo        string               `json:"pod_num_info" gorm:"comment:Pod 数量信息,例如 10/50 (20%)"`                   // Pod 数量信息
	CpuCores          string               `json:"cpu_cores" gorm:"comment:CPU 核心信息,例如 2/4"`                              // CPU 核心信息
	MemGibs           string               `json:"mem_gibs" gorm:"comment:内存信息,例如 8Gi/16Gi"`                              // 内存信息
	EphemeralStorage  string               `json:"ephemeral_storage" gorm:"comment:临时存储信息,例如 100Gi/200Gi"`                // 临时存储信息
	KubeletVersion    string               `json:"kubelet_version" gorm:"comment:Kubelet 版本"`                             // Kubelet 版本
	CriVersion        string               `json:"cri_version" gorm:"comment:容器运行时接口版本"`                                  // 容器运行时接口版本
	OsVersion         string               `json:"os_version" gorm:"comment:操作系统版本"`                                      // 操作系统版本
	KernelVersion     string               `json:"kernel_version" gorm:"comment:内核版本"`                                    // 内核版本
	Labels            []string             `json:"labels" gorm:"type:text;serializer:json;comment:节点标签列表"`                // 节点标签列表
	LabelsFront       string               `json:"labels_front" gorm:"-"`                                                 // 前端显示的标签字符串,格式为多行 key=value
	TaintsFront       string               `json:"taints_front" gorm:"-"`                                                 // 前端显示的 Taints 字符串,格式为多行 key=value:Effect
	LabelPairs        map[string]string    `json:"label_pairs" gorm:"-"`                                                  // 标签键值对映射
	Annotation        map[string]string    `json:"annotation" gorm:"type:text;serializer:json;comment:注解键值对映射"`           // 注解键值对映射
	Conditions        []core.NodeCondition `json:"conditions" gorm:"-"`                                                   // 节点条件列表
	Taints            []core.Taint         `json:"taints" gorm:"-"`                                                       // 节点 Taints 列表
	Events            []OneEvent           `json:"events" gorm:"-"`                                                       // 节点相关事件列表,包含最近的事件信息
	CreatedAt         time.Time            `json:"created_at" gorm:"comment:创建时间"`                                        // 创建时间
	UpdatedAt         time.Time            `json:"updated_at" gorm:"comment:更新时间"`                                        // 更新时间
}

K8sNode Kubernetes 节点

type K8sOneVolume

type K8sOneVolume struct {
	Type         string `json:"type" gorm:"comment:卷类型,如 hostPath, configMap, emptyDir, pvc"`               // 卷类型
	Name         string `json:"name" gorm:"size:100;comment:卷名称"`                                           // 卷名称
	MountPath    string `json:"mount_path" gorm:"size:255;comment:挂载路径"`                                    // 挂载路径
	SubPath      string `json:"sub_path,omitempty" gorm:"size:255;comment:子路径"`                             // 子路径(可选)
	PvcName      string `json:"pvc_name,omitempty" gorm:"size:100;comment:PVC名称,当类型为 pvc 时使用"`              // PVC名称(可选)
	CmName       string `json:"cm_name,omitempty" gorm:"size:100;comment:ConfigMap名称,当类型为 configMap 时使用"`   // ConfigMap名称(可选)
	HostPath     string `json:"host_path,omitempty" gorm:"size:255;comment:Host路径,当类型为 hostPath 时使用"`       // Host路径(可选)
	HostPathType string `json:"host_path_type,omitempty" gorm:"size:50;comment:Host路径类型,当类型为 hostPath 时使用"` // Host路径类型(可选)
}

K8sOneVolume 单个卷的配置

type K8sPod

type K8sPod struct {
	Model
	Name        string            `json:"name" binding:"required,min=1,max=200" gorm:"size:200;comment:Pod 名称"`           // Pod 名称
	Namespace   string            `json:"namespace" binding:"required,min=1,max=200" gorm:"size:200;comment:Pod 所属的命名空间"` // Pod 所属的命名空间
	Status      string            `json:"status" gorm:"comment:Pod 状态,例如 Running, Pending"`                               // Pod 状态,例如 "Running", "Pending"
	NodeName    string            `json:"node_name" gorm:"index;comment:Pod 所在节点名称"`                                      // Pod 所在节点名称
	Labels      map[string]string `json:"labels" gorm:"type:text;serializer:json;comment:Pod 标签键值对"`                      // Pod 标签键值对
	Annotations map[string]string `json:"annotations" gorm:"type:text;serializer:json;comment:Pod 注解键值对"`                 // Pod 注解键值对
	Containers  []K8sPodContainer `json:"containers" gorm:"-"`                                                            // Pod 内的容器信息,前端使用
}

K8sPod 单个 Pod 的模型

type K8sPodContainer

type K8sPodContainer struct {
	Name            string               `json:"name" binding:"required,min=1,max=200" gorm:"size:200;comment:容器名称"`        // 容器名称
	Image           string               `json:"image" binding:"required" gorm:"size:500;comment:容器镜像"`                     // 容器镜像
	Command         StringList           `json:"command,omitempty" gorm:"type:text;serializer:json;comment:启动命令组"`          // 启动命令组
	Args            StringList           `json:"args,omitempty" gorm:"type:text;serializer:json;comment:启动参数,空格分隔"`         // 启动参数
	Envs            []K8sEnvVar          `json:"envs,omitempty" gorm:"type:text;serializer:json;comment:环境变量组"`             // 环境变量组
	Ports           []K8sContainerPort   `json:"ports,omitempty" gorm:"type:text;serializer:json;comment:容器端口配置"`           // 容器端口配置
	Resources       ResourceRequirements `json:"resources,omitempty" gorm:"type:text;serializer:json;comment:资源请求与限制"`      // 资源请求与限制
	VolumeMounts    []K8sVolumeMount     `json:"volume_mounts,omitempty" gorm:"type:text;serializer:json;comment:卷挂载配置"`    // 卷挂载配置
	LivenessProbe   *K8sProbe            `json:"liveness_probe,omitempty" gorm:"type:text;serializer:json;comment:存活探测配置"`  // 存活探测配置
	ReadinessProbe  *K8sProbe            `json:"readiness_probe,omitempty" gorm:"type:text;serializer:json;comment:就绪探测配置"` // 就绪探测配置
	ImagePullPolicy string               `json:"image_pull_policy,omitempty" gorm:"size:50;comment:镜像拉取策略"`                 // 镜像拉取策略,例如 "Always", "IfNotPresent", "Never"
}

K8sPodContainer Pod 中单个容器的模型

type K8sPodRequest

type K8sPodRequest struct {
	ClusterId int       `json:"cluster_id" binding:"required"` // 集群名称,必填
	Pod       *core.Pod `json:"pod"`                           // Pod 对象
}

K8sPodRequest 创建 Pod 的请求结构

type K8sProbe

type K8sProbe struct {
	HTTPGet *K8sHTTPGetAction `json:"http_get,omitempty" gorm:"type:text;serializer:json;comment:HTTP GET 探测配置"` // HTTP GET 探测
	// TCPSocket 和 Exec 探测也可以根据需要添加
	InitialDelaySeconds int `json:"initial_delay_seconds" gorm:"comment:探测初始延迟时间(秒)"` // 探测初始延迟时间
	PeriodSeconds       int `json:"period_seconds" gorm:"comment:探测间隔时间(秒)"`          // 探测间隔时间
	TimeoutSeconds      int `json:"timeout_seconds" gorm:"comment:探测超时时间(秒)"`         // 探测超时时间
	SuccessThreshold    int `json:"success_threshold" gorm:"comment:探测成功阈值"`          // 探测成功阈值
	FailureThreshold    int `json:"failure_threshold" gorm:"comment:探测失败阈值"`          // 探测失败阈值
}

K8sProbe 探测配置

type K8sProject

type K8sProject struct {
	Model
	Name       string   `json:"name" binding:"required,min=1,max=200" gorm:"size:100;comment:项目名称"`          // 项目名称
	NameZh     string   `json:"name_zh" binding:"required,min=1,max=500" gorm:"size:100;comment:项目中文名称"`     // 项目中文名称
	Cluster    string   `json:"cluster" gorm:"size:100;comment:所属集群名称"`                                      // 所属集群名称
	TreeNodeID int      `json:"tree_node_id" gorm:"comment:关联的树节点ID"`                                        // 关联的树节点ID
	UserID     int      `json:"user_id" gorm:"comment:创建者用户ID"`                                              // 创建者用户ID
	K8sApps    []K8sApp `json:"k8s_apps,omitempty" gorm:"foreignKey:K8sProjectID;comment:关联的 Kubernetes 应用"` // 关联的 Kubernetes 应用

	// 前端使用字段
	CreateUserName string    `json:"create_username,omitempty" gorm:"-"` // 创建者用户名
	NodePath       string    `json:"node_path,omitempty" gorm:"-"`       // 节点路径
	Key            string    `json:"key" gorm:"-"`                       // 前端表格使用的Key
	TreeNodeObj    *TreeNode `json:"tree_node_obj,omitempty" gorm:"-"`   // 树节点对象
}

K8sProject Kubernetes 项目的配置

type K8sResourceList

type K8sResourceList struct {
	CPU    string `json:"cpu,omitempty" gorm:"size:50;comment:CPU 数量,例如 '500m', '2'"`     // CPU 数量,例如 "500m", "2"
	Memory string `json:"memory,omitempty" gorm:"size:50;comment:内存数量,例如 '1Gi', '512Mi'"` // 内存数量,例如 "1Gi", "512Mi"
}

K8sResourceList 资源的具体数量

type K8sServiceRequest

type K8sServiceRequest struct {
	ClusterId    int           `json:"cluster_id" binding:"required"` // 集群id,必填
	Namespace    string        `json:"namespace"`                     // 命名空间,必填
	ServiceNames []string      `json:"service_names"`                 // Service 名称,可选
	ServiceYaml  *core.Service `json:"service_yaml"`                  // Service 对象, 可选
}

K8sServiceRequest Service 相关请求结构

type K8sVolumeMount

type K8sVolumeMount struct {
	Name      string `json:"name" binding:"required" gorm:"size:100;comment:卷名称"`        // 卷名称,必填,长度限制为100字符
	MountPath string `json:"mount_path" binding:"required" gorm:"size:255;comment:挂载路径"` // 挂载路径,必填,长度限制为255字符
	ReadOnly  bool   `json:"read_only,omitempty" gorm:"comment:是否只读"`                    // 是否只读
	SubPath   string `json:"sub_path,omitempty" gorm:"size:255;comment:子路径"`             // 子路径(可选),长度限制为255字符
}

K8sVolumeMount 卷的挂载配置

type K8sYamlTask

type K8sYamlTask struct {
	Model
	Name        string     `json:"name" gorm:"type:varchar(255);comment:YAML 任务名称"`                 // YAML 任务名称
	UserID      int        `json:"user_id" gorm:"comment:创建者用户ID"`                                  // 创建者用户ID
	TemplateID  int        `json:"template_id" gorm:"comment:关联的模板ID"`                              // 关联的模板ID
	ClusterId   int        `json:"cluster_id,omitempty" gorm:"comment:集群名称"`                        // 集群名称
	Variables   StringList `json:"variables,omitempty" gorm:"type:text;comment:yaml 变量,格式 k=v,k=v"` // YAML 变量
	Status      string     `json:"status,omitempty" gorm:"comment:当前状态"`                            // 当前状态
	ApplyResult string     `json:"apply_result,omitempty" gorm:"comment:apply 后的返回数据"`              // apply 结果

	// 前端使用字段
	Key            string `json:"key" gorm:"-"`                       // 前端表格使用的Key
	VariablesFront string `json:"variables_front,omitempty" gorm:"-"` // 前端显示的变量
	YamlString     string `json:"yaml_string,omitempty" gorm:"-"`     // YAML 字符串
	TemplateName   string `json:"template_name,omitempty" gorm:"-"`   // 模板名称
	CreateUserName string `json:"create_username,omitempty" gorm:"-"` // 创建者用户名
}

K8sYamlTask Kubernetes YAML 任务的配置

type K8sYamlTemplate

type K8sYamlTemplate struct {
	Model
	Name      string `json:"name" binding:"required,min=1,max=50" gorm:"size:100;comment:模板名称"` // 模板名称
	UserID    int    `json:"user_id" gorm:"comment:创建者用户ID"`                                    // 创建者用户ID
	Content   string `json:"content,omitempty" gorm:"type:text;comment:yaml 模板内容"`              // YAML 模板内容
	ClusterId int    `json:"cluster_id,omitempty" gorm:"comment:对应集群id"`
	// 前端使用字段
	Key            string `json:"key" gorm:"-"`                       // 前端表格使用的Key
	CreateUserName string `json:"create_username,omitempty" gorm:"-"` // 创建者用户名
}

K8sYamlTemplate Kubernetes YAML 模板的配置

type KeyValueItem

type KeyValueItem struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

type LabelK8sNodesRequest

type LabelK8sNodesRequest struct {
	*K8sClusterNodesRequest
	ModType string   `json:"mod_type" binding:"required,oneof=add del"` // 操作类型,必填,值为 "add" 或 "del"
	Labels  []string `json:"labels" binding:"required"`                 // 标签键值对,必填
}

LabelK8sNodesRequest 定义为节点添加标签的请求结构

type ListApisRequest

type ListApisRequest struct {
	PageNumber int `json:"page_number" binding:"required,gt=0"` // 页码
	PageSize   int `json:"page_size" binding:"required,gt=0"`   // 每页数量
}

type ListMenusRequest

type ListMenusRequest struct {
	PageNumber int `json:"page_number" binding:"required,gt=0"` // 页码
	PageSize   int `json:"page_size" binding:"required,gt=0"`   // 每页数量
}

type ListRolesRequest

type ListRolesRequest struct {
	PageNumber int `json:"page_number" binding:"required,gt=0"` // 页码
	PageSize   int `json:"page_size" binding:"required,gt=0"`   // 每页数量
}

type ListUserRolesRequest

type ListUserRolesRequest struct {
	PageNumber int `json:"page_number" binding:"required,gt=0"` // 页码
	PageSize   int `json:"page_size" binding:"required,gt=0"`   // 每页数量
}
type Menu struct {
	ID         int       `json:"id" gorm:"primaryKey;column:id;comment:菜单ID"`
	Name       string    `json:"name" gorm:"column:name;type:varchar(50);not null;comment:菜单显示名称"`
	ParentID   int       `json:"parent_id" gorm:"column:parent_id;default:0;comment:上级菜单ID,0表示顶级菜单"`
	Path       string    `json:"path" gorm:"column:path;type:varchar(255);not null;comment:前端路由访问路径"`
	Component  string    `json:"component" gorm:"column:component;type:varchar(255);not null;comment:前端组件文件路径"`
	RouteName  string    `json:"route_name" gorm:"column:route_name;type:varchar(50);not null;comment:前端路由名称,需唯一"`
	Hidden     int       `json:"hidden" gorm:"column:hidden;type:tinyint(1);default:0;comment:菜单是否隐藏(0:显示 1:隐藏)"`
	Redirect   string    `json:"redirect" gorm:"column:redirect;type:varchar(255);default:'';comment:重定向路径"`
	Meta       MetaField `json:"meta" gorm:"column:meta;type:json;serializer:json;comment:菜单元数据"`
	CreateTime int64     `json:"create_time" gorm:"column:create_time;autoCreateTime;comment:记录创建时间戳"`
	UpdateTime int64     `json:"update_time" gorm:"column:update_time;autoUpdateTime;comment:记录最后更新时间戳"`
	IsDeleted  int       `json:"is_deleted" gorm:"column:is_deleted;type:tinyint(1);default:0;comment:逻辑删除标记(0:未删除 1:已删除)"`
	Children   []*Menu   `json:"children" gorm:"-"` // 子菜单列表,不映射到数据库
}

type Meta

type Meta struct {
	Order      int    `json:"order,omitempty"`      // 排序
	Title      string `json:"title"`                // 标题
	AffixTab   bool   `json:"affixTab,omitempty"`   // 是否固定标签页
	HideInMenu bool   `json:"hideInMenu,omitempty"` // 是否在菜单中隐藏
	Icon       string `json:"icon"`                 // 图标
}

Meta 菜单元数据

type MetaField

type MetaField Meta

func (*MetaField) Scan

func (m *MetaField) Scan(value interface{}) error

func (*MetaField) Value

func (m *MetaField) Value() (driver.Value, error)

type Model

type Model struct {
	ID        int                   `json:"id" gorm:"primaryKey;autoIncrement;comment:主键ID"` // 主键ID,自增
	CreatedAt time.Time             `json:"created_at" gorm:"autoCreateTime;comment:创建时间"`   // 创建时间,自动记录
	UpdatedAt time.Time             `json:"updated_at" gorm:"autoUpdateTime;comment:更新时间"`   // 更新时间,自动记录
	DeletedAt soft_delete.DeletedAt `json:"deleted_at" gorm:"index;comment:删除时间"`            // 软删除时间,使用普通索引
}

type MonitorAlertEvent

type MonitorAlertEvent struct {
	Model
	AlertName     string     `json:"alertName" binding:"required,min=1,max=200" gorm:"size:200;comment:告警名称"`
	Fingerprint   string     `json:"fingerprint" binding:"required,min=1,max=50" gorm:"uniqueIndex;size:100;comment:告警唯一ID"`
	Status        string     `json:"status,omitempty" gorm:"size:50;comment:告警状态(如告警中、已屏蔽、已认领、已恢复)"`
	RuleID        int        `json:"ruleId" gorm:"comment:关联的告警规则ID"`
	SendGroupID   int        `json:"sendGroupId" gorm:"comment:关联的发送组ID"`
	EventTimes    int        `json:"eventTimes" gorm:"comment:触发次数"`
	SilenceID     string     `json:"silenceId,omitempty" gorm:"size:100;comment:AlertManager返回的静默ID"`
	RenLingUserID int        `json:"renLingUserId" gorm:"comment:认领告警的用户ID"`
	Labels        StringList `json:"labels,omitempty" gorm:"type:text;comment:标签组,格式为 key=v"`

	// 前端使用字段
	Key                string            `json:"key" gorm:"-"`
	AlertRuleName      string            `json:"alertRuleName,omitempty" gorm:"-"`
	SendGroupName      string            `json:"sendGroupName,omitempty" gorm:"-"`
	Alert              template.Alert    `json:"alert,omitempty" gorm:"-"`
	SendGroup          *MonitorSendGroup `json:"sendGroup,omitempty" gorm:"-"`
	RenLingUser        *User             `json:"renLingUser,omitempty" gorm:"-"`
	Rule               *MonitorAlertRule `json:"rule,omitempty" gorm:"-"`
	LabelsMatcher      map[string]string `json:"labelsMatcher,omitempty" gorm:"-"`
	AnnotationsMatcher map[string]string `json:"annotationsMatcher,omitempty" gorm:"-"`
}

MonitorAlertEvent 告警事件与相关实体的关系

type MonitorAlertManagerPool

type MonitorAlertManagerPool struct {
	Model
	Name                  string     `` /* 147-byte string literal not displayed */
	AlertManagerInstances StringList `json:"alertManagerInstances" gorm:"type:text;comment:选择多个AlertManager实例"`
	UserID                int        `json:"userId" gorm:"comment:创建该实例池的用户ID"`
	ResolveTimeout        string     `json:"resolveTimeout,omitempty" gorm:"size:50;comment:默认恢复时间"`
	GroupWait             string     `json:"groupWait,omitempty" gorm:"size:50;comment:默认分组第一次等待时间"`
	GroupInterval         string     `json:"groupInterval,omitempty" gorm:"size:50;comment:默认分组等待间隔"`
	RepeatInterval        string     `json:"repeatInterval,omitempty" gorm:"size:50;comment:默认重复发送时间"`
	GroupBy               StringList `json:"groupBy,omitempty" gorm:"type:text;comment:分组的标签"`
	Receiver              string     `json:"receiver,omitempty" gorm:"size:100;comment:兜底接收者"`

	// 前端使用字段
	GroupByFront   string `json:"groupByFront,omitempty" gorm:"-"`
	Key            string `json:"key" gorm:"-"`
	CreateUserName string `json:"createUserName,omitempty" gorm:"-"`
}

MonitorAlertManagerPool AlertManager 实例池的配置

type MonitorAlertRule

type MonitorAlertRule struct {
	Model
	Name        string     `` /* 135-byte string literal not displayed */
	UserID      int        `json:"userId" gorm:"comment:创建该告警规则的用户ID"`
	PoolID      int        `json:"poolId" gorm:"comment:关联的Prometheus实例池ID"`
	SendGroupID int        `json:"sendGroupId" gorm:"comment:关联的发送组ID"`
	TreeNodeID  int        `json:"treeNodeId" gorm:"comment:绑定的树节点ID"`
	Enable      int        `json:"enable" gorm:"type:int;comment:是否启用告警规则:1启用,2禁用"`
	Expr        string     `json:"expr" gorm:"type:text;comment:告警规则表达式"`
	Severity    string     `json:"severity,omitempty" gorm:"size:50;comment:告警级别,如critical、warning"`
	GrafanaLink string     `json:"grafanaLink,omitempty" gorm:"type:text;comment:Grafana大盘链接"`
	ForTime     string     `json:"forTime,omitempty" gorm:"size:50;comment:持续时间,达到此时间才触发告警"`
	Labels      StringList `json:"labels,omitempty" gorm:"type:text;comment:标签组,格式为 key=v"`
	Annotations StringList `json:"annotations,omitempty" gorm:"type:text;comment:注解,格式为 key=v"`

	// 前端使用字段
	NodePath       string `json:"nodePath,omitempty" gorm:"-"`
	TreeNodeIDs    []int  `json:"treeNodeIds,omitempty" gorm:"-"`
	Key            string `json:"key" gorm:"-"`
	PoolName       string `json:"poolName,omitempty" gorm:"-"`
	SendGroupName  string `json:"sendGroupName,omitempty" gorm:"-"`
	CreateUserName string `json:"createUserName,omitempty" gorm:"-"`
	LabelsFront    string `json:"labelsFront,omitempty" gorm:"-"`
}

MonitorAlertRule 告警规则的配置

type MonitorOnDutyChange

type MonitorOnDutyChange struct {
	Model
	OnDutyGroupID int    `json:"onDutyGroupId" gorm:"comment:值班组ID,用于标识值班历史记录"`
	UserID        int    `json:"userId" gorm:"comment:创建该换班记录的用户ID"`
	Date          string `json:"date" gorm:"comment:计划哪一天进行换班的日期"`
	OriginUserID  int    `json:"originUserId" gorm:"comment:换班前原定的值班人员用户ID"`
	OnDutyUserID  int    `json:"onDutyUserId" gorm:"comment:换班后值班人员的用户ID"`

	// 前端使用字段
	TargetUserName string `json:"targetUserName,omitempty" gorm:"-"`
	OriginUserName string `json:"originUserName,omitempty" gorm:"-"`
	Key            string `json:"key" gorm:"-"`
	PoolName       string `json:"poolName,omitempty" gorm:"-"`
	CreateUserName string `json:"createUserName,omitempty" gorm:"-"`
}

MonitorOnDutyChange 值班换班记录

type MonitorOnDutyGroup

type MonitorOnDutyGroup struct {
	Model
	Name                      string  `` /* 168-byte string literal not displayed */
	UserID                    int     `json:"userId" gorm:"comment:创建该值班组的用户ID"`
	Members                   []*User `json:"members" gorm:"many2many:monitor_onDuty_users;comment:值班组成员列表,多对多关系"`
	ShiftDays                 int     `json:"shiftDays,omitempty" gorm:"type:int;comment:轮班周期,以天为单位"`
	YesterdayNormalDutyUserID int     `json:"yesterdayNormalDutyUserId" gorm:"comment:昨天的正常排班值班人ID,由cron任务设置"`

	// 前端使用字段
	TodayDutyUser  *User    `json:"todayDutyUser,omitempty" gorm:"-"`
	UserNames      []string `json:"userNames,omitempty" gorm:"-"`
	Key            string   `json:"key" gorm:"-"`
	CreateUserName string   `json:"createUserName,omitempty" gorm:"-"`
}

MonitorOnDutyGroup 值班组的配置

type MonitorOnDutyHistory

type MonitorOnDutyHistory struct {
	Model
	OnDutyGroupID int    `json:"onDutyGroupId" gorm:"index;comment:值班组ID,用于标识值班历史记录"`
	DateString    string `json:"dateString" gorm:"type:varchar(50);comment:日期"`
	OnDutyUserID  int    `json:"onDutyUserId" gorm:"comment:当天值班人员的用户ID"`
	OriginUserID  int    `json:"originUserId" gorm:"comment:原计划的值班人员用户ID"`

	// 前端使用字段
	Key            string `json:"key" gorm:"-"`
	PoolName       string `json:"poolName,omitempty" gorm:"-"`
	CreateUserName string `json:"createUserName,omitempty" gorm:"-"`
}

MonitorOnDutyHistory 值班历史记录

type MonitorRecordRule

type MonitorRecordRule struct {
	Model
	Name       string `` /* 141-byte string literal not displayed */
	RecordName string `` /* 142-byte string literal not displayed */
	UserID     int    `json:"userId" gorm:"comment:创建该记录规则的用户ID"`
	PoolID     int    `json:"poolId" gorm:"comment:关联的Prometheus实例池ID"`
	TreeNodeID int    `json:"treeNodeId" gorm:"comment:绑定的树节点ID"`
	Enable     int    `json:"enable" gorm:"type:int;comment:是否启用记录规则:1启用,2禁用"`
	ForTime    string `json:"forTime,omitempty" gorm:"size:50;comment:持续时间,达到此时间才触发记录规则"`
	Expr       string `json:"expr" gorm:"type:text;comment:记录规则表达式"`

	// 前端使用字段
	NodePath         string            `json:"nodePath,omitempty" gorm:"-"`
	TreeNodeIDs      []int             `json:"treeNodeIds,omitempty" gorm:"-"`
	Key              string            `json:"key" gorm:"-"`
	PoolName         string            `json:"poolName,omitempty" gorm:"-"`
	SendGroupName    string            `json:"sendGroupName,omitempty" gorm:"-"`
	CreateUserName   string            `json:"createUserName,omitempty" gorm:"-"`
	LabelsFront      string            `json:"labelsFront,omitempty" gorm:"-"`
	AnnotationsFront string            `json:"annotationsFront,omitempty" gorm:"-"`
	LabelsM          map[string]string `json:"labelsM,omitempty" gorm:"-"`
	AnnotationsM     map[string]string `json:"annotationsM,omitempty" gorm:"-"`
}

MonitorRecordRule 记录规则的配置

type MonitorScrapeJob

type MonitorScrapeJob struct {
	Model
	Name                     string     `` /* 141-byte string literal not displayed */
	UserID                   int        `json:"userId" gorm:"comment:任务关联的用户ID"`
	Enable                   int        `json:"enable" gorm:"type:int;comment:是否启用采集任务:1为启用,2为禁用"`
	ServiceDiscoveryType     string     `json:"serviceDiscoveryType,omitempty" gorm:"size:50;comment:服务发现类型,支持 k8s 或 http"`
	MetricsPath              string     `json:"metricsPath,omitempty" gorm:"size:255;comment:监控采集的路径"`
	Scheme                   string     `json:"scheme,omitempty" gorm:"size:10;comment:监控采集的协议方案(如 http 或 https)"`
	ScrapeInterval           int        `json:"scrapeInterval,omitempty" gorm:"default:30;type:int;comment:采集的时间间隔(秒)"`
	ScrapeTimeout            int        `json:"scrapeTimeout,omitempty" gorm:"default:10;type:int;comment:采集的超时时间(秒)"`
	PoolID                   int        `json:"poolId" gorm:"comment:关联的采集池ID"`
	RelabelConfigsYamlString string     `json:"relabelConfigsYamlString,omitempty" gorm:"type:text;comment:relabel配置的YAML字符串"`
	RefreshInterval          int        `json:"refreshInterval,omitempty" gorm:"type:int;comment:刷新目标的时间间隔(针对服务树http类型,秒)"`
	Port                     int        `json:"port,omitempty" gorm:"type:int;comment:端口号(针对服务树服务发现接口)"`
	TreeNodeIDs              StringList `json:"treeNodeIds,omitempty" gorm:"type:text;comment:服务树接口绑定的树节点ID列表,用于获取IP列表"`
	KubeConfigFilePath       string     `json:"kubeConfigFilePath,omitempty" gorm:"size:255;comment:连接apiServer的Kubernetes配置文件路径"`
	TlsCaFilePath            string     `json:"tlsCaFilePath,omitempty" gorm:"size:255;comment:TLS CA证书文件路径"`
	TlsCaContent             string     `json:"tlsCaContent,omitempty" gorm:"type:text;comment:TLS CA证书内容"`
	BearerToken              string     `json:"bearerToken,omitempty" gorm:"type:text;comment:鉴权Token内容"`
	BearerTokenFile          string     `json:"bearerTokenFile,omitempty" gorm:"size:255;comment:鉴权Token文件路径"`
	KubernetesSdRole         string     `json:"kubernetesSdRole,omitempty" gorm:"size:50;comment:Kubernetes服务发现角色"`

	TreeNodeNames  []string `json:"treeNodeNames,omitempty" gorm:"-"`
	CreateUserName string   `json:"createUserName,omitempty" gorm:"-"`
}

MonitorScrapeJob 监控采集任务的配置

type MonitorScrapePool

type MonitorScrapePool struct {
	Model
	Name                  string     `` /* 138-byte string literal not displayed */
	PrometheusInstances   StringList `json:"prometheusInstances,omitempty" gorm:"type:text;comment:选择多个Prometheus实例"`
	AlertManagerInstances StringList `json:"alertManagerInstances,omitempty" gorm:"type:text;comment:选择多个AlertManager实例"`
	UserID                int        `json:"userId" gorm:"comment:创建该采集池的用户ID"`
	ScrapeInterval        int        `json:"scrapeInterval,omitempty" gorm:"default:30;type:int;comment:采集间隔(秒)"`
	ScrapeTimeout         int        `json:"scrapeTimeout,omitempty" gorm:"default:10;type:int;comment:采集超时时间(秒)"`
	ExternalLabels        StringList `` /* 135-byte string literal not displayed */
	SupportAlert          int        `json:"supportAlert" gorm:"type:int;comment:是否支持告警:1支持,2不支持"`
	SupportRecord         int        `json:"supportRecord" gorm:"type:int;comment:是否支持预聚合:1支持,2不支持"`
	RemoteReadUrl         string     `json:"remoteReadUrl,omitempty" gorm:"size:255;comment:远程读取的地址"`
	AlertManagerUrl       string     `json:"alertManagerUrl,omitempty" gorm:"size:255;comment:AlertManager的地址"`
	RuleFilePath          string     `json:"ruleFilePath,omitempty" gorm:"size:255;comment:规则文件路径"`
	RecordFilePath        string     `json:"recordFilePath,omitempty" gorm:"size:255;comment:记录文件路径"`
	RemoteWriteUrl        string     `json:"remoteWriteUrl,omitempty" gorm:"size:255;comment:远程写入的地址"`
	RemoteTimeoutSeconds  int        `json:"remoteTimeoutSeconds,omitempty" gorm:"default:5;type:int;comment:远程写入的超时时间(秒)"`

	// 前端使用字段
	ExternalLabelsFront string `json:"externalLabelsFront,omitempty" gorm:"-"`
	Key                 string `json:"key" gorm:"-"`
	CreateUserName      string `json:"createUserName,omitempty" gorm:"-"`
}

MonitorScrapePool 采集池的配置

type MonitorSendGroup

type MonitorSendGroup struct {
	Model
	Name                string     `` /* 174-byte string literal not displayed */
	NameZh              string     `` /* 182-byte string literal not displayed */
	Enable              int        `json:"enable" gorm:"type:int;comment:是否启用发送组:1启用,2禁用"`
	UserID              int        `json:"userId" gorm:"comment:创建该发送组的用户ID"`
	PoolID              int        `json:"poolId" gorm:"comment:关联的AlertManager实例ID"`
	OnDutyGroupID       int        `json:"onDutyGroupId" gorm:"comment:值班组ID"`
	StaticReceiveUsers  []*User    `json:"staticReceiveUsers" gorm:"many2many:static_receive_users;comment:静态配置的接收人列表,多对多关系"`
	FeiShuQunRobotToken string     `json:"feiShuQunRobotToken,omitempty" gorm:"size:255;comment:飞书机器人Token,对应IM群"`
	RepeatInterval      string     `json:"repeatInterval,omitempty" gorm:"size:50;comment:默认重复发送时间"`
	SendResolved        int        `json:"sendResolved" gorm:"type:int;comment:是否发送恢复通知:1发送,2不发送"`
	NotifyMethods       StringList `json:"notifyMethods,omitempty" gorm:"type:text;comment:通知方法,如:email, im, phone, sms"`
	NeedUpgrade         int        `json:"needUpgrade" gorm:"type:int;comment:是否需要告警升级:1需要,2不需要"`
	FirstUpgradeUsers   []*User    `json:"firstUpgradeUsers" gorm:"many2many:first_upgrade_users;comment:第一升级人列表,多对多关系"`
	UpgradeMinutes      int        `json:"upgradeMinutes,omitempty" gorm:"type:int;comment:告警多久未恢复则升级(分钟)"`
	SecondUpgradeUsers  []*User    `json:"secondUpgradeUsers" gorm:"many2many:second_upgrade_users;comment:第二升级人列表,多对多关系"`

	// 前端使用字段
	TreeNodeIDs     []int    `json:"treeNodeIds,omitempty" gorm:"-"`
	FirstUserNames  []string `json:"firstUserNames,omitempty" gorm:"-"`
	Key             string   `json:"key" gorm:"-"`
	PoolName        string   `json:"poolName,omitempty" gorm:"-"`
	OnDutyGroupName string   `json:"onDutyGroupName,omitempty" gorm:"-"`
	CreateUserName  string   `json:"createUserName,omitempty" gorm:"-"`
}

MonitorSendGroup 发送组的配置

type Namespace

type Namespace struct {
	Name         string    `json:"name"`                  // 命名空间名称
	UID          string    `json:"uid"`                   // 命名空间唯一标识符
	Status       string    `json:"status"`                // 命名空间状态,例如 Active
	CreationTime time.Time `json:"creation_time"`         // 创建时间
	Labels       []string  `json:"labels,omitempty"`      // 命名空间标签
	Annotations  []string  `json:"annotations,omitempty"` // 命名空间注解
}

Namespace 命名空间响应结构体

type OnDutyOne

type OnDutyOne struct {
	Date       string `json:"date"`
	User       *User  `json:"user"`
	OriginUser string `json:"originUser"` // 原始用户名
}

type OnDutyPlanResp

type OnDutyPlanResp struct {
	Details       []OnDutyOne       `json:"details"`
	Map           map[string]string `json:"map"`
	UserNameMap   map[string]string `json:"userNameMap"`
	OriginUserMap map[string]string `json:"originUserMap"`
}

type OneEvent

type OneEvent struct {
	Type      string `json:"type"`       // 事件类型,例如 "Normal", "Warning"
	Component string `json:"component"`  // 事件的组件来源,例如 "kubelet"
	Reason    string `json:"reason"`     // 事件的原因,例如 "NodeReady"
	Message   string `json:"message"`    // 事件的详细消息
	FirstTime string `json:"first_time"` // 事件第一次发生的时间,例如 "2024-04-27T10:00:00Z"
	LastTime  string `json:"last_time"`  // 事件最近一次发生的时间,例如 "2024-04-27T12:00:00Z"
	Object    string `json:"object"`     // 事件关联的对象信息,例如 "kind:Node name:node-1"
	Count     int    `json:"count"`      // 事件发生的次数
}

OneEvent 单个事件的模型

type PromqlExprCheckReq

type PromqlExprCheckReq struct {
	PromqlExpr string `json:"promqlExpr" binding:"required"`
}

type Resource

type Resource struct {
	Type         string    `json:"type"`          // 资源类型,例如 Pod, Service, Deployment
	Name         string    `json:"name"`          // 资源名称
	Namespace    string    `json:"namespace"`     // 所属命名空间
	Status       string    `json:"status"`        // 资源状态,例如 Running, Pending
	CreationTime time.Time `json:"creation_time"` // 创建时间
}

Resource 命名空间中的资源响应结构体

type ResourceEcs

type ResourceEcs struct {
	Model
	ResourceTree

	// 核心资源属性
	OsType            string     `json:"osType" gorm:"type:varchar(50);comment:操作系统类型,例如 win、linux"`           // 操作系统类型
	VmType            int        `json:"vmType" gorm:"default:1;comment:设备类型,1=虚拟设备,2=物理设备"`                   // 设备类型
	InstanceType      string     `json:"instanceType" gorm:"type:varchar(100);comment:实例类型,例:ecs.g8a.2xlarge"` // 实例类型
	Cpu               int        `json:"cpu" gorm:"comment:虚拟 CPU 核数"`                                         // 虚拟 CPU 核数
	Memory            int        `json:"memory" gorm:"comment:内存大小,单位 GiB"`                                    // 内存大小,单位 GiB
	Disk              int        `json:"disk" gorm:"comment:磁盘大小,单位 GiB"`                                      // 磁盘大小,单位 GiB
	OSName            string     `json:"osName" gorm:"type:varchar(100);comment:操作系统名称,例:CentOS 7.4 64 位"`     // 操作系统名称
	ImageId           string     `json:"imageId" gorm:"type:varchar(100);comment:镜像模板 ID"`                     // 镜像模板 ID
	Hostname          string     `json:"hostname" gorm:"type:varchar(100);comment:主机名"`                        // 主机名
	Password          string     `json:"password" gorm:"comment:密码"`
	NetworkInterfaces StringList `json:"networkInterfaces" gorm:"type:varchar(500);comment:弹性网卡 ID 集合"` // 弹性网卡 ID 集合
	DiskIds           StringList `json:"diskIds" gorm:"type:varchar(500);comment:云盘 ID 集合"`             // 云盘 ID 集合
	Status            string     `json:"status" gorm:"type:varchar(50);comment:资源状态,如 运行中、已停止、创建中"`     // 资源状态
	// 时间相关字段
	StartTime       string `json:"startTime" gorm:"type:varchar(30);comment:最近启动时间, ISO 8601 标准, UTC+0 时间"`       // 最近启动时间
	AutoReleaseTime string `json:"autoReleaseTime" gorm:"type:varchar(30);comment:自动释放时间, ISO 8601 标准, UTC+0 时间"` // 自动释放时间
	LastInvokedTime string `json:"lastInvokedTime" gorm:"type:varchar(30);comment:最近调用时间, ISO 8601 标准, UTC+0 时间"` // 最近调用时间

	// 多对多关系
	BindNodes          []*TreeNode `json:"bind_nodes" gorm:"many2many:bind_ecs;comment:绑定的树节点列表"` // 绑定的树节点
	CreateResourceType int         `json:"createResourceType" gorm:"-"`
}

ResourceEcs 表示 ECS 资源的结构体, 包含虚拟机的硬件和网络信息

type ResourceElb

type ResourceElb struct {
	Model
	ResourceTree

	// 负载均衡器的核心属性
	LoadBalancerType   string      `json:"loadBalancerType" gorm:"type:varchar(50);comment:负载均衡类型, 例: nlb, alb, clb"` // 负载均衡类型, 如 nlb, alb, clb
	BandwidthCapacity  int         `json:"bandwidthCapacity" gorm:"comment:带宽容量上限, 单位 Mb, 例: 50"`                     // 带宽容量上限, 单位 Mb
	AddressType        string      `json:"addressType" gorm:"type:varchar(50);comment:地址类型, 公网或内网"`                   // 地址类型, 支持公网或内网
	DNSName            string      `json:"dnsName" gorm:"type:varchar(255);comment:DNS 解析地址"`                         // DNS 解析地址
	BandwidthPackageId string      `json:"bandwidthPackageId" gorm:"type:varchar(100);comment:绑定的带宽包 ID"`             // 绑定的带宽包 ID
	CrossZoneEnabled   bool        `json:"crossZoneEnabled" gorm:"comment:是否启用跨可用区"`                                  // 是否启用跨可用区
	BindNodes          []*TreeNode `json:"bind_nodes" gorm:"many2many:bind_elbs;comment:绑定的树节点列表"`                    // 绑定的树节点
	CreateResourceType int         `json:"createResourceType" gorm:"-"`
}

ResourceElb 表示负载均衡器资源的结构体

type ResourceRds

type ResourceRds struct {
	Model
	ResourceTree

	// RDS 的核心属性
	Engine            string `json:"engine" gorm:"type:varchar(50);comment:数据库引擎类型, 例: mysql, mariadb, postgresql"`           // 数据库引擎类型
	DBInstanceNetType string `json:"dbInstanceNetType" gorm:"type:varchar(50);comment:实例网络类型, 例: Internet(外网), Intranet(内网)"` // 实例网络类型
	DBInstanceClass   string `json:"dbInstanceClass" gorm:"type:varchar(100);comment:实例规格, 例: rds.mys2.small"`                // 实例规格
	DBInstanceType    string `json:"dbInstanceType" gorm:"type:varchar(50);comment:实例类型, 例: Primary(主实例), Readonly(只读实例)"`    // 实例类型
	EngineVersion     string `json:"engineVersion" gorm:"type:varchar(50);comment:数据库版本, 例: 8.0, 5.7"`                        // 数据库版本
	MasterInstanceId  string `json:"masterInstanceId" gorm:"type:varchar(100);comment:主实例 ID"`                                // 主实例 ID
	DBInstanceStatus  string `json:"dbInstanceStatus" gorm:"type:varchar(50);comment:实例状态"`                                   // 实例状态
	ReplicateId       string `json:"replicateId" gorm:"type:varchar(100);comment:复制实例 ID"`                                    // 复制实例 ID

	// 多对多关系
	BindNodes          []*TreeNode `json:"bind_nodes" gorm:"many2many:bind_rds;comment:绑定的树节点列表"` // 绑定的树节点
	CreateResourceType int         `json:"createResourceType" gorm:"-"`
}

ResourceRds 表示 RDS 资源的结构体

type ResourceRequirements

type ResourceRequirements struct {
	Requests K8sResourceList `json:"requests,omitempty" gorm:"type:text;serializer:json;comment:资源请求"` // 资源请求
	Limits   K8sResourceList `json:"limits,omitempty" gorm:"type:text;serializer:json;comment:资源限制"`   // 资源限制
}

ResourceRequirements 资源的请求与限制

type ResourceTree

type ResourceTree struct {
	InstanceName     string     `json:"instanceName" gorm:"uniqueIndex;type:varchar(100);comment:资源实例名称,支持模糊搜索"` // 资源实例名称,支持模糊搜索
	Hash             string     `json:"hash" gorm:"uniqueIndex;type:varchar(200);comment:用于资源更新的哈希值"`            // 增量更新的哈希值
	Vendor           string     `json:"vendor" gorm:"varchar(50);comment:云厂商名称,1=个人,2=阿里云,3=华为云,4=腾讯云,5=AWS"`    // 云厂商名称
	CreateByOrder    bool       `json:"createByOrder" gorm:"comment:是否由工单创建,工单创建的资源不会被自动更新删除"`                   // 是否由工单创建的标识
	Image            string     `json:"image" gorm:"type:varchar(100);comment:镜像名称"`                             // 镜像名称
	VpcId            string     `json:"vpcId" gorm:"type:varchar(100);comment:专有网络 VPC ID"`                      // 专有网络 VPC ID
	ZoneId           string     `json:"zoneId" gorm:"type:varchar(100);comment:实例所属可用区 ID,如 cn-hangzhou-g"`      // 可用区 ID
	Env              string     `json:"env" gorm:"type:varchar(50);comment:环境标识,如 dev、stage、prod"`               // 环境标识
	PayType          string     `json:"payType" gorm:"type:varchar(50);comment:付费类型,按量付费或包年包月"`                  // 付费类型
	Status           string     `json:"status" gorm:"type:varchar(50);comment:资源状态,如 运行中、已停止、创建中"`               // 资源状态
	Description      string     `json:"description" gorm:"type:text;comment:资源描述,如 CentOS 7.4 操作系统"`             // 资源描述
	Tags             StringList `json:"tags" gorm:"type:varchar(500);comment:资源标签集合,用于分类和筛选"`                    // 资源标签
	SecurityGroupIds StringList `json:"securityGroupIds" gorm:"type:varchar(500);comment:安全组 ID 列表"`             // 安全组 ID 列表
	PrivateIpAddress string     `json:"privateIpAddress" gorm:"type:varchar(500);comment:私有 IP 地址列表"`            // 私有 IP 地址列表
	PublicIpAddress  string     `json:"publicIpAddress" gorm:"type:varchar(500);comment:公网 IP 地址列表"`             // 公网 IP 地址列表
	IpAddr           string     `json:"ipAddr" gorm:"type:varchar(45);uniqueIndex;comment:单个公网 IP 地址"`           // 单个公网 IP 地址
	Port             int        `json:"port" gorm:"comment:端口号;default:22"`
	Username         string     `json:"username" gorm:"comment:用户名;default:root"`
	Password         string     `json:"password" gorm:"comment:密码"`
	Key              string     `json:"key" gorm:"comment:秘钥"`
	Mode             string     `json:"mode" gorm:"comment:认证方式;default:password"`
	CreationTime     string     `json:"creationTime" gorm:"type:varchar(30);comment:创建时间,ISO 8601 格式"` // 创建时间,ISO 8601 格式
}

ResourceTree 表示 CMDB 中的资源树节点,包含资源的基本信息

type Role

type Role struct {
	ID          int    `json:"id" gorm:"primaryKey;column:id;comment:主键ID"`
	Name        string `json:"name" gorm:"column:name;type:varchar(50);not null;unique;comment:角色名称"`
	Description string `json:"description" gorm:"column:description;type:varchar(255);comment:角色描述"`
	RoleType    int    `json:"role_type" gorm:"column:role_type;type:tinyint(1);not null;comment:角色类型(1:系统角色,2:自定义角色)"`
	IsDefault   int    `json:"is_default" gorm:"column:is_default;type:tinyint(1);default:0;comment:是否为默认角色(0:否,1:是)"`
	CreateTime  int64  `json:"create_time" gorm:"column:create_time;autoCreateTime;comment:创建时间"`
	UpdateTime  int64  `json:"update_time" gorm:"column:update_time;autoUpdateTime;comment:更新时间"`
	IsDeleted   int    `json:"is_deleted" gorm:"column:is_deleted;type:tinyint(1);default:0;comment:是否删除(0:否,1:是)"`
	Apis        []*Api `json:"apis" gorm:"-"`
}

type ScheduleK8sNodesRequest

type ScheduleK8sNodesRequest struct {
	*K8sClusterNodesRequest
	ScheduleEnable bool `json:"schedule_enable"`
}

ScheduleK8sNodesRequest 定义调度节点的请求结构

type SecurityConfig

type SecurityConfig struct {
	SecurityGroupName        string     `json:"security_group_name"`        // 安全组名称
	SecurityGroupDescription string     `json:"security_group_description"` // 安全组描述
	SecurityGroupVpcID       StringList `json:"security_group_vpc_id"`      // 关联的 VPC ID
}

SecurityConfig 表示安全组的配置

type StringList

type StringList []string

StringList 封装了 []string 类型,用于与数据库中的逗号分隔字符串进行转换

func (*StringList) Scan

func (m *StringList) Scan(val interface{}) error

func (StringList) Value

func (m StringList) Value() (driver.Value, error)

type Taint

type Taint struct {
	Key    string `json:"key" binding:"required"`                                                // Taint 的键
	Value  string `json:"value,omitempty"`                                                       // Taint 的值
	Effect string `json:"effect" binding:"required,oneof=NoSchedule PreferNoSchedule NoExecute"` // Taint 的效果,例如 "NoSchedule", "PreferNoSchedule", "NoExecute"
}

Taint 定义 Taint 的模型

type TaintK8sNodesRequest

type TaintK8sNodesRequest struct {
	*K8sClusterNodesRequest
	ModType   string `json:"mod_type"`             // 操作类型,值为 "add" 或 "del"
	TaintYaml string `json:"taint_yaml,omitempty"` // 可选的 Taint YAML 字符串,用于验证或其他用途
}

TaintK8sNodesRequest 定义为节点添加或删除 Taint 的请求结构

type Task

type Task struct {
	TaskID       string          `json:"task_id"`
	Config       TerraformConfig `json:"config"`
	Status       string          `json:"status"`        // pending, processing, success, failed
	ErrorMessage string          `json:"error_message"` // 可选,用于记录错误信息
	CreatedAt    time.Time       `json:"created_at"`
	UpdatedAt    time.Time       `json:"updated_at"`
	Action       string          `json:"action"`      // create, update
	RetryCount   int             `json:"retry_count"` // 重试次数
}

type TerraformConfig

type TerraformConfig struct {
	ID          int             `json:"id"`          // 主键
	Region      string          `json:"region"`      // 阿里云的 Region
	Name        string          `json:"name"`        // 资源名称
	Instance    json.RawMessage `json:"instance"`    // ECS 实例配置,存储为 JSON
	VPC         json.RawMessage `json:"vpc"`         // VPC 配置,存储为 JSON
	Security    json.RawMessage `json:"security"`    // 安全组配置,存储为 JSON
	Env         string          `json:"env"`         // 环境标识,如 dev、stage、prod
	PayType     string          `json:"payType"`     // 付费类型,按量付费或包年包月
	Description string          `json:"description"` // 资源描述
	Tags        StringList      `json:"tags"`        // 资源标签,使用逗号分隔
}

TerraformConfig 集中管理 Terraform 所需的所有配置

type TokenRequest

type TokenRequest struct {
	RefreshToken string `json:"refreshToken"`
}

type TreeNode

type TreeNode struct {
	Model

	Title  string `json:"title" gorm:"type:varchar(50);comment:节点名称"`   // 节点名称
	Pid    int    `json:"pId" gorm:"index;comment:父节点 ID"`              // 父节点 ID
	Level  int    `json:"level" gorm:"comment:节点层级"`                    // 节点层级, 用于标识树的深度
	IsLeaf int    `json:"isLeaf" gorm:"comment:是否为叶子节点 0为非叶子节点 1为叶子节点"` // 是否为叶子节点
	Desc   string `json:"desc" gorm:"type:text;comment:节点描述"`           // 节点描述信息

	// 关联的负责人信息
	OpsAdmins []*User `json:"ops_admins" gorm:"many2many:tree_node_ops_admins;comment:运维负责人列表"` // 运维负责人列表
	RdAdmins  []*User `json:"rd_admins" gorm:"many2many:tree_node_rd_admins;comment:研发负责人列表"`   // 研发负责人列表
	RdMembers []*User `json:"rd_members" gorm:"many2many:tree_node_rd_members;comment:研发工程师列表"` // 研发工程师列表

	// 绑定的资源信息
	BindEcs []*ResourceEcs `json:"bind_ecs" gorm:"many2many:bind_ecs;comment:绑定的 ECS 资源列表"` // 绑定的 ECS 资源列表
	BindElb []*ResourceElb `json:"bind_elb" gorm:"many2many:bind_elb;comment:绑定的 ELB 资源列表"` // 绑定的 ELB 资源列表
	BindRds []*ResourceRds `json:"bind_rds" gorm:"many2many:bind_rds;comment:绑定的 RDS 资源列表"` // 绑定的 RDS 资源列表

	// 前端展示信息
	Key           string      `json:"key" gorm:"-"`             // 节点唯一标识,前端使用
	Label         string      `json:"label" gorm:"-"`           // 节点显示名称,前端使用
	Value         int         `json:"value" gorm:"-"`           // 节点值,前端使用
	OpsAdminUsers StringList  `json:"ops_admin_users" gorm:"-"` // 运维负责人姓名列表,前端使用
	RdAdminUsers  StringList  `json:"rd_admin_users" gorm:"-"`  // 研发负责人姓名列表,前端使用
	RdMemberUsers StringList  `json:"rd_member_users" gorm:"-"` // 研发工程师姓名列表,前端使用
	Children      []*TreeNode `json:"children" gorm:"-"`        // 子节点列表,前端使用

	// 节点统计信息
	EcsNum           int `json:"ecsNum" gorm:"-"`           // 绑定的 ECS 数量
	ElbNum           int `json:"elbNum" gorm:"-"`           // 绑定的 ELB 数量
	RdsNum           int `json:"rdsNum" gorm:"-"`           // 绑定的 RDS 数量
	NodeNum          int `json:"nodeNum" gorm:"-"`          // 子节点数量
	LeafNodeNum      int `json:"leafNodeNum" gorm:"-"`      // 叶子节点数量
	EcsCpuTotal      int `json:"ecsCpuTotal" gorm:"-"`      // 绑定的 ECS 总 CPU 核数
	ElbBandWithTotal int `json:"elbBandWithTotal" gorm:"-"` // 绑定的 ELB 带宽上限
	EcsMemoryTotal   int `json:"ecsMemoryTotal" gorm:"-"`   // 绑定的 ECS 总内存
	EcsDiskTotal     int `json:"ecsDiskTotal" gorm:"-"`     // 绑定的 ECS 总磁盘空间

	// 分类统计数据
	GroupByVendor    []*ChartItem   `json:"groupByVendor" gorm:"-"`    // 按厂商分类统计
	GroupByZoneId    []*ChartItem   `json:"groupByZoneId" gorm:"-"`    // 按可用区分类统计
	GroupByOSName    map[string]int `json:"-" gorm:"-"`                // 按操作系统分类映射
	GroupByVendorElb []*ChartItem   `json:"groupByVendorElb" gorm:"-"` // 按厂商分类统计 ELB
	GroupByVendorRds []*ChartItem   `json:"groupByVendorRds" gorm:"-"` // 按厂商分类统计 RDS

	// 操作权限
	CanAdminNode bool   `json:"canAdminNode" gorm:"-"` // 是否有权限操作此节点
	NodePath     string `json:"nodePath" gorm:"-"`     // 节点路径, 格式如: a.b.c.d
}

TreeNode 表示服务树的节点, 包含节点的层级关系和相关资源绑定

type UpdateApiRequest

type UpdateApiRequest struct {
	ID          int    `json:"id" binding:"required,gt=0"`    // API ID
	Name        string `json:"name" binding:"required"`       // API名称
	Path        string `json:"path" binding:"required"`       // API路径
	Method      int    `json:"method" binding:"required"`     // 请求方法
	Description string `json:"description"`                   // API描述
	Version     string `json:"version"`                       // API版本
	Category    int    `json:"category"`                      // API分类
	IsPublic    int    `json:"is_public" binding:"oneof=0 1"` // 是否公开
}

type UpdateMenuRequest

type UpdateMenuRequest struct {
	Id        int       `json:"id" binding:"required,gt=0"` // 菜单ID
	Name      string    `json:"name" binding:"required"`    // 菜单名称
	Path      string    `json:"path" binding:"required"`    // 菜单路径
	ParentId  int       `json:"parent_id" binding:"gte=0"`  // 父菜单ID
	Component string    `json:"component"`                  // 组件
	Icon      string    `json:"icon"`                       // 图标
	SortOrder int       `json:"sort_order" binding:"gte=0"` // 排序
	RouteName string    `json:"route_name"`                 // 路由名称
	Hidden    int       `json:"hidden" binding:"oneof=0 1"` // 是否隐藏
	Redirect  string    `json:"redirect"`                   // 重定向路径
	Meta      MetaField `json:"meta"`                       // 元数据
}

type UpdateNamespaceRequest

type UpdateNamespaceRequest struct {
	ClusterId   int      `json:"cluster_id" binding:"required"`
	Name        string   `json:"namespace" binding:"required"`
	Labels      []string `json:"labels,omitempty"`      // 命名空间标签
	Annotations []string `json:"annotations,omitempty"` // 命名空间注解
}

UpdateNamespaceRequest 更新命名空间请求结构体

type UpdateProfileRequest

type UpdateProfileRequest struct {
	UserId       int    `json:"user_id"`
	RealName     string `json:"real_name"`
	Desc         string `json:"desc"`
	Mobile       string `json:"mobile"`
	FeiShuUserId string `json:"fei_shu_user_id"`
	AccountType  int    `json:"account_type"`
	HomePath     string `json:"home_path"`
	Enable       int    `json:"enable"`
}

type UpdateRoleRequest

type UpdateRoleRequest struct {
	Id          int    `json:"id" binding:"required,gt=0"`     // 角色ID
	Name        string `json:"name" binding:"required"`        // 角色名称
	Description string `json:"description"`                    // 角色描述
	RoleType    int    `json:"role_type" binding:"required"`   // 角色类型
	IsDefault   int    `json:"is_default" binding:"oneof=0 1"` // 是否默认角色
	ApiIds      []int  `json:"api_ids"`                        // API ID列表
}

type UpdateUserMenuRequest

type UpdateUserMenuRequest struct {
	UserId  int   `json:"user_id" binding:"required,gt=0"`  // 用户ID
	MenuIds []int `json:"menu_ids" binding:"required,gt=0"` // 菜单ID
}

type UpdateUserRoleRequest

type UpdateUserRoleRequest struct {
	UserId  int   `json:"user_id" binding:"required,gt=0"` // 用户ID
	ApiIds  []int `json:"api_ids"`                         // API ID列表
	RoleIds []int `json:"role_ids"`                        // 角色ID列表
}

type User

type User struct {
	Model                // 软删除字段,自动管理
	Username     string  `json:"username" gorm:"type:varchar(100);not null;comment:用户登录名"`                            // 用户登录名,唯一且非空
	Password     string  `json:"password" gorm:"type:varchar(255);not null;comment:用户登录密码"`                           // 用户登录密码,非空
	RealName     string  `json:"realName" gorm:"type:varchar(100);comment:用户真实姓名"`                                    // 用户真实姓名
	Desc         string  `json:"desc" gorm:"type:text;comment:用户描述"`                                                  // 用户描述,支持较长文本
	Mobile       string  `json:"mobile" gorm:"type:varchar(20);comment:手机号"`                                          // 手机号,唯一索引
	FeiShuUserId string  `json:"feiShuUserId" gorm:"type:varchar(50);comment:飞书用户ID"`                                 // 飞书用户ID
	AccountType  int     `json:"accountType" gorm:"default:1;comment:账号类型 1普通用户 2服务账号" binding:"omitempty,oneof=1 2"` // 账号类型,默认为普通用户
	HomePath     string  `json:"homePath" gorm:"type:varchar(255);comment:登录后的默认首页"`                                  // 登录后的默认首页
	Enable       int     `json:"enable" gorm:"default:1;comment:用户状态 1正常 2冻结" binding:"omitempty,oneof=1 2"`          // 用户状态,默认为正常
	Roles        []*Role `json:"roles" gorm:"many2many:user_roles;comment:关联角色"`                                      // 多对多关联角色
	Menus        []*Menu `json:"menus" gorm:"many2many:user_menus;comment:关联菜单"`                                      // 多对多关联菜单
	Apis         []*Api  `json:"apis" gorm:"many2many:user_apis;comment:关联接口"`                                        // 多对多关联接口
}

type VPCConfig

type VPCConfig struct {
	VpcName     string `json:"vpc_name"`     // VPC 名称
	CidrBlock   string `json:"cidr_block"`   // VPC 的网段
	VSwitchCidr string `json:"vswitch_cidr"` // VSwitch 的网段
	ZoneID      string `json:"zone_id"`      // 可用区 ID
}

VPCConfig 表示 VPC 和相关资源的配置

type WriteOffRequest

type WriteOffRequest struct {
	Username string `json:"username"`
	Password string `json:"password"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL