44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package hcsshim
|
|
|
|
import "github.com/Sirupsen/logrus"
|
|
|
|
// TerminateComputeSystem force terminates a container.
|
|
func TerminateComputeSystem(id string, timeout uint32, context string) error {
|
|
return shutdownTerminate(false, id, timeout, context)
|
|
}
|
|
|
|
// ShutdownComputeSystem shuts down a container by requesting a shutdown within
|
|
// the container operating system.
|
|
func ShutdownComputeSystem(id string, timeout uint32, context string) error {
|
|
return shutdownTerminate(true, id, timeout, context)
|
|
}
|
|
|
|
// shutdownTerminate is a wrapper for ShutdownComputeSystem and TerminateComputeSystem
|
|
// which have very similar calling semantics
|
|
func shutdownTerminate(shutdown bool, id string, timeout uint32, context string) error {
|
|
|
|
var (
|
|
title = "HCSShim::"
|
|
)
|
|
if shutdown {
|
|
title = title + "ShutdownComputeSystem"
|
|
} else {
|
|
title = title + "TerminateComputeSystem"
|
|
}
|
|
logrus.Debugf(title+" id=%s context=%s", id, context)
|
|
|
|
var err error
|
|
if shutdown {
|
|
err = shutdownComputeSystem(id, timeout)
|
|
} else {
|
|
err = terminateComputeSystem(id)
|
|
}
|
|
|
|
if err != nil {
|
|
return makeErrorf(err, title, "id=%s context=%s", id, context)
|
|
}
|
|
|
|
logrus.Debugf(title+" succeeded id=%s context=%s", id, context)
|
|
return nil
|
|
}
|