gns3-server 3.0.0b2__py3-none-any.whl → 3.0.0b3__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 (45) hide show
  1. {gns3_server-3.0.0b2.dist-info → gns3_server-3.0.0b3.dist-info}/METADATA +8 -8
  2. {gns3_server-3.0.0b2.dist-info → gns3_server-3.0.0b3.dist-info}/RECORD +44 -27
  3. gns3server/api/routes/compute/dynamips_nodes.py +2 -2
  4. gns3server/api/routes/controller/images.py +4 -2
  5. gns3server/appliances/arista-veos.gns3a +178 -2
  6. gns3server/appliances/asterfusion-vAsterNOS.gns3a +2 -2
  7. gns3server/appliances/cisco-c8000v.gns3a +14 -1
  8. gns3server/appliances/openvswitch-management.gns3a +1 -1
  9. gns3server/appliances/opnsense.gns3a +2 -2
  10. gns3server/compute/docker/__init__.py +1 -1
  11. gns3server/compute/dynamips/__init__.py +4 -0
  12. gns3server/compute/iou/iou_vm.py +2 -1
  13. gns3server/controller/snapshot.py +3 -3
  14. gns3server/controller/symbol_themes.py +7 -0
  15. gns3server/controller/udp_link.py +1 -1
  16. gns3server/crash_report.py +1 -1
  17. gns3server/schemas/controller/templates/__init__.py +0 -1
  18. gns3server/services/authentication.py +2 -2
  19. gns3server/services/templates.py +1 -1
  20. gns3server/static/web-ui/index.html +1 -1
  21. gns3server/static/web-ui/main.f3840f9b1c0240e6.js +1 -0
  22. gns3server/symbols/affinity/circle/blue/nat.svg +60 -0
  23. gns3server/symbols/affinity/circle/blue/nat2.svg +55 -0
  24. gns3server/symbols/affinity/circle/gray/nat.svg +60 -0
  25. gns3server/symbols/affinity/circle/gray/nat2.svg +55 -0
  26. gns3server/symbols/affinity/circle/green/nat.svg +60 -0
  27. gns3server/symbols/affinity/circle/green/nat2.svg +55 -0
  28. gns3server/symbols/affinity/circle/red/nat.svg +60 -0
  29. gns3server/symbols/affinity/circle/red/nat2.svg +55 -0
  30. gns3server/symbols/affinity/square/blue/nat.svg +58 -0
  31. gns3server/symbols/affinity/square/blue/nat2.svg +74 -0
  32. gns3server/symbols/affinity/square/gray/nat.svg +58 -0
  33. gns3server/symbols/affinity/square/gray/nat2.svg +74 -0
  34. gns3server/symbols/affinity/square/green/nat.svg +58 -0
  35. gns3server/symbols/affinity/square/green/nat2.svg +74 -0
  36. gns3server/symbols/affinity/square/red/nat.svg +58 -0
  37. gns3server/symbols/affinity/square/red/nat2.svg +74 -0
  38. gns3server/symbols/classic/nat.svg +207 -0
  39. gns3server/utils/images.py +3 -5
  40. gns3server/version.py +1 -1
  41. gns3server/static/web-ui/main.8e8e3d55e78d84fc.js +0 -1
  42. {gns3_server-3.0.0b2.dist-info → gns3_server-3.0.0b3.dist-info}/LICENSE +0 -0
  43. {gns3_server-3.0.0b2.dist-info → gns3_server-3.0.0b3.dist-info}/WHEEL +0 -0
  44. {gns3_server-3.0.0b2.dist-info → gns3_server-3.0.0b3.dist-info}/entry_points.txt +0 -0
  45. {gns3_server-3.0.0b2.dist-info → gns3_server-3.0.0b3.dist-info}/top_level.txt +0 -0
@@ -661,7 +661,8 @@ class IOUVM(BaseNode):
661
661
  self._telnet_server.close()
662
662
  await self._telnet_server.wait_closed()
663
663
  self._telnet_server = None
664
- await self.start_console()
664
+ if self.is_running():
665
+ await self.start_console()
665
666
 
666
667
  @locking
667
668
  async def _networking(self):
@@ -51,11 +51,11 @@ class Snapshot:
51
51
  self._project = project
52
52
  if name:
53
53
  self._name = name
54
- self._created_at = datetime.now().timestamp()
54
+ self._created_at = datetime.now(timezone.utc).timestamp()
55
55
  filename = (
56
56
  self._name
57
57
  + "_"
58
- + datetime.utcfromtimestamp(self._created_at).replace(tzinfo=None).strftime("%d%m%y_%H%M%S")
58
+ + datetime.fromtimestamp(self._created_at, tz=timezone.utc).replace(tzinfo=None).strftime("%d%m%y_%H%M%S")
59
59
  + ".gns3project"
60
60
  )
61
61
  else:
@@ -66,7 +66,7 @@ class Snapshot:
66
66
  datetime.strptime(datestring, "%d%m%y_%H%M%S").replace(tzinfo=timezone.utc).timestamp()
67
67
  )
68
68
  except ValueError:
69
- self._created_at = datetime.utcnow().timestamp()
69
+ self._created_at = datetime.now(timezone.utc)
70
70
  self._path = os.path.join(project.path, "snapshots", filename)
71
71
 
72
72
  @property
@@ -18,6 +18,7 @@
18
18
 
19
19
  CLASSIC_SYMBOL_THEME = {
20
20
  "cloud": ":/symbols/classic/cloud.svg",
21
+ "nat": ":/symbols/classic/nat.svg",
21
22
  "ethernet_switch": ":/symbols/classic/ethernet_switch.svg",
22
23
  "hub": ":/symbols/classic/hub.svg",
23
24
  "frame_relay_switch": ":/symbols/classic/frame_relay_switch.svg",
@@ -35,6 +36,7 @@ CLASSIC_SYMBOL_THEME = {
35
36
 
36
37
  AFFINITY_SQUARE_BLUE_SYMBOL_THEME = {
37
38
  "cloud": ":/symbols/affinity/square/blue/cloud.svg",
39
+ "nat": ":/symbols/affinity/square/blue/nat.svg",
38
40
  "ethernet_switch": ":/symbols/affinity/square/blue/switch.svg",
39
41
  "hub": ":/symbols/affinity/square/blue/hub.svg",
40
42
  "frame_relay_switch": ":/symbols/affinity/square/blue/isdn.svg",
@@ -52,6 +54,7 @@ AFFINITY_SQUARE_BLUE_SYMBOL_THEME = {
52
54
 
53
55
  AFFINITY_SQUARE_RED_SYMBOL_THEME = {
54
56
  "cloud": ":/symbols/affinity/square/red/cloud.svg",
57
+ "nat": ":/symbols/affinity/square/red/nat.svg",
55
58
  "ethernet_switch": ":/symbols/affinity/square/red/switch.svg",
56
59
  "hub": ":/symbols/affinity/square/red/hub.svg",
57
60
  "frame_relay_switch": ":/symbols/affinity/square/red/isdn.svg",
@@ -69,6 +72,7 @@ AFFINITY_SQUARE_RED_SYMBOL_THEME = {
69
72
 
70
73
  AFFINITY_SQUARE_GRAY_SYMBOL_THEME = {
71
74
  "cloud": ":/symbols/affinity/square/gray/cloud.svg",
75
+ "nat": ":/symbols/affinity/square/gray/nat.svg",
72
76
  "ethernet_switch": ":/symbols/affinity/square/gray/switch.svg",
73
77
  "hub": ":/symbols/affinity/square/gray/hub.svg",
74
78
  "frame_relay_switch": ":/symbols/affinity/square/gray/isdn.svg",
@@ -86,6 +90,7 @@ AFFINITY_SQUARE_GRAY_SYMBOL_THEME = {
86
90
 
87
91
  AFFINITY_CIRCLE_BLUE_SYMBOL_THEME = {
88
92
  "cloud": ":/symbols/affinity/circle/blue/cloud.svg",
93
+ "nat": ":/symbols/affinity/circle/blue/nat.svg",
89
94
  "ethernet_switch": ":/symbols/affinity/circle/blue/switch.svg",
90
95
  "hub": ":/symbols/affinity/circle/blue/hub.svg",
91
96
  "frame_relay_switch": ":/symbols/affinity/circle/blue/isdn.svg",
@@ -103,6 +108,7 @@ AFFINITY_CIRCLE_BLUE_SYMBOL_THEME = {
103
108
 
104
109
  AFFINITY_CIRCLE_RED_SYMBOL_THEME = {
105
110
  "cloud": ":/symbols/affinity/circle/red/cloud.svg",
111
+ "nat": ":/symbols/affinity/circle/red/nat.svg",
106
112
  "ethernet_switch": ":/symbols/affinity/circle/red/switch.svg",
107
113
  "hub": ":/symbols/affinity/circle/red/hub.svg",
108
114
  "frame_relay_switch": ":/symbols/affinity/circle/red/isdn.svg",
@@ -120,6 +126,7 @@ AFFINITY_CIRCLE_RED_SYMBOL_THEME = {
120
126
 
121
127
  AFFINITY_CIRCLE_GRAY_SYMBOL_THEME = {
122
128
  "cloud": ":/symbols/affinity/circle/gray/cloud.svg",
129
+ "nat": ":/symbols/affinity/circle/gray/nat.svg",
123
130
  "ethernet_switch": ":/symbols/affinity/circle/gray/switch.svg",
124
131
  "hub": ":/symbols/affinity/circle/gray/hub.svg",
125
132
  "frame_relay_switch": ":/symbols/affinity/circle/gray/isdn.svg",
@@ -213,7 +213,7 @@ class UDPLink(Link):
213
213
  :returns: Node where the capture should run
214
214
  """
215
215
 
216
- ALWAYS_RUNNING_NODES_TYPE = ("cloud", "nat", "ethernet_switch", "ethernet_hub")
216
+ ALWAYS_RUNNING_NODES_TYPE = ("cloud", "nat", "ethernet_switch", "ethernet_hub", "frame_relay_switch", "atm_switch")
217
217
 
218
218
  for node in self._nodes:
219
219
  if (
@@ -58,7 +58,7 @@ class CrashReport:
58
58
  Report crash to a third party service
59
59
  """
60
60
 
61
- DSN = "https://395af26fb5b2245d4c9810095aa11da9@o19455.ingest.us.sentry.io/38482"
61
+ DSN = "https://99870c759d1c1d62ceb091d59dbcfa78@o19455.ingest.us.sentry.io/38482"
62
62
  _instance = None
63
63
 
64
64
  def __init__(self):
@@ -45,7 +45,6 @@ class TemplateBase(BaseModel):
45
45
  category: Optional[Category] = None
46
46
  default_name_format: Optional[str] = None
47
47
  symbol: Optional[str] = None
48
- builtin: Optional[bool] = None
49
48
  template_type: Optional[NodeType] = None
50
49
  compute_id: Optional[str] = None
51
50
  usage: Optional[str] = ""
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
  from jose import JWTError, jwt
19
- from datetime import datetime, timedelta
19
+ from datetime import datetime, timedelta, timezone
20
20
  import bcrypt
21
21
 
22
22
  from typing import Optional
@@ -48,7 +48,7 @@ class AuthService:
48
48
 
49
49
  if not expires_in:
50
50
  expires_in = Config.instance().settings.Controller.jwt_access_token_expire_minutes
51
- expire = datetime.utcnow() + timedelta(minutes=expires_in)
51
+ expire = datetime.now(timezone.utc) + timedelta(minutes=expires_in)
52
52
  to_encode = {"sub": username, "exp": expire}
53
53
  if secret_key is None:
54
54
  secret_key = Config.instance().settings.Controller.jwt_secret_key
@@ -96,7 +96,7 @@ BUILTIN_TEMPLATES = [
96
96
  "name": "NAT",
97
97
  "default_name_format": "NAT{0}",
98
98
  "category": "guest",
99
- "symbol": "cloud",
99
+ "symbol": "nat",
100
100
  "compute_id": None,
101
101
  "builtin": True,
102
102
  },
@@ -46,6 +46,6 @@
46
46
 
47
47
  gtag('config', 'G-5D6FZL9923');
48
48
  </script>
49
- <script src="runtime.24fa95b7061d7056.js" type="module"></script><script src="polyfills.319c79dd175e50d0.js" type="module"></script><script src="main.8e8e3d55e78d84fc.js" type="module"></script>
49
+ <script src="runtime.24fa95b7061d7056.js" type="module"></script><script src="polyfills.319c79dd175e50d0.js" type="module"></script><script src="main.f3840f9b1c0240e6.js" type="module"></script>
50
50
 
51
51
  </body></html>