コード例 #1
0
def install_file(package_files, version, exit_on_error=True):
    for package_file in package_files:
        logger.info("Installing " + package_file)
        # First, check if file exists
        if not os.path.isfile(package_file):
            utils.fail("Error: Package file " + package_file +
                       " does not exist")
        metadata = utils.rpkg_metadata(package_file)
        exist = utils.package_check(metadata, version)
        # As dependencies are only displayed messages for now,
        # wait until the end to make them visible.
        # This should be moved before actual installation once implemented.
        if not utils.install_dependencies(metadata):
            if exit_on_error:
                exit(1)
        if exist:
            short_name = metadata['name'].replace("rudder-plugin-", "")
            # These don't have upgrade scripts for now
            if short_name.startswith("cis-") or short_name == "openscap":
                logger.info("Skipping update, this package cannot be updated")
                break
            logger.info("The package is already installed, I will upgrade it.")
        script_dir = utils.extract_scripts(metadata, package_file)
        utils.run_script("preinst",
                         script_dir,
                         exist,
                         exit_on_error=exit_on_error)
        utils.install(metadata, package_file, exist)
        utils.run_script("postinst",
                         script_dir,
                         exist,
                         exit_on_error=exit_on_error)
        if metadata['type'] == 'plugin' and 'jar-files' in metadata:
            for j in metadata['jar-files']:
                utils.jar_status(j, True)
コード例 #2
0
def plugin_restore_status():
    lines = sys.stdin.readlines()
    for line in lines:
        line = line.strip()
        if line.startswith("enabled "):
            print("enable " + line.split(' ')[1])
            utils.jar_status(line.split(' ')[1], True)
        if line.startswith("disabled "):
            utils.jar_status(line.split(' ')[1], False)
    check_compatibility()
コード例 #3
0
def check_compatibility():
    for p in utils.DB["plugins"]:
        metadata = utils.DB["plugins"][p]
        if not utils.check_plugin_compatibility(metadata):
            logging.warning("Plugin " + p + " is not compatible with rudder anymore, disabling it.")
            if 'jar-files' in metadata:
                for j in metadata['jar-files']:
                    utils.jar_status(j, False)
            logging.warning("Please install a new version of " + p + " to enable it again.")
            logging.info("")
            utils.jetty_needs_restart = True
コード例 #4
0
def plugin_status(plugins, status):
    for plugin in plugins:
        if status:
            print("Enabling " + plugin)
        else:
            print("Disabling " + plugin)
        if plugin not in utils.DB["plugins"]:
            utils.fail("Unknown plugin " + plugin)
        metadata = utils.DB["plugins"][plugin]
        if 'jar-files' in metadata:
            for j in metadata['jar-files']:
                utils.jar_status(j, status)
コード例 #5
0
def remove(package_names):
    for package_name in package_names:
        logger.info("Removing " + package_name)
        if package_name not in utils.DB["plugins"]:
            utils.fail("This package is not installed. Aborting!", 2)
        script_dir = utils.DB_DIRECTORY + "/" + package_name
        metadata = utils.DB["plugins"][package_name]
        if metadata['type'] == 'plugin' and 'jar-files' in metadata:
            for j in metadata['jar-files']:
                utils.jar_status(j, False)
        utils.run_script("prerm", script_dir, None)
        utils.remove_files(metadata)
        utils.run_script("postrm", script_dir, None)
        shutil.rmtree(script_dir)
        del utils.DB["plugins"][package_name]
        utils.db_save()
コード例 #6
0
def install_file(package_files):
    for package_file in package_files:
        logging.info("Installing " + package_file)
        # First, check if file exists
        if not os.path.isfile(package_file):
            utils.fail("Error: Package file " + package_file + " does not exist")
        metadata = utils.rpkg_metadata(package_file)
        exist = utils.package_check(metadata)
        # As dependencies are only displayed messages for now,
        # wait until the end to make them visible.
        # This should be moved before actual installation once implemented.
        if not utils.install_dependencies(metadata):
            exit(1)
        if exist:
            logging.info("The package is already installed, I will upgrade it.")
        script_dir = utils.extract_scripts(metadata, package_file)
        utils.run_script("preinst", script_dir, exist)
        utils.install(metadata, package_file, exist)
        utils.run_script("postinst", script_dir, exist)
        if metadata['type'] == 'plugin' and 'jar-files' in metadata:
            for j in metadata['jar-files']:
                utils.jar_status(j, True)