@@ -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+
3248def 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
4459def 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