Browse code

Move ulimit options to runconfig opts

Signed-off-by: Daniel Nephin <dnephin@docker.com>

Daniel Nephin authored on 2015/12/22 05:06:46
Showing 7 changed files
... ...
@@ -27,9 +27,9 @@ import (
27 27
 	flag "github.com/docker/docker/pkg/mflag"
28 28
 	"github.com/docker/docker/pkg/progress"
29 29
 	"github.com/docker/docker/pkg/streamformatter"
30
-	"github.com/docker/docker/pkg/ulimit"
31 30
 	"github.com/docker/docker/pkg/urlutil"
32 31
 	"github.com/docker/docker/reference"
32
+	runconfigopts "github.com/docker/docker/runconfig/opts"
33 33
 	"github.com/docker/docker/utils"
34 34
 	"github.com/docker/go-units"
35 35
 )
... ...
@@ -62,8 +62,8 @@ func (cli *DockerCli) CmdBuild(args ...string) error {
62 62
 	cmd.Var(&flBuildArg, []string{"-build-arg"}, "Set build-time variables")
63 63
 	isolation := cmd.String([]string{"-isolation"}, "", "Container isolation level")
64 64
 
65
-	ulimits := make(map[string]*ulimit.Ulimit)
66
-	flUlimits := opts.NewUlimitOpt(&ulimits)
65
+	ulimits := make(map[string]*units.Ulimit)
66
+	flUlimits := runconfigopts.NewUlimitOpt(&ulimits)
67 67
 	cmd.Var(flUlimits, []string{"-ulimit"}, "Ulimit options")
68 68
 
69 69
 	cmd.Require(flag.Exact, 1)
... ...
@@ -7,7 +7,8 @@ import (
7 7
 
8 8
 	"github.com/docker/docker/opts"
9 9
 	flag "github.com/docker/docker/pkg/mflag"
10
-	"github.com/docker/docker/pkg/ulimit"
10
+	runconfigopts "github.com/docker/docker/runconfig/opts"
11
+	"github.com/docker/go-units"
11 12
 )
12 13
 
13 14
 var (
... ...
@@ -27,7 +28,7 @@ type Config struct {
27 27
 	EnableSelinuxSupport bool
28 28
 	RemappedRoot         string
29 29
 	SocketGroup          string
30
-	Ulimits              map[string]*ulimit.Ulimit
30
+	Ulimits              map[string]*units.Ulimit
31 31
 }
32 32
 
33 33
 // bridgeConfig stores all the bridge driver specific
... ...
@@ -59,8 +60,8 @@ func (config *Config) InstallFlags(cmd *flag.FlagSet, usageFn func(string) strin
59 59
 	// Then platform-specific install flags
60 60
 	cmd.BoolVar(&config.EnableSelinuxSupport, []string{"-selinux-enabled"}, false, usageFn("Enable selinux support"))
61 61
 	cmd.StringVar(&config.SocketGroup, []string{"G", "-group"}, "docker", usageFn("Group for the unix socket"))
62
-	config.Ulimits = make(map[string]*ulimit.Ulimit)
63
-	cmd.Var(opts.NewUlimitOpt(&config.Ulimits), []string{"-default-ulimit"}, usageFn("Set default ulimits for containers"))
62
+	config.Ulimits = make(map[string]*units.Ulimit)
63
+	cmd.Var(runconfigopts.NewUlimitOpt(&config.Ulimits), []string{"-default-ulimit"}, usageFn("Set default ulimits for containers"))
64 64
 	cmd.BoolVar(&config.Bridge.EnableIPTables, []string{"#iptables", "-iptables"}, true, usageFn("Enable addition of iptables rules"))
65 65
 	cmd.BoolVar(&config.Bridge.EnableIPForward, []string{"#ip-forward", "-ip-forward"}, true, usageFn("Enable net.ipv4.ip_forward"))
66 66
 	cmd.BoolVar(&config.Bridge.EnableIPMasq, []string{"-ip-masq"}, true, usageFn("Enable IP masquerading"))
67 67
deleted file mode 100644
... ...
@@ -1,52 +0,0 @@
1
-package opts
2
-
3
-import (
4
-	"fmt"
5
-
6
-	"github.com/docker/docker/pkg/ulimit"
7
-)
8
-
9
-// UlimitOpt defines a map of Ulimits
10
-type UlimitOpt struct {
11
-	values *map[string]*ulimit.Ulimit
12
-}
13
-
14
-// NewUlimitOpt creates a new UlimitOpt
15
-func NewUlimitOpt(ref *map[string]*ulimit.Ulimit) *UlimitOpt {
16
-	if ref == nil {
17
-		ref = &map[string]*ulimit.Ulimit{}
18
-	}
19
-	return &UlimitOpt{ref}
20
-}
21
-
22
-// Set validates a Ulimit and sets its name as a key in UlimitOpt
23
-func (o *UlimitOpt) Set(val string) error {
24
-	l, err := ulimit.Parse(val)
25
-	if err != nil {
26
-		return err
27
-	}
28
-
29
-	(*o.values)[l.Name] = l
30
-
31
-	return nil
32
-}
33
-
34
-// String returns Ulimit values as a string.
35
-func (o *UlimitOpt) String() string {
36
-	var out []string
37
-	for _, v := range *o.values {
38
-		out = append(out, v.String())
39
-	}
40
-
41
-	return fmt.Sprintf("%v", out)
42
-}
43
-
44
-// GetList returns a slice of pointers to Ulimits.
45
-func (o *UlimitOpt) GetList() []*ulimit.Ulimit {
46
-	var ulimits []*ulimit.Ulimit
47
-	for _, v := range *o.values {
48
-		ulimits = append(ulimits, v)
49
-	}
50
-
51
-	return ulimits
52
-}
53 1
deleted file mode 100644
... ...
@@ -1,42 +0,0 @@
1
-package opts
2
-
3
-import (
4
-	"testing"
5
-
6
-	"github.com/docker/docker/pkg/ulimit"
7
-)
8
-
9
-func TestUlimitOpt(t *testing.T) {
10
-	ulimitMap := map[string]*ulimit.Ulimit{
11
-		"nofile": {"nofile", 1024, 512},
12
-	}
13
-
14
-	ulimitOpt := NewUlimitOpt(&ulimitMap)
15
-
16
-	expected := "[nofile=512:1024]"
17
-	if ulimitOpt.String() != expected {
18
-		t.Fatalf("Expected %v, got %v", expected, ulimitOpt)
19
-	}
20
-
21
-	// Valid ulimit append to opts
22
-	if err := ulimitOpt.Set("core=1024:1024"); err != nil {
23
-		t.Fatal(err)
24
-	}
25
-
26
-	// Invalid ulimit type returns an error and do not append to opts
27
-	if err := ulimitOpt.Set("notavalidtype=1024:1024"); err == nil {
28
-		t.Fatalf("Expected error on invalid ulimit type")
29
-	}
30
-	expected = "[nofile=512:1024 core=1024:1024]"
31
-	expected2 := "[core=1024:1024 nofile=512:1024]"
32
-	result := ulimitOpt.String()
33
-	if result != expected && result != expected2 {
34
-		t.Fatalf("Expected %v or %v, got %v", expected, expected2, ulimitOpt)
35
-	}
36
-
37
-	// And test GetList
38
-	ulimits := ulimitOpt.GetList()
39
-	if len(ulimits) != 2 {
40
-		t.Fatalf("Expected a ulimit list of 2, got %v", ulimits)
41
-	}
42
-}
43 1
new file mode 100644
... ...
@@ -0,0 +1,52 @@
0
+package opts
1
+
2
+import (
3
+	"fmt"
4
+
5
+	"github.com/docker/go-units"
6
+)
7
+
8
+// UlimitOpt defines a map of Ulimits
9
+type UlimitOpt struct {
10
+	values *map[string]*units.Ulimit
11
+}
12
+
13
+// NewUlimitOpt creates a new UlimitOpt
14
+func NewUlimitOpt(ref *map[string]*units.Ulimit) *UlimitOpt {
15
+	if ref == nil {
16
+		ref = &map[string]*units.Ulimit{}
17
+	}
18
+	return &UlimitOpt{ref}
19
+}
20
+
21
+// Set validates a Ulimit and sets its name as a key in UlimitOpt
22
+func (o *UlimitOpt) Set(val string) error {
23
+	l, err := units.ParseUlimit(val)
24
+	if err != nil {
25
+		return err
26
+	}
27
+
28
+	(*o.values)[l.Name] = l
29
+
30
+	return nil
31
+}
32
+
33
+// String returns Ulimit values as a string.
34
+func (o *UlimitOpt) String() string {
35
+	var out []string
36
+	for _, v := range *o.values {
37
+		out = append(out, v.String())
38
+	}
39
+
40
+	return fmt.Sprintf("%v", out)
41
+}
42
+
43
+// GetList returns a slice of pointers to Ulimits.
44
+func (o *UlimitOpt) GetList() []*units.Ulimit {
45
+	var ulimits []*units.Ulimit
46
+	for _, v := range *o.values {
47
+		ulimits = append(ulimits, v)
48
+	}
49
+
50
+	return ulimits
51
+}
0 52
new file mode 100644
... ...
@@ -0,0 +1,42 @@
0
+package opts
1
+
2
+import (
3
+	"testing"
4
+
5
+	"github.com/docker/go-units"
6
+)
7
+
8
+func TestUlimitOpt(t *testing.T) {
9
+	ulimitMap := map[string]*units.Ulimit{
10
+		"nofile": {"nofile", 1024, 512},
11
+	}
12
+
13
+	ulimitOpt := NewUlimitOpt(&ulimitMap)
14
+
15
+	expected := "[nofile=512:1024]"
16
+	if ulimitOpt.String() != expected {
17
+		t.Fatalf("Expected %v, got %v", expected, ulimitOpt)
18
+	}
19
+
20
+	// Valid ulimit append to opts
21
+	if err := ulimitOpt.Set("core=1024:1024"); err != nil {
22
+		t.Fatal(err)
23
+	}
24
+
25
+	// Invalid ulimit type returns an error and do not append to opts
26
+	if err := ulimitOpt.Set("notavalidtype=1024:1024"); err == nil {
27
+		t.Fatalf("Expected error on invalid ulimit type")
28
+	}
29
+	expected = "[nofile=512:1024 core=1024:1024]"
30
+	expected2 := "[core=1024:1024 nofile=512:1024]"
31
+	result := ulimitOpt.String()
32
+	if result != expected && result != expected2 {
33
+		t.Fatalf("Expected %v or %v, got %v", expected, expected2, ulimitOpt)
34
+	}
35
+
36
+	// And test GetList
37
+	ulimits := ulimitOpt.GetList()
38
+	if len(ulimits) != 2 {
39
+		t.Fatalf("Expected a ulimit list of 2, got %v", ulimits)
40
+	}
41
+}
... ...
@@ -12,6 +12,7 @@ import (
12 12
 	flag "github.com/docker/docker/pkg/mflag"
13 13
 	"github.com/docker/docker/pkg/mount"
14 14
 	"github.com/docker/docker/pkg/signal"
15
+	runconfigopts "github.com/docker/docker/runconfig/opts"
15 16
 	"github.com/docker/docker/volume"
16 17
 	"github.com/docker/go-connections/nat"
17 18
 	"github.com/docker/go-units"
... ...
@@ -63,7 +64,7 @@ func Parse(cmd *flag.FlagSet, args []string) (*container.Config, *container.Host
63 63
 		flLabels            = opts.NewListOpts(opts.ValidateEnv)
64 64
 		flDevices           = opts.NewListOpts(ValidateDevice)
65 65
 
66
-		flUlimits = opts.NewUlimitOpt(nil)
66
+		flUlimits = runconfigopts.NewUlimitOpt(nil)
67 67
 
68 68
 		flPublish           = opts.NewListOpts(nil)
69 69
 		flExpose            = opts.NewListOpts(nil)