77 lines
2.1 KiB
Go
77 lines
2.1 KiB
Go
package k8s_exec
|
|
|
|
import (
|
|
v1 "k8s.io/api/apps/v1"
|
|
corev1 "k8s.io/api/core/v1"
|
|
)
|
|
|
|
type CmiiInterfaceConvert interface {
|
|
}
|
|
|
|
type CmiiPodInterface struct {
|
|
Name string
|
|
Namespace string
|
|
//ReplicaSetName string
|
|
ContainerImageMap map[string]string
|
|
PodIP string
|
|
HostIP string
|
|
NodeName string
|
|
RestartCountMap map[string]int32
|
|
}
|
|
|
|
type CmiiDeploymentInterface struct {
|
|
Name string
|
|
Namespace string
|
|
AvailableReplicas int32
|
|
Replicas int32
|
|
ContainerImageMap map[string]string
|
|
StatusOk bool
|
|
}
|
|
|
|
func (deploy CmiiDeploymentInterface) Convert(deployment v1.Deployment) CmiiDeploymentInterface {
|
|
|
|
containers := deployment.Spec.Template.Spec.Containers
|
|
|
|
containerImageMap := make(map[string]string, len(containers))
|
|
for _, container := range containers {
|
|
containerImageMap[container.Name] = container.Image
|
|
}
|
|
|
|
deploy.Name = deployment.Name
|
|
deploy.Namespace = deployment.Namespace
|
|
deploy.AvailableReplicas = deployment.Status.AvailableReplicas
|
|
deploy.Replicas = *deployment.Spec.Replicas
|
|
deploy.ContainerImageMap = containerImageMap
|
|
deploy.StatusOk = deployment.Status.AvailableReplicas == *deployment.Spec.Replicas
|
|
|
|
return deploy
|
|
}
|
|
|
|
func (pod CmiiPodInterface) Convert(podDetail corev1.Pod) CmiiPodInterface {
|
|
|
|
containers := podDetail.Spec.Containers
|
|
containerImageMap := make(map[string]string, len(containers))
|
|
for _, container := range containers {
|
|
containerImageMap[container.Name] = container.Image
|
|
}
|
|
|
|
containerStatuses := podDetail.Status.ContainerStatuses
|
|
containerStatusMap := make(map[string]int32, len(containerStatuses))
|
|
for _, containerStatus := range containerStatuses {
|
|
containerStatusMap[containerStatus.Name] = containerStatus.RestartCount
|
|
}
|
|
|
|
pod.Name = podDetail.Name
|
|
pod.Namespace = podDetail.Namespace
|
|
pod.ContainerImageMap = containerImageMap
|
|
pod.RestartCountMap = containerStatusMap
|
|
pod.PodIP = podDetail.Status.PodIP
|
|
pod.HostIP = podDetail.Status.HostIP
|
|
pod.NodeName = podDetail.Spec.NodeName
|
|
//if len(podDetail.ObjectMeta.OwnerReferences) > 0 {
|
|
// pod.ReplicaSetName = podDetail.ObjectMeta.OwnerReferences[0].Name
|
|
//}
|
|
|
|
return pod
|
|
}
|