Remove microversions from document versions
This PS removes microversions from document versions because no services use microversions and microversioning for documents isn't supported in Deckhand. Change-Id: I3635d15513a2c7b8154ec6be4d0b8577e7d4ce3d
This commit is contained in:
parent
e0fc59e89b
commit
4e796ed30a
|
@ -36,13 +36,9 @@ _SUPPORTED_SCHEMA_VERSIONS = ('v1',)
|
|||
|
||||
|
||||
def _get_schema_parts(document, schema_key='schema'):
|
||||
# TODO(fmontei): Remove this function once documents have been standardized
|
||||
# around macroversions or microversions.
|
||||
schema_parts = utils.jsonpath_parse(document, schema_key).split('/')
|
||||
schema_prefix = '/'.join(schema_parts[:2])
|
||||
schema_version = schema_parts[2]
|
||||
if schema_version.endswith('.0'):
|
||||
schema_version = schema_version[:-2]
|
||||
return schema_prefix, schema_version
|
||||
|
||||
|
||||
|
@ -83,7 +79,7 @@ class BaseValidator(object):
|
|||
"""
|
||||
|
||||
_supported_versions = ('v1',)
|
||||
_schema_re = re.compile(r'^[a-zA-Z]+\/[a-zA-Z]+\/v\d+(.0)?$')
|
||||
_schema_re = re.compile(r'^[a-zA-Z]+\/[a-zA-Z]+\/v\d+$')
|
||||
|
||||
def __init__(self):
|
||||
global _DEFAULT_SCHEMAS
|
||||
|
|
|
@ -22,16 +22,16 @@ data:
|
|||
properties:
|
||||
schema:
|
||||
type: string
|
||||
pattern: ^[A-Za-z]+/[A-Za-z]+/v\d+(.0)?$
|
||||
pattern: ^[A-Za-z]+/[A-Za-z]+/v\d+$
|
||||
metadata:
|
||||
type: object
|
||||
properties:
|
||||
schema:
|
||||
anyOf:
|
||||
- type: string
|
||||
pattern: ^metadata/Document/v\d+(.0)?$
|
||||
pattern: ^metadata/Document/v\d+$
|
||||
- type: string
|
||||
pattern: ^metadata/Control/v\d+(.0)?$
|
||||
pattern: ^metadata/Control/v\d+$
|
||||
name:
|
||||
type: string
|
||||
labels:
|
||||
|
@ -82,7 +82,7 @@ data:
|
|||
properties:
|
||||
schema:
|
||||
type: string
|
||||
pattern: ^[A-Za-z]+/[A-Za-z]+/v\d+(.0)?$
|
||||
pattern: ^[A-Za-z]+/[A-Za-z]+/v\d+$
|
||||
name:
|
||||
type: string
|
||||
path:
|
||||
|
|
|
@ -27,8 +27,6 @@ DOCUMENT_TEST_SCHEMA = 'example/Kind/v1'
|
|||
|
||||
@six.add_metaclass(abc.ABCMeta)
|
||||
class DeckhandFactory(object):
|
||||
# TODO(fmontei): Allow this to be overridden in ``__init__``.
|
||||
API_VERSION = '1.0'
|
||||
|
||||
@abc.abstractmethod
|
||||
def gen_test(self, *args, **kwargs):
|
||||
|
@ -92,13 +90,13 @@ class DocumentFactory(DeckhandFactory):
|
|||
},
|
||||
"metadata": {
|
||||
"name": "placeholder",
|
||||
"schema": "metadata/Control/v%s" % DeckhandFactory.API_VERSION,
|
||||
"schema": "metadata/Control/v1",
|
||||
"layeringDefinition": {
|
||||
"abstract": False,
|
||||
"layer": ""
|
||||
}
|
||||
},
|
||||
"schema": "deckhand/LayeringPolicy/v%s" % DeckhandFactory.API_VERSION
|
||||
"schema": "deckhand/LayeringPolicy/v1"
|
||||
}
|
||||
|
||||
DOCUMENT_TEMPLATE = {
|
||||
|
@ -111,7 +109,7 @@ class DocumentFactory(DeckhandFactory):
|
|||
"actions": []
|
||||
},
|
||||
"name": "",
|
||||
"schema": "metadata/Document/v%s" % DeckhandFactory.API_VERSION
|
||||
"schema": "metadata/Document/v1"
|
||||
},
|
||||
"schema": DOCUMENT_TEST_SCHEMA
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
schema: deckhand/Certificate/v1.0
|
||||
schema: deckhand/Certificate/v1
|
||||
metadata:
|
||||
schema: metadata/Document/v1.0
|
||||
schema: metadata/Document/v1
|
||||
name: application-api
|
||||
storagePolicy: cleartext
|
||||
layeringDefinition:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
schema: deckhand/CertificateAuthority/v1.0
|
||||
schema: deckhand/CertificateAuthority/v1
|
||||
metadata:
|
||||
schema: metadata/Document/v1.0
|
||||
schema: metadata/Document/v1
|
||||
name: application-api
|
||||
storagePolicy: cleartext
|
||||
layeringDefinition:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
schema: deckhand/CertificateAuthorityKey/v1.0
|
||||
schema: deckhand/CertificateAuthorityKey/v1
|
||||
metadata:
|
||||
schema: metadata/Document/v1.0
|
||||
schema: metadata/Document/v1
|
||||
name: application-api
|
||||
storagePolicy: cleartext
|
||||
layeringDefinition:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
schema: deckhand/CertificateKey/v1.0
|
||||
schema: deckhand/CertificateKey/v1
|
||||
metadata:
|
||||
schema: metadata/Document/v1.0
|
||||
schema: metadata/Document/v1
|
||||
name: application-api
|
||||
storagePolicy: encrypted
|
||||
layeringDefinition:
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
---
|
||||
schema: deckhand/DataSchema/v1.0 # This specifies the official JSON schema meta-schema.
|
||||
schema: deckhand/DataSchema/v1
|
||||
metadata:
|
||||
schema: metadata/Control/v1.0
|
||||
name: promenade/Node/v1.0 # Specifies the documents to be used for validation.
|
||||
schema: metadata/Control/v1
|
||||
name: promenade/Node/v1
|
||||
labels:
|
||||
application: promenade
|
||||
layeringDefinition:
|
||||
abstract: False
|
||||
layer: site
|
||||
data: # Valid JSON Schema is expected here.
|
||||
data:
|
||||
$schema: http://blah
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# Sample YAML file for testing forward replacement.
|
||||
---
|
||||
schema: promenade/ResourceType/v1.0
|
||||
schema: promenade/ResourceType/v1
|
||||
metadata:
|
||||
schema: metadata/Document/v1.0
|
||||
schema: metadata/Document/v1
|
||||
name: a-unique-config-name-12345
|
||||
labels:
|
||||
component: apiserver
|
||||
|
@ -22,20 +22,20 @@ metadata:
|
|||
- dest:
|
||||
path: .chart.values.tls.certificate
|
||||
src:
|
||||
schema: deckhand/Certificate/v1.0
|
||||
schema: deckhand/Certificate/v1
|
||||
name: example-cert
|
||||
path: .
|
||||
- dest:
|
||||
path: .chart.values.tls.key
|
||||
src:
|
||||
schema: deckhand/CertificateKey/v1.0
|
||||
schema: deckhand/CertificateKey/v1
|
||||
name: example-key
|
||||
path: .
|
||||
- dest:
|
||||
path: .chart.values.some_url
|
||||
pattern: INSERT_[A-Z]+_HERE
|
||||
src:
|
||||
schema: deckhand/Passphrase/v1.0
|
||||
schema: deckhand/Passphrase/v1
|
||||
name: example-password
|
||||
path: .
|
||||
data:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
schema: armada/Manifest/v1.0
|
||||
schema: armada/Manifest/v1
|
||||
metadata:
|
||||
schema: metadata/Document/v1.0
|
||||
schema: metadata/Document/v1
|
||||
name: cluster-bootstrap
|
||||
layeringDefinition:
|
||||
abstract: false
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# Sample layering policy.
|
||||
---
|
||||
schema: deckhand/LayeringPolicy/v1.0
|
||||
schema: deckhand/LayeringPolicy/v1
|
||||
metadata:
|
||||
schema: metadata/Control/v1.0
|
||||
schema: metadata/Control/v1
|
||||
name: a-unique-config-name-12345
|
||||
layeringDefinition:
|
||||
abstract: False
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
schema: deckhand/Passphrase/v1.0
|
||||
schema: deckhand/Passphrase/v1
|
||||
metadata:
|
||||
schema: metadata/Document/v1.0
|
||||
schema: metadata/Document/v1
|
||||
name: application-admin-password
|
||||
storagePolicy: encrypted
|
||||
layeringDefinition:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
schema: deckhand/PrivateKey/v1.0
|
||||
schema: deckhand/PrivateKey/v1
|
||||
metadata:
|
||||
schema: metadata/Document/v1.0
|
||||
schema: metadata/Document/v1
|
||||
name: application-private-password
|
||||
storagePolicy: encrypted
|
||||
layeringDefinition:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
schema: deckhand/PublicKey/v1.0
|
||||
schema: deckhand/PublicKey/v1
|
||||
metadata:
|
||||
schema: metadata/Document/v1.0
|
||||
schema: metadata/Document/v1
|
||||
name: application-public-password
|
||||
storagePolicy: encrypted
|
||||
layeringDefinition:
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# Sample post-validation policy document.
|
||||
---
|
||||
schema: deckhand/ValidationPolicy/v1.0
|
||||
schema: deckhand/ValidationPolicy/v1
|
||||
metadata:
|
||||
schema: metadata/Control/v1.0
|
||||
schema: metadata/Control/v1
|
||||
name: later-validation
|
||||
layeringDefinition:
|
||||
abstract: False
|
||||
|
|
|
@ -222,16 +222,6 @@ def multisort(data, sort_by=None, order_by=None):
|
|||
reverse=True if order_by == 'desc' else False)
|
||||
|
||||
|
||||
def _add_microversion(value):
|
||||
"""Hack for coercing all Deckhand schema fields (``schema`` and
|
||||
``metadata.schema``) into ending with v1.0 rather than v1, for example.
|
||||
"""
|
||||
microversion_re = r'^.*/.*/v[1-9]\d*$'
|
||||
if re.match(value, microversion_re):
|
||||
return value + '.0'
|
||||
return value
|
||||
|
||||
|
||||
def deepfilter(dct, **filters):
|
||||
"""Match ``dct`` against all the filters in ``filters``.
|
||||
|
||||
|
@ -297,8 +287,6 @@ def deepfilter(dct, **filters):
|
|||
filter_val = _transform_filter_bool(filter_val)
|
||||
|
||||
if filter_key in ['schema', 'metadata.schema']:
|
||||
actual_val = _add_microversion(actual_val)
|
||||
filter_val = _add_microversion(filter_val)
|
||||
parts = actual_val.split('/')[:2]
|
||||
if len(parts) == 2:
|
||||
actual_namespace, actual_kind = parts
|
||||
|
|
|
@ -89,9 +89,9 @@ the client managers' functionality:
|
|||
# Generate a sample document.
|
||||
payload = """
|
||||
---
|
||||
schema: deckhand/Certificate/v1.0
|
||||
schema: deckhand/Certificate/v1
|
||||
metadata:
|
||||
schema: metadata/Document/v1.0
|
||||
schema: metadata/Document/v1
|
||||
name: application-api
|
||||
storagePolicy: cleartext
|
||||
data: |-
|
||||
|
@ -112,10 +112,10 @@ the client managers' functionality:
|
|||
# Convert the response to a dictionary.
|
||||
>>> result.to_dict()
|
||||
{'status': {'bucket': 'mop', 'revision': 1},
|
||||
'schema': 'deckhand/Certificate/v1.0', 'data': {...} 'id': 1,
|
||||
'schema': 'deckhand/Certificate/v1', 'data': {...} 'id': 1,
|
||||
'metadata': {'layeringDefinition': {'abstract': False},
|
||||
'storagePolicy': 'cleartext', 'name': 'application-api',
|
||||
'schema': 'metadata/Document/v1.0'}}
|
||||
'schema': 'metadata/Document/v1'}}
|
||||
|
||||
# Show the revision that was created.
|
||||
revision = client.revisions.get(1)
|
||||
|
@ -138,10 +138,10 @@ the client managers' functionality:
|
|||
|
||||
>>> [r.to_dict() for r in raw_documents]
|
||||
[{'status': {'bucket': 'foo', 'revision': 1},
|
||||
'schema': 'deckhand/Certificate/v1.0', 'data': {...}, 'id': 1,
|
||||
'schema': 'deckhand/Certificate/v1', 'data': {...}, 'id': 1,
|
||||
'metadata': {'layeringDefinition': {'abstract': False},
|
||||
'storagePolicy': 'cleartext', 'name': 'application-api',
|
||||
'schema': 'metadata/Document/v1.0'}}]
|
||||
'schema': 'metadata/Document/v1'}}]
|
||||
|
||||
Client Reference
|
||||
----------------
|
||||
|
|
Loading…
Reference in New Issue