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

Function execPod

cli/cmd/start/k8s.go:361–545  ·  view source on GitHub ↗
(cmd *cobra.Command, workspaceInfo workspace.WorkspaceInfo,
	kubernetes *k8s.KubernetesUtil,
	originK8sConfig *config.SmartIdeK8SConfig, tempK8sConfig config.SmartIdeK8SConfig,
	runAsUserName string)

Source from the content-addressed store, hash-verified

359}
360
361func execPod(cmd *cobra.Command, workspaceInfo workspace.WorkspaceInfo,
362 kubernetes *k8s.KubernetesUtil,
363 originK8sConfig *config.SmartIdeK8SConfig, tempK8sConfig config.SmartIdeK8SConfig,
364 runAsUserName string) error {
365 // 等待启动
366 common.SmartIDELog.Info("等待 deployment 启动...")
367 for {
368 ready, err := getDevContainerPodReady(*kubernetes, *originK8sConfig)
369 if err != nil {
370 common.SmartIDELog.ImportanceWithError(err)
371 }
372 if ready {
373 common.SmartIDELog.Debug("deployment pending")
374 break
375 } else {
376 time.Sleep(time.Second * 2)
377 }
378 }
379 devContainerPod, _, err := GetDevContainerPod(*kubernetes, tempK8sConfig)
380 if err != nil {
381 return err
382 }
383
384 //5.5. agent
385 common.SmartIDELog.Info("install agent")
386 if workspaceInfo.CacheEnv == workspace.CacheEnvEnum_Server { // 只有是server的模式下才会去安装 agent, 因为镜像中会有
387 err := kubernetes.CopyToPod(*devContainerPod, tempK8sConfig.Workspace.DevContainer.ServiceName, common.PathJoin("/usr/local/bin", "smartide-agent"), common.PathJoin("/", "smartide-agent"), runAsUserName)
388 if err != nil {
389 return err
390 }
391 // 通过对 actual repo url的判断,如果不上http打头,都是ssh模式clone
392 if workspaceInfo.GitCloneRepoUrl != "" &&
393 strings.Index(workspaceInfo.GitCloneRepoUrl, "http") != 0 {
394 err = kubernetes.CopyLocalSSHConfigToPod(*devContainerPod, tempK8sConfig.Workspace.DevContainer.ServiceName, runAsUserName)
395 }
396 if err != nil {
397 return err
398 }
399 err = FeeadbackContainerId(cmd, workspaceInfo, devContainerPod.Name)
400 if err != nil {
401 return err
402 }
403 kubernetes.StartAgent(cmd, *devContainerPod, tempK8sConfig.Workspace.DevContainer.ServiceName, runAsUserName, workspaceInfo.ServerWorkSpace.ID)
404
405 }
406 time.Sleep(time.Second * 10) // ?
407
408 //5.1. git config
409 // 会通过agent生成
410 if workspaceInfo.CliRunningEnv == workspace.CliRunningEnvEnum_Client {
411 if originK8sConfig.Workspace.DevContainer.Volumes.HasGitConfig.Value() {
412 common.SmartIDELog.Info("git config")
413 err = kubernetes.CopyLocalGitConfigToPod(*devContainerPod, tempK8sConfig.Workspace.DevContainer.ServiceName, runAsUserName)
414 if err != nil {
415 return err
416 }
417 }
418 }

Callers 1

ExecuteK8sStartCmdFunction · 0.85

Calls 15

getDevContainerPodReadyFunction · 0.85
GetDevContainerPodFunction · 0.85
FeeadbackContainerIdFunction · 0.85
copyConfigToPodFunction · 0.85
InfoMethod · 0.80
ImportanceWithErrorMethod · 0.80
DebugMethod · 0.80
CopyToPodMethod · 0.80
StartAgentMethod · 0.80
ValueMethod · 0.80

Tested by

no test coverage detected