The cinder.scheduler.host_manager Module

Manage hosts in the current zone.

class HostManager

Bases: object

Base HostManager class.

get_all_host_states(context)

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

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

For example:
{‘192.168.1.100’: HostState(), ...}
get_filtered_hosts(hosts, filter_properties, filter_class_names=None)

Filter hosts and return only ones passing all filters.

get_pools(context)

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

get_weighed_hosts(hosts, weight_properties, weigher_class_names=None)

Weigh the hosts.

has_all_capabilities()
host_state_cls

alias of HostState

update_service_capabilities(service_name, host, capabilities)

Update the per-service capabilities based on this notification.

class HostState(host, capabilities=None, service=None)

Bases: object

Mutable and immutable information tracked for a volume backend.

consume_from_volume(volume)

Incrementally update host state from a volume.

update_backend(capability)
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 PoolState(host, capabilities, pool_name)

Bases: cinder.scheduler.host_manager.HostState

update_from_volume_capability(capability, service=None)

Update information about a pool from its volume_node info.

update_pools(capability)
class ReadOnlyDict(source=None)

Bases: _abcoll.Mapping

A read-only dict.

Previous topic

The cinder.scheduler.flows.create_volume Module

Next topic

The cinder.scheduler.manager Module

Project Source

This Page