blob: 7d9c5385b99316db63b0d737c1ab372a9ff36b60 [file] [log] [blame]
package runtime
import (
"bytes"
"encoding/json"
"fmt"
"os/exec"
"strings"
"github.com/containerd/containerd/specs"
ocs "github.com/opencontainers/runtime-spec/specs-go"
)
func getRootIDs(s *specs.Spec) (int, int, error) {
return 0, 0, nil
}
func (c *container) OOM() (OOM, error) {
return nil, nil
}
func (c *container) Pids() ([]int, error) {
var pids []int
// TODO: This could be racy. Needs more investigation.
//we get this information from runz state
cmd := exec.Command(c.runtime, "state", c.id)
outBuf, errBuf := new(bytes.Buffer), new(bytes.Buffer)
cmd.Stdout, cmd.Stderr = outBuf, errBuf
if err := cmd.Run(); err != nil {
if strings.Contains(errBuf.String(), "Container not found") {
return nil, errContainerNotFound
}
return nil, fmt.Errorf("Error is: %+v\n", err)
}
response := ocs.State{}
decoder := json.NewDecoder(outBuf)
if err := decoder.Decode(&response); err != nil {
return nil, fmt.Errorf("unable to decode json response: %+v", err)
}
pids = append(pids, response.Pid)
return pids, nil
}
func (c *container) UpdateResources(r *Resource) error {
return nil
}