Merge pull request 'scheduler refactor updated' (#6) from tzwang/pcm-coordinator:master into master
Former-commit-id: 18455bc5a0fefac5f2256aabc4e48dac546f45f5
This commit is contained in:
commit
3b17ce4606
|
@ -1,6 +1,9 @@
|
|||
package database
|
||||
|
||||
import "gorm.io/gorm"
|
||||
import (
|
||||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/pkg/scheduler/entity"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type CloudStorage struct {
|
||||
dbEngin *gorm.DB
|
||||
|
@ -10,8 +13,8 @@ func NewCloudStorage(dbEngin *gorm.DB) *CloudStorage {
|
|||
return &CloudStorage{dbEngin: dbEngin}
|
||||
}
|
||||
|
||||
func (c *CloudStorage) GetProviderParams() ([]providerParams, error) {
|
||||
var proParams []providerParams
|
||||
func (c *CloudStorage) GetProviderParams() ([]entity.ProviderParams, error) {
|
||||
var proParams []entity.ProviderParams
|
||||
sqlstr := "SELECT SUM(a.disk_avail) as disk_avail,SUM(a.mem_avail) as mem_avail,SUM(a.cpu_total * a.cpu_usable) as cpu_avail,participant_id from (SELECT * from sc_node_avail_info where created_time in (SELECT MAX(created_time) as time from sc_node_avail_info where deleted_flag = 0 GROUP BY participant_id,node_name)) a GROUP BY a.participant_id"
|
||||
c.dbEngin.Raw(sqlstr).Scan(&proParams)
|
||||
if len(proParams) == 0 {
|
||||
|
@ -20,9 +23,12 @@ func (c *CloudStorage) GetProviderParams() ([]providerParams, error) {
|
|||
return proParams, nil
|
||||
}
|
||||
|
||||
type providerParams struct {
|
||||
Disk_avail float64
|
||||
Mem_avail float64
|
||||
Cpu_avail float64
|
||||
Participant_id int64
|
||||
func (c *CloudStorage) FindAvailableParticipants() ([]entity.Participant, error) {
|
||||
var parts []entity.Participant
|
||||
sqlstr := "select id as participant_id, name as name from sc_participant_phy_info"
|
||||
c.dbEngin.Raw(sqlstr).Scan(&parts)
|
||||
if len(parts) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
return parts, nil
|
||||
}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
package database
|
||||
|
||||
import "gitlink.org.cn/jcce-pcm/pcm-coordinator/pkg/scheduler/entity"
|
||||
|
||||
type Storage interface {
|
||||
GetProviderParams() ([]providerParams, error)
|
||||
FindAvailableCluster()
|
||||
GetProviderParams() ([]entity.ProviderParams, error)
|
||||
FindAvailableParticipants() ([]entity.Participant, error)
|
||||
}
|
||||
|
||||
type NSIDSpecified interface {
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
package entity
|
||||
|
||||
type ProviderParams struct {
|
||||
Disk_avail float64
|
||||
Mem_avail float64
|
||||
Cpu_avail float64
|
||||
Participant_id int64
|
||||
}
|
||||
|
||||
type Participant struct {
|
||||
Name string
|
||||
Participant_id int64
|
||||
}
|
|
@ -1,12 +1,34 @@
|
|||
package strategies
|
||||
|
||||
import (
|
||||
"github.com/pkg/errors"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/pkg/scheduler/entity"
|
||||
)
|
||||
|
||||
type ReplicationStrategy struct {
|
||||
replicas int32
|
||||
participants []entity.Participant
|
||||
}
|
||||
|
||||
func (ps *ReplicationStrategy) findAvailableCLuster() error {
|
||||
return nil
|
||||
func NewReplicationStrategy(participants []entity.Participant, replicas int32) *ReplicationStrategy {
|
||||
return &ReplicationStrategy{replicas: replicas,
|
||||
participants: participants,
|
||||
}
|
||||
}
|
||||
|
||||
func (ps *ReplicationStrategy) Schedule() ([]*AssignedCluster, error) {
|
||||
return nil, nil
|
||||
if ps.replicas < 1 {
|
||||
return nil, errors.New("replicas must be greater than 0")
|
||||
}
|
||||
|
||||
if ps.participants == nil {
|
||||
return nil, errors.New("participantId must be set")
|
||||
}
|
||||
|
||||
var results []*AssignedCluster
|
||||
for _, p := range ps.participants {
|
||||
cluster := &AssignedCluster{ParticipantId: p.Participant_id, Name: p.Name, Replicas: ps.replicas}
|
||||
results = append(results, cluster)
|
||||
}
|
||||
return results, nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue