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. - 
backend_id¶
 - 
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 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'])¶
 - 
backend_state_cls¶
- alias of - BackendState
 - 
get_all_backend_states(context)¶
- 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:
- {‘192.168.1.100’: BackendState(), ...}
 
 - 
get_filtered_backends(backends, filter_properties, filter_class_names=None)¶
- Filter backends and return only ones passing all filters. 
 - 
get_pools(context)¶
- 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. 
 - 
has_all_capabilities()¶
 - 
notify_service_capabilities(service_name, backend, capabilities, timestamp)¶
- Notify the ceilometer with updated volume stats 
 - 
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. 
 - 
update_pools(capability)¶
 
- 
- 
class ReadOnlyDict(source=None)¶
- Bases: - _abcoll.Mapping- A read-only dict.