Skip to content
Snippets Groups Projects
Commit 9433969d authored by Erik Reid's avatar Erik Reid
Browse files

added timestamp to version & latch schema

optional for now
parent 102dbff6
No related branches found
No related tags found
No related merge requests found
......@@ -4,42 +4,43 @@ from flask import Blueprint, jsonify, current_app
from inventory_provider.routes import common
from inventory_provider.tasks.common import get_current_redis, get_latch
routes = Blueprint("inventory-data-default-routes", __name__)
routes = Blueprint('inventory-data-default-routes', __name__)
API_VERSION = '0.1'
VERSION_SCHEMA = {
"$schema": "http://json-schema.org/draft-07/schema#",
'$schema': 'http://json-schema.org/draft-07/schema#',
"definitions": {
"latch": {
"type": "object",
"properties": {
"current": {"type": "integer"},
"next": {"type": "integer"},
"this": {"type": "integer"},
"failure": {"type": "boolean"},
"pending": {"type": "boolean"},
'definitions': {
'latch': {
'type': 'object',
'properties': {
'current': {'type': 'integer'},
'next': {'type': 'integer'},
'this': {'type': 'integer'},
'failure': {'type': 'boolean'},
'pending': {'type': 'boolean'},
'timestamp': {'type': 'number'}
},
"required": ["current", "next", "this", "pending", "failure"],
"additionalProperties": False
'required': ['current', 'next', 'this', 'pending', 'failure'],
'additionalProperties': False
}
},
"type": "object",
"properties": {
"api": {
"type": "string",
"pattern": r'\d+\.\d+'
'type': 'object',
'properties': {
'api': {
'type': 'string',
'pattern': r'\d+\.\d+'
},
"module": {
"type": "string",
"pattern": r'\d+\.\d+'
'module': {
'type': 'string',
'pattern': r'\d+\.\d+'
},
"latch": {"$ref": "#/definitions/latch"}
'latch': {'$ref': '#/definitions/latch'}
},
"required": ["api", "module"],
"additionalProperties": False
'required': ['api', 'module'],
'additionalProperties': False
}
......@@ -48,7 +49,7 @@ def after_request(resp):
return common.after_request(resp)
@routes.route("/version", methods=['GET', 'POST'])
@routes.route('/version', methods=['GET', 'POST'])
@common.require_accepts_json
def version():
"""
......
......@@ -11,17 +11,18 @@ DEFAULT_REDIS_SENTINEL_TIMEOUT = 0.1
DEFAULT_SENTINEL_SOCKET_TIMEOUT = 0.1
DB_LATCH_SCHEMA = {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"current": {"type": "integer"},
"next": {"type": "integer"},
"this": {"type": "integer"},
"pending": {"type": "boolean"},
"failure": {"type": "boolean"}
'$schema': 'http://json-schema.org/draft-07/schema#',
'type': 'object',
'properties': {
'current': {'type': 'integer'},
'next': {'type': 'integer'},
'this': {'type': 'integer'},
'pending': {'type': 'boolean'},
'failure': {'type': 'boolean'},
'timestamp': {'type': 'number'}
},
"required": ["current", "next", "this"],
"additionalProperties": False
'required': ['current', 'next', 'this'],
'additionalProperties': False
}
TASK_LOG_SCHEMA = {
......
......@@ -5,59 +5,59 @@ from inventory_provider.routes import common
from inventory_provider.routes.default import VERSION_SCHEMA
DEFAULT_REQUEST_HEADERS = {
"Content-type": "application/json",
"Accept": ["application/json"]
'Content-type': 'application/json',
'Accept': ['application/json']
}
def test_version_request(client, mocked_redis):
rv = client.post(
"version",
'version',
headers=DEFAULT_REQUEST_HEADERS)
assert rv.status_code == 200
jsonschema.validate(
json.loads(rv.data.decode("utf-8")),
json.loads(rv.data.decode('utf-8')),
VERSION_SCHEMA)
def test_load_json_docs(data_config, mocked_redis):
INTERFACE_SCHEMA = {
"$schema": "http://json-schema.org/draft-07/schema#",
'$schema': 'http://json-schema.org/draft-07/schema#',
"definitions": {
"interface": {
"type": "object",
"properties": {
"logical-system": {"type": "string"},
"name": {"type": "string"},
"description": {"type": "string"},
"bundle": {
"type": "array",
"items": {"type": "string"}
'definitions': {
'interface': {
'type': 'object',
'properties': {
'logical-system': {'type': 'string'},
'name': {'type': 'string'},
'description': {'type': 'string'},
'bundle': {
'type': 'array',
'items': {'type': 'string'}
},
"ipv4": {
"type": "array",
"items": {"type": "string"}
'ipv4': {
'type': 'array',
'items': {'type': 'string'}
},
"ipv6": {
"type": "array",
"items": {"type": "string"}
'ipv6': {
'type': 'array',
'items': {'type': 'string'}
}
},
"required": ["name", "description", "ipv4", "ipv6"],
"additionalProperties": False
'required': ['name', 'description', 'ipv4', 'ipv6'],
'additionalProperties': False
}
},
"type": "object",
"properties": {
"key": {"type": "string"},
"value": {"$ref": "#/definitions/interface"}
'type': 'object',
'properties': {
'key': {'type': 'string'},
'value': {'$ref': '#/definitions/interface'}
},
"required": ["key", "value"],
"additionalProperties": False
'required': ['key', 'value'],
'additionalProperties': False
}
for ifc in common.load_json_docs(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment