mirror of
https://github.com/hequan2017/seal.git
synced 2026-02-03 10:13:27 +08:00
84 lines
3.2 KiB
Python
84 lines
3.2 KiB
Python
import logging
|
|
import json
|
|
from django.urls import reverse_lazy
|
|
from django.db.models import Q
|
|
from django.conf import settings
|
|
from pure_pagination import PageNotAnInteger
|
|
from pure_pagination import Paginator
|
|
from django.shortcuts import render, HttpResponse
|
|
from system.decorator.get_list import get_list
|
|
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
|
|
from django.views.generic import ListView, View, DetailView, CreateView, UpdateView
|
|
from assets.models import Ecs
|
|
from seal import settings
|
|
from k8s.k8sApi.core import K8sApi
|
|
|
|
logger = logging.getLogger('k8s')
|
|
|
|
|
|
class K8sNodeListView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
|
permission_required = ('k8s.view_ecs',)
|
|
|
|
def get(self, request):
|
|
obj = K8sApi()
|
|
ret = obj.get_node_list()
|
|
data = {}
|
|
for i in ret.items:
|
|
data[i.metadata.name] = {"name": i.metadata.name,
|
|
"status": i.status.conditions[-1].type if i.status.conditions[ -1].status == "True" else "NotReady",
|
|
"ip": i.status.addresses[0].address,
|
|
"kubelet_version": i.status.node_info.kubelet_version,
|
|
"os_image": i.status.node_info.os_image,
|
|
}
|
|
return render(request, "k8s/k8s-node-list.html", {"data": data})
|
|
|
|
|
|
class K8sServiceListView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
|
permission_required = ('k8s.view_ecs',)
|
|
|
|
def get(self, request):
|
|
obj = K8sApi()
|
|
ret = obj.get_service_list()
|
|
data = {}
|
|
for i in ret.items:
|
|
print(i)
|
|
ports = []
|
|
for j in i.spec.ports:
|
|
ports.append(f"{j.target_port}/{j.port}/{j.node_port}")
|
|
data[i.metadata.name] = {"name": i.metadata.name, "cluster_ip": i.spec.cluster_ip, "type": i.spec.type,
|
|
"external_i_ps": i.spec.external_i_ps,
|
|
"port": ports}
|
|
return render(request, "k8s/k8s-service-list.html", {"data": data})
|
|
|
|
|
|
class K8sPodListView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
|
permission_required = ('k8s.view_ecs',)
|
|
|
|
def get(self, request):
|
|
obj = K8sApi()
|
|
ret = obj.get_pod_list()
|
|
data = {}
|
|
for i in ret.items:
|
|
data[i.metadata.name] = {"ip": i.status.pod_ip, "namespace": i.metadata.namespace}
|
|
return render(request, "k8s/k8s-pod-list.html", {"data": data})
|
|
|
|
|
|
class K8sPodWebssh(LoginRequiredMixin, PermissionRequiredMixin, View):
|
|
permission_required = ('k8s.view_ecs',)
|
|
|
|
def get(self, request):
|
|
name = self.request.GET.get("name")
|
|
namespace = self.request.GET.get("namespace")
|
|
return render(request, "k8s/k8s-pod-webssh.html", {"name": name, "namespace": namespace})
|
|
|
|
|
|
class K8sPodDetail(LoginRequiredMixin, PermissionRequiredMixin, View):
|
|
permission_required = ('k8s.view_ecs',)
|
|
|
|
def get(self, request):
|
|
name = self.request.GET.get("name")
|
|
namespace = self.request.GET.get("namespace")
|
|
obj = K8sApi()
|
|
data = obj.get_pod_detail(name, namespace)
|
|
return render(request, "k8s/k8s-pod-detail.html", {"name": name, "namespace": namespace, "data": data})
|