|
@@ -1,353 +1,693 @@
|
|
|
{
|
|
{
|
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
|
- "$id": "https://timmoth.github.io/RackPeek/schemas/v2/schema.v2.json",
|
|
|
|
|
|
|
+ "$id": "https://timmoth.github.io/RackPeek/schemas/v3/schema.v3.json",
|
|
|
"title": "RackPeek Infrastructure Specification",
|
|
"title": "RackPeek Infrastructure Specification",
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
"additionalProperties": false,
|
|
"additionalProperties": false,
|
|
|
- "required": ["version", "resources"],
|
|
|
|
|
|
|
+ "required": [
|
|
|
|
|
+ "version",
|
|
|
|
|
+ "resources"
|
|
|
|
|
+ ],
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "version": { "type": "integer", "const": 2 },
|
|
|
|
|
|
|
+ "version": {
|
|
|
|
|
+ "type": "integer",
|
|
|
|
|
+ "const": 3
|
|
|
|
|
+ },
|
|
|
"resources": {
|
|
"resources": {
|
|
|
"type": "array",
|
|
"type": "array",
|
|
|
- "items": { "$ref": "#/$defs/resource" }
|
|
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/resource"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ "connections": {
|
|
|
|
|
+ "type": [
|
|
|
|
|
+ "array",
|
|
|
|
|
+ "null"
|
|
|
|
|
+ ],
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/connection"
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"$defs": {
|
|
"$defs": {
|
|
|
"labels": {
|
|
"labels": {
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
- "additionalProperties": { "type": "string" }
|
|
|
|
|
|
|
+ "additionalProperties": {
|
|
|
|
|
+ "type": "string"
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"runsOn": {
|
|
"runsOn": {
|
|
|
- "type": ["array", "null"],
|
|
|
|
|
|
|
+ "type": [
|
|
|
|
|
+ "array",
|
|
|
|
|
+ "null"
|
|
|
|
|
+ ],
|
|
|
"items": {
|
|
"items": {
|
|
|
"type": "string",
|
|
"type": "string",
|
|
|
"minLength": 1
|
|
"minLength": 1
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"resourceBase": {
|
|
"resourceBase": {
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
- "required": ["kind", "name"],
|
|
|
|
|
|
|
+ "required": [
|
|
|
|
|
+ "kind",
|
|
|
|
|
+ "name"
|
|
|
|
|
+ ],
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "kind": { "type": "string" },
|
|
|
|
|
- "name": { "type": "string", "minLength": 1 },
|
|
|
|
|
-
|
|
|
|
|
- "tags": { "type": "array", "items": { "type": "string" }, "default": [] },
|
|
|
|
|
- "labels": { "$ref": "#/$defs/labels", "default": {} },
|
|
|
|
|
- "notes": { "type": ["string", "null"] },
|
|
|
|
|
-
|
|
|
|
|
|
|
+ "kind": {
|
|
|
|
|
+ "type": "string"
|
|
|
|
|
+ },
|
|
|
|
|
+ "name": {
|
|
|
|
|
+ "type": "string",
|
|
|
|
|
+ "minLength": 1
|
|
|
|
|
+ },
|
|
|
|
|
+ "tags": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "type": "string"
|
|
|
|
|
+ },
|
|
|
|
|
+ "default": []
|
|
|
|
|
+ },
|
|
|
|
|
+ "labels": {
|
|
|
|
|
+ "$ref": "#/$defs/labels",
|
|
|
|
|
+ "default": {}
|
|
|
|
|
+ },
|
|
|
|
|
+ "notes": {
|
|
|
|
|
+ "type": [
|
|
|
|
|
+ "string",
|
|
|
|
|
+ "null"
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
"runsOn": {
|
|
"runsOn": {
|
|
|
- "type": ["array", "null"],
|
|
|
|
|
- "items": { "type": "string" }
|
|
|
|
|
|
|
+ "$ref": "#/$defs/runsOn"
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"resource": {
|
|
"resource": {
|
|
|
"oneOf": [
|
|
"oneOf": [
|
|
|
- { "$ref": "#/$defs/server" },
|
|
|
|
|
- { "$ref": "#/$defs/firewall" },
|
|
|
|
|
- { "$ref": "#/$defs/router" },
|
|
|
|
|
- { "$ref": "#/$defs/switch" },
|
|
|
|
|
- { "$ref": "#/$defs/accessPoint" },
|
|
|
|
|
- { "$ref": "#/$defs/ups" },
|
|
|
|
|
- { "$ref": "#/$defs/other" },
|
|
|
|
|
- { "$ref": "#/$defs/desktop" },
|
|
|
|
|
- { "$ref": "#/$defs/laptop" },
|
|
|
|
|
- { "$ref": "#/$defs/service" },
|
|
|
|
|
- { "$ref": "#/$defs/system" }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/server"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/firewall"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/router"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/switch"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/accessPoint"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/ups"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/other"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/desktop"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/laptop"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/service"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/system"
|
|
|
|
|
+ }
|
|
|
]
|
|
]
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
- "ram": {
|
|
|
|
|
|
|
+ "portReference": {
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
- "required": ["size"],
|
|
|
|
|
|
|
+ "required": [
|
|
|
|
|
+ "resource",
|
|
|
|
|
+ "portGroup",
|
|
|
|
|
+ "portIndex"
|
|
|
|
|
+ ],
|
|
|
"additionalProperties": false,
|
|
"additionalProperties": false,
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "size": { "type": "number", "minimum": 0 },
|
|
|
|
|
- "mts": { "type": "integer", "minimum": 0 }
|
|
|
|
|
|
|
+ "resource": {
|
|
|
|
|
+ "type": "string",
|
|
|
|
|
+ "minLength": 1
|
|
|
|
|
+ },
|
|
|
|
|
+ "portGroup": {
|
|
|
|
|
+ "type": "integer",
|
|
|
|
|
+ "minimum": 0
|
|
|
|
|
+ },
|
|
|
|
|
+ "portIndex": {
|
|
|
|
|
+ "type": "integer",
|
|
|
|
|
+ "minimum": 0
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
- "cpu": {
|
|
|
|
|
|
|
+ "connection": {
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
|
|
+ "required": [
|
|
|
|
|
+ "a",
|
|
|
|
|
+ "b"
|
|
|
|
|
+ ],
|
|
|
"additionalProperties": false,
|
|
"additionalProperties": false,
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "model": { "type": "string" },
|
|
|
|
|
- "cores": { "type": "integer", "minimum": 1 },
|
|
|
|
|
- "threads": { "type": "integer", "minimum": 1 }
|
|
|
|
|
|
|
+ "a": {
|
|
|
|
|
+ "$ref": "#/$defs/portReference"
|
|
|
|
|
+ },
|
|
|
|
|
+ "b": {
|
|
|
|
|
+ "$ref": "#/$defs/portReference"
|
|
|
|
|
+ },
|
|
|
|
|
+ "label": {
|
|
|
|
|
+ "type": [
|
|
|
|
|
+ "string",
|
|
|
|
|
+ "null"
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ "notes": {
|
|
|
|
|
+ "type": [
|
|
|
|
|
+ "string",
|
|
|
|
|
+ "null"
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
- "drive": {
|
|
|
|
|
|
|
+ "ram": {
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
- "required": ["size"],
|
|
|
|
|
|
|
+ "required": [
|
|
|
|
|
+ "size"
|
|
|
|
|
+ ],
|
|
|
"additionalProperties": false,
|
|
"additionalProperties": false,
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "type": {
|
|
|
|
|
- "type": "string",
|
|
|
|
|
- "enum": ["nvme", "ssd", "hdd", "sas", "sata", "usb", "sdcard", "micro-sd"]
|
|
|
|
|
|
|
+ "size": {
|
|
|
|
|
+ "type": "number",
|
|
|
|
|
+ "minimum": 0
|
|
|
},
|
|
},
|
|
|
- "size": { "type": "number", "minimum": 1 }
|
|
|
|
|
|
|
+ "mts": {
|
|
|
|
|
+ "type": "integer",
|
|
|
|
|
+ "minimum": 0
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
- "gpu": {
|
|
|
|
|
|
|
+ "cpu": {
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
"additionalProperties": false,
|
|
"additionalProperties": false,
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "model": { "type": "string" },
|
|
|
|
|
- "vram": { "type": "number", "minimum": 0 }
|
|
|
|
|
|
|
+ "model": {
|
|
|
|
|
+ "type": "string"
|
|
|
|
|
+ },
|
|
|
|
|
+ "cores": {
|
|
|
|
|
+ "type": "integer",
|
|
|
|
|
+ "minimum": 1
|
|
|
|
|
+ },
|
|
|
|
|
+ "threads": {
|
|
|
|
|
+ "type": "integer",
|
|
|
|
|
+ "minimum": 1
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
- "nic": {
|
|
|
|
|
|
|
+ "drive": {
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
|
|
+ "required": [
|
|
|
|
|
+ "size"
|
|
|
|
|
+ ],
|
|
|
"additionalProperties": false,
|
|
"additionalProperties": false,
|
|
|
"properties": {
|
|
"properties": {
|
|
|
"type": {
|
|
"type": {
|
|
|
"type": "string",
|
|
"type": "string",
|
|
|
"enum": [
|
|
"enum": [
|
|
|
- "rj45", "sfp", "sfp+", "sfp28", "sfp56",
|
|
|
|
|
- "qsfp+", "qsfp28", "qsfp56", "qsfp-dd",
|
|
|
|
|
- "osfp", "xfp", "cx4", "mgmt"
|
|
|
|
|
|
|
+ "nvme",
|
|
|
|
|
+ "ssd",
|
|
|
|
|
+ "hdd",
|
|
|
|
|
+ "sas",
|
|
|
|
|
+ "sata",
|
|
|
|
|
+ "usb",
|
|
|
|
|
+ "sdcard",
|
|
|
|
|
+ "micro-sd"
|
|
|
]
|
|
]
|
|
|
},
|
|
},
|
|
|
- "speed": { "type": "number", "minimum": 0 },
|
|
|
|
|
- "ports": { "type": "integer", "minimum": 1 }
|
|
|
|
|
|
|
+ "size": {
|
|
|
|
|
+ "type": "number",
|
|
|
|
|
+ "minimum": 1
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ "gpu": {
|
|
|
|
|
+ "type": "object",
|
|
|
|
|
+ "additionalProperties": false,
|
|
|
|
|
+ "properties": {
|
|
|
|
|
+ "model": {
|
|
|
|
|
+ "type": "string"
|
|
|
|
|
+ },
|
|
|
|
|
+ "vram": {
|
|
|
|
|
+ "type": "number",
|
|
|
|
|
+ "minimum": 0
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"port": {
|
|
"port": {
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
- "required": ["type", "speed", "count"],
|
|
|
|
|
|
|
+ "required": [
|
|
|
|
|
+ "type",
|
|
|
|
|
+ "speed",
|
|
|
|
|
+ "count"
|
|
|
|
|
+ ],
|
|
|
"additionalProperties": false,
|
|
"additionalProperties": false,
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "type": { "type": "string" },
|
|
|
|
|
- "speed": { "type": "number", "minimum": 0 },
|
|
|
|
|
- "count": { "type": "integer", "minimum": 1 }
|
|
|
|
|
|
|
+ "type": {
|
|
|
|
|
+ "type": "string",
|
|
|
|
|
+ "enum": [
|
|
|
|
|
+ "rj45",
|
|
|
|
|
+ "sfp",
|
|
|
|
|
+ "sfp+",
|
|
|
|
|
+ "sfp28",
|
|
|
|
|
+ "sfp56",
|
|
|
|
|
+ "qsfp+",
|
|
|
|
|
+ "qsfp28",
|
|
|
|
|
+ "qsfp56",
|
|
|
|
|
+ "qsfp-dd",
|
|
|
|
|
+ "osfp",
|
|
|
|
|
+ "xfp",
|
|
|
|
|
+ "cx4",
|
|
|
|
|
+ "mgmt"
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ "speed": {
|
|
|
|
|
+ "type": "number",
|
|
|
|
|
+ "minimum": 0
|
|
|
|
|
+ },
|
|
|
|
|
+ "count": {
|
|
|
|
|
+ "type": "integer",
|
|
|
|
|
+ "minimum": 1
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"network": {
|
|
"network": {
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
- "required": ["ip", "port", "protocol"],
|
|
|
|
|
|
|
+ "required": [
|
|
|
|
|
+ "ip",
|
|
|
|
|
+ "port",
|
|
|
|
|
+ "protocol"
|
|
|
|
|
+ ],
|
|
|
"additionalProperties": false,
|
|
"additionalProperties": false,
|
|
|
"properties": {
|
|
"properties": {
|
|
|
"ip": {
|
|
"ip": {
|
|
|
"type": "string",
|
|
"type": "string",
|
|
|
"pattern": "^(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}$"
|
|
"pattern": "^(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}$"
|
|
|
},
|
|
},
|
|
|
- "port": { "type": "integer", "minimum": 1, "maximum": 65535 },
|
|
|
|
|
- "protocol": { "type": "string", "enum": ["TCP", "UDP"] },
|
|
|
|
|
- "url": { "type": "string", "format": "uri" }
|
|
|
|
|
|
|
+ "port": {
|
|
|
|
|
+ "type": "integer",
|
|
|
|
|
+ "minimum": 1,
|
|
|
|
|
+ "maximum": 65535
|
|
|
|
|
+ },
|
|
|
|
|
+ "protocol": {
|
|
|
|
|
+ "type": "string",
|
|
|
|
|
+ "enum": [
|
|
|
|
|
+ "TCP",
|
|
|
|
|
+ "UDP"
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ "url": {
|
|
|
|
|
+ "type": "string",
|
|
|
|
|
+ "format": "uri"
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"server": {
|
|
"server": {
|
|
|
"allOf": [
|
|
"allOf": [
|
|
|
- { "$ref": "#/$defs/resourceBase" },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/resourceBase"
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "kind": { "const": "Server" },
|
|
|
|
|
-
|
|
|
|
|
- "ram": { "$ref": "#/$defs/ram" },
|
|
|
|
|
- "ipmi": { "type": "boolean" },
|
|
|
|
|
- "cpus": { "type": "array", "items": { "$ref": "#/$defs/cpu" } },
|
|
|
|
|
- "drives": { "type": "array", "items": { "$ref": "#/$defs/drive" } },
|
|
|
|
|
- "gpus": { "type": "array", "items": { "$ref": "#/$defs/gpu" } },
|
|
|
|
|
- "nics": { "type": "array", "items": { "$ref": "#/$defs/nic" } }
|
|
|
|
|
|
|
+ "kind": {
|
|
|
|
|
+ "const": "Server"
|
|
|
|
|
+ },
|
|
|
|
|
+ "ram": {
|
|
|
|
|
+ "$ref": "#/$defs/ram"
|
|
|
|
|
+ },
|
|
|
|
|
+ "ipmi": {
|
|
|
|
|
+ "type": "boolean"
|
|
|
|
|
+ },
|
|
|
|
|
+ "cpus": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/cpu"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ "drives": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/drive"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ "gpus": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/gpu"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ "ports": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/port"
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
"unevaluatedProperties": false
|
|
"unevaluatedProperties": false
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"desktop": {
|
|
"desktop": {
|
|
|
"allOf": [
|
|
"allOf": [
|
|
|
- { "$ref": "#/$defs/resourceBase" },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/resourceBase"
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "kind": { "const": "Desktop" },
|
|
|
|
|
-
|
|
|
|
|
- "ram": { "$ref": "#/$defs/ram" },
|
|
|
|
|
- "cpus": { "type": "array", "items": { "$ref": "#/$defs/cpu" } },
|
|
|
|
|
- "drives": { "type": "array", "items": { "$ref": "#/$defs/drive" } },
|
|
|
|
|
- "gpus": { "type": "array", "items": { "$ref": "#/$defs/gpu" } },
|
|
|
|
|
- "nics": { "type": "array", "items": { "$ref": "#/$defs/nic" } }
|
|
|
|
|
|
|
+ "kind": {
|
|
|
|
|
+ "const": "Desktop"
|
|
|
|
|
+ },
|
|
|
|
|
+ "ram": {
|
|
|
|
|
+ "$ref": "#/$defs/ram"
|
|
|
|
|
+ },
|
|
|
|
|
+ "cpus": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/cpu"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ "drives": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/drive"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ "gpus": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/gpu"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ "ports": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/port"
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
"unevaluatedProperties": false
|
|
"unevaluatedProperties": false
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"laptop": {
|
|
"laptop": {
|
|
|
"allOf": [
|
|
"allOf": [
|
|
|
- { "$ref": "#/$defs/resourceBase" },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/resourceBase"
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "kind": { "const": "Laptop" },
|
|
|
|
|
-
|
|
|
|
|
- "ram": { "$ref": "#/$defs/ram" },
|
|
|
|
|
- "cpus": { "type": "array", "items": { "$ref": "#/$defs/cpu" } },
|
|
|
|
|
- "drives": { "type": "array", "items": { "$ref": "#/$defs/drive" } }
|
|
|
|
|
|
|
+ "kind": {
|
|
|
|
|
+ "const": "Laptop"
|
|
|
|
|
+ },
|
|
|
|
|
+ "ram": {
|
|
|
|
|
+ "$ref": "#/$defs/ram"
|
|
|
|
|
+ },
|
|
|
|
|
+ "cpus": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/cpu"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ "drives": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/drive"
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
"unevaluatedProperties": false
|
|
"unevaluatedProperties": false
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"firewall": {
|
|
"firewall": {
|
|
|
"allOf": [
|
|
"allOf": [
|
|
|
- { "$ref": "#/$defs/resourceBase" },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/resourceBase"
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
- "required": ["ports"],
|
|
|
|
|
|
|
+ "required": [
|
|
|
|
|
+ "ports"
|
|
|
|
|
+ ],
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "kind": { "const": "Firewall" },
|
|
|
|
|
-
|
|
|
|
|
- "model": { "type": "string" },
|
|
|
|
|
- "managed": { "type": "boolean" },
|
|
|
|
|
- "poe": { "type": "boolean" },
|
|
|
|
|
- "ports": { "type": "array", "items": { "$ref": "#/$defs/port" } }
|
|
|
|
|
|
|
+ "kind": {
|
|
|
|
|
+ "const": "Firewall"
|
|
|
|
|
+ },
|
|
|
|
|
+ "model": {
|
|
|
|
|
+ "type": "string"
|
|
|
|
|
+ },
|
|
|
|
|
+ "managed": {
|
|
|
|
|
+ "type": "boolean"
|
|
|
|
|
+ },
|
|
|
|
|
+ "poe": {
|
|
|
|
|
+ "type": "boolean"
|
|
|
|
|
+ },
|
|
|
|
|
+ "ports": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/port"
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
"unevaluatedProperties": false
|
|
"unevaluatedProperties": false
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"router": {
|
|
"router": {
|
|
|
"allOf": [
|
|
"allOf": [
|
|
|
- { "$ref": "#/$defs/resourceBase" },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/resourceBase"
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
- "required": ["ports"],
|
|
|
|
|
|
|
+ "required": [
|
|
|
|
|
+ "ports"
|
|
|
|
|
+ ],
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "kind": { "const": "Router" },
|
|
|
|
|
-
|
|
|
|
|
- "model": { "type": "string" },
|
|
|
|
|
- "managed": { "type": "boolean" },
|
|
|
|
|
- "poe": { "type": "boolean" },
|
|
|
|
|
- "ports": { "type": "array", "items": { "$ref": "#/$defs/port" } }
|
|
|
|
|
|
|
+ "kind": {
|
|
|
|
|
+ "const": "Router"
|
|
|
|
|
+ },
|
|
|
|
|
+ "model": {
|
|
|
|
|
+ "type": "string"
|
|
|
|
|
+ },
|
|
|
|
|
+ "managed": {
|
|
|
|
|
+ "type": "boolean"
|
|
|
|
|
+ },
|
|
|
|
|
+ "poe": {
|
|
|
|
|
+ "type": "boolean"
|
|
|
|
|
+ },
|
|
|
|
|
+ "ports": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/port"
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
"unevaluatedProperties": false
|
|
"unevaluatedProperties": false
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"switch": {
|
|
"switch": {
|
|
|
"allOf": [
|
|
"allOf": [
|
|
|
- { "$ref": "#/$defs/resourceBase" },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/resourceBase"
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
- "required": ["ports"],
|
|
|
|
|
|
|
+ "required": [
|
|
|
|
|
+ "ports"
|
|
|
|
|
+ ],
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "kind": { "const": "Switch" },
|
|
|
|
|
-
|
|
|
|
|
- "model": { "type": "string" },
|
|
|
|
|
- "managed": { "type": "boolean" },
|
|
|
|
|
- "poe": { "type": "boolean" },
|
|
|
|
|
- "ports": { "type": "array", "items": { "$ref": "#/$defs/port" } }
|
|
|
|
|
|
|
+ "kind": {
|
|
|
|
|
+ "const": "Switch"
|
|
|
|
|
+ },
|
|
|
|
|
+ "model": {
|
|
|
|
|
+ "type": "string"
|
|
|
|
|
+ },
|
|
|
|
|
+ "managed": {
|
|
|
|
|
+ "type": "boolean"
|
|
|
|
|
+ },
|
|
|
|
|
+ "poe": {
|
|
|
|
|
+ "type": "boolean"
|
|
|
|
|
+ },
|
|
|
|
|
+ "ports": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/port"
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
"unevaluatedProperties": false
|
|
"unevaluatedProperties": false
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"accessPoint": {
|
|
"accessPoint": {
|
|
|
"allOf": [
|
|
"allOf": [
|
|
|
- { "$ref": "#/$defs/resourceBase" },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/resourceBase"
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "kind": { "const": "AccessPoint" },
|
|
|
|
|
-
|
|
|
|
|
- "model": { "type": "string" },
|
|
|
|
|
- "speed": { "type": "number", "minimum": 0 }
|
|
|
|
|
|
|
+ "kind": {
|
|
|
|
|
+ "const": "AccessPoint"
|
|
|
|
|
+ },
|
|
|
|
|
+ "model": {
|
|
|
|
|
+ "type": "string"
|
|
|
|
|
+ },
|
|
|
|
|
+ "speed": {
|
|
|
|
|
+ "type": "number",
|
|
|
|
|
+ "minimum": 0
|
|
|
|
|
+ },
|
|
|
|
|
+ "ports": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/port"
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
"unevaluatedProperties": false
|
|
"unevaluatedProperties": false
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"ups": {
|
|
"ups": {
|
|
|
"allOf": [
|
|
"allOf": [
|
|
|
- { "$ref": "#/$defs/resourceBase" },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/resourceBase"
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "kind": { "const": "Ups" },
|
|
|
|
|
-
|
|
|
|
|
- "model": { "type": "string" },
|
|
|
|
|
- "va": { "type": "integer", "minimum": 1 }
|
|
|
|
|
|
|
+ "kind": {
|
|
|
|
|
+ "const": "Ups"
|
|
|
|
|
+ },
|
|
|
|
|
+ "model": {
|
|
|
|
|
+ "type": "string"
|
|
|
|
|
+ },
|
|
|
|
|
+ "va": {
|
|
|
|
|
+ "type": "integer",
|
|
|
|
|
+ "minimum": 1
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
"unevaluatedProperties": false
|
|
"unevaluatedProperties": false
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"other": {
|
|
"other": {
|
|
|
"allOf": [
|
|
"allOf": [
|
|
|
- { "$ref": "#/$defs/resourceBase" },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/resourceBase"
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "kind": { "const": "Other" },
|
|
|
|
|
-
|
|
|
|
|
- "model": { "type": "string" },
|
|
|
|
|
- "description": { "type": "string" }
|
|
|
|
|
|
|
+ "kind": {
|
|
|
|
|
+ "const": "Other"
|
|
|
|
|
+ },
|
|
|
|
|
+ "model": {
|
|
|
|
|
+ "type": "string"
|
|
|
|
|
+ },
|
|
|
|
|
+ "description": {
|
|
|
|
|
+ "type": "string"
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
"unevaluatedProperties": false
|
|
"unevaluatedProperties": false
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"service": {
|
|
"service": {
|
|
|
"allOf": [
|
|
"allOf": [
|
|
|
- { "$ref": "#/$defs/resourceBase" },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/resourceBase"
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
- "required": ["network"],
|
|
|
|
|
|
|
+ "required": [
|
|
|
|
|
+ "network"
|
|
|
|
|
+ ],
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "kind": { "const": "Service" },
|
|
|
|
|
- "network": { "$ref": "#/$defs/network" }
|
|
|
|
|
|
|
+ "kind": {
|
|
|
|
|
+ "const": "Service"
|
|
|
|
|
+ },
|
|
|
|
|
+ "network": {
|
|
|
|
|
+ "$ref": "#/$defs/network"
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
"unevaluatedProperties": false
|
|
"unevaluatedProperties": false
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
"system": {
|
|
"system": {
|
|
|
"allOf": [
|
|
"allOf": [
|
|
|
- { "$ref": "#/$defs/resourceBase" },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ "$ref": "#/$defs/resourceBase"
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
"type": "object",
|
|
"type": "object",
|
|
|
- "required": ["type", "os", "cores", "ram"],
|
|
|
|
|
|
|
+ "required": [
|
|
|
|
|
+ "type",
|
|
|
|
|
+ "os",
|
|
|
|
|
+ "cores",
|
|
|
|
|
+ "ram"
|
|
|
|
|
+ ],
|
|
|
"properties": {
|
|
"properties": {
|
|
|
- "kind": { "const": "System" },
|
|
|
|
|
-
|
|
|
|
|
|
|
+ "kind": {
|
|
|
|
|
+ "const": "System"
|
|
|
|
|
+ },
|
|
|
"type": {
|
|
"type": {
|
|
|
"type": "string",
|
|
"type": "string",
|
|
|
"enum": [
|
|
"enum": [
|
|
|
- "baremetal", "Baremetal",
|
|
|
|
|
- "hypervisor", "Hypervisor",
|
|
|
|
|
- "vm", "VM",
|
|
|
|
|
- "container", "embedded", "cloud", "other"
|
|
|
|
|
|
|
+ "baremetal",
|
|
|
|
|
+ "Baremetal",
|
|
|
|
|
+ "cluster",
|
|
|
|
|
+ "Cluster",
|
|
|
|
|
+ "hypervisor",
|
|
|
|
|
+ "Hypervisor",
|
|
|
|
|
+ "vm",
|
|
|
|
|
+ "VM",
|
|
|
|
|
+ "container",
|
|
|
|
|
+ "embedded",
|
|
|
|
|
+ "cloud",
|
|
|
|
|
+ "other"
|
|
|
]
|
|
]
|
|
|
},
|
|
},
|
|
|
- "os": { "type": "string" },
|
|
|
|
|
- "cores": { "type": "integer", "minimum": 1 },
|
|
|
|
|
- "ram": { "type": "number", "minimum": 0 },
|
|
|
|
|
- "drives": { "type": "array", "items": { "$ref": "#/$defs/drive" } }
|
|
|
|
|
|
|
+ "ip": {
|
|
|
|
|
+ "type": "string",
|
|
|
|
|
+ "pattern": "^(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}$"
|
|
|
|
|
+ },
|
|
|
|
|
+ "os": {
|
|
|
|
|
+ "type": "string"
|
|
|
|
|
+ },
|
|
|
|
|
+ "cores": {
|
|
|
|
|
+ "type": "integer",
|
|
|
|
|
+ "minimum": 1
|
|
|
|
|
+ },
|
|
|
|
|
+ "ram": {
|
|
|
|
|
+ "type": "number",
|
|
|
|
|
+ "minimum": 0
|
|
|
|
|
+ },
|
|
|
|
|
+ "drives": {
|
|
|
|
|
+ "type": "array",
|
|
|
|
|
+ "items": {
|
|
|
|
|
+ "$ref": "#/$defs/drive"
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
"unevaluatedProperties": false
|
|
"unevaluatedProperties": false
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
+}
|