Signed-off-by: Daniel Nephin <dnephin@docker.com>
| ... | ... |
@@ -263,10 +263,14 @@ func convertUpdateConfig(source *composetypes.UpdateConfig) *swarm.UpdateConfig |
| 263 | 263 |
|
| 264 | 264 |
func convertResources(source composetypes.Resources) (*swarm.ResourceRequirements, error) {
|
| 265 | 265 |
resources := &swarm.ResourceRequirements{}
|
| 266 |
+ var err error |
|
| 266 | 267 |
if source.Limits != nil {
|
| 267 |
- cpus, err := opts.ParseCPUs(source.Limits.NanoCPUs) |
|
| 268 |
- if err != nil {
|
|
| 269 |
- return nil, err |
|
| 268 |
+ var cpus int64 |
|
| 269 |
+ if source.Limits.NanoCPUs != "" {
|
|
| 270 |
+ cpus, err = opts.ParseCPUs(source.Limits.NanoCPUs) |
|
| 271 |
+ if err != nil {
|
|
| 272 |
+ return nil, err |
|
| 273 |
+ } |
|
| 270 | 274 |
} |
| 271 | 275 |
resources.Limits = &swarm.Resources{
|
| 272 | 276 |
NanoCPUs: cpus, |
| ... | ... |
@@ -274,9 +278,12 @@ func convertResources(source composetypes.Resources) (*swarm.ResourceRequirement |
| 274 | 274 |
} |
| 275 | 275 |
} |
| 276 | 276 |
if source.Reservations != nil {
|
| 277 |
- cpus, err := opts.ParseCPUs(source.Reservations.NanoCPUs) |
|
| 278 |
- if err != nil {
|
|
| 279 |
- return nil, err |
|
| 277 |
+ var cpus int64 |
|
| 278 |
+ if source.Reservations.NanoCPUs != "" {
|
|
| 279 |
+ cpus, err = opts.ParseCPUs(source.Reservations.NanoCPUs) |
|
| 280 |
+ if err != nil {
|
|
| 281 |
+ return nil, err |
|
| 282 |
+ } |
|
| 280 | 283 |
} |
| 281 | 284 |
resources.Reservations = &swarm.Resources{
|
| 282 | 285 |
NanoCPUs: cpus, |
| ... | ... |
@@ -80,6 +80,29 @@ func TestConvertResourcesFull(t *testing.T) {
|
| 80 | 80 |
assert.DeepEqual(t, resources, expected) |
| 81 | 81 |
} |
| 82 | 82 |
|
| 83 |
+func TestConvertResourcesOnlyMemory(t *testing.T) {
|
|
| 84 |
+ source := composetypes.Resources{
|
|
| 85 |
+ Limits: &composetypes.Resource{
|
|
| 86 |
+ MemoryBytes: composetypes.UnitBytes(300000000), |
|
| 87 |
+ }, |
|
| 88 |
+ Reservations: &composetypes.Resource{
|
|
| 89 |
+ MemoryBytes: composetypes.UnitBytes(200000000), |
|
| 90 |
+ }, |
|
| 91 |
+ } |
|
| 92 |
+ resources, err := convertResources(source) |
|
| 93 |
+ assert.NilError(t, err) |
|
| 94 |
+ |
|
| 95 |
+ expected := &swarm.ResourceRequirements{
|
|
| 96 |
+ Limits: &swarm.Resources{
|
|
| 97 |
+ MemoryBytes: 300000000, |
|
| 98 |
+ }, |
|
| 99 |
+ Reservations: &swarm.Resources{
|
|
| 100 |
+ MemoryBytes: 200000000, |
|
| 101 |
+ }, |
|
| 102 |
+ } |
|
| 103 |
+ assert.DeepEqual(t, resources, expected) |
|
| 104 |
+} |
|
| 105 |
+ |
|
| 83 | 106 |
func TestConvertHealthcheck(t *testing.T) {
|
| 84 | 107 |
retries := uint64(10) |
| 85 | 108 |
source := &composetypes.HealthCheckConfig{
|