Signed-off-by: Daniel Nephin <dnephin@docker.com>
| ... | ... |
@@ -723,10 +723,14 @@ func convertUpdateConfig(source *composetypes.UpdateConfig) *swarm.UpdateConfig |
| 723 | 723 |
|
| 724 | 724 |
func convertResources(source composetypes.Resources) (*swarm.ResourceRequirements, error) {
|
| 725 | 725 |
resources := &swarm.ResourceRequirements{}
|
| 726 |
+ var err error |
|
| 726 | 727 |
if source.Limits != nil {
|
| 727 |
- cpus, err := opts.ParseCPUs(source.Limits.NanoCPUs) |
|
| 728 |
- if err != nil {
|
|
| 729 |
- return nil, err |
|
| 728 |
+ var cpus int64 |
|
| 729 |
+ if source.Limits.NanoCPUs != "" {
|
|
| 730 |
+ cpus, err = opts.ParseCPUs(source.Limits.NanoCPUs) |
|
| 731 |
+ if err != nil {
|
|
| 732 |
+ return nil, err |
|
| 733 |
+ } |
|
| 730 | 734 |
} |
| 731 | 735 |
resources.Limits = &swarm.Resources{
|
| 732 | 736 |
NanoCPUs: cpus, |
| ... | ... |
@@ -734,9 +738,12 @@ func convertResources(source composetypes.Resources) (*swarm.ResourceRequirement |
| 734 | 734 |
} |
| 735 | 735 |
} |
| 736 | 736 |
if source.Reservations != nil {
|
| 737 |
- cpus, err := opts.ParseCPUs(source.Reservations.NanoCPUs) |
|
| 738 |
- if err != nil {
|
|
| 739 |
- return nil, err |
|
| 737 |
+ var cpus int64 |
|
| 738 |
+ if source.Reservations.NanoCPUs != "" {
|
|
| 739 |
+ cpus, err = opts.ParseCPUs(source.Reservations.NanoCPUs) |
|
| 740 |
+ if err != nil {
|
|
| 741 |
+ return nil, err |
|
| 742 |
+ } |
|
| 740 | 743 |
} |
| 741 | 744 |
resources.Reservations = &swarm.Resources{
|
| 742 | 745 |
NanoCPUs: cpus, |
| ... | ... |
@@ -5,6 +5,7 @@ import ( |
| 5 | 5 |
|
| 6 | 6 |
composetypes "github.com/aanand/compose-file/types" |
| 7 | 7 |
"github.com/docker/docker/api/types/mount" |
| 8 |
+ "github.com/docker/docker/api/types/swarm" |
|
| 8 | 9 |
"github.com/docker/docker/pkg/testutil/assert" |
| 9 | 10 |
) |
| 10 | 11 |
|
| ... | ... |
@@ -28,3 +29,26 @@ func TestConvertVolumeToMountInvalidFormat(t *testing.T) {
|
| 28 | 28 |
assert.Error(t, err, "invalid volume: "+vol) |
| 29 | 29 |
} |
| 30 | 30 |
} |
| 31 |
+ |
|
| 32 |
+func TestConvertResourcesOnlyMemory(t *testing.T) {
|
|
| 33 |
+ source := composetypes.Resources{
|
|
| 34 |
+ Limits: &composetypes.Resource{
|
|
| 35 |
+ MemoryBytes: composetypes.UnitBytes(300000000), |
|
| 36 |
+ }, |
|
| 37 |
+ Reservations: &composetypes.Resource{
|
|
| 38 |
+ MemoryBytes: composetypes.UnitBytes(200000000), |
|
| 39 |
+ }, |
|
| 40 |
+ } |
|
| 41 |
+ resources, err := convertResources(source) |
|
| 42 |
+ assert.NilError(t, err) |
|
| 43 |
+ |
|
| 44 |
+ expected := &swarm.ResourceRequirements{
|
|
| 45 |
+ Limits: &swarm.Resources{
|
|
| 46 |
+ MemoryBytes: 300000000, |
|
| 47 |
+ }, |
|
| 48 |
+ Reservations: &swarm.Resources{
|
|
| 49 |
+ MemoryBytes: 200000000, |
|
| 50 |
+ }, |
|
| 51 |
+ } |
|
| 52 |
+ assert.DeepEqual(t, resources, expected) |
|
| 53 |
+} |