feat: add scheduler configuration support
Signed-off-by: chlins <chlins.zhang@gmail.com>
This commit is contained in:
parent
2a30115765
commit
fdab4fa0ac
|
|
@ -26,6 +26,7 @@ const (
|
||||||
|
|
||||||
type Scheduler struct {
|
type Scheduler struct {
|
||||||
BaseModel
|
BaseModel
|
||||||
|
Config JSONMap `gorm:"column:config;comment:configuration" json:"config"`
|
||||||
Hostname string `gorm:"column:host_name;type:varchar(256);index:uk_scheduler,unique;not null;comment:hostname" json:"host_name"`
|
Hostname string `gorm:"column:host_name;type:varchar(256);index:uk_scheduler,unique;not null;comment:hostname" json:"host_name"`
|
||||||
IDC string `gorm:"column:idc;type:varchar(1024);comment:internet data center" json:"idc"`
|
IDC string `gorm:"column:idc;type:varchar(1024);comment:internet data center" json:"idc"`
|
||||||
Location string `gorm:"column:location;type:varchar(1024);comment:location" json:"location"`
|
Location string `gorm:"column:location;type:varchar(1024);comment:location" json:"location"`
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import (
|
||||||
|
|
||||||
"d7y.io/dragonfly/v2/manager/models"
|
"d7y.io/dragonfly/v2/manager/models"
|
||||||
"d7y.io/dragonfly/v2/manager/types"
|
"d7y.io/dragonfly/v2/manager/types"
|
||||||
|
"d7y.io/dragonfly/v2/pkg/structure"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *service) CreateScheduler(ctx context.Context, json types.CreateSchedulerRequest) (*models.Scheduler, error) {
|
func (s *service) CreateScheduler(ctx context.Context, json types.CreateSchedulerRequest) (*models.Scheduler, error) {
|
||||||
|
|
@ -39,6 +40,15 @@ func (s *service) CreateScheduler(ctx context.Context, json types.CreateSchedule
|
||||||
SchedulerClusterID: json.SchedulerClusterID,
|
SchedulerClusterID: json.SchedulerClusterID,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if json.Config != nil {
|
||||||
|
config, err := structure.StructToMap(json.Config)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
scheduler.Config = config
|
||||||
|
}
|
||||||
|
|
||||||
if err := s.db.WithContext(ctx).Create(&scheduler).Error; err != nil {
|
if err := s.db.WithContext(ctx).Create(&scheduler).Error; err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -60,8 +70,20 @@ func (s *service) DestroyScheduler(ctx context.Context, id uint) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *service) UpdateScheduler(ctx context.Context, id uint, json types.UpdateSchedulerRequest) (*models.Scheduler, error) {
|
func (s *service) UpdateScheduler(ctx context.Context, id uint, json types.UpdateSchedulerRequest) (*models.Scheduler, error) {
|
||||||
|
var (
|
||||||
|
config map[string]any
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
if json.Config != nil {
|
||||||
|
config, err = structure.StructToMap(json.Config)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
scheduler := models.Scheduler{}
|
scheduler := models.Scheduler{}
|
||||||
if err := s.db.WithContext(ctx).First(&scheduler, id).Updates(models.Scheduler{
|
if err := s.db.WithContext(ctx).First(&scheduler, id).Updates(models.Scheduler{
|
||||||
|
Config: config,
|
||||||
IDC: json.IDC,
|
IDC: json.IDC,
|
||||||
Location: json.Location,
|
Location: json.Location,
|
||||||
IP: json.IP,
|
IP: json.IP,
|
||||||
|
|
|
||||||
|
|
@ -16,11 +16,14 @@
|
||||||
|
|
||||||
package types
|
package types
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
type SchedulerParams struct {
|
type SchedulerParams struct {
|
||||||
ID uint `uri:"id" binding:"required"`
|
ID uint `uri:"id" binding:"required"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CreateSchedulerRequest struct {
|
type CreateSchedulerRequest struct {
|
||||||
|
Config *SchedulerConfig `json:"config" binding:"omitempty"`
|
||||||
Hostname string `json:"host_name" binding:"required"`
|
Hostname string `json:"host_name" binding:"required"`
|
||||||
IDC string `json:"idc" binding:"omitempty"`
|
IDC string `json:"idc" binding:"omitempty"`
|
||||||
Location string `json:"location" binding:"omitempty"`
|
Location string `json:"location" binding:"omitempty"`
|
||||||
|
|
@ -31,6 +34,7 @@ type CreateSchedulerRequest struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type UpdateSchedulerRequest struct {
|
type UpdateSchedulerRequest struct {
|
||||||
|
Config *SchedulerConfig `json:"config" binding:"omitempty"`
|
||||||
IDC string `json:"idc" binding:"omitempty"`
|
IDC string `json:"idc" binding:"omitempty"`
|
||||||
Location string `json:"location" binding:"omitempty"`
|
Location string `json:"location" binding:"omitempty"`
|
||||||
IP string `json:"ip" binding:"omitempty"`
|
IP string `json:"ip" binding:"omitempty"`
|
||||||
|
|
@ -50,3 +54,7 @@ type GetSchedulersQuery struct {
|
||||||
State string `form:"state" binding:"omitempty,oneof=active inactive"`
|
State string `form:"state" binding:"omitempty,oneof=active inactive"`
|
||||||
SchedulerClusterID uint `form:"scheduler_cluster_id" binding:"omitempty"`
|
SchedulerClusterID uint `form:"scheduler_cluster_id" binding:"omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SchedulerConfig struct {
|
||||||
|
ManagerKeepAliveInterval time.Duration `json:"manager_keep_alive_interval" binding:"required"`
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue