diff --git a/gns3server/appliances/cumulus-vx.gns3a b/gns3server/appliances/cumulus-vx.gns3a index 67910269..970b2297 100644 --- a/gns3server/appliances/cumulus-vx.gns3a +++ b/gns3server/appliances/cumulus-vx.gns3a @@ -11,19 +11,27 @@ "status": "stable", "maintainer": "GNS3 Team", "maintainer_email": "developers@gns3.net", - "usage": "Default username is cumulus and password is CumulusLinux!", + "usage": "Default username is cumulus and password is CumulusLinux! in version 4.1 and earlier, and cumulus in version 4.2 and later.", "first_port_name": "eth0", "port_name_format": "swp{port1}", "qemu": { "adapter_type": "virtio-net-pci", "adapters": 7, - "ram": 512, + "ram": 768, "hda_disk_interface": "ide", "arch": "x86_64", "console_type": "telnet", "kvm": "require" }, "images": [ + { + "filename": "cumulus-linux-4.3.0-vx-amd64-qemu.qcow2", + "version": "4.3.0", + "md5sum": "aba2f0bb462b26a208afb6202bc97d51", + "filesize": 2819325952, + "download_url": "https://cumulusnetworks.com/cumulus-vx/download/", + "direct_download_url": "https://d2cd9e7ca6hntp.cloudfront.net/public/CumulusLinux-4.3.0/cumulus-linux-4.3.0-vx-amd64-qemu.qcow2" + }, { "filename": "cumulus-linux-4.2.0-vx-amd64-qemu.qcow2", "version": "4.2.0", @@ -222,6 +230,12 @@ } ], "versions": [ + { + "name": "4.3.0", + "images": { + "hda_disk_image": "cumulus-linux-4.3.0-vx-amd64-qemu.qcow2" + } + }, { "name": "4.2.0", "images": { diff --git a/gns3server/appliances/ubuntu-cloud.gns3a b/gns3server/appliances/ubuntu-cloud.gns3a index d941143e..4fbc7ae2 100644 --- a/gns3server/appliances/ubuntu-cloud.gns3a +++ b/gns3server/appliances/ubuntu-cloud.gns3a @@ -25,6 +25,13 @@ "options": "-nographic" }, "images": [ + { + "filename": "ubuntu-20.04-server-cloudimg-amd64.img", + "version": "20.04 (LTS)", + "md5sum": "044bc979b2238192ee3edb44e2bb6405", + "filesize": 552337408, + "download_url": "https://cloud-images.ubuntu.com/releases/focal/release-20210119.1/ubuntu-20.04-server-cloudimg-amd64.img" + }, { "filename": "ubuntu-18.04-server-cloudimg-amd64.img", "version": "18.04 (LTS)", @@ -62,6 +69,13 @@ } ], "versions": [ + { + "name": "20.04 (LTS)", + "images": { + "hda_disk_image": "ubuntu-20.04-server-cloudimg-amd64.img", + "cdrom_image": "ubuntu-cloud-init-data.iso" + } + }, { "name": "18.04 (LTS)", "images": { diff --git a/gns3server/schemas/cloud_templates.py b/gns3server/schemas/cloud_templates.py index 99d12322..5d654e9c 100644 --- a/gns3server/schemas/cloud_templates.py +++ b/gns3server/schemas/cloud_templates.py @@ -28,7 +28,7 @@ class CloudTemplate(TemplateBase): category: Optional[Category] = "guest" default_name_format: Optional[str] = "Cloud{0}" symbol: Optional[str] = ":/symbols/cloud.svg" - ports_mapping: List[Union[EthernetPort, TAPPort, UDPPort]] = [] + ports_mapping: List[Union[EthernetPort, TAPPort, UDPPort]] = Field(default_factory=list) remote_console_host: Optional[str] = Field("127.0.0.1", description="Remote console host or IP") remote_console_port: Optional[int] = Field(23, gt=0, le=65535, description="Remote console TCP port") remote_console_type: Optional[CloudConsoleType] = Field("none", description="Remote console type") diff --git a/gns3server/schemas/docker_templates.py b/gns3server/schemas/docker_templates.py index 1a4784e4..1fdfae70 100644 --- a/gns3server/schemas/docker_templates.py +++ b/gns3server/schemas/docker_templates.py @@ -43,4 +43,4 @@ class DockerTemplate(TemplateBase): extra_volumes: Optional[List] = Field([], description="Additional directories to make persistent") memory: Optional[int] = Field(0, description="Maximum amount of memory the container can use in MB") cpus: Optional[int] = Field(0, description="Maximum amount of CPU resources the container can use") - custom_adapters: Optional[List[CustomAdapter]] = Field([], description="Custom adapters") + custom_adapters: Optional[List[CustomAdapter]] = Field(default_factory=list, description="Custom adapters") diff --git a/gns3server/schemas/qemu_templates.py b/gns3server/schemas/qemu_templates.py index 49e00df8..52303781 100644 --- a/gns3server/schemas/qemu_templates.py +++ b/gns3server/schemas/qemu_templates.py @@ -73,4 +73,4 @@ class QemuTemplate(TemplateBase): cpu_throttling: Optional[int] = Field(0, ge=0, le=800, description="Percentage of CPU allowed for QEMU") process_priority: Optional[QemuProcessPriority] = Field("normal", description="Process priority for QEMU") options: Optional[str] = Field("", description="Additional QEMU options") - custom_adapters: Optional[List[CustomAdapter]] = Field([], description="Custom adapters") + custom_adapters: Optional[List[CustomAdapter]] = Field(default_factory=list, description="Custom adapters") diff --git a/gns3server/schemas/virtualbox_templates.py b/gns3server/schemas/virtualbox_templates.py index 1f0af97e..12e35fa3 100644 --- a/gns3server/schemas/virtualbox_templates.py +++ b/gns3server/schemas/virtualbox_templates.py @@ -45,4 +45,4 @@ class VirtualBoxTemplate(TemplateBase): on_close: Optional[VirtualBoxOnCloseAction] = Field("power_off", description="Action to execute on the VM is closed") console_type: Optional[VirtualBoxConsoleType] = Field("none", description="Console type") console_auto_start: Optional[bool] = Field(False, description="Automatically start the console when the node has started") - custom_adapters: Optional[List[CustomAdapter]] = Field([], description="Custom adapters") + custom_adapters: Optional[List[CustomAdapter]] = Field(default_factory=list, description="Custom adapters") diff --git a/gns3server/schemas/vmware_templates.py b/gns3server/schemas/vmware_templates.py index 9bde28a3..67d2aeae 100644 --- a/gns3server/schemas/vmware_templates.py +++ b/gns3server/schemas/vmware_templates.py @@ -45,4 +45,4 @@ class VMwareTemplate(TemplateBase): on_close: Optional[VMwareOnCloseAction] = Field("power_off", description="Action to execute on the VM is closed") console_type: Optional[VMwareConsoleType] = Field("none", description="Console type") console_auto_start: Optional[bool] = Field(False, description="Automatically start the console when the node has started") - custom_adapters: Optional[List[CustomAdapter]] = Field([], description="Custom adapters") + custom_adapters: Optional[List[CustomAdapter]] = Field(default_factory=list, description="Custom adapters")