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 Oct 11, 2024
1 parent c4fab70 commit e1e935d
Showing 1 changed file with 14 additions and 22 deletions.
36 changes: 14 additions & 22 deletions apps/backend/subscription/steps/adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
specific language governing permissions and limitations under the License.
"""
import copy
import itertools
import logging
import typing
from collections import ChainMap, OrderedDict, defaultdict
Expand All @@ -24,7 +23,6 @@
from apps.core.tag.models import Tag
from apps.core.tag.targets.plugin import PluginTargetHelper
from apps.node_man import constants, models
from apps.node_man.constants import CPU_TUPLE, PLUGIN_OS_TUPLE

logger = logging.getLogger("app")

Expand Down Expand Up @@ -299,26 +297,20 @@ def format2policy_packages_new(
# 如果 latest 是 tag,走取指定版本的逻辑
# 如果 latest 指定版本没有某个版本的插件包,取 id 最大版本
packages = models.Packages.objects.filter(project=plugin_name, version=plugin_version)
package_list = models.Packages.objects.none()
for os, cpu_arch in itertools.product(PLUGIN_OS_TUPLE, CPU_TUPLE):
version_exists = models.Packages.objects.filter(
project=plugin_name, version=plugin_version, os=os, cpu_arch=cpu_arch
).exists()
if not version_exists:
os_cpu_exists = models.Packages.objects.filter(
project=plugin_name, os=os, cpu_arch=cpu_arch
).exists()
if 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"
)
)
)[0]
package = models.Packages.objects.filter(id=max_pkg_id)
package_list = package_list.union(package)
packages = packages.union(package_list)
os_cpu_exists = models.Packages.objects.filter(
project=plugin_name, version=plugin_version, os="linux", cpu_arch="x86_64"
).exists()
package = models.Packages.objects.none()
if not os_cpu_exists:
max_pkg_id: int = self.max_ids_by_key(
list(
models.Packages.objects.filter(project=plugin_name, os="linux", cpu_arch="x86_64").values(
"id", "os", "cpu_arch"
)
)
)[0]
package = models.Packages.objects.filter(id=max_pkg_id)
packages = packages.union(package)
else:
max_pkg_ids: List[int] = self.max_ids_by_key(
list(models.Packages.objects.filter(project=plugin_name).values("id", "os", "cpu_arch"))
Expand Down

0 comments on commit e1e935d

Please sign in to comment.