diff --git a/cli/compose/loader/loader.go b/cli/compose/loader/loader.go index a1e13c5050..7629477519 100644 --- a/cli/compose/loader/loader.go +++ b/cli/compose/loader/loader.go @@ -98,7 +98,7 @@ func loadSections(config map[string]interface{}, configDetails types.ConfigDetai { key: "networks", fnc: func(config map[string]interface{}) error { - cfg.Networks, err = LoadNetworks(config) + cfg.Networks, err = LoadNetworks(config, configDetails.Version) return err }, }, @@ -425,17 +425,30 @@ func transformUlimits(data interface{}) (interface{}, error) { // LoadNetworks produces a NetworkConfig map from a compose file Dict // the source Dict is not validated if directly used. Use Load() to enable validation -func LoadNetworks(source map[string]interface{}) (map[string]types.NetworkConfig, error) { +func LoadNetworks(source map[string]interface{}, version string) (map[string]types.NetworkConfig, error) { networks := make(map[string]types.NetworkConfig) err := transform(source, &networks) if err != nil { return networks, err } for name, network := range networks { - if network.External.External && network.External.Name == "" { - network.External.Name = name - networks[name] = network + if !network.External.External { + continue } + switch { + case network.External.Name != "": + if network.Name != "" { + return nil, errors.Errorf("network %s: network.external.name and network.name conflict; only use network.name", name) + } + if versions.GreaterThanOrEqualTo(version, "3.5") { + logrus.Warnf("network %s: network.external.name is deprecated in favor of network.name", name) + } + network.Name = network.External.Name + network.External.Name = "" + case network.Name == "": + network.Name = name + } + networks[name] = network } return networks, nil } diff --git a/cli/compose/loader/loader_test.go b/cli/compose/loader/loader_test.go index d609311abc..c2df0f8252 100644 --- a/cli/compose/loader/loader_test.go +++ b/cli/compose/loader/loader_test.go @@ -636,7 +636,8 @@ networks: }, Networks: map[string]types.NetworkConfig{ "front": { - External: types.External{External: true, Name: "front"}, + External: types.External{External: true}, + Name: "front", Internal: true, Attachable: true, }, @@ -800,7 +801,7 @@ volumes: assert.Contains(t, err.Error(), "external_volume") } -func TestInvalidExternalNameAndNameCombination(t *testing.T) { +func TestLoadVolumeInvalidExternalNameAndNameCombination(t *testing.T) { _, err := loadYAML(` version: "3.4" volumes: @@ -1172,17 +1173,13 @@ func TestFullExample(t *testing.T) { }, "external-network": { - External: types.External{ - Name: "external-network", - External: true, - }, + Name: "external-network", + External: types.External{External: true}, }, "other-external-network": { - External: types.External{ - Name: "my-cool-network", - External: true, - }, + Name: "my-cool-network", + External: types.External{External: true}, }, } @@ -1516,7 +1513,7 @@ configs: assert.Equal(t, "invalid", actual.Services[0].Isolation) } -func TestInvalidSecretExternalNameAndNameCombination(t *testing.T) { +func TestLoadSecretInvalidExternalNameAndNameCombination(t *testing.T) { _, err := loadYAML(` version: "3.5" secrets: @@ -1556,3 +1553,65 @@ func TestLoadSecretsWarnOnDeprecatedExternalNameVersion35(t *testing.T) { assert.Equal(t, expected, secrets) assert.Contains(t, buf.String(), "secret.external.name is deprecated") } + +func TestLoadNetworksWarnOnDeprecatedExternalNameVersion35(t *testing.T) { + buf, cleanup := patchLogrus() + defer cleanup() + + source := map[string]interface{}{ + "foo": map[string]interface{}{ + "external": map[string]interface{}{ + "name": "oops", + }, + }, + } + networks, err := LoadNetworks(source, "3.5") + require.NoError(t, err) + expected := map[string]types.NetworkConfig{ + "foo": { + Name: "oops", + External: types.External{External: true}, + }, + } + assert.Equal(t, expected, networks) + assert.Contains(t, buf.String(), "network.external.name is deprecated") + +} + +func TestLoadNetworksWarnOnDeprecatedExternalNameVersion34(t *testing.T) { + buf, cleanup := patchLogrus() + defer cleanup() + + source := map[string]interface{}{ + "foo": map[string]interface{}{ + "external": map[string]interface{}{ + "name": "oops", + }, + }, + } + networks, err := LoadNetworks(source, "3.4") + require.NoError(t, err) + expected := map[string]types.NetworkConfig{ + "foo": { + Name: "oops", + External: types.External{External: true}, + }, + } + assert.Equal(t, expected, networks) + assert.Equal(t, "", buf.String()) +} + +func TestLoadNetworkInvalidExternalNameAndNameCombination(t *testing.T) { + _, err := loadYAML(` +version: "3.5" +networks: + foo: + name: user_specified_name + external: + name: external_name +`) + + require.Error(t, err) + assert.Contains(t, err.Error(), "network.external.name and network.name conflict; only use network.name") + assert.Contains(t, err.Error(), "foo") +} diff --git a/cli/compose/schema/bindata.go b/cli/compose/schema/bindata.go index e234c2cddd..c7bbc5ce2f 100644 --- a/cli/compose/schema/bindata.go +++ b/cli/compose/schema/bindata.go @@ -173,7 +173,7 @@ func dataConfig_schema_v34Json() (*asset, error) { return a, nil } -var _dataConfig_schema_v35Json = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x1b\xc9\x72\xec\xb6\xf1\x3e\x5f\xc1\x82\x7d\xb3\x16\x57\xc5\x49\x55\xde\x2d\xc7\x9c\x92\x73\x54\xf3\x58\x18\xb0\x87\x03\x0b\x04\x60\x00\x1c\x69\xfc\x4a\xff\x9e\xe2\x2a\x90\xc4\x46\x0d\xf5\x24\x27\x3e\x49\x43\x76\x37\x7a\x43\x6f\x00\xbf\xed\xb2\x0c\xfd\xa8\xc9\x09\x2a\x8c\xbe\x64\xe8\x64\x8c\xfc\x72\x7f\xff\xab\x16\xfc\xb6\x7b\x7a\x27\x54\x79\x5f\x28\x7c\x34\xb7\x3f\xff\x72\xdf\x3d\xfb\x01\xdd\x34\x78\xb4\x68\x50\x88\xe0\x47\x5a\xe6\xdd\x9b\xfc\xfc\x97\xbb\xbf\xde\x35\xe8\x1d\x88\xb9\x48\x68\x80\xc4\xe1\x57\x20\xa6\x7b\xa6\xe0\xb7\x9a\x2a\x68\x90\x1f\xd0\x19\x94\xa6\x82\xa3\xfd\xcd\xae\x79\x27\x95\x90\xa0\x0c\x05\x8d\xbe\x64\x0d\x73\x59\x36\x82\x0c\x0f\x2c\xb2\xda\x28\xca\x4b\xd4\x3e\x7e\x69\x29\x64\x19\xd2\xa0\xce\x94\x58\x14\x46\x56\x7f\xb8\x7f\xa5\x7f\x3f\x82\xdd\xcc\xa9\x5a\xcc\xb6\xcf\x25\x36\x06\x14\xff\xf7\x92\xb7\xf6\xf5\xd7\x07\x7c\xfb\xfb\x3f\x6e\xff\xf3\xf3\xed\xdf\xef\xf2\xdb\xfd\x4f\x3f\x4e\x5e\x37\xfa\x55\x70\xec\x96\x2f\xe0\x48\x39\x35\x54\xf0\x71\x7d\x34\x42\xbe\xf4\xff\xbd\x8c\x0b\xe3\xa2\x68\x81\x31\x9b\xac\x7d\xc4\x4c\xc3\x54\x66\x0e\xe6\x49\xa8\xc7\x98\xcc\x23\xd8\x07\xc9\xdc\xaf\xef\x90\x79\x2a\xce\x59\xb0\xba\x8a\x5a\x70\x80\xfa\x20\x61\xba\xe5\xb7\xb1\x9f\x06\xa2\xc0\xc4\x5d\xb6\x83\xfa\x30\x8f\x6d\x96\xdf\x46\xe0\x2e\x6a\xc4\x04\x1e\xa0\x3e\x48\xe0\x6e\xf9\xeb\x04\xde\x0d\x42\xbb\x79\x44\x5f\x9f\x6f\x9b\xbf\x2f\x2d\xcd\x20\xbd\x8e\x8a\xc5\x5f\x2b\xc4\x24\xe6\xb9\xd4\xe9\x8a\x39\x7e\x7d\x8e\x0a\xf5\x68\xb2\x00\xc9\xc4\xa5\xe5\xdc\xad\xb3\x0e\xa0\x02\x6e\xd0\xa8\xa6\x2c\x43\x87\x9a\xb2\x62\xae\x75\xc1\xe1\x5f\x0d\x89\x07\xeb\x61\x96\x7d\x9b\x87\x77\x8b\x4e\xfb\x7e\xf2\xcb\xef\x14\xe3\x7b\x8f\x2c\xe3\x7b\x22\xb8\x81\x67\xd3\x0a\x15\x5e\xba\x53\x81\x20\x8f\xa0\x8e\x94\x41\x2a\x06\x56\x9d\xa7\x7b\x54\xc6\xa8\x36\xb9\x50\x79\x41\x89\x71\xe2\x33\x7c\x00\x76\x15\x05\x82\xc9\x09\xf2\xa3\x12\x55\x94\xca\x31\xef\x24\xd1\x4e\x42\x43\x04\x4f\x94\xdc\x60\x55\x82\x5b\xb3\x33\xe0\x05\x76\x7c\x6f\x8d\xa8\xd6\xaf\xfd\xce\x41\x10\x11\x2c\x73\x5c\x14\x13\x3e\xb0\x52\xf8\x82\x6e\x32\x44\x0d\x54\xda\x2d\x50\x86\x6a\x4e\x7f\xab\xe1\x9f\x3d\x88\x51\x35\xcc\xe9\x16\x4a\xc8\xed\x09\x97\x4a\xd4\x32\x97\x58\x35\x1b\x29\xac\x6c\x44\x44\x55\x61\xbe\xd5\xee\x5a\x23\x47\x82\xe6\x17\x71\x3e\xb3\xb7\x6c\xbf\x86\xfd\x6a\x5c\x6d\xc2\x96\x47\x9a\xb8\x3c\xcb\x78\x11\x8f\x18\xf1\x98\xd1\x84\x5c\x51\x2b\x92\x1a\x02\xc2\x5b\xc1\x09\x5f\xd3\x22\x1d\xb8\x5c\x03\x5c\x89\x62\xca\x37\xaf\xab\x03\xa8\xc5\x96\x9c\xee\xac\xe5\xef\xfd\xce\xf5\x66\x66\x7d\x83\x29\x07\x95\x73\x5c\xc5\x74\x85\x88\x82\x02\xb8\xa1\x98\xe5\x5a\x02\x99\x80\x0f\x96\x0a\x58\x06\x25\x85\x64\xa4\xa0\xa4\xda\xa8\x4b\x38\x28\xbd\xd8\x8c\x15\x20\x81\x17\x3a\xef\x9a\x90\xf5\xd1\x13\x15\x30\x76\x24\x9b\x86\x89\x82\x87\xb2\x42\x47\xa6\xc9\x0b\x0d\x6f\x68\x86\x98\x6b\xc0\x8a\x9c\xde\x88\x2f\x2a\x4c\x79\x8a\x51\x81\x1b\x75\x91\x82\x76\x61\xec\xd3\xc5\x27\xe0\xe7\x7c\xf4\x9b\xd5\x6a\x00\x7e\xa6\x4a\xf0\x6a\x08\xd2\x69\xd9\xd9\xc2\x7f\x96\x42\xc3\xf5\xc1\xb1\xc7\x78\x18\x04\xbf\x19\xf7\xf4\x7e\xaa\x3d\x74\x14\xaa\xc2\x0d\xb3\xc3\xda\xf6\x1e\x9e\x2c\xb5\xf4\x3c\x5b\x81\xb6\x0c\x4d\x55\x8b\x59\xce\x28\x7f\xdc\xde\xc5\xe1\xd9\x28\x9c\x9f\x84\x36\x6f\x29\x80\xd0\x09\x30\x33\x27\x72\x02\xf2\x18\x40\xb7\xa1\x26\xd8\x42\x9b\x14\x27\xa7\x15\x2e\xe3\x40\x92\x44\x41\xb4\x60\xd8\xf4\xc3\x8e\x10\xe0\x9b\x2b\x42\xb4\xa9\x95\x2c\xb2\xa2\x2c\x1b\x50\x9f\x6b\x2e\x3a\x8c\xfe\x75\xac\x36\x2f\x14\x3d\x83\x4a\x2d\x37\x85\x7c\x6d\x8c\xe6\x2f\x53\xd2\x7e\xb4\x93\x9c\x80\x7e\xbd\xeb\x1a\xc9\xc0\xf6\x6b\xff\x63\x0c\xed\x97\xb9\x75\x99\x5d\xe7\x4f\x66\x12\xa6\x15\xc4\x13\xab\x54\x98\x34\x75\xaf\x02\xed\xb1\xeb\x2b\x68\x5f\xd8\xe7\x8b\xe2\xe0\x15\x76\x01\xbc\xc8\xc0\xbe\x90\xfe\xa6\x7e\x63\x7d\x9f\x97\x64\xba\xe8\x30\x20\x22\x8d\x8f\xbd\x54\x36\x5f\xd9\x8d\xbb\x58\x0b\x87\x19\xc5\x1a\xe2\x9b\x3d\xd8\xb8\x8d\xd4\xa8\x3c\xff\x92\xe8\x13\x2e\xdc\xbf\x05\x71\x3d\xa8\x5e\x9a\xe9\x3d\x5e\x84\x94\x5d\xcb\x32\xe6\x64\x64\x1f\xaf\x6e\xdf\xb3\x05\x95\xd3\x0a\x7d\x1a\x2b\xda\x08\x61\x6f\x30\x29\x94\xf9\x2e\x4d\xd3\x6b\x9c\x7a\xad\x0c\xba\xc5\x97\x7d\xd4\xdc\xdc\x49\x48\xef\xd3\x7c\x05\xa2\x94\x03\xda\xd1\x7a\x51\x6e\xa0\x6c\x7a\x1e\x77\x12\xa8\x0f\x8c\xea\x13\x14\x6b\x70\x94\x30\x82\x08\x96\xb6\x31\x9c\x63\xa2\xf4\xcd\x10\x68\xc4\xde\x54\xc4\x49\x45\xcf\x94\x41\x39\x93\xf8\x20\x04\x03\xcc\x27\x89\x42\x01\x2e\x72\xc1\xd9\x25\x01\x52\x1b\xac\xa2\xe3\x0b\x0d\xa4\x56\xd4\x5c\x72\x21\xcd\xe6\xe5\xa3\x3e\x55\xb9\xa6\xbf\xc3\x74\xef\xbd\x7a\x7d\x4f\x68\x3f\x63\x68\x36\x8c\xcf\xfe\x9c\x59\xfc\xdf\xcc\x2c\xf4\x45\x13\xf3\xb6\xda\x5a\x9b\x82\xf2\x5c\x48\xe0\xd1\xbd\xa1\x8d\x90\x79\xa9\x30\x81\x5c\x82\xa2\xc2\xa9\x8a\x49\x80\x2d\x6a\xd5\xb5\x06\x0b\x32\x9a\x96\x1c\xbb\xe3\x8e\x05\x6a\x2a\x79\x7c\xe3\xb4\xc0\x98\xf8\x66\xaf\x19\xad\xa8\x7f\xd3\x38\xbc\x36\xa1\x5e\xeb\x6a\x35\x77\x89\x16\x28\xcf\x92\x42\x76\xa0\x43\x08\x37\x08\x09\x9d\xc1\x09\xab\x15\xa9\xa3\xdd\x98\x47\x4f\x7e\x72\xf5\x0d\x4e\xbe\x26\xc7\xea\x2d\xbd\x9b\x9e\x91\xbd\x13\x7e\x55\xe9\x35\x67\x63\xef\xad\x7e\xdc\x9b\xaa\xd6\xd1\x26\xae\x85\xe1\x3a\xd4\x80\x8c\xa0\xcb\xf3\xe1\xec\x0f\x11\xa1\x27\x36\x6a\xc1\x1d\xb6\x49\x88\xe3\xfd\x4a\x89\xb1\xf3\xbd\xa3\x7e\x72\x45\x60\xe1\x10\xc1\x35\xd5\x06\x38\x71\x0f\x62\x9d\x48\x07\xba\x38\xe5\x58\x2a\x25\xdc\x77\xa5\x75\x5d\x2d\x14\x2e\xfd\xa3\x18\x77\x6f\x92\xbc\x57\xfb\xab\x03\xdf\x45\x14\x2e\x88\x90\x1e\xd3\xa4\x8b\xb1\x36\xcd\xce\x46\x17\x81\x3a\xd4\x17\x32\x9e\x84\x7a\x6c\x12\x52\x41\xdd\x91\x63\x37\x43\x59\x71\xf9\x60\x36\x14\x1c\x08\xb8\x4e\xcc\x6d\xd0\xe8\x2d\x84\xf0\xe9\x7d\x0f\xe4\x3d\x59\xa7\x1a\x1f\x66\x07\x18\xae\x44\xdb\x64\x06\x75\x76\xe7\xfb\x78\xc1\xa0\xc0\x28\x3a\x3b\x89\x18\x4a\x29\x3b\xe3\x83\xfe\x9c\xf3\x7a\x43\x2b\x10\xb5\x33\x38\xa5\x54\x4b\x58\x99\xf5\xf5\xd6\xce\x76\xd3\x9e\x1e\xb2\xee\x39\x44\x5c\xc8\x82\x9c\x7b\xd0\x83\x75\xae\xd5\x4d\x01\xa2\x6e\x92\x92\x1e\x81\x17\xed\x89\x4b\x52\x2e\x55\x20\x19\x25\x58\xc7\xea\x95\x2b\x66\xce\xb5\x2c\xb0\x81\xbc\xbf\x4e\xb3\xa6\x42\x0c\x94\x86\x12\x2b\xcc\x18\x30\xaa\xab\x94\x52\x0b\x15\xc0\xb0\x33\xd7\x44\xfd\xa6\x45\x3f\x62\xca\x6a\x05\x39\x26\x09\xf3\xf9\xde\x52\x9c\x1a\xe1\x0c\x5e\x69\x4b\x56\xf8\x39\x1f\x96\x6d\x41\x22\xbb\xb6\x45\x12\xaa\x70\x97\x5a\x37\x8d\x5f\xd4\x95\xa3\xd8\xe9\xf6\xc5\xed\x91\x2a\x6d\xba\x9e\x58\xc8\xfe\xd7\x34\xa8\xbf\x78\xe7\x0c\xa9\xa3\x69\xcb\xeb\xba\xaa\x64\x5d\xc3\x10\x70\x07\x67\xfb\x11\xa3\x18\xa3\xda\xbe\x27\xb2\x4e\x9d\x94\xa2\x0a\x2a\x11\x3b\x5a\x76\xe8\x2f\x5d\x87\x0e\xd4\x46\x97\x4d\x46\xf0\x1d\x7d\x7c\x16\x05\x38\xa0\x4b\xe0\xa0\x28\xc9\x27\xde\xe0\x89\x2e\x4b\xd8\x77\x9a\xdf\x5e\xef\xd9\x5d\x9a\x11\x8c\x76\xc5\xed\x16\xee\x4d\x04\xef\xf8\x48\x89\x3c\x57\x86\xba\x26\xee\x34\xad\x79\x25\x4d\x34\x2b\xb4\x08\x4f\x94\x17\xe2\x69\x7d\x46\xdd\x40\xdb\x92\x61\x02\xb3\x2c\x7c\xad\xa2\xb5\x51\x98\x72\xb3\xfa\x94\x74\xae\x16\xa9\xe0\x08\x0a\xf8\x32\xca\x65\xe1\x6e\x35\xf3\x77\xac\x31\xd9\xe2\x12\xf6\x10\x5a\x36\x6d\xdb\x07\x0c\xab\xaf\x35\xfe\x15\x75\xbf\x33\xdc\x84\x4a\xb7\x25\xc2\xa2\x07\x98\x5a\xcf\x61\x35\xbf\xb5\x02\x57\x99\x0a\xaa\x89\x02\x03\xe3\xca\xe3\x8d\xa8\xa9\x8b\x05\x3d\x21\xec\x05\xe8\xb1\xef\xa6\xa3\x81\x1a\x9d\x31\xab\x13\xa6\xaf\x6f\x3a\xaf\xf6\xb5\x7f\x09\xc8\xb3\x8f\x06\xac\xab\xa9\x21\x9b\x0e\x60\x1b\xd4\xe2\x49\x97\x13\x7a\xa8\x5c\xc8\xed\xa7\xa3\xf1\x0b\x08\xfb\xf8\x6c\x8e\x4a\x5c\x6d\x15\x3d\x93\xaf\x6b\x20\x67\x33\x90\x7d\x82\xb8\x58\x1f\x78\xda\x8d\xe5\x4f\x16\x17\xed\xfe\xaf\xbf\x92\xe5\xb1\xea\xc3\x38\x57\xb8\x19\x75\xb5\x4f\x36\xb1\xf7\x3e\xd4\x76\xfc\xb7\x23\x8e\xf9\x91\x86\x6b\x16\x82\x8d\xc1\xe4\x94\x34\x36\x59\xd9\xbd\x5e\x91\x65\x16\xc3\x3d\x67\x18\xea\xa1\x36\x88\x42\x29\x17\xd4\xfe\x37\x22\xd5\x1f\xdd\xaf\xbf\x9f\x0f\xf6\x9f\x6a\x45\x3f\x07\x6a\xa1\xa2\x73\xcd\x6b\x3c\x2f\xe1\x52\xf6\x27\xb0\xeb\x07\x9b\x6b\x91\x0c\x9d\xe6\xea\xa1\xfe\x34\xd7\x47\x9b\x6b\x76\x54\x6e\x99\x6d\x39\x23\x0f\x69\x32\xf9\x3e\x5f\x8f\xb1\x9f\xb2\x31\x07\x73\x7c\x20\xed\xeb\x4e\xbc\x4c\xf9\x4e\x6a\x66\x8b\xf6\x4a\x0c\x4b\xbe\x61\xfe\xb8\xfb\x29\x50\x29\x86\xee\xdd\xbe\x53\x89\xb5\xc1\x25\x25\xb7\x4d\x67\xe3\x87\x41\xbb\xcb\xef\x3b\xfd\x31\x62\xc0\x5f\x7c\xed\xd9\xc8\xc9\x2f\x8b\x33\x9c\x6f\xd3\x63\xe9\xee\x4b\xcd\xfd\x44\x3f\x33\x90\xee\xba\xbb\x95\xb0\xf7\x49\x4d\xad\xeb\x1b\xd0\xf9\xa1\xf8\xf0\x2d\xa6\xe7\x9e\xce\xce\xfe\xdb\x7e\x5b\xbb\x7b\xd9\xfd\x37\x00\x00\xff\xff\x8f\xfe\xaa\xe6\xc5\x40\x00\x00") +var _dataConfig_schema_v35Json = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x1b\xcb\x6e\xe4\xb8\xf1\xde\x5f\x21\x70\xf7\xb6\x7e\x2c\x90\x4d\x80\xcc\x2d\xc7\x9c\x92\x73\x8c\x1e\x81\x4d\x55\xab\xb9\xa6\x48\x2e\x49\xf5\xb8\x77\xe0\x7f\x0f\xf4\x34\x25\xf1\x25\xb7\x3c\xf6\x60\xe7\x64\xb7\x54\x55\xac\x17\xeb\x45\xea\xeb\x2e\xcb\xd0\xcf\x9a\x9c\xa0\xc2\xe8\x53\x86\x4e\xc6\xc8\x4f\xf7\xf7\xbf\x6b\xc1\x6f\xbb\xa7\x77\x42\x95\xf7\x85\xc2\x47\x73\xfb\xeb\x6f\xf7\xdd\xb3\x9f\xd0\x4d\x83\x47\x8b\x06\x85\x08\x7e\xa4\x65\xde\xbd\xc9\xcf\x7f\xbb\xfb\xfb\x5d\x83\xde\x81\x98\x8b\x84\x06\x48\x1c\x7e\x07\x62\xba\x67\x0a\xfe\xa8\xa9\x82\x06\xf9\x01\x9d\x41\x69\x2a\x38\xda\xdf\xec\x9a\x77\x52\x09\x09\xca\x50\xd0\xe8\x53\xd6\x30\x97\x65\x23\xc8\xf0\xc0\x22\xab\x8d\xa2\xbc\x44\xed\xe3\xe7\x96\x42\x96\x21\x0d\xea\x4c\x89\x45\x61\x64\xf5\xa7\xfb\x17\xfa\xf7\x23\xd8\xcd\x9c\xaa\xc5\x6c\xfb\x5c\x62\x63\x40\xf1\xff\x2e\x79\x6b\x5f\x7f\x7e\xc0\xb7\x7f\xfe\xeb\xf6\x7f\xbf\xde\xfe\xf3\x2e\xbf\xdd\xff\xf2\xf3\xe4\x75\xa3\x5f\x05\xc7\x6e\xf9\x02\x8e\x94\x53\x43\x05\x1f\xd7\x47\x23\xe4\x73\xff\xdf\xf3\xb8\x30\x2e\x8a\x16\x18\xb3\xc9\xda\x47\xcc\x34\x4c\x65\xe6\x60\xbe\x08\xf5\x18\x93\x79\x04\x7b\x27\x99\xfb\xf5\x1d\x32\x4f\xc5\x39\x0b\x56\x57\x51\x0b\x0e\x50\xef\x24\x4c\xb7\xfc\x36\xf6\xd3\x40\x14\x98\xb8\xcb\x76\x50\xef\xe6\xb1\xcd\xf2\xdb\x08\xdc\x45\x8d\x98\xc0\x03\xd4\x3b\x09\xdc\x2d\x7f\x9d\xc0\xbb\x41\x68\x37\x8f\xe8\xf3\xd3\x6d\xf3\xf7\xb9\xa5\x19\xa4\xd7\x51\xb1\xf8\x6b\x85\x98\xc4\x3c\x97\x3a\x5d\x31\xc7\xaf\xcf\x51\xa1\x1e\x4d\x16\x20\x99\xb8\xb4\x9c\xbb\x75\xd6\x01\x54\xc0\x0d\x1a\xd5\x94\x65\xe8\x50\x53\x56\xcc\xb5\x2e\x38\xfc\xa7\x21\xf1\x60\x3d\xcc\xb2\xaf\xf3\xf0\x6e\xd1\x69\xdf\x4f\x7e\xf9\x9d\x62\x7c\xef\x91\x65\x7c\x4f\x04\x37\xf0\x64\x5a\xa1\xc2\x4b\x77\x2a\x10\xe4\x11\xd4\x91\x32\x48\xc5\xc0\xaa\xf3\x74\x8f\xca\x18\xd5\x26\x17\x2a\x2f\x28\x31\x4e\x7c\x86\x0f\xc0\xae\xa2\x40\x30\x39\x41\x7e\x54\xa2\x8a\x52\x39\xe6\x9d\x24\xda\x49\x68\x88\xe0\x89\x92\x1b\xac\x4a\x70\x6b\x76\x06\xbc\xc0\x8e\xef\xad\x11\xd5\xfa\xb5\xdf\x39\x08\x22\x82\x65\x8e\x8b\x62\xc2\x07\x56\x0a\x5f\xd0\x4d\x86\xa8\x81\x4a\xbb\x05\xca\x50\xcd\xe9\x1f\x35\xfc\xbb\x07\x31\xaa\x86\x39\xdd\x42\x09\xb9\x3d\xe1\x52\x89\x5a\xe6\x12\xab\x66\x23\x85\x95\x8d\x88\xa8\x2a\xcc\xb7\xda\x5d\x6b\xe4\x48\xd0\xfc\x22\xce\x67\xf6\x96\xed\xd7\xb0\x5f\x8d\xab\x4d\xd8\xf2\x48\x13\x97\x67\x19\x2f\xe2\x11\x23\x1e\x33\x9a\x90\x2b\x6a\x45\x52\x43\x40\x78\x2b\x38\xe1\x6b\x5a\xa4\x03\x97\x6b\x80\x2b\x51\x4c\xf9\xe6\x75\x75\x00\xb5\xd8\x92\xd3\x9d\xb5\xfc\xbd\xdf\xb9\xde\xcc\xac\x6f\x30\xe5\xa0\x72\x8e\xab\x98\xae\x10\x51\x50\x00\x37\x14\xb3\x5c\x4b\x20\x13\xf0\xc1\x52\x01\xcb\xa0\xa4\x90\x8c\x14\x94\x54\x1b\x75\x09\x07\xa5\x67\x9b\xb1\x02\x24\xf0\x42\xe7\x5d\x13\xb2\x3e\x7a\xa2\x02\xc6\x8e\x64\xd3\x30\x51\xf0\x50\x56\xe8\xc8\x34\x79\xa1\xe1\x0d\xcd\x10\x73\x0d\x58\x91\xd3\x2b\xf1\x45\x85\x29\x4f\x31\x2a\x70\xa3\x2e\x52\xd0\x2e\x8c\x7d\xb8\xf8\x04\xfc\x9c\x8f\x7e\xb3\x5a\x0d\xc0\xcf\x54\x09\x5e\x0d\x41\x3a\x2d\x3b\x5b\xf8\x4f\x52\x68\xb8\x3e\x38\xf6\x18\x0f\x83\xe0\x37\xe3\x9e\xde\x4f\xb5\x87\x8e\x42\x55\xb8\x61\x76\x58\xdb\xde\xc3\x93\xa5\x96\x9e\x67\x2b\xd0\x96\xa1\xa9\x6a\x31\xcb\x19\xe5\x8f\xdb\xbb\x38\x3c\x19\x85\xf3\x93\xd0\xe6\x35\x05\x10\x3a\x01\x66\xe6\x44\x4e\x40\x1e\x03\xe8\x36\xd4\x04\x5b\x68\x93\xe2\xe4\xb4\xc2\x65\x1c\x48\x92\x28\x88\x16\x0c\x9b\x7e\xd8\x11\x02\x7c\x75\x45\x88\x36\xb5\x92\x45\x56\x94\x65\x03\xea\x73\xcd\x45\x87\xd1\xbf\x8e\xd5\xe6\x85\xa2\x67\x50\xa9\xe5\xa6\x90\x2f\x8d\xd1\xfc\x65\x4a\xda\x8f\x76\x92\x13\xd0\xcf\x77\x5d\x23\x19\xd8\x7e\xed\x7f\x8c\xa1\xfd\x32\xb7\x2e\xb3\xeb\xfc\xc9\x4c\xc2\xb4\x82\x78\x62\x95\x0a\x93\xa6\xee\x55\xa0\x3d\x76\x7d\x01\xed\x0b\xfb\x7c\x51\x1c\xbc\xc0\x2e\x80\x17\x19\xd8\x17\xd2\x5f\xd5\x6f\xac\xef\xf3\x92\x4c\x17\x1d\x06\x44\xa4\xf1\xb1\x97\xca\xe6\x0b\xbb\x71\x17\x6b\xe1\x30\xa3\x58\x43\x7c\xb3\x07\x1b\xb7\x91\x1a\x95\xe7\xdf\x12\x7d\xc2\x85\xfb\x8f\x20\xae\x07\xd5\x4b\x33\xbd\xc7\x8b\x90\xb2\x6b\x59\xc6\x9c\x8c\xec\xe3\xd5\xed\x5b\xb6\xa0\x72\x5a\xa1\x4f\x63\x45\x1b\x21\xec\x0d\x26\x85\x32\xdf\xa4\x69\x7a\x89\x53\x2f\x95\x41\xb7\xf8\xb2\x8f\x9a\x9b\x3b\x09\xe9\x6d\x9a\xaf\x40\x94\x72\x40\x3b\x5a\x2f\xca\x0d\x94\x4d\xcf\xe3\x4e\x02\xf5\x81\x51\x7d\x82\x62\x0d\x8e\x12\x46\x10\xc1\xd2\x36\x86\x73\x4c\x94\xbe\x19\x02\x8d\xd8\xab\x8a\x38\xa9\xe8\x99\x32\x28\x67\x12\x1f\x84\x60\x80\xf9\x24\x51\x28\xc0\x45\x2e\x38\xbb\x24\x40\x6a\x83\x55\x74\x7c\xa1\x81\xd4\x8a\x9a\x4b\x2e\xa4\xd9\xbc\x7c\xd4\xa7\x2a\xd7\xf4\x4f\x98\xee\xbd\x17\xaf\xef\x09\xed\x67\x0c\xcd\x86\xf1\xd9\x8f\x99\xc5\x5f\x66\x66\xa1\x2f\x9a\x98\xd7\xd5\xd6\xda\x14\x94\xe7\x42\x02\x8f\xee\x0d\x6d\x84\xcc\x4b\x85\x09\xe4\x12\x14\x15\x4e\x55\x4c\x02\x6c\x51\xab\xae\x35\x58\x90\xd1\xb4\xe4\xd8\x1d\x77\x2c\x50\x53\xc9\xe3\x2b\xa7\x05\xc6\xc4\x37\x7b\xcd\x68\x45\xfd\x9b\xc6\xe1\xb5\x09\xf5\x5a\x57\xab\xb9\x4b\xb4\x40\x79\x96\x14\xb2\x03\x1d\x42\xb8\x41\x48\xe8\x0c\x4e\x58\xad\x48\x1d\xed\xc6\x3c\x7a\xf2\x93\xab\x6f\x70\xf2\x35\x39\x56\x6f\xe9\xdd\xf4\x8c\xec\x9d\xf0\xab\x4a\xaf\x39\x1b\x7b\x6f\xf5\xe3\xde\x54\xb5\x8e\x36\x71\x2d\x0c\xd7\xa1\x06\x64\x04\x5d\x9e\x0f\x67\xdf\x45\x84\x9e\xd8\xa8\x05\x77\xd8\x26\x21\x8e\xf7\x2b\x25\xc6\xce\xb7\x8e\xfa\xc9\x15\x81\x85\x43\x04\xd7\x54\x1b\xe0\xc4\x3d\x88\x75\x22\x1d\xe8\xe2\x94\x63\xa9\x94\x70\xdf\x95\xd6\x75\xb5\x50\xb8\xf4\x8f\x62\xdc\xbd\x49\xf2\x5e\xed\xaf\x0e\x7c\x13\x51\xb8\x20\x42\x7a\x4c\x93\x2e\xc6\xda\x34\x3b\x1b\x5d\x04\xea\x50\x5f\xc8\xf8\x22\xd4\x63\x93\x90\x0a\xea\x8e\x1c\xbb\x19\xca\x8a\xcb\x07\xb3\xa1\xe0\x40\xc0\x75\x62\x6e\x83\x46\x6f\x21\x84\x4f\xef\x7b\x20\xef\xc9\x3a\xd5\xf8\x30\x3b\xc0\x70\x25\xda\x26\x33\xa8\xb3\x3b\xdf\xc7\x0b\x06\x05\x46\xd1\xd9\x49\xc4\x50\x4a\xd9\x19\x1f\xf4\xc7\x9c\xd7\x1b\x5a\x81\xa8\x9d\xc1\x29\xa5\x5a\xc2\xca\xac\xaf\xb7\x76\xb6\x9b\xf6\xf4\x90\x75\xcf\x21\xe2\x42\x16\xe4\xdc\x83\x1e\xac\x73\xad\x6e\x0a\x10\x75\x93\x94\xf4\x08\xbc\x68\x4f\x5c\x92\x72\xa9\x02\xc9\x28\xc1\x3a\x56\xaf\x5c\x31\x73\xae\x65\x81\x0d\xe4\xfd\x75\x9a\x35\x15\x62\xa0\x34\x94\x58\x61\xc6\x80\x51\x5d\xa5\x94\x5a\xa8\x00\x86\x9d\xb9\x26\xea\x37\x2d\xfa\x11\x53\x56\x2b\xc8\x31\x49\x98\xcf\xf7\x96\xe2\xd4\x08\x67\xf0\x4a\x5b\xb2\xc2\x4f\xf9\xb0\x6c\x0b\x12\xd9\xb5\x2d\x92\x50\x85\xbb\xd4\xba\x69\xfc\xa2\xae\x1c\xc5\x4e\xb7\x2f\x6e\x8f\x54\x69\xd3\xf5\xc4\x42\xf6\xbf\xa6\x41\xfd\xd9\x3b\x67\x48\x1d\x4d\x5b\x5e\xd7\x55\x25\xeb\x1a\x86\x80\x3b\x38\xdb\x8f\x18\xc5\x18\xd5\xf6\x3d\x91\x75\xea\xa4\x14\x55\x50\x89\xd8\xd1\xb2\x43\x7f\xe9\x3a\x74\xa0\x36\xba\x6c\x32\x82\xef\xe8\xe3\xa3\x28\xc0\x01\x5d\x02\x07\x45\x49\x3e\xf1\x06\x4f\x74\x59\xc2\xbe\xd1\xfc\xf6\x7a\xcf\xee\xd2\x8c\x60\xb4\x2b\x6e\xb7\x70\x6f\x22\x78\xc7\x47\x4a\xe4\xb9\x32\xd4\x35\x71\xa7\x69\xcd\x2b\x69\xa2\x59\xa1\x45\xf8\x42\x79\x21\xbe\xac\xcf\xa8\x1b\x68\x5b\x32\x4c\x60\x96\x85\xaf\x55\xb4\x36\x0a\x53\x6e\x56\x9f\x92\xce\xd5\x22\x15\x1c\x41\x01\x5f\x46\xb9\x2c\xdc\xad\x66\xfe\x8e\x35\x26\x5b\x5c\xc2\x1e\x42\xcb\xa6\x6d\x7b\x87\x61\xf5\xb5\xc6\xbf\xa2\xee\x77\x86\x9b\x50\xe9\xb6\x44\x58\xf4\x00\x53\xeb\x39\xac\xe6\xb7\x56\xe0\x2a\x53\x41\x35\x51\x60\x60\x5c\x79\xbc\x11\x35\x75\xb1\xa0\x27\x84\xbd\x00\x3d\xf6\xdd\x74\x34\x50\xa3\x33\x66\x75\xc2\xf4\xf5\x55\xe7\xd5\xbe\xf6\x2f\x01\x79\xf6\xd1\x80\x75\x35\x35\x64\xd3\x01\x6c\x83\x5a\x3c\xe5\x6a\x48\xd2\x05\x86\x1e\x2a\x17\x72\xfb\x09\x6a\xfc\x92\xc2\x3e\x3e\xbf\xa3\x12\x57\x5b\x45\xd8\xe4\x2b\x1d\xc8\xd9\x30\x64\x1f\x20\x76\xd6\x07\x9e\x76\xab\xf9\x83\xc5\x4e\xbb\x47\xec\xaf\x6d\x79\xac\xfa\x30\xce\x1e\x6e\x46\x5d\xed\x93\x4d\xec\xdd\x18\xdb\xf1\xdf\x8e\x41\xe6\xc7\x1e\xae\x79\x09\x36\x06\x93\x53\xd2\x68\x65\x65\x87\x7b\x45\x26\x5a\x0c\x00\x9d\xa1\xaa\x87\xfa\x11\xa9\x56\x44\xaa\xef\xdd\xaf\xbf\x9d\x0f\xf6\x9f\x73\x45\x3f\x19\x6a\xa1\xa2\xb3\xcf\x6b\x3c\x2f\xe1\xe2\xf6\x07\xb0\xeb\x3b\x9b\x6b\x91\x0c\x9d\xe6\xea\xa1\x7e\x98\xeb\xbd\xcd\x35\x3b\x4e\xb7\xcc\xb6\x9c\xa3\x87\x34\x99\x7c\xe7\xaf\xc7\xd8\x4f\xd9\x98\x83\x39\x3e\xa2\xf6\x75\x30\x5e\xa6\x7c\xa7\x39\xb3\x45\x7b\x25\x86\x25\xdf\x30\x7f\xdc\xfd\x12\xa8\x14\x43\x77\x73\xdf\xa8\xc4\xda\xe0\x22\x93\xdb\xa6\xb3\x11\xc5\xa0\xdd\xe5\x37\xa0\xfe\x18\x31\xe0\x2f\xbe\x08\x6d\xe4\xe4\x97\xc5\x39\xcf\xd7\xe9\xd1\x75\xf7\x35\xe7\x7e\xa2\x9f\x19\x48\x77\x25\xde\x4a\xd8\xfb\xa4\xc6\xd7\xf5\x9d\xe8\xfc\xe0\x7c\xf8\x5e\xd3\x73\x97\x67\x67\xff\x6d\xbf\xbf\xdd\x3d\xef\xfe\x1f\x00\x00\xff\xff\x44\x5f\xd4\xbd\xe9\x40\x00\x00") func dataConfig_schema_v35JsonBytes() ([]byte, error) { return bindataRead( diff --git a/cli/compose/schema/data/config_schema_v3.5.json b/cli/compose/schema/data/config_schema_v3.5.json index d3352c7d52..2c48a100f0 100644 --- a/cli/compose/schema/data/config_schema_v3.5.json +++ b/cli/compose/schema/data/config_schema_v3.5.json @@ -428,6 +428,7 @@ "id": "#/definitions/network", "type": ["object", "null"], "properties": { + "name": {"type": "string"}, "driver": {"type": "string"}, "driver_opts": { "type": "object", diff --git a/cli/compose/types/types.go b/cli/compose/types/types.go index c68187efe1..852c400060 100644 --- a/cli/compose/types/types.go +++ b/cli/compose/types/types.go @@ -319,6 +319,7 @@ type UlimitsConfig struct { // NetworkConfig for a network type NetworkConfig struct { + Name string Driver string DriverOpts map[string]string `mapstructure:"driver_opts"` Ipam IPAMConfig