forked from cloudfoundry-attic/garden-linux
-
Notifications
You must be signed in to change notification settings - Fork 0
/
container.go
130 lines (98 loc) · 3.6 KB
/
container.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package client
import (
"io"
"github.com/cloudfoundry-incubator/garden"
"github.com/cloudfoundry-incubator/garden/client/connection"
)
type container struct {
handle string
connection connection.Connection
}
func newContainer(handle string, connection connection.Connection) garden.Container {
return &container{
handle: handle,
connection: connection,
}
}
func (container *container) Handle() string {
return container.handle
}
func (container *container) Stop(kill bool) error {
return container.connection.Stop(container.handle, kill)
}
func (container *container) Info() (garden.ContainerInfo, error) {
return container.connection.Info(container.handle)
}
func (container *container) StreamIn(dstPath string, reader io.Reader) error {
return container.connection.StreamIn(container.handle, dstPath, reader)
}
func (container *container) StreamOut(srcPath string) (io.ReadCloser, error) {
return container.connection.StreamOut(container.handle, srcPath)
}
func (container *container) LimitBandwidth(limits garden.BandwidthLimits) error {
_, err := container.connection.LimitBandwidth(container.handle, limits)
if err != nil {
return err
}
return nil
}
func (container *container) CurrentBandwidthLimits() (garden.BandwidthLimits, error) {
return container.connection.CurrentBandwidthLimits(container.handle)
}
func (container *container) LimitCPU(limits garden.CPULimits) error {
_, err := container.connection.LimitCPU(container.handle, limits)
if err != nil {
return err
}
return nil
}
func (container *container) CurrentCPULimits() (garden.CPULimits, error) {
return container.connection.CurrentCPULimits(container.handle)
}
func (container *container) LimitDisk(limits garden.DiskLimits) error {
_, err := container.connection.LimitDisk(container.handle, limits)
if err != nil {
return err
}
return nil
}
func (container *container) CurrentDiskLimits() (garden.DiskLimits, error) {
return container.connection.CurrentDiskLimits(container.handle)
}
func (container *container) LimitMemory(limits garden.MemoryLimits) error {
_, err := container.connection.LimitMemory(container.handle, limits)
if err != nil {
return err
}
return nil
}
func (container *container) CurrentMemoryLimits() (garden.MemoryLimits, error) {
return container.connection.CurrentMemoryLimits(container.handle)
}
func (container *container) Run(spec garden.ProcessSpec, io garden.ProcessIO) (garden.Process, error) {
return container.connection.Run(container.handle, spec, io)
}
func (container *container) Attach(processID uint32, io garden.ProcessIO) (garden.Process, error) {
return container.connection.Attach(container.handle, processID, io)
}
func (container *container) NetIn(hostPort, containerPort uint32) (uint32, uint32, error) {
return container.connection.NetIn(container.handle, hostPort, containerPort)
}
func (container *container) NetOut(netOutRule garden.NetOutRule) error {
return container.connection.NetOut(container.handle, netOutRule)
}
func (container *container) Metrics() (garden.Metrics, error) {
return container.connection.Metrics(container.handle)
}
func (container *container) Properties() (garden.Properties, error) {
return container.connection.Properties(container.handle)
}
func (container *container) Property(name string) (string, error) {
return container.connection.Property(container.handle, name)
}
func (container *container) SetProperty(name string, value string) error {
return container.connection.SetProperty(container.handle, name, value)
}
func (container *container) RemoveProperty(name string) error {
return container.connection.RemoveProperty(container.handle, name)
}