17 #ifndef __MASTER_ALLOCATOR_MESOS_HIERARCHICAL_HPP__
18 #define __MASTER_ALLOCATOR_MESOS_HIERARCHICAL_HPP__
53 typename FrameworkSorter,
54 typename QuotaRoleSorter>
68 class InverseOfferFilter;
77 const std::function<
Sorter*()>& roleSorterFactory,
78 const std::function<
Sorter*()>& _frameworkSorterFactory,
79 const std::function<
Sorter*()>& quotaRoleSorterFactory)
96 const lambda::function<
97 void(
const FrameworkID&,
100 const lambda::function<
101 void(
const FrameworkID&,
104 const Option<std::set<std::string>>&
110 const int _expectedAgentCount,
114 const FrameworkID& frameworkId,
115 const FrameworkInfo& frameworkInfo,
118 const std::set<std::string>& suppressedRoles);
121 const FrameworkID& frameworkId);
124 const FrameworkID& frameworkId);
127 const FrameworkID& frameworkId);
130 const FrameworkID& frameworkId,
131 const FrameworkInfo& frameworkInfo,
132 const std::set<std::string>& suppressedRoles);
135 const SlaveID& slaveId,
136 const SlaveInfo& slaveInfo,
137 const std::vector<SlaveInfo::Capability>& capabilities,
143 const SlaveID& slaveId);
146 const SlaveID& slave,
147 const SlaveInfo& slaveInfo,
149 const Option<std::vector<SlaveInfo::Capability>>& capabilities =
None());
152 const SlaveID& slave,
157 const SlaveID& slaveId);
160 const SlaveID& slaveId);
166 const FrameworkID& frameworkId,
167 const std::vector<Request>& requests);
170 const FrameworkID& frameworkId,
171 const SlaveID& slaveId,
173 const std::vector<ResourceConversion>& conversions);
176 const SlaveID& slaveId,
177 const std::vector<Offer::Operation>& operations);
180 const SlaveID& slaveId,
184 const SlaveID& slaveId,
185 const FrameworkID& frameworkId,
196 const FrameworkID& frameworkId,
197 const SlaveID& slaveId,
202 const FrameworkID& frameworkId,
203 const std::set<std::string>&
roles);
206 const FrameworkID& frameworkId,
207 const std::set<std::string>&
roles);
210 const std::string& role,
214 const std::string& role);
217 const std::vector<WeightInfo>& weightInfos);
249 const FrameworkID& frameworkId,
250 const std::string& role,
251 const SlaveID& slaveId,
252 OfferFilter* offerFilter);
255 const FrameworkID& frameworkId,
256 const std::string& role,
257 const SlaveID& slaveId,
258 OfferFilter* offerFilter);
262 const FrameworkID& frameworkId,
263 const SlaveID& slaveId,
264 InverseOfferFilter* inverseOfferFilter);
272 const FrameworkID& frameworkId,
273 const std::string& role,
274 const SlaveID& slaveId,
280 const FrameworkID& frameworkID,
281 const SlaveID& slaveID)
const;
294 void(
const FrameworkID&,
299 void(
const FrameworkID&,
309 const FrameworkInfo& frameworkInfo,
330 return static_cast<double>(eventCount<process::DispatchEvent>());
334 const std::string& resource);
337 const std::string& resource);
340 const std::string& role,
341 const std::string& resource);
344 const std::string& role);
380 return total - allocated_;
545 bool isFrameworkTrackedUnderRole(
546 const FrameworkID& frameworkId,
547 const std::string& role)
const;
549 void trackFrameworkUnderRole(
550 const FrameworkID& frameworkId,
551 const std::string& role);
553 void untrackFrameworkUnderRole(
554 const FrameworkID& frameworkId,
555 const std::string& role);
571 void trackReservations(
574 void untrackReservations(
580 bool updateSlaveTotal(
const SlaveID& slaveId,
const Resources& total);
585 bool isRemoteSlave(
const Slave& slave)
const;
588 void trackAllocatedResources(
589 const SlaveID& slaveId,
590 const FrameworkID& frameworkId,
594 void untrackAllocatedResources(
595 const SlaveID& slaveId,
596 const FrameworkID& frameworkId,
601 void removeFilters(
const SlaveID& slaveId);
613 typename FrameworkSorter,
614 typename QuotaRoleSorter>
623 return new RoleSorter(this->
self(),
"allocator/mesos/roles/");
625 []() ->
Sorter* {
return new FrameworkSorter(); },
626 []() -> Sorter* {
return new QuotaRoleSorter(); }) {}
634 #endif // __MASTER_ALLOCATOR_MESOS_HIERARCHICAL_HPP__
Option< process::Future< Nothing > > allocation
Definition: hierarchical.hpp:439
void recoverResources(const FrameworkID &frameworkId, const SlaveID &slaveId, const Resources &resources, const Option< Filters > &filters)
HierarchicalAllocatorProcess< DRFSorter, DRFSorter, DRFSorter > HierarchicalDRFAllocatorProcess
Definition: hierarchical.hpp:55
std::string generate(const std::string &prefix="")
Returns 'prefix(N)' where N represents the number of instances where the same prefix (wrt...
void addSlave(const SlaveID &slaveId, const SlaveInfo &slaveInfo, const std::vector< SlaveInfo::Capability > &capabilities, const Option< Unavailability > &unavailability, const Resources &total, const hashmap< FrameworkID, Resources > &used)
void setQuota(const std::string &role, const Quota "a)
Definition: nothing.hpp:16
Definition: hierarchical.hpp:399
void removeFramework(const FrameworkID &frameworkId)
bool filterGpuResources
Definition: hierarchical.hpp:471
Definition: option.hpp:28
hashmap< std::string, hashmap< SlaveID, hashset< OfferFilter * > > > offerFilters
Definition: hierarchical.hpp:322
hashset< FrameworkID > offersOutstanding
Definition: hierarchical.hpp:421
ProcessBase(const std::string &id="")
Metrics metrics
Definition: hierarchical.hpp:304
void _expire(const FrameworkID &frameworkId, const std::string &role, const SlaveID &slaveId, OfferFilter *offerFilter)
void suppressOffers(const FrameworkID &frameworkId, const std::set< std::string > &roles)
SlaveInfo info
Definition: hierarchical.hpp:389
hashmap< std::string, process::Owned< Sorter > > frameworkSorters
Definition: hierarchical.hpp:539
void updateAllocation(const FrameworkID &frameworkId, const SlaveID &slaveId, const Resources &offeredResources, const std::vector< ResourceConversion > &conversions)
Definition: protobuf_utils.hpp:251
void activateFramework(const FrameworkID &frameworkId)
Resources allocated
Definition: hierarchical.hpp:364
hashmap< SlaveID, hashset< InverseOfferFilter * > > inverseOfferFilters
Definition: hierarchical.hpp:323
Result< ProcessStatus > status(pid_t pid)
Definition: proc.hpp:166
Option< int > expectedAgentCount
Definition: hierarchical.hpp:289
Definition: resources.hpp:79
HierarchicalAllocatorProcess()
Definition: hierarchical.hpp:619
bool activated
Definition: hierarchical.hpp:383
hashmap< SlaveID, Slave > slaves
Definition: hierarchical.hpp:430
Definition: hierarchical.hpp:306
void deactivateFramework(const FrameworkID &frameworkId)
static bool allocatable(const Resources &resources)
Definition: duration.hpp:32
bool isFiltered(const FrameworkID &frameworkId, const std::string &role, const SlaveID &slaveId, const Resources &resources) const
Definition: allocator.hpp:41
process::Owned< Sorter > quotaRoleSorter
Definition: hierarchical.hpp:531
Resources total
Definition: hierarchical.hpp:351
MesosAllocator< HierarchicalDRFAllocatorProcess > HierarchicalDRFAllocator
Definition: hierarchical.hpp:61
const std::function< Sorter *()> frameworkSorterFactory
Definition: hierarchical.hpp:542
Definition: hashmap.hpp:38
double _offer_filters_active(const std::string &role)
void requestResources(const FrameworkID &frameworkId, const std::vector< Request > &requests)
void reviveOffers(const FrameworkID &frameworkId, const std::set< std::string > &roles)
lambda::function< void(const FrameworkID &, const hashmap< std::string, hashmap< SlaveID, Resources >> &)> offerCallback
Definition: hierarchical.hpp:296
Try< Nothing > unavailability(const Unavailability &unavailability)
void updateUnavailability(const SlaveID &slaveId, const Option< Unavailability > &unavailability)
Definition: hierarchical.hpp:73
process::Owned< Sorter > roleSorter
Definition: hierarchical.hpp:511
void expire(const FrameworkID &frameworkId, const std::string &role, const SlaveID &slaveId, OfferFilter *offerFilter)
Result< std::vector< Filter< Classifier > > > filters(const std::string &_link, const Handle &parent)
Definition: internal.hpp:776
process::Future< Nothing > allocate()
hashmap< FrameworkID, mesos::allocator::InverseOfferStatus > statuses
Definition: hierarchical.hpp:415
void recover(const int _expectedAgentCount, const hashmap< std::string, Quota > "as)
virtual void initialize()
Invoked when a process gets spawned.
Definition: process.hpp:100
Definition: allocator.hpp:184
Definition: protobuf_utils.hpp:439
Framework(const FrameworkInfo &frameworkInfo, const std::set< std::string > &suppressedRoles, bool active)
hashmap< FrameworkID, Framework > frameworks
Definition: hierarchical.hpp:346
process::Future< hashmap< SlaveID, hashmap< FrameworkID, mesos::allocator::InverseOfferStatus > > > getInverseOfferStatuses()
protobuf::slave::Capabilities capabilities
Definition: hierarchical.hpp:391
HierarchicalAllocatorProcess(const std::function< Sorter *()> &roleSorterFactory, const std::function< Sorter *()> &_frameworkSorterFactory, const std::function< Sorter *()> "aRoleSorterFactory)
Definition: hierarchical.hpp:76
std::set< std::string > suppressedRoles
Definition: hierarchical.hpp:315
void addResourceProvider(const SlaveID &slave, const Resources &total, const hashmap< FrameworkID, Resources > &used)
void activateSlave(const SlaveID &slaveId)
void addFramework(const FrameworkID &frameworkId, const FrameworkInfo &frameworkInfo, const hashmap< SlaveID, Resources > &used, bool active, const std::set< std::string > &suppressedRoles)
void updateWeights(const std::vector< WeightInfo > &weightInfos)
double _resources_offered_or_allocated(const std::string &resource)
Option< std::set< std::string > > fairnessExcludeResourceNames
Definition: hierarchical.hpp:468
Resources available() const
Definition: hierarchical.hpp:373
Option< hashset< std::string > > whitelist
Definition: hierarchical.hpp:465
Definition: hierarchical.hpp:348
Unavailability unavailability
Definition: hierarchical.hpp:405
hashmap< std::string, hashset< FrameworkID > > roles
Definition: hierarchical.hpp:445
Option< DomainInfo > domain
Definition: hierarchical.hpp:474
double _event_queue_dispatches()
Definition: hierarchical.hpp:328
hashset< SlaveID > allocationCandidates
Definition: hierarchical.hpp:435
void updateInverseOffer(const SlaveID &slaveId, const FrameworkID &frameworkId, const Option< UnavailableResources > &unavailableResources, const Option< mesos::allocator::InverseOfferStatus > &status, const Option< Filters > &filters)
process::Future< Nothing > updateAvailable(const SlaveID &slaveId, const std::vector< Offer::Operation > &operations)
Result< Process > process(pid_t pid)
Definition: freebsd.hpp:30
A "process identifier" used to uniquely identify a process when dispatching messages.
Definition: pid.hpp:279
void updateSlave(const SlaveID &slave, const SlaveInfo &slaveInfo, const Option< Resources > &total=None(), const Option< std::vector< SlaveInfo::Capability >> &capabilities=None())
void deactivateSlave(const SlaveID &slaveId)
double _quota_allocated(const std::string &role, const std::string &resource)
HierarchicalAllocatorProcess This
Definition: hierarchical.hpp:222
void removeSlave(const SlaveID &slaveId)
void updateFramework(const FrameworkID &frameworkId, const FrameworkInfo &frameworkInfo, const std::set< std::string > &suppressedRoles)
Definition: sorter.hpp:41
friend Metrics
Definition: hierarchical.hpp:303
bool initialized
Definition: hierarchical.hpp:285
double _resources_total(const std::string &resource)
bool active
Definition: hierarchical.hpp:325
Definition: hierarchical.hpp:55
HierarchicalAllocatorProcess Self
Definition: hierarchical.hpp:221
bool isWhitelisted(const SlaveID &slaveId) const
Duration allocationInterval
Definition: hierarchical.hpp:291
protobuf::framework::Capabilities capabilities
Definition: hierarchical.hpp:317
hashmap< std::string, Quota > quotas
Definition: hierarchical.hpp:454
Definition: metrics.hpp:44
Maintenance(const Unavailability &_unavailability)
Definition: hierarchical.hpp:401
Option< Maintenance > maintenance
Definition: hierarchical.hpp:427
void removeQuota(const std::string &role)
std::set< std::string > roles
Definition: hierarchical.hpp:313
void updateWhitelist(const Option< hashset< std::string >> &whitelist)
virtual ~HierarchicalAllocatorProcess()
Definition: hierarchical.hpp:87
bool paused
Definition: hierarchical.hpp:286
hashmap< std::string, Resources > reservationScalarQuantities
Definition: hierarchical.hpp:462
lambda::function< void(const FrameworkID &, const hashmap< SlaveID, UnavailableResources > &)> inverseOfferCallback
Definition: hierarchical.hpp:301