代码拉取完成,页面将自动刷新
同步操作将从 Hubery1003/cloudbases.io.kiali 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package models
import (
v1 "k8s.io/api/core/v1"
"github.com/kiali/kiali/kubernetes"
"github.com/kiali/kiali/prometheus"
)
type ServiceOverview struct {
// Name of the Service
// required: true
// example: reviews-v1
Name string `json:"name"`
// Define if Pods related to this Service has an IstioSidecar deployed
// required: true
// example: true
IstioSidecar bool `json:"istioSidecar"`
// Has label app
// required: true
// example: true
AppLabel bool `json:"appLabel"`
}
type ServiceList struct {
Namespace Namespace `json:"namespace"`
Services []ServiceOverview `json:"services"`
}
type ServiceDetails struct {
Service Service `json:"service"`
IstioSidecar bool `json:"istioSidecar"`
Endpoints Endpoints `json:"endpoints"`
VirtualServices VirtualServices `json:"virtualServices"`
DestinationRules DestinationRules `json:"destinationRules"`
Dependencies map[string][]SourceWorkload `json:"dependencies"`
Workloads WorkloadOverviews `json:"workloads"`
Health ServiceHealth `json:"health"`
Validations IstioValidations `json:"validations"`
ErrorTraces int `json:"errorTraces"`
}
type Services []*Service
type Service struct {
Name string `json:"name"`
CreatedAt string `json:"createdAt"`
ResourceVersion string `json:"resourceVersion"`
Namespace Namespace `json:"namespace"`
Labels map[string]string `json:"labels"`
Type string `json:"type"`
Ip string `json:"ip"`
Ports Ports `json:"ports"`
}
// SourceWorkload holds workload identifiers used for service dependencies
type SourceWorkload struct {
Name string `json:"name"`
Namespace string `json:"namespace"`
}
func (ss *Services) Parse(services []v1.Service) {
if ss == nil {
return
}
for _, item := range services {
service := &Service{}
service.Parse(&item)
*ss = append(*ss, service)
}
}
func (s *Service) Parse(service *v1.Service) {
if service != nil {
s.Name = service.Name
s.Namespace = Namespace{Name: service.Namespace}
s.Labels = service.Labels
s.Type = string(service.Spec.Type)
s.Ip = service.Spec.ClusterIP
s.CreatedAt = formatTime(service.CreationTimestamp.Time)
s.ResourceVersion = service.ResourceVersion
(&s.Ports).Parse(service.Spec.Ports)
}
}
func (s *ServiceDetails) SetService(svc *v1.Service) {
s.Service.Parse(svc)
}
func (s *ServiceDetails) SetEndpoints(eps *v1.Endpoints) {
(&s.Endpoints).Parse(eps)
}
func (s *ServiceDetails) SetPods(pods []v1.Pod) {
mPods := Pods{}
mPods.Parse(pods)
s.IstioSidecar = mPods.HasIstioSideCar()
}
func (s *ServiceDetails) SetVirtualServices(vs []kubernetes.IstioObject, canCreate, canUpdate, canDelete bool) {
s.VirtualServices.Permissions = ResourcePermissions{Create: canCreate, Update: canUpdate, Delete: canDelete}
(&s.VirtualServices).Parse(vs)
}
func (s *ServiceDetails) SetDestinationRules(dr []kubernetes.IstioObject, canCreate, canUpdate, canDelete bool) {
s.DestinationRules.Permissions = ResourcePermissions{Create: canCreate, Update: canUpdate, Delete: canDelete}
(&s.DestinationRules).Parse(dr)
}
func (s *ServiceDetails) SetErrorTraces(errorTraces int) {
s.ErrorTraces = errorTraces
}
func (s *ServiceDetails) SetSourceWorkloads(sw map[string][]prometheus.Workload) {
// Transform dependencies for UI
s.Dependencies = make(map[string][]SourceWorkload)
for version, workloads := range sw {
for _, workload := range workloads {
s.Dependencies[version] = append(s.Dependencies[version], SourceWorkload{
Name: workload.Workload,
Namespace: workload.Namespace,
})
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。