From d38df2138f3cb5c34c2444cc6f9b44380deb7f3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=85=A8?= Date: Fri, 21 Jun 2019 17:26:19 +0800 Subject: [PATCH] =?UTF-8?q?v0.4.3=20=20=E9=85=8D=E5=90=88=20vue=E5=89=8D?= =?UTF-8?q?=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/consumers.py | 14 ++++++++++++-- k8s/k8sApi/core.py | 1 + seal/settings.py | 2 +- system/views.py | 44 +++++++++++++++++++++++++++++++++++++------- 4 files changed, 51 insertions(+), 10 deletions(-) diff --git a/k8s/consumers.py b/k8s/consumers.py index f2c94d1..b3b942e 100644 --- a/k8s/consumers.py +++ b/k8s/consumers.py @@ -37,7 +37,13 @@ class EchoConsumer(WebsocketConsumer): def connect(self): # 创建channels group, 命名为:用户名 (最好不要中文名字,这里会用名字 建立一个通道,通过这个通道进行通信),并使用channel_layer写入到redis - async_to_sync(self.channel_layer.group_add)(self.scope['user'].username, self.channel_name) + try: + async_to_sync(self.channel_layer.group_add)(self.scope['user'].username, self.channel_name) + except Exception as e: + # 这里是为了配合 seal-vue 使用,实际项目,请删除下面这一行 + async_to_sync(self.channel_layer.group_add)("admin", self.channel_name) + + # 可以在这里根据 用户 要访问的pod 进行 权限控制 path = self.scope['path'].split('/') try: @@ -59,4 +65,8 @@ class EchoConsumer(WebsocketConsumer): self.send(text_data=event["text"]) def disconnect(self, close_code): - async_to_sync(self.channel_layer.group_discard)(self.scope['user'].username, self.channel_name) + try: + async_to_sync(self.channel_layer.group_discard)(self.scope['user'].username, self.channel_name) + except Exception as e: + # 这里是为了配合 seal-vue 使用,实际项目,请删除下面这一行 + async_to_sync(self.channel_layer.group_discard)("admin", self.channel_name) diff --git a/k8s/k8sApi/core.py b/k8s/k8sApi/core.py index d0c0fbb..d48cd00 100644 --- a/k8s/k8sApi/core.py +++ b/k8s/k8sApi/core.py @@ -18,6 +18,7 @@ class K8sApi(object): aConfiguration.api_key = {"authorization": "Bearer " + token} aApiClient = client.ApiClient(aConfiguration) v1 = client.CoreV1Api(aApiClient) + return v1 def get_node_list(self): diff --git a/seal/settings.py b/seal/settings.py index 215234b..2b57688 100644 --- a/seal/settings.py +++ b/seal/settings.py @@ -252,7 +252,7 @@ CORS_ORIGIN_WHITELIST = ( MIDDLEWARE_CLASSES = ('system.views.DisableCSRFCheck',) ## K8S -Token = "eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tZGhobWMiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiOThkMDcwZWItODc1Yy0xMWU5LWE1MzgtMDAwYzI5N2I0ZmU3Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.XDFpez2E84R_zlopt_uEHPvVGUtSavypyix6UcYJO3J4imHdJy7MEkfV-wltBA1H8x0TT2AW64rLlXaRJ8OkFWJ0myedfKdjnf7i0oLQ8j-7lw6rT3A0e2pKmpnOaBQfgzRm83-t2I5MMp3Iu9VNUiAbqQpjql4AKwRuJEEGCs99tKStUxzIsJKusmUHh9KAK4BAxySn9h16T2URZ7czLP4mty2crYWNV4KwSwFPthGhFPsl8mnet_hiV5k4me5a8frmXytOy64MmGW8w3TBgiM-7hBYSxt84QGGnyi84LU0EFgtLwBWEOTZeUKKQ6IkoAprMmNcSxX8WUJFlx_uJg" +Token = "eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tdDg4amwiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiMmU1NWQ0MWEtOTI0My0xMWU5LTgzNzAtMDAwYzI5N2I0ZmU3Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.ClrHiRBo9TD9qQGT5xeU-0-Cpqp0ZSQJd9-t3hD6B-YGiY-Al8zrgx8B05Ta9oUHS6cEOz_vYrqXDKm3XDFb6yTzOs5XTUTxvGUKIkZzgYI8aZxkCSYLZa-G-MtsnvbHaZj6XryPCAZhat70XFc0RVmHWC_LnGGzuAdpY2BgdaRHGERTTAYMkK8Ac8vV1s-E-lpsnU3jNgMRANp6v7C50ejjAYVTHnsCquJbIRM0uC7b5RhXbzRaOxNK33bDByDczYwgDIw1DKBaeXf3ABaJdcsQK138YxhrVUvDYy4o6j5obmGotGPrIv9XBhS7kgin289gTq5A6KT7aGmZjZPsYw" APISERVER = 'https://192.168.100.111:6443' # django-channels配置 diff --git a/system/views.py b/system/views.py index 78b1715..e7af733 100644 --- a/system/views.py +++ b/system/views.py @@ -81,9 +81,30 @@ class Menu(APIView): } ] }, + # { + # "path": '/multilevel', + # "name": 'multilevel', + # "meta": { + # "icon": 'md-menu', + # "title": '多级菜单' + # }, + # "component": 'Main', + # "children": [ + # { + # "path": '/level_2_1', + # "name": 'level_2_1', + # "meta": { + # "icon": 'md-funnel', + # "title": '二级-1' + # }, + # "component": 'multilevel/level-2-1' + # }, + # + # ] + # }, { - "path": '/multilevel', - "name": 'multilevel', + "path": '/k8s', + "name": 'k8s', "meta": { "icon": 'md-menu', "title": '多级菜单' @@ -91,19 +112,28 @@ class Menu(APIView): "component": 'Main', "children": [ { - "path": '/level_2_1', - "name": 'level_2_1', + "path": '/pods', + "name": 'pods', "meta": { "icon": 'md-funnel', - "title": '二级-1' + "title": 'pods', }, - "component": 'multilevel/level-2-1' + "component": 'k8s/k8s-pods' }, + { + "path": '/webssh/:name/:namespace', + "name": 'webssh', + "meta": { + "icon": 'md-funnel', + "title": 'webssh', + "hideInMenu": "true", + }, + "component": 'k8s/k8s-webssh' + } ] } ] - print(result) return HttpResponse(json.dumps(result))