Skip to content
This repository has been archived by the owner on May 15, 2019. It is now read-only.

Commit

Permalink
expose replacing, negating and merging variables in template expressions
Browse files Browse the repository at this point in the history
  • Loading branch information
matejv committed Jun 26, 2017
1 parent 213d7a6 commit 438cfb7
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 7 deletions.
7 changes: 5 additions & 2 deletions napalm_yang/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,9 @@ def _resolve_rule(rule, **kwargs):


def resolve_rule(rule, attribute, keys, extra_vars=None, translation_model=None,
parse_bookmarks=None):
parse_bookmarks=None, replacing=False, merging=False, negating=False):
if isinstance(rule, list):
return [resolve_rule(r, attribute, keys, extra_vars, translation_model, parse_bookmarks)
return [resolve_rule(r, attribute, keys, extra_vars, translation_model, parse_bookmarks, replacing, merging, negating)
for r in rule]
elif isinstance(rule, str):
if rule in ["unnecessary"]:
Expand All @@ -91,6 +91,9 @@ def resolve_rule(rule, attribute, keys, extra_vars=None, translation_model=None,
kwargs["bookmarks"] = parse_bookmarks
kwargs["attribute"] = attribute
kwargs["extra_vars"] = extra_vars
kwargs["replacing"] = replacing
kwargs["merging"] = merging
kwargs["negating"] = negating

for k, v in rule.items():
if k.startswith('post_process_'):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ static:
_process: unnecessary
next-hop:
_process:
- mode: gate
when: "{{ replacing and negating }}"
- mode: container
key_value: "{{ extra_vars.prefix }} {{ next_hop_key }}"
negate: "{{ extra_vars.negate_prefix }} {{ next_hop_key }}\n"
Expand Down
12 changes: 7 additions & 5 deletions napalm_yang/translator.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,15 @@ def _translate(self, attribute, model, mapping, translation, other):

def _translate_leaf(self, attribute, model, mapping, translation, other):
rule = helpers.resolve_rule(mapping["_process"], attribute, self.keys, self.extra_vars, model,
self.bookmarks)
self.bookmarks, bool(self.replace), bool(self.merge))
self.translator.translate_leaf(attribute, model, other, rule, translation, self.bookmarks)

def _translate_container(self, attribute, model, mapping, translation, other):
if model._yang_type:
self.bookmarks["parent"] = translation

rule = helpers.resolve_rule(mapping["_process"], attribute, self.keys,
self.extra_vars, model, self.bookmarks)
self.extra_vars, model, self.bookmarks, bool(self.replace), bool(self.merge))

et, extra_vars = self.translator.translate_container(attribute, model, other, rule,
translation, self.bookmarks)
Expand Down Expand Up @@ -115,10 +115,12 @@ def _translate_list(self, attribute, model, mapping, translation, other):
self.keys[key_name] = key
self.keys["parent_key"] = key

translation_rule_negate = helpers.resolve_rule(mapping["_process"], attribute,
self.keys, self.extra_vars, element, self.bookmarks, bool(self.replace), bool(self.merge), True)
translation_rule = helpers.resolve_rule(mapping["_process"], attribute,
self.keys, self.extra_vars, element, self.bookmarks)
self.keys, self.extra_vars, element, self.bookmarks, bool(self.replace), bool(self.merge), False)

self.translator.default_element(translation_rule, translation, self.bookmarks,
self.translator.default_element(translation_rule_negate, translation, self.bookmarks,
replacing=True)
et, extra_vars = self.translator.init_element(attribute, element, other_element, translation_rule,
translation, self.bookmarks)
Expand Down Expand Up @@ -158,7 +160,7 @@ def _default_element_list(self, attribute, running, mapping, translation, candid

translation_rule = helpers.resolve_rule(mapping["_process"], attribute,
self.keys, self.extra_vars, element,
self.bookmarks)
self.bookmarks, bool(self.replace), bool(self.merge), True)

_, extra_vars = self.translator.default_element(translation_rule, translation, self.bookmarks)
self.extra_vars.update(extra_vars)
Expand Down

0 comments on commit 438cfb7

Please sign in to comment.