support adding tool group env per task level

This commit is contained in:
Kayla Man 2024-05-06 19:04:51 +08:00
parent 39a3271d0c
commit e669ac7ab2

View file

@ -287,17 +287,24 @@ def prepare_app_environments(
groups_by_name = {}
tool_by_group_name = collections.defaultdict(dict)
if task_entity:
groups_by_name, environments, app_and_tool_labels = (
get_tool_group_enviornment_by_entities(app, task_entity, groups_by_name,
tool_by_group_name, environments,
app_and_tool_labels)
)
elif folder_entity:
groups_by_name, environments, app_and_tool_labels = (
get_tool_group_enviornment_by_entities(app, folder_entity, groups_by_name,
tool_by_group_name, environments,
app_and_tool_labels)
)
# Make sure each tool group can be added only once
tools_group_by_entity = task_entity["attrib"].get("tools")
if folder_entity and not tools_group_by_entity:
tools_group_by_entity = folder_entity["attrib"].get("tools")
for key in tools_group_by_entity or []:
tool = app.manager.tools.get(key)
if not tool or not tool.is_valid_for_app(app):
continue
groups_by_name[tool.group.name] = tool.group
tool_by_group_name[tool.group.name][tool.name] = tool
for group_name in sorted(groups_by_name.keys()):
group = groups_by_name[group_name]
environments.append(group.environment)
for tool_name in sorted(tool_by_group_name[group_name].keys()):
tool = tool_by_group_name[group_name][tool_name]
environments.append(tool.environment)
app_and_tool_labels.append(tool.full_name)
log.debug(
"Will add environments for apps and tools: {}".format(
@ -351,37 +358,6 @@ def prepare_app_environments(
data["env"].pop(key, None)
def get_tool_group_enviornment_by_entities(app, entity, groups_by_name,
tool_by_group_name, environments,
app_and_tool_labels):
"""Function to get tool group environment by entities
Args:
app (dict): application
entity (dict): entity
groups_by_name (dict): group by name
tool_by_group_name (dict): tools by group name
environments (list): enviornments
app_and_tool_labels (list): full name of the application
"""
# Make sure each tool group can be added only once
for key in entity["attrib"].get("tools") or []:
tool = app.manager.tools.get(key)
if not tool or not tool.is_valid_for_app(app):
continue
groups_by_name[tool.group.name] = tool.group
tool_by_group_name[tool.group.name][tool.name] = tool
for group_name in sorted(groups_by_name.keys()):
group = groups_by_name[group_name]
environments.append(group.environment)
for tool_name in sorted(tool_by_group_name[group_name].keys()):
tool = tool_by_group_name[group_name][tool_name]
environments.append(tool.environment)
app_and_tool_labels.append(tool.full_name)
return groups_by_name, environments, app_and_tool_labels
def apply_project_environments_value(
project_name, env, project_settings=None, env_group=None
):