Skip to content

Commit 6fa0e6e

Browse files
committed
pull all deps, not only the first level
1 parent 16ac0a3 commit 6fa0e6e

1 file changed

Lines changed: 18 additions & 4 deletions

File tree

src/filter_plugins/foremanctl.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,24 @@ def filter_features(items):
2929
return items
3030

3131

32+
def get_dependencies_for_feature(feature):
33+
dependencies = set()
34+
for dependency in FEATURE_MAP.get(feature, {}).get('dependencies', []):
35+
if dependency not in dependencies:
36+
dependencies.update(get_dependencies_for_feature(dependency))
37+
dependencies.add(dependency)
38+
return dependencies
39+
40+
41+
def get_dependencies(features):
42+
dependencies = set()
43+
for feature in features:
44+
dependencies.update(get_dependencies_for_feature(feature))
45+
return dependencies
46+
47+
3248
def foreman_plugins(value):
33-
dependencies = [FEATURE_MAP.get(feature, {}).get('dependencies', []) for feature in filter_features(value)]
34-
dependencies = list(set([dep for deplist in dependencies for dep in deplist]))
49+
dependencies = list(get_dependencies(filter_features(value)))
3550
plugins = [FEATURE_MAP.get(feature, {}).get('foreman', {}).get('plugin_name') for feature in filter_features(value + dependencies)]
3651
return compact_list(plugins)
3752

@@ -42,8 +57,7 @@ def available_foreman_plugins(_value):
4257

4358

4459
def foreman_proxy_plugins(value):
45-
dependencies = [FEATURE_MAP.get(feature, {}).get('dependencies', []) for feature in filter_features(value)]
46-
dependencies = list(set([dep for deplist in dependencies for dep in deplist]))
60+
dependencies = list(get_dependencies(filter_features(value)))
4761
plugins = [FEATURE_MAP.get(feature, {}).get('foreman_proxy', {}).get('plugin_name') for feature in filter_features(value + dependencies)]
4862
return compact_list(plugins)
4963

0 commit comments

Comments
 (0)