检测pod是否已经ready
(kubernetes k8s.KubernetesUtil, smartideK8sConfig config.SmartIdeK8SConfig)
| 761 | |
| 762 | // 检测pod是否已经ready |
| 763 | func getDevContainerPodReady(kubernetes k8s.KubernetesUtil, smartideK8sConfig config.SmartIdeK8SConfig) (bool, error) { |
| 764 | devContainerName := smartideK8sConfig.Workspace.DevContainer.ServiceName |
| 765 | |
| 766 | if len(smartideK8sConfig.Workspace.Deployments) == 0 { |
| 767 | pod, _, err := getDevContainerPod_PodDefinition(kubernetes, smartideK8sConfig) |
| 768 | |
| 769 | if err != nil { |
| 770 | return false, err |
| 771 | } |
| 772 | |
| 773 | if pod == nil { |
| 774 | return false, nil |
| 775 | } |
| 776 | |
| 777 | isReady := pod.Status.Phase == coreV1.PodRunning |
| 778 | return isReady, nil |
| 779 | } |
| 780 | |
| 781 | for _, deployment := range smartideK8sConfig.Workspace.Deployments { |
| 782 | for _, container := range deployment.Spec.Template.Spec.Containers { |
| 783 | if container.Name == devContainerName { |
| 784 | // deployment ready |
| 785 | command := fmt.Sprintf("get deployment %v -o=yaml ", deployment.Name) |
| 786 | yaml, err := kubernetes.ExecKubectlCommandCombined(command, "") |
| 787 | if err != nil { |
| 788 | return false, err |
| 789 | } |
| 790 | decode := k8sScheme.Codecs.UniversalDeserializer().Decode |
| 791 | obj, _, _ := decode([]byte(yaml), nil, nil) |
| 792 | if obj == nil { |
| 793 | return false, nil |
| 794 | } |
| 795 | deployment := obj.(*appV1.Deployment) |
| 796 | deploymentReady := deployment.Status.Replicas > 0 && deployment.Status.Replicas == deployment.Status.ReadyReplicas |
| 797 | |
| 798 | // pod ready |
| 799 | if deploymentReady { |
| 800 | common.SmartIDELog.Info(fmt.Sprintf("deployment %v started, check pod status!", deployment.Name)) |
| 801 | pod, _, err := GetDevContainerPod(kubernetes, smartideK8sConfig) |
| 802 | if err != nil { |
| 803 | return false, err |
| 804 | } |
| 805 | if pod.Status.Phase == coreV1.PodRunning { |
| 806 | return true, nil |
| 807 | } |
| 808 | } |
| 809 | |
| 810 | // default |
| 811 | return false, nil |
| 812 | } |
| 813 | } |
| 814 | } |
| 815 | |
| 816 | return false, nil |
| 817 | } |
| 818 | |
| 819 | func getDevContainerPod_PodDefinition(kubernetes k8s.KubernetesUtil, smartideK8sConfig config.SmartIdeK8SConfig) ( |
| 820 | podInstance *coreV1.Pod, serviceName string, err error) { |
no test coverage detected