Created
March 23, 2018 16:05
-
-
Save bartosh/0146d509faf2475a9136bf028359bdab to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Allocate is the call that you can use to allocate a set of devices | |
// from the registered device plugins. | |
func (m *ManagerImpl) Allocate(node *schedulercache.NodeInfo, attrs *lifecycle.PodAdmitAttributes) error { | |
pod := attrs.Pod | |
devicesToReuse := make(map[string]sets.String) | |
// TODO: Reuse devices between init containers and regular containers. | |
for _, container := range pod.Spec.InitContainers { | |
if err := m.allocateContainerResources(pod, &container, devicesToReuse); err != nil { | |
return err | |
} | |
m.podDevices.addContainerAllocatedResources(string(pod.UID), container.Name, devicesToReuse) | |
} | |
for _, container := range pod.Spec.Containers { | |
if err := m.allocateContainerResources(pod, &container, devicesToReuse); err != nil { | |
return err | |
} | |
m.podDevices.removeContainerAllocatedResources(string(pod.UID), container.Name, devicesToReuse) | |
} | |
m.mutex.Lock() | |
defer m.mutex.Unlock() | |
// quick return if no pluginResources requested | |
if _, podRequireDevicePluginResource := m.podDevices[string(pod.UID)]; !podRequireDevicePluginResource { | |
return nil | |
} | |
m.sanitizeNodeAllocatable(node) | |
return nil | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment