mirror of
https://github.com/aljazceru/kata-containers.git
synced 2025-12-21 00:04:19 +01:00
When guest panic, dump guest kernel memory to host filesystem. And also includes: - hypervisor config - hypervisor version - and state of sandbox Fixes: #1012 Signed-off-by: bin liu <bin@hyper.sh>
78 lines
1.5 KiB
Go
78 lines
1.5 KiB
Go
// Copyright (c) 2019 SUSE LLC
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package katautils
|
|
|
|
import (
|
|
"os/exec"
|
|
|
|
"github.com/kata-containers/kata-containers/src/runtime/pkg/utils"
|
|
)
|
|
|
|
type CtrEngine struct {
|
|
Name string
|
|
}
|
|
|
|
var (
|
|
DockerLikeCtrEngines = []string{"docker", "podman"}
|
|
)
|
|
|
|
func (e *CtrEngine) Init(name string) (string, error) {
|
|
var out string
|
|
out, err := utils.RunCommandFull([]string{name, "version"}, true)
|
|
if err != nil {
|
|
return out, err
|
|
}
|
|
|
|
e.Name = name
|
|
return out, nil
|
|
}
|
|
|
|
func (e *CtrEngine) Inspect(image string) (string, error) {
|
|
// Only hit the network if the image doesn't exist locally
|
|
return utils.RunCommand([]string{e.Name, "inspect", "--type=image", image})
|
|
}
|
|
|
|
func (e *CtrEngine) Pull(image string) (string, error) {
|
|
return utils.RunCommand([]string{e.Name, "pull", image})
|
|
}
|
|
|
|
func (e *CtrEngine) Create(image string) (string, error) {
|
|
return utils.RunCommand([]string{e.Name, "create", image})
|
|
}
|
|
|
|
func (e *CtrEngine) Rm(ctrID string) (string, error) {
|
|
return utils.RunCommand([]string{e.Name, "rm", ctrID})
|
|
}
|
|
|
|
func (e *CtrEngine) GetRootfs(ctrID string, dir string) error {
|
|
cmd1 := exec.Command(e.Name, "export", ctrID)
|
|
cmd2 := exec.Command("tar", "-C", dir, "-xvf", "-")
|
|
|
|
cmd1Stdout, err := cmd1.StdoutPipe()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
cmd2.Stdin = cmd1Stdout
|
|
|
|
err = cmd2.Start()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = cmd1.Run()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = cmd2.Wait()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|