mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 10:46:58 +08:00
scheduler: add domain filter
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
package predicates
|
||||
|
||||
import (
|
||||
"yunion.io/x/onecloud/pkg/scheduler/core"
|
||||
)
|
||||
|
||||
type DomainPredicate struct {
|
||||
BasePredicate
|
||||
}
|
||||
|
||||
func (p *DomainPredicate) Name() string {
|
||||
return "host_domain"
|
||||
}
|
||||
|
||||
func (p *DomainPredicate) Clone() core.FitPredicate {
|
||||
return &DomainPredicate{}
|
||||
}
|
||||
|
||||
func (p *DomainPredicate) Execute(u *core.Unit, c core.Candidater) (bool, []core.PredicateFailureReason, error) {
|
||||
h := NewPredicateHelper(p, u, c)
|
||||
getter := c.Getter()
|
||||
cloudprovider := getter.Cloudprovider()
|
||||
if cloudprovider == nil {
|
||||
return h.GetResult()
|
||||
}
|
||||
domainId := getter.DomainId()
|
||||
if domainId != u.SchedInfo.Domain {
|
||||
h.Exclude2("domain_belong", domainId, u.SchedInfo.Domain)
|
||||
}
|
||||
return h.GetResult()
|
||||
}
|
||||
@@ -75,10 +75,6 @@ func (p *StatusPredicate) Execute(u *core.Unit, c core.Candidater) (bool, []core
|
||||
if cloudprovider.HealthStatus != api.CLOUD_PROVIDER_HEALTH_NORMAL {
|
||||
h.Exclude2("cloud_provider_health_status", cloudprovider.HealthStatus, api.CLOUD_PROVIDER_HEALTH_NORMAL)
|
||||
}
|
||||
domainId := getter.DomainId()
|
||||
if domainId != u.SchedInfo.Domain {
|
||||
h.Exclude2("domain_belong", domainId, u.SchedInfo.Domain)
|
||||
}
|
||||
}
|
||||
|
||||
return h.GetResult()
|
||||
|
||||
@@ -33,6 +33,7 @@ func defaultPredicates() sets.String {
|
||||
factory.RegisterFitPredicate("b-GuestHypervisorFilter", &predicateguest.HypervisorPredicate{}),
|
||||
factory.RegisterFitPredicate("c-GuestAggregateFilter", &predicates.AggregatePredicate{}),
|
||||
factory.RegisterFitPredicate("d-GuestMigrateFilter", &predicateguest.MigratePredicate{}),
|
||||
factory.RegisterFitPredicate("e-GuestDomainFilter", &predicates.DomainPredicate{}),
|
||||
//factory.RegisterFitPredicate("e-GuestNestFilter", &predicateguest.NestPredicate{}),
|
||||
//factory.RegisterFitPredicate("f-GuestGroupFilter", &predicateguest.GroupPredicate{}),
|
||||
factory.RegisterFitPredicate("g-GuestCPUFilter", &predicateguest.CPUPredicate{}),
|
||||
|
||||
Reference in New Issue
Block a user