Difference between revisions of "Manila/design/manila-liberty-consistency-groups/api-schema"
Alex Meade (talk | contribs) m (→Simple CG Snapshot) |
Alex Meade (talk | contribs) m (→Request schemas) |
||
| Line 175: | Line 175: | ||
== POST /os-consistency-groups == | == POST /os-consistency-groups == | ||
| − | + | { "consistency_group" { | |
"$schema": "http://json-schema.org/draft-04/schema#", | "$schema": "http://json-schema.org/draft-04/schema#", | ||
"title": "Consistency Group (CG)", | "title": "Consistency Group (CG)", | ||
| Line 201: | Line 201: | ||
"required": [] | "required": [] | ||
} | } | ||
| + | } | ||
| − | Response: detailed CG | + | Response: |
| + | {'consistency_group": detailed CG} | ||
== GET /os-consistency-groups == | == GET /os-consistency-groups == | ||
| − | Response: Simple CG | + | Response: |
| + | {'consistency_groups": [Simple CG]} | ||
== GET /os-consistency-groups/detail == | == GET /os-consistency-groups/detail == | ||
| − | Response: Detailed CG | + | Response: |
| + | {'consistency_groups": [Detailed CG]} | ||
== GET /os-consistency-groups/<id> == | == GET /os-consistency-groups/<id> == | ||
| − | Response: Detailed CG | + | Response: {'consistency_group": Detailed CG} |
| Line 233: | Line 237: | ||
} | } | ||
| − | Response: Detailed CG | + | Response: {'consistency_group": Detailed CG} |
== POST /os-cgsnapshots == | == POST /os-cgsnapshots == | ||
| − | { | + | {'cgsnapshot": { |
"$schema": "http://json-schema.org/draft-04/schema#", | "$schema": "http://json-schema.org/draft-04/schema#", | ||
"title": "Consistency Group Snapshot", | "title": "Consistency Group Snapshot", | ||
| Line 257: | Line 261: | ||
}, | }, | ||
"required": ['consistency_group_id'] | "required": ['consistency_group_id'] | ||
| − | } | + | }} |
| − | + | Response: {'cgsnapshot": detailed CGSnapshot} | |
| − | Response: detailed CGSnapshot | ||
== PUT /os-cgsnapshots/<id> == | == PUT /os-cgsnapshots/<id> == | ||
| Line 280: | Line 283: | ||
} | } | ||
| − | Response: Detailed CGSnapshot | + | Response: {'cgsnapshot": Detailed CGSnapshot} |
Revision as of 17:06, 6 August 2015
Contents
Resource schemas
Simple CG
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Consistency Group (CG)",
"description": "A resource representing a group of shares that can be snapshotted in unison",
"type": "object",
"properties": {
"id": {
"description": "The unique identifier for a product",
"type": "integer"
},
"name": {
"description": "A non-unique name for a CG",
"type": "string"
},
},
"required": ["id", "name"]
}
Detailed CG
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Consistency Group (CG)",
"description": "A resource representing a group of shares that can be snapshotted in unison",
"type": "object",
"properties": {
"id": {
"description": "The unique identifier for a product",
"type": "integer",
'pattern': ('^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}'
'-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$'),
},
"name": {
"description": "A non-unique name for a CG",
"type": "string",
'maxLength': 255,
},
"description": {
"description": "A short description of the CG",
"type": "string"
},
"created_at": {
"description": "The time at which the CG was created",
"type": "string"
},
"status": {
"description": "Status of the CG",
"type": "string",
"enum": ["creating", "available", "deleting", "error"]
},
"project_id": {
"description": "The owner of the CG",
"type": "string"
},
"host": {
"description": "The backend where the CG lives",
"type": "string"
},
"source_cgsnapshot_id": {
"description": "The uuid of the cgsnapshot from which this CG was created.",
"type": ['null', 'string'],
},
"share_types": {
"description": "The share types that shares in the CG are allowed to be a part of",
"type": "array",
"items": {
"type": "string"
},
},
},
"required": ["id", "name", "description", "created_at", "status", "project_id", "host"]
}
Simple CG Snapshot
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Consistency Group Snapshot",
"description": "A resource representing a snapshot of a group of shares",
"type": "object",
"properties": {
"id": {
"description": "The unique identifier for a product",
"type": "string",
'pattern': ('^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}'
'-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$'),
},
"name": {
"description": "A non-unique name for a CGsnapshot",
"type": "string"
},
},
"required": ["id", "name"]
}
Detailed CG Snapshot
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Consistency Group Snapshot",
"description": "A resource representing a snapshot of a group of shares",
"type": "object",
"properties": {
"id": {
"description": "The unique identifier for a product",
"type": "string",
'pattern': ('^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}'
'-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$'),
},
"name": {
"description": "A non-unique name for a CG snapshot",
"type": "string",
'maxLength': 255,
},
"description": {
"description": "A short description of the CG snapshot",
"type": "string"
},
"created_at": {
"description": "The time at which the CG snapshot was created",
"type": "string"
},
"status": {
"description": "Status of the CG snapshot",
"type": "string",
"enum": ["creating", "available", "deleting", "error"]
},
"project_id": {
"description": "The owner of the CG snapshot",
"type": "string"
},
"consistency_group_id": {
"description": "The uuid of the consistency group from which this CG snapshot was created.",
"type": ['null', 'string'],
'pattern': ('^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}'
'-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$'),
},
},
"required": ["id", "name", "description", "created_at", "status", "project_id", "host"]
}
CG Snapshot member
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Consistency Group Snapshot Member",
"description": "A resource representing a member of a CGSnapshot",
"type": "object",
"properties": {
"id": {
"description": "The unique identifier for a product",
"type": "string",
'pattern': ('^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}'
'-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$'),
},
"cgsnapshot_id": {
"description": "The unique identifier for the parent cg_snapshot",
"type": "string",
'pattern': ('^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}'
'-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$'),
},
"share_id": {
"description": "The unique identifier for the share this snapshot was created from.",
"type": "string",
'pattern': ('^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}'
'-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$'),
},
},
}
Request schemas
POST /os-consistency-groups
{ "consistency_group" {
"$schema": "http://json-schema.org/draft-04/schema#", "title": "Consistency Group (CG)", "description": "A resource representing a group of shares that can be snapshotted in unison", "type": "object", "properties": { "name": { "description": "A non-unique name for a CG", "type": "string", 'maxLength': 255, }, "description": { "description": "A short description of the CG", "type": "string" }, "source_cgsnapshot_id": { "description": "The uuid of the cgsnapshot from which this CG was created. Cannot be supplied when 'share_types' is provided.", "type": ['null', 'string'], }, "share_types": { "description": "The share types that shares in the CG are allowed to be a part of. Cannot be supplied when 'source_cgsnapshot_id' is provided.", "type": "string" }, }, "required": [] }
}
Response:
{'consistency_group": detailed CG}
GET /os-consistency-groups
Response:
{'consistency_groups": [Simple CG]}
GET /os-consistency-groups/detail
Response:
{'consistency_groups": [Detailed CG]}
GET /os-consistency-groups/<id>
Response: {'consistency_group": Detailed CG}
PUT /os-consistency-groups/<id>
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Consistency Group (CG)",
"description": "A resource representing a group of shares that can be snapshotted in unison",
"type": "object",
"properties": {
"name": {
"description": "A non-unique name for a CG",
"type": "string",
'maxLength': 255,
},
"description": {
"description": "A short description of the CG",
"type": "string"
},
"required": []
}
Response: {'consistency_group": Detailed CG}
POST /os-cgsnapshots
{'cgsnapshot": {
"$schema": "http://json-schema.org/draft-04/schema#", "title": "Consistency Group Snapshot", "description": "A resource representing a snapshot of a group of shares", "type": "object", "properties": { "name": { "description": "A non-unique name for a CG", "type": "string", 'maxLength': 255, }, "description": { "description": "A short description of the CG", "type": "string" }, "consistency_group_id": { "description": "The uuid of the CG from which to create this CG snapshot.", "type": 'string', }, }, "required": ['consistency_group_id'] }} Response: {'cgsnapshot": detailed CGSnapshot}
PUT /os-cgsnapshots/<id>
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Consistency Group Snapshot",
"description": "A resource representing a snapshot of a group of shares",
"type": "object",
"properties": {
"name": {
"description": "A non-unique name for a CG",
"type": "string",
'maxLength': 255,
},
"description": {
"description": "A short description of the CG",
"type": "string"
},
"required": []
}
Response: {'cgsnapshot": Detailed CGSnapshot}