Refactor l3_agent_scheduler.py to better accommodate adding additional scheduler classes

Registered by Kevin Bringard

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.

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
Kevin Bringard
Direction:
Needs approval
Assignee:
Kevin Bringard
Definition:
Obsolete
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
Armando Migliaccio

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.