_common_locations_schema_definitions = { "location-endpoint": { "type": "object", "properties": { "equipment": {"type": "string"}, "name": {"type": "string"}, "abbreviation": {"type": "string"} }, "required": ["equipment", "name", "abbreviation"], "additionalProperties": False }, "location": { "type": "object", "properties": { "a": {"$ref": "#/definitions/location-endpoint"}, "b": {"$ref": "#/definitions/location-endpoint"} }, "required": ["a"], "additionalProperties": False }, "locations-list": { "type": "array", "items": {"$ref": "#/definitions/location"} } } _juniper_link_response_schema_definitions = { "ip-address": { "type": "string", "oneOf": [ {"pattern": r'^(\d+\.){3}\d+$'}, {"pattern": r'^([a-f\d]{4}:){7}[a-f\d]{4}$'} ] }, "ipv4-interface-address": { "type": "string", "pattern": r'^(\d+\.){3}\d+/\d+$' }, "ipv6-interface-address": { "type": "string", "pattern": r'^[a-f\d:]+/\d+$' }, "snmp-info": { "type": "object", "properties": { "community": {"type": "string"}, "index": {"type": "integer"} }, "required": ["community", "index"], "additionalProperties": False }, "interface-info": { "type": "object", "properties": { "name": {"type": "string"}, "description": {"type": "string"}, "ipv4": { "type": "array", "items": {"$ref": "#/definitions/ipv4-interface-address"} }, "ipv6": { "type": "array", "items": {"$ref": "#/definitions/ipv6-interface-address"} }, # TODO: check what's changed: added to make tests pass 'bundle': {"type": "array"}, 'bundle_members': {"type": "array"}, 'snmp': {"$ref": "#/definitions/snmp-info"} }, "required": ["name", "description", "ipv4", "ipv6"], "additionalProperties": False }, "service-info": { "type": "object", "properties": { "id": {"type": "integer"}, "name": {"type": "string"}, "status": { "type": "string", "enum": ["operational", "installed", "planned", "ordered"] }, "circuit_type": { "type": "string", "enum": ["path", "service", "l2circuit"] }, "service_type": {"type": "string"}, "project": {"type": "string"}, "equipment": {"type": "string"}, "pop": {"type": "string"}, "pop_abbreviation": {"type": "string"}, "other_end_pop": {"type": "string"}, "other_end_pop_abbreviation": {"type": "string"}, "other_end_equipment": {"type": "string"}, "port": {"type": "string"}, "other_end_port": {"type": "string"}, "logical_unit": { "oneOf": [ {"type": "integer"}, {"type": "string", "maxLength": 0} ] }, "other_end_logical_unit": { "oneOf": [ {"type": "integer"}, {"type": "string", "maxLength": 0} ] }, "manufacturer": { "type": "string", "enum": ["juniper", "coriant", "infinera", "cisco", "hewlett packard", "corsa", "graham smith uk ltd", "unknown", ""] }, "card_id": {"type": "string"}, "other_end_card_id": {"type": "string"}, "interface_name": {"type": "string"}, "other_end_interface_name": {"type": "string"}, # TODO: check what's changed: added to make tests pass 'other_end_pop_name': {"type": "string"}, 'pop_name': {"type": "string"} }, # TODO: modify service-info so that "" entries are just omitted # (... rather than requiring 'oneOf') # TODO: put 'other_end_*' params in a sub dictionary # "required": [ # "id", "name", "status", # "circuit_type", "service_type", # "project", "port", "manufacturer", # "equipment", "logical_unit", "card_id", "interface_name" # ], "additionalProperties": False }, "related-service-info": { "type": "object", "properties": { "name": {"type": "string"}, "status": { "type": "string", "enum": ["operational", "installed", "planned", "ordered"] }, "circuit_type": { "type": "string", "enum": ["path", "service", "l2circuit"] }, "project": {"type": "string"} }, "required": ["name", "status", "circuit_type", "project"], "additionalProperties": False } } JUNIPER_LINK_RESPONSE_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "definitions": { **_juniper_link_response_schema_definitions, **_common_locations_schema_definitions }, "type": "object", "properties": { "services": { "type": "array", "items": {"$ref": "#/definitions/service-info"} }, "interface": {"$ref": "#/definitions/interface-info"}, "related-services": { "type": "array", "items": {"$ref": "#/definitions/related-service-info"} }, "locations": {"$ref": "#/definitions/locations-list"} }, "required": ["interface", "locations"], "additionalProperties": False } _peer_info_response_schema_definitions = { "ip-address": { "type": "string", "oneOf": [ {"pattern": r'^(\d+\.){3}\d+$'}, {"pattern": r'^([a-f\d]{4}:){7}[a-f\d]{4}$'} ] }, "interface-address": { "type": "string", "oneOf": [ {"pattern": r'^(\d+\.){3}\d+/\d+$'}, {"pattern": r'^[a-f\d:]+/\d+$'} ] }, "vpn-rr-peer": { "type": "object", "properties": { "name": {"$ref": "#/definitions/ip-address"}, "description": {"type": "string"}, "peer-as": {"type": "integer"}, "router": {"type": "string"} }, "required": ["name", "description"], "additionalProperties": False }, "ix-public-peer": { "type": "object", "properties": { "name": {"$ref": "#/definitions/ip-address"}, "description": {"type": "string"}, "router": {"type": "string"}, "as": { "type": "object", "properties": { "local": {"type": "integer"}, "peer": {"type": "integer"}, }, "required": ["local", "peer"], "additionalProperties": False } }, "required": ["name", "description", "as"], "additionalProperties": False }, "ix-public-peer-list": { "type": "array", "items": {"$ref": "#/definitions/ip-address"} }, "ix-public-peer-info": { "type": "object", "properties": { "peer": {"$ref": "#/definitions/ix-public-peer"}, "group": {"$ref": "#/definitions/ix-public-peer-list"}, "router": {"$ref": "#/definitions/ix-public-peer-list"} }, "required": ["peer", "group", "router"], "additionalProperties": False }, "interface-info": { "type": "object", "properties": { "name": {"$ref": "#/definitions/ip-address"}, "interface address": { "$ref": "#/definitions/interface-address"}, "interface name": {"type": "string"}, "router": {"type": "string"} }, "required": [ "name", "interface address", "interface name", "router"], "additionalProperties": False }, "service-info": { "type": "object" }, "interface-lookup-info": { "type": "object", "properties": { "interface": {"$ref": "#/definitions/interface-info"}, "services": { "type": "array", "items": {"$ref": "#/definitions/service-info"} } } }, "snmp-info": { "type": "object", "properties": { "hostname": {"type": "string"}, "oid": {"type": "string"}, "community": {"type": "string"} }, "required": ["oid", "community", "hostname"], "additionalProperties": False }, "asn-group-member": { "type": "object", "properties": { "router": {"type": "string"}, "address": {"type": "string"}, "group": {"type": "string"} }, "required": ["router", "address", "group"], "additionalProperties": False }, "asn-group": { "type": "object", "properties": { "asn": {"type": "integer"}, "peers": { "type": "array", "items": {"$ref": "#/definitions/asn-group-member"} } }, "required": ["asn", "peers"], "additionalProperties": False } } PEER_INFO_RESPONSE_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "definitions": { **_peer_info_response_schema_definitions, **_common_locations_schema_definitions }, "type": "object", "properties": { "ix-public-peer-info": { "$ref": "#/definitions/ix-public-peer-info"}, "vpn-rr-peer-info": {"$ref": "#/definitions/vpn-rr-peer"}, "interfaces": { "type": "array", "items": {"$ref": "#/definitions/interface-lookup-info"} }, "locations": {"$ref": "#/definitions/locations-list"}, "snmp": { "type": "array", "items": {"$ref": "#/definitions/snmp-info"} }, "asn": {"$ref": "#/definitions/asn-group"} }, "additionalProperties": False } _infinera_lambda_response_schema_definitions = { "service-info": { "type": "object", "properties": { "id": {"type": "integer"}, "name": {"type": "string"}, "status": { "type": "string", "enum": ["operational", "installed", "planned", "ordered"] }, "circuit_type": { "type": "string", "enum": ["path", "service", "l2circuit"] }, "service_type": {"type": "string"}, "project": {"type": "string"}, "pop_name": {"type": "string"}, "pop_abbreviation": {"type": "string"}, "other_end_pop_name": {"type": "string"}, "other_end_pop_abbreviation": {"type": "string"}, "equipment": {"type": "string"}, "other_end_equipment": {"type": "string"}, "port": {"type": "string"}, "other_end_port": {"type": "string"}, "logical_unit": { "oneOf": [ {"type": "integer"}, {"type": "string", "maxLength": 0} ] }, "other_end_logical_unit": { "oneOf": [ {"type": "integer"}, {"type": "string", "maxLength": 0} ] }, "manufacturer": { "type": "string", "enum": ["juniper", "coriant", "infinera", "cisco", "hewlett packard", "corsa", "graham smith uk ltd", "unknown", ""] }, "card_id": {"type": "string"}, "other_end_card_id": {"type": "string"}, "interface_name": {"type": "string"}, "other_end_interface_name": {"type": "string"} }, "additionalProperties": False }, "related-service-info": { "type": "object", "properties": { "name": {"type": "string"}, "status": { "type": "string", "enum": ["operational", "installed", "planned", "ordered"] }, "circuit_type": { "type": "string", "enum": ["path", "service", "l2circuit"] }, "project": {"type": "string"} }, "required": ["name", "status", "circuit_type", "project"], "additionalProperties": False }, "geant-lambda": { "type": "object", "properties": { "id": {"type": "integer"}, "name": {"type": "string"}, "project": {"type": "string"}, "status": { "type": "string", "enum": ["operational", "installed", "planned", "ordered"] }, }, "additionalProperties": False } } INFINERA_LAMBDA_INFO_RESPONSE_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "definitions": { **_infinera_lambda_response_schema_definitions, **_common_locations_schema_definitions }, "type": "object", "properties": { "services": { "type": "array", "items": {"$ref": "#/definitions/service-info"} }, "related-services": { "type": "array", "items": {"$ref": "#/definitions/related-service-info"} }, "geant-lambda": { "$ref": "#/definitions/geant-lambda" }, "locations": {"$ref": "#/definitions/locations-list"} }, "additionalProperties": False } CORIANT_INFO_RESPONSE_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "definitions": { "location-endpoint": { "type": "object", "properties": { "equipment": {"type": "string"}, "name": {"type": "string"}, "abbreviation": {"type": "string"} }, "required": ["equipment", "name", "abbreviation"], "additionalProperties": False }, "location": { "type": "object", "properties": { "a": {"$ref": "#/definitions/location-endpoint"}, "b": {"$ref": "#/definitions/location-endpoint"} }, "required": ["a"], "additionalProperties": False }, "locations-list": { "type": "array", "items": {"$ref": "#/definitions/location"} }, "pop-info": { "type": "object", "properties": { "name": {"type": "string"}, "abbreviation": {"type": "string"}, "country": {"type": "string"}, "city": {"type": "string"}, "longitude": {"type": "number"}, "latitude": {"type": "number"} }, "required": [ "name", "abbreviation", "country", "city", "longitude", "latitude" ], "additionalProperties": False }, "endpoint": { "type": "object", "properties": { "equipment name": {"type": "string"}, "card id": {"type": "string"}, "port number": {"type": "string"}, "pop": {"$ref": "#/definitions/pop-info"} }, "required": ["equipment name", "port number", "pop"], "additionalProperties": False }, "path": { "type": "object", "properties": { 'category': {"type": "string"}, 'circuit_type': {"type": "string"}, 'service_type': {"type": "string"}, 'peering_type': {"type": "string"}, 'status': {"type": "string"}, 'name': {"type": "string"}, 'a': {"$ref": "#/definitions/endpoint"}, 'b': {"$ref": "#/definitions/endpoint"} }, "required": [ "category", "circuit_type", "service_type", "peering_type", "status", "a", "b"], "additionalProperties": False }, "related-service-info": { "type": "object", "properties": { "name": {"type": "string"}, "status": { "type": "string", "enum": ["operational", "installed", "planned", "ordered"] }, "circuit_type": { "type": "string", "enum": ["path", "service", "l2circuit"] }, "project": {"type": "string"} }, "additionalProperties": False } }, "type": "object", "properties": { "equipment name": {"type": "string"}, "card id": {"type": "string"}, "port number": {"type": "string"}, "path": {"$ref": "#/definitions/path"}, "related-services": { "type": "array", "items": {"$ref": "#/definitions/related-service-info"} }, }, "required": ["equipment name", "card id", "port number"], "additionalProperties": False }