Source code for cobbler.actions.hardlink

"""
Hard links cobbler content together to save space.
"""

from builtins import object
import os
from cobbler import utils

from cobbler import clogger


[docs]class HardLinker(object): def __init__(self, collection_mgr, logger=None): """ Constructor """ # self.collection_mgr = collection_mgr # self.api = collection_mgr.api # self.settings = collection_mgr.settings() if logger is None: logger = clogger.Logger() self.logger = logger self.family = utils.get_family() if self.family == "debian": self.hardlink = "/usr/bin/hardlink" self.hardlink_args = "-f -p -o -t -v /var/www/cobbler/distro_mirror /var/www/cobbler/repo_mirror" elif self.family == "suse": self.hardlink = "/usr/bin/hardlink" self.hardlink_args = "-f -v /var/www/cobbler/distro_mirror /var/www/cobbler/repo_mirror" else: self.hardlink = "/usr/sbin/hardlink" self.hardlink_args = "-c -v /var/www/cobbler/distro_mirror /var/www/cobbler/repo_mirror" self.hardlink_cmd = "%s %s" % (self.hardlink, self.hardlink_args)
[docs] def run(self): """ Simply hardlinks directories that are cobbler managed. This is a /very/ simple command but may grow more complex and intelligent over time. """ # FIXME: if these directories become configurable some # changes will be required here. if not os.path.exists(self.hardlink): utils.die(self.logger, "please install 'hardlink' (%s) to use this feature" % self.hardlink) self.logger.info("now hardlinking to save space, this may take some time.") rc = utils.subprocess_call(self.logger, self.hardlink_cmd, shell=True) # FIXME: how about settings? (self.settings.webdir) webdir = "/var/www/cobbler" if os.path.exists("/srv/www"): webdir = "/srv/www/cobbler" rc = utils.subprocess_call(self.logger, self.hardlink + " -c -v " + webdir + "/distro_mirror /var/www/cobbler/repo_mirror", shell=True) return rc