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.1'
create_consistencygroup(context, group, request_spec_list=None, filter_properties_list=None)
create_group(context, group, group_spec=None, group_filter_properties=None, request_spec_list=None, filter_properties_list=None)
create_volume(context, volume, snapshot_id=None, image_id=None, request_spec=None, filter_properties=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, volume, request_spec, filter_properties=None)

Ensure that the host exists and can accept the volume.

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

Ensure that the host exists and can accept the volume.

notify_service_capabilities(context, service_name, host, capabilities)

Process a capability update from a service node.

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

Schedule the modification of a volume’s type.

Parameters:
  • context – the request context
  • volume – the volume object to retype
  • request_spec – parameters for this retype request
  • filter_properties – parameters to filter by
target = <Target version=3.1>
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.

notify_service_capabilities(service_name, host, capabilities)

Notify capability update from a service node.

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