Bug 1042554

Summary: [RFE][neutron]: Refactor l3_agent_scheduler.py to better accommodate adding additional scheduler classes
Product: Red Hat OpenStack Reporter: RHOS Integration <rhos-integ>
Component: RFEsAssignee: RHOS Maint <rhos-maint>
Status: CLOSED UPSTREAM QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: unspecifiedCC: markmc, yeylon
Target Milestone: ---Keywords: FutureFeature
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
URL: https://blueprints.launchpad.net/neutron/+spec/l3-agent-scheduler-refactor
Whiteboard: upstream_milestone_none upstream_status_unknown upstream_definition_obsolete
Fixed In Version: Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-03-19 16:58:47 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description RHOS Integration 2013-12-13 00:20:37 UTC
Cloned from launchpad blueprint https://blueprints.launchpad.net/neutron/+spec/l3-agent-scheduler-refactor.

Description:

Similar in function (but different in scope) to https://blueprints.launchpad.net/neutron/+spec/nvp-agent-scheduler-extension. As it stands today, the l3_agent_scheduler consists of one class, ChanceScheduler, under which much globally reusable code is defined.

I propose we move (and refactor) the auto_schedule_routers and schedule methods into a global base class (Scheduler, maybe?) and remove determining logic code from them. This will relegate them to globally reusable code which do nothing more than return a list of available agents.

This base class can then be superseded by multiple scheduler classes, which can apply the appropriate logic for choosing an agent from the available list and returning that value.

This should make the scheduler much more extensible and universally useful.

Specification URL (additional information):

None