Difference between revisions of "API Special Interest Group/Current Design/Metadata"
(Analysis and Current Design) |
(CRUD) |
||
Line 11: | Line 11: | ||
} | } | ||
</nowiki></pre> | </nowiki></pre> | ||
+ | |||
+ | There doesn't seem to be a strong consensus about how the metadata is CRUDed. | ||
The outliers are Orchestration's Software Configuration metadata which seems to describe a concept different from the other services notion of metadata and Object Storage's metadata which does everything with headers. | The outliers are Orchestration's Software Configuration metadata which seems to describe a concept different from the other services notion of metadata and Object Storage's metadata which does everything with headers. | ||
Line 28: | Line 30: | ||
} | } | ||
</nowiki></pre> | </nowiki></pre> | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Method !! Path !! Description | ||
+ | |- | ||
+ | | GET || /v2/{tenant_id}/servers/{server_id}/metadata || Show server metadata | ||
+ | |- | ||
+ | | PUT || /v2/{tenant_id}/servers/{server_id}/metadata || Create or replace server metadata items | ||
+ | |- | ||
+ | | POST || /v2/{tenant_id}/servers/{server_id}/metadata || Update server metadata items | ||
+ | |- | ||
+ | | GET || /v2/{tenant_id}/servers/{server_id}/metadata/{key} || Show server metadata item details | ||
+ | |- | ||
+ | | PUT || /v2/{tenant_id}/servers/{server_id}/metadata/{key} || Create or update server metadata item | ||
+ | |- | ||
+ | | DELETE || /v2/{tenant_id}/servers/{server_id}/metadata/{key} || Delete server metadata item | ||
+ | |} | ||
== Snapshot == | == Snapshot == | ||
Line 40: | Line 59: | ||
} | } | ||
</nowiki></pre> | </nowiki></pre> | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Method !! Path !! Description | ||
+ | |- | ||
+ | | GET || /v2/{tenant_id}/snapshots/{snapshot_id}/metadata || Show snapshot metadata | ||
+ | |- | ||
+ | | PUT || /v2/{tenant_id}/snapshots/{snapshot_id}/metadata || Update snapshot metadata | ||
+ | One or more metadata key and value pairs to set or unset for the snapshot.<br> | ||
+ | To unset a metadata key value, specify only the key name.<br> | ||
+ | To set a metadata key value, specify the key and value pair. | ||
+ | |} | ||
== Stack == | == Stack == | ||
Line 53: | Line 84: | ||
} | } | ||
</nowiki></pre> | </nowiki></pre> | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Method !! Path !! Description | ||
+ | |- | ||
+ | | GET || /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources/{resource_name}/metadata || Show resource metadata | ||
+ | |} | ||
== Software Configuration == | == Software Configuration == | ||
Line 186: | Line 224: | ||
} | } | ||
</nowiki></pre> | </nowiki></pre> | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Method !! Path !! Description | ||
+ | |- | ||
+ | | GET || /v1/{tenant_id}/software_deployments/metadata/{server_id} || Show server configuration metadata | ||
+ | |} | ||
+ | |||
== Container == | == Container == | ||
Line 195: | Line 241: | ||
X-Container-Meta-Author: SamuelClemens | X-Container-Meta-Author: SamuelClemens | ||
</nowiki></pre> | </nowiki></pre> | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Method !! Path !! Description | ||
+ | |- | ||
+ | | POST || /v1/{account}/{container} || Create, update, or delete container metadata | ||
+ | |- | ||
+ | | HEAD || /v1/{account}/{container} || Show container metadata | ||
+ | |} |
Revision as of 04:02, 19 December 2014
Contents
Analysis
When a service has a metadata resource it typically takes the form of
{ "metadata": { "key1": "value1", "key2": "value2" } }
There doesn't seem to be a strong consensus about how the metadata is CRUDed.
The outliers are Orchestration's Software Configuration metadata which seems to describe a concept different from the other services notion of metadata and Object Storage's metadata which does everything with headers.
Current Design
Server
http://developer.openstack.org/api-ref-compute-v2.html#compute_server_metadata
{ "metadata": { "name": "test_server", "server_type": "test" } }
Method | Path | Description |
---|---|---|
GET | /v2/{tenant_id}/servers/{server_id}/metadata | Show server metadata |
PUT | /v2/{tenant_id}/servers/{server_id}/metadata | Create or replace server metadata items |
POST | /v2/{tenant_id}/servers/{server_id}/metadata | Update server metadata items |
GET | /v2/{tenant_id}/servers/{server_id}/metadata/{key} | Show server metadata item details |
PUT | /v2/{tenant_id}/servers/{server_id}/metadata/{key} | Create or update server metadata item |
DELETE | /v2/{tenant_id}/servers/{server_id}/metadata/{key} | Delete server metadata item |
Snapshot
http://developer.openstack.org/api-ref-blockstorage-v2.html#snapshots-v2
{ "metadata": { "key": "v2" } }
Method | Path | Description |
---|---|---|
GET | /v2/{tenant_id}/snapshots/{snapshot_id}/metadata | Show snapshot metadata |
PUT | /v2/{tenant_id}/snapshots/{snapshot_id}/metadata | Update snapshot metadata
One or more metadata key and value pairs to set or unset for the snapshot. |
Stack
http://developer.openstack.org/api-ref-orchestration-v1.html#stack-resources
{ "metadata": { "some_key": "some_value", "some_other_key": "some_other_value" } }
Method | Path | Description |
---|---|---|
GET | /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources/{resource_name}/metadata | Show resource metadata |
Software Configuration
http://developer.openstack.org/api-ref-orchestration-v1.html#software-config
{ "metadata": [ { "inputs": [ { "default": null, "type": "String", "name": "foo", "value": "fooooo", "description": null }, { "default": null, "type": "String", "name": "bar", "value": "baaaaa", "description": null }, { "type": "String", "name": "deploy_server_id", "value": "ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5", "description": "ID of the server being deployed to" }, { "type": "String", "name": "deploy_action", "value": "CREATE", "description": "Name of the current action being deployed" }, { "type": "String", "name": "deploy_stack_id", "value": "a/9bd57090-8954-48ab-bab9-adf9e1ac70fc", "description": "ID of the stack this deployment belongs to" }, { "type": "String", "name": "deploy_resource_name", "value": "deployment", "description": "Name of this deployment resource in the stack" }, { "type": "String", "name": "deploy_signal_id", "value": "http://192.168.20.103:8000/v1/signal/arn%3Aopenstack%3Aheat%3A%3Ae2a84fbdaeb047ae8da4b503f3b69f1f%3Astacks%2Fa%2F9bd57090-8954-48ab-bab9-adf9e1ac70fc%2Fresources%2Fdeployment?Timestamp=2014-03-19T20%3A30%3A59Z&SignatureMethod=HmacSHA256&AWSAccessKeyId=ca3571413e4a49998d580215517b3685&SignatureVersion=2&Signature=w6Iu%2BNbg86mqwSOUf1GLuKPO7KaD82PiGpL4ig9Q1l4%3D", "description": "ID of signal to use for signalling output values" } ], "group": "script", "name": "a-config-we5zpvyu7b5o", "outputs": [ { "type": "String", "name": "result", "error_output": false, "description": null } ], "options": null, "config": "#!/bin/sh -x\necho \"Writing to /tmp/$bar\"\necho $foo > /tmp/$bar\necho -n \"The file /tmp/$bar contains `cat /tmp/$bar` for server $deploy_server_id during $deploy_action\" > $heat_outputs_path.result\necho \"Written to /tmp/$bar\"\necho \"Output to stderr\" 1>&2", "id": "3d5ec2a8-7004-43b6-a7f6-542bdbe9d434" }, { "inputs": [ { "default": null, "type": "String", "name": "foo", "value": "fu", "description": null }, { "default": null, "type": "String", "name": "bar", "value": "barmy", "description": null }, { "type": "String", "name": "deploy_server_id", "value": "ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5", "description": "ID of the server being deployed to" }, { "type": "String", "name": "deploy_action", "value": "CREATE", "description": "Name of the current action being deployed" }, { "type": "String", "name": "deploy_stack_id", "value": "a/9bd57090-8954-48ab-bab9-adf9e1ac70fc", "description": "ID of the stack this deployment belongs to" }, { "type": "String", "name": "deploy_resource_name", "value": "other_deployment", "description": "Name of this deployment resource in the stack" }, { "type": "String", "name": "deploy_signal_id", "value": "http://192.168.20.103:8000/v1/signal/arn%3Aopenstack%3Aheat%3A%3Ae2a84fbdaeb047ae8da4b503f3b69f1f%3Astacks%2Fa%2F9bd57090-8954-48ab-bab9-adf9e1ac70fc%2Fresources%2Fother_deployment?Timestamp=2014-03-19T20%3A30%3A59Z&SignatureMethod=HmacSHA256&AWSAccessKeyId=7b761482f8254946bcd3d5ccb36fe939&SignatureVersion=2&Signature=giMfv%2BhrAw6y%2FCMKQIQz2IhO5PkAj5%2BfP5YsL6rul3o%3D", "description": "ID of signal to use for signalling output values" } ], "group": "script", "name": "a-config-we5zpvyu7b5o", "outputs": [ { "type": "String", "name": "result", "error_output": false, "description": null } ], "options": null, "config": "#!/bin/sh -x\necho \"Writing to /tmp/$bar\"\necho $foo > /tmp/$bar\necho -n \"The file /tmp/$bar contains `cat /tmp/$bar` for server $deploy_server_id during $deploy_action\" > $heat_outputs_path.result\necho \"Written to /tmp/$bar\"\necho \"Output to stderr\" 1>&2", "id": "8da95794-2ad9-4979-8ae5-739ce314c5cd" } ] }
Method | Path | Description |
---|---|---|
GET | /v1/{tenant_id}/software_deployments/metadata/{server_id} | Show server configuration metadata |
Container
http://developer.openstack.org/api-ref-objectstorage-v1.html#storage_container_services
HTTP/1.1 204 No Content X-Container-Meta-Author: SamuelClemens
Method | Path | Description |
---|---|---|
POST | /v1/{account}/{container} | Create, update, or delete container metadata |
HEAD | /v1/{account}/{container} | Show container metadata |