View Source
const (
	// SuccessSynced is used as part of the Event 'reason' when a SharePod is synced
	SuccessSynced = "Synced"
	// ErrResourceExists is used as part of the Event 'reason' when a SharePod fails
	// to sync due to a Deployment of the same name already existing.
	ErrResourceExists = "ErrResourceExists"

	ErrValueError = "ErrValueError"

	// MessageResourceExists is the message used for Events when a resource
	// fails to sync due to a Deployment already existing
	MessageResourceExists = "Resource %q already exists and is not managed by SharePod"
	// MessageResourceSynced is the message used for an Event fired when a SharePod
	// is synced successfully
	MessageResourceSynced = "SharePod synced successfully"

	KubeShareLibraryPath = "/kubeshare/library"
	SchedulerIpPath      = KubeShareLibraryPath + "/schedulerIP.txt"
	PodManagerPortStart  = 50050


View Source
var (
	ResourceQuantity1 = resource.MustParse("1")


func StartConfigManager

func StartConfigManager(stopCh <-chan struct{}, kc kubernetes.Interface) error

func UpdateNodeGPUInfo

func UpdateNodeGPUInfo(nodeName string, uuid2mem *map[string]string)


type ClientStatus

type ClientStatus string
const (
	ClientReady    ClientStatus = "Ready"
	ClientNotReady ClientStatus = "NotReady"

type Controller

type Controller struct {
	// contains filtered or unexported fields

func NewController

func NewController(
	kubeclientset kubernetes.Interface,
	kubeshareclientset clientset.Interface,
	podInformer coreinformers.PodInformer,
	kubeshareInformer informers.SharePodInformer) *Controller

    NewController returns a new sample controller

    func (*Controller) Run

    func (c *Controller) Run(threadiness int, stopCh <-chan struct{}) error

      Run will set up the event handlers for types we are interested in, as well as syncing informer caches and starting workers. It will block until stopCh is closed, at which point it will shutdown the workqueue and wait for workers to finish processing their current work items.

      type GPUInfo

      type GPUInfo struct {
      	UUID    string
      	Usage   float64
      	Mem     int64
      	PodList *list.List

      type NodeInfo

      type NodeInfo struct {
      	// GPUID -> GPU
      	GPUID2GPU map[string]*GPUInfo
      	// UUID -> Port (string)
      	UUID2Port map[string]string
      	// port in use
      	PodManagerPortBitmap *bitmap.RRBitmap
      	PodIP                string

      type NodeStatus

      type NodeStatus struct {
      	Conn          net.Conn
      	LastHeartbeat time.Time
      	ClientStatus  ClientStatus

      type PodRequest

      type PodRequest struct {
      	Key            string
      	Request        float64
      	Limit          float64
      	Memory         int64
      	PodManagerPort int

      func FindInQueue

      func FindInQueue(key string, pl *list.List) (*PodRequest, bool)