From a323db0623ebda041324c30b57140f84ff777eab Mon Sep 17 00:00:00 2001 From: Zexi Date: Sat, 15 Jun 2019 16:46:25 +0800 Subject: [PATCH] scheduler: fix network filter specify is_public check --- .../predicates/network_schedtag_predicate.go | 44 ++++++++++--------- pkg/scheduler/algorithmprovider/baremetal.go | 2 +- pkg/scheduler/algorithmprovider/defaults.go | 2 +- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/pkg/scheduler/algorithm/predicates/network_schedtag_predicate.go b/pkg/scheduler/algorithm/predicates/network_schedtag_predicate.go index 4d35b2f4b8..1e42f3ef25 100644 --- a/pkg/scheduler/algorithm/predicates/network_schedtag_predicate.go +++ b/pkg/scheduler/algorithm/predicates/network_schedtag_predicate.go @@ -88,30 +88,34 @@ func (p *NetworkSchedtagPredicate) IsResourceFitInput(u *core.Unit, _ core.Candi return fmt.Errorf("Wire %s != %s", net.Wire, network.WireId) } } - netTypes := p.GetNetworkTypes(net.NetType) - if net.Network == "" && !utils.IsInStringArray(network.ServerType, netTypes) { - return fmt.Errorf("Network %s type %s not in %v", network.Name, network.ServerType, netTypes) - } - schedData := u.SchedData() - if net.Private { - if network.IsPublic { - return fmt.Errorf("Network %s is public", network.Name) + + if net.Network == "" { + netTypes := p.GetNetworkTypes(net.NetType) + if !utils.IsInStringArray(network.ServerType, netTypes) { + return fmt.Errorf("Network %s type %s not in %v", network.Name, network.ServerType, netTypes) } - if network.ProjectId != schedData.Project { - return fmt.Errorf("Network project %s not owner by %s", network.ProjectId, schedData.Project) - } - } else { - if !network.IsPublic { - return fmt.Errorf("Network %s is private", network.Name) - } - if rbacutils.TRbacScope(network.PublicScope) == rbacutils.ScopeDomain { - netDomain := network.DomainId - reqDomain := net.Domain - if netDomain != reqDomain { - return fmt.Errorf("Network domain scope %s not owner by %s", netDomain, reqDomain) + schedData := u.SchedData() + if net.Private { + if network.IsPublic { + return fmt.Errorf("Network %s is public", network.Name) + } + if network.ProjectId != schedData.Project { + return fmt.Errorf("Network project %s not owner by %s", network.ProjectId, schedData.Project) + } + } else { + if !network.IsPublic { + return fmt.Errorf("Network %s is private", network.Name) + } + if rbacutils.TRbacScope(network.PublicScope) == rbacutils.ScopeDomain { + netDomain := network.DomainId + reqDomain := net.Domain + if netDomain != reqDomain { + return fmt.Errorf("Network domain scope %s not owner by %s", netDomain, reqDomain) + } } } } + if len(net.Address) > 0 { ipAddr, err := netutils.NewIPV4Addr(net.Address) if err != nil { diff --git a/pkg/scheduler/algorithmprovider/baremetal.go b/pkg/scheduler/algorithmprovider/baremetal.go index c995011214..2f672b87ff 100644 --- a/pkg/scheduler/algorithmprovider/baremetal.go +++ b/pkg/scheduler/algorithmprovider/baremetal.go @@ -34,7 +34,7 @@ func baremetalPredicates() sets.String { factory.RegisterFitPredicate("c-BaremetalCPUFilter", &predicatebm.CPUPredicate{}), factory.RegisterFitPredicate("d-BaremetalMemoryFilter", &predicatebm.MemoryPredicate{}), factory.RegisterFitPredicate("e-BaremetalStorageFilter", &predicatebm.StoragePredicate{}), - factory.RegisterFitPredicate("f-BaremetalNetFilter", &predicatebm.NetworkPredicate{}), + //factory.RegisterFitPredicate("f-BaremetalNetFilter", &predicatebm.NetworkPredicate{}), factory.RegisterFitPredicate("g-BaremetalResourceTypeFilter", &predicates.ResourceTypePredicate{}), factory.RegisterFitPredicate("h-DiskschedtagFilter", &predicates.DiskSchedtagPredicate{}), factory.RegisterFitPredicate("i-NetschedtagFilter", &predicates.NetworkSchedtagPredicate{}), diff --git a/pkg/scheduler/algorithmprovider/defaults.go b/pkg/scheduler/algorithmprovider/defaults.go index f51800cfa0..e7c4949d41 100644 --- a/pkg/scheduler/algorithmprovider/defaults.go +++ b/pkg/scheduler/algorithmprovider/defaults.go @@ -39,7 +39,7 @@ func defaultPredicates() sets.String { factory.RegisterFitPredicate("g-GuestCPUFilter", &predicateguest.CPUPredicate{}), factory.RegisterFitPredicate("h-GuestMemoryFilter", &predicateguest.MemoryPredicate{}), factory.RegisterFitPredicate("i-GuestStorageFilter", &predicateguest.StoragePredicate{}), - factory.RegisterFitPredicate("j-GuestNetworkFilter", &predicateguest.NetworkPredicate{}), + //factory.RegisterFitPredicate("j-GuestNetworkFilter", &predicateguest.NetworkPredicate{}), factory.RegisterFitPredicate("k-GuestIsolatedDeviceFilter", &predicateguest.IsolatedDevicePredicate{}), factory.RegisterFitPredicate("l-GuestResourceTypeFilter", &predicates.ResourceTypePredicate{}), factory.RegisterFitPredicate("m-GuestDiskschedtagFilter", &predicates.DiskSchedtagPredicate{}),