MCPcopy Create free account
hub / github.com/OpenAtomFoundation/SmartIDE / getDevContainerPodReady

Function getDevContainerPodReady

cli/cmd/start/k8s.go:763–817  ·  view source on GitHub ↗

检测pod是否已经ready

(kubernetes k8s.KubernetesUtil, smartideK8sConfig config.SmartIdeK8SConfig)

Source from the content-addressed store, hash-verified

761
762// 检测pod是否已经ready
763func 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
819func getDevContainerPod_PodDefinition(kubernetes k8s.KubernetesUtil, smartideK8sConfig config.SmartIdeK8SConfig) (
820 podInstance *coreV1.Pod, serviceName string, err error) {

Callers 2

ExecuteK8sStartCmdFunction · 0.85
execPodFunction · 0.85

Calls 4

GetDevContainerPodFunction · 0.85
InfoMethod · 0.80

Tested by

no test coverage detected