Skip to content

Commit

Permalink
Vendor hcsshim to v0.4.2
Browse files Browse the repository at this point in the history
Signed-off-by: Darren Stahl <[email protected]>
  • Loading branch information
darstahl committed Aug 18, 2016
1 parent b0b3249 commit ba54581
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 11 deletions.
2 changes: 1 addition & 1 deletion hack/vendor.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ esac

# the following lines are in sorted order, FYI
clone git github.com/Azure/go-ansiterm 388960b655244e76e24c75f48631564eaefade62
clone git github.com/Microsoft/hcsshim v0.4.1
clone git github.com/Microsoft/hcsshim v0.4.2
clone git github.com/Microsoft/go-winio v0.3.4
clone git github.com/Sirupsen/logrus v0.10.0 # logrus is a common dependency among multiple deps
clone git github.com/docker/libtrust 9cbd2a1374f46905c68a4eb3694a130610adc62a
Expand Down
50 changes: 40 additions & 10 deletions vendor/src/github.com/Microsoft/hcsshim/container.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ var (
const (
pendingUpdatesQuery = `{ "PropertyTypes" : ["PendingUpdates"]}`
statisticsQuery = `{ "PropertyTypes" : ["Statistics"]}`
processListQuery = `{ "PropertyTypes" : ["ProcessList"]}`
)

type container struct {
Expand All @@ -29,14 +30,15 @@ type containerProperties struct {
Name string
SystemType string
Owner string
SiloGUID string `json:"SiloGuid,omitempty"`
IsDummy bool `json:",omitempty"`
RuntimeID string `json:"RuntimeId,omitempty"`
Stopped bool `json:",omitempty"`
ExitType string `json:",omitempty"`
AreUpdatesPending bool `json:",omitempty"`
ObRoot string `json:",omitempty"`
Statistics Statistics `json:",omitempty"`
SiloGUID string `json:"SiloGuid,omitempty"`
IsDummy bool `json:",omitempty"`
RuntimeID string `json:"RuntimeId,omitempty"`
Stopped bool `json:",omitempty"`
ExitType string `json:",omitempty"`
AreUpdatesPending bool `json:",omitempty"`
ObRoot string `json:",omitempty"`
Statistics Statistics `json:",omitempty"`
ProcessList []ProcessListItem `json:",omitempty"`
}

// MemoryStats holds the memory statistics for a container
Expand Down Expand Up @@ -84,6 +86,18 @@ type Statistics struct {
Network []NetworkStats `json:",omitempty"`
}

// ProcessList is the structure of an item returned by a ProcessList call on a container
type ProcessListItem struct {
CreateTimestamp time.Time `json:",omitempty"`
ImageName string `json:",omitempty"`
KernelTime100ns uint64 `json:",omitempty"`
MemoryCommitBytes uint64 `json:",omitempty"`
MemoryWorkingSetPrivateBytes uint64 `json:",omitempty"`
MemoryWorkingSetSharedBytes uint64 `json:",omitempty"`
ProcessId uint32 `json:",omitempty"`
UserTime100ns uint64 `json:",omitempty"`
}

// CreateContainer creates a new container with the given configuration but does not start it.
func CreateContainer(id string, c *ContainerConfig) (Container, error) {
operation := "CreateContainer"
Expand Down Expand Up @@ -326,6 +340,20 @@ func (container *container) Statistics() (Statistics, error) {
return properties.Statistics, nil
}

// ProcessList returns an array of ProcessListItems for the container
func (container *container) ProcessList() ([]ProcessListItem, error) {
operation := "ProcessList"
title := "HCSShim::Container::" + operation
logrus.Debugf(title+" id=%s", container.id)
properties, err := container.properties(processListQuery)
if err != nil {
return nil, makeContainerError(container, operation, "", err)
}

logrus.Debugf(title+" succeeded id=%s", container.id)
return properties.ProcessList, nil
}

// Pause pauses the execution of the container. This feature is not enabled in TP5.
func (container *container) Pause() error {
operation := "Pause"
Expand Down Expand Up @@ -436,8 +464,10 @@ func (container *container) OpenProcess(pid int) (Process, error) {
container: container,
}

if err := process.registerCallback(); err != nil {
return nil, makeContainerError(container, operation, "", err)
if hcsCallbacksSupported {
if err := process.registerCallback(); err != nil {
return nil, makeContainerError(container, operation, "", err)
}
}

logrus.Debugf(title+" succeeded id=%s processid=%s", container.id, process.processID)
Expand Down
3 changes: 3 additions & 0 deletions vendor/src/github.com/Microsoft/hcsshim/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,9 @@ type Container interface {
// Statistics returns statistics for a container.
Statistics() (Statistics, error)

// ProcessList returns details for the processes in a container.
ProcessList() ([]ProcessListItem, error)

// CreateProcess launches a new process within the container.
CreateProcess(c *ProcessConfig) (Process, error)

Expand Down

0 comments on commit ba54581

Please sign in to comment.