Difference between revisions of "SharesServiceAPI"
(→Proposed API changes to support Cinder Protocol Enhancements: Updated to reflect only shares, no volumes) |
|||
Line 43: | Line 43: | ||
Response body: | Response body: | ||
− | <code><nowiki> | + | <code><nowiki> {"shares": [{"status": "available", "description": null, "links": [{"href": "http://10.63.165.30:8776/v1/99600daa104f4be0b0860a9358ec6df2/shares/26d18481-1ce3-4477-80b8-cbcd6e58ab40", "rel": "self"}, {"href": "http://10.63.165.30:8776/99600daa104f4be0b0860a9358ec6df2/shares/26d18481-1ce3-4477-80b8-cbcd6e58ab40", "rel": "bookmark"}], "availability_zone": "nova", "snapshot_id": null, "id": "26d18481-1ce3-4477-80b8-cbcd6e58ab40", "size": 1, "name": null, "share_type": "NFS", "created_at": "2013-04-05T11:03:52.000000", "export_location": "10.63.165.30:/opt/stack/data/cinder/mnt/share-26d18481-1ce3-4477-80b8-cbcd6e58ab40"}]} |
+ | </nowiki></code> | ||
'''Show share:''' | '''Show share:''' | ||
Line 57: | Line 58: | ||
Response body: | Response body: | ||
− | <code><nowiki> | + | <code><nowiki>{"share": {"status": "available", "description": null, "links": [{"href": "http://10.63.165.30:8776/v1/99600daa104f4be0b0860a9358ec6df2/shares/26d18481-1ce3-4477-80b8-cbcd6e58ab40", "rel": "self"}, {"href": "http://10.63.165.30:8776/99600daa104f4be0b0860a9358ec6df2/shares/26d18481-1ce3-4477-80b8-cbcd6e58ab40", "rel": "bookmark"}], "availability_zone": "nova", "snapshot_id": null, "id": "26d18481-1ce3-4477-80b8-cbcd6e58ab40", "size": 1, "name": null, "share_type": "NFS", "created_at": "2013-04-05T11:03:52.000000", "export_location": "10.63.165.30:/opt/stack/data/cinder/mnt/share-26d18481-1ce3-4477-80b8-cbcd6e58ab40"}} |
+ | </nowiki></code> | ||
'''Allow access to share:''' | '''Allow access to share:''' | ||
Line 68: | Line 70: | ||
<code><nowiki> POST /v1/<tenant_id>/shares/<share_id>/action </nowiki></code> | <code><nowiki> POST /v1/<tenant_id>/shares/<share_id>/action </nowiki></code> | ||
− | Body: <code><nowiki> {"os- | + | Body: <code><nowiki> {"os-allow_access": {"access_type": "ip", "access_to": "10.0.0.0"}} </nowiki></code> |
Successful response code: <code><nowiki>202</nowiki></code> | Successful response code: <code><nowiki>202</nowiki></code> | ||
Line 74: | Line 76: | ||
Response body: <code><nowiki>None</nowiki></code> | Response body: <code><nowiki>None</nowiki></code> | ||
− | ''' | + | '''List share access rules:''' |
− | <code><nowiki>cinder share- | + | <code><nowiki>cinder share-access-list <share_id></nowiki></code> |
Request: | Request: | ||
− | |||
− | + | <pre><nowiki> POST /v1/<tenant_id>/shares/<share_id>/action | |
+ | |||
+ | Body: {"os-access_list": null} </nowiki></pre> | ||
+ | |||
+ | |||
+ | Successful response code: <code><nowiki>200</nowiki></code> | ||
− | + | Response body: | |
+ | <code><nowiki> {u'access_list': [{u'state': u'active', u'id': u'fd5095f0-173f-46b1-93dd-faa8500dd1bd', u'access_type': u'ip', u'access_to': u'10.0.0.0'}]} | ||
+ | </nowiki></code> | ||
− | |||
− | ''' | + | '''Deny access to share:''' |
− | <code><nowiki>cinder share- | + | <code><nowiki>cinder share-deny <share_id> <access_rule_id></nowiki></code> |
Request: | Request: | ||
+ | <code><nowiki>POST /v1/<tenant_id>/shares/<share_id>/action</nowiki></code> | ||
− | < | + | Body: <code><nowiki> {"os-deny_access": {"access_id": "fd5095f0-173f-46b1-93dd-faa8500dd1bd"}} </nowiki></code> |
− | + | Successful response code: <code><nowiki>202</nowiki></code> | |
+ | Response body: <code><nowiki>None</nowiki></code> | ||
− | |||
− | |||
− | |||
− | |||
'''Create snapshot from share:''' | '''Create snapshot from share:''' | ||
Line 108: | Line 113: | ||
Request: | Request: | ||
− | <code><nowiki>POST /v1/<tenant_id>/snapshots</nowiki></code> | + | <code><nowiki>POST /v1/<tenant_id>/share-snapshots</nowiki></code> |
− | Body: <code><nowiki> {"snapshot": {" | + | Body: <code><nowiki> {"share-snapshot": {"share_id": "26d18481-1ce3-4477-80b8-cbcd6e58ab40"}} </nowiki></code> |
Successful response code: <code><nowiki>200</nowiki></code> | Successful response code: <code><nowiki>200</nowiki></code> | ||
Response body: | Response body: | ||
− | <code><nowiki> { | + | <code><nowiki> {'share-snapshot': {'id': 'a4a6ec00-3aac-4ce1-b396-aa815280893e', 'links': [{'href': 'http://10.63.165.30:8776/v1/99600daa104f4be0b0860a9358ec6df2/share-snapshots/a4a6ec00-3aac-4ce1-b396-aa815280893e', 'rel': 'self'}, {'href': 'http://10.63.165.30:8776/99600daa104f4be0b0860a9358ec6df2/share-snapshots/a4a6ec00-3aac-4ce1-b396-aa815280893e', 'rel': 'bookmark'}], 'name': None}} |
+ | </nowiki></code> | ||
''' Snapshot delete:''' | ''' Snapshot delete:''' | ||
Line 123: | Line 129: | ||
Request: | Request: | ||
− | <pre><nowiki> DELETE /v1/<tenant_id>/snapshots/<snapshot_id> | + | <pre><nowiki> DELETE /v1/<tenant_id>/share-snapshots/<snapshot_id> |
POST /v1/<tenant_id>/snapshots </nowiki></pre> | POST /v1/<tenant_id>/snapshots </nowiki></pre> | ||
− | <code><nowiki> Body: {"snapshot": {" | + | <code><nowiki> Body: {"share-snapshot": {"share_id": "26d18481-1ce3-4477-80b8-cbcd6e58ab40"}} </nowiki></code> |
Successful response code: <code><nowiki> 200 </nowiki></code> | Successful response code: <code><nowiki> 200 </nowiki></code> | ||
− | Response body: | + | Response body: None |
'''Snapshots list:''' | '''Snapshots list:''' | ||
Line 139: | Line 145: | ||
Request: | Request: | ||
− | <code><nowiki>GET /v1/<tenant_id>/snapshots | + | <code><nowiki>GET /v1/<tenant_id>/share-snapshots</nowiki></code> |
− | Body: | + | Body: None |
Successful response code: <code><nowiki>200</nowiki></code> | Successful response code: <code><nowiki>200</nowiki></code> | ||
Response body: | Response body: | ||
− | <code><nowiki> {"snapshots": [{" | + | <code><nowiki> {"share-snapshots": [{"id": "a4a6ec00-3aac-4ce1-b396-aa815280893e", "links": [{"href": "http://10.63.165.30:8776/v1/99600daa104f4be0b0860a9358ec6df2/share-snapshots/a4a6ec00-3aac-4ce1-b396-aa815280893e", "rel": "self"}, {"href": "http://10.63.165.30:8776/99600daa104f4be0b0860a9358ec6df2/share-snapshots/a4a6ec00-3aac-4ce1-b396-aa815280893e", "rel": "bookmark"}], "name": null}]} |
+ | </nowiki></code> |
Revision as of 11:59, 5 April 2013
Proposed API changes to support Cinder Protocol Enhancements
Background and full spec is here: Cinder Protocol Enhancements
Create share:
CLI: cinder share-create [--snapshot_id <snapshot_id>] [--display_name <display_name>] [--display_description <display_description>] <share_protocol> <size>
Note: snapshot id should be used when creating new share from snapshot is required.
Request: POST /v1/<tenant_id>/shares
Body: {"share": {"share_type": "cifs", "size": 1}}'
Successful response code: 200
Response body: '{'share': {'id': u'26d18481-1ce3-4477-80b8-cbcd6e58ab40', 'links': [{u'href': 'http://10.63.165.30:8776/v1/99600daa104f4be0b0860a9358ec6df2/shares/26d18481-1ce3-4477-80b8-cbcd6e58ab40', 'rel': 'self'}, {'href': 'http://10.63.165.30:8776/99600daa104f4be0b0860a9358ec6df2/shares/26d18481-1ce3-4477-80b8-cbcd6e58ab40', 'rel': 'bookmark'}], 'name': None}}
'
Delete share:
cinder share-delete <share_id>
Request: DELETE /v1/<tenant_id>/shares/<share_id>
Body: None
Successful response code: 200
Response body: None
List shares:
cinder share-list
Request:
GET /v1/<tenant_id>/shares/detail
Body: None
Successful response code: 200
Response body:
{"shares": [{"status": "available", "description": null, "links": [{"href": "http://10.63.165.30:8776/v1/99600daa104f4be0b0860a9358ec6df2/shares/26d18481-1ce3-4477-80b8-cbcd6e58ab40", "rel": "self"}, {"href": "http://10.63.165.30:8776/99600daa104f4be0b0860a9358ec6df2/shares/26d18481-1ce3-4477-80b8-cbcd6e58ab40", "rel": "bookmark"}], "availability_zone": "nova", "snapshot_id": null, "id": "26d18481-1ce3-4477-80b8-cbcd6e58ab40", "size": 1, "name": null, "share_type": "NFS", "created_at": "2013-04-05T11:03:52.000000", "export_location": "10.63.165.30:/opt/stack/data/cinder/mnt/share-26d18481-1ce3-4477-80b8-cbcd6e58ab40"}]}
Show share:
cinder share-show <share_id>
Request:
GET /v1/<tenant_id>/shares/<share_id>
Body: None
Successful response code: 200
Response body:
{"share": {"status": "available", "description": null, "links": [{"href": "http://10.63.165.30:8776/v1/99600daa104f4be0b0860a9358ec6df2/shares/26d18481-1ce3-4477-80b8-cbcd6e58ab40", "rel": "self"}, {"href": "http://10.63.165.30:8776/99600daa104f4be0b0860a9358ec6df2/shares/26d18481-1ce3-4477-80b8-cbcd6e58ab40", "rel": "bookmark"}], "availability_zone": "nova", "snapshot_id": null, "id": "26d18481-1ce3-4477-80b8-cbcd6e58ab40", "size": 1, "name": null, "share_type": "NFS", "created_at": "2013-04-05T11:03:52.000000", "export_location": "10.63.165.30:/opt/stack/data/cinder/mnt/share-26d18481-1ce3-4477-80b8-cbcd6e58ab40"}}
Allow access to share:
cinder share-allow <share_id> <access_type> <access_to>
Note: access_type and access_to depends on the backend.
Request:
POST /v1/<tenant_id>/shares/<share_id>/action
Body: {"os-allow_access": {"access_type": "ip", "access_to": "10.0.0.0"}}
Successful response code: 202
Response body: None
List share access rules:
cinder share-access-list <share_id>
Request:
POST /v1/<tenant_id>/shares/<share_id>/action Body: {"os-access_list": null}
Successful response code: 200
Response body:
{u'access_list': [{u'state': u'active', u'id': u'fd5095f0-173f-46b1-93dd-faa8500dd1bd', u'access_type': u'ip', u'access_to': u'10.0.0.0'}]}
Deny access to share:
cinder share-deny <share_id> <access_rule_id>
Request:
POST /v1/<tenant_id>/shares/<share_id>/action
Body: {"os-deny_access": {"access_id": "fd5095f0-173f-46b1-93dd-faa8500dd1bd"}}
Successful response code: 202
Response body: None
Create snapshot from share:
cinder snapshot-create [--force <True|False>] [--display_name <display_name>] [--display_description <display_description>] <volume_id>
Request:
POST /v1/<tenant_id>/share-snapshots
Body: {"share-snapshot": {"share_id": "26d18481-1ce3-4477-80b8-cbcd6e58ab40"}}
Successful response code: 200
Response body:
{'share-snapshot': {'id': 'a4a6ec00-3aac-4ce1-b396-aa815280893e', 'links': [{'href': 'http://10.63.165.30:8776/v1/99600daa104f4be0b0860a9358ec6df2/share-snapshots/a4a6ec00-3aac-4ce1-b396-aa815280893e', 'rel': 'self'}, {'href': 'http://10.63.165.30:8776/99600daa104f4be0b0860a9358ec6df2/share-snapshots/a4a6ec00-3aac-4ce1-b396-aa815280893e', 'rel': 'bookmark'}], 'name': None}}
Snapshot delete:
cinder snapshot-delete <snapshot_id>
Request:
DELETE /v1/<tenant_id>/share-snapshots/<snapshot_id> POST /v1/<tenant_id>/snapshots
Body: {"share-snapshot": {"share_id": "26d18481-1ce3-4477-80b8-cbcd6e58ab40"}}
Successful response code: 200
Response body: None
Snapshots list:
cinder snapshot-list
Request:
GET /v1/<tenant_id>/share-snapshots
Body: None
Successful response code: 200
Response body:
{"share-snapshots": [{"id": "a4a6ec00-3aac-4ce1-b396-aa815280893e", "links": [{"href": "http://10.63.165.30:8776/v1/99600daa104f4be0b0860a9358ec6df2/share-snapshots/a4a6ec00-3aac-4ce1-b396-aa815280893e", "rel": "self"}, {"href": "http://10.63.165.30:8776/99600daa104f4be0b0860a9358ec6df2/share-snapshots/a4a6ec00-3aac-4ce1-b396-aa815280893e", "rel": "bookmark"}], "name": null}]}