def copy_single_distro_files(self, d, dirtree, symlink_ok): distros = os.path.join(dirtree, "images") distro_dir = os.path.join(distros, d.name) utils.mkdir(distro_dir) kernel = utils.find_kernel(d.kernel) # full path initrd = utils.find_initrd(d.initrd) # full path if kernel is None: raise CX("kernel not found: %(file)s, distro: %(distro)s" % {"file": d.kernel, "distro": d.name}) if initrd is None: raise CX("initrd not found: %(file)s, distro: %(distro)s" % {"file": d.initrd, "distro": d.name}) # Koan manages remote kernel itself, but for consistent PXE # configurations the synchronization is still necessary if not utils.file_is_remote(kernel): b_kernel = os.path.basename(kernel) dst1 = os.path.join(distro_dir, b_kernel) utils.linkfile(kernel, dst1, symlink_ok=symlink_ok, api=self.api, logger=self.logger) else: b_kernel = os.path.basename(kernel) dst1 = os.path.join(distro_dir, b_kernel) utils.copyremotefile(kernel, dst1, api=None, logger=self.logger) if not utils.file_is_remote(initrd): b_initrd = os.path.basename(initrd) dst2 = os.path.join(distro_dir, b_initrd) utils.linkfile(initrd, dst2, symlink_ok=symlink_ok, api=self.api, logger=self.logger) else: b_initrd = os.path.basename(initrd) dst1 = os.path.join(distro_dir, b_initrd) utils.copyremotefile(initrd, dst1, api=None, logger=self.logger)
def check_if_valid(self): """ Check if a distro object is valid. If invalid an exception is raised. """ if self.name is None: raise CX("name is required") if self.kernel is None: raise CX("Error with distro %s - kernel is required" % (self.name)) if self.initrd is None: raise CX("Error with distro %s - initrd is required" % (self.name)) # self.remote_grub_kernel has to be set in set_remote_boot_kernel and here # in case the distro is read from json file (setters are not called). if self.remote_boot_kernel: self.remote_grub_kernel = grub.parse_grub_remote_file(self.remote_boot_kernel) if not self.remote_grub_kernel: raise CX("Invalid URL for remote boot kernel: %s" % self.remote_boot_kernel) if self.remote_boot_initrd: self.remote_grub_initrd = grub.parse_grub_remote_file(self.remote_boot_initrd) if not self.remote_grub_initrd: raise CX("Invalid URL for remote boot initrd: %s" % self.remote_boot_initrd) if utils.file_is_remote(self.kernel): if not utils.remote_file_exists(self.kernel): raise CX("Error with distro %s - kernel '%s' not found" % (self.name, self.kernel)) elif not os.path.exists(self.kernel): raise CX("Error with distro %s - kernel '%s' not found" % (self.name, self.kernel)) if utils.file_is_remote(self.initrd): if not utils.remote_file_exists(self.initrd): raise CX("Error with distro %s - initrd path '%s' not found" % (self.name, self.initrd)) elif not os.path.exists(self.initrd): raise CX("Error with distro %s - initrd path '%s' not found" % (self.name, self.initrd))
def test_file_is_remote(remote_url, expected_result): # Arrange # Act result = utils.file_is_remote(remote_url) # Assert assert expected_result == result
def check_if_valid(self): if self.name is None: raise CX("name is required") if self.kernel is None: raise CX("Error with distro %s - kernel is required" % (self.name)) if self.initrd is None: raise CX("Error with distro %s - initrd is required" % (self.name)) if utils.file_is_remote(self.kernel): if not utils.remote_file_exists(self.kernel): raise CX("Error with distro %s - kernel '%s' not found" % (self.name, self.kernel)) elif not os.path.exists(self.kernel): raise CX("Error with distro %s - kernel '%s' not found" % (self.name, self.kernel)) if utils.file_is_remote(self.initrd): if not utils.remote_file_exists(self.initrd): raise CX("Error with distro %s - initrd path '%s' not found" % (self.name, self.initrd)) elif not os.path.exists(self.initrd): raise CX("Error with distro %s - initrd path '%s' not found" % (self.name, self.initrd))
def check_if_valid(self): if self.name is None: raise CX("name is required") if self.kernel is None: raise CX("Error with distro %s - kernel is required" % (self.name)) if self.initrd is None: raise CX("Error with distro %s - initrd is required" % (self.name)) if utils.file_is_remote(self.kernel): if not utils.remote_file_exists(self.kernel): raise CX("Error with distro %s - kernel '%s' not found" % (self.name, self.kernel)) elif not os.path.exists(self.kernel): raise CX("Error with distro %s - kernel not found" % (self.name)) if utils.file_is_remote(self.initrd): if not utils.remote_file_exists(self.initrd): raise CX("Error with distro %s - initrd path not found" % (self.name)) elif not os.path.exists(self.initrd): raise CX("Error with distro %s - initrd path not found" % (self.name))