|
@@ -7,6 +7,7 @@ import (
|
|
|
"github.com/docker/docker/api/types/container"
|
|
|
mounttypes "github.com/docker/docker/api/types/mount"
|
|
|
types "github.com/docker/docker/api/types/swarm"
|
|
|
+ "github.com/docker/go-units"
|
|
|
swarmapi "github.com/docker/swarmkit/api"
|
|
|
gogotypes "github.com/gogo/protobuf/types"
|
|
|
"github.com/pkg/errors"
|
|
@@ -39,6 +40,7 @@ func containerSpecFromGRPC(c *swarmapi.ContainerSpec) *types.ContainerSpec {
|
|
|
Sysctls: c.Sysctls,
|
|
|
CapabilityAdd: c.CapabilityAdd,
|
|
|
CapabilityDrop: c.CapabilityDrop,
|
|
|
+ Ulimits: ulimitsFromGRPC(c.Ulimits),
|
|
|
}
|
|
|
|
|
|
if c.DNSConfig != nil {
|
|
@@ -267,6 +269,7 @@ func containerToGRPC(c *types.ContainerSpec) (*swarmapi.ContainerSpec, error) {
|
|
|
Sysctls: c.Sysctls,
|
|
|
CapabilityAdd: c.CapabilityAdd,
|
|
|
CapabilityDrop: c.CapabilityDrop,
|
|
|
+ Ulimits: ulimitsToGRPC(c.Ulimits),
|
|
|
}
|
|
|
|
|
|
if c.DNSConfig != nil {
|
|
@@ -471,3 +474,31 @@ func isolationToGRPC(i container.Isolation) swarmapi.ContainerSpec_Isolation {
|
|
|
}
|
|
|
return swarmapi.ContainerIsolationDefault
|
|
|
}
|
|
|
+
|
|
|
+func ulimitsFromGRPC(u []*swarmapi.ContainerSpec_Ulimit) []*units.Ulimit {
|
|
|
+ ulimits := make([]*units.Ulimit, len(u))
|
|
|
+
|
|
|
+ for i, ulimit := range u {
|
|
|
+ ulimits[i] = &units.Ulimit{
|
|
|
+ Name: ulimit.Name,
|
|
|
+ Soft: ulimit.Soft,
|
|
|
+ Hard: ulimit.Hard,
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return ulimits
|
|
|
+}
|
|
|
+
|
|
|
+func ulimitsToGRPC(u []*units.Ulimit) []*swarmapi.ContainerSpec_Ulimit {
|
|
|
+ ulimits := make([]*swarmapi.ContainerSpec_Ulimit, len(u))
|
|
|
+
|
|
|
+ for i, ulimit := range u {
|
|
|
+ ulimits[i] = &swarmapi.ContainerSpec_Ulimit{
|
|
|
+ Name: ulimit.Name,
|
|
|
+ Soft: ulimit.Soft,
|
|
|
+ Hard: ulimit.Hard,
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return ulimits
|
|
|
+}
|