Skip to content

Commit

Permalink
feat: 安装插件对于不存的tag版本取最大的packageid
Browse files Browse the repository at this point in the history
  • Loading branch information
jpyoung3 committed Oct 11, 2024
1 parent b4c1a48 commit c4fab70
Showing 1 changed file with 22 additions and 14 deletions.
36 changes: 22 additions & 14 deletions apps/backend/subscription/steps/adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
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 @@ -23,6 +24,7 @@
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 @@ -297,20 +299,26 @@ def format2policy_packages_new(
# 如果 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="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)
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)
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 c4fab70

Please sign in to comment.