51 lines
1002 B
Go
51 lines
1002 B
Go
package namespaces
|
|
|
|
import "errors"
|
|
|
|
type (
|
|
Namespace struct {
|
|
Key string `json:"key,omitempty"`
|
|
Value int `json:"value,omitempty"`
|
|
File string `json:"file,omitempty"`
|
|
}
|
|
Namespaces []*Namespace
|
|
)
|
|
|
|
// namespaceList is used to convert the libcontainer types
|
|
// into the names of the files located in /proc/<pid>/ns/* for
|
|
// each namespace
|
|
var (
|
|
namespaceList = Namespaces{}
|
|
ErrUnkownNamespace = errors.New("Unknown namespace")
|
|
ErrUnsupported = errors.New("Unsupported method")
|
|
)
|
|
|
|
func (ns *Namespace) String() string {
|
|
return ns.Key
|
|
}
|
|
|
|
func GetNamespace(key string) *Namespace {
|
|
for _, ns := range namespaceList {
|
|
if ns.Key == key {
|
|
cpy := *ns
|
|
return &cpy
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Contains returns true if the specified Namespace is
|
|
// in the slice
|
|
func (n Namespaces) Contains(ns string) bool {
|
|
return n.Get(ns) != nil
|
|
}
|
|
|
|
func (n Namespaces) Get(ns string) *Namespace {
|
|
for _, nsp := range n {
|
|
if nsp != nil && nsp.Key == ns {
|
|
return nsp
|
|
}
|
|
}
|
|
return nil
|
|
}
|