Using Object Metadata

InfiniBox allows a client script to assign metadata keys and values to various objects, and query them later.

Setting Metadata Keys

>>> unused = volume.set_metadata('metadata_key', 'value!')

Getting Metadata Keys

>>> print(volume.get_metadata_value('metadata_key'))
value!

Getting nonexistent metadata, by default, raises an exception:

>>> volume.get_metadata_value('nonexisting') 
Traceback (most recent call last):
  ...
APICommandFailed: ...

You can provide defaults to be retrieved if metadata doesn’t exist:

>>> volume.get_metadata_value('nonexisting', 2)
2

Getting All Metadata Keys

Getting all metadata keys of specific object:

>>> for key, value in volume.get_all_metadata().items():
...     print("Found key:", key, "with value:", value)
Found key: metadata_key with value: value!

You can also get all metadata keys for all the object in the system:

>>> for object_metadata_item in volume.system.get_all_metadata():
...     print("Found key: {key} with value: {value} for object id {object_id}".format(**object_metadata_item))  
Found key: metadata_key with value: value! for object id ...

Deleting (Unsetting) Metadata

>>> unused = volume.unset_metadata('metadata_key')
>>> volume.get_all_metadata()
{}

You can also clear all metadata related to a single object:

>>> volume.clear_metadata()