gns3-registry/schemas/appliance.json
2015-10-28 15:55:05 +01:00

265 lines
7.4 KiB
JSON

{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"title": "JSON schema validating a GNS3 appliance",
"properties": {
"name": {
"type": "string",
"title": "Appliance name"
},
"category": {
"enum": [
"router",
"multilayer_switch",
"firewall",
"guest"
],
"title": "Category of the appliance"
},
"description": {
"type": "string",
"title": "Description of the appliance. Could be a marketing description"
},
"vendor_name": {
"type": "string",
"title": "Name of the vendor"
},
"vendor_url": {
"type": "string",
"format": "uri",
"title": "Website of the vendor"
},
"documentation_url": {
"type": "string",
"format": "uri",
"title": "An optional documentation for using the appliance on vendor website"
},
"product_name": {
"type": "string",
"title": "Product name"
},
"product_url": {
"type": "string",
"format": "uri",
"title": "An optional product url on vendor website"
},
"registry_version": {
"enum": [1],
"title": "Version of the registry compatible with this appliance"
},
"status": {
"enum": ["stable", "experimental", "broken"],
"title": "Document if the appliance is working or not"
},
"maintainer": {
"type": "string",
"title": "Maintainer name"
},
"maintainer_email": {
"type": "string",
"format": "email",
"title": "Maintainer email"
},
"usage": {
"type": "string",
"title": "How to use the appliance"
},
"symbol": {
"type": "string",
"title": "An optional symbol for the appliance"
},
"first_port_name": {
"type": "string",
"title": "Optional name of the first networking port example: eth0"
},
"port_name_format": {
"type": "string",
"title": "Optional formating of the networking port example: eth{0}"
},
"port_segment_size": {
"type": "integer",
"title": "Optional port segment size. A port segment is a block of port. For example Ethernet0/0 Ethernet0/1 is the module 0 with a port segment size of 2"
},
"linked_base": {
"type": "boolean",
"title": "False if you don't want to use a single image for all nodes"
},
"qemu": {
"type": "object",
"title": "Qemu specific options",
"properties": {
"adapter_type": {
"enum": ["e1000", "i82551", "i82557b", "i82559er", "ne2k_pci", "pcnet", "rtl8139", "virtio", "virtio-net-pci"],
"title": "Type of network adapter"
},
"adapters": {
"type": "integer",
"title": "Number of adapters"
},
"ram": {
"type": "integer",
"title": "Ram allocated to the appliance (MB)"
},
"arch": {
"enum": ["aarch64", "alpha", "arm", "cris", "i386", "lm32", "m68k", "microblaze", "microblazeel", "mips", "mips64", "mips64el", "mipsel", "moxie", "or32", "ppc", "ppc64", "ppcemb", "s390x", "sh4", "sh4eb", "sparc", "sparc64", "tricore", "unicore32", "x86_64", "xtensa", "xtensaeb"],
"title": "Architecture emulated"
},
"console_type": {
"enum": ["telnet", "vnc"],
"title": "Type of console connection for the administration of the appliance"
},
"boot_priority": {
"type": "string",
"title": "Optional define the disk boot priory. Refer to -boot option in qemu manual for more details."
},
"kernel_command_line": {
"type": "string",
"title": "Command line parameters send to the kernel"
},
"options": {
"type": "string",
"title": "Optional additional qemu command line options"
},
"cpu_throttling": {
"type": "number",
"minimum": 0,
"maximum": 100,
"title": "Throttle the CPU"
},
"process_priority": {
"title": "Process priority for QEMU",
"enum": ["realtime",
"very high",
"high",
"normal",
"low",
"very low",
"null"]
}
},
"additionalProperties": false,
"required": [
"adapter_type",
"adapters",
"ram",
"arch",
"console_type"
]
},
"images": {
"type": "array",
"title": "Images for this appliance",
"items": {
"type": "object",
"title": "An image file",
"properties": {
"filename": {
"type": "string",
"title": "Filename"
},
"version": {
"type": "string",
"title": "Version of the file"
},
"md5sum": {
"type": "string",
"format": "md5",
"title": "md5sum of the file"
},
"filesize": {
"type": "integer",
"title": "File size in bytes"
},
"download_url": {
"type": "string",
"format": "uri",
"title": "Download url where you can download the appliance from a browser"
},
"direct_download_url": {
"type": "string",
"title": "Optional. Non authenticated url to the image file where you can download the image."
}
},
"additionalProperties": false,
"required": [
"filename",
"version",
"md5sum",
"filesize",
"download_url"
]
}
},
"versions": {
"type": "array",
"title": "Versions of the appliance",
"items": {
"type": "object",
"title": "A version of the appliance",
"properties": {
"name": {
"type": "string",
"title": "Name of the version"
},
"images": {
"type": "object",
"title": "Images used for this version",
"properties": {
"kernel_image": {
"type": "string",
"title": "Kernel image"
},
"initrd": {
"type": "string",
"title": "Initrd disk image"
},
"hda_disk_image": {
"type": "string",
"title": "Hdb disk image"
},
"hdb_disk_image": {
"type": "string",
"title": "Hdc disk image"
},
"hdc_disk_image": {
"type": "string",
"title": "Hdd disk image"
},
"hdd_disk_image": {
"type": "string",
"title": "Hdd diskimage"
},
"cdrom_image": {
"type": "string",
"title": "cdrom image"
}
},
"additionalProperties": false
}
},
"required": [
"name"
],
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": [
"name",
"category",
"description",
"vendor_name",
"vendor_url",
"product_name",
"registry_version",
"status",
"maintainer",
"maintainer_email",
"qemu",
"images",
"versions"
]
}