{ "$schema": "http://json-schema.org/schema#", "$id": "Storage", "type": "object", "properties": { "name": { "description": "Name of the datacenter that acts as identifier", "type": "string", "$comment": "Maybe we should use a different tag as id" }, "description": { "type": "string", "description": "General description of the processing unit" }, "cpu": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "$comment": "If we use array to define multiple types of CPU (separated through motherboards?), we should use a id to be able to reffer to them" }, "cores": { "type": "integer" }, "architecture": { "type": "string", "enum": [ "amd64", "i386", "armv5", "armv7", "amr64v8", "s390x", "ppc64le" ] }, "shared": { "type": "boolean" }, "minimum_memory": { "type": "integer", "$comment": "I'm not sure if a CPU requires a minimum RAM to work or is just limited to the motherboard where it's installed" }, "platform": { "type": "object", "$comment": "Some CPU extensions are related to CPU platform" } } } }, "memory": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "$comment": "Same problem as with cpu[].id" }, "size": { "type": "integer", "description": "Amount of memory in GiB" }, "ecc": { "type": "boolean" } } } }, "gpu": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "$comment": "Same problem as with cpu[].id" }, "memory": { "type": "integer", "description": "Amount of memory in GiB" }, "cores": { "type": "integer", "description": "Amount of core units" }, "model": { "type": "object" } } } }, "disk": { "$comment": "Should a datacenter have it's own definition of storage or directly refer to storage.json# ?" }, "network": { "type": "object", "properties": { "wan": { "type": "array", "$comment": "Not sure if we need expose to the user the IP address, since we are inside virtualized network/cloud", "items": { "type": "object", "properties": { "ip": { "type": "integer", "description": "IP address expressed in deciman notation" }, "ipv6": { "type": "boolean" }, "bandwitch": { "type": "integer", "description": "Bandwith described in Mbps" } } } }, "lan": { "$comment": "Should be described?" } } }, "booking_price": { "type": "object" }, "processing_units": { "type": "array", "$comment": "A datacenter object can have multiple process units associated to him", "items": { "$ref": "processing.json#" } }, "owner": { "type": "object" } } }