Skip to content

Commit

Permalink
feat: 安装插件对于不存的tag版本取最大的packageid (closed #2432)
Browse files Browse the repository at this point in the history
  • Loading branch information
jpyoung3 committed Sep 30, 2024
1 parent 0931ac7 commit f9a2055
Showing 1 changed file with 16 additions and 6 deletions.
22 changes: 16 additions & 6 deletions apps/backend/subscription/steps/adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -282,8 +282,13 @@ def max_ids_by_key(self, contained_os_cpu_items: List[Dict[str, Any]]) -> List[i
return list(os_cpu__max_id_map.values())

def format2policy_packages_new(
self, plugin_id: int, plugin_name: str, plugin_version: str,
config_templates: List[Dict[str, Any]], os: str, cpu_arch: str
self,
plugin_id: int,
plugin_name: str,
plugin_version: str,
config_templates: List[Dict[str, Any]],
plugin_os: str,
plugin_cpu_arch: str,
) -> List[Dict[str, Any]]:
latest_flag: str = "latest"
is_tag: bool = Tag.objects.filter(
Expand All @@ -292,15 +297,19 @@ def format2policy_packages_new(

if plugin_version != latest_flag or is_tag:
# 如果 latest 是 tag,走取指定版本的逻辑
# 如果 latest 指定版本没有某个版本的插件包,取 id 最大版本
packages = models.Packages.objects.filter(project=plugin_name, version=plugin_version)
os_cpu_exists = models.Packages.objects.filter(
project=plugin_name, version=plugin_version, os=os, cpu_arch=cpu_arch
project=plugin_name, version=plugin_version, os=plugin_os, cpu_arch=plugin_cpu_arch
).exists()
package = None
if not os_cpu_exists:
max_pkg_id: int = self.max_ids_by_key(
list(models.Packages.objects.filter(
project=plugin_name, os=os, cpu_arch=cpu_arch).values("id", "os", "cpu_arch"))
list(
models.Packages.objects.filter(
project=plugin_name, os=plugin_os, cpu_arch=plugin_cpu_arch
).values("id", "os", "cpu_arch")
)
)[0]
package = models.Packages.objects.filter(id=max_pkg_id)
packages = packages.union(package)
Expand Down Expand Up @@ -390,7 +399,8 @@ def format2policy_config(self, original_config: Dict):
plugin_name=plugin_name,
plugin_version=plugin_version,
config_templates=validated_config["config_templates"],
os=validated_config["config_templates"]["os"],
plugin_os=validated_config["config_templates"]["os"],
plugin_cpu_arch=validated_config["config_templates"]["cpu_arch"],
)

policy_step_config = {**copy.deepcopy(validated_config), "details": policy_packages}
Expand Down

0 comments on commit f9a2055

Please sign in to comment.