Skip to content

Commit

Permalink
fix: fix cr
Browse files Browse the repository at this point in the history
  • Loading branch information
Han-Ya-Jun committed Sep 22, 2023
1 parent 31d4a81 commit dddd240
Show file tree
Hide file tree
Showing 20 changed files with 21 additions and 159 deletions.
6 changes: 0 additions & 6 deletions src/dashboard/apigateway/apigateway/account/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,7 @@
from django.urls import path

from . import views
from ..apis.web.monitor.views import AlarmRecordSummaryListApi

urlpatterns = [
path("userinfo/", views.UserAPIView.as_view(), name="accounts.userinfo"),
path(
"gateways/monitors/alarm/records/summary/",
AlarmRecordSummaryListApi.as_view(),
name="accounts.monitors.alarm_records.summary",
),
]
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,8 @@ class ResourceVersionCreateV1InputSLZ(serializers.Serializer):
title = serializers.CharField(required=False)
comment = serializers.CharField(required=False)

def validate(self, data):
validator = ResourceVersionValidator()
validator(data)
return data
class Meta:
validators = [ResourceVersionValidator()]


class ResourceVersionQueryV1InputSLZ(serializers.Serializer):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
from rest_framework import serializers

from apigateway.apps.support.constants import ProgrammingLanguageEnum
from apigateway.biz.resource_version import ResourceVersionHandler
from apigateway.core.models import Gateway


Expand Down Expand Up @@ -93,7 +92,7 @@ def get_resource_version_title(self, obj):

def get_resource_version_display(self, obj):
resource_version_data = self.context["resource_versions"][obj.instance.resource_version_id]
return ResourceVersionHandler.get_resource_version_display(resource_version_data)
return resource_version_data["version"]

def get_released_stages(self, obj):
return self.context["released_stages"].get(obj.instance.resource_version_id, [])
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@

from apigateway.apps.support.api_sdk.models import SDKFactory
from apigateway.apps.support.constants import ProgrammingLanguageEnum
from apigateway.biz.resource_version import ResourceVersionHandler


class SDKListInputSLZ(serializers.Serializer):
Expand Down Expand Up @@ -54,7 +53,7 @@ def get_resource_version(self, obj):
resource_version = self.context["resource_versions"][obj.resource_version_id]
return {
"id": resource_version["id"],
"display": ResourceVersionHandler.get_resource_version_display(resource_version),
"display": resource_version["version"],
}

def get_released_stages(self, obj):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
from rest_framework import serializers

from apigateway.biz.constants import SEMVER_PATTERN
from apigateway.biz.resource_version import ResourceVersionHandler
from apigateway.biz.validators import ResourceVersionValidator
from apigateway.common.fields import CurrentGatewayDefault
from apigateway.core.models import ResourceVersion
Expand All @@ -30,10 +29,8 @@ class ResourceVersionCreateInputSLZ(serializers.Serializer):
version = serializers.RegexField(SEMVER_PATTERN, max_length=64, required=True)
comment = serializers.CharField(allow_blank=True, required=False)

def validate(self, data):
validator = ResourceVersionValidator()
validator(data)
return data
class Meta:
validators = [ResourceVersionValidator()]


class ResourceVersionRetrieveOutputSLZ(serializers.Serializer):
Expand All @@ -52,7 +49,6 @@ class ResourceVersionListOutputSLZ(serializers.Serializer):
id = serializers.IntegerField()
released_stages = serializers.SerializerMethodField()
sdk_count = serializers.SerializerMethodField()
resource_version_display = serializers.SerializerMethodField()
version = serializers.SerializerMethodField()
comment = serializers.CharField()
created_time = serializers.DateTimeField()
Expand All @@ -66,9 +62,6 @@ def get_sdk_count(self, obj):
def get_version(self, obj):
return obj.get("version")

def get_resource_version_display(self, obj):
return ResourceVersionHandler.get_resource_version_display(obj)


class NeedNewVersionOutputSLZ(serializers.Serializer):
need_new_version = serializers.BooleanField()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ class GatewaySDKQueryInputSLZ(serializers.Serializer):
class ResourceVersionInfoSlz(serializers.Serializer):
id = serializers.IntegerField()
version = serializers.CharField()
resource_version_display = serializers.CharField(source="object_display")


class GatewaySDKListOutputSLZ(serializers.Serializer):
Expand All @@ -82,4 +81,4 @@ class GatewaySDKListOutputSLZ(serializers.Serializer):
resource_version = ResourceVersionInfoSlz(source="instance.resource_version")

class Meta:
ref_name = "apigateway.apps.support.models"
ref_name = "apigateway.apis.web.sdk.serializers.GatewaySDKListOutputSLZ"
63 changes: 2 additions & 61 deletions src/dashboard/apigateway/apigateway/biz/released_resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,11 @@
# to the current version of the project delivered to anyone in the future.
#
import json
from collections import defaultdict
from dataclasses import dataclass, field
from typing import Any, Dict, List, Optional

from apigateway.biz.resource_version import ResourceVersionHandler
from apigateway.core.constants import StageStatusEnum
from apigateway.core.models import Gateway, Release, ReleasedResource, ResourceVersion, Stage
from apigateway.core.models import Gateway, Release, ReleasedResource, Stage
from apigateway.core.utils import get_path_display, get_resource_doc_link


Expand Down Expand Up @@ -107,57 +105,6 @@ def clear_unreleased_resource(gateway_id: int) -> None:
resource_version_id__in=resource_version_ids
).delete()

# TODO 待重构
@staticmethod
def get_resource_released_stage_count(gateway_id: int, resource_ids: List[int]) -> Dict[int, int]:
"""获取资源已发布环境的数量"""
resource_version_ids = Release.objects.get_released_resource_version_ids(gateway_id)
released_stage_count = Release.objects.get_released_stage_count(resource_version_ids)

resource_released_stage_count: dict = defaultdict(int)

queryset = ReleasedResource.objects.filter(gateway_id=gateway_id, resource_id__in=resource_ids).values(
"resource_id", "resource_version_id"
)
for resource in queryset:
resource_id = resource["resource_id"]
resource_version_id = resource["resource_version_id"]
resource_released_stage_count[resource_id] += released_stage_count.get(resource_version_id, 0)

return resource_released_stage_count

# TODO 待重构
@staticmethod
def get_resource_released_stages(gateway_id: int, resource_id: int) -> Dict[int, dict]:
"""获取资源已发布的环境信息"""

rv_id_to_released_resource_map = ReleasedResource.objects.get_resource_version_id_to_obj_map(
gateway_id, resource_id
)
released_stage_id_map = Release.objects.get_stage_id_to_fields_map(
gateway_id, rv_id_to_released_resource_map.keys()
)
resource_version_id_map = ResourceVersion.objects.get_id_to_fields_map(
gateway_id,
rv_id_to_released_resource_map.keys(),
)

resource_released_stages = {}
for stage_id, stage_release in released_stage_id_map.items():
resource_version_id = stage_release["resource_version_id"]
resource_version = resource_version_id_map[resource_version_id]
released_resource = rv_id_to_released_resource_map[resource_version_id]
resource_released_stages[stage_id] = {
"stage_id": stage_id,
"resource_version_id": resource_version["id"],
"resource_version_name": resource_version["name"],
"resource_version_title": resource_version["title"],
"resource_version_display": ResourceVersionHandler.get_resource_version_display(resource_version),
"released_resource": released_resource,
}

return resource_released_stages

# TODO 待重构
@staticmethod
def get_stage_release(gateway, stage_ids=None):
Expand Down Expand Up @@ -186,13 +133,7 @@ def get_stage_release(gateway, stage_ids=None):
"resource_version": {
"version": release["resource_version__version"],
},
"resource_version_display": ResourceVersionHandler.get_resource_version_display(
{
"version": release["resource_version__version"],
"name": release["resource_version__name"],
"title": release["resource_version__title"],
}
),
"resource_version_display": release["resource_version__version"],
}
for release in stage_release
}
Expand Down
14 changes: 0 additions & 14 deletions src/dashboard/apigateway/apigateway/biz/resource_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
from apigateway.core.constants import ContextScopeTypeEnum, ResourceVersionSchemaEnum
from apigateway.core.models import Backend, Gateway, Proxy, Release, Resource, ResourceVersion, Stage
from apigateway.utils import time as time_utils
from apigateway.utils.string import random_string


class ResourceVersionHandler:
Expand Down Expand Up @@ -225,19 +224,6 @@ def get_latest_version_by_gateway(gateway_id: int):
# 取最大的 version
return max(version["version"] for version in versions)

@staticmethod
def get_resource_version_display(data: Dict[str, Any]) -> str:
return f"{data['version']}"

@staticmethod
def generate_version_name(gateway_name: str, now: datetime.datetime) -> str:
"""生成新的版本名称"""
return "{gateway_name}_{now_str}_{random_str}".format(
gateway_name=gateway_name,
now_str=time_utils.format(now, fmt="YYYYMMDDHHmmss"),
random_str=random_string(5),
)

@staticmethod
def get_latest_created_time(gateway_id: int) -> Optional[datetime.datetime]:
return ResourceVersion.objects.filter(gateway_id=gateway_id).values_list("created_time", flat=True).last()
Expand Down
9 changes: 1 addition & 8 deletions src/dashboard/apigateway/apigateway/biz/sdk/gateway_sdk.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@

from apigateway.apps.support.api_sdk.models import SDKFactory
from apigateway.apps.support.models import GatewaySDK
from apigateway.biz.resource_version import ResourceVersionHandler
from apigateway.core.models import Release


Expand Down Expand Up @@ -57,13 +56,7 @@ def get_stage_sdks(cls, gateway_id: int, language: str) -> List:
},
"resource_version": {
"id": release["resource_version__id"],
"display": ResourceVersionHandler.get_resource_version_display(
{
"version": release["resource_version__version"],
"name": release["resource_version__name"],
"title": release["resource_version__title"],
}
),
"display": release["resource_version__version"],
},
"sdk": SDKFactory.create(sdk).as_dict() if sdk else None,
}
Expand Down
4 changes: 0 additions & 4 deletions src/dashboard/apigateway/apigateway/biz/validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,10 +159,6 @@ def __call__(self, attrs):
if not Resource.objects.filter(gateway_id=gateway.id).exists():
raise serializers.ValidationError(_("请先创建资源,然后再生成版本。"))

# 判断是否创建资源
if not Resource.objects.filter(gateway_id=gateway.id).exists():
raise serializers.ValidationError(_("请先创建资源,然后再生成版本。"))

# 是否绑定backend
if Proxy.objects.filter(resource__gateway=gateway, backend__isnull=True).exists():
raise serializers.ValidationError(_("存在资源未绑定后端服务. "))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
)
from apigateway.apps.esb.helpers import get_component_doc_link
from apigateway.apps.esb.mixins import OfficialWriteFields
from apigateway.biz.resource_version import ResourceVersionHandler
from apigateway.common.fields import TimestampField


Expand Down Expand Up @@ -228,6 +227,4 @@ def get_resource_version_display(self, obj):
if resource_version_id not in self.context["resource_version_id_to_fields"]:
return ""

return ResourceVersionHandler.get_resource_version_display(
self.context["resource_version_id_to_fields"][resource_version_id]
)
return self.context["resource_version_id_to_fields"][resource_version_id].get("version")
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,6 @@ def setup_fixtures(self, request_factory):
"created_time": "2020-12-13 23:04:00",
"resource_version_name": "bk-esb-demo",
"resource_version_title": "v1",
"resource_version_display": "1.0.0",
"created_by": "admin",
"status": "success",
"message": "ok",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def test_create(self):
},
]
for test in data:
request = self.factory.post(f"/accounts/gateways/{self.gateway.id}/monitors/alarm/strategies/", data=test)
request = self.factory.post(f"/apis/{self.gateway.id}/monitors/alarm/strategies/", data=test)

view = AlarmStrategyListCreateApi.as_view()
response = view(request, gateway_id=self.gateway.id)
Expand Down Expand Up @@ -452,7 +452,7 @@ def test_get(self):
]

for test in data:
request = self.factory.get("/gateways/monitors/alarm/records/summary/", data=test["params"])
request = self.factory.get("/apis/monitors/alarm/records/summary/", data=test["params"])

view = AlarmRecordSummaryListApi.as_view()
response = view(request)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ def test_to_representation(self):
"id": resource_version.id,
"version": resource_version.version,
"comment": resource_version.comment,
"resource_version_display": "1.0.1",
"sdk_count": 0,
"released_stages": [
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ def test_list(self, request_view, fake_gateway):
"id": resource_version.id,
"version": resource_version.version,
"comment": resource_version.comment,
"resource_version_display": "1.0.1",
"sdk_count": 1,
"created_time": dummy_time.str,
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ def test_to_representation(self, fake_gateway):
"resource_version": {
"id": resource_version.id,
"version": resource_version.version,
"resource_version_display": "1.0.1(test)",
},
},
]
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ def test_list(self, request_view, fake_gateway, settings):
"resource_version": {
"id": resource_version.id,
"version": resource_version.version,
"resource_version_display": "1.0.1(test)",
},
},
{
Expand All @@ -96,7 +95,6 @@ def test_list(self, request_view, fake_gateway, settings):
"resource_version": {
"id": resource_version.id,
"version": resource_version.version,
"resource_version_display": "1.0.1(test)",
},
},
],
Expand Down Expand Up @@ -150,7 +148,6 @@ def test_create(self, request_view, fake_gateway, mocker):
"version_number": "2",
"resource_version_id": resource_version.id,
"resource_version": resource_version.version,
"resource_version_display": "1.0.1",
},
},
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
ReleasedResourceHandler,
get_released_resource_data,
)
from apigateway.core.models import Gateway, Release, ReleasedResource, Resource, ResourceVersion, Stage
from apigateway.core.models import Gateway, Release, ReleasedResource, ResourceVersion, Stage
from apigateway.tests.utils.testing import dummy_time

pytestmark = pytest.mark.django_db
Expand Down Expand Up @@ -117,32 +117,6 @@ def test_clear_unreleased_resource(self, fake_gateway, fake_stage):
assert ReleasedResource.objects.filter(resource_version_id=rv1.id).exists()
assert not ReleasedResource.objects.filter(resource_version_id=rv2.id).exists()

def test_get_resource_released_stage_count(self, fake_gateway):
s1 = G(Stage, gateway=fake_gateway)
s2 = G(Stage, gateway=fake_gateway)

r1 = G(Resource, gateway=fake_gateway)
r2 = G(Resource, gateway=fake_gateway)

rv1 = G(ResourceVersion, gateway=fake_gateway)
rv2 = G(ResourceVersion, gateway=fake_gateway)

G(Release, gateway=fake_gateway, stage=s1, resource_version=rv1)
G(Release, gateway=fake_gateway, stage=s2, resource_version=rv2)

G(ReleasedResource, gateway=fake_gateway, resource_version_id=rv1.id, resource_id=r1.id, data={})
G(ReleasedResource, gateway=fake_gateway, resource_version_id=rv1.id, resource_id=r2.id, data={})
G(ReleasedResource, gateway=fake_gateway, resource_version_id=rv2.id, resource_id=r2.id, data={})

result = ReleasedResourceHandler.get_resource_released_stage_count(
gateway_id=fake_gateway.id,
resource_ids=[r1.id, r2.id],
)
assert result == {
r1.id: 1,
r2.id: 2,
}

def test_get_stage_release(self, fake_gateway):
stage_prod = G(Stage, gateway=fake_gateway, name="prod", status=1)
stage_test = G(Stage, gateway=fake_gateway, name="test", status=1)
Expand Down
Loading

0 comments on commit dddd240

Please sign in to comment.