
the caching layer on endpoint is redundant. Here are the 3 related objects in picture: devicemanager <-> endpoint <-> plugin Plugin is the source of truth for devices and device health status. devicemanager maintain healthyDevices, unhealthyDevices, allocatedDevices based on updates from plugin. So there is no point for endpoint caching devices, this patch is removing this caching layer on endpoint, Also removing the Manager.Devices() since i didn't find any caller of this other than test, i am adding a notification channel to facilitate testing, If we need to get all devices from manager in future, it just need to return healthyDevices + unhealthyDevices, we don't have to call endpoint after all. This patch makes code more readable, data model been simplified.
66 lines
2.0 KiB
Go
66 lines
2.0 KiB
Go
/*
|
|
Copyright 2017 The Kubernetes Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package devicemanager
|
|
|
|
import (
|
|
"k8s.io/api/core/v1"
|
|
"k8s.io/kubernetes/pkg/kubelet/config"
|
|
"k8s.io/kubernetes/pkg/kubelet/lifecycle"
|
|
"k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher"
|
|
schedulercache "k8s.io/kubernetes/pkg/scheduler/cache"
|
|
)
|
|
|
|
// ManagerStub provides a simple stub implementation for the Device Manager.
|
|
type ManagerStub struct{}
|
|
|
|
// NewManagerStub creates a ManagerStub.
|
|
func NewManagerStub() (*ManagerStub, error) {
|
|
return &ManagerStub{}, nil
|
|
}
|
|
|
|
// Start simply returns nil.
|
|
func (h *ManagerStub) Start(activePods ActivePodsFunc, sourcesReady config.SourcesReady) error {
|
|
return nil
|
|
}
|
|
|
|
// Stop simply returns nil.
|
|
func (h *ManagerStub) Stop() error {
|
|
return nil
|
|
}
|
|
|
|
// Allocate simply returns nil.
|
|
func (h *ManagerStub) Allocate(node *schedulercache.NodeInfo, attrs *lifecycle.PodAdmitAttributes) error {
|
|
return nil
|
|
}
|
|
|
|
// GetDeviceRunContainerOptions simply returns nil.
|
|
func (h *ManagerStub) GetDeviceRunContainerOptions(pod *v1.Pod, container *v1.Container) (*DeviceRunContainerOptions, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
// GetCapacity simply returns nil capacity and empty removed resource list.
|
|
func (h *ManagerStub) GetCapacity() (v1.ResourceList, v1.ResourceList, []string) {
|
|
return nil, nil, []string{}
|
|
}
|
|
|
|
// GetWatcherCallback returns plugin watcher callback
|
|
func (h *ManagerStub) GetWatcherCallback() pluginwatcher.RegisterCallbackFn {
|
|
return func(name string, endpoint string, versions []string, sockPath string) (chan bool, error) {
|
|
return nil, nil
|
|
}
|
|
}
|