Documentation ¶
Index ¶
- func CreateResource(cpu, mem float64) (r scalar.Resources)
- func GeneratePodSpecWithRes(numPods int, cpu, mem float64) map[string]*pbpod.PodSpec
- func GeneratePodToResMap(numPods int, cpu, mem float64) map[string]scalar.Resources
- type FakeHostSummary
- func (a FakeHostSummary) CasStatus(old, new HostStatus) error
- func (a FakeHostSummary) CompleteLaunchPod(pod *models.LaunchablePod)
- func (a FakeHostSummary) CompleteLease(leaseID string, podToSpecMap map[string]*pbpod.PodSpec) error
- func (a FakeHostSummary) DeleteExpiredHolds(deadline time.Time) (bool, models.HostResources, []*peloton.PodID)
- func (a FakeHostSummary) GetAllocated() models.HostResources
- func (a FakeHostSummary) GetAvailable() models.HostResources
- func (a FakeHostSummary) GetCapacity() models.HostResources
- func (a FakeHostSummary) GetHeldPods() []*peloton.PodID
- func (a FakeHostSummary) GetHostLease() *hostmgr.HostLease
- func (a FakeHostSummary) GetHostStatus() HostStatus
- func (a FakeHostSummary) GetHostname() string
- func (f *FakeHostSummary) GetPodInfo(podID *peloton.PodID) (pbpod.PodState, *pbpod.PodSpec, bool)
- func (a FakeHostSummary) GetVersion() string
- func (a FakeHostSummary) HandlePodEvent(event *p2kscalar.PodEvent)
- func (a FakeHostSummary) HoldForPod(id *peloton.PodID) error
- func (a FakeHostSummary) RecoverPodInfo(id *peloton.PodID, state pbpod.PodState, spec *pbpod.PodSpec)
- func (a FakeHostSummary) ReleaseHoldForPod(id *peloton.PodID)
- func (f *FakeHostSummary) SetAllocated(allocated scalar.Resources)
- func (a FakeHostSummary) SetAvailable(r models.HostResources)
- func (a FakeHostSummary) SetCapacity(r models.HostResources)
- func (a FakeHostSummary) SetVersion(v string)
- func (a FakeHostSummary) TerminateLease(leaseID string) error
- func (a FakeHostSummary) TryMatch(filter *hostmgr.HostFilter) Match
- type HostStatus
- type HostSummary
- type Match
- type Matcher
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CreateResource ¶
func GeneratePodSpecWithRes ¶
Types ¶
type FakeHostSummary ¶
type FakeHostSummary struct {
// contains filtered or unexported fields
}
func GenerateFakeHostSummaries ¶
func GenerateFakeHostSummaries(numHosts int) []*FakeHostSummary
GenerateFakeHostSummaries returns a list of FakeHostSummary.
func NewFakeHostSummary ¶
func NewFakeHostSummary( hostname string, version string, capacity scalar.Resources) *FakeHostSummary
NewFakeHostSummary is used for testing. It offers methods for easier manipulation of internal attribute.
func (FakeHostSummary) CasStatus ¶
func (a FakeHostSummary) CasStatus(old, new HostStatus) error
CasStatus sets the status to new value if current value is old, otherwise returns error.
func (FakeHostSummary) CompleteLaunchPod ¶
func (a FakeHostSummary) CompleteLaunchPod(pod *models.LaunchablePod)
func (FakeHostSummary) CompleteLease ¶
func (a FakeHostSummary) CompleteLease( leaseID string, podToSpecMap map[string]*pbpod.PodSpec, ) error
CompleteLease verifies that the leaseID on this host is still valid. It checks that current baseHostSummary is in Placing status, updates pods to the host summary, recalculates allocated resources and set the host status to Ready.
func (FakeHostSummary) DeleteExpiredHolds ¶
func (a FakeHostSummary) DeleteExpiredHolds( deadline time.Time) (bool, models.HostResources, []*peloton.PodID)
DeleteExpiredHolds deletes expired held pods in a hostSummary, returns whether the hostSummary is free of helds, available resource, and the pods held expired.
func (FakeHostSummary) GetAllocated ¶
func (a FakeHostSummary) GetAllocated() models.HostResources
GetAllocated returns the allocation of the host.
func (FakeHostSummary) GetAvailable ¶
func (a FakeHostSummary) GetAvailable() models.HostResources
GetAvailable returns the available resources of the host.
func (FakeHostSummary) GetCapacity ¶
func (a FakeHostSummary) GetCapacity() models.HostResources
GetCapacity returns the capacity of the host.
func (FakeHostSummary) GetHeldPods ¶
GetHeldPods returns a list of held PodIDs.
func (FakeHostSummary) GetHostLease ¶
GetHostLease creates and returns a host lease.
func (FakeHostSummary) GetHostStatus ¶
func (a FakeHostSummary) GetHostStatus() HostStatus
GetHostStatus returns the HostStatus of the host.
func (FakeHostSummary) GetHostname ¶
func (a FakeHostSummary) GetHostname() string
GetHostname returns the hostname of the host.
func (*FakeHostSummary) GetPodInfo ¶
func (FakeHostSummary) GetVersion ¶
func (a FakeHostSummary) GetVersion() string
GetVersion returns the version of the host.
func (FakeHostSummary) HandlePodEvent ¶
HandlePodEvent update host to pod map in baseHostSummary, corresponding subclasses could overwrite the method, but need to call the superclass method manually
func (FakeHostSummary) HoldForPod ¶
HoldForPod adds pod to heldPodIDs map when host is not reserved. It is noop if pod already exists in the map.
func (FakeHostSummary) RecoverPodInfo ¶
func (a FakeHostSummary) RecoverPodInfo( id *peloton.PodID, state pbpod.PodState, spec *pbpod.PodSpec)
RecoverPodInfo updates pods info on the host, it is used only when hostsummary needs to recover the info upon restart
func (FakeHostSummary) ReleaseHoldForPod ¶
ReleaseHoldForPod removes the pod from heldPodIDs map. It should be called when: 1. pod is upgraded in place. 2. hold for this pod expires.
func (*FakeHostSummary) SetAllocated ¶
func (f *FakeHostSummary) SetAllocated(allocated scalar.Resources)
func (FakeHostSummary) SetAvailable ¶
func (a FakeHostSummary) SetAvailable(r models.HostResources)
SetAvailable sets the available resources of the host.
func (FakeHostSummary) SetCapacity ¶
func (a FakeHostSummary) SetCapacity(r models.HostResources)
SetCapacity sets the capacity of the host.
func (FakeHostSummary) SetVersion ¶
func (a FakeHostSummary) SetVersion(v string)
SetVersion sets the version of the host.
func (FakeHostSummary) TerminateLease ¶
TerminateLease is called when terminating the lease on a host. This will be called when host in PLACING state is not used, and placement engine decides to terminate its lease and set the host back to Ready.
func (FakeHostSummary) TryMatch ¶
func (a FakeHostSummary) TryMatch( filter *hostmgr.HostFilter, ) Match
TryMatch atomically tries to match the current host with given HostFilter, and lock the host if it does. If current baseHostSummary is matched, this host will be marked as `PLACING`, after which it cannot be used by another placement engine until released. If current host is not matched by given HostFilter, the host status will remain unchanged.
type HostStatus ¶
type HostStatus int
HostStatus represents status (Ready/Placing/Reserved/Held) of the host in host cache
const ( // ReadyHost represents a host ready to be used. ReadyHost HostStatus = iota + 1 // PlacingHost represents a host being used by placement engine. PlacingHost // ReservedHost represents a host that is reserved for tasks. ReservedHost )
type HostSummary ¶
type HostSummary interface { // TryMatch atomically tries to match the current host with given // HostFilter, and lock the host if it does. TryMatch(filter *hostmgr.HostFilter) Match // CompleteLease verifies that the leaseID on this host is still valid. CompleteLease(leaseID string, podToSpecMap map[string]*pbpod.PodSpec) error // CasStatus sets the status to new value if current value is old, otherwise // returns error. CasStatus(old, new HostStatus) error // GetCapacity returns the capacity of the host. GetCapacity() models.HostResources // GetAllocated returns the allocation of the host. GetAllocated() models.HostResources // GetAvailable returns the available resources of the host. GetAvailable() models.HostResources // SetCapacity sets the capacity of the host. SetCapacity(r models.HostResources) // SetAvailable sets the available resource of the host. SetAvailable(r models.HostResources) // GetVersion returns the version of the host. GetVersion() string // SetVersion sets the version of the host. SetVersion(v string) // GetHostname returns the hostname of the host. GetHostname() string // GetHostStatus returns the HostStatus of the host. GetHostStatus() HostStatus // GetHostLease creates and returns a host lease. GetHostLease() *hostmgr.HostLease // TerminateLease is called when terminating the lease on a host. TerminateLease(leaseID string) error // HandlePodEvent is called when a pod event occurs for a pod // that affects this host. HandlePodEvent(event *p2kscalar.PodEvent) // HoldForPod holds the host for the pod specified. // If an error is returned, hostsummary would guarantee that // the host is not held for the task. HoldForPod(id *peloton.PodID) error // ReleaseHoldForPod release the hold of host for the pod specified. ReleaseHoldForPod(id *peloton.PodID) // GetHeldPods returns a slice of pods that puts the host in held. GetHeldPods() []*peloton.PodID // DeleteExpiredHolds deletes expired held pods in a hostSummary, returns // whether the hostSummary is free of helds, // available resource, // and the pods held expired. DeleteExpiredHolds(now time.Time) (bool, models.HostResources, []*peloton.PodID) // CompleteLaunchPod is called when a pod is successfully launched, // for example to remove the ports from the available port ranges. CompleteLaunchPod(pod *models.LaunchablePod) // RecoverPodInfo updates pods info on the host, it is used only // when hostsummary needs to recover the info upon restart RecoverPodInfo(id *peloton.PodID, state pbpod.PodState, spec *pbpod.PodSpec) }
func NewKubeletHostSummary ¶
func NewKubeletHostSummary( hostname string, capacity models.HostResources, version string, ) HostSummary
NewKubeletHostSummary returns a zero initialized HostSummary object.
func NewMesosHostSummary ¶
func NewMesosHostSummary(hostname string) HostSummary
type Match ¶
type Match struct { // The result of the match Result hostmgr.HostFilterResult // host name of the matched host HostName string }
Match represents the result of a match
type Matcher ¶
type Matcher struct {
// contains filtered or unexported fields
}
Matcher keeps track of matched hosts for given constraints. This struct is not thread-safe.
func NewMatcher ¶
func NewMatcher(hostFilter *hostmgr.HostFilter) *Matcher
NewMatcher returns a new instance of Matcher.
func (*Matcher) GetFilterCounts ¶
func (*Matcher) GetHostNames ¶
GetHostNames returns list of host names that match the filter.
func (*Matcher) HostLimitReached ¶
HostLimitReached returns true when the matcher has matched hosts equal to the max hosts specified in the filter
func (*Matcher) TryMatch ¶
func (m *Matcher) TryMatch( hostname string, s HostSummary)
TryMatch tries to match ready host with particular constraint. If properly matched, the host name will be kept in Matcher.