Example #1
0
def main():
    """
    Point d'entrée pour le script de réglage des permissions.
    """
    prepare_argparse()
    options = _parse_args(sys.argv[1:])

    # Map les aliases vers la commande "standard".
    aliases = {
        'delete': 'remove',
        'rm': 'remove',
        'del': 'remove',
        'update': 'add',
    }

    current_user = pwd.getpwuid(os.getuid())
    # Seul "root" (UID 0) est autorisé à changer les permissions
    # dans Vigilo de façon arbitraire.
    if current_user.pw_uid != 0:
        print _("You must be root to use this script.")
        sys.exit(1)

    if not _prepare_db(options):
        # Inutile d'afficher un message d'erreur ici :
        # _prepare_db() le fait déjà.
        sys.exit(1)

    from vigilo.models.scripts.permissions import commands
    # On récupère la commande à exécuter (en gérant le cas des aliases)
    # et on appelle la fonction associée.
    cmd = aliases.get(options.action, options.action)
    func = getattr(commands, "cmd_" + cmd)
    sys.exit(func(options))
Example #2
0
def main(): # pragma: no cover
    # Évite des problèmes d'accès aux fichiers ensuite
    # sur les machines durcies avec un UMASK en 077 (#324).
    os.umask(0022)

    prepare_argparse()
    args = parse_args()

    if args.debug:
        import logging
        LOGGER.parent.setLevel(logging.DEBUG)

    # Pour la commande discover, il n'est pas nécessaire de poser un verrou
    # ou de changer d'utilisateur car la commande ne se connecte pas en SSH
    # aux autres machines (voir #705).
    if args.func != discover and not args.nochuid:
        change_user()

    LOGGER.debug("VigiConf starting...")

    if args.func != discover:
        lockfile = settings["vigiconf"].get("lockfile",
                            "/var/lock/vigilo-vigiconf/vigiconf.token")
        lock_result = grab_lock(lockfile)
        if not lock_result:
            sys.exit(1)

    try:
        args.func(args)
    except VigiConfError, e:
        if args.debug:
            LOGGER.exception(_("VigiConf error: %s"), e.value)
        else:
            LOGGER.error(_("VigiConf error: %s"), e.value)
        sys.exit(1)
Example #3
0
def main():
    # Chargement des traductions d'optparse.
    prepare_argparse()

    parser = optparse.OptionParser(_("%prog [options] command [arguments]"))
    parser.add_option("-n", "--dry-run", action="store_true", dest="dryrun",
                      help=_("Only print the command that would be run"))
    opts, args = parser.parse_args()
    if not args:
        parser.error(N_("No command selected. Available commands: %s") %
                        ", ".join(COMMANDS.keys()))

    cmd_name = args[0]
    if cmd_name not in COMMANDS:
        parser.error(N_("Unknown command. Available commands: %s") %
                        ", ".join(COMMANDS.keys()))

    settings.load_module("vigilo.vigiconf", "settings-local.ini")

    cmd_args = inspect.getargspec(COMMANDS[cmd_name].__init__)
    cmd_min_args = len(cmd_args[0]) - 1
    if cmd_args[3]:
        cmd_min_args -= len(cmd_args[3])

    if len(args) < cmd_min_args or len(args) > len(cmd_args[0]):
        args_list = []
        for index, arg in enumerate(cmd_args[0][1:]):
            if index + 1 > cmd_min_args:
                arg = "[%s]" % arg
            args_list.append(arg)
        parser.error(N_("Wrong number of arguments. Expected: %s") %
                        " ".join(args_list))

    cmd = COMMANDS[cmd_name](*args[1:])

    if opts.dryrun:
        cmd.debug = True

    try:
        cmd.run()
    except CommandPrereqError, e:
        print >> sys.stderr, N_("Setup error: %s") % e
        sys.exit(11)
Example #4
0
def main():
    """
    Cette fonction est appelée lorsqu'un utilisateur lance la commande
    'vigilo-plugins'.
    Cet utilitaire permet de lister le contenu d'un point d'entrée.
    """
    prepare_argparse()
    parser = OptionParser()
    parser.add_option('-p', '--provider', action="store_true",
        dest="display_provider", default=False,
        help=_("Displays the name and location of the Python package "
                "which provides this feature."))

    opts, args = parser.parse_args()
    # Sans argument, liste les noms des groupes de points d'entrée
    # se rapportant à Vigilo.
    if not args:
        groups = {}
        vigilo_groups = ('vigilo.', 'vigiadmin.', 'vigiboard.', 'vigiconf.',
                         'vigigraph.', 'vigimap.', 'vigirrd.')
        for distro in working_set:
            for group in distro.get_entry_map().keys():
                if group.startswith(vigilo_groups):
                    groups.setdefault(group, [])
                    groups[group].append(
                        distro.project_name + ' ' + distro.version)
        print _("Available entry-points groups:")
        for group in sorted(list(groups)):
            print "-", group,
            if opts.display_provider:
                print "--", _("Provided by:"), \
                      ", ".join(sorted(groups[group])),
            print
        sys.exit(0)

    for ep in working_set.iter_entry_points(args[0]):
        print "-", ep.name,
        if opts.display_provider:
            print "--", _("Provided by:"), ep.dist,
        print
    sys.exit(0)