From 71bbc6d5386112ae5418f57f4dea2feaee9dc9b8 Mon Sep 17 00:00:00 2001 From: lmdaly Date: Mon, 14 Jan 2019 03:28:22 +0000 Subject: [PATCH] Add Topology Manager Interfaces *Topology Manager *Policy --- pkg/kubelet/cm/topologymanager/policy.go | 25 +++++++++++ .../cm/topologymanager/topology_manager.go | 45 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 pkg/kubelet/cm/topologymanager/policy.go create mode 100644 pkg/kubelet/cm/topologymanager/topology_manager.go diff --git a/pkg/kubelet/cm/topologymanager/policy.go b/pkg/kubelet/cm/topologymanager/policy.go new file mode 100644 index 00000000000..f5f4974418a --- /dev/null +++ b/pkg/kubelet/cm/topologymanager/policy.go @@ -0,0 +1,25 @@ +/*Copyright 2019 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 topologymanager + +import ( + "k8s.io/kubernetes/pkg/kubelet/lifecycle" +) + +//Policy interface for Topology Manager Pod Admit Result +type Policy interface { + //Returns Policy Name + Name() string + //Returns Pod Admit Handler Response based on hints and policy type + CanAdmitPodResult(result TopologyHints) lifecycle.PodAdmitResult +} diff --git a/pkg/kubelet/cm/topologymanager/topology_manager.go b/pkg/kubelet/cm/topologymanager/topology_manager.go new file mode 100644 index 00000000000..84f75ff1bd8 --- /dev/null +++ b/pkg/kubelet/cm/topologymanager/topology_manager.go @@ -0,0 +1,45 @@ +/*Copyright 2019 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 topologymanager + +import ( + "github.com/golang/glog" + "k8s.io/api/core/v1" + "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/socketmask" + "k8s.io/kubernetes/pkg/kubelet/lifecycle" +) + +//Manager interface provides methods for Kubelet to manage pod topology hints +type Manager interface { + //Manager implements pod admit handler interface + lifecycle.PodAdmitHandler + //Adds a hint provider to manager to indicate the hint provider + //wants to be consoluted when making topology hints + AddHintProvider(HintProvider) + //Adds pod to Manager for tracking + AddPod(pod *v1.Pod, containerID string) error + //Removes pod from Manager tracking + RemovePod(containerID string) error + //Interface for storing pod topology hints + Store +} + +//Interface to be implemented by Hint Providers +type HintProvider interface { + GetTopologyHints(pod v1.Pod, container v1.Container) TopologyHints +} + +//Interface to allow Hint Providers to retrieve pod affinity +type Store interface { + GetAffinity(podUID string, containerName string) TopologyHints +}