mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-06-14 18:53:35 +00:00
rebase: update replaced k8s.io modules to v0.33.0
Signed-off-by: Niels de Vos <ndevos@ibm.com>
This commit is contained in:
committed by
mergify[bot]
parent
dd77e72800
commit
107407b44b
768
e2e/vendor/k8s.io/dynamic-resource-allocation/structured/allocator.go
generated
vendored
768
e2e/vendor/k8s.io/dynamic-resource-allocation/structured/allocator.go
generated
vendored
File diff suppressed because it is too large
Load Diff
73
e2e/vendor/k8s.io/dynamic-resource-allocation/structured/pools.go
generated
vendored
73
e2e/vendor/k8s.io/dynamic-resource-allocation/structured/pools.go
generated
vendored
@ -27,40 +27,71 @@ import (
|
||||
draapi "k8s.io/dynamic-resource-allocation/api"
|
||||
)
|
||||
|
||||
func nodeMatches(node *v1.Node, nodeNameToMatch string, allNodesMatch bool, nodeSelector *v1.NodeSelector) (bool, error) {
|
||||
switch {
|
||||
case nodeNameToMatch != "":
|
||||
return node != nil && node.Name == nodeNameToMatch, nil
|
||||
case allNodesMatch:
|
||||
return true, nil
|
||||
case nodeSelector != nil:
|
||||
selector, err := nodeaffinity.NewNodeSelector(nodeSelector)
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("failed to parse node selector %s: %w", nodeSelector.String(), err)
|
||||
}
|
||||
return selector.Match(node), nil
|
||||
}
|
||||
|
||||
return false, nil
|
||||
}
|
||||
|
||||
// GatherPools collects information about all resource pools which provide
|
||||
// devices that are accessible from the given node.
|
||||
//
|
||||
// Out-dated slices are silently ignored. Pools may be incomplete (not all
|
||||
// required slices available) or invalid (for example, device names not unique).
|
||||
// Both is recorded in the result.
|
||||
func GatherPools(ctx context.Context, slices []*resourceapi.ResourceSlice, node *v1.Node) ([]*Pool, error) {
|
||||
func GatherPools(ctx context.Context, slices []*resourceapi.ResourceSlice, node *v1.Node, features Features) ([]*Pool, error) {
|
||||
pools := make(map[PoolID]*Pool)
|
||||
nodeName := ""
|
||||
if node != nil {
|
||||
nodeName = node.Name
|
||||
}
|
||||
|
||||
for _, slice := range slices {
|
||||
if !features.PartitionableDevices && (len(slice.Spec.SharedCounters) > 0 || slice.Spec.PerDeviceNodeSelection != nil) {
|
||||
continue
|
||||
}
|
||||
|
||||
switch {
|
||||
case slice.Spec.NodeName != "":
|
||||
if slice.Spec.NodeName == nodeName {
|
||||
case slice.Spec.NodeName != "" || slice.Spec.AllNodes || slice.Spec.NodeSelector != nil:
|
||||
match, err := nodeMatches(node, slice.Spec.NodeName, slice.Spec.AllNodes, slice.Spec.NodeSelector)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to perform node selection for slice %s: %w", slice.Name, err)
|
||||
}
|
||||
if match {
|
||||
if err := addSlice(pools, slice); err != nil {
|
||||
return nil, fmt.Errorf("add node slice %s: %w", slice.Name, err)
|
||||
return nil, fmt.Errorf("failed to add node slice %s: %w", slice.Name, err)
|
||||
}
|
||||
}
|
||||
case slice.Spec.AllNodes:
|
||||
if err := addSlice(pools, slice); err != nil {
|
||||
return nil, fmt.Errorf("add cluster slice %s: %w", slice.Name, err)
|
||||
}
|
||||
case slice.Spec.NodeSelector != nil:
|
||||
// TODO: move conversion into api.
|
||||
selector, err := nodeaffinity.NewNodeSelector(slice.Spec.NodeSelector)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("node selector in resource slice %s: %w", slice.Name, err)
|
||||
}
|
||||
if selector.Match(node) {
|
||||
if err := addSlice(pools, slice); err != nil {
|
||||
return nil, fmt.Errorf("add matching slice %s: %w", slice.Name, err)
|
||||
case slice.Spec.PerDeviceNodeSelection != nil && *slice.Spec.PerDeviceNodeSelection:
|
||||
for _, device := range slice.Spec.Devices {
|
||||
if device.Basic == nil {
|
||||
continue
|
||||
}
|
||||
var nodeName string
|
||||
var allNodes bool
|
||||
if device.Basic.NodeName != nil {
|
||||
nodeName = *device.Basic.NodeName
|
||||
}
|
||||
if device.Basic.AllNodes != nil {
|
||||
allNodes = *device.Basic.AllNodes
|
||||
}
|
||||
match, err := nodeMatches(node, nodeName, allNodes, device.Basic.NodeSelector)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to perform node selection for device %s in slice %s: %w",
|
||||
device.String(), slice.Name, err)
|
||||
}
|
||||
if match {
|
||||
if err := addSlice(pools, slice); err != nil {
|
||||
return nil, fmt.Errorf("failed to add node slice %s: %w", slice.Name, err)
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
default:
|
||||
|
Reference in New Issue
Block a user