Added formal 1.5 json schema for gating against.
Added formal 1.5 json schema to gate current guidelines against. Updated next json files to validate against schema, and updated next guideline schema version reference to 1.5, with syntax changes that fixed ambiguous empty content and duplication of data. Added tox jobs to lint and validate next json files. Change-Id: I13ee6b16115588527fde070e34874edf919aa864
This commit is contained in:
parent
119de667d2
commit
a7e844a057
313
doc/source/schema/1.5.json
Normal file
313
doc/source/schema/1.5.json
Normal file
@ -0,0 +1,313 @@
|
|||||||
|
{
|
||||||
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||||
|
"id": "http://git.openstack.org/cgit/openstack/defcore/doc/source/schema/1.5.json",
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"id",
|
||||||
|
"schema",
|
||||||
|
"reference",
|
||||||
|
"source",
|
||||||
|
"status",
|
||||||
|
"replaces",
|
||||||
|
"target_approval",
|
||||||
|
"releases",
|
||||||
|
"platform",
|
||||||
|
"components",
|
||||||
|
"capabilities",
|
||||||
|
"designated-sections",
|
||||||
|
"criteria"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"reference": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"enum": [ "draft", "advisory", "approved", "superceded" ]
|
||||||
|
},
|
||||||
|
"replaces": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"target_approval": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "\\d{4}-\\d{2}-\\d{2}"
|
||||||
|
},
|
||||||
|
"releases": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"minItems": 1,
|
||||||
|
"uniqueItems": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"platform": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"required": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"advisory": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deprecated": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"removed": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"components": {
|
||||||
|
"type": "object",
|
||||||
|
"patternProperties": {
|
||||||
|
"^\\w+$": {
|
||||||
|
"$ref": "#/definitions/component"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"capabilities": {
|
||||||
|
"type": "object",
|
||||||
|
"patternProperties": {
|
||||||
|
"^\\w+$": {
|
||||||
|
"$ref": "#/definitions/capabilty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"designated-sections": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [ "required", "advisory", "deprecated", "removed", "informational" ],
|
||||||
|
"properties": {
|
||||||
|
"required": {
|
||||||
|
"type": "object",
|
||||||
|
"patternProperties": {
|
||||||
|
"^\\w+$": {
|
||||||
|
"$ref": "#/definitions/designated-section"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"advisory": {
|
||||||
|
"type": "object",
|
||||||
|
"patternProperties": {
|
||||||
|
"^\\w+$": {
|
||||||
|
"$ref": "#/definitions/designated-section"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deprecated": {
|
||||||
|
"type": "object",
|
||||||
|
"patternProperties": {
|
||||||
|
"^\\w+$": {
|
||||||
|
"$ref": "#/definitions/designated-section"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"removed": {
|
||||||
|
"type": "object",
|
||||||
|
"patternProperties": {
|
||||||
|
"^\\w+$": {
|
||||||
|
"$ref": "#/definitions/designated-section"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"informational": {
|
||||||
|
"type": "object",
|
||||||
|
"patternProperties": {
|
||||||
|
"^\\w+$": {
|
||||||
|
"$ref": "#/definitions/designated-section"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"type": "object",
|
||||||
|
"patternProperties": {
|
||||||
|
"^\\w+$": {
|
||||||
|
"$ref": "#/definitions/criteria"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"definitions": {
|
||||||
|
"component": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [ "required", "advisory", "deprecated", "removed" ],
|
||||||
|
"properties": {
|
||||||
|
"required": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"advisory": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deprecated": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"removed": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"capability": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [ "achievements",
|
||||||
|
"admin",
|
||||||
|
"description",
|
||||||
|
"project",
|
||||||
|
"require-since",
|
||||||
|
"tests"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"achievements": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"enum": [
|
||||||
|
"foundation",
|
||||||
|
"complete",
|
||||||
|
"proximity",
|
||||||
|
"clients",
|
||||||
|
"discover",
|
||||||
|
"sticky",
|
||||||
|
"future",
|
||||||
|
"atomic",
|
||||||
|
"stable",
|
||||||
|
"tools",
|
||||||
|
"deployed",
|
||||||
|
"TODO ADD LAST ITEM HERE"
|
||||||
|
],
|
||||||
|
"uniqueItems": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"admin": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"project": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"required-since": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "[^$|^\\d{4}-\\d{2}-\\d{2}$]"
|
||||||
|
},
|
||||||
|
"tests": {
|
||||||
|
"type": "object",
|
||||||
|
"patternProperties": {
|
||||||
|
"^\\w+$": {
|
||||||
|
"$ref": "#/definitions/test"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [ "Description", "name", "weight" ],
|
||||||
|
"properties": {
|
||||||
|
"Description": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"weight": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"test": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [ "idempotent_id" ],
|
||||||
|
"properties": {
|
||||||
|
"idempotent_id": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"flagged": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [ "reason", "action", "date" ],
|
||||||
|
"properties": {
|
||||||
|
"reason": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^D\\d{3} \\w+"
|
||||||
|
},
|
||||||
|
"action": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"date": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "\\d{4}-\\d{2}-\\d{2}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"designated-section": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [ "guidance", "comment", "sections" ],
|
||||||
|
"properties": {
|
||||||
|
"guidance": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"comment": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"sections": {
|
||||||
|
"type": "object",
|
||||||
|
"patternProperties": {
|
||||||
|
"^\\w+$": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [ "description", "designated", "comment" ],
|
||||||
|
"properties": {
|
||||||
|
"description": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"designated": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"comment": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
15
next.json
15
next.json
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"id": "next",
|
"id": "next",
|
||||||
"schema": "1.4",
|
"schema": "1.5",
|
||||||
"reference": "https://git.openstack.org/cgit/openstack/defcore/schema/1.3.rst",
|
"reference": "https://git.openstack.org/cgit/openstack/defcore/schema/1.5.json",
|
||||||
"source": "http://git.openstack.org/cgit/openstack/defcore/",
|
"source": "http://git.openstack.org/cgit/openstack/defcore/",
|
||||||
"status": "draft",
|
"status": "draft",
|
||||||
"cutoff_score": "74",
|
"cutoff_score": "74",
|
||||||
@ -86,7 +86,7 @@
|
|||||||
"images-v2-get",
|
"images-v2-get",
|
||||||
"volumes-v2-upload",
|
"volumes-v2-upload",
|
||||||
"volumes-v2-qos",
|
"volumes-v2-qos",
|
||||||
"volumes-v2-transfer",
|
"volumes-v2-transfer"
|
||||||
],
|
],
|
||||||
"deprecated": [
|
"deprecated": [
|
||||||
"compute-auth-create",
|
"compute-auth-create",
|
||||||
@ -2315,9 +2315,6 @@
|
|||||||
"tempest.api.network.test_routers_negative.RoutersNegativeTest.test_show_non_existent_router_returns_404": {
|
"tempest.api.network.test_routers_negative.RoutersNegativeTest.test_show_non_existent_router_returns_404": {
|
||||||
"idempotent_id": "id-c2a70d72-8826-43a7-8208-0209e6360c47"
|
"idempotent_id": "id-c2a70d72-8826-43a7-8208-0209e6360c47"
|
||||||
},
|
},
|
||||||
"tempest.api.network.test_routers_negative.RoutersNegativeTest.test_show_non_existent_router_returns_404": {
|
|
||||||
"idempotent_id": "id-c2a70d72-8826-43a7-8208-0209e6360c47"
|
|
||||||
},
|
|
||||||
"tempest.api.network.test_routers.RoutersTest.test_update_extra_route": {
|
"tempest.api.network.test_routers.RoutersTest.test_update_extra_route": {
|
||||||
"idempotent_id": "id-c86ac3a8-50bd-4b00-a6b8-62af84a0765c"
|
"idempotent_id": "id-c86ac3a8-50bd-4b00-a6b8-62af84a0765c"
|
||||||
},
|
},
|
||||||
@ -3121,19 +3118,19 @@
|
|||||||
"guidance": "Not a core capability, no position at this time",
|
"guidance": "Not a core capability, no position at this time",
|
||||||
"required": false,
|
"required": false,
|
||||||
"comment": "",
|
"comment": "",
|
||||||
"sections": []
|
"sections": {}
|
||||||
},
|
},
|
||||||
"horizon": {
|
"horizon": {
|
||||||
"guidance": "Not a core capability, no position at this time",
|
"guidance": "Not a core capability, no position at this time",
|
||||||
"required": false,
|
"required": false,
|
||||||
"comment": "",
|
"comment": "",
|
||||||
"sections": []
|
"sections": {}
|
||||||
},
|
},
|
||||||
"ceilometer": {
|
"ceilometer": {
|
||||||
"guidance": "Not a core capability, no position at this time",
|
"guidance": "Not a core capability, no position at this time",
|
||||||
"required": false,
|
"required": false,
|
||||||
"comment": "",
|
"comment": "",
|
||||||
"sections": []
|
"sections": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
pygments
|
pygments
|
||||||
|
demjson
|
||||||
doc8
|
doc8
|
||||||
|
jsonschema
|
||||||
oslosphinx
|
oslosphinx
|
||||||
sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3
|
sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3
|
||||||
sphinxcontrib.datatemplates
|
sphinxcontrib.datatemplates
|
||||||
|
15
tox.ini
15
tox.ini
@ -1,5 +1,5 @@
|
|||||||
[tox]
|
[tox]
|
||||||
envlist = docs,doc8,pep8
|
envlist = docs,doc8,pep8,jsonlint,jsonschema
|
||||||
minversion = 1.6
|
minversion = 1.6
|
||||||
skipsdist = True
|
skipsdist = True
|
||||||
|
|
||||||
@ -33,6 +33,17 @@ whitelist_externals =
|
|||||||
[flake8]
|
[flake8]
|
||||||
# E125 is deliberately excluded.
|
# E125 is deliberately excluded.
|
||||||
# See https://github.com/jcrocholl/pep8/issues/126
|
# See https://github.com/jcrocholl/pep8/issues/126
|
||||||
|
|
||||||
ignore = E125
|
ignore = E125
|
||||||
exclude = .venv,.git,.tox,doc,conf.py
|
exclude = .venv,.git,.tox,doc,conf.py
|
||||||
|
|
||||||
|
[testenv:jsonlint]
|
||||||
|
commands=
|
||||||
|
jsonlint -s next.json
|
||||||
|
jsonlint -s 2015.07.json
|
||||||
|
jsonlint -s 2016.01.json
|
||||||
|
jsonlint -s doc/source/schema/1.5.json
|
||||||
|
|
||||||
|
[testenv:jsonschema]
|
||||||
|
commands=
|
||||||
|
jsonschema doc/source/schema/1.5.json -i next.json
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user