From 2f3628aeccea07dd346c9ee364fb2da4b36b801e Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Wed, 27 Nov 2019 13:02:53 +0100 Subject: [PATCH 1/2] Readd support for `device_cgroup_rules` in compose files This readds support for `device_cgroup_rules` which was present in compose file format 2.4. Signed-off-by: Stefan Agner --- cli/compose/schema/bindata.go | 72 +++++++++---------- .../schema/data/config_schema_v3.9.json | 1 + 2 files changed, 37 insertions(+), 36 deletions(-) diff --git a/cli/compose/schema/bindata.go b/cli/compose/schema/bindata.go index aec2f70aa1c9..cd7fe4e8d368 100644 --- a/cli/compose/schema/bindata.go +++ b/cli/compose/schema/bindata.go @@ -583,45 +583,45 @@ ean7MQBPP+U4w19V/z+t/hsAAP//Fd/bF0ZHAAA= "/data/config_schema_v3.9.json": { name: "config_schema_v3.9.json", local: "data/config_schema_v3.9.json", - size: 18362, + size: 18436, modtime: 1518458244, compressed: ` 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 `, }, diff --git a/cli/compose/schema/data/config_schema_v3.9.json b/cli/compose/schema/data/config_schema_v3.9.json index 2557ef2ad12d..c3a2c89ad929 100644 --- a/cli/compose/schema/data/config_schema_v3.9.json +++ b/cli/compose/schema/data/config_schema_v3.9.json @@ -134,6 +134,7 @@ "additionalProperties": false }, "depends_on": {"$ref": "#/definitions/list_of_strings"}, + "device_cgroup_rules": {"$ref": "#/definitions/list_of_strings"}, "devices": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, "dns": {"$ref": "#/definitions/string_or_list"}, "dns_search": {"$ref": "#/definitions/string_or_list"}, From 468657a6998d6a9d668492eb85cf8b913bdbe8cf Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Wed, 27 Nov 2019 13:06:47 +0100 Subject: [PATCH 2/2] Add `device_cgroup_rules` to list of unsupported fields Currently `docker stack deploy` does not support this field hence add it to the list of unsupported fields. Signed-off-by: Stefan Agner --- cli/compose/types/types.go | 106 +++++++++++++++++++------------------ 1 file changed, 54 insertions(+), 52 deletions(-) diff --git a/cli/compose/types/types.go b/cli/compose/types/types.go index d582477d5550..5b612b2b78c1 100644 --- a/cli/compose/types/types.go +++ b/cli/compose/types/types.go @@ -13,6 +13,7 @@ var UnsupportedProperties = []string{ "cap_drop", "cgroupns_mode", "cgroup_parent", + "device_cgroup_rules", "devices", "domainname", "external_links", @@ -157,58 +158,59 @@ func (s Services) MarshalJSON() ([]byte, error) { type ServiceConfig struct { Name string `yaml:"-" json:"-"` - Build BuildConfig `yaml:",omitempty" json:"build,omitempty"` - CapAdd []string `mapstructure:"cap_add" yaml:"cap_add,omitempty" json:"cap_add,omitempty"` - CapDrop []string `mapstructure:"cap_drop" yaml:"cap_drop,omitempty" json:"cap_drop,omitempty"` - CgroupNSMode string `mapstructure:"cgroupns_mode" yaml:"cgroupns_mode,omitempty" json:"cgroupns_mode,omitempty"` - CgroupParent string `mapstructure:"cgroup_parent" yaml:"cgroup_parent,omitempty" json:"cgroup_parent,omitempty"` - Command ShellCommand `yaml:",omitempty" json:"command,omitempty"` - Configs []ServiceConfigObjConfig `yaml:",omitempty" json:"configs,omitempty"` - ContainerName string `mapstructure:"container_name" yaml:"container_name,omitempty" json:"container_name,omitempty"` - CredentialSpec CredentialSpecConfig `mapstructure:"credential_spec" yaml:"credential_spec,omitempty" json:"credential_spec,omitempty"` - DependsOn []string `mapstructure:"depends_on" yaml:"depends_on,omitempty" json:"depends_on,omitempty"` - Deploy DeployConfig `yaml:",omitempty" json:"deploy,omitempty"` - Devices []string `yaml:",omitempty" json:"devices,omitempty"` - DNS StringList `yaml:",omitempty" json:"dns,omitempty"` - DNSSearch StringList `mapstructure:"dns_search" yaml:"dns_search,omitempty" json:"dns_search,omitempty"` - DomainName string `mapstructure:"domainname" yaml:"domainname,omitempty" json:"domainname,omitempty"` - Entrypoint ShellCommand `yaml:",omitempty" json:"entrypoint,omitempty"` - Environment MappingWithEquals `yaml:",omitempty" json:"environment,omitempty"` - EnvFile StringList `mapstructure:"env_file" yaml:"env_file,omitempty" json:"env_file,omitempty"` - Expose StringOrNumberList `yaml:",omitempty" json:"expose,omitempty"` - ExternalLinks []string `mapstructure:"external_links" yaml:"external_links,omitempty" json:"external_links,omitempty"` - ExtraHosts HostsList `mapstructure:"extra_hosts" yaml:"extra_hosts,omitempty" json:"extra_hosts,omitempty"` - Hostname string `yaml:",omitempty" json:"hostname,omitempty"` - HealthCheck *HealthCheckConfig `yaml:",omitempty" json:"healthcheck,omitempty"` - Image string `yaml:",omitempty" json:"image,omitempty"` - Init *bool `yaml:",omitempty" json:"init,omitempty"` - Ipc string `yaml:",omitempty" json:"ipc,omitempty"` - Isolation string `mapstructure:"isolation" yaml:"isolation,omitempty" json:"isolation,omitempty"` - Labels Labels `yaml:",omitempty" json:"labels,omitempty"` - Links []string `yaml:",omitempty" json:"links,omitempty"` - Logging *LoggingConfig `yaml:",omitempty" json:"logging,omitempty"` - MacAddress string `mapstructure:"mac_address" yaml:"mac_address,omitempty" json:"mac_address,omitempty"` - NetworkMode string `mapstructure:"network_mode" yaml:"network_mode,omitempty" json:"network_mode,omitempty"` - Networks map[string]*ServiceNetworkConfig `yaml:",omitempty" json:"networks,omitempty"` - Pid string `yaml:",omitempty" json:"pid,omitempty"` - Ports []ServicePortConfig `yaml:",omitempty" json:"ports,omitempty"` - Privileged bool `yaml:",omitempty" json:"privileged,omitempty"` - ReadOnly bool `mapstructure:"read_only" yaml:"read_only,omitempty" json:"read_only,omitempty"` - Restart string `yaml:",omitempty" json:"restart,omitempty"` - Secrets []ServiceSecretConfig `yaml:",omitempty" json:"secrets,omitempty"` - SecurityOpt []string `mapstructure:"security_opt" yaml:"security_opt,omitempty" json:"security_opt,omitempty"` - ShmSize string `mapstructure:"shm_size" yaml:"shm_size,omitempty" json:"shm_size,omitempty"` - StdinOpen bool `mapstructure:"stdin_open" yaml:"stdin_open,omitempty" json:"stdin_open,omitempty"` - StopGracePeriod *Duration `mapstructure:"stop_grace_period" yaml:"stop_grace_period,omitempty" json:"stop_grace_period,omitempty"` - StopSignal string `mapstructure:"stop_signal" yaml:"stop_signal,omitempty" json:"stop_signal,omitempty"` - Sysctls Mapping `yaml:",omitempty" json:"sysctls,omitempty"` - Tmpfs StringList `yaml:",omitempty" json:"tmpfs,omitempty"` - Tty bool `mapstructure:"tty" yaml:"tty,omitempty" json:"tty,omitempty"` - Ulimits map[string]*UlimitsConfig `yaml:",omitempty" json:"ulimits,omitempty"` - User string `yaml:",omitempty" json:"user,omitempty"` - UserNSMode string `mapstructure:"userns_mode" yaml:"userns_mode,omitempty" json:"userns_mode,omitempty"` - Volumes []ServiceVolumeConfig `yaml:",omitempty" json:"volumes,omitempty"` - WorkingDir string `mapstructure:"working_dir" yaml:"working_dir,omitempty" json:"working_dir,omitempty"` + Build BuildConfig `yaml:",omitempty" json:"build,omitempty"` + CapAdd []string `mapstructure:"cap_add" yaml:"cap_add,omitempty" json:"cap_add,omitempty"` + CapDrop []string `mapstructure:"cap_drop" yaml:"cap_drop,omitempty" json:"cap_drop,omitempty"` + CgroupNSMode string `mapstructure:"cgroupns_mode" yaml:"cgroupns_mode,omitempty" json:"cgroupns_mode,omitempty"` + CgroupParent string `mapstructure:"cgroup_parent" yaml:"cgroup_parent,omitempty" json:"cgroup_parent,omitempty"` + Command ShellCommand `yaml:",omitempty" json:"command,omitempty"` + Configs []ServiceConfigObjConfig `yaml:",omitempty" json:"configs,omitempty"` + ContainerName string `mapstructure:"container_name" yaml:"container_name,omitempty" json:"container_name,omitempty"` + CredentialSpec CredentialSpecConfig `mapstructure:"credential_spec" yaml:"credential_spec,omitempty" json:"credential_spec,omitempty"` + DependsOn []string `mapstructure:"depends_on" yaml:"depends_on,omitempty" json:"depends_on,omitempty"` + Deploy DeployConfig `yaml:",omitempty" json:"deploy,omitempty"` + DeviceCgroupRules []string `yaml:",omitempty" json:"device_cgroup_rules,omitempty"` + Devices []string `yaml:",omitempty" json:"devices,omitempty"` + DNS StringList `yaml:",omitempty" json:"dns,omitempty"` + DNSSearch StringList `mapstructure:"dns_search" yaml:"dns_search,omitempty" json:"dns_search,omitempty"` + DomainName string `mapstructure:"domainname" yaml:"domainname,omitempty" json:"domainname,omitempty"` + Entrypoint ShellCommand `yaml:",omitempty" json:"entrypoint,omitempty"` + Environment MappingWithEquals `yaml:",omitempty" json:"environment,omitempty"` + EnvFile StringList `mapstructure:"env_file" yaml:"env_file,omitempty" json:"env_file,omitempty"` + Expose StringOrNumberList `yaml:",omitempty" json:"expose,omitempty"` + ExternalLinks []string `mapstructure:"external_links" yaml:"external_links,omitempty" json:"external_links,omitempty"` + ExtraHosts HostsList `mapstructure:"extra_hosts" yaml:"extra_hosts,omitempty" json:"extra_hosts,omitempty"` + Hostname string `yaml:",omitempty" json:"hostname,omitempty"` + HealthCheck *HealthCheckConfig `yaml:",omitempty" json:"healthcheck,omitempty"` + Image string `yaml:",omitempty" json:"image,omitempty"` + Init *bool `yaml:",omitempty" json:"init,omitempty"` + Ipc string `yaml:",omitempty" json:"ipc,omitempty"` + Isolation string `mapstructure:"isolation" yaml:"isolation,omitempty" json:"isolation,omitempty"` + Labels Labels `yaml:",omitempty" json:"labels,omitempty"` + Links []string `yaml:",omitempty" json:"links,omitempty"` + Logging *LoggingConfig `yaml:",omitempty" json:"logging,omitempty"` + MacAddress string `mapstructure:"mac_address" yaml:"mac_address,omitempty" json:"mac_address,omitempty"` + NetworkMode string `mapstructure:"network_mode" yaml:"network_mode,omitempty" json:"network_mode,omitempty"` + Networks map[string]*ServiceNetworkConfig `yaml:",omitempty" json:"networks,omitempty"` + Pid string `yaml:",omitempty" json:"pid,omitempty"` + Ports []ServicePortConfig `yaml:",omitempty" json:"ports,omitempty"` + Privileged bool `yaml:",omitempty" json:"privileged,omitempty"` + ReadOnly bool `mapstructure:"read_only" yaml:"read_only,omitempty" json:"read_only,omitempty"` + Restart string `yaml:",omitempty" json:"restart,omitempty"` + Secrets []ServiceSecretConfig `yaml:",omitempty" json:"secrets,omitempty"` + SecurityOpt []string `mapstructure:"security_opt" yaml:"security_opt,omitempty" json:"security_opt,omitempty"` + ShmSize string `mapstructure:"shm_size" yaml:"shm_size,omitempty" json:"shm_size,omitempty"` + StdinOpen bool `mapstructure:"stdin_open" yaml:"stdin_open,omitempty" json:"stdin_open,omitempty"` + StopGracePeriod *Duration `mapstructure:"stop_grace_period" yaml:"stop_grace_period,omitempty" json:"stop_grace_period,omitempty"` + StopSignal string `mapstructure:"stop_signal" yaml:"stop_signal,omitempty" json:"stop_signal,omitempty"` + Sysctls Mapping `yaml:",omitempty" json:"sysctls,omitempty"` + Tmpfs StringList `yaml:",omitempty" json:"tmpfs,omitempty"` + Tty bool `mapstructure:"tty" yaml:"tty,omitempty" json:"tty,omitempty"` + Ulimits map[string]*UlimitsConfig `yaml:",omitempty" json:"ulimits,omitempty"` + User string `yaml:",omitempty" json:"user,omitempty"` + UserNSMode string `mapstructure:"userns_mode" yaml:"userns_mode,omitempty" json:"userns_mode,omitempty"` + Volumes []ServiceVolumeConfig `yaml:",omitempty" json:"volumes,omitempty"` + WorkingDir string `mapstructure:"working_dir" yaml:"working_dir,omitempty" json:"working_dir,omitempty"` Extras map[string]interface{} `yaml:",inline" json:"-"` }