Skip to content

Commit

Permalink
fix(backend): 资源池协议改造体验问题修复 #7747
Browse files Browse the repository at this point in the history
  • Loading branch information
iSecloud committed Feb 10, 2025
1 parent 2ed9cdc commit 0f4df2f
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 25 deletions.
14 changes: 12 additions & 2 deletions dbm-ui/backend/db_dirty/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,12 @@ def transfer_hosts_to_pool(self, request):
responses={status.HTTP_200_OK: ListMachineEventResponseSerializer()},
tags=[SWAGGER_TAG],
)
@action(detail=False, methods=["GET"], filter_class=MachineEventFilter, queryset=MachineEvent.objects.all())
@action(
detail=False,
methods=["GET"],
filter_class=MachineEventFilter,
queryset=MachineEvent.objects.all().order_by("-update_at"),
)
def list_machine_events(self, request):
events_qs = self.paginate_queryset(self.filter_queryset(self.get_queryset()))
events_data = ListMachineEventSerializer(events_qs, many=True).data
Expand All @@ -67,7 +72,12 @@ def list_machine_events(self, request):
responses={status.HTTP_200_OK: ListMachinePoolResponseSerializer()},
tags=[SWAGGER_TAG],
)
@action(detail=False, methods=["GET"], filter_class=DirtyMachinePoolFilter, queryset=DirtyMachine.objects.all())
@action(
detail=False,
methods=["GET"],
filter_class=DirtyMachinePoolFilter,
queryset=DirtyMachine.objects.all().order_by("-update_at"),
)
def query_machine_pool(self, request):
machine_qs = self.paginate_queryset(self.filter_queryset(self.get_queryset()))
# 查询主机池主机信息
Expand Down
9 changes: 2 additions & 7 deletions dbm-ui/backend/db_services/dbresource/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,17 +81,16 @@ class Meta:

class ResourceListSerializer(serializers.Serializer):
for_biz = serializers.IntegerField(help_text=_("专属业务"), required=False)
for_bizs = serializers.ListField(help_text=_("专属业务列表"), child=serializers.IntegerField(), required=False)
resource_type = serializers.CharField(help_text=_("专属DB"), required=False, allow_null=True, allow_blank=True)
resource_types = serializers.ListField(help_text=_("专属DB列表"), child=serializers.CharField(), required=False)
device_class = serializers.CharField(help_text=_("机型"), required=False)
hosts = serializers.CharField(help_text=_("主机IP列表"), required=False)
bk_cloud_ids = serializers.CharField(help_text=_("云区域ID列表"), required=False)
city = serializers.CharField(help_text=_("城市"), required=False)
subzones = serializers.CharField(help_text=_("园区"), required=False)
subzone_ids = serializers.CharField(help_text=_("园区ID"), required=False)

set_empty_biz = serializers.BooleanField(help_text=_("是否无专用业务"), required=False, default=False)
set_empty_resource_type = serializers.BooleanField(help_text=_("是否无专用资源类型"), required=False, default=False)

os_type = serializers.CharField(help_text=_("操作系统类型"), required=False)
cpu = serializers.CharField(help_text=_("cpu资源限制"), required=False)
mem = serializers.CharField(help_text=_("内存资源限制"), required=False)
Expand All @@ -108,10 +107,6 @@ class ResourceListSerializer(serializers.Serializer):

@staticmethod
def format_fields(attrs, fields):
# 如果没有专用业务和专用DB,则无限制查询
attrs["set_empty_biz"] = "for_biz" not in attrs
attrs["set_empty_resource_type"] = "resource_type" not in attrs

# 用逗号方便前端URL渲染,这里统一转换为数组 or obj
for field in fields:
divider = "-" if field in ["cpu", "mem", "disk"] else ","
Expand Down
2 changes: 1 addition & 1 deletion dbm-ui/backend/db_services/mysql/cluster/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class ClusterViewSet(BaseClusterViewSet):
default_permission_class = [DBManagePermission()]

@common_swagger_auto_schema(
operation_summary=_("通过过滤条件批量查询集群"),
operation_summary=_("通过过滤条件批量查询集群[Deprecated!! 这个方法将被移除,请不要调用]"),
request_body=QueryClustersRequestSerializer(),
tags=[SWAGGER_TAG],
responses={status.HTTP_200_OK: QueryClustersResponseSerializer()},
Expand Down
2 changes: 1 addition & 1 deletion dbm-ui/backend/ticket/builders/common/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ def validated_cluster_type(cls, cluster_ids: List[int], cluster_type: ClusterTyp
def validate_instance_role(cls, inst_list: List[Dict], role: Union[AccessLayer, InstanceInnerRole]):
"""校验实例角色类型"""

inst_filters = reduce(operator.or_, [Q(machine__ip=inst["ip"], port=inst["port"]) for inst in inst_list])
inst_filters = reduce(operator.or_, [Q(machine__ip=inst["ip"]) for inst in inst_list])
check_role_info = list(
StorageInstance.objects.annotate(role=F("instance_inner_role"))
.filter(inst_filters)
Expand Down
2 changes: 2 additions & 0 deletions dbm-ui/backend/ticket/builders/common/bigdata.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ class BigDataSingleClusterOpsDetailsSerializer(BigDataDetailsSerializer):


class BigDataTakeDownDetailSerializer(BigDataSingleClusterOpsDetailsSerializer):
ip_recycle = HostRecycleSerializer(help_text=_("主机回收信息"), default=HostRecycleSerializer.DEFAULT)

def validate_cluster_id(self, value):
"""校验集群的phase转移是否符合预期"""

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@
from rest_framework import serializers

from backend.configuration.constants import AffinityEnum
from backend.db_meta.models import Cluster
from backend.db_services.dbbase.constants import IpSource
from backend.db_services.dbresource.handlers import ResourceHandler
from backend.flow.consts import RedisCapacityUpdateType
from backend.flow.engine.controller.redis import RedisController
from backend.ticket import builders
Expand Down Expand Up @@ -92,18 +90,7 @@ class RedisScaleUpDownFlowBuilder(BaseRedisTicketFlowBuilder):
inner_flow_builder = RedisScaleUpDownParamBuilder
inner_flow_name = _("Redis 集群容量变更")
resource_batch_apply_builder = RedisScaleUpDownResourceParamBuilder

def patch_down_cluster_hosts(self):
"""针对全部全部机器替换,获取所有的下架机器"""
cluster_ids = [
info["cluster_id"]
for info in self.ticket.details["infos"]
if info["update_mode"] == RedisCapacityUpdateType.ALL_MACHINES_REPLACE
]
recycle_hosts = Cluster.get_cluster_related_machines(cluster_ids)
recycle_hosts = [{"bk_host_id": host_id} for host_id in recycle_hosts]
self.ticket.details["recycle_hosts"] = ResourceHandler.standardized_resource_host(recycle_hosts)
need_patch_recycle_host_details = True

def patch_ticket_detail(self):
self.patch_down_cluster_hosts()
super().patch_ticket_detail()

0 comments on commit 0f4df2f

Please sign in to comment.