Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 6 additions & 9 deletions backend/endpoint/workload.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ import (
)

type WorkloadEndpoint struct {
podUseCase usecase.PodUseCase
deploymentUseCase usecase.DeploymentUseCase
resourceUseCase usecase.ResourceUseCase
podUseCase usecase.PodUseCase
deploymentUseCase usecase.DeploymentUseCase
resourceUseCase usecase.ResourceUseCase
troubleshootUseCase usecase.TroubleshootUseCase
}

func NewWorkloadEndpoint(podUseCase usecase.PodUseCase, deploymentUseCase usecase.DeploymentUseCase) *WorkloadEndpoint {
Expand Down Expand Up @@ -51,12 +52,8 @@ func (we *WorkloadEndpoint) ResourceTuning(namespace string, clusterCtx string)
we.resourceUseCase.Invoke(namespace, clusterCtx)
}

func (we *WorkloadEndpoint) TroubleshootPod(name string, namespace string, clusterCtx string) {
we.podUseCase.TroubleshootPod(name, namespace, clusterCtx)
}

func (we *WorkloadEndpoint) TroubleshootDeployment(name string, namespace string, clusterCtx string) {
we.deploymentUseCase.TroubleshootDeployment(name, namespace, clusterCtx)
func (we *WorkloadEndpoint) AutoTroubleshoot(name string, namespace string, clusterCtx string, resource string) {
we.troubleshootUseCase.Invoke(name, namespace, clusterCtx, resource)
}

func (we *WorkloadEndpoint) ExportManifest(name string, namespace string, clusterCtx string) ([]byte, error) {
Expand Down
12 changes: 12 additions & 0 deletions backend/kubeclient/deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"Kubexplorer/backend/model"
"context"
"fmt"
v1_apps "k8s.io/api/apps/v1"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand Down Expand Up @@ -111,6 +112,17 @@ func (d deploymentClient) GetDeployment(name string, namespace string, clusterCt
}, nil
}

func (d deploymentClient) GetDeploymentV2(name string, namespace string, clusterCtx string) (*v1_apps.Deployment, error) {
client, err := d.manager.ResolveClusterContext(clusterCtx)
if err != nil {
return &v1_apps.Deployment{}, fmt.Errorf("cluster %s is not registered", clusterCtx)
}

deployment, _ := client.AppsV1().Deployments(namespace).Get(context.TODO(), name, metav1.GetOptions{})

return deployment, nil
}

func (d deploymentClient) UpdateDeployment(name string, namespace string, dto model.DeploymentUpdate, clusterCtx string) error {
client, err := d.manager.ResolveClusterContext(clusterCtx)
if err != nil {
Expand Down
10 changes: 10 additions & 0 deletions backend/kubeclient/interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ package kubeclient

import (
"Kubexplorer/backend/model"
v1_apps "k8s.io/api/apps/v1"
v1_batch "k8s.io/api/batch/v1"
v1_core "k8s.io/api/core/v1"
"k8s.io/metrics/pkg/apis/metrics/v1beta1"
)

Expand All @@ -23,13 +26,20 @@ type MetricClient interface {
type PodClient interface {
GetPods(clusterCtx string) ([]model.PodDto, error)
GetPod(name string, namespace string, clusterCtx string) (model.PodDto, error)
GetPodV2(name string, namespace string, clusterCtx string) (*v1_core.Pod, error)

UpdatePod(name string, namespace string, dto model.PodUpdate, clusterCtx string) error
DeletePod(name string, namespace string, clusterCtx string) error
}

type JobClient interface {
GetJob(name string, namespace string, clusterCtx string) (*v1_batch.Job, error)
}

type DeploymentClient interface {
GetDeployments(clusterCtx string) ([]model.DeploymentDto, error)
GetDeployment(name string, namespace string, clusterCtx string) (model.DeploymentDto, error)
GetDeploymentV2(name string, namespace string, clusterCtx string) (*v1_apps.Deployment, error)
UpdateDeployment(name string, namespace string, dto model.DeploymentUpdate, clusterCtx string) error
DeleteDeployment(name string, namespace string, clusterCtx string) error
ExportManifest(name string, namespace string, clusterCtx string) ([]byte, error)
Expand Down
29 changes: 29 additions & 0 deletions backend/kubeclient/job.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package kubeclient

import (
"context"
"fmt"
v1 "k8s.io/api/batch/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

type jobClient struct {
manager ClusterResolver
}

func NewJob(manager ClusterResolver) JobClient {
return &jobClient{
manager: manager,
}
}

func (j *jobClient) GetJob(name string, namespace string, clusterCtx string) (*v1.Job, error) {
client, err := j.manager.ResolveClusterContext(clusterCtx)
if err != nil {
return &v1.Job{}, fmt.Errorf("cluster %s is not registered", clusterCtx)
}

job, _ := client.BatchV1().Jobs(namespace).Get(context.TODO(), name, metav1.GetOptions{})

return job, nil
}
12 changes: 12 additions & 0 deletions backend/kubeclient/pod.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"Kubexplorer/backend/model"
"context"
"fmt"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
Expand Down Expand Up @@ -69,6 +70,17 @@ func (p *podClient) GetPods(clusterCtx string) ([]model.PodDto, error) {
return podArray, nil
}

func (p *podClient) GetPodV2(clusterCtx string, name string, namespace string) (*v1.Pod, error) {
client, err := p.manager.ResolveClusterContext(clusterCtx)
if err != nil {
return &v1.Pod{}, fmt.Errorf("cluster %s is not registered", clusterCtx)
}

pod, _ := client.CoreV1().Pods(namespace).Get(context.TODO(), name, metav1.GetOptions{})

return pod, nil
}

func (p *podClient) GetPod(name string, namespace string, clusterCtx string) (model.PodDto, error) {
client, err := p.manager.ResolveClusterContext(clusterCtx)
if err != nil {
Expand Down
12 changes: 12 additions & 0 deletions backend/model/job.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package model

type JobDto struct {
Name string
Namespace string
Container Container
Node string
Age string
Status string
Editable []string
Labels map[string]string
}
6 changes: 6 additions & 0 deletions backend/model/troubleshoot.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package model

type Troubleshoot struct {
Meaning string
Recommendation string
}
Loading