Checks for the standard fields for a URL, and enforces some simple requirements.
An exception is raised if the filename: * has a hostname but not a protocol and port, * has a protocol but not hostname Signed-off-by: Darryl L. Pierce <[email protected]> --- cobbler/item_image.py | 19 +++++++++++++++++-- 1 files changed, 17 insertions(+), 2 deletions(-) diff --git a/cobbler/item_image.py b/cobbler/item_image.py index 98e0255..2ce6738 100644 --- a/cobbler/item_image.py +++ b/cobbler/item_image.py @@ -113,11 +113,26 @@ class Image(item.Item): def set_file(self,filename): """ Stores the image location. This should be accessible on all nodes - that need to access it. Format: either /mnt/commonpath/foo.iso or + that need to access it. Format: either /mnt/commonpath/foo.iso or nfs://host/path/foo.iso """ # FIXME: this should accept NFS paths or filesystem paths - self.file = filename + uri = filename + + protocol = auth = hostname = port = path = file = "" + if filename.find("://") != -1: protocol, filename = filename.split("://") + if filename.find("@") != -1: auth, filename = filename.split("@") + if filename.find("/") > 0: hostname, filename = filename.split("/", 1) + if hostname.find(":") != -1: hostname, port = hostname.split(":") + if filename.find("/") != -1: path, filename = filename.rsplit("/", 1) + + if len(filename) == 0: raise CX(_("missing filename")) + if len(hostname) > 0 and len(protocol) == 0 and len(port) == 0: + raise CX(_("if protocol is not supplied then a port must be provided")) + if len(hostname) == 0 and len(protocol) > 0: + raise CX(_("no hostname supplied but is required for protocol")) + + self.file = uri return True def set_os_version(self,os_version): -- 1.6.0.6 _______________________________________________ cobbler mailing list [email protected] https://fedorahosted.org/mailman/listinfo/cobbler
