Tâche #8707
Scénario #9379: Consolidation CREOLE
eosfunc.calc_multi_condition : il n'est pas possible de mettre des match/mismatch disabled
Status:
Fermé
Priority:
Normal
Assigned To:
Target version:
Remaining (hours):
0.0
Description
Si on défini une variable disable en tant que variable match ou mismatch dans condition calc_multi_condition, ce sont les valeurs par défaut qui sont utilisés.
Il n'est pas possible avec le code actuel de changer les valeurs par défaut.
Je propose une nouvelle version calc_multi_condition (iso fonctionnel avec l'existant) :
def calc_multi_condition(param, match=None, mismatch=None, operator='AND', default_match=None, default_mismatch=None, **conditions): """param: réponse testée sur toutes les conditions. Si les réponses des conditions sont différentes mettre une liste avec chacune des conditions a tester operator: doit être 'AND' ou 'OR' match: valeur de retour si toutes les conditions sont validées (si operator est à 'AND') ou si une des conditions sont validée (si operator est à 'OR') mismatch: valeur de retour si au moins une des conditions n'est pas validée (si operator est à 'AND') ou toutes les conditions ne sont pas validées (si operator est à 'OR') si les variables match ou mismatch sont optional ou hidden, recupère le contenu de la variable default_match ou default_mismatch conditions: liste des conditions a tester. exemple: <auto name='calc_multi_condition' target='test_activer_bacula_dir'> <param>['oui', 'non']</param> <param type='eole' name='condition_1'>activer_bacula</param> <param type='eole' name='condition_2'>activer_bacula_dir</param> <param name='match'>oui</param> <param name='mismatch'>non</param> </auto> """ if operator not in ('AND', 'OR'): raise ValueError('operator doit être "AND" ou "OR"') if match is None: if default_match is None: match = 'oui' else: if default_match == 'None': match = None else: match = default_match if mismatch is None: if default_mismatch is None: mismatch = 'non' else: if default_mismatch == 'None': mismatch = None else: mismatch = default_mismatch conditions_keys = conditions.keys() conditions_keys.sort() for condition in conditions_keys: if not condition.startswith('condition_'): raise ValueError('Les clefs de condition doivent commencer par "condition_"') if isinstance(param, list) and len(param) != len(conditions): raise ValueError('Nombre de conditions et de params différent dans calc_multi_condition') for num in range(0, len(conditions)): key = conditions_keys[num] value = conditions[key] if type(param) != list: if operator == 'AND' and value != param: return mismatch if operator == 'OR' and value == param: return match else: if operator == 'AND' and value != param[num]: return mismatch if operator == 'OR' and value == param[num]: return match if operator == 'AND': return match else: return mismatch
Related issues
Associated revisions
eosfunc.calc_multi_condition : avec match et mismatch disabled (fixes #8707 @1h)
Test unitaire pour calc_multi_condition avec default_mismatch
- tests/test_genconfig.py : maj de test_calc_multi_condition()
Ref: #8707 @30m
History
#1 Updated by Luc Bourdot over 6 years ago
- Parent task set to #9379
#2 Updated by Benjamin Bohard over 6 years ago
- Estimated time set to 1.50 h
- Remaining (hours) set to 1.5
#3 Updated by Emmanuel GARETTE over 6 years ago
- Status changed from Nouveau to En cours
- Start date set to 10/28/2014
#4 Updated by Emmanuel GARETTE over 6 years ago
- Assigned To set to Emmanuel GARETTE
#5 Updated by Emmanuel GARETTE over 6 years ago
- Status changed from En cours to Résolu
- % Done changed from 0 to 100
Appliqué par commit 406660a763ee46dd9ccdf775d122adee07df3bd8.
#6 Updated by Emmanuel GARETTE over 6 years ago
- Due date set to 11/07/2014
- Remaining (hours) changed from 1.5 to 0.0
#7 Updated by Joël Cuissinat over 6 years ago
- Status changed from Résolu to Fermé
OK validé par le test unitaire modifié.