summaryrefslogtreecommitdiffstats
path: root/cobbler/action_import.py
diff options
context:
space:
mode:
Diffstat (limited to 'cobbler/action_import.py')
-rw-r--r--cobbler/action_import.py37
1 files changed, 26 insertions, 11 deletions
diff --git a/cobbler/action_import.py b/cobbler/action_import.py
index db09818..3e726a6 100644
--- a/cobbler/action_import.py
+++ b/cobbler/action_import.py
@@ -23,7 +23,7 @@ import glob
import api
import utils
import shutil
-from rhpl.translate import _, N_, textdomain, utf8
+from utils import _
WGET_CMD = "wget --mirror --no-parent --no-host-directories --directory-prefix %s/%s %s"
RSYNC_CMD = "rsync -a %s '%s' %s/ks_mirror/%s --exclude-from=/etc/cobbler/rsync.exclude --progress"
@@ -36,7 +36,7 @@ TRY_LIST = [
class Importer:
- def __init__(self,api,config,mirror,mirror_name,network_root=None,kickstart_file=None,rsync_flags=None):
+ def __init__(self,api,config,mirror,mirror_name,network_root=None,kickstart_file=None,rsync_flags=None,arch=None):
"""
Performs an import of a install tree (or trees) from the given
mirror address. The prefix of the distro is to be specified
@@ -59,6 +59,7 @@ class Importer:
self.distros_added = []
self.kickstart_file = kickstart_file
self.rsync_flags = rsync_flags
+ self.arch = arch
# ----------------------------------------------------------------------
@@ -67,6 +68,26 @@ class Importer:
raise CX(_("import failed. no --mirror specified"))
if self.mirror_name is None:
raise CX(_("import failed. no --name specified"))
+ if self.arch is not None:
+ self.arch = self.arch.lower()
+ if self.arch not in [ "x86", "ia64", "x86_64" ]:
+ raise CX(_("arch must be x86, x86_64, or ia64"))
+
+ mpath = os.path.join(self.settings.webdir, "ks_mirror", self.mirror_name)
+
+ if os.path.exists(mpath) and self.arch is None:
+ raise CX(_("Something already exists at this import location (%s). You must specify --arch to avoid potentially overwriting existing files.") % mpath)
+
+ if self.arch:
+ # append the arch path to the name if the arch is not already
+ # found in the name.
+ found = False
+ for x in [ "ia64", "i386", "x86_64", "x86" ]:
+ if self.mirror_name.lower().find(x) != -1:
+ found = True
+ break
+ if not found:
+ self.mirror_name = self.mirror_name + "-" + self.arch
if self.mirror_name is None:
raise CX(_("import failed. no --name specified"))
@@ -171,13 +192,6 @@ class Importer:
print _("- skipping distro %s since it wasn't imported this time") % profile.distro
continue
- # THIS IS OBSOLETE:
- #
- #if not distro.kernel.startswith("%s/ks_mirror/" % self.settings.webdir):
- # # this isn't a mirrored profile, so we won't touch it
- # print _("- skipping %s since profile isn't mirrored") % profile.name
- # continue
-
if (self.kickstart_file == None):
kdir = os.path.dirname(distro.kernel)
base_dir = "/".join(kdir.split("/")[0:-2])
@@ -266,6 +280,8 @@ class Importer:
def set_kickstart(self, profile, flavor, major, minor):
if flavor == "fedora":
+ if major >= 8:
+ return profile.set_kickstart("/etc/cobbler/sample_end.ks")
if major >= 6:
return profile.set_kickstart("/etc/cobbler/sample.ks")
if flavor == "redhat" or flavor == "centos":
@@ -442,8 +458,7 @@ class Importer:
config_file.write("baseurl=http://@@http_server@@/cobbler/ks_mirror/%s\n" % (urlseg))
config_file.write("enabled=1\n")
config_file.write("gpgcheck=0\n")
- # NOTE: yum priority defaults to 99 if that plugin is enabled
- # so don't need to add priority=99 here
+ config_file.write("priority=1\n")
config_file.close()
# don't run creatrepo twice -- this can happen easily for Xen and PXE, when