From 7f38985da3e8611e8c076a5f2b3aaf707436cd72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=80=86=E6=B5=81=E8=80=8C=E4=B8=8A?= <62740231+DokiDoki1103@users.noreply.github.com> Date: Thu, 13 Jun 2024 16:36:50 +0800 Subject: [PATCH] feat: auto update region (#1471) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 逆流而上 <1666888816@qq.com> --- console/services/app_config/port_service.py | 3 ++- console/services/group_service.py | 2 +- console/services/k8s_attribute.py | 6 ++++-- console/services/market_app/app_restore.py | 2 +- console/services/market_app/app_upgrade.py | 2 +- console/services/market_app/market_app.py | 2 +- console/urls.py | 3 +++ console/views/k8s_attribute.py | 2 +- console/views/upgrade.py | 21 +++++++++++++++++++++ www/apiclient/regionapi.py | 7 +++++++ 10 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 console/views/upgrade.py diff --git a/console/services/app_config/port_service.py b/console/services/app_config/port_service.py index 473175b6aa..5f49da5d69 100644 --- a/console/services/app_config/port_service.py +++ b/console/services/app_config/port_service.py @@ -465,7 +465,8 @@ def __open_outer(self, tenant, service, region, deal_port, user_name='', app=Non if deal_port.protocol == "http": service_name = service.service_alias container_port = deal_port.container_port - domain_name = str(service_name) + "-" + str(container_port) + "-" + str(tenant.tenant_name) + "-" + str(region.httpdomain) + domain_name = str(service_name) + "-" + str(container_port) + "-" + str(tenant.tenant_name) + "-" + str( + region.httpdomain) protocol = "http" service_id = service.service_id http_rule_id = make_uuid(domain_name) diff --git a/console/services/group_service.py b/console/services/group_service.py index 737dadc86b..9b5f99ddb0 100644 --- a/console/services/group_service.py +++ b/console/services/group_service.py @@ -415,7 +415,7 @@ def batch_delete_app_services(self, user, tenant_id, region_name, app_id): if service.create_status == "complete": service_dict["service_id"] = service.service_id stop_infos_list.append(service_dict) - body = {"operation": "stop", "stop_infos": stop_infos_list,"operator":user.nick_name} + body = {"operation": "stop", "stop_infos": stop_infos_list, "operator": user.nick_name} try: region_api.batch_operation_service(region_name, tenant.tenant_name, body) except region_api.CallApiError as e: diff --git a/console/services/k8s_attribute.py b/console/services/k8s_attribute.py index 4db3c13fc5..e284c47b6a 100644 --- a/console/services/k8s_attribute.py +++ b/console/services/k8s_attribute.py @@ -51,8 +51,10 @@ def update_k8s_attribute(self, tenant, component, region_name, attribute): @transaction.atomic def delete_k8s_attribute(self, tenant, component, region_name, name, operator): k8s_attribute_repo.delete(component.service_id, name) - region_api.delete_component_k8s_attribute(tenant.tenant_name, region_name, component.service_alias, - {"name": name, "operator": operator}) + region_api.delete_component_k8s_attribute(tenant.tenant_name, region_name, component.service_alias, { + "name": name, + "operator": operator + }) k8s_attribute_service = ComponentK8sAttributeService() diff --git a/console/services/market_app/app_restore.py b/console/services/market_app/app_restore.py index b87bfdcf69..4ebb6edc50 100644 --- a/console/services/market_app/app_restore.py +++ b/console/services/market_app/app_restore.py @@ -72,7 +72,7 @@ def __init__(self, tenant, region: RegionConfig, user, app: ServiceGroup, compon self.original_app = OriginalApp(tenant, region, app, component_group.ID, self.support_labels) self.snapshot = self._get_snapshot() self.new_app = self._create_new_app() - super(AppRestore, self).__init__(self.original_app, self.new_app,self.user) + super(AppRestore, self).__init__(self.original_app, self.new_app, self.user) def restore(self): # Sync the new application to the data center first diff --git a/console/services/market_app/app_upgrade.py b/console/services/market_app/app_upgrade.py index 98077fb5ac..0ae60186eb 100644 --- a/console/services/market_app/app_upgrade.py +++ b/console/services/market_app/app_upgrade.py @@ -115,7 +115,7 @@ def __init__(self, self.property_changes.ensure_dep_changes(self.new_app, self.original_app) self.app_property_changes = self._get_app_property_changes() - super(AppUpgrade, self).__init__(self.original_app, self.new_app,self.user) + super(AppUpgrade, self).__init__(self.original_app, self.new_app, self.user) def preinstall(self): self.pre_install_plugins() diff --git a/console/services/market_app/market_app.py b/console/services/market_app/market_app.py index cc97db9972..0116946315 100644 --- a/console/services/market_app/market_app.py +++ b/console/services/market_app/market_app.py @@ -33,7 +33,7 @@ class MarketApp(object): - def __init__(self, original_app: OriginalApp, new_app: NewApp,user): + def __init__(self, original_app: OriginalApp, new_app: NewApp, user): self.original_app = original_app self.new_app = new_app diff --git a/console/urls.py b/console/urls.py index 87c2fd369c..d0d9ebb434 100644 --- a/console/urls.py +++ b/console/urls.py @@ -139,6 +139,7 @@ TeamRegionInitView, ApplicantsView, RegisterStatusView, MonitorAlarmStatusView, EnterpriseInfoView, \ InitDefaultInfoView, AdminAddUserView, CertificateView, TeamUserCanJoin, TeamsPermissionCreateApp, JoinTeamView, \ UserApplyStatusView +from console.views.upgrade import UpgradeView from console.views.user import CheckSourceView, UserLogoutView, UserPemTraView, AdministratorJoinTeamView, \ EnterPriseUsersCLView, EnterPriseUsersUDView, AdminUserView, AdminUserLCView, \ AdminRolesView @@ -150,6 +151,8 @@ from console.views.yaml_resource import YamlResourceName, YamlResourceDetailed urlpatterns = [ + # 升级 + url(r'^update', UpgradeView.as_view()), # 直接代理到 普罗米修斯 url(r'^open/monitor/query$', MonitorQueryOverConsoleView.as_view()), url(r'^api-gateway/v1/(?P[\w\-]+)/(.*?)', AppApiGatewayView.as_view()), diff --git a/console/views/k8s_attribute.py b/console/views/k8s_attribute.py index ded4edf8a7..a6a78a8856 100644 --- a/console/views/k8s_attribute.py +++ b/console/views/k8s_attribute.py @@ -22,7 +22,7 @@ def put(self, request, name, *args, **kwargs): return Response(general_message(200, "success", "修改成功")) def delete(self, request, name, *args, **kwargs): - k8s_attribute_service.delete_k8s_attribute(self.tenant, self.service, self.region_name, name,self.user.nick_name) + k8s_attribute_service.delete_k8s_attribute(self.tenant, self.service, self.region_name, name, self.user.nick_name) return Response(general_message(200, "success", "删除成功")) diff --git a/console/views/upgrade.py b/console/views/upgrade.py new file mode 100644 index 0000000000..3f467a4324 --- /dev/null +++ b/console/views/upgrade.py @@ -0,0 +1,21 @@ +from django.views.decorators.cache import never_cache + +from console.views.base import JWTAuthApiView +from www.apiclient.regionapi import RegionInvokeApi +from console.repositories.region_repo import region_repo +from www.utils.return_message import general_message +from rest_framework.response import Response + +region_api = RegionInvokeApi() + + +class UpgradeView(JWTAuthApiView): + @never_cache + def post(self, request, *args, **kwargs): + regions = region_repo.get_all_regions() + body = {} + for region in regions: + resp = region_api.upgrade_region(region.region_name, request.data) + body[region.region_name] = resp + result = general_message(200, "success", "请求成功", bean=body) + return Response(result, status=200) diff --git a/www/apiclient/regionapi.py b/www/apiclient/regionapi.py index 8b17b30d90..f7a75fd8bf 100644 --- a/www/apiclient/regionapi.py +++ b/www/apiclient/regionapi.py @@ -2947,3 +2947,10 @@ def event_stream(): response = StreamingHttpResponse(event_stream(), content_type='text/event-stream') response['Content-Encoding'] = 'identity' return response + + def upgrade_region(self, region_name, data): + url, token = self.__get_region_access_info(None, region_name) + url = url + "/v2/cluster/rbd-upgrade" + self._set_headers(token) + res, body = self._post(url, self.default_headers, region=region_name, body=json.dumps(data)) + return body