'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:
.. code-block:: python
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\''

def update_from_volume_capability(self, capability, service=None):

    self.update_capabilities(capability, service)
    if capability:
        if (self.updated and (self.updated > capability['timestamp'])):
            return
        self.update_backend(capability)
        self.update_pools(capability, service)
