Add 'annotations' to capsule API
Implements: blueprint add-annotations-to-capsule Change-Id: Ibf3f801596c3a768b05fca9ccbef555ddba319af
This commit is contained in:
parent
2bf646e9bd
commit
0492c35723
@ -28,7 +28,7 @@
|
|||||||
test-config:
|
test-config:
|
||||||
$TEMPEST_CONFIG:
|
$TEMPEST_CONFIG:
|
||||||
container_service:
|
container_service:
|
||||||
min_microversion: 1.37
|
min_microversion: 1.38
|
||||||
post-config:
|
post-config:
|
||||||
$ZUN_CONF:
|
$ZUN_CONF:
|
||||||
docker:
|
docker:
|
||||||
|
@ -43,6 +43,7 @@ Capsule Template
|
|||||||
- metadata: capsule-metadata-request
|
- metadata: capsule-metadata-request
|
||||||
- metadata.labels: capsule-labels-request
|
- metadata.labels: capsule-labels-request
|
||||||
- metadata.name: capsule-name-request
|
- metadata.name: capsule-name-request
|
||||||
|
- metadata.annotations: capsule-annotations-request
|
||||||
- spec: capsule-spec-request
|
- spec: capsule-spec-request
|
||||||
|
|
||||||
.. _create-capsule-spec:
|
.. _create-capsule-spec:
|
||||||
@ -114,6 +115,7 @@ Capsule
|
|||||||
- uuid: capsule-uuid
|
- uuid: capsule-uuid
|
||||||
- name: capsule-name
|
- name: capsule-name
|
||||||
- labels: capsule-labels
|
- labels: capsule-labels
|
||||||
|
- annotations: capsule-annotations
|
||||||
- restart_policy: capsule-restart_policy
|
- restart_policy: capsule-restart_policy
|
||||||
- created_at: created_at
|
- created_at: created_at
|
||||||
- updated_at: updated_at
|
- updated_at: updated_at
|
||||||
@ -206,6 +208,7 @@ Capsule
|
|||||||
- uuid: capsule-uuid
|
- uuid: capsule-uuid
|
||||||
- name: capsule-name
|
- name: capsule-name
|
||||||
- labels: capsule-labels
|
- labels: capsule-labels
|
||||||
|
- annotations: capsule-annotations
|
||||||
- restart_policy: capsule-restart_policy
|
- restart_policy: capsule-restart_policy
|
||||||
- created_at: created_at
|
- created_at: created_at
|
||||||
- updated_at: updated_at
|
- updated_at: updated_at
|
||||||
@ -301,6 +304,7 @@ Capsule
|
|||||||
- uuid: capsule-uuid
|
- uuid: capsule-uuid
|
||||||
- name: capsule-name
|
- name: capsule-name
|
||||||
- labels: capsule-labels
|
- labels: capsule-labels
|
||||||
|
- annotations: capsule-annotations
|
||||||
- restart_policy: capsule-restart_policy
|
- restart_policy: capsule-restart_policy
|
||||||
- created_at: created_at
|
- created_at: created_at
|
||||||
- updated_at: updated_at
|
- updated_at: updated_at
|
||||||
|
@ -327,6 +327,22 @@ capsule-addresses:
|
|||||||
IP address of the capsule. This includes both ipv4 and/or ipv6 addresses.
|
IP address of the capsule. This includes both ipv4 and/or ipv6 addresses.
|
||||||
in: body
|
in: body
|
||||||
required: true
|
required: true
|
||||||
|
capsule-annotations:
|
||||||
|
description: |
|
||||||
|
The annotations of the capsule.
|
||||||
|
Annotations is an unstructured key value map stored with a resource
|
||||||
|
that may be set by external tools to store and retrieve arbitrary metadata.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: object
|
||||||
|
capsule-annotations-request:
|
||||||
|
description: |
|
||||||
|
The annotations added to the capsule.
|
||||||
|
Annotations is an unstructured key value map stored with a resource
|
||||||
|
that may be set by external tools to store and retrieve arbitrary metadata.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: object
|
||||||
capsule-args-request:
|
capsule-args-request:
|
||||||
description: |
|
description: |
|
||||||
The arguments to the command.
|
The arguments to the command.
|
||||||
@ -466,14 +482,15 @@ capsule-memory:
|
|||||||
capsule-metadata-request:
|
capsule-metadata-request:
|
||||||
description: |
|
description: |
|
||||||
Capsule metadata in key-value format.
|
Capsule metadata in key-value format.
|
||||||
Keys can be ``name`` or ``labels``.
|
Keys can be ``name``, ``labels`` and ``annotations``.
|
||||||
An example format would look as follows:
|
An example format would look as follows:
|
||||||
|
|
||||||
.. code-block:: javascript
|
.. code-block:: javascript
|
||||||
|
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"labels": {"app": "web"},
|
"labels": {"app": "web"},
|
||||||
"name": "demo"
|
"name": "demo",
|
||||||
|
"annotations": {"key1": "value1"}
|
||||||
}
|
}
|
||||||
|
|
||||||
in: body
|
in: body
|
||||||
|
@ -70,7 +70,10 @@
|
|||||||
"labels": {
|
"labels": {
|
||||||
"app": "web"
|
"app": "web"
|
||||||
},
|
},
|
||||||
"name": "demo"
|
"name": "demo",
|
||||||
|
"annotations": {
|
||||||
|
"key1": "value1"
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -16,6 +16,9 @@
|
|||||||
"labels": {
|
"labels": {
|
||||||
"app": "web"
|
"app": "web"
|
||||||
},
|
},
|
||||||
|
"annotations": {
|
||||||
|
"key1": "value1"
|
||||||
|
},
|
||||||
"restart_policy": {
|
"restart_policy": {
|
||||||
"MaximumRetryCount": "0",
|
"MaximumRetryCount": "0",
|
||||||
"Name": "always"
|
"Name": "always"
|
||||||
|
@ -18,6 +18,9 @@
|
|||||||
"labels": {
|
"labels": {
|
||||||
"app": "web"
|
"app": "web"
|
||||||
},
|
},
|
||||||
|
"annotations": {
|
||||||
|
"key1": "value1"
|
||||||
|
},
|
||||||
"restart_policy": {
|
"restart_policy": {
|
||||||
"MaximumRetryCount": "0",
|
"MaximumRetryCount": "0",
|
||||||
"Name": "always"
|
"Name": "always"
|
||||||
|
@ -16,6 +16,9 @@
|
|||||||
"labels": {
|
"labels": {
|
||||||
"app": "web"
|
"app": "web"
|
||||||
},
|
},
|
||||||
|
"annotations": {
|
||||||
|
"key1": "value1"
|
||||||
|
},
|
||||||
"restart_policy": {
|
"restart_policy": {
|
||||||
"MaximumRetryCount": "0",
|
"MaximumRetryCount": "0",
|
||||||
"Name": "always"
|
"Name": "always"
|
||||||
|
@ -235,6 +235,7 @@ class CapsuleController(base.Controller):
|
|||||||
if metadata_info:
|
if metadata_info:
|
||||||
new_capsule.name = metadata_info.get('name', None)
|
new_capsule.name = metadata_info.get('name', None)
|
||||||
new_capsule.labels = metadata_info.get('labels', None)
|
new_capsule.labels = metadata_info.get('labels', None)
|
||||||
|
new_capsule.annotations = metadata_info.get('annotations', None)
|
||||||
|
|
||||||
# create the capsule in DB so that it generates a 'id'
|
# create the capsule in DB so that it generates a 'id'
|
||||||
new_capsule.save()
|
new_capsule.save()
|
||||||
|
@ -132,6 +132,10 @@ labels = {
|
|||||||
'type': ['object', 'null']
|
'type': ['object', 'null']
|
||||||
}
|
}
|
||||||
|
|
||||||
|
annotations = {
|
||||||
|
'type': ['object', 'null']
|
||||||
|
}
|
||||||
|
|
||||||
hints = {
|
hints = {
|
||||||
'type': ['object', 'null']
|
'type': ['object', 'null']
|
||||||
}
|
}
|
||||||
@ -373,6 +377,7 @@ capsule_metadata = {
|
|||||||
"type": ["object"],
|
"type": ["object"],
|
||||||
"properties": {
|
"properties": {
|
||||||
"labels": labels,
|
"labels": labels,
|
||||||
|
"annotations": annotations,
|
||||||
# use the same format as container name
|
# use the same format as container name
|
||||||
"name": container_name,
|
"name": container_name,
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,7 @@ _basic_keys = (
|
|||||||
'restart_policy',
|
'restart_policy',
|
||||||
'name',
|
'name',
|
||||||
'labels',
|
'labels',
|
||||||
|
'annotations',
|
||||||
'memory',
|
'memory',
|
||||||
'cpu',
|
'cpu',
|
||||||
'init_containers',
|
'init_containers',
|
||||||
|
@ -70,10 +70,11 @@ REST_API_VERSION_HISTORY = """REST API Version History:
|
|||||||
* 1.35 - Support exposing container ports in capsule
|
* 1.35 - Support exposing container ports in capsule
|
||||||
* 1.36 - Add 'tty' to container
|
* 1.36 - Add 'tty' to container
|
||||||
* 1.37 - Add 'tty' and 'stdin' to capsule
|
* 1.37 - Add 'tty' and 'stdin' to capsule
|
||||||
|
* 1.38 - Add 'annotations' to capsule
|
||||||
"""
|
"""
|
||||||
|
|
||||||
BASE_VER = '1.1'
|
BASE_VER = '1.1'
|
||||||
CURRENT_MAX_VER = '1.37'
|
CURRENT_MAX_VER = '1.38'
|
||||||
|
|
||||||
|
|
||||||
class Version(object):
|
class Version(object):
|
||||||
|
@ -287,3 +287,9 @@ user documentation.
|
|||||||
|
|
||||||
Add 'tty' and 'stdin' to capsule.
|
Add 'tty' and 'stdin' to capsule.
|
||||||
Containers in capsule can specify these two fields.
|
Containers in capsule can specify these two fields.
|
||||||
|
|
||||||
|
1.38
|
||||||
|
----
|
||||||
|
|
||||||
|
Add 'annotations' to capsule.
|
||||||
|
This field stores metadata of the capsule in key-value format.
|
||||||
|
@ -28,7 +28,7 @@ from zun.tests.unit.db import base
|
|||||||
|
|
||||||
|
|
||||||
PATH_PREFIX = '/v1'
|
PATH_PREFIX = '/v1'
|
||||||
CURRENT_VERSION = "container 1.36"
|
CURRENT_VERSION = "container 1.38"
|
||||||
|
|
||||||
|
|
||||||
class FunctionalTest(base.DbTestCase):
|
class FunctionalTest(base.DbTestCase):
|
||||||
|
@ -28,7 +28,7 @@ class TestRootController(api_base.FunctionalTest):
|
|||||||
'default_version':
|
'default_version':
|
||||||
{'id': 'v1',
|
{'id': 'v1',
|
||||||
'links': [{'href': 'http://localhost/v1/', 'rel': 'self'}],
|
'links': [{'href': 'http://localhost/v1/', 'rel': 'self'}],
|
||||||
'max_version': '1.37',
|
'max_version': '1.38',
|
||||||
'min_version': '1.1',
|
'min_version': '1.1',
|
||||||
'status': 'CURRENT'},
|
'status': 'CURRENT'},
|
||||||
'description': 'Zun is an OpenStack project which '
|
'description': 'Zun is an OpenStack project which '
|
||||||
@ -37,7 +37,7 @@ class TestRootController(api_base.FunctionalTest):
|
|||||||
'versions': [{'id': 'v1',
|
'versions': [{'id': 'v1',
|
||||||
'links': [{'href': 'http://localhost/v1/',
|
'links': [{'href': 'http://localhost/v1/',
|
||||||
'rel': 'self'}],
|
'rel': 'self'}],
|
||||||
'max_version': '1.37',
|
'max_version': '1.38',
|
||||||
'min_version': '1.1',
|
'min_version': '1.1',
|
||||||
'status': 'CURRENT'}]}
|
'status': 'CURRENT'}]}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user