Scheduler

The cinder.scheduler.manager Module

Scheduler Service

class SchedulerManager(scheduler_driver=None, service_name=None, *args, **kwargs)

Bases: cinder.manager.Manager

Chooses a host to create volumes.

RPC_API_VERSION = '3.0'
create_consistencygroup(context, topic, group, request_spec_list=None, filter_properties_list=None)
create_group(context, topic, group, group_spec=None, group_filter_properties=None, request_spec_list=None, filter_properties_list=None)
create_volume(context, topic, volume_id, snapshot_id=None, image_id=None, request_spec=None, filter_properties=None, volume=None)
get_pools(context, filters=None)

Get active pools from scheduler’s cache.

NOTE(dulek): There’s no self._wait_for_scheduler() because get_pools is an RPC call (is blocking for the c-api). Also this is admin-only API extension so it won’t hurt the user much to retry the request manually.

init_host_with_rpc()
manage_existing(context, topic, volume_id, request_spec, filter_properties=None, volume=None)

Ensure that the host exists and can accept the volume.

migrate_volume_to_host(context, topic, volume_id, host, force_host_copy, request_spec, filter_properties=None, volume=None)

Ensure that the host exists and can accept the volume.

request_service_capabilities(context)
reset()
retype(context, topic, volume_id, request_spec, filter_properties=None, volume=None)

Schedule the modification of a volume’s type.

Parameters:
  • context – the request context
  • topic – the topic listened on
  • volume_id – the ID of the volume to retype
  • request_spec – parameters for this retype request
  • filter_properties – parameters to filter by
  • volume – the volume object to retype
target = <Target version=2.3>
update_service_capabilities(context, service_name=None, host=None, capabilities=None, **kwargs)

Process a capability update from a service node.

The cinder.scheduler.driver Module

Scheduler base class that all Schedulers should inherit from

class Scheduler

Bases: object

The base class that all Scheduler classes should inherit from.

find_retype_host(context, request_spec, filter_properties=None, migration_policy='never')

Find a host that can accept the volume with its new type.

get_pools(context, filters)

Must override schedule method for scheduler to work.

host_passes_filters(context, host, request_spec, filter_properties)

Check if the specified host passes the filters.

is_ready()

Returns True if Scheduler is ready to accept requests.

This is to handle scheduler service startup when it has no volume hosts stats and will fail all the requests.

reset()

Reset volume RPC API object to load new version pins.

schedule(context, topic, method, *_args, **_kwargs)

Must override schedule method for scheduler to work.

schedule_create_consistencygroup(context, group, request_spec_list, filter_properties_list)

Must override schedule method for scheduler to work.

schedule_create_group(context, group, group_spec, request_spec_list, group_filter_properties, filter_properties_list)

Must override schedule method for scheduler to work.

schedule_create_volume(context, request_spec, filter_properties)

Must override schedule method for scheduler to work.

update_service_capabilities(service_name, host, capabilities)

Process a capability update from a service node.

generic_group_update_db(context, group, host)

Set the host and the scheduled_at field of a group.

Returns:A Group with the updated fields set properly.
group_update_db(context, group, host)

Set the host and the scheduled_at field of a consistencygroup.

Returns:A Consistencygroup with the updated fields set properly.
volume_update_db(context, volume_id, host)

Set the host and set the scheduled_at field of a volume.

Returns:A Volume with the updated fields set properly.

The cinder.scheduler.filter_scheduler Driver

The FilterScheduler is for creating volumes.

You can customize this scheduler by specifying your own volume Filters and Weighing Functions.

class FilterScheduler(*args, **kwargs)

Bases: cinder.scheduler.driver.Scheduler

Scheduler that can be used for filtering and weighing.

find_retype_host(context, request_spec, filter_properties=None, migration_policy='never')

Find a host that can accept the volume with its new type.

get_pools(context, filters)
host_passes_filters(context, host, request_spec, filter_properties)

Check if the specified host passes the filters.

populate_filter_properties(request_spec, filter_properties)

Stuff things into filter_properties.

Can be overridden in a subclass to add more data.

schedule(context, topic, method, *args, **kwargs)

Schedule contract that returns best-suited host for this request.

schedule_create_consistencygroup(context, group, request_spec_list, filter_properties_list)
schedule_create_group(context, group, group_spec, request_spec_list, group_filter_properties, filter_properties_list)
schedule_create_volume(context, request_spec, filter_properties)

Tests

The cinder.tests.unit.scheduler Module