| ... | ... |
@@ -4,6 +4,7 @@ import ( |
| 4 | 4 |
"fmt" |
| 5 | 5 |
"os" |
| 6 | 6 |
"sort" |
| 7 |
+ "strings" |
|
| 7 | 8 |
"time" |
| 8 | 9 |
|
| 9 | 10 |
"github.com/docker/docker/api/types" |
| ... | ... |
@@ -56,7 +57,7 @@ func convertService( |
| 56 | 56 |
) (swarm.ServiceSpec, error) {
|
| 57 | 57 |
name := namespace.Scope(service.Name) |
| 58 | 58 |
|
| 59 |
- endpoint, err := convertEndpointSpec(service.Ports) |
|
| 59 |
+ endpoint, err := convertEndpointSpec(service.Deploy.EndpointMode, service.Ports) |
|
| 60 | 60 |
if err != nil {
|
| 61 | 61 |
return swarm.ServiceSpec{}, err
|
| 62 | 62 |
} |
| ... | ... |
@@ -373,7 +374,7 @@ func (a byPublishedPort) Len() int { return len(a) }
|
| 373 | 373 |
func (a byPublishedPort) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
|
| 374 | 374 |
func (a byPublishedPort) Less(i, j int) bool { return a[i].PublishedPort < a[j].PublishedPort }
|
| 375 | 375 |
|
| 376 |
-func convertEndpointSpec(source []composetypes.ServicePortConfig) (*swarm.EndpointSpec, error) {
|
|
| 376 |
+func convertEndpointSpec(endpointMode string, source []composetypes.ServicePortConfig) (*swarm.EndpointSpec, error) {
|
|
| 377 | 377 |
portConfigs := []swarm.PortConfig{}
|
| 378 | 378 |
for _, port := range source {
|
| 379 | 379 |
portConfig := swarm.PortConfig{
|
| ... | ... |
@@ -386,7 +387,10 @@ func convertEndpointSpec(source []composetypes.ServicePortConfig) (*swarm.Endpoi |
| 386 | 386 |
} |
| 387 | 387 |
|
| 388 | 388 |
sort.Sort(byPublishedPort(portConfigs)) |
| 389 |
- return &swarm.EndpointSpec{Ports: portConfigs}, nil
|
|
| 389 |
+ return &swarm.EndpointSpec{
|
|
| 390 |
+ Mode: swarm.ResolutionMode(strings.ToLower(endpointMode)), |
|
| 391 |
+ Ports: portConfigs, |
|
| 392 |
+ }, nil |
|
| 390 | 393 |
} |
| 391 | 394 |
|
| 392 | 395 |
func convertEnvironment(source map[string]string) []string {
|
| ... | ... |
@@ -156,9 +156,10 @@ func TestConvertEndpointSpec(t *testing.T) {
|
| 156 | 156 |
Published: 80, |
| 157 | 157 |
}, |
| 158 | 158 |
} |
| 159 |
- endpoint, err := convertEndpointSpec(source) |
|
| 159 |
+ endpoint, err := convertEndpointSpec("vip", source)
|
|
| 160 | 160 |
|
| 161 | 161 |
expected := swarm.EndpointSpec{
|
| 162 |
+ Mode: swarm.ResolutionMode(strings.ToLower("vip")),
|
|
| 162 | 163 |
Ports: []swarm.PortConfig{
|
| 163 | 164 |
{
|
| 164 | 165 |
TargetPort: 8080, |
| ... | ... |
@@ -977,7 +977,7 @@ func (sbn servicesByName) Less(i, j int) bool { return sbn[i].Name < sbn[j].Name
|
| 977 | 977 |
|
| 978 | 978 |
func TestLoadAttachableNetwork(t *testing.T) {
|
| 979 | 979 |
config, err := loadYAML(` |
| 980 |
-version: "3.1" |
|
| 980 |
+version: "3.2" |
|
| 981 | 981 |
networks: |
| 982 | 982 |
mynet1: |
| 983 | 983 |
driver: overlay |
| ... | ... |
@@ -985,7 +985,9 @@ networks: |
| 985 | 985 |
mynet2: |
| 986 | 986 |
driver: bridge |
| 987 | 987 |
`) |
| 988 |
- assert.NoError(t, err) |
|
| 988 |
+ if !assert.NoError(t, err) {
|
|
| 989 |
+ return |
|
| 990 |
+ } |
|
| 989 | 991 |
|
| 990 | 992 |
expected := map[string]types.NetworkConfig{
|
| 991 | 993 |
"mynet1": {
|
| ... | ... |
@@ -1003,7 +1005,7 @@ networks: |
| 1003 | 1003 |
|
| 1004 | 1004 |
func TestLoadExpandedPortFormat(t *testing.T) {
|
| 1005 | 1005 |
config, err := loadYAML(` |
| 1006 |
-version: "3.1" |
|
| 1006 |
+version: "3.2" |
|
| 1007 | 1007 |
services: |
| 1008 | 1008 |
web: |
| 1009 | 1009 |
image: busybox |
| ... | ... |
@@ -1019,7 +1021,9 @@ services: |
| 1019 | 1019 |
target: 22 |
| 1020 | 1020 |
published: 10022 |
| 1021 | 1021 |
`) |
| 1022 |
- assert.NoError(t, err) |
|
| 1022 |
+ if !assert.NoError(t, err) {
|
|
| 1023 |
+ return |
|
| 1024 |
+ } |
|
| 1023 | 1025 |
|
| 1024 | 1026 |
expected := []types.ServicePortConfig{
|
| 1025 | 1027 |
{
|
| ... | ... |
@@ -1088,7 +1092,7 @@ services: |
| 1088 | 1088 |
|
| 1089 | 1089 |
func TestLoadExpandedMountFormat(t *testing.T) {
|
| 1090 | 1090 |
config, err := loadYAML(` |
| 1091 |
-version: "3.1" |
|
| 1091 |
+version: "3.2" |
|
| 1092 | 1092 |
services: |
| 1093 | 1093 |
web: |
| 1094 | 1094 |
image: busybox |
| ... | ... |
@@ -1100,7 +1104,9 @@ services: |
| 1100 | 1100 |
volumes: |
| 1101 | 1101 |
foo: {}
|
| 1102 | 1102 |
`) |
| 1103 |
- assert.NoError(t, err) |
|
| 1103 |
+ if !assert.NoError(t, err) {
|
|
| 1104 |
+ return |
|
| 1105 |
+ } |
|
| 1104 | 1106 |
|
| 1105 | 1107 |
expected := types.ServiceVolumeConfig{
|
| 1106 | 1108 |
Type: "volume", |
| ... | ... |
@@ -2,6 +2,7 @@ |
| 2 | 2 |
// sources: |
| 3 | 3 |
// data/config_schema_v3.0.json |
| 4 | 4 |
// data/config_schema_v3.1.json |
| 5 |
+// data/config_schema_v3.2.json |
|
| 5 | 6 |
// DO NOT EDIT! |
| 6 | 7 |
|
| 7 | 8 |
package schema |
| ... | ... |
@@ -89,7 +90,7 @@ func dataConfig_schema_v30Json() (*asset, error) {
|
| 89 | 89 |
return a, nil |
| 90 | 90 |
} |
| 91 | 91 |
|
| 92 |
-var _dataConfig_schema_v31Json = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x5b\xcd\x73\xdc\x28\x16\xbf\xf7\x5f\xa1\x52\x72\x8b\x3f\xb2\xb5\xa9\xad\xda\xdc\xf6\xb8\xa7\x99\xf3\xb8\x3a\x2a\x5a\x7a\xad\x26\x46\x40\x00\xb5\xdd\x49\xf9\x7f\x9f\xd2\x67\x03\x02\x81\xba\xe5\x38\x33\x35\x27\xdb\xe2\xf7\x80\xf7\xfd\x1e\xe0\x1f\x9b\x24\x49\xdf\xcb\xfc\x00\x15\x4a\x3f\x27\xe9\x41\x29\xfe\xf9\xfe\xfe\xab\x64\xf4\xb6\xfb\x7a\xc7\x44\x79\x5f\x08\xb4\x57\xb7\x1f\x3f\xdd\x77\xdf\xde\xa5\x37\x0d\x1d\x2e\x1a\x92\x9c\xd1\x3d\x2e\xb3\x6e\x24\x3b\xfe\xfb\xee\x5f\x77\x0d\x79\x07\x51\x27\x0e\x0d\x88\xed\xbe\x42\xae\xba\x6f\x02\xbe\xd5\x58\x40\x43\xfc\x90\x1e\x41\x48\xcc\x68\xba\xbd\xd9\x34\x63\x5c\x30\x0e\x42\x61\x90\xe9\xe7\xa4\xd9\x5c\x92\x8c\x90\xe1\x83\x36\xad\x54\x02\xd3\x32\x6d\x3f\xbf\xb4\x33\x24\x49\x2a\x41\x1c\x71\xae\xcd\x30\x6e\xf5\xdd\xfd\x79\xfe\xfb\x11\x76\x63\xcf\xaa\x6d\xb6\xfd\xce\x91\x52\x20\xe8\xef\xd3\xbd\xb5\xc3\x5f\x1e\xd0\xed\xf7\xff\xdd\xfe\xf1\xf1\xf6\xbf\x77\xd9\xed\xf6\xc3\x7b\x63\xb8\x91\xaf\x80\x7d\xb7\x7c\x01\x7b\x4c\xb1\xc2\x8c\x8e\xeb\xa7\x23\xf2\xa5\xff\xed\x65\x5c\x18\x15\x45\x0b\x46\xc4\x58\x7b\x8f\x88\x04\x93\x67\x0a\xea\x89\x89\xc7\x10\xcf\x23\xec\x8d\x78\xee\xd7\x77\xf0\x6c\xb2\x73\x64\xa4\xae\x82\x1a\x1c\x50\x6f\xc4\x4c\xb7\xfc\x3a\xfa\x93\x90\x0b\x50\x61\x93\xed\x50\x6f\x66\xb1\xcd\xf2\xd7\x31\xbc\x19\x98\x9e\xc5\x76\x08\x6d\xed\x76\x83\x86\x7b\xbb\x44\xe5\x72\x2f\xbf\xac\x46\x61\x79\xa4\x54\x00\x27\xec\xd4\x7c\xf3\xc8\xa3\x03\x54\x40\x55\x3a\x8a\x20\x49\xd2\x5d\x8d\x49\x61\x4b\x94\x51\xf8\xad\x99\xe2\x41\xfb\x98\x24\x3f\xec\x48\xa6\xcd\xd3\x8e\x1b\x7f\xf9\x15\x3e\x8e\x7b\x78\x19\xc7\x73\x46\x15\x3c\xab\x96\xa9\xf9\xa5\x3b\x11\xb0\xfc\x11\xc4\x1e\x13\x88\xa5\x40\xa2\x94\x33\x22\x23\x58\xaa\x8c\x89\xac\xc0\xb9\x4a\x5f\x2c\xf2\xc9\x7c\x61\x7b\x1a\x49\xb5\xbf\xb6\x1b\xc7\x84\x69\x8e\x78\x86\x8a\xc2\xe0\x03\x09\x81\x4e\xe9\x4d\x92\x62\x05\x95\x74\xb3\x98\xa4\x35\xc5\xdf\x6a\xf8\x7f\x0f\x51\xa2\x06\x7b\xde\x42\x30\xbe\xfe\xc4\xa5\x60\x35\xcf\x38\x12\x8d\x81\xcd\x8b\x3f\xcd\x59\x55\x21\xba\x96\xd5\x2d\xe1\x23\x42\xf2\x8c\x2a\x84\x29\x88\x8c\xa2\x2a\x64\x48\x8d\xd7\x01\x2d\x64\xd6\x25\xfc\x59\x33\xda\x67\x1d\xbd\xb4\x26\x18\xb3\xff\xaa\xfa\x28\xe8\x9c\x61\x77\xd3\x34\xa6\xdd\xec\x2d\xb5\x08\x33\x09\x48\xe4\x87\x0b\xe9\x59\x85\x30\x8d\x91\x1d\x50\x25\x4e\x9c\xe1\xce\x5e\x7e\x39\x43\x00\x7a\xcc\xc6\x58\xb2\x58\x0c\x40\x8f\x58\x30\x5a\x0d\xde\x10\x13\x60\xc6\x20\xdf\xd0\x3f\x73\x26\xc1\x16\x8c\xc5\xa0\x3e\x34\xb2\x6a\xc8\x64\xa0\x78\x18\x18\xbf\x49\x52\x5a\x57\x3b\x10\x4d\x0d\x6b\x20\xf7\x4c\x54\xa8\xd9\xec\xb0\xb6\x36\x6c\x48\xda\x61\x79\xba\x00\x75\x1e\x9a\xb4\x8e\x48\x46\x30\x7d\x5c\xdf\xc4\xe1\x59\x09\x94\x1d\x98\x54\xf1\x31\x5c\x23\x3f\x00\x22\xea\x90\x1f\x20\x7f\x9c\x21\xd7\x51\x06\x35\x93\x2a\xc6\xc8\x71\x85\xca\x30\x88\xe7\x21\x08\x41\x3b\x20\x17\xf1\xb9\xaa\xf0\xb5\x69\x59\x59\x36\x50\x9f\xc5\x4d\x2a\x97\x7e\x38\x94\xf3\x0b\x81\x8f\x20\x62\x13\x38\xe3\xe7\x82\xcb\x1e\x0c\x17\x20\x49\xb8\xfa\x34\xa0\x5f\xee\xba\xe2\x73\xc6\xab\xda\xdf\x08\x49\xb7\x76\xb9\x90\x58\x79\xdf\xf5\xc5\xe2\x30\xae\xa0\x30\xb4\x52\xa1\xbc\xa9\x1b\x04\x48\x8f\x5e\xcf\xd0\xbe\xbb\xc9\x2a\x56\xf8\x0c\x74\x02\xb6\x65\xe3\x8d\xd4\x8b\x13\x61\x72\x51\xfd\x18\xa5\xba\x60\x03\x11\xe0\xc6\xb7\xbd\xd8\x6d\x9e\xb7\x1b\x36\xb1\x16\x87\x08\x46\x12\xc2\xce\xee\x15\xa4\x31\x1b\xe6\xc7\x4f\x91\x36\xe1\xa2\xfd\xcf\x2c\xad\x87\xd4\x3b\x67\x7c\x8d\x1c\x98\xea\xbc\x95\xd6\xdd\x5c\x1b\xd9\x06\xbc\xed\x95\x4b\x78\x8e\x0b\x7f\xac\x68\x23\x84\xee\x60\x9c\x09\x35\xf1\xae\xe5\xe9\xde\x67\xc1\xba\xb8\x86\x38\x75\x4e\xf8\xdd\xe2\x13\x69\x4c\xd4\x1d\x45\x34\xf5\xbf\xa0\x7f\x84\x3d\x23\x9d\x89\x52\x0e\xb4\x42\xa2\x04\xb3\x0d\xc1\x54\x41\x09\xc2\x43\xc0\xeb\x1d\xc1\xf2\x00\xc5\x12\x1a\xc1\x14\xcb\x19\x89\x73\x0c\x67\xfb\x19\xef\x0c\xe6\x84\xdb\xab\x6b\x33\x2e\xf0\x11\x13\x28\x2d\x8e\x77\x8c\x11\x40\xd4\x48\x14\x02\x50\x91\x31\x4a\x4e\x11\x48\xa9\x90\x08\xb6\x7f\x12\xf2\x5a\x60\x75\xca\x18\x57\xab\x57\x85\xf2\x50\x65\x12\x7f\x07\xd3\xf7\xce\x56\xdf\x4f\xb4\xb5\x36\x64\x9d\x67\x25\xaf\xe5\x7e\x3e\xb3\x7d\x25\xb7\x91\xac\x16\xf9\x75\x8e\x33\x8b\xaf\xcd\x20\x37\x0f\x2e\x97\x80\x27\x0e\xdf\xab\x30\x54\x43\xcd\xba\x8a\x33\x50\xcb\x93\xcc\xd5\x65\xb5\xb5\x54\x05\xa6\x19\xe3\x40\x83\xbe\x21\x15\xe3\x59\x29\x50\x0e\x19\x07\x81\x99\x53\x14\x46\x80\x2d\x6a\x81\x9a\xf5\xa7\xd3\x48\x5c\x52\xe4\x8e\x3b\x1a\x54\x55\x7c\x7f\xe1\x21\x80\x52\x61\x67\xaf\x09\xae\xb0\xdf\x69\x1c\x56\x1b\x51\xaf\x75\xb5\x9a\xbb\x44\x9b\x29\xcf\xa2\x42\xf6\x4c\x87\x30\xdf\x20\x44\x74\x06\x07\x24\x16\xa4\x8e\xd6\x31\xf7\x9e\xfc\xe4\xea\x1b\x9c\xfb\x32\x6e\xa6\xda\xf9\x6e\xfa\x8d\x6c\x9d\xf8\x45\xa5\x97\xbd\x8d\xad\xb7\xfa\x71\x3b\x55\x2d\x83\x4d\x5c\x8b\xa1\x72\xae\x01\x19\xa1\xd3\x2b\x96\xe4\x2f\x11\xa1\x0d\x1d\xb5\x70\x87\x6e\x22\xe2\x78\xbf\x52\x64\xec\x7c\xed\xa8\x1f\x5d\x11\x68\x34\x3b\x3c\x39\xf0\x5d\x22\xc9\x38\x39\x8d\x28\x54\x76\xa1\x33\xba\x67\x89\x77\xbb\xfe\x22\xed\xa7\xb0\x42\x59\xce\xb8\x47\xca\xf1\x6c\x2c\xcd\x98\xd6\x29\xc4\x4c\x49\xe9\xf3\xfe\x27\x26\x1e\x9b\xdc\x52\x60\x77\x10\xd8\x58\x24\x0b\xee\x1e\xad\x63\xbb\x61\x02\xd7\xa5\x9a\x0e\x0d\x5e\x42\xce\x5f\xf0\xf5\x20\xef\xe5\x1b\x96\x68\x67\x5d\x3b\xb9\x72\x66\x13\xe4\xc5\x31\x9c\xba\x05\x28\x81\xad\x5b\x81\xa1\xfe\xd1\xd3\x34\xc8\x5f\xf3\xec\x5c\xe1\x0a\x58\xed\x8e\x28\x1b\xdd\x70\x7a\xa2\x54\xbb\x9c\x0c\x28\x55\x43\xda\x3a\x7d\x18\x95\x3a\xb4\xd8\x41\xc5\xc5\xe4\x1e\x01\x9c\xe0\x1c\xc9\x50\x7e\xbf\xe2\x8c\xb6\xe6\x05\x52\x90\x75\x8f\x53\x16\x55\x54\x33\xa5\x14\x47\x02\x11\x02\x04\xcb\x2a\xa6\x34\x49\x0b\x20\xe8\x74\x51\x55\xda\x92\xef\x11\x26\xb5\x80\x0c\xe5\xde\xc8\x6b\x51\x54\x8c\x62\xc5\x9c\x11\x22\x6e\xc9\x0a\x3d\x67\xc3\xb2\x2d\x24\xd4\x30\x98\xbd\x72\xec\xf1\xaa\x66\x09\x5d\x66\x5d\x56\xf4\xce\xa8\xe8\x5c\x42\x7b\x2c\x66\x58\x71\xc2\xba\x00\xd9\x44\x92\xf1\xf4\x3b\x48\x1f\x8c\xd9\x7d\xf3\x9e\x71\x46\x70\x7e\x5a\x8b\xc3\x9c\xd1\x4e\xc8\x31\x06\x71\xa5\x05\x36\xe6\xd0\x74\x18\x15\x57\x41\x67\x6d\x09\x9e\x30\x2d\xd8\xd3\x82\x05\xd7\x33\x25\x4e\x50\x0e\x56\xbc\xbb\x56\xd0\x52\x09\x84\xa9\x5a\x7c\xd9\x73\x2d\x5b\x57\x64\xf3\xd1\x3e\x03\x51\x7f\xc4\x05\xf3\xb8\x2f\xd2\xe7\xbc\x0e\x5e\x89\x54\x50\x31\xe1\x34\xc0\x15\x5e\xbb\x85\x58\x1c\x60\x2b\x64\xb5\xa8\x3b\xb4\x1e\x95\x31\xbe\x7e\x13\x1f\xbe\x27\xdb\x86\x03\x12\xe6\xa8\x5a\xcb\x3b\xa2\x6f\x15\x53\x67\x0e\x4e\xe6\x9b\xcd\xc4\xdf\x70\x86\x76\x1d\xde\x7b\x8f\x90\xf5\x8e\x7a\x7a\xb4\x69\x7d\xbf\xe6\x59\xf3\x8a\x41\x6f\x78\x10\xe0\xd1\xea\xc3\x58\x33\xdf\x8c\xb2\xda\x46\xab\xd8\x7b\x1b\xbf\xde\xfe\xdb\xf2\xdd\x3e\x79\x73\xd5\xf9\x48\x29\x94\x1f\xa2\x5a\x82\x85\x45\xe3\x15\x71\x68\xd2\xb8\x3a\xc3\x50\x8f\xfa\x27\x0a\xfd\x4d\x6c\xf6\xe7\xd9\x57\xff\xe0\x36\xf8\xd2\xb5\x45\x5d\x9c\xc7\x23\x9e\x77\xfe\x02\x3a\x7b\x6b\x55\x98\x47\xfb\x9a\x4a\xa6\xc7\x03\x73\x92\x8c\x7e\x7f\xd0\x53\x6c\xcd\x6d\xd8\x30\xc7\xff\x44\x98\xc9\x74\xee\xe2\x6f\x80\x78\x8e\xa3\xac\x45\x7b\x21\xce\x73\xbe\x62\xb0\xb9\xfb\x30\x53\x32\xcc\xbd\x13\x7a\xa5\x5c\xbb\xc2\xa5\xaa\x5b\xa7\x56\x9f\x31\x48\x77\xfa\xce\xdd\xe3\xff\x1a\xfd\xe4\xd5\x7b\xc3\x27\x3d\x4d\x8e\xaf\x7e\x98\xc7\xe8\xdd\x8b\xf5\xad\x21\x1f\x0b\xd2\xbd\xba\xd3\xa2\xfb\x56\x6f\xbd\x7c\x6a\x74\xbe\x85\xb7\x0f\xf1\x87\x37\xe9\x9e\x7b\xc5\x8d\xfe\xb3\xfd\xff\x81\xcd\xcb\xe6\xcf\x00\x00\x00\xff\xff\xea\x87\x24\xae\xb8\x34\x00\x00")
|
|
| 92 |
+var _dataConfig_schema_v31Json = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x1a\xcb\x8e\xdb\x36\xf0\xee\xaf\x10\x94\xdc\xe2\xdd\x4d\xd1\xa0\x40\x73\xeb\xb1\xa7\xf6\xdc\x85\x23\xd0\xd2\x58\x66\x96\x22\x19\x92\x72\xd6\x09\xfc\xef\x05\xf5\x32\x45\x91\x22\x6d\x2b\xd9\x45\xd1\xd3\xae\xc5\x99\xe1\xbc\x67\x38\xe4\xf7\x55\x92\xa4\x6f\x65\xbe\x87\x0a\xa5\x1f\x93\x74\xaf\x14\xff\xf8\xf0\xf0\x59\x32\x7a\xd7\x7e\xbd\x67\xa2\x7c\x28\x04\xda\xa9\xbb\xf7\x1f\x1e\xda\x6f\x6f\xd2\xb5\xc6\xc3\x85\x46\xc9\x19\xdd\xe1\x32\x6b\x57\xb2\xc3\xaf\xf7\xbf\xdc\x6b\xf4\x16\x44\x1d\x39\x68\x20\xb6\xfd\x0c\xb9\x6a\xbf\x09\xf8\x52\x63\x01\x1a\xf9\x31\x3d\x80\x90\x98\xd1\x74\xb3\x5e\xe9\x35\x2e\x18\x07\xa1\x30\xc8\xf4\x63\xa2\x99\x4b\x92\x01\xa4\xff\x60\x90\x95\x4a\x60\x5a\xa6\xcd\xe7\x53\x43\x21\x49\x52\x09\xe2\x80\x73\x83\xc2\xc0\xea\x9b\x87\x33\xfd\x87\x01\x6c\x6d\x53\x35\x98\x6d\xbe\x73\xa4\x14\x08\xfa\xf7\x94\xb7\x66\xf9\xd3\x23\xba\xfb\xf6\xc7\xdd\x3f\xef\xef\x7e\xbf\xcf\xee\x36\xef\xde\x8e\x96\xb5\x7e\x05\xec\xda\xed\x0b\xd8\x61\x8a\x15\x66\x74\xd8\x3f\x1d\x20\x4f\xdd\x7f\xa7\x61\x63\x54\x14\x0d\x30\x22\xa3\xbd\x77\x88\x48\x18\xcb\x4c\x41\x7d\x65\xe2\x29\x24\xf3\x00\xf6\x42\x32\x77\xfb\x3b\x64\x1e\x8b\x73\x60\xa4\xae\x82\x16\xec\xa1\x5e\x48\x98\x76\xfb\x65\xec\x27\x21\x17\xa0\xc2\x2e\xdb\x42\xbd\x98\xc7\xea\xed\x6f\x13\x78\xd5\x0b\x3d\x0b\xdb\x42\x18\x7b\x37\x0c\x8e\xc2\xdb\xa5\x2a\x57\x78\xf9\x75\x35\x28\xcb\xa3\xa5\x02\x38\x61\x47\xfd\xcd\xa3\x8f\x16\xa0\x02\xaa\xd2\x41\x05\x49\x92\x6e\x6b\x4c\x0a\x5b\xa3\x8c\xc2\x5f\x9a\xc4\xa3\xf1\x31\x49\xbe\xdb\x99\xcc\xa0\xd3\xac\x8f\x7e\xf9\x0d\x3e\xac\x7b\x64\x19\xd6\x73\x46\x15\x3c\xab\x46\xa8\xf9\xad\x5b\x15\xb0\xfc\x09\xc4\x0e\x13\x88\xc5\x40\xa2\x94\x33\x2a\x23\x58\xaa\x8c\x89\xac\xc0\xb9\x4a\x4f\x16\xfa\x84\x5e\xd8\x9f\x06\x54\xe3\xd7\x66\xe5\x20\x98\xe6\x88\x67\xa8\x28\x46\x72\x20\x21\xd0\x31\x5d\x27\x29\x56\x50\x49\xb7\x88\x49\x5a\x53\xfc\xa5\x86\x3f\x3b\x10\x25\x6a\xb0\xe9\x16\x82\xf1\xe5\x09\x97\x82\xd5\x3c\xe3\x48\x68\x07\x9b\x57\x7f\x9a\xb3\xaa\x42\x74\x29\xaf\xbb\x44\x8e\x08\xcd\x33\xaa\x10\xa6\x20\x32\x8a\xaa\x90\x23\xe9\xa8\x03\x5a\xc8\xac\x2d\xf8\xb3\x6e\xb4\xcb\x5a\x7c\x69\x11\x18\xaa\xff\xa2\xf6\x28\xe8\x9c\x63\xb7\x64\xb4\x6b\x6b\xde\x52\x0b\x31\x93\x80\x44\xbe\xbf\x12\x9f\x55\x08\xd3\x18\xdd\x01\x55\xe2\xc8\x19\x6e\xfd\xe5\xd5\x39\x02\xd0\x43\x36\xe4\x92\x8b\xd5\x00\xf4\x80\x05\xa3\x55\x1f\x0d\x31\x09\x66\x48\xf2\x1a\xff\x99\x33\x09\xb6\x62\x2c\x01\xcd\xa5\x41\xd4\x91\x4e\x7a\x8c\xc7\x5e\xf0\x75\x92\xd2\xba\xda\x82\xd0\x3d\xec\x08\x72\xc7\x44\x85\x34\xb3\xfd\xde\xc6\xf2\x48\xd3\x0e\xcf\x33\x15\x68\xca\xa0\xcb\x3a\x22\x19\xc1\xf4\x69\x79\x17\x87\x67\x25\x50\xb6\x67\x52\xc5\xe7\x70\x03\x7d\x0f\x88\xa8\x7d\xbe\x87\xfc\x69\x06\xdd\x84\x1a\x61\x33\xa9\x62\x9c\x1c\x57\xa8\x0c\x03\xf1\x3c\x04\x42\xd0\x16\xc8\x55\x72\x2e\xaa\x7c\x83\x2c\x2b\x4b\x0d\xea\xf3\xb8\x49\xe7\xd2\x2d\x87\x6a\x7e\x21\xf0\x01\x44\x6c\x01\x67\xfc\xdc\x70\xd9\x8b\xe1\x06\x24\x09\x77\x9f\x23\xd0\x4f\xf7\x6d\xf3\x39\x13\x55\xcd\x7f\x84\xa4\x1b\xbb\x5d\x48\xac\xba\xef\xfa\x62\x49\x18\xd7\x50\x8c\xac\x52\xa1\x5c\xf7\x0d\x02\xa4\xc7\xae\x67\xd0\xee\x74\x93\x55\xac\xf0\x39\xe8\x04\xd8\xd6\x8d\x37\x53\x5f\x5c\x08\x93\xab\xfa\xc7\x28\xd3\x05\x0f\x10\x01\x69\x7c\xec\xc5\xb2\x79\x66\x37\xec\x62\x0d\x1c\x22\x18\x49\x08\x07\xbb\x57\x91\x23\x6a\x98\x1f\x3e\x44\xfa\x84\x0b\xf7\xb7\x59\x5c\x0f\xaa\x97\x66\x7c\x8f\x1c\x20\x75\x66\xa5\x09\x37\x17\x23\x9b\x40\xb4\xfd\xe0\x16\x9e\xe3\xc2\x9f\x2b\x9a\x0c\x61\x06\x18\x67\x42\x4d\xa2\xeb\xe7\x94\xfb\x76\xeb\x9b\xab\x3d\x17\xf8\x80\x09\x94\x30\x3e\xb5\x6c\x19\x23\x80\xe8\x28\xf5\x08\x40\x45\xc6\x28\x39\x46\x40\x4a\x85\x44\xf0\x40\x21\x21\xaf\x05\x56\xc7\x8c\x71\xb5\x78\x9f\x21\xf7\x55\x26\xf1\x37\x18\x5b\xf3\x9c\xef\x3b\x42\x1b\x8b\x21\x6b\x42\x72\xa5\x41\x7d\x29\x29\x1c\xc6\x8e\x44\x18\x4c\x54\xe1\x14\x95\x4a\x56\x8b\x3c\xf6\x80\xad\xf7\x44\xa2\x84\xd8\x23\xbc\x76\xb7\x71\xd8\xcc\x03\x97\x97\x00\x4f\x0a\x5d\x67\xc2\x50\x55\xb6\x7f\x9b\x79\xe5\xe4\x0c\x7d\x79\x94\xb9\xba\xae\x5b\x93\xaa\xc0\x34\x63\x1c\x68\x30\x36\xa4\x62\x3c\x2b\x05\xca\x21\xe3\x20\x30\x73\xaa\x62\x6d\x46\x7a\x51\x0b\xa4\xf7\x9f\x92\x91\xb8\xa4\x88\x84\xc2\x4c\x55\x7c\x77\xe5\xb1\x52\xa9\x70\xb0\xd7\x04\x57\xd8\x1f\x34\x0e\xaf\x8d\xe8\x00\xda\xea\xef\x2e\xfa\x33\x05\xff\xcc\x29\xa6\x0a\x4a\xed\x26\x53\xa7\x9a\xe9\x39\xe7\x5b\xce\x88\x5e\x73\x8f\xc4\xd8\xa0\x33\x7c\x24\x6d\x60\xee\x94\x1b\xc1\xd5\x89\x3a\xf9\x1a\xdd\x75\x34\xf4\xd6\x1d\x23\x1b\x27\xfc\x45\xc5\xdc\x66\x63\xe3\xad\xa7\xee\xa0\xaa\x65\xf0\x58\xd0\xc0\x50\x39\xd7\xd2\x0e\xa0\xc6\xd0\x7e\xd1\x6a\xa1\xdb\x64\x1d\x04\x05\x76\x73\xbb\xb2\x24\xbb\x60\xec\x6e\x9d\x58\x7b\x02\xae\x79\xb2\x09\x1a\x9c\xbf\xcf\xcf\xb6\x3b\x20\xef\xdc\x19\x4b\xb4\xb5\x26\xae\xae\xe0\xd6\xde\x28\x0e\xe1\x1c\x23\x40\x09\x6c\xd9\xa5\x4f\xd4\x66\x3e\x01\xf9\x3a\xc7\x46\x0a\x57\xc0\x6a\x77\xc1\x5b\x99\xfe\xdd\x21\xa5\xc6\x5c\x3e\x60\x54\x03\xd2\xb6\xe9\xe3\x60\xd4\xbe\xbb\x0c\x1a\x2e\x26\x48\x04\x70\x82\x73\x24\x43\x89\xe8\x86\xf1\x44\xcd\x0b\xa4\x20\x6b\xef\x65\x2f\x4a\xfd\x33\x39\x9f\x23\x81\x08\x01\x82\x65\x15\x93\x43\xd3\x02\x08\x3a\x5e\x55\x3e\x1b\xf4\x1d\xc2\xa4\x16\x90\xa1\x5c\x75\x57\xbf\x01\x9f\x4b\x2b\x46\xb1\x62\xce\x0c\x11\xb7\x65\x85\x9e\xb3\x7e\xdb\x06\x24\xd4\xd9\x8c\x9b\xfa\xd8\xc9\x82\xe1\x09\x6d\xe3\x77\x59\x75\x9e\x31\xd1\xb9\xd6\x7b\x3c\xa6\xdf\x71\x22\xba\x00\xa9\x33\xc9\x30\xf8\x09\xe2\x07\x4b\x4b\x77\xca\xc8\x38\x23\x38\x3f\x2e\x25\x61\xce\x68\xab\xe4\x18\x87\xb8\xd1\x03\xb5\x3b\xe8\x56\xa8\xe2\x2a\x18\xac\x0d\xc2\x57\x4c\x0b\xf6\xf5\x82\x0d\x97\x73\x25\x4e\x50\x0e\x56\xbe\xbb\x55\xd1\x52\x09\x84\xa9\xba\xb8\x9c\xdf\x2a\xd6\x0d\xd5\x7c\xf0\xcf\x40\xd6\x1f\xe0\xc2\xf7\xe8\x9e\x4c\x9f\xf3\x3a\x38\x0d\xac\xa0\x62\xc2\xe9\x80\x0b\x3c\xf4\x08\x89\xd8\x83\x2d\x50\xd5\xa2\xc6\xc7\x1d\x54\xc6\xf8\xf2\xa7\x8d\xf0\x88\x78\x13\x4e\x48\x98\xa3\x6a\xa9\xe8\x88\x1e\xa8\xa7\xce\x1a\x9c\xcc\xcf\x2d\x12\xff\xec\x22\xc4\x75\x98\xf7\x0e\x42\xd6\x5b\xea\x19\x21\x4c\x4f\x19\xae\x5b\xfe\xf8\x63\xca\xc9\x7f\x28\xb9\x2d\xe9\xf5\x77\x61\x1e\xab\x3e\x0e\x3d\xf3\x7a\xd0\xd5\x26\xda\xc4\xde\x8b\xa8\xe5\xf8\x6f\xda\x77\x7b\x44\xe0\xea\xf3\x2f\xec\x04\x6f\x48\x2e\xdd\x8b\xa6\x40\x6e\xe9\xa0\xfe\x4f\x2d\xff\x11\x47\xfc\x79\xfe\xd5\x3d\x20\x0b\xbe\xdc\x6a\xa0\xae\x2e\xce\x11\xcf\x95\x5e\x81\xcd\x5e\xda\x14\xe3\xc1\xa2\x61\x92\xe9\x99\x7f\x4e\x93\xd1\xf7\x69\x1d\xc6\x66\xcc\x86\x0d\xe6\x78\xe3\x3b\xae\x90\x73\x83\xa4\x1e\xc4\x73\xbf\x62\x6d\xda\x29\x71\x5e\xf2\x05\x93\xcd\xfd\xbb\x99\x3e\x60\xee\xde\xfb\x07\x15\xd0\x05\x86\x74\x6e\x9b\x5a\x87\x87\x5e\xbb\xd3\x77\x9b\x9e\xf8\x37\xf0\x27\xaf\x38\xb5\x9c\xf4\x38\x99\x49\x7d\x1f\x0f\x5a\xdb\x17\x98\x9b\x91\x7e\x2c\x90\xf6\x15\x89\x91\xdd\x37\xe6\x79\xca\x67\x46\xe7\xdb\x4e\x7b\xcc\xdb\xbf\xb1\xf4\xdc\x6a\xac\xcc\xbf\xcd\x7b\xd8\xd5\x69\xf5\x6f\x00\x00\x00\xff\xff\xfc\xf3\x11\x6a\x88\x2f\x00\x00")
|
|
| 93 | 93 |
|
| 94 | 94 |
func dataConfig_schema_v31JsonBytes() ([]byte, error) {
|
| 95 | 95 |
return bindataRead( |
| ... | ... |
@@ -109,6 +110,26 @@ func dataConfig_schema_v31Json() (*asset, error) {
|
| 109 | 109 |
return a, nil |
| 110 | 110 |
} |
| 111 | 111 |
|
| 112 |
+var _dataConfig_schema_v32Json = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x5b\xcd\x73\xdc\x28\x16\xbf\xf7\x5f\xa1\x52\x72\x8b\x3f\xb2\xb5\xa9\xad\xda\xdc\xf6\xb8\xa7\x99\xf3\xb8\x3a\x2a\x1a\xbd\x56\x13\x4b\x40\x00\xb5\xdd\x49\xf9\x7f\x9f\xd2\x67\x03\x02\x81\xba\xe5\x38\x33\x35\x27\xdb\xe2\xf7\x80\xf7\xfd\x1e\xe0\x1f\x9b\x24\x49\xdf\x4b\x7c\x80\x0a\xa5\x9f\x93\xf4\xa0\x14\xff\x7c\x7f\xff\x55\x32\x7a\xdb\x7d\xbd\x63\xa2\xb8\xcf\x05\xda\xab\xdb\x8f\x9f\xee\xbb\x6f\xef\xd2\x9b\x86\x8e\xe4\x0d\x09\x66\x74\x4f\x8a\xac\x1b\xc9\x8e\xff\xbe\xfb\xd7\x5d\x43\xde\x41\xd4\x89\x43\x03\x62\xbb\xaf\x80\x55\xf7\x4d\xc0\xb7\x9a\x08\x68\x88\x1f\xd2\x23\x08\x49\x18\x4d\xb7\x37\x9b\x66\x8c\x0b\xc6\x41\x28\x02\x32\xfd\x9c\x34\x9b\x4b\x92\x11\x32\x7c\xd0\xa6\x95\x4a\x10\x5a\xa4\xed\xe7\x97\x76\x86\x24\x49\x25\x88\x23\xc1\xda\x0c\xe3\x56\xdf\xdd\x9f\xe7\xbf\x1f\x61\x37\xf6\xac\xda\x66\xdb\xef\x1c\x29\x05\x82\xfe\x3e\xdd\x5b\x3b\xfc\xe5\x01\xdd\x7e\xff\xdf\xed\x1f\x1f\x6f\xff\x7b\x97\xdd\x6e\x3f\xbc\x37\x86\x1b\xf9\x0a\xd8\x77\xcb\xe7\xb0\x27\x94\x28\xc2\xe8\xb8\x7e\x3a\x22\x5f\xfa\xdf\x5e\xc6\x85\x51\x9e\xb7\x60\x54\x1a\x6b\xef\x51\x29\xc1\xe4\x99\x82\x7a\x62\xe2\x31\xc4\xf3\x08\x7b\x23\x9e\xfb\xf5\x1d\x3c\x9b\xec\x1c\x59\x59\x57\x41\x0d\x0e\xa8\x37\x62\xa6\x5b\x7e\x1d\xfd\x49\xc0\x02\x54\xd8\x64\x3b\xd4\x9b\x59\x6c\xb3\xfc\x75\x0c\x6f\x06\xa6\x67\xb1\x1d\x42\x5b\xbb\xdd\xa0\xe1\xde\x2e\x51\xb9\xdc\xcb\x2f\xab\x51\x58\x1e\x29\xe5\xc0\x4b\x76\x6a\xbe\x79\xe4\xd1\x01\x2a\xa0\x2a\x1d\x45\x90\x24\xe9\xae\x26\x65\x6e\x4b\x94\x51\xf8\xad\x99\xe2\x41\xfb\x98\x24\x3f\xec\x48\xa6\xcd\xd3\x8e\x1b\x7f\xf9\x15\x3e\x8e\x7b\x78\x19\xc7\x31\xa3\x0a\x9e\x55\xcb\xd4\xfc\xd2\x9d\x08\x18\x7e\x04\xb1\x27\x25\xc4\x52\x20\x51\xc8\x19\x91\x95\x44\xaa\x8c\x89\x2c\x27\x58\x39\xe9\x31\xc2\x07\xc8\xf6\x82\x55\xc1\x59\xf6\x59\xb7\x0f\x99\xbe\x58\xf3\x4c\x26\x0e\x1b\xe6\x48\xaa\xfd\xb5\xdd\x38\x26\x4c\x31\xe2\x19\xca\x73\x43\x20\x48\x08\x74\x4a\x6f\x92\x94\x28\xa8\xa4\x5b\x56\x49\x5a\x53\xf2\xad\x86\xff\xf7\x10\x25\x6a\xb0\xe7\xcd\x05\xe3\xeb\x4f\x5c\x08\x56\xf3\x8c\x23\xd1\x58\xea\xbc\x1e\x53\xcc\xaa\x0a\xd1\xb5\xcc\x77\x09\x1f\x11\x92\x67\x54\x21\x42\x41\x64\x14\x55\x21\x8b\x6c\xdc\x17\x68\x2e\xb3\xae\x72\x88\xb5\x24\x63\x82\xb1\x8c\x58\x55\x1f\x39\x9d\xf3\x90\x6e\x9a\xc6\x47\x9a\xbd\xa5\x16\x61\x26\x01\x09\x7c\xb8\x90\x9e\x55\x88\xd0\x18\xd9\x01\x55\xe2\xc4\x19\xe9\xec\xe5\x97\x33\x04\xa0\xc7\x6c\x0c\x4a\x8b\xc5\x00\xf4\x48\x04\xa3\xd5\xe0\x0d\x71\x91\x4a\xa3\x7f\xe6\x4c\x82\x2d\x18\x8b\x41\x7d\x68\x64\xd5\x90\xc9\x40\xf1\x30\x30\x7e\x93\xa4\xb4\xae\x76\x20\x9a\x62\xd8\x40\xee\x99\xa8\x50\xb3\xd9\x61\x6d\x6d\xd8\x90\xb4\xc3\xf2\x74\x01\xea\x3c\x34\xf5\x01\x2a\xb3\x92\xd0\xc7\xf5\x4d\x1c\x9e\x95\x40\xd9\x81\x49\x75\x49\x32\x48\x0f\x80\x4a\x75\xc0\x07\xc0\x8f\x33\xe4\x3a\xca\xa0\x66\x52\xc5\x18\x39\xa9\x50\x11\x06\x71\x1c\x82\x94\x68\x07\xe5\x45\x7c\xae\x2a\x7c\x6d\x5a\x56\x14\x0d\xd4\x67\x71\x93\x12\xa8\x1f\x0e\x15\x0f\xb9\x20\x47\x10\xb1\x95\x00\xe3\xe7\xca\xcd\x1e\x0c\x57\x32\x49\xb8\x8c\x35\xa0\x5f\xee\xba\x2a\x76\xc6\xab\xda\xdf\xca\x32\xdd\xda\xe5\x42\x62\xe5\x7d\xd7\x17\x8b\xc3\xb8\x82\xc2\xd0\x4a\x85\x70\x53\x37\x08\x90\x1e\xbd\x9e\xa1\x7d\x9b\x94\x55\x2c\xf7\x19\xe8\x04\x6c\xcb\xc6\x1b\xa9\x17\x27\xc2\xe4\xa2\x42\x34\x4a\x75\xc1\x4e\x24\xc0\x8d\x6f\x7b\xb1\xdb\x3c\x6f\x37\x6c\x62\x2d\x0e\x95\x04\x49\x08\x3b\xbb\x57\x90\xc6\x6c\x84\x1f\x3f\x45\xda\x84\x8b\xf6\x3f\xb3\xb4\x1e\x52\xef\x9c\xf1\x35\x72\x60\xaa\xf3\x56\x5a\x77\x73\x6d\x64\x1b\xf0\xb6\x57\x2e\xe1\x39\xc9\xfd\xb1\xa2\x8d\x10\xba\x83\x71\x26\xd4\xc4\xbb\x96\xa7\x7b\x9f\x05\xeb\xe2\x1a\xe2\xd4\x39\xe1\x77\x8b\x4f\xa4\x31\x51\x77\x14\xd1\xd4\xff\x82\xfe\x11\xf6\x8c\x74\x26\x4a\x39\xd0\x0a\x89\x02\xcc\x36\x84\x50\x05\x05\x08\x0f\x01\xaf\x77\x25\x91\x07\xc8\x97\xd0\x08\xa6\x18\x66\x65\x9c\x63\x38\xfb\xd8\x78\x67\x30\x27\xdc\x5e\x5d\x9b\x71\x41\x8e\xa4\x84\xc2\xe2\x78\xc7\x58\x09\x88\x1a\x89\x42\x00\xca\x33\x46\xcb\x53\x04\x52\x2a\x24\x82\xed\x9f\x04\x5c\x0b\xa2\x4e\x19\xe3\x6a\xf5\xaa\x50\x1e\xaa\x4c\x92\xef\x60\xfa\xde\xd9\xea\xfb\x89\xb6\xd6\x86\xac\x83\xb1\xe4\xb5\xdc\xcf\x67\xb6\xaf\xe4\x36\x92\xd5\x02\x5f\xe7\x38\xb3\xf8\xda\x0c\x72\xf3\xe0\x62\x09\x78\xe2\xf0\xbd\x0a\x43\x35\xd4\xac\xab\x38\x03\xb5\x3c\x49\xac\x2e\xab\xad\xa5\xca\x09\xcd\x18\x07\x1a\xf4\x0d\xa9\x18\xcf\x0a\x81\x30\x64\x1c\x04\x61\x4e\x51\x18\x01\x36\xaf\x05\x6a\xd6\x9f\x4e\x23\x49\x41\x91\x3b\xee\x68\x50\x55\xf1\xfd\x85\x87\x00\x4a\x85\x9d\xbd\x2e\x49\x45\xfc\x4e\xe3\xb0\xda\x88\x7a\xad\xab\xd5\xdc\x25\xda\x4c\x79\x16\x15\xb2\x67\x3a\x84\xf9\x06\x21\xa2\x33\x38\x20\xb1\x20\x75\xb4\x8e\xb9\xf7\xe4\x27\x57\xdf\xe0\xdc\x97\x71\xc5\xd5\xce\x77\xd3\x6f\x64\xeb\xc4\x2f\x2a\xbd\xec\x6d\x6c\xbd\xd5\x8f\xdb\xa9\x6a\x19\x6c\xe2\x5a\x0c\x95\x73\x0d\xc8\x08\x9d\xde\xd5\x24\x7f\x89\x08\x6d\xe8\xa8\x85\x3b\x74\x13\x11\xc7\xfb\x95\x22\x63\xe7\x6b\x47\xfd\xe8\x8a\x40\xa3\xd9\x91\xc9\x81\xef\x12\x49\xc6\xc9\x69\x44\xa1\xa2\x0b\x9d\xd1\x3d\x4b\xbc\xdb\xf5\x37\x72\x3f\x85\x15\xca\x30\xe3\x1e\x29\xc7\xb3\xb1\x34\x63\x5a\xa7\x10\x33\x25\xa5\xcf\xfb\x9f\x98\x78\x6c\x72\x4b\x4e\xdc\x41\x60\x63\x91\x2c\xb8\xc4\xb4\x8e\xed\x86\x09\x5c\xb7\x73\x3a\x34\x78\x9b\x39\x7f\x53\xd8\x83\xbc\xb7\x78\x44\xa2\x9d\x75\x7f\xe5\xca\x99\x4d\x90\x17\xc7\x70\xea\x16\xa0\x04\xb1\x6e\x05\x86\xfa\x47\x4f\xd3\x20\x7f\xcd\xb3\x73\x45\x2a\x60\xb5\x3b\xa2\x6c\x74\xc3\xe9\x89\x52\xed\x96\x33\xa0\x54\x0d\x69\xeb\xf4\x61\x54\xea\xd0\x62\x07\x15\x17\x93\x7b\x80\xe6\xed\x2d\x45\x54\xa2\x12\xc0\x4b\x82\x91\x0c\x15\x03\x57\x1c\xe8\xd6\x3c\x47\x0a\xb2\xee\x49\xcc\xa2\xf2\x6b\xa6\xee\xe2\x48\xa0\xb2\x84\x92\xc8\x2a\xa6\x8e\x49\x73\x28\xd1\xe9\xa2\x12\xb6\x25\xdf\x23\x52\xd6\x02\x32\x84\xbd\x61\xda\xa2\xa8\x18\x25\x8a\x39\xc3\x49\xdc\x92\x15\x7a\xce\x86\x65\x5b\x48\xa8\xbb\x30\x1b\xeb\xd8\xb3\x58\xcd\x12\xba\x34\xbc\xac\x42\x9e\x51\xd1\xb9\xde\xf6\x58\xcc\xb0\xe2\x84\x75\x01\xb2\x09\x3b\xe3\x51\x79\x90\x3e\x18\xe0\xfb\x4e\x3f\xe3\xac\x24\xf8\xb4\x16\x87\x98\xd1\x4e\xc8\x31\x06\x71\xa5\x05\x36\xe6\xd0\xb4\x23\x15\x57\x41\x67\x6d\x09\x9e\x08\xcd\xd9\xd3\x82\x05\xd7\x33\x25\x5e\x22\x0c\x56\x70\xbc\x56\xd0\x52\x09\x44\xa8\x5a\x7c\x33\x74\x2d\x5b\x57\xa4\xfe\xd1\x3e\x03\x29\x62\xc4\x05\x93\xbe\x2f\x2d\x60\x5e\x07\xef\x4f\x2a\xa8\x98\x70\x1a\xe0\x0a\x6f\xec\x42\x2c\x0e\xb0\x15\x52\x60\xd4\x85\x5b\x8f\xca\x18\x5f\xbf\xe3\x0f\x5f\xaa\x6d\xc3\x01\x89\x70\x54\xad\xe5\x1d\xd1\x57\x90\xa9\x33\x07\x27\xf3\x9d\x69\xe2\xef\x4e\x43\xbb\x0e\xef\xbd\x47\xc8\x7a\x47\x3d\x0d\xdd\xb4\x19\x58\xf3\x60\x7a\xc5\xa0\x37\xbc\x1e\xf0\x68\xf5\x61\x2c\xb0\x6f\x46\x59\x6d\xa3\x55\xec\xbd\xba\x5f\x6f\xff\x6d\xad\x6f\x1f\xd3\xb9\x9a\x02\xa4\x14\xc2\x87\xa8\xfe\x61\x61\xd1\x78\x45\x1c\x9a\x74\xb9\xce\x30\xd4\xa3\xfe\x89\x42\x7f\x13\x9b\xfd\x79\xf6\xd5\x3f\xf3\x0d\xbe\xaf\x6d\x51\x17\xe7\xf1\x88\x47\xa5\xbf\x80\xce\xde\x5a\x15\xe6\x3d\x80\xa6\x92\xe9\x59\xc2\x9c\x24\x97\x3e\xa4\xdd\x9a\xdb\xb0\x61\x8e\xff\xc4\x30\x93\xe9\xdc\x2d\xe1\x00\xf1\x9c\x5d\x59\x8b\xf6\x42\x9c\xe7\x7c\xc5\x60\x73\xf7\x61\xa6\x64\x98\x7b\x54\xf4\x4a\xb9\x76\x85\x1b\x58\xb7\x4e\xad\x3e\x63\x90\xee\xf4\x75\xbd\xc7\xff\x35\xfa\xc9\x5b\xfb\x86\x4f\x7a\x9a\x9c\x75\xfd\x30\xcf\xdc\xbb\x77\xf2\x5b\x43\x3e\x16\xa4\x7b\xa2\xa7\x45\xf7\xad\xde\x7a\xf9\xd4\xe8\x7c\x81\x6f\x9f\xf8\x0f\x2f\xe1\x3d\x97\x90\x1b\xfd\x67\xfb\x5f\x0b\x9b\x97\xcd\x9f\x01\x00\x00\xff\xff\x0b\x42\x15\x69\x2e\x35\x00\x00")
|
|
| 113 |
+ |
|
| 114 |
+func dataConfig_schema_v32JsonBytes() ([]byte, error) {
|
|
| 115 |
+ return bindataRead( |
|
| 116 |
+ _dataConfig_schema_v32Json, |
|
| 117 |
+ "data/config_schema_v3.2.json", |
|
| 118 |
+ ) |
|
| 119 |
+} |
|
| 120 |
+ |
|
| 121 |
+func dataConfig_schema_v32Json() (*asset, error) {
|
|
| 122 |
+ bytes, err := dataConfig_schema_v32JsonBytes() |
|
| 123 |
+ if err != nil {
|
|
| 124 |
+ return nil, err |
|
| 125 |
+ } |
|
| 126 |
+ |
|
| 127 |
+ info := bindataFileInfo{name: "data/config_schema_v3.2.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
|
|
| 128 |
+ a := &asset{bytes: bytes, info: info}
|
|
| 129 |
+ return a, nil |
|
| 130 |
+} |
|
| 131 |
+ |
|
| 112 | 132 |
// Asset loads and returns the asset for the given name. |
| 113 | 133 |
// It returns an error if the asset could not be found or |
| 114 | 134 |
// could not be loaded. |
| ... | ... |
@@ -163,6 +184,7 @@ func AssetNames() []string {
|
| 163 | 163 |
var _bindata = map[string]func() (*asset, error){
|
| 164 | 164 |
"data/config_schema_v3.0.json": dataConfig_schema_v30Json, |
| 165 | 165 |
"data/config_schema_v3.1.json": dataConfig_schema_v31Json, |
| 166 |
+ "data/config_schema_v3.2.json": dataConfig_schema_v32Json, |
|
| 166 | 167 |
} |
| 167 | 168 |
|
| 168 | 169 |
// AssetDir returns the file names below a certain |
| ... | ... |
@@ -208,6 +230,7 @@ var _bintree = &bintree{nil, map[string]*bintree{
|
| 208 | 208 |
"data": &bintree{nil, map[string]*bintree{
|
| 209 | 209 |
"config_schema_v3.0.json": &bintree{dataConfig_schema_v30Json, map[string]*bintree{}},
|
| 210 | 210 |
"config_schema_v3.1.json": &bintree{dataConfig_schema_v31Json, map[string]*bintree{}},
|
| 211 |
+ "config_schema_v3.2.json": &bintree{dataConfig_schema_v32Json, map[string]*bintree{}},
|
|
| 211 | 212 |
}}, |
| 212 | 213 |
}} |
| 213 | 214 |
|
| ... | ... |
@@ -167,20 +167,8 @@ |
| 167 | 167 |
"ports": {
|
| 168 | 168 |
"type": "array", |
| 169 | 169 |
"items": {
|
| 170 |
- "oneOf": [ |
|
| 171 |
- {"type": "number", "format": "ports"},
|
|
| 172 |
- {"type": "string", "format": "ports"},
|
|
| 173 |
- {
|
|
| 174 |
- "type": "object", |
|
| 175 |
- "properties": {
|
|
| 176 |
- "mode": {"type": "string"},
|
|
| 177 |
- "target": {"type": "integer"},
|
|
| 178 |
- "published": {"type": "integer"},
|
|
| 179 |
- "protocol": {"type": "string"}
|
|
| 180 |
- }, |
|
| 181 |
- "additionalProperties": false |
|
| 182 |
- } |
|
| 183 |
- ] |
|
| 170 |
+ "type": ["string", "number"], |
|
| 171 |
+ "format": "ports" |
|
| 184 | 172 |
}, |
| 185 | 173 |
"uniqueItems": true |
| 186 | 174 |
}, |
| ... | ... |
@@ -235,37 +223,7 @@ |
| 235 | 235 |
}, |
| 236 | 236 |
"user": {"type": "string"},
|
| 237 | 237 |
"userns_mode": {"type": "string"},
|
| 238 |
- "volumes": {
|
|
| 239 |
- "type": "array", |
|
| 240 |
- "items": {
|
|
| 241 |
- "oneOf": [ |
|
| 242 |
- {"type": "string"},
|
|
| 243 |
- {
|
|
| 244 |
- "type": "object", |
|
| 245 |
- "required": ["type"], |
|
| 246 |
- "properties": {
|
|
| 247 |
- "type": {"type": "string"},
|
|
| 248 |
- "source": {"type": "string"},
|
|
| 249 |
- "target": {"type": "string"},
|
|
| 250 |
- "read_only": {"type": "boolean"},
|
|
| 251 |
- "bind": {
|
|
| 252 |
- "type": "object", |
|
| 253 |
- "properties": {
|
|
| 254 |
- "propagation": {"type": "string"}
|
|
| 255 |
- } |
|
| 256 |
- }, |
|
| 257 |
- "volume": {
|
|
| 258 |
- "type": "object", |
|
| 259 |
- "properties": {
|
|
| 260 |
- "nocopy": {"type": "boolean"}
|
|
| 261 |
- } |
|
| 262 |
- } |
|
| 263 |
- } |
|
| 264 |
- } |
|
| 265 |
- ], |
|
| 266 |
- "uniqueItems": true |
|
| 267 |
- } |
|
| 268 |
- }, |
|
| 238 |
+ "volumes": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
|
|
| 269 | 239 |
"working_dir": {"type": "string"}
|
| 270 | 240 |
}, |
| 271 | 241 |
"additionalProperties": false |
| ... | ... |
@@ -380,7 +338,6 @@ |
| 380 | 380 |
"additionalProperties": false |
| 381 | 381 |
}, |
| 382 | 382 |
"internal": {"type": "boolean"},
|
| 383 |
- "attachable": {"type": "boolean"},
|
|
| 384 | 383 |
"labels": {"$ref": "#/definitions/list_or_dict"}
|
| 385 | 384 |
}, |
| 386 | 385 |
"additionalProperties": false |
| 387 | 386 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,473 @@ |
| 0 |
+{
|
|
| 1 |
+ "$schema": "http://json-schema.org/draft-04/schema#", |
|
| 2 |
+ "id": "config_schema_v3.1.json", |
|
| 3 |
+ "type": "object", |
|
| 4 |
+ "required": ["version"], |
|
| 5 |
+ |
|
| 6 |
+ "properties": {
|
|
| 7 |
+ "version": {
|
|
| 8 |
+ "type": "string" |
|
| 9 |
+ }, |
|
| 10 |
+ |
|
| 11 |
+ "services": {
|
|
| 12 |
+ "id": "#/properties/services", |
|
| 13 |
+ "type": "object", |
|
| 14 |
+ "patternProperties": {
|
|
| 15 |
+ "^[a-zA-Z0-9._-]+$": {
|
|
| 16 |
+ "$ref": "#/definitions/service" |
|
| 17 |
+ } |
|
| 18 |
+ }, |
|
| 19 |
+ "additionalProperties": false |
|
| 20 |
+ }, |
|
| 21 |
+ |
|
| 22 |
+ "networks": {
|
|
| 23 |
+ "id": "#/properties/networks", |
|
| 24 |
+ "type": "object", |
|
| 25 |
+ "patternProperties": {
|
|
| 26 |
+ "^[a-zA-Z0-9._-]+$": {
|
|
| 27 |
+ "$ref": "#/definitions/network" |
|
| 28 |
+ } |
|
| 29 |
+ } |
|
| 30 |
+ }, |
|
| 31 |
+ |
|
| 32 |
+ "volumes": {
|
|
| 33 |
+ "id": "#/properties/volumes", |
|
| 34 |
+ "type": "object", |
|
| 35 |
+ "patternProperties": {
|
|
| 36 |
+ "^[a-zA-Z0-9._-]+$": {
|
|
| 37 |
+ "$ref": "#/definitions/volume" |
|
| 38 |
+ } |
|
| 39 |
+ }, |
|
| 40 |
+ "additionalProperties": false |
|
| 41 |
+ }, |
|
| 42 |
+ |
|
| 43 |
+ "secrets": {
|
|
| 44 |
+ "id": "#/properties/secrets", |
|
| 45 |
+ "type": "object", |
|
| 46 |
+ "patternProperties": {
|
|
| 47 |
+ "^[a-zA-Z0-9._-]+$": {
|
|
| 48 |
+ "$ref": "#/definitions/secret" |
|
| 49 |
+ } |
|
| 50 |
+ }, |
|
| 51 |
+ "additionalProperties": false |
|
| 52 |
+ } |
|
| 53 |
+ }, |
|
| 54 |
+ |
|
| 55 |
+ "additionalProperties": false, |
|
| 56 |
+ |
|
| 57 |
+ "definitions": {
|
|
| 58 |
+ |
|
| 59 |
+ "service": {
|
|
| 60 |
+ "id": "#/definitions/service", |
|
| 61 |
+ "type": "object", |
|
| 62 |
+ |
|
| 63 |
+ "properties": {
|
|
| 64 |
+ "deploy": {"$ref": "#/definitions/deployment"},
|
|
| 65 |
+ "build": {
|
|
| 66 |
+ "oneOf": [ |
|
| 67 |
+ {"type": "string"},
|
|
| 68 |
+ {
|
|
| 69 |
+ "type": "object", |
|
| 70 |
+ "properties": {
|
|
| 71 |
+ "context": {"type": "string"},
|
|
| 72 |
+ "dockerfile": {"type": "string"},
|
|
| 73 |
+ "args": {"$ref": "#/definitions/list_or_dict"},
|
|
| 74 |
+ "cache_from": {"$ref": "#/definitions/list_of_strings"}
|
|
| 75 |
+ }, |
|
| 76 |
+ "additionalProperties": false |
|
| 77 |
+ } |
|
| 78 |
+ ] |
|
| 79 |
+ }, |
|
| 80 |
+ "cap_add": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
|
|
| 81 |
+ "cap_drop": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
|
|
| 82 |
+ "cgroup_parent": {"type": "string"},
|
|
| 83 |
+ "command": {
|
|
| 84 |
+ "oneOf": [ |
|
| 85 |
+ {"type": "string"},
|
|
| 86 |
+ {"type": "array", "items": {"type": "string"}}
|
|
| 87 |
+ ] |
|
| 88 |
+ }, |
|
| 89 |
+ "container_name": {"type": "string"},
|
|
| 90 |
+ "depends_on": {"$ref": "#/definitions/list_of_strings"},
|
|
| 91 |
+ "devices": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
|
|
| 92 |
+ "dns": {"$ref": "#/definitions/string_or_list"},
|
|
| 93 |
+ "dns_search": {"$ref": "#/definitions/string_or_list"},
|
|
| 94 |
+ "domainname": {"type": "string"},
|
|
| 95 |
+ "entrypoint": {
|
|
| 96 |
+ "oneOf": [ |
|
| 97 |
+ {"type": "string"},
|
|
| 98 |
+ {"type": "array", "items": {"type": "string"}}
|
|
| 99 |
+ ] |
|
| 100 |
+ }, |
|
| 101 |
+ "env_file": {"$ref": "#/definitions/string_or_list"},
|
|
| 102 |
+ "environment": {"$ref": "#/definitions/list_or_dict"},
|
|
| 103 |
+ |
|
| 104 |
+ "expose": {
|
|
| 105 |
+ "type": "array", |
|
| 106 |
+ "items": {
|
|
| 107 |
+ "type": ["string", "number"], |
|
| 108 |
+ "format": "expose" |
|
| 109 |
+ }, |
|
| 110 |
+ "uniqueItems": true |
|
| 111 |
+ }, |
|
| 112 |
+ |
|
| 113 |
+ "external_links": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
|
|
| 114 |
+ "extra_hosts": {"$ref": "#/definitions/list_or_dict"},
|
|
| 115 |
+ "healthcheck": {"$ref": "#/definitions/healthcheck"},
|
|
| 116 |
+ "hostname": {"type": "string"},
|
|
| 117 |
+ "image": {"type": "string"},
|
|
| 118 |
+ "ipc": {"type": "string"},
|
|
| 119 |
+ "labels": {"$ref": "#/definitions/list_or_dict"},
|
|
| 120 |
+ "links": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
|
|
| 121 |
+ |
|
| 122 |
+ "logging": {
|
|
| 123 |
+ "type": "object", |
|
| 124 |
+ |
|
| 125 |
+ "properties": {
|
|
| 126 |
+ "driver": {"type": "string"},
|
|
| 127 |
+ "options": {
|
|
| 128 |
+ "type": "object", |
|
| 129 |
+ "patternProperties": {
|
|
| 130 |
+ "^.+$": {"type": ["string", "number", "null"]}
|
|
| 131 |
+ } |
|
| 132 |
+ } |
|
| 133 |
+ }, |
|
| 134 |
+ "additionalProperties": false |
|
| 135 |
+ }, |
|
| 136 |
+ |
|
| 137 |
+ "mac_address": {"type": "string"},
|
|
| 138 |
+ "network_mode": {"type": "string"},
|
|
| 139 |
+ |
|
| 140 |
+ "networks": {
|
|
| 141 |
+ "oneOf": [ |
|
| 142 |
+ {"$ref": "#/definitions/list_of_strings"},
|
|
| 143 |
+ {
|
|
| 144 |
+ "type": "object", |
|
| 145 |
+ "patternProperties": {
|
|
| 146 |
+ "^[a-zA-Z0-9._-]+$": {
|
|
| 147 |
+ "oneOf": [ |
|
| 148 |
+ {
|
|
| 149 |
+ "type": "object", |
|
| 150 |
+ "properties": {
|
|
| 151 |
+ "aliases": {"$ref": "#/definitions/list_of_strings"},
|
|
| 152 |
+ "ipv4_address": {"type": "string"},
|
|
| 153 |
+ "ipv6_address": {"type": "string"}
|
|
| 154 |
+ }, |
|
| 155 |
+ "additionalProperties": false |
|
| 156 |
+ }, |
|
| 157 |
+ {"type": "null"}
|
|
| 158 |
+ ] |
|
| 159 |
+ } |
|
| 160 |
+ }, |
|
| 161 |
+ "additionalProperties": false |
|
| 162 |
+ } |
|
| 163 |
+ ] |
|
| 164 |
+ }, |
|
| 165 |
+ "pid": {"type": ["string", "null"]},
|
|
| 166 |
+ |
|
| 167 |
+ "ports": {
|
|
| 168 |
+ "type": "array", |
|
| 169 |
+ "items": {
|
|
| 170 |
+ "oneOf": [ |
|
| 171 |
+ {"type": "number", "format": "ports"},
|
|
| 172 |
+ {"type": "string", "format": "ports"},
|
|
| 173 |
+ {
|
|
| 174 |
+ "type": "object", |
|
| 175 |
+ "properties": {
|
|
| 176 |
+ "mode": {"type": "string"},
|
|
| 177 |
+ "target": {"type": "integer"},
|
|
| 178 |
+ "published": {"type": "integer"},
|
|
| 179 |
+ "protocol": {"type": "string"}
|
|
| 180 |
+ }, |
|
| 181 |
+ "additionalProperties": false |
|
| 182 |
+ } |
|
| 183 |
+ ] |
|
| 184 |
+ }, |
|
| 185 |
+ "uniqueItems": true |
|
| 186 |
+ }, |
|
| 187 |
+ |
|
| 188 |
+ "privileged": {"type": "boolean"},
|
|
| 189 |
+ "read_only": {"type": "boolean"},
|
|
| 190 |
+ "restart": {"type": "string"},
|
|
| 191 |
+ "security_opt": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
|
|
| 192 |
+ "shm_size": {"type": ["number", "string"]},
|
|
| 193 |
+ "secrets": {
|
|
| 194 |
+ "type": "array", |
|
| 195 |
+ "items": {
|
|
| 196 |
+ "oneOf": [ |
|
| 197 |
+ {"type": "string"},
|
|
| 198 |
+ {
|
|
| 199 |
+ "type": "object", |
|
| 200 |
+ "properties": {
|
|
| 201 |
+ "source": {"type": "string"},
|
|
| 202 |
+ "target": {"type": "string"},
|
|
| 203 |
+ "uid": {"type": "string"},
|
|
| 204 |
+ "gid": {"type": "string"},
|
|
| 205 |
+ "mode": {"type": "number"}
|
|
| 206 |
+ } |
|
| 207 |
+ } |
|
| 208 |
+ ] |
|
| 209 |
+ } |
|
| 210 |
+ }, |
|
| 211 |
+ "sysctls": {"$ref": "#/definitions/list_or_dict"},
|
|
| 212 |
+ "stdin_open": {"type": "boolean"},
|
|
| 213 |
+ "stop_grace_period": {"type": "string", "format": "duration"},
|
|
| 214 |
+ "stop_signal": {"type": "string"},
|
|
| 215 |
+ "tmpfs": {"$ref": "#/definitions/string_or_list"},
|
|
| 216 |
+ "tty": {"type": "boolean"},
|
|
| 217 |
+ "ulimits": {
|
|
| 218 |
+ "type": "object", |
|
| 219 |
+ "patternProperties": {
|
|
| 220 |
+ "^[a-z]+$": {
|
|
| 221 |
+ "oneOf": [ |
|
| 222 |
+ {"type": "integer"},
|
|
| 223 |
+ {
|
|
| 224 |
+ "type":"object", |
|
| 225 |
+ "properties": {
|
|
| 226 |
+ "hard": {"type": "integer"},
|
|
| 227 |
+ "soft": {"type": "integer"}
|
|
| 228 |
+ }, |
|
| 229 |
+ "required": ["soft", "hard"], |
|
| 230 |
+ "additionalProperties": false |
|
| 231 |
+ } |
|
| 232 |
+ ] |
|
| 233 |
+ } |
|
| 234 |
+ } |
|
| 235 |
+ }, |
|
| 236 |
+ "user": {"type": "string"},
|
|
| 237 |
+ "userns_mode": {"type": "string"},
|
|
| 238 |
+ "volumes": {
|
|
| 239 |
+ "type": "array", |
|
| 240 |
+ "items": {
|
|
| 241 |
+ "oneOf": [ |
|
| 242 |
+ {"type": "string"},
|
|
| 243 |
+ {
|
|
| 244 |
+ "type": "object", |
|
| 245 |
+ "required": ["type"], |
|
| 246 |
+ "properties": {
|
|
| 247 |
+ "type": {"type": "string"},
|
|
| 248 |
+ "source": {"type": "string"},
|
|
| 249 |
+ "target": {"type": "string"},
|
|
| 250 |
+ "read_only": {"type": "boolean"},
|
|
| 251 |
+ "bind": {
|
|
| 252 |
+ "type": "object", |
|
| 253 |
+ "properties": {
|
|
| 254 |
+ "propagation": {"type": "string"}
|
|
| 255 |
+ } |
|
| 256 |
+ }, |
|
| 257 |
+ "volume": {
|
|
| 258 |
+ "type": "object", |
|
| 259 |
+ "properties": {
|
|
| 260 |
+ "nocopy": {"type": "boolean"}
|
|
| 261 |
+ } |
|
| 262 |
+ } |
|
| 263 |
+ } |
|
| 264 |
+ } |
|
| 265 |
+ ], |
|
| 266 |
+ "uniqueItems": true |
|
| 267 |
+ } |
|
| 268 |
+ }, |
|
| 269 |
+ "working_dir": {"type": "string"}
|
|
| 270 |
+ }, |
|
| 271 |
+ "additionalProperties": false |
|
| 272 |
+ }, |
|
| 273 |
+ |
|
| 274 |
+ "healthcheck": {
|
|
| 275 |
+ "id": "#/definitions/healthcheck", |
|
| 276 |
+ "type": "object", |
|
| 277 |
+ "additionalProperties": false, |
|
| 278 |
+ "properties": {
|
|
| 279 |
+ "disable": {"type": "boolean"},
|
|
| 280 |
+ "interval": {"type": "string"},
|
|
| 281 |
+ "retries": {"type": "number"},
|
|
| 282 |
+ "test": {
|
|
| 283 |
+ "oneOf": [ |
|
| 284 |
+ {"type": "string"},
|
|
| 285 |
+ {"type": "array", "items": {"type": "string"}}
|
|
| 286 |
+ ] |
|
| 287 |
+ }, |
|
| 288 |
+ "timeout": {"type": "string"}
|
|
| 289 |
+ } |
|
| 290 |
+ }, |
|
| 291 |
+ "deployment": {
|
|
| 292 |
+ "id": "#/definitions/deployment", |
|
| 293 |
+ "type": ["object", "null"], |
|
| 294 |
+ "properties": {
|
|
| 295 |
+ "mode": {"type": "string"},
|
|
| 296 |
+ "endpoint_mode": {"type": "string"},
|
|
| 297 |
+ "replicas": {"type": "integer"},
|
|
| 298 |
+ "labels": {"$ref": "#/definitions/list_or_dict"},
|
|
| 299 |
+ "update_config": {
|
|
| 300 |
+ "type": "object", |
|
| 301 |
+ "properties": {
|
|
| 302 |
+ "parallelism": {"type": "integer"},
|
|
| 303 |
+ "delay": {"type": "string", "format": "duration"},
|
|
| 304 |
+ "failure_action": {"type": "string"},
|
|
| 305 |
+ "monitor": {"type": "string", "format": "duration"},
|
|
| 306 |
+ "max_failure_ratio": {"type": "number"}
|
|
| 307 |
+ }, |
|
| 308 |
+ "additionalProperties": false |
|
| 309 |
+ }, |
|
| 310 |
+ "resources": {
|
|
| 311 |
+ "type": "object", |
|
| 312 |
+ "properties": {
|
|
| 313 |
+ "limits": {"$ref": "#/definitions/resource"},
|
|
| 314 |
+ "reservations": {"$ref": "#/definitions/resource"}
|
|
| 315 |
+ } |
|
| 316 |
+ }, |
|
| 317 |
+ "restart_policy": {
|
|
| 318 |
+ "type": "object", |
|
| 319 |
+ "properties": {
|
|
| 320 |
+ "condition": {"type": "string"},
|
|
| 321 |
+ "delay": {"type": "string", "format": "duration"},
|
|
| 322 |
+ "max_attempts": {"type": "integer"},
|
|
| 323 |
+ "window": {"type": "string", "format": "duration"}
|
|
| 324 |
+ }, |
|
| 325 |
+ "additionalProperties": false |
|
| 326 |
+ }, |
|
| 327 |
+ "placement": {
|
|
| 328 |
+ "type": "object", |
|
| 329 |
+ "properties": {
|
|
| 330 |
+ "constraints": {"type": "array", "items": {"type": "string"}}
|
|
| 331 |
+ }, |
|
| 332 |
+ "additionalProperties": false |
|
| 333 |
+ } |
|
| 334 |
+ }, |
|
| 335 |
+ "additionalProperties": false |
|
| 336 |
+ }, |
|
| 337 |
+ |
|
| 338 |
+ "resource": {
|
|
| 339 |
+ "id": "#/definitions/resource", |
|
| 340 |
+ "type": "object", |
|
| 341 |
+ "properties": {
|
|
| 342 |
+ "cpus": {"type": "string"},
|
|
| 343 |
+ "memory": {"type": "string"}
|
|
| 344 |
+ }, |
|
| 345 |
+ "additionalProperties": false |
|
| 346 |
+ }, |
|
| 347 |
+ |
|
| 348 |
+ "network": {
|
|
| 349 |
+ "id": "#/definitions/network", |
|
| 350 |
+ "type": ["object", "null"], |
|
| 351 |
+ "properties": {
|
|
| 352 |
+ "driver": {"type": "string"},
|
|
| 353 |
+ "driver_opts": {
|
|
| 354 |
+ "type": "object", |
|
| 355 |
+ "patternProperties": {
|
|
| 356 |
+ "^.+$": {"type": ["string", "number"]}
|
|
| 357 |
+ } |
|
| 358 |
+ }, |
|
| 359 |
+ "ipam": {
|
|
| 360 |
+ "type": "object", |
|
| 361 |
+ "properties": {
|
|
| 362 |
+ "driver": {"type": "string"},
|
|
| 363 |
+ "config": {
|
|
| 364 |
+ "type": "array", |
|
| 365 |
+ "items": {
|
|
| 366 |
+ "type": "object", |
|
| 367 |
+ "properties": {
|
|
| 368 |
+ "subnet": {"type": "string"}
|
|
| 369 |
+ }, |
|
| 370 |
+ "additionalProperties": false |
|
| 371 |
+ } |
|
| 372 |
+ } |
|
| 373 |
+ }, |
|
| 374 |
+ "additionalProperties": false |
|
| 375 |
+ }, |
|
| 376 |
+ "external": {
|
|
| 377 |
+ "type": ["boolean", "object"], |
|
| 378 |
+ "properties": {
|
|
| 379 |
+ "name": {"type": "string"}
|
|
| 380 |
+ }, |
|
| 381 |
+ "additionalProperties": false |
|
| 382 |
+ }, |
|
| 383 |
+ "internal": {"type": "boolean"},
|
|
| 384 |
+ "attachable": {"type": "boolean"},
|
|
| 385 |
+ "labels": {"$ref": "#/definitions/list_or_dict"}
|
|
| 386 |
+ }, |
|
| 387 |
+ "additionalProperties": false |
|
| 388 |
+ }, |
|
| 389 |
+ |
|
| 390 |
+ "volume": {
|
|
| 391 |
+ "id": "#/definitions/volume", |
|
| 392 |
+ "type": ["object", "null"], |
|
| 393 |
+ "properties": {
|
|
| 394 |
+ "driver": {"type": "string"},
|
|
| 395 |
+ "driver_opts": {
|
|
| 396 |
+ "type": "object", |
|
| 397 |
+ "patternProperties": {
|
|
| 398 |
+ "^.+$": {"type": ["string", "number"]}
|
|
| 399 |
+ } |
|
| 400 |
+ }, |
|
| 401 |
+ "external": {
|
|
| 402 |
+ "type": ["boolean", "object"], |
|
| 403 |
+ "properties": {
|
|
| 404 |
+ "name": {"type": "string"}
|
|
| 405 |
+ }, |
|
| 406 |
+ "additionalProperties": false |
|
| 407 |
+ }, |
|
| 408 |
+ "labels": {"$ref": "#/definitions/list_or_dict"}
|
|
| 409 |
+ }, |
|
| 410 |
+ "additionalProperties": false |
|
| 411 |
+ }, |
|
| 412 |
+ |
|
| 413 |
+ "secret": {
|
|
| 414 |
+ "id": "#/definitions/secret", |
|
| 415 |
+ "type": "object", |
|
| 416 |
+ "properties": {
|
|
| 417 |
+ "file": {"type": "string"},
|
|
| 418 |
+ "external": {
|
|
| 419 |
+ "type": ["boolean", "object"], |
|
| 420 |
+ "properties": {
|
|
| 421 |
+ "name": {"type": "string"}
|
|
| 422 |
+ } |
|
| 423 |
+ }, |
|
| 424 |
+ "labels": {"$ref": "#/definitions/list_or_dict"}
|
|
| 425 |
+ }, |
|
| 426 |
+ "additionalProperties": false |
|
| 427 |
+ }, |
|
| 428 |
+ |
|
| 429 |
+ "string_or_list": {
|
|
| 430 |
+ "oneOf": [ |
|
| 431 |
+ {"type": "string"},
|
|
| 432 |
+ {"$ref": "#/definitions/list_of_strings"}
|
|
| 433 |
+ ] |
|
| 434 |
+ }, |
|
| 435 |
+ |
|
| 436 |
+ "list_of_strings": {
|
|
| 437 |
+ "type": "array", |
|
| 438 |
+ "items": {"type": "string"},
|
|
| 439 |
+ "uniqueItems": true |
|
| 440 |
+ }, |
|
| 441 |
+ |
|
| 442 |
+ "list_or_dict": {
|
|
| 443 |
+ "oneOf": [ |
|
| 444 |
+ {
|
|
| 445 |
+ "type": "object", |
|
| 446 |
+ "patternProperties": {
|
|
| 447 |
+ ".+": {
|
|
| 448 |
+ "type": ["string", "number", "null"] |
|
| 449 |
+ } |
|
| 450 |
+ }, |
|
| 451 |
+ "additionalProperties": false |
|
| 452 |
+ }, |
|
| 453 |
+ {"type": "array", "items": {"type": "string"}, "uniqueItems": true}
|
|
| 454 |
+ ] |
|
| 455 |
+ }, |
|
| 456 |
+ |
|
| 457 |
+ "constraints": {
|
|
| 458 |
+ "service": {
|
|
| 459 |
+ "id": "#/definitions/constraints/service", |
|
| 460 |
+ "anyOf": [ |
|
| 461 |
+ {"required": ["build"]},
|
|
| 462 |
+ {"required": ["image"]}
|
|
| 463 |
+ ], |
|
| 464 |
+ "properties": {
|
|
| 465 |
+ "build": {
|
|
| 466 |
+ "required": ["context"] |
|
| 467 |
+ } |
|
| 468 |
+ } |
|
| 469 |
+ } |
|
| 470 |
+ } |
|
| 471 |
+ } |
|
| 472 |
+} |