mirror of
https://github.com/opnsense/core.git
synced 2026-02-18 18:18:13 -05:00
Firewall: Aliases - better focus selected alias updates to in crease performance when either --aliases or --types is used.
This commit is contained in:
parent
dfa65e1589
commit
df17f3ce81
2 changed files with 28 additions and 1 deletions
|
|
@ -396,3 +396,23 @@ class AliasParser(object):
|
|||
"""
|
||||
for alias in self._aliases:
|
||||
yield self._aliases[alias]
|
||||
|
||||
def get_affected_aliases(self, alias_names):
|
||||
""" quick impact analysis on aliases to update given a certain list of names (recursive dig)
|
||||
:param alias_names: list of names
|
||||
:return: list Alias objects
|
||||
"""
|
||||
dep_lists = {}
|
||||
names = set(alias_names)
|
||||
retval = []
|
||||
has_changed = True
|
||||
while has_changed:
|
||||
has_changed = False
|
||||
for alias in self._aliases.values():
|
||||
if alias.get_name() not in dep_lists:
|
||||
dep_lists = set(alias.get_deps())
|
||||
if (alias.get_name() in names or len(names.intersection(dep_lists)) > 0) and alias not in retval:
|
||||
retval.append(alias)
|
||||
names.add(alias.get_name())
|
||||
has_changed = True
|
||||
return retval
|
||||
|
|
|
|||
|
|
@ -79,8 +79,15 @@ if __name__ == '__main__':
|
|||
if alias.get_type() in inputargs.types:
|
||||
to_update.append(alias.get_name())
|
||||
|
||||
query_aliases = aliases.get_affected_aliases(to_update)
|
||||
if len(query_aliases) == 0:
|
||||
# no selected target
|
||||
sys.exit(0)
|
||||
else:
|
||||
query_aliases = list(aliases)
|
||||
|
||||
use_cached = lambda x: to_update is not None and x not in to_update
|
||||
for alias in aliases:
|
||||
for alias in query_aliases:
|
||||
# determine if an alias has expired or updated and collect full chain of dependencies (so we can resolve them).
|
||||
alias_changed_or_expired = max(alias.changed(), alias.expired())
|
||||
alias_resolve_list = [alias]
|
||||
|
|
|
|||
Loading…
Reference in a new issue