[virt-tools-list] [virt-manager] [PATCH v2 2/8] create: Validate input on container bootstrap
Radostin Stoyanov
rstoyanov1 at gmail.com
Wed Jul 5 16:51:19 UTC 2017
- Show error if source URL is not provided.
- Require password for authentication to source registry when username
is provided.
- Show error if destination path is not directory.
- Show error if the user has no write permissions to destination path.
- Show Yes/No dialog if the destination directory is not empty.
---
virtManager/create.py | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)
diff --git a/virtManager/create.py b/virtManager/create.py
index af90eec..20880da 100644
--- a/virtManager/create.py
+++ b/virtManager/create.py
@@ -20,6 +20,7 @@
import logging
import pkgutil
+import os
import threading
import time
@@ -1271,6 +1272,30 @@ class vmmCreate(vmmGObjectUI):
return self._get_config_install_page() in [INSTALL_PAGE_CONTAINER_APP,
INSTALL_PAGE_CONTAINER_OS,
INSTALL_PAGE_VZ_TEMPLATE]
+
+
+ def _get_config_oscontainer_bootstrap(self):
+ return self.widget("install-oscontainer-bootstrap").get_active()
+
+
+ def _get_config_oscontainer_source_url(self):
+ return (self.widget("install-oscontainer-source-url-entry")
+ .get_text().strip())
+
+
+ def _get_config_oscontainer_source_username(self):
+ return (self.widget("install-oscontainer-source-user")
+ .get_text().strip())
+
+
+ def _get_config_oscontainer_source_password(self):
+ return self.widget("install-oscontainer-source-passwd").get_text()
+
+
+ def _get_config_oscontainer_isecure(self):
+ return self.widget("install-oscontainer-source-insecure").get_active()
+
+
def _should_skip_disk_page(self):
return self._get_config_install_page() in [INSTALL_PAGE_IMPORT,
INSTALL_PAGE_CONTAINER_APP,
@@ -1953,6 +1978,41 @@ class vmmCreate(vmmGObjectUI):
if not fs:
return self.err.val_err(_("An OS directory path is required."))
+ if self._get_config_oscontainer_bootstrap():
+
+ src_url = self._get_config_oscontainer_source_url()
+ user = self._get_config_oscontainer_source_username()
+ passwd = self._get_config_oscontainer_source_password()
+
+ # Check if the source path was provided
+ if not src_url:
+ return self.err.val_err(_("Source URL is required"))
+
+ # Require username and password when authenticate
+ # to source registry.
+ if user and not passwd:
+ return self.err.val_err(_("Please specify password "
+ "for accessing source registry"))
+
+ # Validate destination path
+ if os.path.exists(fs):
+ if not os.path.isdir(fs):
+ return self.err.val_err(_("Destination path "
+ "is not directory: " + fs))
+ if not os.access(fs, os.W_OK):
+ return self.err.val_err(_("No write permissions for "
+ "directory path: " + fs))
+ if os.listdir(fs) != []:
+ # Show Yes/No dialog if the destination is not empty
+ res = self.err.yes_no(
+ _("OS root directory is not empty"),
+ _("Creating root file system in not empty "
+ "directory might fail due to file conflicts.\n"
+ "Would you like to contanue?"))
+ if not res:
+ return False
+
+
elif instmethod == INSTALL_PAGE_VZ_TEMPLATE:
instclass = virtinst.ContainerInstaller
template = self.widget("install-container-template").get_text()
--
2.9.4
More information about the virt-tools-list
mailing list