From 2bf51dec9d8db8fe8fc7b54dd7f497050026cfb4 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Tue, 18 Jul 2017 22:58:35 +0400 Subject: [PATCH] maj doc --- TODO.md | 5 ++++ lib/ulib/support/deploydb.py | 55 +++++++++++++++++++++--------------- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/TODO.md b/TODO.md index db804f9..c840f0e 100644 --- a/TODO.md +++ b/TODO.md @@ -41,5 +41,10 @@ * faire des outils d'interrogation base de données pour pouvoir commencer à exploiter le code + * fonction qui transforme args en deux listes: une liste de valeurs et une + liste d'attributs de la forme name=value + * lors de la recherche, les liens devraient contenir les objets et non les + identifiants dans fos et tos. corriger le code de recherche match_fos et + match_tos pour utiliser les valeurs des objets. -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary \ No newline at end of file diff --git a/lib/ulib/support/deploydb.py b/lib/ulib/support/deploydb.py index e39cfdf..6dac1df 100755 --- a/lib/ulib/support/deploydb.py +++ b/lib/ulib/support/deploydb.py @@ -26,6 +26,7 @@ def flatten(src, unique=True, clean=True, sep=','): e.g flatten(['a , b', 'c,']) --> ['a', 'b', 'c'] """ + if src is None: return None if not isseq(src): src = [src] dest = [] for items in src: @@ -645,6 +646,7 @@ class Database(object): est invalide. Si value ou attrs sont définis, filtrer sur ces valeurs. """ if otype is None: + #XXX faire un traitement récursif avec get_known_otypes objects = [] for objects_ids in self._objects_ids_otype.values(): objects.extend(objects_ids.values()) @@ -698,6 +700,7 @@ class Database(object): XXX compléter la doc """ + #XXX si ltype is None, faire un traitement récursif avec get_known_ltypes links = self._links_ltype.get(ltype, None) if links is None: return None @@ -1514,11 +1517,11 @@ def __resolve_format(o, query_type): ovars = False lvars = True ofunc, lfunc = o.object_func, o.link_func - ivars = flatten(o.vars) or None - return format, ovars, lvars, ofunc, lfunc, ivars + avars = flatten(o.vars) or None + return format, ovars, lvars, ofunc, lfunc, avars -def print_var(name, values, format, ivars, is_values=False): - if ivars is not None and name not in ivars: return +def print_var(name, values, format, avars, is_values=False): + if avars is not None and name not in avars: return if not isseq(values): values = [values] if format == 'shell': params = (name, " ".join(qshell(values))) @@ -1538,16 +1541,15 @@ def print_var(name, values, format, ivars, is_values=False): else: raise ValueError("%s: invalid format" % format) -def print_objects(objects, query_type, o): +def print_objects(objects, format, ovars, ofunc, avars): if objects is None: return - format, ovars, lvars, ofunc, lfunc, ivars = __resolve_format(o, query_type) if not ovars: return for o in objects: if o.is_defaults(): continue - print_var('otype', o.OTYPE, format, ivars) - print_var(o.VALUESNAME, o.values, format, ivars, True) + print_var('otype', o.OTYPE, format, avars) + print_var(o.VALUESNAME, o.values, format, avars, True) for name, values in o.attrs.items(): - print_var('%s%s' % (o.ATTRPREFIX, name), values, format, ivars) + print_var('%s%s' % (o.ATTRPREFIX, name), values, format, avars) if ofunc and format == 'shell': print ofunc @@ -1602,15 +1604,22 @@ def run_qdd(o): if o.profile is not None: profile = o.profile or None else: profile = UNDEF args = o.args or UNDEF + format, ovars, lvars, ofunc, lfunc, avars = __resolve_format(o, query_type) if query_type == 'object': objects = db.get_objects(object_type, args) - print_objects(objects, query_type, o) + print_objects(objects, format, ovars, ofunc, avars) elif query_type == 'source': - pass + tos, attrs = part_filter_args(args) + links = db.get_links(link_type, profile, to=tos, attrs=attrs) + links = filter_links(object_type) + print_links(links, format, ovars, lvars, ofunc, lfunc, avars) elif query_type == 'dest': - pass + fos, attrs = part_filter_args(args) + links = db.get_links(link_type, profile, fo=fos, attrs=attrs) + links = filter_links(object_type) + print_links(links, format, ovars, lvars, ofunc, lfunc, avars) elif query_type == 'link': - pass + pass #XXX if __name__ == '__main__': from argparse import ArgumentParser, HelpFormatter @@ -1660,15 +1669,15 @@ if __name__ == '__main__': help=u"Spécifier le nom de la configuration à utiliser. Par défaut, utiliser le nom générique deploy.") AP.add_argument('-q', '--query-type', dest='query_type', help=u"""\ -Spécifier le type d'information à afficher: +Spécifier le type d'information à afficher et donc le type d'information à chercher: >>> -* object pour des informations sur les objets, +* 'object' pour des informations sur les objets. le filtre est la valeur de l'objet ou d'un de ses attributs. >>> -* source pour des informations sur les objets sources d'un lien, +* 'source' pour des informations sur les objets sources d'un lien. le filtre est la valeur d'un objet destination ou de l'un de ses attributs. >>> -* dest pour des informations sur les objets destinations d'un lien, +* 'dest' pour des informations sur les objets destinations d'un lien. le filtre est la valeur d'un objet source et de l'un de ses attributs. >>> -* link pour des informations sur un lien. +* 'link' pour des informations sur un lien. >>> La valeur par défaut est '-q dest -j host'""") AP.add_argument('-j', '--object-type', dest='object_type', @@ -1679,13 +1688,15 @@ La valeur par défaut est '-q dest -j host'""") help=u"Spécifier le profil de déploiement pour -q source|dest|link. Utiliser une valeur vide pour ne sélectionner que les liens sans profils. Ne pas spécifier l'option pour afficher tous les profils définis.") AP.add_argument('-F', '--format', dest='format', help=u"""\ -Spécifier le format pour la sortie. La valeur par défaut est shell. +Spécifier le format pour la sortie: >>> -* shell affiche les définitions de variables +* 'shell' affiche les définitions de variables >>> -* lines affiches les valeurs à raison d'une par lignes. les attributs ne sont pas affichés. +* 'lines' affiches les valeurs à raison d'une par lignes. les attributs ne sont pas affichés. >>> -* spaces, path et comma affichent les valeurs séparées respectivement par un espace ' ', deux point ':' et une virgule ','. les attributs ne sont pas affichés.""") +* 'spaces', 'path' et 'comma' affichent les valeurs séparées respectivement par un espace ' ', deux point ':' et une virgule ','. les attributs ne sont pas affichés. +>>> +La valeur par défaut est shell""") AP.add_argument('-v', '--include-vars', action='append', dest='vars', metavar='VARS...', help=u"Spécifier les variables qui doivent être affichées. Par défaut, toutes les variables sont affichées.") AP.add_argument('-o', '--object-vars', action='store_true', dest='object_vars',