Add module and states for Ironic API v1
Change-Id: I832381955e608875e87680211e8e7a3836facb40
Related-Prod: PROD-21813
diff --git a/_modules/ironicv1/volumes.py b/_modules/ironicv1/volumes.py
new file mode 100644
index 0000000..9732cad
--- /dev/null
+++ b/_modules/ironicv1/volumes.py
@@ -0,0 +1,87 @@
+from ironicv1.common import send
+try:
+ from urllib.parse import urlencode
+except ImportError:
+ from urllib import urlencode
+
+
+@send('get')
+def volume_resource_list(**kwargs):
+ url = '/volume'
+ return url, {}
+
+
+@send('get')
+def volume_connector_list(**kwargs):
+ url = '/volume/connectors?{}'.format(urlencode(kwargs))
+ return url, {}
+
+
+@send('post')
+def volume_connector_create(node_uuid, volume_type, connector_id, **kwargs):
+ url = '/volume/connectors'
+ json = {
+ 'node_uuid': node_uuid,
+ 'type': volume_type,
+ 'connector_id': connector_id,
+ }
+ json.update(kwargs)
+ return url, {'json': json}
+
+
+@send('get')
+def volume_connector_get_details(volume_connector_id, **kwargs):
+ url = '/volume/connectors/{}?{}'.format(
+ volume_connector_id, urlencode(kwargs))
+ return url, {}
+
+
+@send('patch')
+def volume_connector_update(volume_connector_id, properties, **kwargs):
+ url = '/volume/connectors/{}'.format(volume_connector_id)
+ return url, {'json': properties}
+
+
+@send('delete')
+def volume_connector_delete(volume_connector_id, **kwargs):
+ url = '/volume/connectors/{}'.format(volume_connector_id)
+ return url, {}
+
+
+@send('get')
+def volume_target_list(**kwargs):
+ url = '/volume/targets?{}'.format(urlencode(kwargs))
+ return url, {}
+
+
+@send('post')
+def volume_target_create(node_uuid, volume_type, properties,
+ boot_index, volume_id, **kwargs):
+ url = '/volume/targets'
+ json = {
+ 'node_uuid': node_uuid,
+ 'volume_type': volume_type,
+ 'properties': properties,
+ 'boot_index': boot_index,
+ 'volume_id': volume_id,
+ }
+ json.update(kwargs)
+ return url, {'json': json}
+
+
+@send('get')
+def volume_target_get_details(target_id, **kwargs):
+ url = '/volume/targets/{}?{}'.format(target_id, urlencode(kwargs))
+ return url, {}
+
+
+@send('patch')
+def volume_target_update(target_id, properties, **kwargs):
+ url = '/volume/targets/{}'.format(target_id)
+ return url, {'json': properties}
+
+
+@send('delete')
+def volume_target_delete(target_id, **kwargs):
+ url = '/volume/targets/{}'.format(target_id)
+ return url, {}