]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
Adds framework for get_capabilities() feature
authorMitsuhiro Tanino <mitsuhiro.tanino@hds.com>
Mon, 13 Jul 2015 15:17:00 +0000 (11:17 -0400)
committerMitsuhiro Tanino <mitsuhiro.tanino@hds.com>
Thu, 27 Aug 2015 19:13:37 +0000 (15:13 -0400)
commit0e2783360ce730beed3423bee31ad9726a51c8e1
tree5b3badf36f1fe7fbf53aa6589654856e3e3bd6a5
parent3b40049cc858fa40ce99f2dba25d6a25f344a8e9
Adds framework for get_capabilities() feature

This patch adds a base framework of capabilities reporting
feature. The get_capabilities RPC API returns dictionary
which is consisted of two parts.

First part includes static backend capabilities which are
obtained by get_volume_stats(). Second part is properties
which includes parameters correspond to extra specs.
This properties part is consisted of cinder standard
capabilities and vendor unique properties. These properties
are created via these two methods.

* _init_standard_capabilities()
* _init_vendor_properties()

Since _init_standard_capabilities() only exposes cinder
standard capabilities into the properties dictionary,
each backend driver needs to expose their own properties
by overriding _init_vendor_properties().

ex. capabilities
{
   'host_name': 'block1',
   'volume_backend_name': 'lvm',
   'pool_name': 'pool',
   'driver_version': '2.0.0',
   'storage_protocol': 'iSCSI',
   'properties:' {
        'thin_provisioning': {
            'title': 'Thin Provisioning',
            'description': 'Sets thin provisioning.',
            'type': 'boolean'},
        'compression': {
            'title': 'Compression',
            'description': 'Enables compression.',
            'type': 'boolean'},
        'qos': {
            'title': 'QoS',
            'description': 'Enables QoS.',
            'type': 'boolean'},
        'replication': {
            'title': 'Replication',
            'description': 'Enables replication.',
            'type': 'boolean'},
        'vendor:compression_type': {
            'title': 'Compression type',
            'description': 'Specifies compression type.',
            'type': 'string',
            'enum': ["lossy", "lossless", "special"]},
        'vendor:minIOPS': {
            'title': 'Minimum IOPS QoS',
            'description': 'Sets minimum IOPS if QoS is enabled.',
            'type': 'integer',
            'minimum': 10,
            'default': 100},
   }
}

DocImpact
Implements: blueprint get-volume-type-extra-specs
Change-Id: I7a019f0296511bfda5b373e508071853d85e2376
cinder/tests/unit/test_volume.py
cinder/tests/unit/test_volume_rpcapi.py
cinder/volume/driver.py
cinder/volume/manager.py
cinder/volume/rpcapi.py