diff --git a/appliances/centos7.gns3a b/appliances/centos7.gns3a index a66ec8c..6761fe7 100644 --- a/appliances/centos7.gns3a +++ b/appliances/centos7.gns3a @@ -7,7 +7,7 @@ "documentation_url": "https://wiki.centos.org/", "product_name": "Centos", "product_url": "https://www.centos.org/download/", - "registry_version": 4, + "registry_version": 5, "status": "stable", "maintainer": "GNS3 Team", "maintainer_email": "developers@gns3.net", diff --git a/schemas/appliance_v5.json b/schemas/appliance_v5.json new file mode 100644 index 0000000..830f2cc --- /dev/null +++ b/schemas/appliance_v5.json @@ -0,0 +1,448 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "title": "JSON schema validating a GNS3 appliance", + + "definitions": { + "dynamips_slot": { + "enum": ["C2600-MB-2FE", "C2600-MB-1E", "PA-A1", "PA-8E", "C1700-MB-1FE", "PA-8T", "PA-2FE-TX", "PA-FE-TX", "PA-GE", "C2600-MB-2E", "C7200-IO-FE", "NM-4T", "C2600-MB-1FE", "C7200-IO-2FE", "PA-POS-OC3", "PA-4T+", "C1700-MB-WIC1", "NM-16ESW", "C7200-IO-GE-E", "NM-4E", "GT96100-FE", "NM-1FE-TX", "Leopard-2FE", "NM-1E", "PA-4E", ""] + }, + + "dynamips_wic": { + "enum": ["WIC-1ENET", "WIC-1T", "WIC-2T", ""] + } + }, + + "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, 2, 3, 4], + "title": "Version of the registry compatible with this appliance" + }, + "status": { + "enum": ["stable", "experimental", "broken"], + "title": "Document if the appliance is working or not" + }, + "availability": { + "enum": ["free", "with-registration", "free-to-try", "service-contract"], + "title": "About image availability: can be downloaded directly; download requires a free registration; paid but a trial version (time or feature limited) is available; not available publicly" + }, + "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_clone": { + "type": "boolean", + "title": "False if you don't want to use a single image for all nodes" + }, + + "docker": { + "type": "object", + "title": "Docker specific options", + "properties": { + "adapters": { + "type": "integer", + "title": "Number of ethernet adapters" + }, + "image": { + "type": "string", + "title": "Docker image in the Docker Hub" + }, + "start_command": { + "type": "string", + "title": "Command executed when the container start. Empty will use the default" + }, + "environment": { + "type": "string", + "title": "One KEY=VAR environment by line" + }, + "console_type": { + "enum": ["telnet", "vnc", "http", "https"], + "title": "Type of console connection for the administration of the appliance" + }, + "console_http_port": { + "description": "Internal port in the container of the HTTP server", + "type": "integer" + }, + "console_http_path": { + "description": "Path of the web interface", + "type": "string" + } + }, + "required": [ + "adapters", + "image" + ] + }, + "iou": { + "type": "object", + "title": "IOU specific options", + "properties": { + "ethernet_adapters": { + "type": "integer", + "title": "Number of ethernet adapters" + }, + "serial_adapters": { + "type": "integer", + "title": "Number of serial adapters" + }, + "nvram": { + "type": "integer", + "title": "Host NVRAM" + }, + "ram": { + "type": "integer", + "title": "Host RAM" + }, + "startup_config": { + "type": "string", + "title": "Config loaded at startup" + } + }, + "required": [ + "ethernet_adapters", + "serial_adapters", + "nvram", + "ram", + "startup_config" + ] + }, + "dynamips": { + "type": "object", + "title": "Dynamips specific options", + "properties": { + "chassis": { + "title": "Chassis type", + "enum": ["1720", "1721", "1750", "1751", "1760", "2610", "2620", "2610XM", "2620XM", "2650XM", "2621", "2611XM", "2621XM", "2651XM", "3620", "3640", "3660", ""] + }, + "platform": { + "title": "Platform type", + "enum": ["c1700", "c2600", "c2691", "c3725", "c3745", "c3600", "c7200"] + }, + "ram": { + "title": "Amount of ram", + "type": "integer", + "minimum": 1 + }, + "nvram": { + "title": "Amount of nvram", + "type": "integer", + "minimum": 1 + }, + "startup_config": { + "type": "string", + "title": "Config loaded at startup" + }, + "wic0": { "$ref": "#/definitions/dynamips_wic" }, + "wic1": { "$ref": "#/definitions/dynamips_wic" }, + "wic2": { "$ref": "#/definitions/dynamips_wic" }, + "slot0": { "$ref": "#/definitions/dynamips_slot" }, + "slot1": { "$ref": "#/definitions/dynamips_slot" }, + "slot2": { "$ref": "#/definitions/dynamips_slot" }, + "slot3": { "$ref": "#/definitions/dynamips_slot" }, + "slot4": { "$ref": "#/definitions/dynamips_slot" }, + "slot5": { "$ref": "#/definitions/dynamips_slot" }, + "slot6": { "$ref": "#/definitions/dynamips_slot" }, + "midplane": { "enum": ["std", "vxr"] }, + "npe": { "enum": ["npe-100", "npe-150", "npe-175", "npe-200", "npe-225", "npe-300", "npe-400", "npe-g2"] } + }, + "required": [ + "platform", + "ram", + "nvram" + ] + }, + + "qemu": { + "type": "object", + "title": "Qemu specific options", + "properties": { + "adapter_type": { + "enum": [ + "e1000", + "i82550", + "i82551", + "i82557a", + "i82557b", + "i82557c", + "i82558a", + "i82558b", + "i82559a", + "i82559b", + "i82559c", + "i82559er", + "i82562", + "i82801", + "ne2k_pci", + "pcnet", + "rtl8139", + "virtio", + "virtio-net-pci", + "vmxnet3" + ], + "title": "Type of network adapter" + }, + "adapters": { + "type": "integer", + "title": "Number of adapters" + }, + "ram": { + "type": "integer", + "title": "Ram allocated to the appliance (MB)" + }, + "cpus": { + "type": "integer", + "title": "Number of Virtual CPU" + }, + "hda_disk_interface": { + "enum": ["ide", "scsi", "sd", "mtd", "floppy", "pflash", "virtio", "sata"], + "title": "Disk interface for the installed hda_disk_image" + }, + "hdb_disk_interface": { + "enum": ["ide", "scsi", "sd", "mtd", "floppy", "pflash", "virtio", "sata"], + "title": "Disk interface for the installed hdb_disk_image" + }, + "hdc_disk_interface": { + "enum": ["ide", "scsi", "sd", "mtd", "floppy", "pflash", "virtio", "sata"], + "title": "Disk interface for the installed hdc_disk_image" + }, + "hdd_disk_interface": { + "enum": ["ide", "scsi", "sd", "mtd", "floppy", "pflash", "virtio", "sata"], + "title": "Disk interface for the installed hdd_disk_image" + }, + "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", "spice"], + "title": "Type of console connection for the administration of the appliance" + }, + "boot_priority": { + "enum": ["d", "c", "dc", "cd", "n", "nc", "nd", "cn", "dn"], + "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" + }, + "kvm": { + "title": "KVM requirements", + "enum": ["require", "allow", "disable"] + }, + "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"] + } + }, + "required": [ + "adapter_type", + "adapters", + "ram", + "arch", + "console_type", + "kvm" + ] + }, + "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", + "title": "md5sum of the file", + "type": "string", + "pattern": "^[a-f0-9]{32}$" + }, + "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", + "format": "uri", + "title": "Optional. Non authenticated url to the image file where you can download the image." + }, + "compression": { + "enum": ["bzip2", "gzip", "lzma", "xz", "rar", "zip", "7z"], + "title": "Optional, compression type of direct download url image." + } + }, + "required": [ + "filename", + "version", + "md5sum", + "filesize" + ] + } + }, + "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" + }, + "idlepc": {"type": "string", "pattern": "^0x[0-9a-f]{8}"}, + "images": { + "type": "object", + "title": "Images used for this version", + "properties": { + "kernel_image": { + "type": "string", + "title": "Kernel image" + }, + "initrd": { + "type": "string", + "title": "Initrd disk image" + }, + "image": { + "type": "string", + "title": "OS image" + }, + "bios_image": { + "type": "string", + "title": "Bios image" + }, + "hda_disk_image": { + "type": "string", + "title": "Hda 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" + } + } + } + }, + "required": [ + "name" + ] + } + } + }, + "required": [ + "name", + "category", + "description", + "vendor_name", + "vendor_url", + "product_name", + "registry_version", + "status", + "maintainer", + "maintainer_email" + ] +}