func runEnter(cmd *cobra.Command, args []string) (exit int) { if len(args) < 1 { cmd.Usage() return 1 } p, err := getPodFromUUIDString(args[0]) if err != nil { stderr.PrintE("problem retrieving pod", err) return 1 } defer p.Close() if !p.isRunning() { stderr.Printf("pod %q isn't currently running", p.uuid) return 1 } podPID, err := p.getContainerPID1() if err != nil { stderr.PrintE(fmt.Sprintf("unable to determine the pid for pod %q", p.uuid), err) return 1 } appName, err := getAppName(p) if err != nil { stderr.PrintE("unable to determine app name", err) return 1 } argv, err := getEnterArgv(p, args) if err != nil { stderr.PrintE("enter failed", err) return 1 } s, err := store.NewStore(getDataDir()) if err != nil { stderr.PrintE("cannot open store", err) return 1 } stage1TreeStoreID, err := p.getStage1TreeStoreID() if err != nil { stderr.PrintE("error getting stage1 treeStoreID", err) return 1 } stage1RootFS := s.GetTreeStoreRootFS(stage1TreeStoreID) if err = stage0.Enter(p.path(), podPID, *appName, stage1RootFS, argv); err != nil { stderr.PrintE("enter failed", err) return 1 } // not reached when stage0.Enter execs /enter return 0 }
func runEnter(cmd *cobra.Command, args []string) (exit int) { if len(args) < 1 { cmd.Usage() return 1 } podUUID, err := resolveUUID(args[0]) if err != nil { stderr("Unable to resolve UUID: %v", err) return 1 } p, err := getPod(podUUID) if err != nil { stderr("Failed to open pod %q: %v", podUUID, err) return 1 } defer p.Close() if !p.isRunning() { stderr("Pod %q isn't currently running", podUUID) return 1 } podPID, err := p.getPID() if err != nil { stderr("Unable to determine the pid for pod %q: %v", podUUID, err) return 1 } appName, err := getAppName(p) if err != nil { stderr("Unable to determine app name: %v", err) return 1 } argv, err := getEnterArgv(p, args) if err != nil { stderr("Enter failed: %v", err) return 1 } s, err := store.NewStore(globalFlags.Dir) if err != nil { stderr("Cannot open store: %v", err) return 1 } stage1ID, err := p.getStage1Hash() if err != nil { stderr("Error getting stage1 hash") return 1 } stage1RootFS := s.GetTreeStoreRootFS(stage1ID.String()) if err = stage0.Enter(p.path(), podPID, *appName, stage1RootFS, argv); err != nil { stderr("Enter failed: %v", err) return 1 } // not reached when stage0.Enter execs /enter return 0 }
func runEnter(cmd *cobra.Command, args []string) (exit int) { if len(args) < 1 { cmd.Usage() return 254 } p, err := pkgPod.PodFromUUIDString(getDataDir(), args[0]) if err != nil { stderr.PrintE("problem retrieving pod", err) return 254 } defer p.Close() if p.State() != pkgPod.Running { stderr.Printf("pod %q isn't currently running", p.UUID) return 254 } podPID, err := p.ContainerPid1() if err != nil { stderr.PrintE(fmt.Sprintf("unable to determine the pid for pod %q", p.UUID), err) return 254 } appName, err := getAppName(p) if err != nil { stderr.PrintE("unable to determine app name", err) return 254 } argv, err := getEnterArgv(p, args) if err != nil { stderr.PrintE("enter failed", err) return 254 } s, err := imagestore.NewStore(storeDir()) if err != nil { stderr.PrintE("cannot open store", err) return 254 } ts, err := treestore.NewStore(treeStoreDir(), s) if err != nil { stderr.PrintE("cannot open store", err) return 254 } stage1TreeStoreID, err := p.GetStage1TreeStoreID() if err != nil { stderr.PrintE("error getting stage1 treeStoreID", err) return 254 } stage1RootFS := ts.GetRootFS(stage1TreeStoreID) if err = stage0.Enter(p.Path(), podPID, *appName, stage1RootFS, argv); err != nil { stderr.PrintE("enter failed", err) return 254 } // not reached when stage0.Enter execs /enter return 0 }