virtui-manager 1.1.6__py3-none-any.whl → 1.4.0__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.
Files changed (62) hide show
  1. {virtui_manager-1.1.6.dist-info → virtui_manager-1.4.0.dist-info}/METADATA +1 -1
  2. virtui_manager-1.4.0.dist-info/RECORD +76 -0
  3. vmanager/constants.py +739 -108
  4. vmanager/dialog.css +24 -0
  5. vmanager/firmware_manager.py +4 -1
  6. vmanager/i18n.py +32 -0
  7. vmanager/libvirt_utils.py +132 -3
  8. vmanager/locales/de/LC_MESSAGES/virtui-manager.mo +0 -0
  9. vmanager/locales/de/LC_MESSAGES/virtui-manager.po +3158 -0
  10. vmanager/locales/fr/LC_MESSAGES/virtui-manager.mo +0 -0
  11. vmanager/locales/fr/LC_MESSAGES/virtui-manager.po +3155 -0
  12. vmanager/locales/it/LC_MESSAGES/virtui-manager.mo +0 -0
  13. vmanager/locales/it/LC_MESSAGES/virtui-manager.po +3132 -0
  14. vmanager/locales/virtui-manager.pot +3033 -0
  15. vmanager/modals/bulk_modals.py +13 -12
  16. vmanager/modals/cache_stats_modal.py +6 -5
  17. vmanager/modals/capabilities_modal.py +133 -0
  18. vmanager/modals/config_modal.py +25 -24
  19. vmanager/modals/cpu_mem_pc_modals.py +22 -21
  20. vmanager/modals/custom_migration_modal.py +10 -9
  21. vmanager/modals/disk_pool_modals.py +60 -59
  22. vmanager/modals/host_dashboard_modal.py +137 -0
  23. vmanager/modals/host_stats.py +199 -0
  24. vmanager/modals/howto_disk_modal.py +2 -1
  25. vmanager/modals/howto_network_modal.py +2 -1
  26. vmanager/modals/howto_overlay_modal.py +2 -1
  27. vmanager/modals/howto_ssh_modal.py +2 -1
  28. vmanager/modals/howto_virtiofs_modal.py +2 -1
  29. vmanager/modals/input_modals.py +11 -10
  30. vmanager/modals/log_modal.py +2 -1
  31. vmanager/modals/migration_modals.py +21 -19
  32. vmanager/modals/network_modals.py +45 -36
  33. vmanager/modals/provisioning_modals.py +56 -56
  34. vmanager/modals/select_server_modals.py +8 -7
  35. vmanager/modals/selection_modals.py +7 -6
  36. vmanager/modals/server_modals.py +24 -23
  37. vmanager/modals/server_prefs_modals.py +78 -71
  38. vmanager/modals/utils_modals.py +10 -9
  39. vmanager/modals/virsh_modals.py +3 -2
  40. vmanager/modals/virtiofs_modals.py +6 -5
  41. vmanager/modals/vm_type_info_modal.py +2 -1
  42. vmanager/modals/vmanager_modals.py +19 -19
  43. vmanager/modals/vmcard_dialog.py +57 -57
  44. vmanager/modals/vmdetails_modals.py +115 -123
  45. vmanager/modals/xml_modals.py +3 -2
  46. vmanager/network_manager.py +4 -1
  47. vmanager/storage_manager.py +157 -39
  48. vmanager/utils.py +54 -7
  49. vmanager/vm_actions.py +48 -24
  50. vmanager/vm_migration.py +4 -1
  51. vmanager/vm_queries.py +67 -25
  52. vmanager/vm_service.py +8 -5
  53. vmanager/vmanager.css +55 -1
  54. vmanager/vmanager.py +247 -120
  55. vmanager/vmcard.css +3 -1
  56. vmanager/vmcard.py +270 -205
  57. vmanager/webconsole_manager.py +22 -22
  58. virtui_manager-1.1.6.dist-info/RECORD +0 -65
  59. {virtui_manager-1.1.6.dist-info → virtui_manager-1.4.0.dist-info}/WHEEL +0 -0
  60. {virtui_manager-1.1.6.dist-info → virtui_manager-1.4.0.dist-info}/entry_points.txt +0 -0
  61. {virtui_manager-1.1.6.dist-info → virtui_manager-1.4.0.dist-info}/licenses/LICENSE +0 -0
  62. {virtui_manager-1.1.6.dist-info → virtui_manager-1.4.0.dist-info}/top_level.txt +0 -0
@@ -17,7 +17,7 @@ from urllib.parse import urlparse
17
17
 
18
18
  import libvirt
19
19
 
20
- from .constants import AppInfo
20
+ from .constants import AppInfo, ErrorMessages, SuccessMessages
21
21
  from .events import VmCardUpdateRequest
22
22
  from .config import load_config, get_log_path
23
23
  from .vm_queries import get_vm_graphics_info
@@ -153,12 +153,12 @@ wp.websockify_init()
153
153
  graphics_info = get_vm_graphics_info(root)
154
154
 
155
155
  if graphics_info.get('type') != 'vnc':
156
- self.app.call_from_thread(self.app.show_error_message, "Web console only supports VNC graphics.")
156
+ self.app.call_from_thread(self.app.show_error_message, ErrorMessages.WEBCONSOLE_VNC_ONLY)
157
157
  return
158
158
 
159
159
  vnc_port = graphics_info.get('port')
160
160
  if not vnc_port or vnc_port == '-1':
161
- self.app.call_from_thread(self.app.show_error_message, "Could not determine VNC port for the VM.")
161
+ self.app.call_from_thread(self.app.show_error_message, ErrorMessages.COULD_NOT_DETERMINE_VNC_PORT)
162
162
  return
163
163
 
164
164
  is_remote_ssh = WebConsoleManager.is_remote_connection(conn.getURI())
@@ -173,7 +173,7 @@ wp.websockify_init()
173
173
  self._launch_websockify(uuid, vm_name, vnc_target_host, vnc_target_port, ssh_info)
174
174
 
175
175
  except (libvirt.libvirtError, FileNotFoundError, Exception) as e:
176
- self.app.call_from_thread(self.app.show_error_message, f"Failed to start web console: {e}")
176
+ self.app.call_from_thread(self.app.show_error_message, ErrorMessages.FAILED_TO_START_WEBCONSOLE_TEMPLATE.format(error=e))
177
177
  logging.error(f"Error during web console startup for VM {vm_name}: {e}", exc_info=True)
178
178
 
179
179
  def stop_console(self, uuid: str, vm_name: str):
@@ -217,7 +217,7 @@ wp.websockify_init()
217
217
 
218
218
  self.remove_session(uuid)
219
219
  self.app.post_message(VmCardUpdateRequest(uuid))
220
- self.app.call_from_thread(self.app.show_success_message, "Web console stopped.")
220
+ self.app.call_from_thread(self.app.show_success_message, SuccessMessages.WEBCONSOLE_STOPPED)
221
221
 
222
222
  def _get_next_available_port(self, remote_host: str | None = None) -> int | None:
223
223
  """
@@ -296,7 +296,7 @@ wp.websockify_init()
296
296
  # Find a free port for websockify on the remote server.
297
297
  web_port = self._get_next_available_port(remote_user_host)
298
298
  if not web_port:
299
- self.app.call_from_thread(self.app.show_error_message, "Could not find a free port for the web console (all ports in range used by other sessions).")
299
+ self.app.call_from_thread(self.app.show_error_message, ErrorMessages.NO_FREE_WEBCONSOLE_PORT)
300
300
  return
301
301
 
302
302
  remote_websockify_path = self.config.get('websockify_path', '/usr/bin/websockify')
@@ -342,15 +342,15 @@ wp.websockify_init()
342
342
  cert_status = stdout_lines[0]
343
343
  if "user_cert" in cert_status:
344
344
  url_scheme = "https"
345
- self.app.call_from_thread(self.app.show_success_message, "Remote user cert/key found, using secure wss connection.")
345
+ self.app.call_from_thread(self.app.show_success_message, SuccessMessages.REMOTE_USER_CERT_FOUND)
346
346
  remote_websockify_cmd_list.extend(["--cert", remote_cert_file, "--key", remote_key_file])
347
347
  elif "system_cert" in cert_status:
348
348
  url_scheme = "https"
349
- self.app.call_from_thread(self.app.show_success_message, "Remote system cert/key found, using secure wss connection.")
349
+ self.app.call_from_thread(self.app.show_success_message, SuccessMessages.REMOTE_SYSTEM_CERT_FOUND)
350
350
  remote_websockify_cmd_list.extend(["--cert", system_cert_file, "--key", system_key_file])
351
351
  else:
352
352
  # Attempt to generate keys remotely
353
- self.app.call_from_thread(self.app.show_success_message, "No remote cert/key found. Attempting to generate in system directory...")
353
+ self.app.call_from_thread(self.app.show_success_message, SuccessMessages.NO_REMOTE_CERT_FOUND_GENERATING)
354
354
  gen_msgs = generate_webconsole_keys_if_needed(config_dir="/etc/" + AppInfo.name + "/keys", remote_host=remote_user_host)
355
355
 
356
356
  failed_gen = False
@@ -366,7 +366,7 @@ wp.websockify_init()
366
366
  url_scheme = "https"
367
367
  remote_websockify_cmd_list.extend(["--cert", system_cert_file, "--key", system_key_file])
368
368
  else:
369
- self.app.call_from_thread(self.app.show_error_message, f"Remote key generation failed. Falling back to insecure ws connection.")
369
+ self.app.call_from_thread(self.app.show_error_message, ErrorMessages.REMOTE_KEY_GENERATION_FAILED)
370
370
 
371
371
  if len(stdout_lines) > 1:
372
372
  remote_novnc_path = stdout_lines[1]
@@ -381,7 +381,7 @@ wp.websockify_init()
381
381
 
382
382
  except (subprocess.CalledProcessError, subprocess.TimeoutExpired, FileNotFoundError) as e:
383
383
  logging.warning(f"Could not check for remote certs/novnc: {e}. Proceeding without SSL options and default novnc path.")
384
- self.app.call_from_thread(self.app.show_success_message, "Could not check for remote cert/key, using insecure ws connection.")
384
+ self.app.call_from_thread(self.app.show_success_message, SuccessMessages.NO_REMOTE_CERT_CHECK_INSECURE)
385
385
 
386
386
  # Build SSH command with custom port if needed
387
387
  ssh_base_args = ["ssh"]
@@ -433,7 +433,7 @@ wp.websockify_init()
433
433
  proc.stdout.close()
434
434
 
435
435
  if remote_pid is None:
436
- self.app.call_from_thread(self.app.show_error_message, f"Failed to start remote websockify for [b]{vm_name}[/b]. Check logs.")
436
+ self.app.call_from_thread(self.app.show_error_message, ErrorMessages.FAILED_TO_START_REMOTE_WEBSOCKIFY_TEMPLATE.format(vm_name=vm_name))
437
437
  try:
438
438
  proc.terminate()
439
439
  except:
@@ -448,7 +448,7 @@ wp.websockify_init()
448
448
  if result.returncode != 0:
449
449
  # Process is not alive
450
450
  logging.error(f"Remote websockify process {remote_pid} on {remote_user_host} crashed after launch.")
451
- self.app.call_from_thread(self.app.show_error_message, f"Remote web console process for [b]{vm_name}[/b] failed to start or crashed. Check remote logs.")
451
+ self.app.call_from_thread(self.app.show_error_message, ErrorMessages.REMOTE_WEBCONSOLE_CRASHED_TEMPLATE.format(vm_name=vm_name))
452
452
  # Clean up the local ssh process
453
453
  try:
454
454
  proc.terminate()
@@ -472,7 +472,7 @@ wp.websockify_init()
472
472
  )
473
473
  except:
474
474
  pass
475
- self.app.call_from_thread(self.app.show_error_message, "Could not find a free local port for SSH tunnel.")
475
+ self.app.call_from_thread(self.app.show_error_message, ErrorMessages.NO_FREE_LOCAL_PORT_FOR_SSH_TUNNEL)
476
476
  return
477
477
 
478
478
  # Create control socket for the tunnel
@@ -510,7 +510,7 @@ wp.websockify_init()
510
510
  )
511
511
  except:
512
512
  pass
513
- self.app.call_from_thread(self.app.show_error_message, f"Failed to create SSH tunnel: {e}")
513
+ self.app.call_from_thread(self.app.show_error_message, ErrorMessages.FAILED_TO_CREATE_SSH_TUNNEL_TEMPLATE.format(error=e))
514
514
  return
515
515
 
516
516
 
@@ -557,7 +557,7 @@ wp.websockify_init()
557
557
  if not is_remote_ssh:
558
558
  return vnc_target_host, vnc_port, {}
559
559
 
560
- self.app.call_from_thread(self.app.show_success_message, "Remote connection detected. Setting up SSH tunnel...")
560
+ self.app.call_from_thread(self.app.show_success_message, SuccessMessages.REMOTE_CONNECTION_SSH_TUNNEL_SETUP)
561
561
  parsed_uri = urlparse(conn.getURI())
562
562
  user = parsed_uri.username
563
563
  host = parsed_uri.hostname
@@ -569,7 +569,7 @@ wp.websockify_init()
569
569
 
570
570
  tunnel_port = self._get_next_available_port(None)
571
571
  if not tunnel_port:
572
- self.app.call_from_thread(self.app.show_error_message, "Could not find a free port for the SSH tunnel.")
572
+ self.app.call_from_thread(self.app.show_error_message, ErrorMessages.NO_FREE_LOCAL_PORT_FOR_SSH_TUNNEL)
573
573
  return None, None, {}
574
574
 
575
575
 
@@ -591,9 +591,9 @@ wp.websockify_init()
591
591
  logging.info(f"SSH tunnel created for VM {vm_name} via {control_socket}")
592
592
  return '127.0.0.1', tunnel_port, {"control_socket": control_socket}
593
593
  except FileNotFoundError:
594
- self.app.call_from_thread(self.app.show_error_message, "SSH command not found. Cannot create tunnel.")
594
+ self.app.call_from_thread(self.app.show_error_message, ErrorMessages.SSH_COMMAND_NOT_FOUND)
595
595
  except (subprocess.CalledProcessError, subprocess.TimeoutExpired) as e:
596
- self.app.call_from_thread(self.app.show_error_message, f"Failed to create SSH tunnel...")
596
+ self.app.call_from_thread(self.app.show_error_message, ErrorMessages.FAILED_TO_CREATE_SSH_TUNNEL_GENERIC)
597
597
  logging.error(f"SSH tunnel command failed: {' '.join(ssh_cmd)}")
598
598
 
599
599
  return None, None, {}
@@ -614,7 +614,7 @@ wp.websockify_init()
614
614
  """Launches the websockify process and shows the console dialog."""
615
615
  web_port = self._get_next_available_port(None)
616
616
  if not web_port:
617
- self.app.call_from_thread(self.app.show_error_message, "Could not find a free port for the web console.")
617
+ self.app.call_from_thread(self.app.show_error_message, ErrorMessages.NO_FREE_WEBCONSOLE_PORT)
618
618
  return
619
619
 
620
620
  websockify_path = self.config.get('websockify_path', '/usr/bin/websockify')
@@ -638,7 +638,7 @@ wp.websockify_init()
638
638
  if cert_file.exists() and key_file.exists():
639
639
  websockify_cmd.extend(["--cert", str(cert_file), "--key", str(key_file)])
640
640
  url_scheme = "https"
641
- self.app.call_from_thread(self.app.show_success_message, "Found cert/key, using secure wss connection.")
641
+ self.app.call_from_thread(self.app.show_success_message, SuccessMessages.LOCAL_CERT_FOUND)
642
642
 
643
643
  # Detach local process
644
644
  proc = subprocess.Popen(
@@ -686,7 +686,7 @@ wp.websockify_init()
686
686
  subprocess.run(stop_cmd, check=True, timeout=5, capture_output=True)
687
687
  logging.info(f"SSH tunnel stopped for VM {vm_name} using socket {control_socket}")
688
688
  except FileNotFoundError:
689
- self.app.call_from_thread(self.app.show_error_message, "[b]ssh[/b] command not found.")
689
+ self.app.call_from_thread(self.app.show_error_message, ErrorMessages.SSH_COMMAND_NOT_FOUND)
690
690
  except (subprocess.CalledProcessError, subprocess.TimeoutExpired) as e:
691
691
  logging.warning(f"Could not stop SSH tunnel cleanly for VM {vm_name}: {e.stderr.decode() if e.stderr else e}")
692
692
  finally:
@@ -1,65 +0,0 @@
1
- virtui_manager-1.1.6.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
2
- vmanager/__init__.py,sha256=-gTpOgkPAOtbLwxz-U9i2uVtFW1SB9JhBguViXnQPJ8,15
3
- vmanager/config.py,sha256=OBMWtXBTnmws1ITjQ7D_C0LVMxzvGaRH8nZOlW9cbqk,3102
4
- vmanager/connection_manager.py,sha256=osk0EHJ0ua2wnDOu-9faK8fMd7s9TGsI6OtgxLAMTCI,12984
5
- vmanager/constants.py,sha256=q7oX6P0XKLOKEh6JxY1Jduhl5Q5aMFKk8DfKii7BvyM,5907
6
- vmanager/dialog.css,sha256=iWGRlTZ-D-wc2uQQTftPoqDpysrAD6qMMENE3HXXlQg,11300
7
- vmanager/events.py,sha256=yvjcYHMoDnnDKsMjfweZYnu0-U7lxQlB2uuIbtK5FeY,1556
8
- vmanager/firmware_manager.py,sha256=i64S8uPKIj-Qe-xpQYAvelOLYZc0yO31ome9qMT8ObQ,3360
9
- vmanager/libvirt_error_handler.py,sha256=aDumo2yNv9_rsbWjYtglt0ixQx8T2WTvgdEF8Uuanqw,1797
10
- vmanager/libvirt_utils.py,sha256=fj74jXP2fHrn5VRWf8kwSlf57VyvWIVZ8gF0POyPUCA,16048
11
- vmanager/network_manager.py,sha256=yMU3VXBCDDBKT2H7OL5s9XAD5uknfLPLH72e4228_Do,8627
12
- vmanager/remote_viewer.py,sha256=evFvp7ilKPuTf-YA4jCGMgO6dzdhbL1iea1lzETwWeU,89495
13
- vmanager/remote_viewer_gtk4.py,sha256=KIyejYq_PgmSL6yAUOnnloqpaIWdkYIPdoP6CmMaTOo,45994
14
- vmanager/storage_manager.py,sha256=-Z-NqRklx9PjRhbipvHReSjTDkGqv5uO79vZRAZVv0g,42195
15
- vmanager/utils.py,sha256=V3jOjBVD9Hf29hC6xIRkfPkjqx-_VL7eozMomaMqW9U,17254
16
- vmanager/virtui_dev.py,sha256=M2pJEZRNApqezkj4RdEJR9neEdc_7HV3KInVGy9QgiQ,3118
17
- vmanager/vm_actions.py,sha256=HpK7O2TtpMj-RjBGfF2hdPElwh-aIXh3HbJwjbrEs3w,117279
18
- vmanager/vm_cache.py,sha256=dxNj1TrkIAI8NW8SZj0QsfhHkjCrylQ5rgcvPN2zDnQ,1181
19
- vmanager/vm_migration.py,sha256=x0lpjAS8P_Q90nkyGA5BnR9UMrECaCy_9xvpiy4HRsM,16077
20
- vmanager/vm_provisioner.py,sha256=ZOlwHQzsa1Ur90wWtFl8oBUTfozT9wjURV6Yk1O6H84,46090
21
- vmanager/vm_queries.py,sha256=ExpcNW8c3jMDCDgkhsBXR4dKysIXd5bAw45YLqWx8jE,51227
22
- vmanager/vm_service.py,sha256=zEDkKEt1ShuA5RH9evexUTfxVWI4irHfkXCQHYmoHLA,70680
23
- vmanager/vmanager.css,sha256=bpgNxy4R4EUdO2_YR2iDU0rMdoTrurmDmG0pydkpROU,14108
24
- vmanager/vmanager.py,sha256=9WiiMJaxezCjqEJDWeHW3YR9HGBGYNAxaM_-UjT2AAE,75832
25
- vmanager/vmanager_cmd.py,sha256=IQtCozK6OvdjpIgL_umuv8LkHNk-W9DsQtsxpZ5fQRk,32161
26
- vmanager/vmcard.css,sha256=IIAzRH4GMaTD9K4qb9MEvATMgyfWdJb1bTHGm0Ebee4,3087
27
- vmanager/vmcard.py,sha256=s7zHzoDq8Ow_phm0sHzc3o08YqTCHT2MTVcmvxacpRs,98719
28
- vmanager/vmcard_pool.py,sha256=IgZZIHNNt3t8CAiKalpQpEF69KY8MZ-csuBrh71AmKM,3514
29
- vmanager/webconsole_manager.py,sha256=ZolHJRIDt5HLAjcT5-5HnEKtJPxdJlwx-yKgXBHEL4g,29028
30
- vmanager/wrapper.py,sha256=6aIz7YRN__Cl78XEBxqQ6g7tWMZ9S_8Nq6XaOtaivTM,1265
31
- vmanager/modals/__init__.py,sha256=Os1P7i7chUJCxGu4LOC_LJaJgpVOiOhxYzWNoW9Ubuw,36
32
- vmanager/modals/base_modals.py,sha256=quGmI_FnoD7UVemruvYsvtz1whhJCNVr2hzQ3tl0hak,1263
33
- vmanager/modals/bulk_modals.py,sha256=VsaOR20vVDkaqqnZhD9tJUao6WwTYmV2ZuPpnNQhnGI,3020
34
- vmanager/modals/cache_stats_modal.py,sha256=smPT_0396ilCv0DvxSj_1FE2xhFpBQj5MqG8Tdfk4ME,2318
35
- vmanager/modals/config_modal.py,sha256=DMNGqjej-nAvN9t1OqK-uaR_r6d1m4Vi1X5eX7D3ZTg,8301
36
- vmanager/modals/cpu_mem_pc_modals.py,sha256=puKOVeEqi36wzaXbKNyXjZQjCjXKntuIVTWKh5RsY38,9378
37
- vmanager/modals/custom_migration_modal.py,sha256=-kDRI8yeBJnh9jx5_ZJFWfXIfcmOZMO0dXUht3uowC8,2289
38
- vmanager/modals/disk_pool_modals.py,sha256=xme7vS52kkM4CBE3WduNfjqzJz5BAdVGxdD-HfMvw7o,28236
39
- vmanager/modals/howto_disk_modal.py,sha256=yHMy4GFB39YXV4PVFyJe2y_1WgoeBCIlwr20gZEjF5c,1193
40
- vmanager/modals/howto_network_modal.py,sha256=arSiPHlq_wW7QLzwBkH_L5O-E7UmvwMXiuaEVlAGJdk,1215
41
- vmanager/modals/howto_overlay_modal.py,sha256=EJYrrW9nJsD0qSXBKabFbAEP_R1MOodsyDxEDW-ONbc,1228
42
- vmanager/modals/howto_ssh_modal.py,sha256=e0I-ntbk8-DZSl9t2T3eKW_EBcQvVqiwdqQKa9HIylM,1177
43
- vmanager/modals/howto_virtiofs_modal.py,sha256=GSnKjSBAutOXa16EToyuOWHycLRf94Qdlnq1XcJGHd0,1209
44
- vmanager/modals/input_modals.py,sha256=PEfM2IHc8QFR4BZf5uSuJz-7uiclRq6z65cZES_GJpk,7719
45
- vmanager/modals/log_modal.py,sha256=WXzha9mm5dO9jOmTSO52gJnOmgO7ZkBRrjS2_MiYMyQ,1095
46
- vmanager/modals/migration_modals.py,sha256=MkuGeDBe1v-BxP7BjrpGB8KxQh4x-SZHHKD1c9mV5wE,20422
47
- vmanager/modals/network_modals.py,sha256=U8lKrLdW57WIpfzHDd_d5hqNTFrtWheF9CRvwnEqtzo,18506
48
- vmanager/modals/provisioning_modals.py,sha256=Yx7zO8Zvo0qVpW9ctRZg0RmzIwik-tevXADXn5AhEeg,28882
49
- vmanager/modals/select_server_modals.py,sha256=eAA9hmBjeK_2_AF7jRKyWcocj_LvmgP7ZFRp6H0NGi4,4994
50
- vmanager/modals/selection_modals.py,sha256=Pd8ZhQ-ezp2MUNT7SV0pdk2OpAYpI5YuuizaDJQTtek,6096
51
- vmanager/modals/server_modals.py,sha256=fQP8Sj7y7-i2UijS27yFvOywFAWiXdQcj27scYa2IoE,10191
52
- vmanager/modals/server_prefs_modals.py,sha256=AxRYfJm8Q-IFkKx1u3To_7yZkGhaPanabI-COdULD-k,39275
53
- vmanager/modals/utils_modals.py,sha256=ijJQZF68icCWNwmKFnoeS7avufjafc7Z4egaaB_79Xg,8675
54
- vmanager/modals/virsh_modals.py,sha256=t5TT8sNyb3vUJ0a7j6KpH8LdXAvjJ0U9L6NtulSB5x0,4782
55
- vmanager/modals/virtiofs_modals.py,sha256=R2R6Rcaeg3QLsUgC5v9BjJfvyXtXWVO_eL3iqchanuk,2145
56
- vmanager/modals/vm_type_info_modal.py,sha256=KlNGwPnpZSkkONoLI7eLp64eYgNYNlWaYiIukfugmL8,4218
57
- vmanager/modals/vmanager_modals.py,sha256=Ix4SxO_e8SfBg0B2iou6M5xk1DigO814e6iwD5kqkjY,7363
58
- vmanager/modals/vmcard_dialog.py,sha256=EYS19Ooy6KviTPLVzBjGEkALvKRYLJG9rksMHXRO0VU,18674
59
- vmanager/modals/vmdetails_modals.py,sha256=YE0u71-K-GV5n_38oIzCD2EvqTCIJmJcv3B1Ofej5Rg,149636
60
- vmanager/modals/xml_modals.py,sha256=iY981cqzVnDYOUo-kw1DHpW9I7IVAU1K7rFqqvxltOk,1653
61
- virtui_manager-1.1.6.dist-info/METADATA,sha256=rVmqF190noCHtV6z3ZsXhWjC-OoAfUmnn6pKC0-8v9c,5329
62
- virtui_manager-1.1.6.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
63
- virtui_manager-1.1.6.dist-info/entry_points.txt,sha256=hnJHxJyDFPSNdOaxmMYikXeoJMXG2llKG-l_Ygv7ges,163
64
- virtui_manager-1.1.6.dist-info/top_level.txt,sha256=fQ1nwH-4wZrf6Rc9HEHbudVahpy3TqeuMxgaaNHevxM,9
65
- virtui_manager-1.1.6.dist-info/RECORD,,