gns3-server 3.0.0rc1__py3-none-any.whl → 3.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of gns3-server might be problematic. Click here for more details.

Files changed (89) hide show
  1. {gns3_server-3.0.0rc1.dist-info → gns3_server-3.0.1.dist-info}/METADATA +20 -19
  2. {gns3_server-3.0.0rc1.dist-info → gns3_server-3.0.1.dist-info}/RECORD +89 -79
  3. {gns3_server-3.0.0rc1.dist-info → gns3_server-3.0.1.dist-info}/WHEEL +1 -1
  4. gns3server/api/routes/compute/cloud_nodes.py +1 -1
  5. gns3server/api/routes/compute/docker_nodes.py +3 -0
  6. gns3server/api/routes/compute/nat_nodes.py +1 -1
  7. gns3server/api/routes/compute/vmware_nodes.py +1 -1
  8. gns3server/api/routes/compute/vpcs_nodes.py +10 -4
  9. gns3server/api/routes/controller/projects.py +29 -3
  10. gns3server/api/routes/controller/users.py +2 -2
  11. gns3server/api/routes/index.py +3 -3
  12. gns3server/api/server.py +38 -3
  13. gns3server/appliances/almalinux.gns3a +6 -6
  14. gns3server/appliances/arista-veos.gns3a +20 -514
  15. gns3server/appliances/cisco-7200.gns3a +26 -0
  16. gns3server/appliances/cisco-asav.gns3a +14 -1
  17. gns3server/appliances/cisco-csr1000v.gns3a +28 -2
  18. gns3server/appliances/cisco-iou-l2.gns3a +16 -4
  19. gns3server/appliances/cisco-iou-l3.gns3a +16 -4
  20. gns3server/appliances/cisco-vWLC.gns3a +29 -1
  21. gns3server/appliances/fortigate.gns3a +3 -3
  22. gns3server/appliances/hbcd-pe.gns3a +62 -0
  23. gns3server/appliances/innovaphone-app.gns3a +50 -0
  24. gns3server/appliances/innovaphone-ipva.gns3a +78 -0
  25. gns3server/appliances/mikrotik-chr.gns3a +30 -99
  26. gns3server/appliances/nixos.gns3a +52 -0
  27. gns3server/appliances/opnsense.gns3a +13 -0
  28. gns3server/appliances/pfsense.gns3a +14 -0
  29. gns3server/appliances/reactos.gns3a +10 -10
  30. gns3server/appliances/truenas.gns3a +104 -0
  31. gns3server/appliances/ubuntu-cloud.gns3a +35 -20
  32. gns3server/appliances/ubuntu-gui.gns3a +13 -0
  33. gns3server/appliances/viptela-edge-genericx86-64.gns3a +28 -2
  34. gns3server/appliances/viptela-smart-genericx86-64.gns3a +27 -1
  35. gns3server/appliances/viptela-vmanage-genericx86-64.gns3a +32 -4
  36. gns3server/appliances/vyos.gns3a +95 -98
  37. gns3server/compute/base_node.py +1 -0
  38. gns3server/compute/docker/docker_vm.py +56 -2
  39. gns3server/compute/docker/resources/init.sh +5 -2
  40. gns3server/compute/dynamips/__init__.py +0 -4
  41. gns3server/compute/dynamips/nodes/router.py +20 -0
  42. gns3server/compute/iou/iou_vm.py +22 -12
  43. gns3server/compute/notification_manager.py +2 -2
  44. gns3server/compute/qemu/qemu_vm.py +0 -5
  45. gns3server/controller/__init__.py +35 -25
  46. gns3server/controller/appliance_manager.py +2 -4
  47. gns3server/controller/compute.py +1 -1
  48. gns3server/controller/export_project.py +18 -14
  49. gns3server/controller/import_project.py +21 -0
  50. gns3server/controller/node.py +10 -8
  51. gns3server/controller/notification.py +4 -4
  52. gns3server/controller/project.py +88 -5
  53. gns3server/controller/symbols.py +1 -1
  54. gns3server/controller/topology.py +1 -1
  55. gns3server/crash_report.py +1 -1
  56. gns3server/db/models/templates.py +1 -0
  57. gns3server/db/repositories/pools.py +1 -1
  58. gns3server/db/tasks.py +1 -1
  59. gns3server/db_migrations/versions/9a5292aa4389_add_mac_address_field_in_docker_.py +27 -0
  60. gns3server/disks/empty100G.qcow2 +0 -0
  61. gns3server/disks/empty200G.qcow2 +0 -0
  62. gns3server/disks/empty30G.qcow2 +0 -0
  63. gns3server/disks/empty8G.qcow2 +0 -0
  64. gns3server/schemas/compute/docker_nodes.py +1 -0
  65. gns3server/schemas/compute/ethernet_switch_nodes.py +1 -1
  66. gns3server/schemas/config.py +1 -1
  67. gns3server/schemas/controller/templates/cloud_templates.py +2 -2
  68. gns3server/schemas/controller/templates/docker_templates.py +4 -3
  69. gns3server/schemas/controller/templates/dynamips_templates.py +5 -5
  70. gns3server/schemas/controller/templates/ethernet_hub_templates.py +1 -1
  71. gns3server/schemas/controller/templates/ethernet_switch_templates.py +2 -2
  72. gns3server/schemas/controller/templates/iou_templates.py +2 -2
  73. gns3server/schemas/controller/templates/qemu_templates.py +12 -12
  74. gns3server/schemas/controller/templates/virtualbox_templates.py +4 -5
  75. gns3server/schemas/controller/templates/vmware_templates.py +4 -4
  76. gns3server/schemas/controller/templates/vpcs_templates.py +2 -2
  77. gns3server/static/favicon.ico +0 -0
  78. gns3server/static/redoc.standalone.js +1782 -0
  79. gns3server/static/swagger-ui-bundle.js +2 -0
  80. gns3server/static/swagger-ui.css +3 -0
  81. gns3server/static/web-ui/index.html +1 -1
  82. gns3server/static/web-ui/{main.4185a8e61824af0d.js → main.e55eeff5c0ba1cf4.js} +1 -1
  83. gns3server/utils/__init__.py +12 -0
  84. gns3server/utils/asyncio/aiozipstream.py +15 -11
  85. gns3server/utils/images.py +45 -35
  86. gns3server/version.py +2 -2
  87. {gns3_server-3.0.0rc1.dist-info → gns3_server-3.0.1.dist-info}/LICENSE +0 -0
  88. {gns3_server-3.0.0rc1.dist-info → gns3_server-3.0.1.dist-info}/entry_points.txt +0 -0
  89. {gns3_server-3.0.0rc1.dist-info → gns3_server-3.0.1.dist-info}/top_level.txt +0 -0
@@ -29,13 +29,13 @@ from typing import Optional, Union, List
29
29
 
30
30
  class CloudTemplate(TemplateBase):
31
31
 
32
- category: Optional[Category] = "guest"
32
+ category: Optional[Category] = Category.guest
33
33
  default_name_format: Optional[str] = "Cloud{0}"
34
34
  symbol: Optional[str] = "cloud"
35
35
  ports_mapping: List[Union[EthernetPort, TAPPort, UDPPort]] = Field(default_factory=list)
36
36
  remote_console_host: Optional[str] = Field("127.0.0.1", description="Remote console host or IP")
37
37
  remote_console_port: Optional[int] = Field(23, gt=0, le=65535, description="Remote console TCP port")
38
- remote_console_type: Optional[CloudConsoleType] = Field("none", description="Remote console type")
38
+ remote_console_type: Optional[CloudConsoleType] = Field(CloudConsoleType.none, description="Remote console type")
39
39
  remote_console_http_path: Optional[str] = Field("/", description="Path of the remote web interface")
40
40
 
41
41
 
@@ -24,15 +24,16 @@ from typing import Optional, List
24
24
 
25
25
  class DockerTemplate(TemplateBase):
26
26
 
27
- category: Optional[Category] = "guest"
27
+ category: Optional[Category] = Category.guest
28
28
  default_name_format: Optional[str] = "{name}-{0}"
29
29
  symbol: Optional[str] = "docker_guest"
30
30
  image: str = Field(..., description="Docker image name")
31
31
  adapters: Optional[int] = Field(1, ge=0, le=100, description="Number of adapters")
32
+ mac_address: Optional[str] = Field("", description="Base MAC address", pattern="^([0-9a-fA-F]{2}[:]){5}([0-9a-fA-F]{2})$|^$")
32
33
  start_command: Optional[str] = Field("", description="Docker CMD entry")
33
34
  environment: Optional[str] = Field("", description="Docker environment variables")
34
- console_type: Optional[ConsoleType] = Field("telnet", description="Console type")
35
- aux_type: Optional[AuxType] = Field("none", description="Auxiliary console type")
35
+ console_type: Optional[ConsoleType] = Field(ConsoleType.telnet, description="Console type")
36
+ aux_type: Optional[AuxType] = Field(AuxType.none, description="Auxiliary console type")
36
37
  console_auto_start: Optional[bool] = Field(
37
38
  False, description="Automatically start the console when the node has started"
38
39
  )
@@ -32,7 +32,7 @@ from enum import Enum
32
32
 
33
33
  class DynamipsTemplate(TemplateBase):
34
34
 
35
- category: Optional[Category] = "router"
35
+ category: Optional[Category] = Category.router
36
36
  default_name_format: Optional[str] = "R{0}"
37
37
  symbol: Optional[str] = "router"
38
38
  platform: DynamipsPlatform = Field(..., description="Cisco router platform")
@@ -51,11 +51,11 @@ class DynamipsTemplate(TemplateBase):
51
51
  disk0: Optional[int] = Field(0, description="Disk0 size in MB")
52
52
  disk1: Optional[int] = Field(0, description="Disk1 size in MB")
53
53
  auto_delete_disks: Optional[bool] = Field(False, description="Automatically delete nvram and disk files")
54
- console_type: Optional[DynamipsConsoleType] = Field("telnet", description="Console type")
54
+ console_type: Optional[DynamipsConsoleType] = Field(DynamipsConsoleType.telnet, description="Console type")
55
55
  console_auto_start: Optional[bool] = Field(
56
56
  False, description="Automatically start the console when the node has started"
57
57
  )
58
- aux_type: Optional[DynamipsConsoleType] = Field("none", description="Auxiliary console type")
58
+ aux_type: Optional[DynamipsConsoleType] = Field(DynamipsConsoleType.none, description="Auxiliary console type")
59
59
  slot0: Optional[DynamipsAdapters] = Field(None, description="Network module slot 0")
60
60
  slot1: Optional[DynamipsAdapters] = Field(None, description="Network module slot 1")
61
61
  slot2: Optional[DynamipsAdapters] = Field(None, description="Network module slot 2")
@@ -72,8 +72,8 @@ class C7200DynamipsTemplate(DynamipsTemplate):
72
72
 
73
73
  ram: Optional[int] = Field(512, description="Amount of RAM in MB")
74
74
  nvram: Optional[int] = Field(512, description="Amount of NVRAM in KB")
75
- npe: Optional[DynamipsNPE] = Field("npe-400", description="NPE model")
76
- midplane: Optional[DynamipsMidplane] = Field("vxr", description="Midplane model")
75
+ npe: Optional[DynamipsNPE] = Field(DynamipsNPE.npe_400, description="NPE model")
76
+ midplane: Optional[DynamipsMidplane] = Field(DynamipsMidplane.vxr, description="Midplane model")
77
77
  sparsemem: Optional[bool] = Field(True, description="Sparse memory feature")
78
78
 
79
79
 
@@ -35,7 +35,7 @@ DEFAULT_PORTS = [
35
35
 
36
36
  class EthernetHubTemplate(TemplateBase):
37
37
 
38
- category: Optional[Category] = "switch"
38
+ category: Optional[Category] = Category.switch
39
39
  default_name_format: Optional[str] = "Hub{0}"
40
40
  symbol: Optional[str] = "hub"
41
41
  ports_mapping: Optional[List[EthernetHubPort]] = Field(DEFAULT_PORTS, description="Ports")
@@ -45,11 +45,11 @@ class ConsoleType(str, Enum):
45
45
 
46
46
  class EthernetSwitchTemplate(TemplateBase):
47
47
 
48
- category: Optional[Category] = "switch"
48
+ category: Optional[Category] = Category.switch
49
49
  default_name_format: Optional[str] = "Switch{0}"
50
50
  symbol: Optional[str] = "ethernet_switch"
51
51
  ports_mapping: Optional[List[EthernetSwitchPort]] = Field(DEFAULT_PORTS, description="Ports")
52
- console_type: Optional[ConsoleType] = Field("none", description="Console type")
52
+ console_type: Optional[ConsoleType] = Field(ConsoleType.none, description="Console type")
53
53
 
54
54
 
55
55
  class EthernetSwitchTemplateUpdate(EthernetSwitchTemplate):
@@ -24,7 +24,7 @@ from typing import Optional
24
24
 
25
25
  class IOUTemplate(TemplateBase):
26
26
 
27
- category: Optional[Category] = "router"
27
+ category: Optional[Category] = Category.router
28
28
  default_name_format: Optional[str] = "IOU{0}"
29
29
  symbol: Optional[str] = "multilayer_switch"
30
30
  path: str = Field(..., description="Path of IOU executable")
@@ -36,7 +36,7 @@ class IOUTemplate(TemplateBase):
36
36
  startup_config: Optional[str] = Field("iou_l3_base_startup-config.txt", description="Startup-config of IOU")
37
37
  private_config: Optional[str] = Field("", description="Private-config of IOU")
38
38
  l1_keepalives: Optional[bool] = Field(False, description="Always keep up Ethernet interface (does not always work)")
39
- console_type: Optional[ConsoleType] = Field("telnet", description="Console type")
39
+ console_type: Optional[ConsoleType] = Field(ConsoleType.telnet, description="Console type")
40
40
  console_auto_start: Optional[bool] = Field(
41
41
  False, description="Automatically start the console when the node has started"
42
42
  )
@@ -33,17 +33,17 @@ from typing import Optional, List
33
33
 
34
34
  class QemuTemplate(TemplateBase):
35
35
 
36
- category: Optional[Category] = "guest"
36
+ category: Optional[Category] = Category.guest
37
37
  default_name_format: Optional[str] = "{name}-{0}"
38
38
  symbol: Optional[str] = "qemu_guest"
39
39
  qemu_path: Optional[str] = Field("", description="Qemu executable path")
40
- platform: Optional[QemuPlatform] = Field("x86_64", description="Platform to emulate")
40
+ platform: Optional[QemuPlatform] = Field(QemuPlatform.x86_64, description="Platform to emulate")
41
41
  linked_clone: Optional[bool] = Field(True, description="Whether the VM is a linked clone or not")
42
42
  ram: Optional[int] = Field(256, description="Amount of RAM in MB")
43
43
  cpus: Optional[int] = Field(1, ge=1, le=255, description="Number of vCPUs")
44
44
  maxcpus: Optional[int] = Field(1, ge=1, le=255, description="Maximum number of hotpluggable vCPUs")
45
45
  adapters: Optional[int] = Field(1, ge=0, le=275, description="Number of adapters")
46
- adapter_type: Optional[QemuAdapterType] = Field("e1000", description="QEMU adapter type")
46
+ adapter_type: Optional[QemuAdapterType] = Field(QemuAdapterType.e1000, description="QEMU adapter type")
47
47
  mac_address: Optional[str] = Field(
48
48
  "", description="QEMU MAC address", pattern="^([0-9a-fA-F]{2}[:]){5}([0-9a-fA-F]{2})$|^$"
49
49
  )
@@ -55,20 +55,20 @@ class QemuTemplate(TemplateBase):
55
55
  0,
56
56
  description="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",
57
57
  )
58
- console_type: Optional[QemuConsoleType] = Field("telnet", description="Console type")
58
+ console_type: Optional[QemuConsoleType] = Field(QemuConsoleType.telnet, description="Console type")
59
59
  console_auto_start: Optional[bool] = Field(
60
60
  False, description="Automatically start the console when the node has started"
61
61
  )
62
- aux_type: Optional[QemuConsoleType] = Field("none", description="Auxiliary console type")
63
- boot_priority: Optional[QemuBootPriority] = Field("c", description="QEMU boot priority")
62
+ aux_type: Optional[QemuConsoleType] = Field(QemuConsoleType.none, description="Auxiliary console type")
63
+ boot_priority: Optional[QemuBootPriority] = Field(QemuBootPriority.c, description="QEMU boot priority")
64
64
  hda_disk_image: Optional[str] = Field("", description="QEMU hda disk image path")
65
- hda_disk_interface: Optional[QemuDiskInterfaceType] = Field("none", description="QEMU hda interface")
65
+ hda_disk_interface: Optional[QemuDiskInterfaceType] = Field(QemuDiskInterfaceType.none, description="QEMU hda interface")
66
66
  hdb_disk_image: Optional[str] = Field("", description="QEMU hdb disk image path")
67
- hdb_disk_interface: Optional[QemuDiskInterfaceType] = Field("none", description="QEMU hdb interface")
67
+ hdb_disk_interface: Optional[QemuDiskInterfaceType] = Field(QemuDiskInterfaceType.none, description="QEMU hdb interface")
68
68
  hdc_disk_image: Optional[str] = Field("", description="QEMU hdc disk image path")
69
- hdc_disk_interface: Optional[QemuDiskInterfaceType] = Field("none", description="QEMU hdc interface")
69
+ hdc_disk_interface: Optional[QemuDiskInterfaceType] = Field(QemuDiskInterfaceType.none, description="QEMU hdc interface")
70
70
  hdd_disk_image: Optional[str] = Field("", description="QEMU hdd disk image path")
71
- hdd_disk_interface: Optional[QemuDiskInterfaceType] = Field("none", description="QEMU hdd interface")
71
+ hdd_disk_interface: Optional[QemuDiskInterfaceType] = Field(QemuDiskInterfaceType.none, description="QEMU hdd interface")
72
72
  cdrom_image: Optional[str] = Field("", description="QEMU cdrom image path")
73
73
  initrd: Optional[str] = Field("", description="QEMU initrd path")
74
74
  kernel_image: Optional[str] = Field("", description="QEMU kernel image path")
@@ -82,9 +82,9 @@ class QemuTemplate(TemplateBase):
82
82
  )
83
83
  tpm: Optional[bool] = Field(False, description="Enable Trusted Platform Module (TPM)")
84
84
  uefi: Optional[bool] = Field(False, description="Enable UEFI boot mode")
85
- on_close: Optional[QemuOnCloseAction] = Field("power_off", description="Action to execute on the VM is closed")
85
+ on_close: Optional[QemuOnCloseAction] = Field(QemuOnCloseAction.power_off, description="Action to execute on the VM is closed")
86
86
  cpu_throttling: Optional[int] = Field(0, ge=0, le=800, description="Percentage of CPU allowed for QEMU")
87
- process_priority: Optional[QemuProcessPriority] = Field("normal", description="Process priority for QEMU")
87
+ process_priority: Optional[QemuProcessPriority] = Field(QemuProcessPriority.normal, description="Process priority for QEMU")
88
88
  options: Optional[str] = Field("", description="Additional QEMU options")
89
89
  custom_adapters: Optional[List[CustomAdapter]] = Field(default_factory=list, description="Custom adapters")
90
90
 
@@ -28,7 +28,7 @@ from typing import Optional, List
28
28
 
29
29
  class VirtualBoxTemplate(TemplateBase):
30
30
 
31
- category: Optional[Category] = "guest"
31
+ category: Optional[Category] = Category.guest
32
32
  default_name_format: Optional[str] = "{name}-{0}"
33
33
  symbol: Optional[str] = "vbox_guest"
34
34
  vmname: str = Field(..., description="VirtualBox VM name (in VirtualBox itself)")
@@ -38,8 +38,7 @@ class VirtualBoxTemplate(TemplateBase):
38
38
  1, ge=0, le=36, description="Number of adapters"
39
39
  ) # 36 is the maximum given by the ICH9 chipset in VirtualBox
40
40
  use_any_adapter: Optional[bool] = Field(False, description="Allow GNS3 to use any VirtualBox adapter")
41
- adapter_type: Optional[VirtualBoxAdapterType] = Field(
42
- "Intel PRO/1000 MT Desktop (82540EM)", description="VirtualBox adapter type"
41
+ adapter_type: Optional[VirtualBoxAdapterType] = Field(VirtualBoxAdapterType.intel_pro_1000_mt_desktop, description="VirtualBox adapter type"
43
42
  )
44
43
  first_port_name: Optional[str] = Field("", description="Optional name of the first networking port example: eth0")
45
44
  port_name_format: Optional[str] = Field(
@@ -51,9 +50,9 @@ class VirtualBoxTemplate(TemplateBase):
51
50
  )
52
51
  headless: Optional[bool] = Field(False, description="Headless mode")
53
52
  on_close: Optional[VirtualBoxOnCloseAction] = Field(
54
- "power_off", description="Action to execute on the VM is closed"
53
+ VirtualBoxOnCloseAction.power_off, description="Action to execute on the VM is closed"
55
54
  )
56
- console_type: Optional[VirtualBoxConsoleType] = Field("none", description="Console type")
55
+ console_type: Optional[VirtualBoxConsoleType] = Field(VirtualBoxConsoleType.none, description="Console type")
57
56
  console_auto_start: Optional[bool] = Field(
58
57
  False, description="Automatically start the console when the node has started"
59
58
  )
@@ -29,7 +29,7 @@ from typing import Optional, List
29
29
 
30
30
  class VMwareTemplate(TemplateBase):
31
31
 
32
- category: Optional[Category] = "guest"
32
+ category: Optional[Category] = Category.guest
33
33
  default_name_format: Optional[str] = "{name}-{0}"
34
34
  symbol: Optional[str] = "vmware_guest"
35
35
  vmx_path: str = Field(..., description="Path to the vmx file")
@@ -45,11 +45,11 @@ class VMwareTemplate(TemplateBase):
45
45
  adapters: Optional[int] = Field(
46
46
  1, ge=0, le=10, description="Number of adapters"
47
47
  ) # 10 is the maximum adapters support by VMware VMs
48
- adapter_type: Optional[VMwareAdapterType] = Field("e1000", description="VMware adapter type")
48
+ adapter_type: Optional[VMwareAdapterType] = Field(VMwareAdapterType.e1000, description="VMware adapter type")
49
49
  use_any_adapter: Optional[bool] = Field(False, description="Allow GNS3 to use any VMware adapter")
50
50
  headless: Optional[bool] = Field(False, description="Headless mode")
51
- on_close: Optional[VMwareOnCloseAction] = Field("power_off", description="Action to execute on the VM is closed")
52
- console_type: Optional[VMwareConsoleType] = Field("none", description="Console type")
51
+ on_close: Optional[VMwareOnCloseAction] = Field(VMwareOnCloseAction.power_off, description="Action to execute on the VM is closed")
52
+ console_type: Optional[VMwareConsoleType] = Field(VMwareConsoleType.none, description="Console type")
53
53
  console_auto_start: Optional[bool] = Field(
54
54
  False, description="Automatically start the console when the node has started"
55
55
  )
@@ -24,11 +24,11 @@ from typing import Optional
24
24
 
25
25
  class VPCSTemplate(TemplateBase):
26
26
 
27
- category: Optional[Category] = "guest"
27
+ category: Optional[Category] = Category.guest
28
28
  default_name_format: Optional[str] = "PC{0}"
29
29
  symbol: Optional[str] = "vpcs_guest"
30
30
  base_script_file: Optional[str] = Field("vpcs_base_config.txt", description="Script file")
31
- console_type: Optional[ConsoleType] = Field("telnet", description="Console type")
31
+ console_type: Optional[ConsoleType] = Field(ConsoleType.telnet, description="Console type")
32
32
  console_auto_start: Optional[bool] = Field(
33
33
  False, description="Automatically start the console when the node has started"
34
34
  )
Binary file