Example #1
0
// kubenetes pod to protobuf struct
func PodToPbStruct(pod *api.Pod) *types.Pod {
	todata := &types.Pod{
		Id:   string(pod.GetUID()),
		Name: pod.GetName(),
	}
	pod_container := pod.Spec.Containers
	// 解析容器信息
	container := make([]*types.Container, len(pod_container))
	for k, v := range pod_container {
		container[k] = &types.Container{
			Name:  v.Name,
			Image: v.Image,
		}
		// 解析空间挂载信息
		VolumeMounts := make([]*types.VolumeMount, len(v.VolumeMounts))
		for k2, v2 := range v.VolumeMounts {
			VolumeMounts[k2] = &types.VolumeMount{
				Name:      v2.Name,
				ReadOnly:  v2.ReadOnly,
				MountPath: v2.MountPath,
			}
		}
		// 解析端口映射信息
		containerPort := make([]*types.ContainerPort, len(v.Ports))
		for k2, port := range v.Ports {
			containerPort[k2] = &types.ContainerPort{
				Name:          port.Name,
				Protocol:      string(port.Protocol),
				ContainerPort: int64(port.ContainerPort),
			}
		}
		container[k].Port = containerPort
	}
	todata.Containers = container
	return todata
}