Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 912059 (plugable-scheduler)

Summary: PRD33 - Provide infrastructure for plug-in a schedulers
Product: Red Hat Enterprise Virtualization Manager Reporter: Simon Grinberg <sgrinber>
Component: ovirt-scheduler-proxyAssignee: Martin Sivák <msivak>
Status: CLOSED ERRATA QA Contact: Ondra Machacek <omachace>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 3.2.0CC: aburden, acathrow, bdagan, dfediuck, iheim, lpeer, pep, pstehlik, rmcswain
Target Milestone: ---Keywords: FutureFeature
Target Release: 3.3.0Flags: sgrinber: Triaged+
Hardware: Unspecified   
OS: Unspecified   
URL: http://www.ovirt.org/Features/oVirt_External_Scheduler
Whiteboard: sla
Fixed In Version: Doc Type: Release Note
Doc Text:
Red Hat Enterprise Virtualization Manager now includes a new scheduler to handle VM placement, allowing users to create new scheduling policies, and also write their own logic in Python and include it in a policy. For conceptual explanations of the new scheduler see bug 912076. The infrastructure allowing users to extend the new scheduler, is based on a service called ovirt-scheduler-proxy. The service's purpose is for RHEV admins to extend the scheduling process with custom python filters, weight functions and load balancing modules. The daemon is waiting for engine requests using XML-RPC. Engine request may e one of: - runDiscover: returns an XML containing all available policy units and configurations (configuration is optional). - runFilters: executes a set of filters plugins sequentially (provided as a name list). - runScores: executes a set of weight function plugins sequentially (provided as a name list), then calculate a cost table (using factors) and return it to the engine. - runBalance: executes the balance plugin named {balance name} on the hosts using the given properties_map. Any plugin file {NAME}.py the user writes must implement at least one of the functions (do_filter, do_scores, do_balance). These files reside in $PYTHONPATH/ovirt_scheduler/plugins folder, unless changes in the proxy's configuration file /etc/ovirt/scheduler/scheduler.conf. For more information on user code you can check the provided samples. During the daemon initialization, it will scan this folder to detect user files, and analyze the files for the relevant functionality. The results are kept in the daemon's cache, and provided to the engine when the runDiscover is called. Note that the engine will call it only when it starts up, so in order to introduce a new code, the administrator needs to restart the proxy service, and then RHEV engine. The scheduling proxy is packaged as a separate optional RPM which is not installed by default. After installing it, the admin needs to allow it in RHEV DB by setting ExternalSchedulerEnabled to True using the configuration utility. Important notes: - User provided code is unsupported. - Using user provided code may have a performance impact, so administrators are advised to carefully test their code and the general performance changes before using it in live setups.
Story Points: ---
Clone Of:
: 975630 (view as bug list) Environment:
Last Closed: 2014-01-22 16:20:27 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: SLA RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 723056, 827168, 828591, 862091, 877209, 912076, 975630, 975631, 1019470    

Description Simon Grinberg 2013-02-17 14:56:43 UTC
This bug is a placeholder for this functionality and a detailed requirements list will be provided later. This is opened now to triage and block all the RFE's that depend on this infrastructure. 

Basic concepts are: 

1. Creation of an infrastructure to plug-in a scheduler code running within the engine.

1.2 Allow third parties create their own.
1.3 Allow more then one such schedulers in the system.
1.4 Allow concatenation of schedulers within a cluster.

2. Define events on which to call scheduling 

3. Conversion of the current scheduler to use this new infra - A separate BZ will be opened for that. During the transition period allow to choose legacy scheduling or plug able (global config option)

More to come later ...

Comment 3 Andrew Cathrow 2013-06-19 16:53:12 UTC
*** Bug 827168 has been marked as a duplicate of this bug. ***

Comment 4 Doron Fediuck 2013-07-15 16:33:29 UTC
Some clarification.
This BZ is handling the infra that will run code outside of the engine scope.

Comment 10 errata-xmlrpc 2014-01-22 16:20:27 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHEA-2014-0088.html