The cinder.scheduler.host_manager Module

The cinder.scheduler.host_manager Module

Manage backends in the current zone.

class BackendState(host, cluster_name, capabilities=None, service=None)

Bases: object

Mutable and immutable information tracked for a volume backend.

consume_from_volume(volume, update_time=True)

Incrementally update host state from a volume.

update_capabilities(capabilities=None, service=None)
update_from_volume_capability(capability, service=None)

Update information about a host from its volume_node info.

‘capability’ is the status info reported by volume backend, a typical capability looks like this:

 capability = {
     'volume_backend_name': 'Local iSCSI', #
     'vendor_name': 'OpenStack',           #  backend level
     'driver_version': '1.0',              #  mandatory/fixed
     'storage_protocol': 'iSCSI',          #  stats&capabilities

     'active_volumes': 10,                 #
     'IOPS_provisioned': 30000,            #  optional custom
     'fancy_capability_1': 'eat',          #  stats & capabilities
     'fancy_capability_2': 'drink',        #

     'pools': [
         {'pool_name': '1st pool',         #
          'total_capacity_gb': 500,        #  mandatory stats for
          'free_capacity_gb': 230,         #  pools
          'allocated_capacity_gb': 270,    #
          'QoS_support': 'False',          #
          'reserved_percentage': 0,        #

          'dying_disks': 100,              #
          'super_hero_1': 'spider-man',    #  optional custom
          'super_hero_2': 'flash',         #  stats & capabilities
          'super_hero_3': 'neoncat'        #
         {'pool_name': '2nd pool',
          'total_capacity_gb': 1024,
          'free_capacity_gb': 1024,
          'allocated_capacity_gb': 0,
          'QoS_support': 'False',
          'reserved_percentage': 0,

          'dying_disks': 200,
          'super_hero_1': 'superman',
          'super_hero_2': ' ',
          'super_hero_2': 'Hulk'
update_pools(capability, service)

Update storage pools information from backend reported info.

class HostManager

Bases: object

Base HostManager class.

REQUIRED_KEYS = frozenset(['pool_name', 'thick_provisioning_support', 'provisioned_capacity_gb', 'allocated_capacity_gb', 'thin_provisioning_support', 'free_capacity_gb', 'total_capacity_gb', 'reserved_percentage', 'max_over_subscription_ratio'])

alias of BackendState


Returns a dict of all the backends the HostManager knows about.

Each of the consumable resources in BackendState are populated with capabilities scheduler received from RPC.

For example:
{‘’: BackendState(), …}
get_filtered_backends(backends, filter_properties, filter_class_names=None)

Filter backends and return only ones passing all filters.

get_pools(context, filters=None)

Returns a dict of all pools on all hosts HostManager knows about.

get_usage_and_notify(capa_new, updated_pools, host, timestamp)
get_weighed_backends(backends, weight_properties, weigher_class_names=None)

Weigh the backends.

notify_service_capabilities(service_name, backend, capabilities, timestamp)

Notify the ceilometer with updated volume stats

revert_volume_consumed_capacity(pool_name, size)
update_service_capabilities(service_name, host, capabilities, cluster_name, timestamp)

Update the per-service capabilities based on this notification.

class PoolState(host, cluster_name, capabilities, pool_name)

Bases: cinder.scheduler.host_manager.BackendState

update_from_volume_capability(capability, service=None)

Update information about a pool from its volume_node info.

class ReadOnlyDict(source=None)

Bases: _abcoll.Mapping

A read-only dict.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.