示例#1
0
def load_modules(module_path=mod_path, blacklist=None):
    logger = clogger.Logger()

    filenames = glob.glob("%s/*.py" % module_path)
    filenames += glob.glob("%s/*.pyc" % module_path)
    filenames += glob.glob("%s/*.pyo" % module_path)
    # Allow recursive modules
    filenames += glob.glob("%s/**/*.py" % module_path)
    filenames += glob.glob("%s/**/*.pyc" % module_path)
    filenames += glob.glob("%s/**/*.pyo" % module_path)

    for fn in filenames:
        basename = fn.replace(mod_path, '')
        modname = ""

        if basename.__contains__("__pycache__") or basename.__contains__("__init__.py"):
            continue

        if basename[0] == "/":
            basename = basename[1:]

        basename = basename.replace("/", ".")

        if basename[-3:] == ".py":
            modname = basename[:-3]
        elif basename[-4:] in [".pyc", ".pyo"]:
            modname = basename[:-4]

        __import_module(mod_path, modname, logger)

    return MODULE_CACHE, MODULES_BY_CATEGORY
示例#2
0
    def __init__(self, collection_mgr, logger=None):
        """
        Constructor
        """
        # self.collection_mgr   = collection_mgr
        # self.api      = collection_mgr.api
        # self.settings = collection_mgr.settings()
        self.hardlink = None
        if logger is None:
            logger = clogger.Logger()
        self.logger = logger
        self.family = utils.get_family()

        # Getting the path to hardlink
        for possible_location in ["/usr/bin/hardlink", "/usr/sbin/hardlink"]:
            if os.path.exists(possible_location):
                self.hardlink = possible_location
        if not self.hardlink:
            utils.die(self.logger,
                      "please install 'hardlink' to use this feature")

        # Setting the args for hardlink accodring to the distribution
        if self.family == "debian":
            self.hardlink_args = "-f -p -o -t -v /var/www/cobbler/distro_mirror /var/www/cobbler/repo_mirror"
        elif self.family == "suse":
            self.hardlink_args = "-f -v /var/www/cobbler/distro_mirror /var/www/cobbler/repo_mirror"
        else:
            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)
示例#3
0
    def __init__(self, collection_mgr, verbose=True, dhcp=None, dns=None, logger=None, tftpd=None):
        """
        Constructor
        """
        self.logger = logger
        if logger is None:
            self.logger = clogger.Logger()

        self.verbose = verbose
        self.collection_mgr = collection_mgr
        self.api = collection_mgr.api
        self.distros = collection_mgr.distros()
        self.profiles = collection_mgr.profiles()
        self.systems = collection_mgr.systems()
        self.settings = collection_mgr.settings()
        self.repos = collection_mgr.repos()
        self.templar = templar.Templar(collection_mgr, self.logger)
        self.tftpgen = tftpgen.TFTPGen(collection_mgr, self.logger)
        self.dns = dns
        self.dhcp = dhcp
        self.tftpd = tftpd
        self.bootloc = self.settings.tftpboot_location
        self.tftpgen.verbose = verbose
        self.dns.verbose = verbose
        self.dhcp.verbose = verbose

        self.pxelinux_dir = os.path.join(self.bootloc, "pxelinux.cfg")
        self.grub_dir = os.path.join(self.bootloc, "grub")
        self.images_dir = os.path.join(self.bootloc, "images")
        self.yaboot_bin_dir = os.path.join(self.bootloc, "ppc")
        self.yaboot_cfg_dir = os.path.join(self.bootloc, "etc")
        self.rendered_dir = os.path.join(self.settings.webdir, "rendered")
示例#4
0
def run(api, args, logger):
    if not logger:
        logger = clogger.Logger()
    logger.info("sync_post_tftp_proxies started")
    settings = api.settings()

    # test if proxies are configured:
    try:
        p = settings.proxies
    except:
        # not configured - so we return
        return 0

    tftpbootdir = "/srv/tftpboot"
    syncstart = os.stat(tftpbootdir).st_mtime

    find_delete_from_proxies(tftpbootdir, settings, logger=logger)

    for root, dirs, files in os.walk(tftpbootdir):
        for fname in files:
            path = os.path.join(root, fname)
            if '.link_cache' in path:
                continue
            check_push(path, tftpbootdir, settings, logger=logger)
    return 0
示例#5
0
    def __init__(self, collection_mgr, tries=1, nofail=False, logger=None):
        """
        Constructor

        :param collection_mgr: The object which holds all information in Cobbler.
        :param tries: The number of tries before the operation fails.
        :param nofail: This sets the strictness of the reposync result handling.
        :param logger: The logger to audit all actions with.
        """
        self.verbose = True
        self.api = collection_mgr.api
        self.collection_mgr = collection_mgr
        self.distros = collection_mgr.distros()
        self.profiles = collection_mgr.profiles()
        self.systems = collection_mgr.systems()
        self.settings = collection_mgr.settings()
        self.repos = collection_mgr.repos()
        self.rflags = self.settings.reposync_flags
        self.tries = tries
        self.nofail = nofail
        self.logger = logger
        self.dlmgr = download_manager.DownloadManager(self.collection_mgr, self.logger)

        if logger is None:
            self.logger = clogger.Logger()

        self.logger.info("hello, reposync")
示例#6
0
 def __init__(self, hostname):
     """Constructor. Requires a Cobbler API handle."""
     self.hostname = hostname
     self.handle = capi.CobblerAPI()
     self.system = self.handle.find_system(hostname=self.hostname)
     self.host_vars = self.get_cobbler_resource('autoinstall_meta')
     self.logger = clogger.Logger()
     self.mgmtclasses = self.get_cobbler_resource('mgmt_classes')
示例#7
0
    def __init__(self, config, logger):
        self.logger = logger
        if self.logger is None:
            self.logger = clogger.Logger()

        self.config = config
        self.systems = config.systems()
        self.templar = templar.Templar(config)
示例#8
0
 def __init__(self, collection_mgr, logger=None):
     """
     Constructor
     """
     self.collection_mgr = collection_mgr
     self.settings = collection_mgr.settings()
     if logger is None:
         logger = clogger.Logger()
     self.logger = logger
    def __init__(self, collection_mgr, logger):
        """
        Constructor
        """
        self.logger = logger
        if self.logger is None:
            self.logger = clogger.Logger()

        self.collection_mgr = collection_mgr
        self.templar = templar.Templar(collection_mgr)
示例#10
0
 def __init__(self, collection_mgr, system, api, logger=None):
     """
     Log library constructor requires a Cobbler system object.
     """
     self.system = system
     self.collection_mgr = collection_mgr
     self.settings = collection_mgr.settings()
     self.api = api
     if logger is None:
         logger = clogger.Logger()
     self.logger = logger
示例#11
0
    def __init__(self, collection_mgr, logger):
        """
        Constructor
        """
        self.logger = logger
        if self.logger is None:
            self.logger = clogger.Logger()

        self.collection_mgr = collection_mgr
        self.templar = templar.Templar(collection_mgr)
        self.settings_file = "/etc/xinetd.d/tftp"
示例#12
0
 def __init__(self, collection_mgr, mode, logger=None):
     """
     Constructor
     """
     self.collection_mgr = collection_mgr
     self.settings = collection_mgr.settings()
     self.ip_data = {}
     self.mode = mode
     if logger is None:
         logger = clogger.Logger()
     self.logger = logger
示例#13
0
    def __init__(self, collection_mgr, logger=None):
        """
        Constructor

        :param collection_mgr: The main collection manager instance which is used by the current running server.
        :param logger: The logger object which logs to the desired target.
        """
        self.collection_mgr = collection_mgr
        self.settings = collection_mgr.settings()
        if logger is None:
            logger = clogger.Logger()
        self.logger = logger
示例#14
0
 def __init__(self, collection_mgr, logger=None):
     """
     Constructor
     """
     self.collection_mgr = collection_mgr
     self.settings = collection_mgr.settings()
     self.api = collection_mgr.api
     self.remote = None
     self.uri = None
     if logger is None:
         logger = clogger.Logger()
     self.logger = logger
示例#15
0
    def __init__(self, collection_mgr, logger=None):
        """
        Constructor

        :param collection_mgr: The collection manager which holds all information.
        :param logger: The logger to audit all actions with.
        """
        self.collection_mgr = collection_mgr
        self.settings = collection_mgr.settings()
        if logger is None:
            logger = clogger.Logger()
        self.logger = logger
示例#16
0
    def __init__(self, collection_mgr, logger):
        """
        Constructor

        :param collection_mgr: The instance who holds all the information from Cobbler.
        :param logger: The logger to audit all actions with.
        """
        self.logger = logger
        if self.logger is None:
            self.logger = clogger.Logger()

        self.collection_mgr = collection_mgr
        self.bootloc = collection_mgr.settings().tftpboot_location
        self.templar = templar.Templar(collection_mgr)
示例#17
0
    def __init__(self, config, logger):
        """
        This class can manage a New-DJBDNS server.

        :param config: Currently an usused parameter.
        :param logger: The logger to audit the actions with.
        """
        self.logger = logger
        if self.logger is None:
            self.logger = clogger.Logger()

        self.config = config
        self.systems = config.systems()
        self.templar = templar.Templar(config)
示例#18
0
    def __init__(self, collection_mgr, logger):
        """
        Constructor
        """
        self.logger = logger
        if self.logger is None:
            self.logger = clogger.Logger()

        self.collection_mgr = collection_mgr
        self.templar = templar.Templar(collection_mgr)
        self.settings_file = "/etc/xinetd.d/tftp"
        self.tftpgen = tftpgen.TFTPGen(collection_mgr, self.logger)
        self.systems = collection_mgr.systems()
        self.bootloc = utils.tftpboot_location()
示例#19
0
    def __init__(self, collection_mgr, logger=None):
        """
        Constructor

        :param collection_mgr: The collection manager which holds all information available in Cobbler.
        :param logger: The logger to audit all action with.
        """
        self.collection_mgr = collection_mgr
        self.settings = collection_mgr.settings()
        self.api = collection_mgr.api
        self.remote = None
        self.uri = None
        if logger is None:
            logger = clogger.Logger()
        self.logger = logger
示例#20
0
    def __init__(self, api, collection_mgr, logger=None):
        """
        Constructor

        @param CobblerAPI api Cobbler API
        @param CollectionManager collection_mgr collection manager
        @param Logger logger logger
        """

        self.collection_mgr = collection_mgr
        self.settings = collection_mgr.settings()
        self.api = api
        if logger is None:
            logger = clogger.Logger()
        self.logger = logger
示例#21
0
    def __init__(self, collection_mgr, logger=None):
        """
        Constructor for the autoinstall manager.

        :param collection_mgr: The collection manager which has all objects.
        :param logger: The logger object which logs to the desired target. If this argument is None then a default
                       Cobbler logger is created.
        """

        self.collection_mgr = collection_mgr
        self.snippets_base_dir = self.collection_mgr.settings().autoinstall_snippets_dir
        self.templates_base_dir = self.collection_mgr.settings().autoinstall_templates_dir
        self.autoinstallgen = autoinstallgen.AutoInstallationGen(self.collection_mgr)
        if logger is None:
            logger = clogger.Logger()
        self.logger = logger
示例#22
0
    def __init__(self, collection_mgr, mode, logger=None):
        """
        Constructor

        :param collection_mgr: The collection manager which holds all information.
        :param mode: This describes how Cobbler should report. Currently there only the option ``text`` can be set
                     explicitly.
        :param logger: The logger to audit all actions with.
        """
        self.collection_mgr = collection_mgr
        self.settings = collection_mgr.settings()
        self.ip_data = {}
        self.mode = mode
        if logger is None:
            logger = clogger.Logger()
        self.logger = logger
示例#23
0
    def __init__(self, collection_mgr, logger):
        """
        Constructor

        :param collection_mgr: The collection manager to resolve all information with.
        :param logger: The logger to audit all actions with.
        """
        self.logger = logger
        if self.logger is None:
            self.logger = clogger.Logger()

        self.collection_mgr = collection_mgr
        self.templar = templar.Templar(collection_mgr)
        self.tftpgen = tftpgen.TFTPGen(collection_mgr, self.logger)
        self.systems = collection_mgr.systems()
        self.bootloc = collection_mgr.settings().tftpboot_location
示例#24
0
 def __init__(self, collection_mgr, logger=None):
     """
     Constructor
     """
     self.collection_mgr = collection_mgr
     self.settings = collection_mgr.settings()
     self.api = collection_mgr.api
     self.report_type = None
     self.report_what = None
     self.report_name = None
     self.report_fields = None
     self.report_noheaders = None
     self.array_re = re.compile(r'([^[]+)\[([^]]+)\]')
     if logger is None:
         logger = clogger.Logger()
     self.logger = logger
示例#25
0
    def __init__(self,
                 collection_mgr,
                 verbose=True,
                 dhcp=None,
                 dns=None,
                 logger=None,
                 tftpd=None):
        """
        Constructor

        :param collection_mgr: The collection manager instance which holds all information about cobbler.
        :param verbose: Whether to log the actions performed in this module verbose or not.
        :param dhcp: The DHCP manager which can update the DHCP config.
        :param dns: The DNS manager which can update the DNS config.
        :param logger: The logger to audit all action with.
        :param tftpd: The TFTP manager which can update the TFTP config.
        """
        self.logger = logger
        if logger is None:
            self.logger = clogger.Logger()

        self.verbose = verbose
        self.collection_mgr = collection_mgr
        self.api = collection_mgr.api
        self.distros = collection_mgr.distros()
        self.profiles = collection_mgr.profiles()
        self.systems = collection_mgr.systems()
        self.settings = collection_mgr.settings()
        self.repos = collection_mgr.repos()
        self.templar = templar.Templar(collection_mgr, self.logger)
        self.tftpgen = tftpgen.TFTPGen(collection_mgr, self.logger)
        self.dns = dns
        self.dhcp = dhcp
        self.tftpd = tftpd
        self.bootloc = self.settings.tftpboot_location
        self.tftpgen.verbose = verbose
        self.dns.verbose = verbose
        self.dhcp.verbose = verbose

        self.pxelinux_dir = os.path.join(self.bootloc, "pxelinux.cfg")
        self.grub_dir = os.path.join(self.bootloc, "grub")
        self.images_dir = os.path.join(self.bootloc, "images")
        self.yaboot_bin_dir = os.path.join(self.bootloc, "ppc")
        self.yaboot_cfg_dir = os.path.join(self.bootloc, "etc")
        self.ipxe_dir = os.path.join(self.bootloc, "ipxe")
        self.rendered_dir = os.path.join(self.settings.webdir, "rendered")
示例#26
0
    def __init__(self, collection_mgr, logger):
        """
        Constructor
        """
        self.logger = logger
        if self.logger is None:
            self.logger = clogger.Logger()

        self.collection_mgr = collection_mgr
        self.api = collection_mgr.api
        self.distros = collection_mgr.distros()
        self.profiles = collection_mgr.profiles()
        self.systems = collection_mgr.systems()
        self.settings = collection_mgr.settings()
        self.repos = collection_mgr.repos()
        self.templar = templar.Templar(collection_mgr)
        self.settings_file = utils.namedconf_location(self.api)
        self.zonefile_base = utils.zonefile_base(self.api)
示例#27
0
    def __init__(self, api, collection_mgr, logger=None):
        """
        Constructor

        :param api: Cobbler API
        :type api: CobblerAPI
        :param collection_mgr: collection manager
        :type collection_mgr: CollectionManager
        :param logger: A logger object to audit the actions of the object instance.
        :type logger: Logger
        """

        self.collection_mgr = collection_mgr
        self.settings = collection_mgr.settings()
        self.api = api
        if logger is None:
            logger = clogger.Logger()
        self.logger = logger
    def __init__(self, collection_mgr, logger=None):
        """
        Constructor

        @param CollectionManager collection_mgr collection manager
        @param Logger logger logger
        """

        self.collection_mgr = collection_mgr
        self.snippets_base_dir = self.collection_mgr.settings(
        ).autoinstall_snippets_dir
        self.templates_base_dir = self.collection_mgr.settings(
        ).autoinstall_templates_dir
        self.autoinstallgen = autoinstallgen.AutoInstallationGen(
            self.collection_mgr)
        if logger is None:
            logger = clogger.Logger()
        self.logger = logger
示例#29
0
    def __init__(self, collection_mgr, logger=None):
        """
        Constructor

        :param collection_mgr: The collection manager to hold all information in Cobbler available.
        :param logger: The logger to audit all action with.
        """
        self.collection_mgr = collection_mgr
        self.settings = collection_mgr.settings()
        self.api = collection_mgr.api
        self.report_type = None
        self.report_what = None
        self.report_name = None
        self.report_fields = None
        self.report_noheaders = None
        self.array_re = re.compile(r'([^[]+)\[([^]]+)\]')
        if logger is None:
            logger = clogger.Logger()
        self.logger = logger
示例#30
0
 def __init__(self, collection_mgr, verbose=False, logger=None):
     """
     Constructor
     """
     self.verbose = verbose
     self.collection_mgr = collection_mgr
     self.distros = collection_mgr.distros()
     self.profiles = collection_mgr.profiles()
     self.systems = collection_mgr.systems()
     self.images = collection_mgr.images()
     self.settings = collection_mgr.settings()
     self.repos = collection_mgr.repos()
     if logger is None:
         logger = clogger.Logger()
     self.logger = logger
     self.tftpd = module_loader.get_module_from_file(
         "tftpd", "module", "in_tftpd").get_manager(collection_mgr, logger)
     self.sync = collection_mgr.api.get_sync(verbose, logger=self.logger)
     self.sync.make_tftpboot()