diff --git a/include/message_pb.hrl b/include/message_pb.hrl index cc8acf3..dd49a4f 100644 --- a/include/message_pb.hrl +++ b/include/message_pb.hrl @@ -12,7 +12,7 @@ -define('REQUESTFRAME_PB_H', true). -record('RequestFrame', {packet_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits - body :: {auth_request, message_pb:'AuthRequest'()} | {rpc_request, message_pb:'RpcRequest'()} | undefined % oneof + body :: {auth_request, message_pb:'AuthRequest'()} | {rpc_request, message_pb:'RpcRequest'()} | {container_request, message_pb:'ContainerRequest'()} | undefined % oneof }). -endif. @@ -31,6 +31,185 @@ }). -endif. +-ifndef('CONTAINERREF_PB_H'). +-define('CONTAINERREF_PB_H', true). +-record('ContainerRef', + {id = <<>> :: unicode:chardata() | undefined, % = 1, optional + name = <<>> :: unicode:chardata() | undefined % = 2, optional + }). +-endif. + +-ifndef('CONTAINERREQUEST.LIST_PB_H'). +-define('CONTAINERREQUEST.LIST_PB_H', true). +-record('ContainerRequest.List', + {all = false :: boolean() | 0 | 1 | undefined % = 1, optional + }). +-endif. + +-ifndef('CONTAINERREQUEST.DEPLOY_PB_H'). +-define('CONTAINERREQUEST.DEPLOY_PB_H', true). +-record('ContainerRequest.Deploy', + {task_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + params = undefined :: message_pb:'ContainerDeployParams'() | undefined % = 2, optional + }). +-endif. + +-ifndef('CONTAINERREQUEST.START_PB_H'). +-define('CONTAINERREQUEST.START_PB_H', true). +-record('ContainerRequest.Start', + {target = undefined :: message_pb:'ContainerRef'() | undefined % = 1, optional + }). +-endif. + +-ifndef('CONTAINERREQUEST.STOP_PB_H'). +-define('CONTAINERREQUEST.STOP_PB_H', true). +-record('ContainerRequest.Stop', + {target = undefined :: message_pb:'ContainerRef'() | undefined, % = 1, optional + timeout_seconds = 0 :: non_neg_integer() | undefined % = 2, optional, 32 bits + }). +-endif. + +-ifndef('CONTAINERREQUEST.KILL_PB_H'). +-define('CONTAINERREQUEST.KILL_PB_H', true). +-record('ContainerRequest.Kill', + {target = undefined :: message_pb:'ContainerRef'() | undefined, % = 1, optional + signal = <<>> :: unicode:chardata() | undefined % = 2, optional + }). +-endif. + +-ifndef('CONTAINERREQUEST.REMOVE_PB_H'). +-define('CONTAINERREQUEST.REMOVE_PB_H', true). +-record('ContainerRequest.Remove', + {target = undefined :: message_pb:'ContainerRef'() | undefined, % = 1, optional + force = false :: boolean() | 0 | 1 | undefined, % = 2, optional + remove_volumes = false :: boolean() | 0 | 1 | undefined % = 3, optional + }). +-endif. + +-ifndef('CONTAINERREQUEST.CONFIG_PB_H'). +-define('CONTAINERREQUEST.CONFIG_PB_H', true). +-record('ContainerRequest.Config', + {target = undefined :: message_pb:'ContainerRef'() | undefined, % = 1, optional + config = <<>> :: iodata() | undefined % = 2, optional + }). +-endif. + +-ifndef('CONTAINERREQUEST_PB_H'). +-define('CONTAINERREQUEST_PB_H', true). +-record('ContainerRequest', + {action :: {list, message_pb:'ContainerRequest.List'()} | {deploy, message_pb:'ContainerRequest.Deploy'()} | {start, message_pb:'ContainerRequest.Start'()} | {stop, message_pb:'ContainerRequest.Stop'()} | {kill, message_pb:'ContainerRequest.Kill'()} | {remove, message_pb:'ContainerRequest.Remove'()} | {config, message_pb:'ContainerRequest.Config'()} | undefined % oneof + }). +-endif. + +-ifndef('CONTAINERDEPLOYPARAMS_PB_H'). +-define('CONTAINERDEPLOYPARAMS_PB_H', true). +-record('ContainerDeployParams', + {container_name = <<>> :: unicode:chardata() | undefined, % = 1, optional + container_dir = <<>> :: unicode:chardata() | undefined, % = 2, optional + spec = undefined :: message_pb:'ContainerSpec'() | undefined % = 3, optional + }). +-endif. + +-ifndef('CONTAINERSPEC_PB_H'). +-define('CONTAINERSPEC_PB_H', true). +-record('ContainerSpec', + {image = <<>> :: unicode:chardata() | undefined, % = 1, optional + command = [] :: [unicode:chardata()] | undefined, % = 2, repeated + entrypoint = [] :: [unicode:chardata()] | undefined, % = 3, repeated + env = [] :: [unicode:chardata()] | undefined, % = 4, repeated + labels = [] :: [{unicode:chardata(), unicode:chardata()}] | undefined, % = 5 + volumes = [] :: [message_pb:'VolumeBind'()] | undefined, % = 6, repeated + user = <<>> :: unicode:chardata() | undefined, % = 7, optional + working_dir = <<>> :: unicode:chardata() | undefined, % = 8, optional + hostname = <<>> :: unicode:chardata() | undefined, % = 9, optional + expose = [] :: [message_pb:'PortExpose'()] | undefined, % = 10, repeated + networks = [] :: [unicode:chardata()] | undefined, % = 11, repeated + network_mode = <<>> :: unicode:chardata() | undefined, % = 12, optional + healthcheck = undefined :: message_pb:'Healthcheck'() | undefined, % = 13, optional + restart = undefined :: message_pb:'RestartPolicy'() | undefined, % = 14, optional + privileged = false :: boolean() | 0 | 1 | undefined, % = 15, optional + cap_add = [] :: [unicode:chardata()] | undefined, % = 16, repeated + cap_drop = [] :: [unicode:chardata()] | undefined, % = 17, repeated + devices = [] :: [message_pb:'DeviceMapping'()] | undefined, % = 18, repeated + resources = undefined :: message_pb:'ResourceLimits'() | undefined, % = 19, optional + ulimits = [] :: [message_pb:'Ulimit'()] | undefined, % = 20, repeated + tmpfs = [] :: [message_pb:'TmpfsMount'()] | undefined, % = 21, repeated + sysctls = [] :: [{unicode:chardata(), unicode:chardata()}] | undefined, % = 22 + extra_hosts = [] :: [unicode:chardata()] | undefined % = 23, repeated + }). +-endif. + +-ifndef('VOLUMEBIND_PB_H'). +-define('VOLUMEBIND_PB_H', true). +-record('VolumeBind', + {host_path = <<>> :: unicode:chardata() | undefined, % = 1, optional + container_path = <<>> :: unicode:chardata() | undefined, % = 2, optional + read_only = false :: boolean() | 0 | 1 | undefined % = 3, optional + }). +-endif. + +-ifndef('PORTEXPOSE_PB_H'). +-define('PORTEXPOSE_PB_H', true). +-record('PortExpose', + {container_port = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + protocol = <<>> :: unicode:chardata() | undefined % = 2, optional + }). +-endif. + +-ifndef('HEALTHCHECK_PB_H'). +-define('HEALTHCHECK_PB_H', true). +-record('Healthcheck', + {test = [] :: [unicode:chardata()] | undefined, % = 1, repeated + interval_ns = 0 :: non_neg_integer() | undefined, % = 2, optional, 64 bits + timeout_ns = 0 :: non_neg_integer() | undefined, % = 3, optional, 64 bits + retries = 0 :: non_neg_integer() | undefined % = 4, optional, 32 bits + }). +-endif. + +-ifndef('RESTARTPOLICY_PB_H'). +-define('RESTARTPOLICY_PB_H', true). +-record('RestartPolicy', + {name = <<>> :: unicode:chardata() | undefined, % = 1, optional + maximum_retry_count = 0 :: non_neg_integer() | undefined % = 2, optional, 32 bits + }). +-endif. + +-ifndef('DEVICEMAPPING_PB_H'). +-define('DEVICEMAPPING_PB_H', true). +-record('DeviceMapping', + {host_path = <<>> :: unicode:chardata() | undefined, % = 1, optional + container_path = <<>> :: unicode:chardata() | undefined, % = 2, optional + cgroup_permissions = <<>> :: unicode:chardata() | undefined % = 3, optional + }). +-endif. + +-ifndef('RESOURCELIMITS_PB_H'). +-define('RESOURCELIMITS_PB_H', true). +-record('ResourceLimits', + {memory_bytes = 0 :: non_neg_integer() | undefined, % = 1, optional, 64 bits + memory_reservation_bytes = 0 :: non_neg_integer() | undefined, % = 2, optional, 64 bits + nano_cpus = 0 :: non_neg_integer() | undefined, % = 3, optional, 64 bits + cpu_shares = 0 :: non_neg_integer() | undefined % = 4, optional, 64 bits + }). +-endif. + +-ifndef('ULIMIT_PB_H'). +-define('ULIMIT_PB_H', true). +-record('Ulimit', + {name = <<>> :: unicode:chardata() | undefined, % = 1, optional + soft = 0 :: non_neg_integer() | undefined, % = 2, optional, 64 bits + hard = 0 :: non_neg_integer() | undefined % = 3, optional, 64 bits + }). +-endif. + +-ifndef('TMPFSMOUNT_PB_H'). +-define('TMPFSMOUNT_PB_H', true). +-record('TmpfsMount', + {path = <<>> :: unicode:chardata() | undefined, % = 1, optional + options = <<>> :: unicode:chardata() | undefined % = 2, optional + }). +-endif. + -ifndef('AUTHREQUEST_PB_H'). -define('AUTHREQUEST_PB_H', true). -record('AuthRequest', diff --git a/proto/message.proto b/proto/message.proto index f4d20bc..9513346 100644 --- a/proto/message.proto +++ b/proto/message.proto @@ -6,6 +6,7 @@ message RequestFrame { oneof body { AuthRequest auth_request = 2; RpcRequest rpc_request = 3; + ContainerRequest container_request = 4; } } @@ -39,7 +40,8 @@ message ContainerRequest { } message Deploy { - ContainerDeployParams params = 1; + uint32 task_id = 1; + ContainerDeployParams params = 2; } message Start { @@ -62,6 +64,11 @@ message ContainerRequest { bool remove_volumes = 3; } + message Config { + ContainerRef target = 1; + bytes config = 2; + } + oneof action { List list = 10; Deploy deploy = 11; @@ -69,6 +76,7 @@ message ContainerRequest { Stop stop = 13; Kill kill = 14; Remove remove = 15; + Config config = 16; } } diff --git a/src/host/iot_host.erl b/src/host/iot_host.erl index b4cde78..f8f8495 100644 --- a/src/host/iot_host.erl +++ b/src/host/iot_host.erl @@ -95,39 +95,49 @@ attach_channel(Pid, ChannelPid) when is_pid(Pid), is_pid(ChannelPid) -> -spec get_containers(Pid :: pid()) -> {ok, Ref :: reference()} | {error, Reason :: any()}. get_containers(Pid) when is_pid(Pid) -> - gen_statem:call(Pid, {jsonrpc_call, self(), {<<"get_containers">>, <<"{}">>}}). + container_call(Pid, #'ContainerRequest'{action = {list, #'ContainerRequest.List'{all = true}}}). -spec config_container(Pid :: pid(), ContainerName :: binary(), ConfigJson :: binary()) -> {ok, Ref :: reference()} | {error, Reason :: any()}. config_container(Pid, ContainerName, ConfigJson) when is_pid(Pid), is_binary(ContainerName), is_binary(ConfigJson) -> - Params = jiffy:encode(#{ - <<"container_name">> => ContainerName, - <<"config">> => ConfigJson - }, [force_utf8]), - gen_statem:call(Pid, {jsonrpc_call, self(), {<<"config_container">>, Params}}). + container_call(Pid, #'ContainerRequest'{action = {config, #'ContainerRequest.Config'{ + target = container_ref(ContainerName), + config = ConfigJson + }}}). --spec deploy_container(Pid :: pid(), TaskId :: integer(), Params :: binary()) -> {ok, Ref :: reference()} | {error, Reason :: any()}. -deploy_container(Pid, TaskId, Params) when is_pid(Pid), is_integer(TaskId), is_binary(Params) -> - gen_statem:call(Pid, {jsonrpc_call, self(), {<<"deploy">>, Params}}). +-spec deploy_container(Pid :: pid(), TaskId :: integer(), Config :: map()) -> {ok, Ref :: reference()} | {error, Reason :: any()}. +deploy_container(Pid, TaskId, Config) when is_pid(Pid), is_integer(TaskId), is_map(Config) -> + case build_deploy_request(TaskId, Config) of + {ok, Request} -> + container_call(Pid, Request); + {error, Reason} -> + {error, Reason} + end. -spec start_container(Pid :: pid(), ContainerName :: binary()) -> {ok, Ref :: reference()} | {error, Reason :: any()}. start_container(Pid, ContainerName) when is_pid(Pid), is_binary(ContainerName) -> - Params = jiffy:encode(#{<<"container_name">> => ContainerName}, [force_utf8]), - gen_statem:call(Pid, {jsonrpc_call, self(), {<<"start_container">>, Params}}). + container_call(Pid, #'ContainerRequest'{action = {start, #'ContainerRequest.Start'{target = container_ref(ContainerName)}}}). -spec stop_container(Pid :: pid(), ContainerName :: binary()) -> {ok, Ref :: reference()} | {error, Reason :: any()}. stop_container(Pid, ContainerName) when is_pid(Pid), is_binary(ContainerName) -> - Params = jiffy:encode(#{<<"container_name">> => ContainerName}, [force_utf8]), - gen_statem:call(Pid, {jsonrpc_call, self(), {<<"stop_container">>, Params}}). + container_call(Pid, #'ContainerRequest'{action = {stop, #'ContainerRequest.Stop'{ + target = container_ref(ContainerName), + timeout_seconds = 0 + }}}). -spec kill_container(Pid :: pid(), ContainerName :: binary()) -> {ok, Ref :: reference()} | {error, Reason :: any()}. kill_container(Pid, ContainerName) when is_pid(Pid), is_binary(ContainerName) -> - Params = jiffy:encode(#{<<"container_name">> => ContainerName}, [force_utf8]), - gen_statem:call(Pid, {jsonrpc_call, self(), {<<"kill_container">>, Params}}). + container_call(Pid, #'ContainerRequest'{action = {kill, #'ContainerRequest.Kill'{ + target = container_ref(ContainerName), + signal = <<>> + }}}). -spec remove_container(Pid :: pid(), ContainerName :: binary()) -> {ok, Ref :: reference()} | {error, Reason :: any()}. remove_container(Pid, ContainerName) when is_pid(Pid), is_binary(ContainerName) -> - Params = jiffy:encode(#{<<"container_name">> => ContainerName}, [force_utf8]), - gen_statem:call(Pid, {jsonrpc_call, self(), {<<"remove_container">>, Params}}). + container_call(Pid, #'ContainerRequest'{action = {remove, #'ContainerRequest.Remove'{ + target = container_ref(ContainerName), + force = false, + remove_volumes = false + }}}). -spec await_reply(Pid :: pid(), Ref :: reference(), Timeout :: integer()) -> {ok, Result :: binary()} | {error, Code :: integer(), Reason :: binary()}. @@ -229,6 +239,16 @@ handle_event({call, From}, {jsonrpc_call, ReceiverPid, RpcCall}, _, State = #sta {keep_state, State, [{reply, From, {error, <<"主机离线,发送请求失败"/utf8>>}}]} end; +handle_event({call, From}, {container_call, ReceiverPid, Request}, _, State = #state{uuid = UUID, channel_pid = ChannelPid, has_session = HasSession}) -> + case HasSession andalso is_pid(ChannelPid) of + true -> + Ref = tcp_channel:container_call(ChannelPid, ReceiverPid, Request), + {keep_state, State, [{reply, From, {ok, Ref}}]}; + false -> + logger:debug("[iot_host] uuid: ~p, invalid state: ~p", [UUID, state_map(State)]), + {keep_state, State, [{reply, From, {error, <<"主机离线,发送请求失败"/utf8>>}}]} + end; + handle_event({call, From}, {cancel_jsonrpc_call, Ref}, _, State = #state{channel_pid = ChannelPid}) -> case is_pid(ChannelPid) of true -> @@ -381,6 +401,320 @@ code_change(_OldVsn, StateName, State = #state{}, _Extra) -> %%% Internal functions %%%=================================================================== +-spec container_call(Pid :: pid(), Request :: message_pb:'ContainerRequest'()) -> + {ok, Ref :: reference()} | {error, Reason :: any()}. +container_call(Pid, Request) when is_pid(Pid), is_record(Request, 'ContainerRequest') -> + gen_statem:call(Pid, {container_call, self(), Request}). + +-spec container_ref(ContainerName :: binary()) -> message_pb:'ContainerRef'(). +container_ref(ContainerName) when is_binary(ContainerName) -> + #'ContainerRef'{name = ContainerName}. + +-spec build_deploy_request(TaskId :: integer(), Config :: map()) -> + {ok, message_pb:'ContainerRequest'()} | {error, binary()}. +build_deploy_request(TaskId, Config) when is_integer(TaskId), is_map(Config), TaskId >= 0 -> + try + ensure_supported_deploy_config(Config), + Params = build_container_deploy_params(Config), + {ok, #'ContainerRequest'{action = {deploy, #'ContainerRequest.Deploy'{task_id = TaskId, params = Params}}}} + catch + throw:{error, Reason} -> + {error, Reason} + end. + +-spec ensure_supported_deploy_config(Config :: map()) -> ok. +ensure_supported_deploy_config(Config) when is_map(Config) -> + UnsupportedKeys = [Key || Key <- [<<"ports">>], maps:is_key(Key, Config)], + case UnsupportedKeys of + [] -> + ok; + _ -> + Unsupported = iolist_to_binary(lists:join(<<", ">>, UnsupportedKeys)), + throw({error, <<"unsupported container config keys: ", Unsupported/binary>>}) + end. + +-spec build_container_deploy_params(Config :: map()) -> message_pb:'ContainerDeployParams'(). +build_container_deploy_params(Config) when is_map(Config) -> + ContainerName = maps:get(<<"container_name">>, Config), + ContainerDir = maps:get(<<"container_dir">>, Config, <<>>), + Spec = build_container_spec(Config), + #'ContainerDeployParams'{ + container_name = ContainerName, + container_dir = ContainerDir, + spec = Spec + }. + +-spec build_container_spec(Config :: map()) -> message_pb:'ContainerSpec'(). +build_container_spec(Config) when is_map(Config) -> + Volumes = build_volume_binds(maps:get(<<"volumes">>, Config, [])), + Expose = build_port_exposes(maps:get(<<"expose">>, Config, [])), + Restart = build_restart_policy(maps:get(<<"restart">>, Config)), + Devices = build_device_mappings(maps:get(<<"devices">>, Config, [])), + Resources = build_resource_limits(Config), + Ulimits = build_ulimits(maps:get(<<"ulimits">>, Config, #{})), + Tmpfs = build_tmpfs_mounts(maps:get(<<"tmpfs">>, Config, [])), + Healthcheck = build_healthcheck(maps:get(<<"healthcheck">>, Config, undefined)), + #'ContainerSpec'{ + image = maps:get(<<"image">>, Config), + command = maps:get(<<"command">>, Config), + entrypoint = maps:get(<<"entrypoint">>, Config, []), + env = maps:get(<<"envs">>, Config, []), + labels = maps:to_list(maps:get(<<"labels">>, Config, #{})), + volumes = Volumes, + user = maps:get(<<"user">>, Config, <<>>), + working_dir = maps:get(<<"working_dir">>, Config, <<>>), + hostname = maps:get(<<"hostname">>, Config, <<>>), + expose = Expose, + networks = maps:get(<<"networks">>, Config, []), + network_mode = maps:get(<<"network_mode">>, Config, <<>>), + healthcheck = Healthcheck, + restart = Restart, + privileged = maps:get(<<"privileged">>, Config, false), + cap_add = maps:get(<<"cap_add">>, Config, []), + cap_drop = maps:get(<<"cap_drop">>, Config, []), + devices = Devices, + resources = Resources, + ulimits = Ulimits, + tmpfs = Tmpfs, + sysctls = maps:to_list(maps:get(<<"sysctls">>, Config, #{})), + extra_hosts = maps:get(<<"extra_hosts">>, Config, []) + }. + +-spec build_restart_policy(binary()) -> message_pb:'RestartPolicy'(). +build_restart_policy(Restart0) when is_binary(Restart0) -> + case binary:split(Restart0, <<":">>) of + [Name, RetryCountBin] -> + #'RestartPolicy'{name = Name, maximum_retry_count = parse_uint32(RetryCountBin, <<"restart">>)}; + [Name] -> + #'RestartPolicy'{name = Name, maximum_retry_count = 0} + end. + +-spec build_healthcheck(undefined | map()) -> undefined | message_pb:'Healthcheck'(). +build_healthcheck(undefined) -> + undefined; +build_healthcheck(Healthcheck) when is_map(Healthcheck) -> + #'Healthcheck'{ + test = maps:get(<<"test">>, Healthcheck, []), + interval_ns = parse_duration_ns(maps:get(<<"interval">>, Healthcheck, <<"0s">>), <<"healthcheck.interval">>), + timeout_ns = parse_duration_ns(maps:get(<<"timeout">>, Healthcheck, <<"0s">>), <<"healthcheck.timeout">>), + retries = maps:get(<<"retries">>, Healthcheck, 0) + }. + +-spec build_resource_limits(map()) -> undefined | message_pb:'ResourceLimits'(). +build_resource_limits(Config) when is_map(Config) -> + MemoryBytes = parse_optional_size_bytes(maps:get(<<"mem_limit">>, Config, undefined), <<"mem_limit">>), + ReservationBytes = parse_optional_size_bytes(maps:get(<<"mem_reservation">>, Config, undefined), <<"mem_reservation">>), + NanoCpus = parse_optional_nano_cpus(maps:get(<<"cpus">>, Config, undefined)), + CpuShares = maps:get(<<"cpu_shares">>, Config, undefined), + case {MemoryBytes, ReservationBytes, NanoCpus, CpuShares} of + {undefined, undefined, undefined, undefined} -> + undefined; + _ -> + #'ResourceLimits'{ + memory_bytes = default_uint64(MemoryBytes), + memory_reservation_bytes = default_uint64(ReservationBytes), + nano_cpus = default_uint64(NanoCpus), + cpu_shares = default_uint64(CpuShares) + } + end. + +-spec default_uint64(undefined | non_neg_integer()) -> non_neg_integer(). +default_uint64(undefined) -> + 0; +default_uint64(Value) when is_integer(Value), Value >= 0 -> + Value. + +-spec parse_optional_nano_cpus(undefined | number()) -> undefined | non_neg_integer(). +parse_optional_nano_cpus(undefined) -> + undefined; +parse_optional_nano_cpus(Cpus) when is_integer(Cpus), Cpus >= 0 -> + Cpus * 1000000000; +parse_optional_nano_cpus(Cpus) when is_float(Cpus), Cpus >= 0 -> + trunc(Cpus * 1000000000). + +-spec build_volume_binds([binary()]) -> [message_pb:'VolumeBind'()]. +build_volume_binds(VolumeSpecs) when is_list(VolumeSpecs) -> + [build_volume_bind(VolumeSpec) || VolumeSpec <- VolumeSpecs]. + +-spec build_volume_bind(binary()) -> message_pb:'VolumeBind'(). +build_volume_bind(VolumeSpec) when is_binary(VolumeSpec) -> + case binary:split(VolumeSpec, <<":">>, [global]) of + [HostPath, ContainerPath] when HostPath =/= <<>>, ContainerPath =/= <<>> -> + #'VolumeBind'{host_path = HostPath, container_path = ContainerPath, read_only = false}; + [HostPath, ContainerPath | Modes] when HostPath =/= <<>>, ContainerPath =/= <<>> -> + #'VolumeBind'{host_path = HostPath, container_path = ContainerPath, read_only = lists:member(<<"ro">>, Modes)}; + _ -> + throw({error, <<"invalid volume binding">>}) + end. + +-spec build_port_exposes([binary()]) -> [message_pb:'PortExpose'()]. +build_port_exposes(ExposeSpecs) when is_list(ExposeSpecs) -> + [build_port_expose(ExposeSpec) || ExposeSpec <- ExposeSpecs]. + +-spec build_port_expose(binary()) -> message_pb:'PortExpose'(). +build_port_expose(ExposeSpec) when is_binary(ExposeSpec) -> + case binary:split(ExposeSpec, <<"/">>) of + [PortBin] -> + #'PortExpose'{container_port = parse_uint32(PortBin, <<"expose">>), protocol = <<"tcp">>}; + [PortBin, Protocol] -> + #'PortExpose'{container_port = parse_uint32(PortBin, <<"expose">>), protocol = Protocol} + end. + +-spec build_device_mappings([binary()]) -> [message_pb:'DeviceMapping'()]. +build_device_mappings(DeviceSpecs) when is_list(DeviceSpecs) -> + [build_device_mapping(DeviceSpec) || DeviceSpec <- DeviceSpecs]. + +-spec build_device_mapping(binary()) -> message_pb:'DeviceMapping'(). +build_device_mapping(DeviceSpec) when is_binary(DeviceSpec) -> + case binary:split(DeviceSpec, <<":">>, [global]) of + [HostPath, ContainerPath] when HostPath =/= <<>>, ContainerPath =/= <<>> -> + #'DeviceMapping'{host_path = HostPath, container_path = ContainerPath, cgroup_permissions = <<"rwm">>}; + [HostPath, ContainerPath, Permissions] when HostPath =/= <<>>, ContainerPath =/= <<>>, Permissions =/= <<>> -> + #'DeviceMapping'{host_path = HostPath, container_path = ContainerPath, cgroup_permissions = Permissions}; + _ -> + throw({error, <<"invalid device mapping">>}) + end. + +-spec build_ulimits(map()) -> [message_pb:'Ulimit'()]. +build_ulimits(Ulimits) when is_map(Ulimits) -> + [build_ulimit(Name, Value) || {Name, Value} <- maps:to_list(Ulimits)]. + +-spec build_ulimit(binary(), binary()) -> message_pb:'Ulimit'(). +build_ulimit(Name, Value) when is_binary(Name), is_binary(Value) -> + case binary:split(Value, <<":">>) of + [SoftBin, HardBin] -> + #'Ulimit'{name = Name, soft = parse_uint64(SoftBin, <<"ulimits.soft">>), hard = parse_uint64(HardBin, <<"ulimits.hard">>)}; + [LimitBin] -> + Limit = parse_uint64(LimitBin, <<"ulimits.limit">>), + #'Ulimit'{name = Name, soft = Limit, hard = Limit} + end. + +-spec build_tmpfs_mounts([binary()]) -> [message_pb:'TmpfsMount'()]. +build_tmpfs_mounts(TmpfsSpecs) when is_list(TmpfsSpecs) -> + [build_tmpfs_mount(TmpfsSpec) || TmpfsSpec <- TmpfsSpecs]. + +-spec build_tmpfs_mount(binary()) -> message_pb:'TmpfsMount'(). +build_tmpfs_mount(TmpfsSpec) when is_binary(TmpfsSpec) -> + case binary:split(TmpfsSpec, <<":">>) of + [Path] when Path =/= <<>> -> + #'TmpfsMount'{path = Path, options = <<>>}; + [Path, Options] when Path =/= <<>> -> + #'TmpfsMount'{path = Path, options = Options}; + _ -> + throw({error, <<"invalid tmpfs mount">>}) + end. + +-spec parse_optional_size_bytes(undefined | binary(), binary()) -> undefined | non_neg_integer(). +parse_optional_size_bytes(undefined, _Field) -> + undefined; +parse_optional_size_bytes(Value, Field) when is_binary(Value) -> + parse_size_bytes(Value, Field). + +-spec parse_duration_ns(binary() | integer(), binary()) -> non_neg_integer(). +parse_duration_ns(Value, _Field) when is_integer(Value), Value >= 0 -> + Value; +parse_duration_ns(Value, Field) when is_binary(Value) -> + parse_scaled_uint64(Value, Field, #{ + <<"ns">> => 1, + <<"us">> => 1000, + <<"ms">> => 1000000, + <<"s">> => 1000000000, + <<"m">> => 60000000000, + <<"h">> => 3600000000000, + <<>> => 1000000000 + }). + +-spec parse_size_bytes(binary(), binary()) -> non_neg_integer(). +parse_size_bytes(Value, Field) when is_binary(Value) -> + parse_scaled_uint64(Value, Field, #{ + <<"b">> => 1, + <<"k">> => 1024, + <<"kb">> => 1024, + <<"ki">> => 1024, + <<"kib">> => 1024, + <<"m">> => 1048576, + <<"mb">> => 1048576, + <<"mi">> => 1048576, + <<"mib">> => 1048576, + <<"g">> => 1073741824, + <<"gb">> => 1073741824, + <<"gi">> => 1073741824, + <<"gib">> => 1073741824, + <<"t">> => 1099511627776, + <<"tb">> => 1099511627776, + <<"ti">> => 1099511627776, + <<"tib">> => 1099511627776, + <<>> => 1 + }). + +-spec parse_scaled_uint64(binary(), binary(), map()) -> non_neg_integer(). +parse_scaled_uint64(Value0, Field, Multipliers) when is_binary(Value0), is_binary(Field), is_map(Multipliers) -> + Value = trim_binary(Value0), + LowerValue = lower_binary(Value), + {NumberBin, Unit} = split_numeric_suffix(LowerValue), + case maps:get(Unit, Multipliers, undefined) of + undefined -> + throw({error, <<"invalid value for ", Field/binary, ": ", Value0/binary>>}); + Multiplier -> + trunc(parse_decimal(NumberBin, Field) * Multiplier) + end. + +-spec parse_uint32(binary(), binary()) -> non_neg_integer(). +parse_uint32(Value, Field) when is_binary(Value), is_binary(Field) -> + Parsed = parse_uint64(Value, Field), + case Parsed =< 16#FFFFFFFF of + true -> + Parsed; + false -> + throw({error, <<"value overflow for ", Field/binary>>}) + end. + +-spec parse_uint64(binary(), binary()) -> non_neg_integer(). +parse_uint64(Value0, Field) when is_binary(Value0), is_binary(Field) -> + Value = trim_binary(Value0), + case catch binary_to_integer(Value) of + Parsed when is_integer(Parsed), Parsed >= 0 -> + Parsed; + _ -> + throw({error, <<"invalid unsigned integer for ", Field/binary, ": ", Value0/binary>>}) + end. + +-spec parse_decimal(binary(), binary()) -> float(). +parse_decimal(Value, Field) when is_binary(Value), is_binary(Field) -> + case catch binary_to_integer(Value) of + ParsedInt when is_integer(ParsedInt), ParsedInt >= 0 -> + float(ParsedInt); + _ -> + case catch binary_to_float(Value) of + ParsedFloat when is_float(ParsedFloat), ParsedFloat >= 0 -> + ParsedFloat; + _ -> + throw({error, <<"invalid number for ", Field/binary, ": ", Value/binary>>}) + end + end. + +-spec split_numeric_suffix(binary()) -> {binary(), binary()}. +split_numeric_suffix(Value) when is_binary(Value) -> + split_numeric_suffix(Value, <<>>). + +-spec split_numeric_suffix(binary(), binary()) -> {binary(), binary()}. +split_numeric_suffix(<>, Acc) + when (Char >= $0 andalso Char =< $9) orelse Char =:= $. -> + split_numeric_suffix(Rest, <>); +split_numeric_suffix(Rest, <<>>) -> + throw({error, <<"invalid numeric value: ", Rest/binary>>}); +split_numeric_suffix(Rest, Acc) -> + {Acc, Rest}. + +-spec trim_binary(binary()) -> binary(). +trim_binary(Value) when is_binary(Value) -> + Trimmed = string:trim(binary_to_list(Value)), + list_to_binary(Trimmed). + +-spec lower_binary(binary()) -> binary(). +lower_binary(Value) when is_binary(Value) -> + list_to_binary(string:lowercase(binary_to_list(Value))). + -spec get_route_key(binary()) -> binary(). get_route_key(<<"">>) -> <<"/">>; diff --git a/src/protobuf/message_pb.erl b/src/protobuf/message_pb.erl index 6d6dd87..1506e6f 100644 --- a/src/protobuf/message_pb.erl +++ b/src/protobuf/message_pb.erl @@ -60,6 +60,44 @@ -type 'CastFrame'() :: #'CastFrame'{}. +-type 'ContainerRef'() :: #'ContainerRef'{}. + +-type 'ContainerRequest.List'() :: #'ContainerRequest.List'{}. + +-type 'ContainerRequest.Deploy'() :: #'ContainerRequest.Deploy'{}. + +-type 'ContainerRequest.Start'() :: #'ContainerRequest.Start'{}. + +-type 'ContainerRequest.Stop'() :: #'ContainerRequest.Stop'{}. + +-type 'ContainerRequest.Kill'() :: #'ContainerRequest.Kill'{}. + +-type 'ContainerRequest.Remove'() :: #'ContainerRequest.Remove'{}. + +-type 'ContainerRequest.Config'() :: #'ContainerRequest.Config'{}. + +-type 'ContainerRequest'() :: #'ContainerRequest'{}. + +-type 'ContainerDeployParams'() :: #'ContainerDeployParams'{}. + +-type 'ContainerSpec'() :: #'ContainerSpec'{}. + +-type 'VolumeBind'() :: #'VolumeBind'{}. + +-type 'PortExpose'() :: #'PortExpose'{}. + +-type 'Healthcheck'() :: #'Healthcheck'{}. + +-type 'RestartPolicy'() :: #'RestartPolicy'{}. + +-type 'DeviceMapping'() :: #'DeviceMapping'{}. + +-type 'ResourceLimits'() :: #'ResourceLimits'{}. + +-type 'Ulimit'() :: #'Ulimit'{}. + +-type 'TmpfsMount'() :: #'TmpfsMount'{}. + -type 'AuthRequest'() :: #'AuthRequest'{}. -type 'AuthReply'() :: #'AuthReply'{}. @@ -80,11 +118,12 @@ -type 'TaskEventStream'() :: #'TaskEventStream'{}. --export_type(['RequestFrame'/0, 'ResponseFrame'/0, 'CastFrame'/0, 'AuthRequest'/0, 'AuthReply'/0, 'Pub'/0, 'Command'/0, 'RpcRequest'/0, 'RpcReply.RpcResult'/0, 'RpcReply.RpcError'/0, 'RpcReply'/0, 'Data'/0, 'TaskEventStream'/0]). --type '$msg_name'() :: 'RequestFrame' | 'ResponseFrame' | 'CastFrame' | 'AuthRequest' | 'AuthReply' | 'Pub' | 'Command' | 'RpcRequest' | 'RpcReply.RpcResult' | 'RpcReply.RpcError' | 'RpcReply' | 'Data' | 'TaskEventStream'. --type '$msg'() :: 'RequestFrame'() | 'ResponseFrame'() | 'CastFrame'() | 'AuthRequest'() | 'AuthReply'() | 'Pub'() | 'Command'() | 'RpcRequest'() | 'RpcReply.RpcResult'() | 'RpcReply.RpcError'() | 'RpcReply'() | 'Data'() | 'TaskEventStream'(). +-export_type(['RequestFrame'/0, 'ResponseFrame'/0, 'CastFrame'/0, 'ContainerRef'/0, 'ContainerRequest.List'/0, 'ContainerRequest.Deploy'/0, 'ContainerRequest.Start'/0, 'ContainerRequest.Stop'/0, 'ContainerRequest.Kill'/0, 'ContainerRequest.Remove'/0, 'ContainerRequest.Config'/0, 'ContainerRequest'/0, 'ContainerDeployParams'/0, 'ContainerSpec'/0, 'VolumeBind'/0, 'PortExpose'/0, 'Healthcheck'/0, 'RestartPolicy'/0, 'DeviceMapping'/0, 'ResourceLimits'/0, 'Ulimit'/0, 'TmpfsMount'/0, 'AuthRequest'/0, 'AuthReply'/0, 'Pub'/0, 'Command'/0, 'RpcRequest'/0, 'RpcReply.RpcResult'/0, 'RpcReply.RpcError'/0, 'RpcReply'/0, 'Data'/0, 'TaskEventStream'/0]). +-type '$msg_name'() :: 'RequestFrame' | 'ResponseFrame' | 'CastFrame' | 'ContainerRef' | 'ContainerRequest.List' | 'ContainerRequest.Deploy' | 'ContainerRequest.Start' | 'ContainerRequest.Stop' | 'ContainerRequest.Kill' | 'ContainerRequest.Remove' | 'ContainerRequest.Config' | 'ContainerRequest' | 'ContainerDeployParams' | 'ContainerSpec' | 'VolumeBind' | 'PortExpose' | 'Healthcheck' | 'RestartPolicy' | 'DeviceMapping' | 'ResourceLimits' | 'Ulimit' | 'TmpfsMount' | 'AuthRequest' | 'AuthReply' | 'Pub' | 'Command' | 'RpcRequest' | 'RpcReply.RpcResult' | 'RpcReply.RpcError' | 'RpcReply' | 'Data' | 'TaskEventStream'. +-type '$msg'() :: 'RequestFrame'() | 'ResponseFrame'() | 'CastFrame'() | 'ContainerRef'() | 'ContainerRequest.List'() | 'ContainerRequest.Deploy'() | 'ContainerRequest.Start'() | 'ContainerRequest.Stop'() | 'ContainerRequest.Kill'() | 'ContainerRequest.Remove'() | 'ContainerRequest.Config'() | 'ContainerRequest'() | 'ContainerDeployParams'() | 'ContainerSpec'() | 'VolumeBind'() | 'PortExpose'() | 'Healthcheck'() | 'RestartPolicy'() | 'DeviceMapping'() | 'ResourceLimits'() | 'Ulimit'() | 'TmpfsMount'() | 'AuthRequest'() | 'AuthReply'() | 'Pub'() | 'Command'() | 'RpcRequest'() | 'RpcReply.RpcResult'() | 'RpcReply.RpcError'() | 'RpcReply'() | 'Data'() | 'TaskEventStream'(). -export_type(['$msg_name'/0, '$msg'/0]). +-record('map',{key, value}). -if(?OTP_RELEASE >= 24). -dialyzer({no_underspecs, encode_msg/1}). -endif. @@ -112,6 +151,25 @@ encode_msg(Msg, MsgName, Opts) -> 'RequestFrame' -> encode_msg_RequestFrame(id(Msg, TrUserData), TrUserData); 'ResponseFrame' -> encode_msg_ResponseFrame(id(Msg, TrUserData), TrUserData); 'CastFrame' -> encode_msg_CastFrame(id(Msg, TrUserData), TrUserData); + 'ContainerRef' -> encode_msg_ContainerRef(id(Msg, TrUserData), TrUserData); + 'ContainerRequest.List' -> 'encode_msg_ContainerRequest.List'(id(Msg, TrUserData), TrUserData); + 'ContainerRequest.Deploy' -> 'encode_msg_ContainerRequest.Deploy'(id(Msg, TrUserData), TrUserData); + 'ContainerRequest.Start' -> 'encode_msg_ContainerRequest.Start'(id(Msg, TrUserData), TrUserData); + 'ContainerRequest.Stop' -> 'encode_msg_ContainerRequest.Stop'(id(Msg, TrUserData), TrUserData); + 'ContainerRequest.Kill' -> 'encode_msg_ContainerRequest.Kill'(id(Msg, TrUserData), TrUserData); + 'ContainerRequest.Remove' -> 'encode_msg_ContainerRequest.Remove'(id(Msg, TrUserData), TrUserData); + 'ContainerRequest.Config' -> 'encode_msg_ContainerRequest.Config'(id(Msg, TrUserData), TrUserData); + 'ContainerRequest' -> encode_msg_ContainerRequest(id(Msg, TrUserData), TrUserData); + 'ContainerDeployParams' -> encode_msg_ContainerDeployParams(id(Msg, TrUserData), TrUserData); + 'ContainerSpec' -> encode_msg_ContainerSpec(id(Msg, TrUserData), TrUserData); + 'VolumeBind' -> encode_msg_VolumeBind(id(Msg, TrUserData), TrUserData); + 'PortExpose' -> encode_msg_PortExpose(id(Msg, TrUserData), TrUserData); + 'Healthcheck' -> encode_msg_Healthcheck(id(Msg, TrUserData), TrUserData); + 'RestartPolicy' -> encode_msg_RestartPolicy(id(Msg, TrUserData), TrUserData); + 'DeviceMapping' -> encode_msg_DeviceMapping(id(Msg, TrUserData), TrUserData); + 'ResourceLimits' -> encode_msg_ResourceLimits(id(Msg, TrUserData), TrUserData); + 'Ulimit' -> encode_msg_Ulimit(id(Msg, TrUserData), TrUserData); + 'TmpfsMount' -> encode_msg_TmpfsMount(id(Msg, TrUserData), TrUserData); 'AuthRequest' -> encode_msg_AuthRequest(id(Msg, TrUserData), TrUserData); 'AuthReply' -> encode_msg_AuthReply(id(Msg, TrUserData), TrUserData); 'Pub' -> encode_msg_Pub(id(Msg, TrUserData), TrUserData); @@ -142,7 +200,8 @@ encode_msg_RequestFrame(#'RequestFrame'{packet_id = F1, body = F2}, Bin, TrUserD true -> case id(F2, TrUserData) of {auth_request, TF2} -> begin TrTF2 = id(TF2, TrUserData), e_mfield_RequestFrame_auth_request(TrTF2, <>, TrUserData) end; - {rpc_request, TF2} -> begin TrTF2 = id(TF2, TrUserData), e_mfield_RequestFrame_rpc_request(TrTF2, <>, TrUserData) end + {rpc_request, TF2} -> begin TrTF2 = id(TF2, TrUserData), e_mfield_RequestFrame_rpc_request(TrTF2, <>, TrUserData) end; + {container_request, TF2} -> begin TrTF2 = id(TF2, TrUserData), e_mfield_RequestFrame_container_request(TrTF2, <>, TrUserData) end end end. @@ -181,6 +240,667 @@ encode_msg_CastFrame(#'CastFrame'{body = F1}, Bin, TrUserData) -> end end. +encode_msg_ContainerRef(Msg, TrUserData) -> encode_msg_ContainerRef(Msg, <<>>, TrUserData). + + +encode_msg_ContainerRef(#'ContainerRef'{id = F1, name = F2}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + case is_empty_string(TrF1) of + true -> Bin; + false -> e_type_string(TrF1, <>, TrUserData) + end + end + end, + if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) + end + end + end. + +'encode_msg_ContainerRequest.List'(Msg, TrUserData) -> 'encode_msg_ContainerRequest.List'(Msg, <<>>, TrUserData). + + +'encode_msg_ContainerRequest.List'(#'ContainerRequest.List'{all = F1}, Bin, TrUserData) -> + if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= false -> Bin; + true -> e_type_bool(TrF1, <>, TrUserData) + end + end + end. + +'encode_msg_ContainerRequest.Deploy'(Msg, TrUserData) -> 'encode_msg_ContainerRequest.Deploy'(Msg, <<>>, TrUserData). + + +'encode_msg_ContainerRequest.Deploy'(#'ContainerRequest.Deploy'{task_id = F1, params = F2}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= 0 -> Bin; + true -> e_varint(TrF1, <>, TrUserData) + end + end + end, + if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + if TrF2 =:= undefined -> B1; + true -> 'e_mfield_ContainerRequest.Deploy_params'(TrF2, <>, TrUserData) + end + end + end. + +'encode_msg_ContainerRequest.Start'(Msg, TrUserData) -> 'encode_msg_ContainerRequest.Start'(Msg, <<>>, TrUserData). + + +'encode_msg_ContainerRequest.Start'(#'ContainerRequest.Start'{target = F1}, Bin, TrUserData) -> + if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= undefined -> Bin; + true -> 'e_mfield_ContainerRequest.Start_target'(TrF1, <>, TrUserData) + end + end + end. + +'encode_msg_ContainerRequest.Stop'(Msg, TrUserData) -> 'encode_msg_ContainerRequest.Stop'(Msg, <<>>, TrUserData). + + +'encode_msg_ContainerRequest.Stop'(#'ContainerRequest.Stop'{target = F1, timeout_seconds = F2}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= undefined -> Bin; + true -> 'e_mfield_ContainerRequest.Stop_target'(TrF1, <>, TrUserData) + end + end + end, + if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + if TrF2 =:= 0 -> B1; + true -> e_varint(TrF2, <>, TrUserData) + end + end + end. + +'encode_msg_ContainerRequest.Kill'(Msg, TrUserData) -> 'encode_msg_ContainerRequest.Kill'(Msg, <<>>, TrUserData). + + +'encode_msg_ContainerRequest.Kill'(#'ContainerRequest.Kill'{target = F1, signal = F2}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= undefined -> Bin; + true -> 'e_mfield_ContainerRequest.Kill_target'(TrF1, <>, TrUserData) + end + end + end, + if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) + end + end + end. + +'encode_msg_ContainerRequest.Remove'(Msg, TrUserData) -> 'encode_msg_ContainerRequest.Remove'(Msg, <<>>, TrUserData). + + +'encode_msg_ContainerRequest.Remove'(#'ContainerRequest.Remove'{target = F1, force = F2, remove_volumes = F3}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= undefined -> Bin; + true -> 'e_mfield_ContainerRequest.Remove_target'(TrF1, <>, TrUserData) + end + end + end, + B2 = if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + if TrF2 =:= false -> B1; + true -> e_type_bool(TrF2, <>, TrUserData) + end + end + end, + if F3 == undefined -> B2; + true -> + begin + TrF3 = id(F3, TrUserData), + if TrF3 =:= false -> B2; + true -> e_type_bool(TrF3, <>, TrUserData) + end + end + end. + +'encode_msg_ContainerRequest.Config'(Msg, TrUserData) -> 'encode_msg_ContainerRequest.Config'(Msg, <<>>, TrUserData). + + +'encode_msg_ContainerRequest.Config'(#'ContainerRequest.Config'{target = F1, config = F2}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= undefined -> Bin; + true -> 'e_mfield_ContainerRequest.Config_target'(TrF1, <>, TrUserData) + end + end + end, + if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case iolist_size(TrF2) of + 0 -> B1; + _ -> e_type_bytes(TrF2, <>, TrUserData) + end + end + end. + +encode_msg_ContainerRequest(Msg, TrUserData) -> encode_msg_ContainerRequest(Msg, <<>>, TrUserData). + + +encode_msg_ContainerRequest(#'ContainerRequest'{action = F1}, Bin, TrUserData) -> + if F1 =:= undefined -> Bin; + true -> + case id(F1, TrUserData) of + {list, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_ContainerRequest_list(TrTF1, <>, TrUserData) end; + {deploy, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_ContainerRequest_deploy(TrTF1, <>, TrUserData) end; + {start, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_ContainerRequest_start(TrTF1, <>, TrUserData) end; + {stop, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_ContainerRequest_stop(TrTF1, <>, TrUserData) end; + {kill, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_ContainerRequest_kill(TrTF1, <>, TrUserData) end; + {remove, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_ContainerRequest_remove(TrTF1, <>, TrUserData) end; + {config, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_ContainerRequest_config(TrTF1, <>, TrUserData) end + end + end. + +encode_msg_ContainerDeployParams(Msg, TrUserData) -> encode_msg_ContainerDeployParams(Msg, <<>>, TrUserData). + + +encode_msg_ContainerDeployParams(#'ContainerDeployParams'{container_name = F1, container_dir = F2, spec = F3}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + case is_empty_string(TrF1) of + true -> Bin; + false -> e_type_string(TrF1, <>, TrUserData) + end + end + end, + B2 = if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) + end + end + end, + if F3 == undefined -> B2; + true -> + begin + TrF3 = id(F3, TrUserData), + if TrF3 =:= undefined -> B2; + true -> e_mfield_ContainerDeployParams_spec(TrF3, <>, TrUserData) + end + end + end. + +encode_msg_ContainerSpec(Msg, TrUserData) -> encode_msg_ContainerSpec(Msg, <<>>, TrUserData). + + +encode_msg_ContainerSpec(#'ContainerSpec'{image = F1, command = F2, entrypoint = F3, env = F4, labels = F5, volumes = F6, user = F7, working_dir = F8, hostname = F9, expose = F10, networks = F11, network_mode = F12, healthcheck = F13, restart = F14, + privileged = F15, cap_add = F16, cap_drop = F17, devices = F18, resources = F19, ulimits = F20, tmpfs = F21, sysctls = F22, extra_hosts = F23}, + Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + case is_empty_string(TrF1) of + true -> Bin; + false -> e_type_string(TrF1, <>, TrUserData) + end + end + end, + B2 = begin + TrF2 = id(F2, TrUserData), + if TrF2 == [] -> B1; + true -> e_field_ContainerSpec_command(TrF2, B1, TrUserData) + end + end, + B3 = begin + TrF3 = id(F3, TrUserData), + if TrF3 == [] -> B2; + true -> e_field_ContainerSpec_entrypoint(TrF3, B2, TrUserData) + end + end, + B4 = begin + TrF4 = id(F4, TrUserData), + if TrF4 == [] -> B3; + true -> e_field_ContainerSpec_env(TrF4, B3, TrUserData) + end + end, + B5 = begin + TrF5 = id(F5, TrUserData), + if TrF5 == [] -> B4; + true -> e_field_ContainerSpec_labels(TrF5, B4, TrUserData) + end + end, + B6 = begin + TrF6 = id(F6, TrUserData), + if TrF6 == [] -> B5; + true -> e_field_ContainerSpec_volumes(TrF6, B5, TrUserData) + end + end, + B7 = if F7 == undefined -> B6; + true -> + begin + TrF7 = id(F7, TrUserData), + case is_empty_string(TrF7) of + true -> B6; + false -> e_type_string(TrF7, <>, TrUserData) + end + end + end, + B8 = if F8 == undefined -> B7; + true -> + begin + TrF8 = id(F8, TrUserData), + case is_empty_string(TrF8) of + true -> B7; + false -> e_type_string(TrF8, <>, TrUserData) + end + end + end, + B9 = if F9 == undefined -> B8; + true -> + begin + TrF9 = id(F9, TrUserData), + case is_empty_string(TrF9) of + true -> B8; + false -> e_type_string(TrF9, <>, TrUserData) + end + end + end, + B10 = begin + TrF10 = id(F10, TrUserData), + if TrF10 == [] -> B9; + true -> e_field_ContainerSpec_expose(TrF10, B9, TrUserData) + end + end, + B11 = begin + TrF11 = id(F11, TrUserData), + if TrF11 == [] -> B10; + true -> e_field_ContainerSpec_networks(TrF11, B10, TrUserData) + end + end, + B12 = if F12 == undefined -> B11; + true -> + begin + TrF12 = id(F12, TrUserData), + case is_empty_string(TrF12) of + true -> B11; + false -> e_type_string(TrF12, <>, TrUserData) + end + end + end, + B13 = if F13 == undefined -> B12; + true -> + begin + TrF13 = id(F13, TrUserData), + if TrF13 =:= undefined -> B12; + true -> e_mfield_ContainerSpec_healthcheck(TrF13, <>, TrUserData) + end + end + end, + B14 = if F14 == undefined -> B13; + true -> + begin + TrF14 = id(F14, TrUserData), + if TrF14 =:= undefined -> B13; + true -> e_mfield_ContainerSpec_restart(TrF14, <>, TrUserData) + end + end + end, + B15 = if F15 == undefined -> B14; + true -> + begin + TrF15 = id(F15, TrUserData), + if TrF15 =:= false -> B14; + true -> e_type_bool(TrF15, <>, TrUserData) + end + end + end, + B16 = begin + TrF16 = id(F16, TrUserData), + if TrF16 == [] -> B15; + true -> e_field_ContainerSpec_cap_add(TrF16, B15, TrUserData) + end + end, + B17 = begin + TrF17 = id(F17, TrUserData), + if TrF17 == [] -> B16; + true -> e_field_ContainerSpec_cap_drop(TrF17, B16, TrUserData) + end + end, + B18 = begin + TrF18 = id(F18, TrUserData), + if TrF18 == [] -> B17; + true -> e_field_ContainerSpec_devices(TrF18, B17, TrUserData) + end + end, + B19 = if F19 == undefined -> B18; + true -> + begin + TrF19 = id(F19, TrUserData), + if TrF19 =:= undefined -> B18; + true -> e_mfield_ContainerSpec_resources(TrF19, <>, TrUserData) + end + end + end, + B20 = begin + TrF20 = id(F20, TrUserData), + if TrF20 == [] -> B19; + true -> e_field_ContainerSpec_ulimits(TrF20, B19, TrUserData) + end + end, + B21 = begin + TrF21 = id(F21, TrUserData), + if TrF21 == [] -> B20; + true -> e_field_ContainerSpec_tmpfs(TrF21, B20, TrUserData) + end + end, + B22 = begin + TrF22 = id(F22, TrUserData), + if TrF22 == [] -> B21; + true -> e_field_ContainerSpec_sysctls(TrF22, B21, TrUserData) + end + end, + begin + TrF23 = id(F23, TrUserData), + if TrF23 == [] -> B22; + true -> e_field_ContainerSpec_extra_hosts(TrF23, B22, TrUserData) + end + end. + +encode_msg_VolumeBind(Msg, TrUserData) -> encode_msg_VolumeBind(Msg, <<>>, TrUserData). + + +encode_msg_VolumeBind(#'VolumeBind'{host_path = F1, container_path = F2, read_only = F3}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + case is_empty_string(TrF1) of + true -> Bin; + false -> e_type_string(TrF1, <>, TrUserData) + end + end + end, + B2 = if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) + end + end + end, + if F3 == undefined -> B2; + true -> + begin + TrF3 = id(F3, TrUserData), + if TrF3 =:= false -> B2; + true -> e_type_bool(TrF3, <>, TrUserData) + end + end + end. + +encode_msg_PortExpose(Msg, TrUserData) -> encode_msg_PortExpose(Msg, <<>>, TrUserData). + + +encode_msg_PortExpose(#'PortExpose'{container_port = F1, protocol = F2}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= 0 -> Bin; + true -> e_varint(TrF1, <>, TrUserData) + end + end + end, + if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) + end + end + end. + +encode_msg_Healthcheck(Msg, TrUserData) -> encode_msg_Healthcheck(Msg, <<>>, TrUserData). + + +encode_msg_Healthcheck(#'Healthcheck'{test = F1, interval_ns = F2, timeout_ns = F3, retries = F4}, Bin, TrUserData) -> + B1 = begin + TrF1 = id(F1, TrUserData), + if TrF1 == [] -> Bin; + true -> e_field_Healthcheck_test(TrF1, Bin, TrUserData) + end + end, + B2 = if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + if TrF2 =:= 0 -> B1; + true -> e_varint(TrF2, <>, TrUserData) + end + end + end, + B3 = if F3 == undefined -> B2; + true -> + begin + TrF3 = id(F3, TrUserData), + if TrF3 =:= 0 -> B2; + true -> e_varint(TrF3, <>, TrUserData) + end + end + end, + if F4 == undefined -> B3; + true -> + begin + TrF4 = id(F4, TrUserData), + if TrF4 =:= 0 -> B3; + true -> e_varint(TrF4, <>, TrUserData) + end + end + end. + +encode_msg_RestartPolicy(Msg, TrUserData) -> encode_msg_RestartPolicy(Msg, <<>>, TrUserData). + + +encode_msg_RestartPolicy(#'RestartPolicy'{name = F1, maximum_retry_count = F2}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + case is_empty_string(TrF1) of + true -> Bin; + false -> e_type_string(TrF1, <>, TrUserData) + end + end + end, + if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + if TrF2 =:= 0 -> B1; + true -> e_varint(TrF2, <>, TrUserData) + end + end + end. + +encode_msg_DeviceMapping(Msg, TrUserData) -> encode_msg_DeviceMapping(Msg, <<>>, TrUserData). + + +encode_msg_DeviceMapping(#'DeviceMapping'{host_path = F1, container_path = F2, cgroup_permissions = F3}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + case is_empty_string(TrF1) of + true -> Bin; + false -> e_type_string(TrF1, <>, TrUserData) + end + end + end, + B2 = if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) + end + end + end, + if F3 == undefined -> B2; + true -> + begin + TrF3 = id(F3, TrUserData), + case is_empty_string(TrF3) of + true -> B2; + false -> e_type_string(TrF3, <>, TrUserData) + end + end + end. + +encode_msg_ResourceLimits(Msg, TrUserData) -> encode_msg_ResourceLimits(Msg, <<>>, TrUserData). + + +encode_msg_ResourceLimits(#'ResourceLimits'{memory_bytes = F1, memory_reservation_bytes = F2, nano_cpus = F3, cpu_shares = F4}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= 0 -> Bin; + true -> e_varint(TrF1, <>, TrUserData) + end + end + end, + B2 = if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + if TrF2 =:= 0 -> B1; + true -> e_varint(TrF2, <>, TrUserData) + end + end + end, + B3 = if F3 == undefined -> B2; + true -> + begin + TrF3 = id(F3, TrUserData), + if TrF3 =:= 0 -> B2; + true -> e_varint(TrF3, <>, TrUserData) + end + end + end, + if F4 == undefined -> B3; + true -> + begin + TrF4 = id(F4, TrUserData), + if TrF4 =:= 0 -> B3; + true -> e_varint(TrF4, <>, TrUserData) + end + end + end. + +encode_msg_Ulimit(Msg, TrUserData) -> encode_msg_Ulimit(Msg, <<>>, TrUserData). + + +encode_msg_Ulimit(#'Ulimit'{name = F1, soft = F2, hard = F3}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + case is_empty_string(TrF1) of + true -> Bin; + false -> e_type_string(TrF1, <>, TrUserData) + end + end + end, + B2 = if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + if TrF2 =:= 0 -> B1; + true -> e_varint(TrF2, <>, TrUserData) + end + end + end, + if F3 == undefined -> B2; + true -> + begin + TrF3 = id(F3, TrUserData), + if TrF3 =:= 0 -> B2; + true -> e_varint(TrF3, <>, TrUserData) + end + end + end. + +encode_msg_TmpfsMount(Msg, TrUserData) -> encode_msg_TmpfsMount(Msg, <<>>, TrUserData). + + +encode_msg_TmpfsMount(#'TmpfsMount'{path = F1, options = F2}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + case is_empty_string(TrF1) of + true -> Bin; + false -> e_type_string(TrF1, <>, TrUserData) + end + end + end, + if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) + end + end + end. + encode_msg_AuthRequest(Msg, TrUserData) -> encode_msg_AuthRequest(Msg, <<>>, TrUserData). @@ -462,6 +1182,11 @@ e_mfield_RequestFrame_rpc_request(Msg, Bin, TrUserData) -> Bin2 = e_varint(byte_size(SubBin), Bin), <>. +e_mfield_RequestFrame_container_request(Msg, Bin, TrUserData) -> + SubBin = encode_msg_ContainerRequest(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + e_mfield_ResponseFrame_auth_reply(Msg, Bin, TrUserData) -> SubBin = encode_msg_AuthReply(Msg, <<>>, TrUserData), Bin2 = e_varint(byte_size(SubBin), Bin), @@ -492,6 +1217,216 @@ e_mfield_CastFrame_event_stream(Msg, Bin, TrUserData) -> Bin2 = e_varint(byte_size(SubBin), Bin), <>. +'e_mfield_ContainerRequest.Deploy_params'(Msg, Bin, TrUserData) -> + SubBin = encode_msg_ContainerDeployParams(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +'e_mfield_ContainerRequest.Start_target'(Msg, Bin, TrUserData) -> + SubBin = encode_msg_ContainerRef(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +'e_mfield_ContainerRequest.Stop_target'(Msg, Bin, TrUserData) -> + SubBin = encode_msg_ContainerRef(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +'e_mfield_ContainerRequest.Kill_target'(Msg, Bin, TrUserData) -> + SubBin = encode_msg_ContainerRef(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +'e_mfield_ContainerRequest.Remove_target'(Msg, Bin, TrUserData) -> + SubBin = encode_msg_ContainerRef(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +'e_mfield_ContainerRequest.Config_target'(Msg, Bin, TrUserData) -> + SubBin = encode_msg_ContainerRef(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_ContainerRequest_list(Msg, Bin, TrUserData) -> + SubBin = 'encode_msg_ContainerRequest.List'(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_ContainerRequest_deploy(Msg, Bin, TrUserData) -> + SubBin = 'encode_msg_ContainerRequest.Deploy'(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_ContainerRequest_start(Msg, Bin, TrUserData) -> + SubBin = 'encode_msg_ContainerRequest.Start'(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_ContainerRequest_stop(Msg, Bin, TrUserData) -> + SubBin = 'encode_msg_ContainerRequest.Stop'(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_ContainerRequest_kill(Msg, Bin, TrUserData) -> + SubBin = 'encode_msg_ContainerRequest.Kill'(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_ContainerRequest_remove(Msg, Bin, TrUserData) -> + SubBin = 'encode_msg_ContainerRequest.Remove'(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_ContainerRequest_config(Msg, Bin, TrUserData) -> + SubBin = 'encode_msg_ContainerRequest.Config'(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_ContainerDeployParams_spec(Msg, Bin, TrUserData) -> + SubBin = encode_msg_ContainerSpec(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_ContainerSpec_command([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_type_string(id(Elem, TrUserData), Bin2, TrUserData), + e_field_ContainerSpec_command(Rest, Bin3, TrUserData); +e_field_ContainerSpec_command([], Bin, _TrUserData) -> Bin. + +e_field_ContainerSpec_entrypoint([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_type_string(id(Elem, TrUserData), Bin2, TrUserData), + e_field_ContainerSpec_entrypoint(Rest, Bin3, TrUserData); +e_field_ContainerSpec_entrypoint([], Bin, _TrUserData) -> Bin. + +e_field_ContainerSpec_env([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_type_string(id(Elem, TrUserData), Bin2, TrUserData), + e_field_ContainerSpec_env(Rest, Bin3, TrUserData); +e_field_ContainerSpec_env([], Bin, _TrUserData) -> Bin. + +e_mfield_ContainerSpec_labels(Msg, Bin, TrUserData) -> + SubBin = 'encode_msg_map'(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_ContainerSpec_labels([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_ContainerSpec_labels('tr_encode_ContainerSpec.labels[x]'(Elem, TrUserData), Bin2, TrUserData), + e_field_ContainerSpec_labels(Rest, Bin3, TrUserData); +e_field_ContainerSpec_labels([], Bin, _TrUserData) -> Bin. + +e_mfield_ContainerSpec_volumes(Msg, Bin, TrUserData) -> + SubBin = encode_msg_VolumeBind(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_ContainerSpec_volumes([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_ContainerSpec_volumes(id(Elem, TrUserData), Bin2, TrUserData), + e_field_ContainerSpec_volumes(Rest, Bin3, TrUserData); +e_field_ContainerSpec_volumes([], Bin, _TrUserData) -> Bin. + +e_mfield_ContainerSpec_expose(Msg, Bin, TrUserData) -> + SubBin = encode_msg_PortExpose(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_ContainerSpec_expose([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_ContainerSpec_expose(id(Elem, TrUserData), Bin2, TrUserData), + e_field_ContainerSpec_expose(Rest, Bin3, TrUserData); +e_field_ContainerSpec_expose([], Bin, _TrUserData) -> Bin. + +e_field_ContainerSpec_networks([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_type_string(id(Elem, TrUserData), Bin2, TrUserData), + e_field_ContainerSpec_networks(Rest, Bin3, TrUserData); +e_field_ContainerSpec_networks([], Bin, _TrUserData) -> Bin. + +e_mfield_ContainerSpec_healthcheck(Msg, Bin, TrUserData) -> + SubBin = encode_msg_Healthcheck(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_ContainerSpec_restart(Msg, Bin, TrUserData) -> + SubBin = encode_msg_RestartPolicy(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_ContainerSpec_cap_add([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_type_string(id(Elem, TrUserData), Bin2, TrUserData), + e_field_ContainerSpec_cap_add(Rest, Bin3, TrUserData); +e_field_ContainerSpec_cap_add([], Bin, _TrUserData) -> Bin. + +e_field_ContainerSpec_cap_drop([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_type_string(id(Elem, TrUserData), Bin2, TrUserData), + e_field_ContainerSpec_cap_drop(Rest, Bin3, TrUserData); +e_field_ContainerSpec_cap_drop([], Bin, _TrUserData) -> Bin. + +e_mfield_ContainerSpec_devices(Msg, Bin, TrUserData) -> + SubBin = encode_msg_DeviceMapping(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_ContainerSpec_devices([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_ContainerSpec_devices(id(Elem, TrUserData), Bin2, TrUserData), + e_field_ContainerSpec_devices(Rest, Bin3, TrUserData); +e_field_ContainerSpec_devices([], Bin, _TrUserData) -> Bin. + +e_mfield_ContainerSpec_resources(Msg, Bin, TrUserData) -> + SubBin = encode_msg_ResourceLimits(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_ContainerSpec_ulimits(Msg, Bin, TrUserData) -> + SubBin = encode_msg_Ulimit(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_ContainerSpec_ulimits([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_ContainerSpec_ulimits(id(Elem, TrUserData), Bin2, TrUserData), + e_field_ContainerSpec_ulimits(Rest, Bin3, TrUserData); +e_field_ContainerSpec_ulimits([], Bin, _TrUserData) -> Bin. + +e_mfield_ContainerSpec_tmpfs(Msg, Bin, TrUserData) -> + SubBin = encode_msg_TmpfsMount(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_ContainerSpec_tmpfs([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_ContainerSpec_tmpfs(id(Elem, TrUserData), Bin2, TrUserData), + e_field_ContainerSpec_tmpfs(Rest, Bin3, TrUserData); +e_field_ContainerSpec_tmpfs([], Bin, _TrUserData) -> Bin. + +e_mfield_ContainerSpec_sysctls(Msg, Bin, TrUserData) -> + SubBin = 'encode_msg_map'(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_field_ContainerSpec_sysctls([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_mfield_ContainerSpec_sysctls('tr_encode_ContainerSpec.sysctls[x]'(Elem, TrUserData), Bin2, TrUserData), + e_field_ContainerSpec_sysctls(Rest, Bin3, TrUserData); +e_field_ContainerSpec_sysctls([], Bin, _TrUserData) -> Bin. + +e_field_ContainerSpec_extra_hosts([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_type_string(id(Elem, TrUserData), Bin2, TrUserData), + e_field_ContainerSpec_extra_hosts(Rest, Bin3, TrUserData); +e_field_ContainerSpec_extra_hosts([], Bin, _TrUserData) -> Bin. + +e_field_Healthcheck_test([Elem | Rest], Bin, TrUserData) -> + Bin2 = <>, + Bin3 = e_type_string(id(Elem, TrUserData), Bin2, TrUserData), + e_field_Healthcheck_test(Rest, Bin3, TrUserData); +e_field_Healthcheck_test([], Bin, _TrUserData) -> Bin. + e_mfield_RpcReply_result(Msg, Bin, TrUserData) -> SubBin = 'encode_msg_RpcReply.RpcResult'(Msg, <<>>, TrUserData), Bin2 = e_varint(byte_size(SubBin), Bin), @@ -502,6 +1437,10 @@ e_mfield_RpcReply_error(Msg, Bin, TrUserData) -> Bin2 = e_varint(byte_size(SubBin), Bin), <>. +'encode_msg_map'(#'map'{key = F1, value = F2}, Bin, TrUserData) -> + B1 = begin TrF1 = id(F1, TrUserData), e_type_string(TrF1, <>, TrUserData) end, + begin TrF2 = id(F2, TrUserData), e_type_string(TrF2, <>, TrUserData) end. + -compile({nowarn_unused_function,e_type_sint/3}). e_type_sint(Value, Bin, _TrUserData) when Value >= 0 -> e_varint(Value * 2, Bin); e_type_sint(Value, Bin, _TrUserData) -> e_varint(Value * -2 - 1, Bin). @@ -643,6 +1582,25 @@ decode_msg_1_catch(Bin, MsgName, TrUserData) -> decode_msg_2_doit('RequestFrame', Bin, TrUserData) -> id(decode_msg_RequestFrame(Bin, TrUserData), TrUserData); decode_msg_2_doit('ResponseFrame', Bin, TrUserData) -> id(decode_msg_ResponseFrame(Bin, TrUserData), TrUserData); decode_msg_2_doit('CastFrame', Bin, TrUserData) -> id(decode_msg_CastFrame(Bin, TrUserData), TrUserData); +decode_msg_2_doit('ContainerRef', Bin, TrUserData) -> id(decode_msg_ContainerRef(Bin, TrUserData), TrUserData); +decode_msg_2_doit('ContainerRequest.List', Bin, TrUserData) -> id('decode_msg_ContainerRequest.List'(Bin, TrUserData), TrUserData); +decode_msg_2_doit('ContainerRequest.Deploy', Bin, TrUserData) -> id('decode_msg_ContainerRequest.Deploy'(Bin, TrUserData), TrUserData); +decode_msg_2_doit('ContainerRequest.Start', Bin, TrUserData) -> id('decode_msg_ContainerRequest.Start'(Bin, TrUserData), TrUserData); +decode_msg_2_doit('ContainerRequest.Stop', Bin, TrUserData) -> id('decode_msg_ContainerRequest.Stop'(Bin, TrUserData), TrUserData); +decode_msg_2_doit('ContainerRequest.Kill', Bin, TrUserData) -> id('decode_msg_ContainerRequest.Kill'(Bin, TrUserData), TrUserData); +decode_msg_2_doit('ContainerRequest.Remove', Bin, TrUserData) -> id('decode_msg_ContainerRequest.Remove'(Bin, TrUserData), TrUserData); +decode_msg_2_doit('ContainerRequest.Config', Bin, TrUserData) -> id('decode_msg_ContainerRequest.Config'(Bin, TrUserData), TrUserData); +decode_msg_2_doit('ContainerRequest', Bin, TrUserData) -> id(decode_msg_ContainerRequest(Bin, TrUserData), TrUserData); +decode_msg_2_doit('ContainerDeployParams', Bin, TrUserData) -> id(decode_msg_ContainerDeployParams(Bin, TrUserData), TrUserData); +decode_msg_2_doit('ContainerSpec', Bin, TrUserData) -> id(decode_msg_ContainerSpec(Bin, TrUserData), TrUserData); +decode_msg_2_doit('VolumeBind', Bin, TrUserData) -> id(decode_msg_VolumeBind(Bin, TrUserData), TrUserData); +decode_msg_2_doit('PortExpose', Bin, TrUserData) -> id(decode_msg_PortExpose(Bin, TrUserData), TrUserData); +decode_msg_2_doit('Healthcheck', Bin, TrUserData) -> id(decode_msg_Healthcheck(Bin, TrUserData), TrUserData); +decode_msg_2_doit('RestartPolicy', Bin, TrUserData) -> id(decode_msg_RestartPolicy(Bin, TrUserData), TrUserData); +decode_msg_2_doit('DeviceMapping', Bin, TrUserData) -> id(decode_msg_DeviceMapping(Bin, TrUserData), TrUserData); +decode_msg_2_doit('ResourceLimits', Bin, TrUserData) -> id(decode_msg_ResourceLimits(Bin, TrUserData), TrUserData); +decode_msg_2_doit('Ulimit', Bin, TrUserData) -> id(decode_msg_Ulimit(Bin, TrUserData), TrUserData); +decode_msg_2_doit('TmpfsMount', Bin, TrUserData) -> id(decode_msg_TmpfsMount(Bin, TrUserData), TrUserData); decode_msg_2_doit('AuthRequest', Bin, TrUserData) -> id(decode_msg_AuthRequest(Bin, TrUserData), TrUserData); decode_msg_2_doit('AuthReply', Bin, TrUserData) -> id(decode_msg_AuthReply(Bin, TrUserData), TrUserData); decode_msg_2_doit('Pub', Bin, TrUserData) -> id(decode_msg_Pub(Bin, TrUserData), TrUserData); @@ -661,6 +1619,7 @@ decode_msg_RequestFrame(Bin, TrUserData) -> dfp_read_field_def_RequestFrame(Bin, dfp_read_field_def_RequestFrame(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_RequestFrame_packet_id(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); dfp_read_field_def_RequestFrame(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_RequestFrame_auth_request(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); dfp_read_field_def_RequestFrame(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_RequestFrame_rpc_request(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_RequestFrame(<<34, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_RequestFrame_container_request(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); dfp_read_field_def_RequestFrame(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'RequestFrame'{packet_id = F@_1, body = F@_2}; dfp_read_field_def_RequestFrame(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_RequestFrame(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). @@ -671,6 +1630,7 @@ dg_read_field_def_RequestFrame(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, 8 -> d_field_RequestFrame_packet_id(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); 18 -> d_field_RequestFrame_auth_request(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); 26 -> d_field_RequestFrame_rpc_request(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 34 -> d_field_RequestFrame_container_request(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); _ -> case Key band 7 of 0 -> skip_varint_RequestFrame(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); @@ -717,6 +1677,21 @@ d_field_RequestFrame_rpc_request(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Pre end, TrUserData). +d_field_RequestFrame_container_request(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_RequestFrame_container_request(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_RequestFrame_container_request(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_ContainerRequest(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_RequestFrame(RestF, + 0, + 0, + F, + F@_1, + case Prev of + undefined -> id({container_request, NewFValue}, TrUserData); + {container_request, MVPrev} -> id({container_request, merge_msg_ContainerRequest(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({container_request, NewFValue}, TrUserData) + end, + TrUserData). + skip_varint_RequestFrame(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_RequestFrame(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); skip_varint_RequestFrame(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_RequestFrame(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). @@ -913,6 +1888,1560 @@ skip_32_CastFrame(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_rea skip_64_CastFrame(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_CastFrame(Rest, Z1, Z2, F, F@_1, TrUserData). +decode_msg_ContainerRef(Bin, TrUserData) -> dfp_read_field_def_ContainerRef(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_ContainerRef(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_ContainerRef_id(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_ContainerRef(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_ContainerRef_name(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_ContainerRef(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'ContainerRef'{id = F@_1, name = F@_2}; +dfp_read_field_def_ContainerRef(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_ContainerRef(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +dg_read_field_def_ContainerRef(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_ContainerRef(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +dg_read_field_def_ContainerRef(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_ContainerRef_id(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> d_field_ContainerRef_name(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_ContainerRef(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> skip_64_ContainerRef(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> skip_length_delimited_ContainerRef(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> skip_group_ContainerRef(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> skip_32_ContainerRef(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +dg_read_field_def_ContainerRef(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'ContainerRef'{id = F@_1, name = F@_2}. + +d_field_ContainerRef_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_ContainerRef_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_ContainerRef_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerRef(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + +d_field_ContainerRef_name(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_ContainerRef_name(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_ContainerRef_name(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerRef(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + +skip_varint_ContainerRef(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_ContainerRef(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +skip_varint_ContainerRef(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_ContainerRef(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_length_delimited_ContainerRef(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_ContainerRef(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +skip_length_delimited_ContainerRef(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_ContainerRef(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +skip_group_ContainerRef(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_ContainerRef(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +skip_32_ContainerRef(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_ContainerRef(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_64_ContainerRef(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_ContainerRef(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'decode_msg_ContainerRequest.List'(Bin, TrUserData) -> 'dfp_read_field_def_ContainerRequest.List'(Bin, 0, 0, 0, id(false, TrUserData), TrUserData). + +'dfp_read_field_def_ContainerRequest.List'(<<8, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'd_field_ContainerRequest.List_all'(Rest, Z1, Z2, F, F@_1, TrUserData); +'dfp_read_field_def_ContainerRequest.List'(<<>>, 0, 0, _, F@_1, _) -> #'ContainerRequest.List'{all = F@_1}; +'dfp_read_field_def_ContainerRequest.List'(Other, Z1, Z2, F, F@_1, TrUserData) -> 'dg_read_field_def_ContainerRequest.List'(Other, Z1, Z2, F, F@_1, TrUserData). + +'dg_read_field_def_ContainerRequest.List'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> 'dg_read_field_def_ContainerRequest.List'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'dg_read_field_def_ContainerRequest.List'(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 8 -> 'd_field_ContainerRequest.List_all'(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> 'skip_varint_ContainerRequest.List'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> 'skip_64_ContainerRequest.List'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> 'skip_length_delimited_ContainerRequest.List'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> 'skip_group_ContainerRequest.List'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> 'skip_32_ContainerRequest.List'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end + end; +'dg_read_field_def_ContainerRequest.List'(<<>>, 0, 0, _, F@_1, _) -> #'ContainerRequest.List'{all = F@_1}. + +'d_field_ContainerRequest.List_all'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> 'd_field_ContainerRequest.List_all'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'d_field_ContainerRequest.List_all'(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, TrUserData) -> + {NewFValue, RestF} = {id(X bsl N + Acc =/= 0, TrUserData), Rest}, + 'dfp_read_field_def_ContainerRequest.List'(RestF, 0, 0, F, NewFValue, TrUserData). + +'skip_varint_ContainerRequest.List'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'skip_varint_ContainerRequest.List'(Rest, Z1, Z2, F, F@_1, TrUserData); +'skip_varint_ContainerRequest.List'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_ContainerRequest.List'(Rest, Z1, Z2, F, F@_1, TrUserData). + +'skip_length_delimited_ContainerRequest.List'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> 'skip_length_delimited_ContainerRequest.List'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'skip_length_delimited_ContainerRequest.List'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + 'dfp_read_field_def_ContainerRequest.List'(Rest2, 0, 0, F, F@_1, TrUserData). + +'skip_group_ContainerRequest.List'(Bin, _, Z2, FNum, F@_1, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + 'dfp_read_field_def_ContainerRequest.List'(Rest, 0, Z2, FNum, F@_1, TrUserData). + +'skip_32_ContainerRequest.List'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_ContainerRequest.List'(Rest, Z1, Z2, F, F@_1, TrUserData). + +'skip_64_ContainerRequest.List'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_ContainerRequest.List'(Rest, Z1, Z2, F, F@_1, TrUserData). + +'decode_msg_ContainerRequest.Deploy'(Bin, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Deploy'(Bin, 0, 0, 0, id(0, TrUserData), id(undefined, TrUserData), TrUserData). + +'dfp_read_field_def_ContainerRequest.Deploy'(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_ContainerRequest.Deploy_task_id'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'dfp_read_field_def_ContainerRequest.Deploy'(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_ContainerRequest.Deploy_params'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'dfp_read_field_def_ContainerRequest.Deploy'(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'ContainerRequest.Deploy'{task_id = F@_1, params = F@_2}; +'dfp_read_field_def_ContainerRequest.Deploy'(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dg_read_field_def_ContainerRequest.Deploy'(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'dg_read_field_def_ContainerRequest.Deploy'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> 'dg_read_field_def_ContainerRequest.Deploy'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'dg_read_field_def_ContainerRequest.Deploy'(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 8 -> 'd_field_ContainerRequest.Deploy_task_id'(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> 'd_field_ContainerRequest.Deploy_params'(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> 'skip_varint_ContainerRequest.Deploy'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> 'skip_64_ContainerRequest.Deploy'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> 'skip_length_delimited_ContainerRequest.Deploy'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> 'skip_group_ContainerRequest.Deploy'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> 'skip_32_ContainerRequest.Deploy'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +'dg_read_field_def_ContainerRequest.Deploy'(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'ContainerRequest.Deploy'{task_id = F@_1, params = F@_2}. + +'d_field_ContainerRequest.Deploy_task_id'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'd_field_ContainerRequest.Deploy_task_id'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'d_field_ContainerRequest.Deploy_task_id'(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + 'dfp_read_field_def_ContainerRequest.Deploy'(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + +'d_field_ContainerRequest.Deploy_params'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'd_field_ContainerRequest.Deploy_params'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'d_field_ContainerRequest.Deploy_params'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_ContainerDeployParams(Bs, TrUserData), TrUserData), Rest2} end, + 'dfp_read_field_def_ContainerRequest.Deploy'(RestF, + 0, + 0, + F, + F@_1, + if Prev == undefined -> NewFValue; + true -> merge_msg_ContainerDeployParams(Prev, NewFValue, TrUserData) + end, + TrUserData). + +'skip_varint_ContainerRequest.Deploy'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'skip_varint_ContainerRequest.Deploy'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'skip_varint_ContainerRequest.Deploy'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Deploy'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'skip_length_delimited_ContainerRequest.Deploy'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'skip_length_delimited_ContainerRequest.Deploy'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'skip_length_delimited_ContainerRequest.Deploy'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + 'dfp_read_field_def_ContainerRequest.Deploy'(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +'skip_group_ContainerRequest.Deploy'(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + 'dfp_read_field_def_ContainerRequest.Deploy'(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +'skip_32_ContainerRequest.Deploy'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Deploy'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'skip_64_ContainerRequest.Deploy'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Deploy'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'decode_msg_ContainerRequest.Start'(Bin, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Start'(Bin, 0, 0, 0, id(undefined, TrUserData), TrUserData). + +'dfp_read_field_def_ContainerRequest.Start'(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'd_field_ContainerRequest.Start_target'(Rest, Z1, Z2, F, F@_1, TrUserData); +'dfp_read_field_def_ContainerRequest.Start'(<<>>, 0, 0, _, F@_1, _) -> #'ContainerRequest.Start'{target = F@_1}; +'dfp_read_field_def_ContainerRequest.Start'(Other, Z1, Z2, F, F@_1, TrUserData) -> 'dg_read_field_def_ContainerRequest.Start'(Other, Z1, Z2, F, F@_1, TrUserData). + +'dg_read_field_def_ContainerRequest.Start'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> 'dg_read_field_def_ContainerRequest.Start'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'dg_read_field_def_ContainerRequest.Start'(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> 'd_field_ContainerRequest.Start_target'(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> 'skip_varint_ContainerRequest.Start'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> 'skip_64_ContainerRequest.Start'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> 'skip_length_delimited_ContainerRequest.Start'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> 'skip_group_ContainerRequest.Start'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> 'skip_32_ContainerRequest.Start'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end + end; +'dg_read_field_def_ContainerRequest.Start'(<<>>, 0, 0, _, F@_1, _) -> #'ContainerRequest.Start'{target = F@_1}. + +'d_field_ContainerRequest.Start_target'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> 'd_field_ContainerRequest.Start_target'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'d_field_ContainerRequest.Start_target'(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_ContainerRef(Bs, TrUserData), TrUserData), Rest2} end, + 'dfp_read_field_def_ContainerRequest.Start'(RestF, + 0, + 0, + F, + if Prev == undefined -> NewFValue; + true -> merge_msg_ContainerRef(Prev, NewFValue, TrUserData) + end, + TrUserData). + +'skip_varint_ContainerRequest.Start'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'skip_varint_ContainerRequest.Start'(Rest, Z1, Z2, F, F@_1, TrUserData); +'skip_varint_ContainerRequest.Start'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Start'(Rest, Z1, Z2, F, F@_1, TrUserData). + +'skip_length_delimited_ContainerRequest.Start'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> 'skip_length_delimited_ContainerRequest.Start'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'skip_length_delimited_ContainerRequest.Start'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + 'dfp_read_field_def_ContainerRequest.Start'(Rest2, 0, 0, F, F@_1, TrUserData). + +'skip_group_ContainerRequest.Start'(Bin, _, Z2, FNum, F@_1, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + 'dfp_read_field_def_ContainerRequest.Start'(Rest, 0, Z2, FNum, F@_1, TrUserData). + +'skip_32_ContainerRequest.Start'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Start'(Rest, Z1, Z2, F, F@_1, TrUserData). + +'skip_64_ContainerRequest.Start'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Start'(Rest, Z1, Z2, F, F@_1, TrUserData). + +'decode_msg_ContainerRequest.Stop'(Bin, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Stop'(Bin, 0, 0, 0, id(undefined, TrUserData), id(0, TrUserData), TrUserData). + +'dfp_read_field_def_ContainerRequest.Stop'(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_ContainerRequest.Stop_target'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'dfp_read_field_def_ContainerRequest.Stop'(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_ContainerRequest.Stop_timeout_seconds'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'dfp_read_field_def_ContainerRequest.Stop'(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'ContainerRequest.Stop'{target = F@_1, timeout_seconds = F@_2}; +'dfp_read_field_def_ContainerRequest.Stop'(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dg_read_field_def_ContainerRequest.Stop'(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'dg_read_field_def_ContainerRequest.Stop'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> 'dg_read_field_def_ContainerRequest.Stop'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'dg_read_field_def_ContainerRequest.Stop'(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> 'd_field_ContainerRequest.Stop_target'(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 16 -> 'd_field_ContainerRequest.Stop_timeout_seconds'(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> 'skip_varint_ContainerRequest.Stop'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> 'skip_64_ContainerRequest.Stop'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> 'skip_length_delimited_ContainerRequest.Stop'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> 'skip_group_ContainerRequest.Stop'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> 'skip_32_ContainerRequest.Stop'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +'dg_read_field_def_ContainerRequest.Stop'(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'ContainerRequest.Stop'{target = F@_1, timeout_seconds = F@_2}. + +'d_field_ContainerRequest.Stop_target'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'd_field_ContainerRequest.Stop_target'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'d_field_ContainerRequest.Stop_target'(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_ContainerRef(Bs, TrUserData), TrUserData), Rest2} end, + 'dfp_read_field_def_ContainerRequest.Stop'(RestF, + 0, + 0, + F, + if Prev == undefined -> NewFValue; + true -> merge_msg_ContainerRef(Prev, NewFValue, TrUserData) + end, + F@_2, + TrUserData). + +'d_field_ContainerRequest.Stop_timeout_seconds'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'd_field_ContainerRequest.Stop_timeout_seconds'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'d_field_ContainerRequest.Stop_timeout_seconds'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + 'dfp_read_field_def_ContainerRequest.Stop'(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + +'skip_varint_ContainerRequest.Stop'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'skip_varint_ContainerRequest.Stop'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'skip_varint_ContainerRequest.Stop'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Stop'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'skip_length_delimited_ContainerRequest.Stop'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'skip_length_delimited_ContainerRequest.Stop'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'skip_length_delimited_ContainerRequest.Stop'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + 'dfp_read_field_def_ContainerRequest.Stop'(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +'skip_group_ContainerRequest.Stop'(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + 'dfp_read_field_def_ContainerRequest.Stop'(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +'skip_32_ContainerRequest.Stop'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Stop'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'skip_64_ContainerRequest.Stop'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Stop'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'decode_msg_ContainerRequest.Kill'(Bin, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Kill'(Bin, 0, 0, 0, id(undefined, TrUserData), id(<<>>, TrUserData), TrUserData). + +'dfp_read_field_def_ContainerRequest.Kill'(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_ContainerRequest.Kill_target'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'dfp_read_field_def_ContainerRequest.Kill'(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_ContainerRequest.Kill_signal'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'dfp_read_field_def_ContainerRequest.Kill'(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'ContainerRequest.Kill'{target = F@_1, signal = F@_2}; +'dfp_read_field_def_ContainerRequest.Kill'(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dg_read_field_def_ContainerRequest.Kill'(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'dg_read_field_def_ContainerRequest.Kill'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> 'dg_read_field_def_ContainerRequest.Kill'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'dg_read_field_def_ContainerRequest.Kill'(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> 'd_field_ContainerRequest.Kill_target'(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> 'd_field_ContainerRequest.Kill_signal'(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> 'skip_varint_ContainerRequest.Kill'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> 'skip_64_ContainerRequest.Kill'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> 'skip_length_delimited_ContainerRequest.Kill'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> 'skip_group_ContainerRequest.Kill'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> 'skip_32_ContainerRequest.Kill'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +'dg_read_field_def_ContainerRequest.Kill'(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'ContainerRequest.Kill'{target = F@_1, signal = F@_2}. + +'d_field_ContainerRequest.Kill_target'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'd_field_ContainerRequest.Kill_target'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'d_field_ContainerRequest.Kill_target'(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_ContainerRef(Bs, TrUserData), TrUserData), Rest2} end, + 'dfp_read_field_def_ContainerRequest.Kill'(RestF, + 0, + 0, + F, + if Prev == undefined -> NewFValue; + true -> merge_msg_ContainerRef(Prev, NewFValue, TrUserData) + end, + F@_2, + TrUserData). + +'d_field_ContainerRequest.Kill_signal'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'd_field_ContainerRequest.Kill_signal'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'d_field_ContainerRequest.Kill_signal'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + 'dfp_read_field_def_ContainerRequest.Kill'(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + +'skip_varint_ContainerRequest.Kill'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'skip_varint_ContainerRequest.Kill'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'skip_varint_ContainerRequest.Kill'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Kill'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'skip_length_delimited_ContainerRequest.Kill'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'skip_length_delimited_ContainerRequest.Kill'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'skip_length_delimited_ContainerRequest.Kill'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + 'dfp_read_field_def_ContainerRequest.Kill'(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +'skip_group_ContainerRequest.Kill'(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + 'dfp_read_field_def_ContainerRequest.Kill'(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +'skip_32_ContainerRequest.Kill'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Kill'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'skip_64_ContainerRequest.Kill'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Kill'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'decode_msg_ContainerRequest.Remove'(Bin, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Remove'(Bin, 0, 0, 0, id(undefined, TrUserData), id(false, TrUserData), id(false, TrUserData), TrUserData). + +'dfp_read_field_def_ContainerRequest.Remove'(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> 'd_field_ContainerRequest.Remove_target'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +'dfp_read_field_def_ContainerRequest.Remove'(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> 'd_field_ContainerRequest.Remove_force'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +'dfp_read_field_def_ContainerRequest.Remove'(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> 'd_field_ContainerRequest.Remove_remove_volumes'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +'dfp_read_field_def_ContainerRequest.Remove'(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'ContainerRequest.Remove'{target = F@_1, force = F@_2, remove_volumes = F@_3}; +'dfp_read_field_def_ContainerRequest.Remove'(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> 'dg_read_field_def_ContainerRequest.Remove'(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +'dg_read_field_def_ContainerRequest.Remove'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> 'dg_read_field_def_ContainerRequest.Remove'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +'dg_read_field_def_ContainerRequest.Remove'(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> 'd_field_ContainerRequest.Remove_target'(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 16 -> 'd_field_ContainerRequest.Remove_force'(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 24 -> 'd_field_ContainerRequest.Remove_remove_volumes'(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> 'skip_varint_ContainerRequest.Remove'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> 'skip_64_ContainerRequest.Remove'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> 'skip_length_delimited_ContainerRequest.Remove'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> 'skip_group_ContainerRequest.Remove'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> 'skip_32_ContainerRequest.Remove'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +'dg_read_field_def_ContainerRequest.Remove'(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'ContainerRequest.Remove'{target = F@_1, force = F@_2, remove_volumes = F@_3}. + +'d_field_ContainerRequest.Remove_target'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> 'd_field_ContainerRequest.Remove_target'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +'d_field_ContainerRequest.Remove_target'(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, F@_3, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_ContainerRef(Bs, TrUserData), TrUserData), Rest2} end, + 'dfp_read_field_def_ContainerRequest.Remove'(RestF, + 0, + 0, + F, + if Prev == undefined -> NewFValue; + true -> merge_msg_ContainerRef(Prev, NewFValue, TrUserData) + end, + F@_2, + F@_3, + TrUserData). + +'d_field_ContainerRequest.Remove_force'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> 'd_field_ContainerRequest.Remove_force'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +'d_field_ContainerRequest.Remove_force'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, TrUserData) -> + {NewFValue, RestF} = {id(X bsl N + Acc =/= 0, TrUserData), Rest}, + 'dfp_read_field_def_ContainerRequest.Remove'(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). + +'d_field_ContainerRequest.Remove_remove_volumes'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> 'd_field_ContainerRequest.Remove_remove_volumes'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +'d_field_ContainerRequest.Remove_remove_volumes'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> + {NewFValue, RestF} = {id(X bsl N + Acc =/= 0, TrUserData), Rest}, + 'dfp_read_field_def_ContainerRequest.Remove'(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + +'skip_varint_ContainerRequest.Remove'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> 'skip_varint_ContainerRequest.Remove'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +'skip_varint_ContainerRequest.Remove'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Remove'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +'skip_length_delimited_ContainerRequest.Remove'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> 'skip_length_delimited_ContainerRequest.Remove'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +'skip_length_delimited_ContainerRequest.Remove'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + 'dfp_read_field_def_ContainerRequest.Remove'(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +'skip_group_ContainerRequest.Remove'(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + 'dfp_read_field_def_ContainerRequest.Remove'(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +'skip_32_ContainerRequest.Remove'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Remove'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +'skip_64_ContainerRequest.Remove'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Remove'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +'decode_msg_ContainerRequest.Config'(Bin, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Config'(Bin, 0, 0, 0, id(undefined, TrUserData), id(<<>>, TrUserData), TrUserData). + +'dfp_read_field_def_ContainerRequest.Config'(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_ContainerRequest.Config_target'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'dfp_read_field_def_ContainerRequest.Config'(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_ContainerRequest.Config_config'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'dfp_read_field_def_ContainerRequest.Config'(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'ContainerRequest.Config'{target = F@_1, config = F@_2}; +'dfp_read_field_def_ContainerRequest.Config'(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dg_read_field_def_ContainerRequest.Config'(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'dg_read_field_def_ContainerRequest.Config'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> 'dg_read_field_def_ContainerRequest.Config'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'dg_read_field_def_ContainerRequest.Config'(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> 'd_field_ContainerRequest.Config_target'(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> 'd_field_ContainerRequest.Config_config'(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> 'skip_varint_ContainerRequest.Config'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> 'skip_64_ContainerRequest.Config'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> 'skip_length_delimited_ContainerRequest.Config'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> 'skip_group_ContainerRequest.Config'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> 'skip_32_ContainerRequest.Config'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +'dg_read_field_def_ContainerRequest.Config'(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'ContainerRequest.Config'{target = F@_1, config = F@_2}. + +'d_field_ContainerRequest.Config_target'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'd_field_ContainerRequest.Config_target'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'d_field_ContainerRequest.Config_target'(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_ContainerRef(Bs, TrUserData), TrUserData), Rest2} end, + 'dfp_read_field_def_ContainerRequest.Config'(RestF, + 0, + 0, + F, + if Prev == undefined -> NewFValue; + true -> merge_msg_ContainerRef(Prev, NewFValue, TrUserData) + end, + F@_2, + TrUserData). + +'d_field_ContainerRequest.Config_config'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'd_field_ContainerRequest.Config_config'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'d_field_ContainerRequest.Config_config'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + 'dfp_read_field_def_ContainerRequest.Config'(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + +'skip_varint_ContainerRequest.Config'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'skip_varint_ContainerRequest.Config'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'skip_varint_ContainerRequest.Config'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Config'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'skip_length_delimited_ContainerRequest.Config'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'skip_length_delimited_ContainerRequest.Config'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'skip_length_delimited_ContainerRequest.Config'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + 'dfp_read_field_def_ContainerRequest.Config'(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +'skip_group_ContainerRequest.Config'(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + 'dfp_read_field_def_ContainerRequest.Config'(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +'skip_32_ContainerRequest.Config'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Config'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'skip_64_ContainerRequest.Config'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_ContainerRequest.Config'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +decode_msg_ContainerRequest(Bin, TrUserData) -> dfp_read_field_def_ContainerRequest(Bin, 0, 0, 0, id(undefined, TrUserData), TrUserData). + +dfp_read_field_def_ContainerRequest(<<82, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_ContainerRequest_list(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_ContainerRequest(<<90, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_ContainerRequest_deploy(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_ContainerRequest(<<98, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_ContainerRequest_start(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_ContainerRequest(<<106, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_ContainerRequest_stop(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_ContainerRequest(<<114, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_ContainerRequest_kill(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_ContainerRequest(<<122, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_ContainerRequest_remove(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_ContainerRequest(<<130, 1, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_ContainerRequest_config(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_ContainerRequest(<<>>, 0, 0, _, F@_1, _) -> #'ContainerRequest'{action = F@_1}; +dfp_read_field_def_ContainerRequest(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_ContainerRequest(Other, Z1, Z2, F, F@_1, TrUserData). + +dg_read_field_def_ContainerRequest(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_ContainerRequest(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +dg_read_field_def_ContainerRequest(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 82 -> d_field_ContainerRequest_list(Rest, 0, 0, 0, F@_1, TrUserData); + 90 -> d_field_ContainerRequest_deploy(Rest, 0, 0, 0, F@_1, TrUserData); + 98 -> d_field_ContainerRequest_start(Rest, 0, 0, 0, F@_1, TrUserData); + 106 -> d_field_ContainerRequest_stop(Rest, 0, 0, 0, F@_1, TrUserData); + 114 -> d_field_ContainerRequest_kill(Rest, 0, 0, 0, F@_1, TrUserData); + 122 -> d_field_ContainerRequest_remove(Rest, 0, 0, 0, F@_1, TrUserData); + 130 -> d_field_ContainerRequest_config(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_ContainerRequest(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> skip_64_ContainerRequest(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> skip_length_delimited_ContainerRequest(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> skip_group_ContainerRequest(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> skip_32_ContainerRequest(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end + end; +dg_read_field_def_ContainerRequest(<<>>, 0, 0, _, F@_1, _) -> #'ContainerRequest'{action = F@_1}. + +d_field_ContainerRequest_list(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_ContainerRequest_list(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_ContainerRequest_list(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id('decode_msg_ContainerRequest.List'(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerRequest(RestF, + 0, + 0, + F, + case Prev of + undefined -> id({list, NewFValue}, TrUserData); + {list, MVPrev} -> id({list, 'merge_msg_ContainerRequest.List'(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({list, NewFValue}, TrUserData) + end, + TrUserData). + +d_field_ContainerRequest_deploy(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_ContainerRequest_deploy(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_ContainerRequest_deploy(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id('decode_msg_ContainerRequest.Deploy'(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerRequest(RestF, + 0, + 0, + F, + case Prev of + undefined -> id({deploy, NewFValue}, TrUserData); + {deploy, MVPrev} -> id({deploy, 'merge_msg_ContainerRequest.Deploy'(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({deploy, NewFValue}, TrUserData) + end, + TrUserData). + +d_field_ContainerRequest_start(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_ContainerRequest_start(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_ContainerRequest_start(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id('decode_msg_ContainerRequest.Start'(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerRequest(RestF, + 0, + 0, + F, + case Prev of + undefined -> id({start, NewFValue}, TrUserData); + {start, MVPrev} -> id({start, 'merge_msg_ContainerRequest.Start'(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({start, NewFValue}, TrUserData) + end, + TrUserData). + +d_field_ContainerRequest_stop(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_ContainerRequest_stop(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_ContainerRequest_stop(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id('decode_msg_ContainerRequest.Stop'(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerRequest(RestF, + 0, + 0, + F, + case Prev of + undefined -> id({stop, NewFValue}, TrUserData); + {stop, MVPrev} -> id({stop, 'merge_msg_ContainerRequest.Stop'(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({stop, NewFValue}, TrUserData) + end, + TrUserData). + +d_field_ContainerRequest_kill(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_ContainerRequest_kill(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_ContainerRequest_kill(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id('decode_msg_ContainerRequest.Kill'(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerRequest(RestF, + 0, + 0, + F, + case Prev of + undefined -> id({kill, NewFValue}, TrUserData); + {kill, MVPrev} -> id({kill, 'merge_msg_ContainerRequest.Kill'(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({kill, NewFValue}, TrUserData) + end, + TrUserData). + +d_field_ContainerRequest_remove(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_ContainerRequest_remove(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_ContainerRequest_remove(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id('decode_msg_ContainerRequest.Remove'(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerRequest(RestF, + 0, + 0, + F, + case Prev of + undefined -> id({remove, NewFValue}, TrUserData); + {remove, MVPrev} -> id({remove, 'merge_msg_ContainerRequest.Remove'(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({remove, NewFValue}, TrUserData) + end, + TrUserData). + +d_field_ContainerRequest_config(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_ContainerRequest_config(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_ContainerRequest_config(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id('decode_msg_ContainerRequest.Config'(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerRequest(RestF, + 0, + 0, + F, + case Prev of + undefined -> id({config, NewFValue}, TrUserData); + {config, MVPrev} -> id({config, 'merge_msg_ContainerRequest.Config'(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({config, NewFValue}, TrUserData) + end, + TrUserData). + +skip_varint_ContainerRequest(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_ContainerRequest(Rest, Z1, Z2, F, F@_1, TrUserData); +skip_varint_ContainerRequest(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_ContainerRequest(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_length_delimited_ContainerRequest(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_ContainerRequest(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +skip_length_delimited_ContainerRequest(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_ContainerRequest(Rest2, 0, 0, F, F@_1, TrUserData). + +skip_group_ContainerRequest(Bin, _, Z2, FNum, F@_1, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_ContainerRequest(Rest, 0, Z2, FNum, F@_1, TrUserData). + +skip_32_ContainerRequest(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_ContainerRequest(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_64_ContainerRequest(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_ContainerRequest(Rest, Z1, Z2, F, F@_1, TrUserData). + +decode_msg_ContainerDeployParams(Bin, TrUserData) -> dfp_read_field_def_ContainerDeployParams(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), id(undefined, TrUserData), TrUserData). + +dfp_read_field_def_ContainerDeployParams(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_ContainerDeployParams_container_name(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_ContainerDeployParams(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_ContainerDeployParams_container_dir(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_ContainerDeployParams(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_ContainerDeployParams_spec(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_ContainerDeployParams(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'ContainerDeployParams'{container_name = F@_1, container_dir = F@_2, spec = F@_3}; +dfp_read_field_def_ContainerDeployParams(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_ContainerDeployParams(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +dg_read_field_def_ContainerDeployParams(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_ContainerDeployParams(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_ContainerDeployParams(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_ContainerDeployParams_container_name(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_ContainerDeployParams_container_dir(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 26 -> d_field_ContainerDeployParams_spec(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_ContainerDeployParams(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_ContainerDeployParams(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_ContainerDeployParams(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_ContainerDeployParams(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_ContainerDeployParams(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +dg_read_field_def_ContainerDeployParams(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'ContainerDeployParams'{container_name = F@_1, container_dir = F@_2, spec = F@_3}. + +d_field_ContainerDeployParams_container_name(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_ContainerDeployParams_container_name(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_ContainerDeployParams_container_name(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerDeployParams(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). + +d_field_ContainerDeployParams_container_dir(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_ContainerDeployParams_container_dir(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_ContainerDeployParams_container_dir(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerDeployParams(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). + +d_field_ContainerDeployParams_spec(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_ContainerDeployParams_spec(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_ContainerDeployParams_spec(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_ContainerSpec(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerDeployParams(RestF, + 0, + 0, + F, + F@_1, + F@_2, + if Prev == undefined -> NewFValue; + true -> merge_msg_ContainerSpec(Prev, NewFValue, TrUserData) + end, + TrUserData). + +skip_varint_ContainerDeployParams(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_ContainerDeployParams(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_ContainerDeployParams(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_ContainerDeployParams(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_ContainerDeployParams(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_ContainerDeployParams(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_ContainerDeployParams(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_ContainerDeployParams(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +skip_group_ContainerDeployParams(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_ContainerDeployParams(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +skip_32_ContainerDeployParams(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_ContainerDeployParams(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_64_ContainerDeployParams(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_ContainerDeployParams(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +decode_msg_ContainerSpec(Bin, TrUserData) -> + dfp_read_field_def_ContainerSpec(Bin, + 0, + 0, + 0, + id(<<>>, TrUserData), + id([], TrUserData), + id([], TrUserData), + id([], TrUserData), + 'tr_decode_init_default_ContainerSpec.labels'([], TrUserData), + id([], TrUserData), + id(<<>>, TrUserData), + id(<<>>, TrUserData), + id(<<>>, TrUserData), + id([], TrUserData), + id([], TrUserData), + id(<<>>, TrUserData), + id(undefined, TrUserData), + id(undefined, TrUserData), + id(false, TrUserData), + id([], TrUserData), + id([], TrUserData), + id([], TrUserData), + id(undefined, TrUserData), + id([], TrUserData), + id([], TrUserData), + 'tr_decode_init_default_ContainerSpec.sysctls'([], TrUserData), + id([], TrUserData), + TrUserData). + +dfp_read_field_def_ContainerSpec(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_image(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_command(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_entrypoint(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<34, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_env(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<42, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_labels(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<50, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_volumes(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<58, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_user(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<66, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_working_dir(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<74, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_hostname(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<82, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_expose(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<90, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_networks(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<98, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_network_mode(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<106, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_healthcheck(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<114, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_restart(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<120, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_privileged(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<130, 1, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_cap_add(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<138, 1, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_cap_drop(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<146, 1, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_devices(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<154, 1, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_resources(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<162, 1, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_ulimits(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<170, 1, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_tmpfs(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<178, 1, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_sysctls(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<186, 1, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + d_field_ContainerSpec_extra_hosts(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dfp_read_field_def_ContainerSpec(<<>>, 0, 0, _, F@_1, R1, R2, R3, R4, R5, F@_7, F@_8, F@_9, R6, R7, F@_12, F@_13, F@_14, F@_15, R8, R9, R10, F@_19, R11, R12, R13, R14, TrUserData) -> + #'ContainerSpec'{image = F@_1, command = lists_reverse(R1, TrUserData), entrypoint = lists_reverse(R2, TrUserData), env = lists_reverse(R3, TrUserData), labels = 'tr_decode_repeated_finalize_ContainerSpec.labels'(R4, TrUserData), + volumes = lists_reverse(R5, TrUserData), user = F@_7, working_dir = F@_8, hostname = F@_9, expose = lists_reverse(R6, TrUserData), networks = lists_reverse(R7, TrUserData), network_mode = F@_12, healthcheck = F@_13, restart = F@_14, + privileged = F@_15, cap_add = lists_reverse(R8, TrUserData), cap_drop = lists_reverse(R9, TrUserData), devices = lists_reverse(R10, TrUserData), resources = F@_19, ulimits = lists_reverse(R11, TrUserData), tmpfs = lists_reverse(R12, TrUserData), + sysctls = 'tr_decode_repeated_finalize_ContainerSpec.sysctls'(R13, TrUserData), extra_hosts = lists_reverse(R14, TrUserData)}; +dfp_read_field_def_ContainerSpec(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + dg_read_field_def_ContainerSpec(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +dg_read_field_def_ContainerSpec(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) + when N < 32 - 7 -> + dg_read_field_def_ContainerSpec(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +dg_read_field_def_ContainerSpec(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_ContainerSpec_image(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 18 -> d_field_ContainerSpec_command(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 26 -> d_field_ContainerSpec_entrypoint(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 34 -> d_field_ContainerSpec_env(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 42 -> d_field_ContainerSpec_labels(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 50 -> d_field_ContainerSpec_volumes(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 58 -> d_field_ContainerSpec_user(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 66 -> d_field_ContainerSpec_working_dir(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 74 -> d_field_ContainerSpec_hostname(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 82 -> d_field_ContainerSpec_expose(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 90 -> d_field_ContainerSpec_networks(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 98 -> d_field_ContainerSpec_network_mode(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 106 -> d_field_ContainerSpec_healthcheck(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 114 -> d_field_ContainerSpec_restart(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 120 -> d_field_ContainerSpec_privileged(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 130 -> d_field_ContainerSpec_cap_add(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 138 -> d_field_ContainerSpec_cap_drop(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 146 -> d_field_ContainerSpec_devices(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 154 -> d_field_ContainerSpec_resources(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 162 -> d_field_ContainerSpec_ulimits(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 170 -> d_field_ContainerSpec_tmpfs(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 178 -> d_field_ContainerSpec_sysctls(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 186 -> d_field_ContainerSpec_extra_hosts(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_ContainerSpec(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 1 -> skip_64_ContainerSpec(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 2 -> skip_length_delimited_ContainerSpec(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 3 -> skip_group_ContainerSpec(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); + 5 -> skip_32_ContainerSpec(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) + end + end; +dg_read_field_def_ContainerSpec(<<>>, 0, 0, _, F@_1, R1, R2, R3, R4, R5, F@_7, F@_8, F@_9, R6, R7, F@_12, F@_13, F@_14, F@_15, R8, R9, R10, F@_19, R11, R12, R13, R14, TrUserData) -> + #'ContainerSpec'{image = F@_1, command = lists_reverse(R1, TrUserData), entrypoint = lists_reverse(R2, TrUserData), env = lists_reverse(R3, TrUserData), labels = 'tr_decode_repeated_finalize_ContainerSpec.labels'(R4, TrUserData), + volumes = lists_reverse(R5, TrUserData), user = F@_7, working_dir = F@_8, hostname = F@_9, expose = lists_reverse(R6, TrUserData), networks = lists_reverse(R7, TrUserData), network_mode = F@_12, healthcheck = F@_13, restart = F@_14, + privileged = F@_15, cap_add = lists_reverse(R8, TrUserData), cap_drop = lists_reverse(R9, TrUserData), devices = lists_reverse(R10, TrUserData), resources = F@_19, ulimits = lists_reverse(R11, TrUserData), tmpfs = lists_reverse(R12, TrUserData), + sysctls = 'tr_decode_repeated_finalize_ContainerSpec.sysctls'(R13, TrUserData), extra_hosts = lists_reverse(R14, TrUserData)}. + +d_field_ContainerSpec_image(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_image(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_image(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_command(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_command(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_command(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, cons(NewFValue, Prev, TrUserData), F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_entrypoint(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_entrypoint(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_entrypoint(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, Prev, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, cons(NewFValue, Prev, TrUserData), F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_env(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_env(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_env(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, Prev, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, cons(NewFValue, Prev, TrUserData), F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_labels(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_labels(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_labels(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, Prev, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id('decode_msg_map'(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, + 0, + 0, + F, + F@_1, + F@_2, + F@_3, + F@_4, + 'tr_decode_repeated_add_elem_ContainerSpec.labels'(NewFValue, Prev, TrUserData), + F@_6, + F@_7, + F@_8, + F@_9, + F@_10, + F@_11, + F@_12, + F@_13, + F@_14, + F@_15, + F@_16, + F@_17, + F@_18, + F@_19, + F@_20, + F@_21, + F@_22, + F@_23, + TrUserData). + +d_field_ContainerSpec_volumes(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_volumes(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_volumes(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, Prev, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_VolumeBind(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, cons(NewFValue, Prev, TrUserData), F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_user(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_user(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_user(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, _, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, NewFValue, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_working_dir(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_working_dir(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_working_dir(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, _, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, NewFValue, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_hostname(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_hostname(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_hostname(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, _, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, NewFValue, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_expose(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_expose(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_expose(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, Prev, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_PortExpose(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, cons(NewFValue, Prev, TrUserData), F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_networks(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_networks(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_networks(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, Prev, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, cons(NewFValue, Prev, TrUserData), F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_network_mode(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) + when N < 57 -> + d_field_ContainerSpec_network_mode(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_network_mode(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, _, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, NewFValue, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_healthcheck(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_healthcheck(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_healthcheck(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, Prev, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_Healthcheck(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, + 0, + 0, + F, + F@_1, + F@_2, + F@_3, + F@_4, + F@_5, + F@_6, + F@_7, + F@_8, + F@_9, + F@_10, + F@_11, + F@_12, + if Prev == undefined -> NewFValue; + true -> merge_msg_Healthcheck(Prev, NewFValue, TrUserData) + end, + F@_14, + F@_15, + F@_16, + F@_17, + F@_18, + F@_19, + F@_20, + F@_21, + F@_22, + F@_23, + TrUserData). + +d_field_ContainerSpec_restart(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_restart(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_restart(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, Prev, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_RestartPolicy(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, + 0, + 0, + F, + F@_1, + F@_2, + F@_3, + F@_4, + F@_5, + F@_6, + F@_7, + F@_8, + F@_9, + F@_10, + F@_11, + F@_12, + F@_13, + if Prev == undefined -> NewFValue; + true -> merge_msg_RestartPolicy(Prev, NewFValue, TrUserData) + end, + F@_15, + F@_16, + F@_17, + F@_18, + F@_19, + F@_20, + F@_21, + F@_22, + F@_23, + TrUserData). + +d_field_ContainerSpec_privileged(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_privileged(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_privileged(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, _, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = {id(X bsl N + Acc =/= 0, TrUserData), Rest}, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, NewFValue, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_cap_add(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_cap_add(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_cap_add(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, Prev, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, cons(NewFValue, Prev, TrUserData), F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_cap_drop(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_cap_drop(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_cap_drop(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, Prev, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, cons(NewFValue, Prev, TrUserData), F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_devices(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_devices(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_devices(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, Prev, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_DeviceMapping(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, cons(NewFValue, Prev, TrUserData), F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_resources(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_resources(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_resources(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, Prev, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_ResourceLimits(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, + 0, + 0, + F, + F@_1, + F@_2, + F@_3, + F@_4, + F@_5, + F@_6, + F@_7, + F@_8, + F@_9, + F@_10, + F@_11, + F@_12, + F@_13, + F@_14, + F@_15, + F@_16, + F@_17, + F@_18, + if Prev == undefined -> NewFValue; + true -> merge_msg_ResourceLimits(Prev, NewFValue, TrUserData) + end, + F@_20, + F@_21, + F@_22, + F@_23, + TrUserData). + +d_field_ContainerSpec_ulimits(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_ulimits(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_ulimits(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, Prev, F@_21, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_Ulimit(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, cons(NewFValue, Prev, TrUserData), F@_21, F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_tmpfs(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_tmpfs(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_tmpfs(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, Prev, F@_22, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_TmpfsMount(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, cons(NewFValue, Prev, TrUserData), F@_22, F@_23, TrUserData). + +d_field_ContainerSpec_sysctls(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_sysctls(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_sysctls(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, Prev, F@_23, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id('decode_msg_map'(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, + 0, + 0, + F, + F@_1, + F@_2, + F@_3, + F@_4, + F@_5, + F@_6, + F@_7, + F@_8, + F@_9, + F@_10, + F@_11, + F@_12, + F@_13, + F@_14, + F@_15, + F@_16, + F@_17, + F@_18, + F@_19, + F@_20, + F@_21, + 'tr_decode_repeated_add_elem_ContainerSpec.sysctls'(NewFValue, Prev, TrUserData), + F@_23, + TrUserData). + +d_field_ContainerSpec_extra_hosts(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) when N < 57 -> + d_field_ContainerSpec_extra_hosts(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +d_field_ContainerSpec_extra_hosts(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_ContainerSpec(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, cons(NewFValue, Prev, TrUserData), TrUserData). + +skip_varint_ContainerSpec(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + skip_varint_ContainerSpec(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +skip_varint_ContainerSpec(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + dfp_read_field_def_ContainerSpec(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +skip_length_delimited_ContainerSpec(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) + when N < 57 -> + skip_length_delimited_ContainerSpec(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData); +skip_length_delimited_ContainerSpec(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_ContainerSpec(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +skip_group_ContainerSpec(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_ContainerSpec(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +skip_32_ContainerSpec(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + dfp_read_field_def_ContainerSpec(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +skip_64_ContainerSpec(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData) -> + dfp_read_field_def_ContainerSpec(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, F@_14, F@_15, F@_16, F@_17, F@_18, F@_19, F@_20, F@_21, F@_22, F@_23, TrUserData). + +decode_msg_VolumeBind(Bin, TrUserData) -> dfp_read_field_def_VolumeBind(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), id(false, TrUserData), TrUserData). + +dfp_read_field_def_VolumeBind(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_VolumeBind_host_path(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_VolumeBind(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_VolumeBind_container_path(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_VolumeBind(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_VolumeBind_read_only(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_VolumeBind(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'VolumeBind'{host_path = F@_1, container_path = F@_2, read_only = F@_3}; +dfp_read_field_def_VolumeBind(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_VolumeBind(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +dg_read_field_def_VolumeBind(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_VolumeBind(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_VolumeBind(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_VolumeBind_host_path(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_VolumeBind_container_path(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 24 -> d_field_VolumeBind_read_only(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_VolumeBind(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_VolumeBind(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_VolumeBind(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_VolumeBind(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_VolumeBind(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +dg_read_field_def_VolumeBind(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'VolumeBind'{host_path = F@_1, container_path = F@_2, read_only = F@_3}. + +d_field_VolumeBind_host_path(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_VolumeBind_host_path(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_VolumeBind_host_path(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_VolumeBind(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). + +d_field_VolumeBind_container_path(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_VolumeBind_container_path(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_VolumeBind_container_path(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_VolumeBind(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). + +d_field_VolumeBind_read_only(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_VolumeBind_read_only(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_VolumeBind_read_only(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> + {NewFValue, RestF} = {id(X bsl N + Acc =/= 0, TrUserData), Rest}, + dfp_read_field_def_VolumeBind(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + +skip_varint_VolumeBind(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_VolumeBind(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_VolumeBind(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_VolumeBind(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_VolumeBind(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_VolumeBind(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_VolumeBind(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_VolumeBind(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +skip_group_VolumeBind(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_VolumeBind(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +skip_32_VolumeBind(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_VolumeBind(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_64_VolumeBind(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_VolumeBind(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +decode_msg_PortExpose(Bin, TrUserData) -> dfp_read_field_def_PortExpose(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_PortExpose(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_PortExpose_container_port(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_PortExpose(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_PortExpose_protocol(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_PortExpose(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'PortExpose'{container_port = F@_1, protocol = F@_2}; +dfp_read_field_def_PortExpose(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_PortExpose(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +dg_read_field_def_PortExpose(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_PortExpose(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +dg_read_field_def_PortExpose(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 8 -> d_field_PortExpose_container_port(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> d_field_PortExpose_protocol(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_PortExpose(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> skip_64_PortExpose(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> skip_length_delimited_PortExpose(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> skip_group_PortExpose(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> skip_32_PortExpose(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +dg_read_field_def_PortExpose(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'PortExpose'{container_port = F@_1, protocol = F@_2}. + +d_field_PortExpose_container_port(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_PortExpose_container_port(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_PortExpose_container_port(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_PortExpose(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + +d_field_PortExpose_protocol(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_PortExpose_protocol(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_PortExpose_protocol(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_PortExpose(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + +skip_varint_PortExpose(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_PortExpose(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +skip_varint_PortExpose(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_PortExpose(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_length_delimited_PortExpose(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_PortExpose(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +skip_length_delimited_PortExpose(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_PortExpose(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +skip_group_PortExpose(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_PortExpose(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +skip_32_PortExpose(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_PortExpose(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_64_PortExpose(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_PortExpose(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +decode_msg_Healthcheck(Bin, TrUserData) -> dfp_read_field_def_Healthcheck(Bin, 0, 0, 0, id([], TrUserData), id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), TrUserData). + +dfp_read_field_def_Healthcheck(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_Healthcheck_test(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_Healthcheck(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_Healthcheck_interval_ns(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_Healthcheck(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_Healthcheck_timeout_ns(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_Healthcheck(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_Healthcheck_retries(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_Healthcheck(<<>>, 0, 0, _, R1, F@_2, F@_3, F@_4, TrUserData) -> #'Healthcheck'{test = lists_reverse(R1, TrUserData), interval_ns = F@_2, timeout_ns = F@_3, retries = F@_4}; +dfp_read_field_def_Healthcheck(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_Healthcheck(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +dg_read_field_def_Healthcheck(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 32 - 7 -> dg_read_field_def_Healthcheck(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dg_read_field_def_Healthcheck(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_Healthcheck_test(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 16 -> d_field_Healthcheck_interval_ns(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 24 -> d_field_Healthcheck_timeout_ns(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 32 -> d_field_Healthcheck_retries(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_Healthcheck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 1 -> skip_64_Healthcheck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 2 -> skip_length_delimited_Healthcheck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 3 -> skip_group_Healthcheck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 5 -> skip_32_Healthcheck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) + end + end; +dg_read_field_def_Healthcheck(<<>>, 0, 0, _, R1, F@_2, F@_3, F@_4, TrUserData) -> #'Healthcheck'{test = lists_reverse(R1, TrUserData), interval_ns = F@_2, timeout_ns = F@_3, retries = F@_4}. + +d_field_Healthcheck_test(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_Healthcheck_test(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_Healthcheck_test(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, F@_3, F@_4, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_Healthcheck(RestF, 0, 0, F, cons(NewFValue, Prev, TrUserData), F@_2, F@_3, F@_4, TrUserData). + +d_field_Healthcheck_interval_ns(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_Healthcheck_interval_ns(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_Healthcheck_interval_ns(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 18446744073709551615, TrUserData), Rest}, + dfp_read_field_def_Healthcheck(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, TrUserData). + +d_field_Healthcheck_timeout_ns(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_Healthcheck_timeout_ns(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_Healthcheck_timeout_ns(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 18446744073709551615, TrUserData), Rest}, + dfp_read_field_def_Healthcheck(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, TrUserData). + +d_field_Healthcheck_retries(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_Healthcheck_retries(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_Healthcheck_retries(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_Healthcheck(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData). + +skip_varint_Healthcheck(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> skip_varint_Healthcheck(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_varint_Healthcheck(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_Healthcheck(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_length_delimited_Healthcheck(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> skip_length_delimited_Healthcheck(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_length_delimited_Healthcheck(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_Healthcheck(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_group_Healthcheck(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_Healthcheck(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_32_Healthcheck(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_Healthcheck(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_64_Healthcheck(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_Healthcheck(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +decode_msg_RestartPolicy(Bin, TrUserData) -> dfp_read_field_def_RestartPolicy(Bin, 0, 0, 0, id(<<>>, TrUserData), id(0, TrUserData), TrUserData). + +dfp_read_field_def_RestartPolicy(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_RestartPolicy_name(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_RestartPolicy(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_RestartPolicy_maximum_retry_count(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_RestartPolicy(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'RestartPolicy'{name = F@_1, maximum_retry_count = F@_2}; +dfp_read_field_def_RestartPolicy(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_RestartPolicy(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +dg_read_field_def_RestartPolicy(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_RestartPolicy(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +dg_read_field_def_RestartPolicy(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_RestartPolicy_name(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 16 -> d_field_RestartPolicy_maximum_retry_count(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_RestartPolicy(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> skip_64_RestartPolicy(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> skip_length_delimited_RestartPolicy(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> skip_group_RestartPolicy(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> skip_32_RestartPolicy(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +dg_read_field_def_RestartPolicy(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'RestartPolicy'{name = F@_1, maximum_retry_count = F@_2}. + +d_field_RestartPolicy_name(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_RestartPolicy_name(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_RestartPolicy_name(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_RestartPolicy(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + +d_field_RestartPolicy_maximum_retry_count(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_RestartPolicy_maximum_retry_count(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_RestartPolicy_maximum_retry_count(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_RestartPolicy(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + +skip_varint_RestartPolicy(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_RestartPolicy(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +skip_varint_RestartPolicy(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_RestartPolicy(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_length_delimited_RestartPolicy(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_RestartPolicy(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +skip_length_delimited_RestartPolicy(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_RestartPolicy(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +skip_group_RestartPolicy(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_RestartPolicy(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +skip_32_RestartPolicy(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_RestartPolicy(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_64_RestartPolicy(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_RestartPolicy(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +decode_msg_DeviceMapping(Bin, TrUserData) -> dfp_read_field_def_DeviceMapping(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_DeviceMapping(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_DeviceMapping_host_path(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_DeviceMapping(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_DeviceMapping_container_path(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_DeviceMapping(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_DeviceMapping_cgroup_permissions(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_DeviceMapping(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'DeviceMapping'{host_path = F@_1, container_path = F@_2, cgroup_permissions = F@_3}; +dfp_read_field_def_DeviceMapping(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_DeviceMapping(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +dg_read_field_def_DeviceMapping(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_DeviceMapping(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_DeviceMapping(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_DeviceMapping_host_path(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_DeviceMapping_container_path(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 26 -> d_field_DeviceMapping_cgroup_permissions(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_DeviceMapping(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_DeviceMapping(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_DeviceMapping(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_DeviceMapping(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_DeviceMapping(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +dg_read_field_def_DeviceMapping(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'DeviceMapping'{host_path = F@_1, container_path = F@_2, cgroup_permissions = F@_3}. + +d_field_DeviceMapping_host_path(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_DeviceMapping_host_path(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_DeviceMapping_host_path(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_DeviceMapping(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). + +d_field_DeviceMapping_container_path(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_DeviceMapping_container_path(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_DeviceMapping_container_path(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_DeviceMapping(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). + +d_field_DeviceMapping_cgroup_permissions(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_DeviceMapping_cgroup_permissions(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_DeviceMapping_cgroup_permissions(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_DeviceMapping(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + +skip_varint_DeviceMapping(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_DeviceMapping(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_DeviceMapping(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_DeviceMapping(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_DeviceMapping(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_DeviceMapping(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_DeviceMapping(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_DeviceMapping(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +skip_group_DeviceMapping(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_DeviceMapping(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +skip_32_DeviceMapping(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_DeviceMapping(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_64_DeviceMapping(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_DeviceMapping(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +decode_msg_ResourceLimits(Bin, TrUserData) -> dfp_read_field_def_ResourceLimits(Bin, 0, 0, 0, id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), TrUserData). + +dfp_read_field_def_ResourceLimits(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_ResourceLimits_memory_bytes(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_ResourceLimits(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_ResourceLimits_memory_reservation_bytes(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_ResourceLimits(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_ResourceLimits_nano_cpus(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_ResourceLimits(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_ResourceLimits_cpu_shares(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_ResourceLimits(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #'ResourceLimits'{memory_bytes = F@_1, memory_reservation_bytes = F@_2, nano_cpus = F@_3, cpu_shares = F@_4}; +dfp_read_field_def_ResourceLimits(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_ResourceLimits(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +dg_read_field_def_ResourceLimits(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 32 - 7 -> dg_read_field_def_ResourceLimits(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dg_read_field_def_ResourceLimits(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 8 -> d_field_ResourceLimits_memory_bytes(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 16 -> d_field_ResourceLimits_memory_reservation_bytes(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 24 -> d_field_ResourceLimits_nano_cpus(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 32 -> d_field_ResourceLimits_cpu_shares(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_ResourceLimits(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 1 -> skip_64_ResourceLimits(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 2 -> skip_length_delimited_ResourceLimits(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 3 -> skip_group_ResourceLimits(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 5 -> skip_32_ResourceLimits(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) + end + end; +dg_read_field_def_ResourceLimits(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #'ResourceLimits'{memory_bytes = F@_1, memory_reservation_bytes = F@_2, nano_cpus = F@_3, cpu_shares = F@_4}. + +d_field_ResourceLimits_memory_bytes(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_ResourceLimits_memory_bytes(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_ResourceLimits_memory_bytes(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 18446744073709551615, TrUserData), Rest}, + dfp_read_field_def_ResourceLimits(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, TrUserData). + +d_field_ResourceLimits_memory_reservation_bytes(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> + d_field_ResourceLimits_memory_reservation_bytes(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_ResourceLimits_memory_reservation_bytes(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 18446744073709551615, TrUserData), Rest}, + dfp_read_field_def_ResourceLimits(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, TrUserData). + +d_field_ResourceLimits_nano_cpus(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_ResourceLimits_nano_cpus(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_ResourceLimits_nano_cpus(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 18446744073709551615, TrUserData), Rest}, + dfp_read_field_def_ResourceLimits(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, TrUserData). + +d_field_ResourceLimits_cpu_shares(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_ResourceLimits_cpu_shares(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_ResourceLimits_cpu_shares(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 18446744073709551615, TrUserData), Rest}, + dfp_read_field_def_ResourceLimits(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData). + +skip_varint_ResourceLimits(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> skip_varint_ResourceLimits(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_varint_ResourceLimits(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_ResourceLimits(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_length_delimited_ResourceLimits(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> skip_length_delimited_ResourceLimits(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_length_delimited_ResourceLimits(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_ResourceLimits(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_group_ResourceLimits(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_ResourceLimits(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_32_ResourceLimits(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_ResourceLimits(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_64_ResourceLimits(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_ResourceLimits(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +decode_msg_Ulimit(Bin, TrUserData) -> dfp_read_field_def_Ulimit(Bin, 0, 0, 0, id(<<>>, TrUserData), id(0, TrUserData), id(0, TrUserData), TrUserData). + +dfp_read_field_def_Ulimit(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_Ulimit_name(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_Ulimit(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_Ulimit_soft(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_Ulimit(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_Ulimit_hard(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_Ulimit(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'Ulimit'{name = F@_1, soft = F@_2, hard = F@_3}; +dfp_read_field_def_Ulimit(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_Ulimit(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +dg_read_field_def_Ulimit(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_Ulimit(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_Ulimit(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_Ulimit_name(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 16 -> d_field_Ulimit_soft(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 24 -> d_field_Ulimit_hard(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_Ulimit(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_Ulimit(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_Ulimit(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_Ulimit(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_Ulimit(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +dg_read_field_def_Ulimit(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'Ulimit'{name = F@_1, soft = F@_2, hard = F@_3}. + +d_field_Ulimit_name(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_Ulimit_name(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_Ulimit_name(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_Ulimit(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). + +d_field_Ulimit_soft(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_Ulimit_soft(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_Ulimit_soft(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 18446744073709551615, TrUserData), Rest}, + dfp_read_field_def_Ulimit(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). + +d_field_Ulimit_hard(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_Ulimit_hard(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_Ulimit_hard(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 18446744073709551615, TrUserData), Rest}, + dfp_read_field_def_Ulimit(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + +skip_varint_Ulimit(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_Ulimit(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_Ulimit(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_Ulimit(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_Ulimit(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_Ulimit(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_Ulimit(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_Ulimit(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +skip_group_Ulimit(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_Ulimit(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +skip_32_Ulimit(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_Ulimit(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_64_Ulimit(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_Ulimit(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +decode_msg_TmpfsMount(Bin, TrUserData) -> dfp_read_field_def_TmpfsMount(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_TmpfsMount(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_TmpfsMount_path(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_TmpfsMount(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_TmpfsMount_options(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_TmpfsMount(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'TmpfsMount'{path = F@_1, options = F@_2}; +dfp_read_field_def_TmpfsMount(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_TmpfsMount(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +dg_read_field_def_TmpfsMount(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_TmpfsMount(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +dg_read_field_def_TmpfsMount(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_TmpfsMount_path(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> d_field_TmpfsMount_options(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_TmpfsMount(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> skip_64_TmpfsMount(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> skip_length_delimited_TmpfsMount(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> skip_group_TmpfsMount(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> skip_32_TmpfsMount(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +dg_read_field_def_TmpfsMount(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'TmpfsMount'{path = F@_1, options = F@_2}. + +d_field_TmpfsMount_path(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_TmpfsMount_path(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_TmpfsMount_path(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_TmpfsMount(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + +d_field_TmpfsMount_options(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_TmpfsMount_options(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_TmpfsMount_options(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_TmpfsMount(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + +skip_varint_TmpfsMount(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_TmpfsMount(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +skip_varint_TmpfsMount(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_TmpfsMount(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_length_delimited_TmpfsMount(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_TmpfsMount(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +skip_length_delimited_TmpfsMount(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_TmpfsMount(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +skip_group_TmpfsMount(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_TmpfsMount(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +skip_32_TmpfsMount(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_TmpfsMount(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_64_TmpfsMount(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_TmpfsMount(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + decode_msg_AuthRequest(Bin, TrUserData) -> dfp_read_field_def_AuthRequest(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), TrUserData). dfp_read_field_def_AuthRequest(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_AuthRequest_uuid(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); @@ -1469,6 +3998,57 @@ skip_32_TaskEventStream(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUs skip_64_TaskEventStream(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_TaskEventStream(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). +'decode_msg_map'(Bin, TrUserData) -> 'dfp_read_field_def_map'(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). + +'dfp_read_field_def_map'(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_map_key'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'dfp_read_field_def_map'(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_map_value'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'dfp_read_field_def_map'(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'map'{key = F@_1, value = F@_2}; +'dfp_read_field_def_map'(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dg_read_field_def_map'(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'dg_read_field_def_map'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> 'dg_read_field_def_map'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'dg_read_field_def_map'(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> 'd_field_map_key'(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> 'd_field_map_value'(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> 'skip_varint_map'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> 'skip_64_map'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> 'skip_length_delimited_map'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> 'skip_group_map'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> 'skip_32_map'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +'dg_read_field_def_map'(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'map'{key = F@_1, value = F@_2}. + +'d_field_map_key'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'd_field_map_key'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'d_field_map_key'(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + 'dfp_read_field_def_map'(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + +'d_field_map_value'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'd_field_map_value'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'d_field_map_value'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + 'dfp_read_field_def_map'(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + +'skip_varint_map'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'skip_varint_map'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'skip_varint_map'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_map'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'skip_length_delimited_map'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'skip_length_delimited_map'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'skip_length_delimited_map'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + 'dfp_read_field_def_map'(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +'skip_group_map'(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + 'dfp_read_field_def_map'(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +'skip_32_map'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_map'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'skip_64_map'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_map'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + read_group(Bin, FieldNum) -> {NumBytes, EndTagLen} = read_gr_b(Bin, 0, 0, 0, 0, FieldNum), <> = Bin, @@ -1538,6 +4118,25 @@ merge_msgs(Prev, New, MsgName, Opts) -> 'RequestFrame' -> merge_msg_RequestFrame(Prev, New, TrUserData); 'ResponseFrame' -> merge_msg_ResponseFrame(Prev, New, TrUserData); 'CastFrame' -> merge_msg_CastFrame(Prev, New, TrUserData); + 'ContainerRef' -> merge_msg_ContainerRef(Prev, New, TrUserData); + 'ContainerRequest.List' -> 'merge_msg_ContainerRequest.List'(Prev, New, TrUserData); + 'ContainerRequest.Deploy' -> 'merge_msg_ContainerRequest.Deploy'(Prev, New, TrUserData); + 'ContainerRequest.Start' -> 'merge_msg_ContainerRequest.Start'(Prev, New, TrUserData); + 'ContainerRequest.Stop' -> 'merge_msg_ContainerRequest.Stop'(Prev, New, TrUserData); + 'ContainerRequest.Kill' -> 'merge_msg_ContainerRequest.Kill'(Prev, New, TrUserData); + 'ContainerRequest.Remove' -> 'merge_msg_ContainerRequest.Remove'(Prev, New, TrUserData); + 'ContainerRequest.Config' -> 'merge_msg_ContainerRequest.Config'(Prev, New, TrUserData); + 'ContainerRequest' -> merge_msg_ContainerRequest(Prev, New, TrUserData); + 'ContainerDeployParams' -> merge_msg_ContainerDeployParams(Prev, New, TrUserData); + 'ContainerSpec' -> merge_msg_ContainerSpec(Prev, New, TrUserData); + 'VolumeBind' -> merge_msg_VolumeBind(Prev, New, TrUserData); + 'PortExpose' -> merge_msg_PortExpose(Prev, New, TrUserData); + 'Healthcheck' -> merge_msg_Healthcheck(Prev, New, TrUserData); + 'RestartPolicy' -> merge_msg_RestartPolicy(Prev, New, TrUserData); + 'DeviceMapping' -> merge_msg_DeviceMapping(Prev, New, TrUserData); + 'ResourceLimits' -> merge_msg_ResourceLimits(Prev, New, TrUserData); + 'Ulimit' -> merge_msg_Ulimit(Prev, New, TrUserData); + 'TmpfsMount' -> merge_msg_TmpfsMount(Prev, New, TrUserData); 'AuthRequest' -> merge_msg_AuthRequest(Prev, New, TrUserData); 'AuthReply' -> merge_msg_AuthReply(Prev, New, TrUserData); 'Pub' -> merge_msg_Pub(Prev, New, TrUserData); @@ -1560,6 +4159,7 @@ merge_msg_RequestFrame(#'RequestFrame'{packet_id = PFpacket_id, body = PFbody}, case {PFbody, NFbody} of {{auth_request, OPFbody}, {auth_request, ONFbody}} -> {auth_request, merge_msg_AuthRequest(OPFbody, ONFbody, TrUserData)}; {{rpc_request, OPFbody}, {rpc_request, ONFbody}} -> {rpc_request, merge_msg_RpcRequest(OPFbody, ONFbody, TrUserData)}; + {{container_request, OPFbody}, {container_request, ONFbody}} -> {container_request, merge_msg_ContainerRequest(OPFbody, ONFbody, TrUserData)}; {_, undefined} -> PFbody; _ -> NFbody end}. @@ -1590,6 +4190,366 @@ merge_msg_CastFrame(#'CastFrame'{body = PFbody}, #'CastFrame'{body = NFbody}, Tr _ -> NFbody end}. +-compile({nowarn_unused_function,merge_msg_ContainerRef/3}). +merge_msg_ContainerRef(#'ContainerRef'{id = PFid, name = PFname}, #'ContainerRef'{id = NFid, name = NFname}, _) -> + #'ContainerRef'{id = + if NFid =:= undefined -> PFid; + true -> NFid + end, + name = + if NFname =:= undefined -> PFname; + true -> NFname + end}. + +-compile({nowarn_unused_function,'merge_msg_ContainerRequest.List'/3}). +'merge_msg_ContainerRequest.List'(#'ContainerRequest.List'{all = PFall}, #'ContainerRequest.List'{all = NFall}, _) -> + #'ContainerRequest.List'{all = + if NFall =:= undefined -> PFall; + true -> NFall + end}. + +-compile({nowarn_unused_function,'merge_msg_ContainerRequest.Deploy'/3}). +'merge_msg_ContainerRequest.Deploy'(#'ContainerRequest.Deploy'{task_id = PFtask_id, params = PFparams}, #'ContainerRequest.Deploy'{task_id = NFtask_id, params = NFparams}, TrUserData) -> + #'ContainerRequest.Deploy'{task_id = + if NFtask_id =:= undefined -> PFtask_id; + true -> NFtask_id + end, + params = + if PFparams /= undefined, NFparams /= undefined -> merge_msg_ContainerDeployParams(PFparams, NFparams, TrUserData); + PFparams == undefined -> NFparams; + NFparams == undefined -> PFparams + end}. + +-compile({nowarn_unused_function,'merge_msg_ContainerRequest.Start'/3}). +'merge_msg_ContainerRequest.Start'(#'ContainerRequest.Start'{target = PFtarget}, #'ContainerRequest.Start'{target = NFtarget}, TrUserData) -> + #'ContainerRequest.Start'{target = + if PFtarget /= undefined, NFtarget /= undefined -> merge_msg_ContainerRef(PFtarget, NFtarget, TrUserData); + PFtarget == undefined -> NFtarget; + NFtarget == undefined -> PFtarget + end}. + +-compile({nowarn_unused_function,'merge_msg_ContainerRequest.Stop'/3}). +'merge_msg_ContainerRequest.Stop'(#'ContainerRequest.Stop'{target = PFtarget, timeout_seconds = PFtimeout_seconds}, #'ContainerRequest.Stop'{target = NFtarget, timeout_seconds = NFtimeout_seconds}, TrUserData) -> + #'ContainerRequest.Stop'{target = + if PFtarget /= undefined, NFtarget /= undefined -> merge_msg_ContainerRef(PFtarget, NFtarget, TrUserData); + PFtarget == undefined -> NFtarget; + NFtarget == undefined -> PFtarget + end, + timeout_seconds = + if NFtimeout_seconds =:= undefined -> PFtimeout_seconds; + true -> NFtimeout_seconds + end}. + +-compile({nowarn_unused_function,'merge_msg_ContainerRequest.Kill'/3}). +'merge_msg_ContainerRequest.Kill'(#'ContainerRequest.Kill'{target = PFtarget, signal = PFsignal}, #'ContainerRequest.Kill'{target = NFtarget, signal = NFsignal}, TrUserData) -> + #'ContainerRequest.Kill'{target = + if PFtarget /= undefined, NFtarget /= undefined -> merge_msg_ContainerRef(PFtarget, NFtarget, TrUserData); + PFtarget == undefined -> NFtarget; + NFtarget == undefined -> PFtarget + end, + signal = + if NFsignal =:= undefined -> PFsignal; + true -> NFsignal + end}. + +-compile({nowarn_unused_function,'merge_msg_ContainerRequest.Remove'/3}). +'merge_msg_ContainerRequest.Remove'(#'ContainerRequest.Remove'{target = PFtarget, force = PFforce, remove_volumes = PFremove_volumes}, #'ContainerRequest.Remove'{target = NFtarget, force = NFforce, remove_volumes = NFremove_volumes}, TrUserData) -> + #'ContainerRequest.Remove'{target = + if PFtarget /= undefined, NFtarget /= undefined -> merge_msg_ContainerRef(PFtarget, NFtarget, TrUserData); + PFtarget == undefined -> NFtarget; + NFtarget == undefined -> PFtarget + end, + force = + if NFforce =:= undefined -> PFforce; + true -> NFforce + end, + remove_volumes = + if NFremove_volumes =:= undefined -> PFremove_volumes; + true -> NFremove_volumes + end}. + +-compile({nowarn_unused_function,'merge_msg_ContainerRequest.Config'/3}). +'merge_msg_ContainerRequest.Config'(#'ContainerRequest.Config'{target = PFtarget, config = PFconfig}, #'ContainerRequest.Config'{target = NFtarget, config = NFconfig}, TrUserData) -> + #'ContainerRequest.Config'{target = + if PFtarget /= undefined, NFtarget /= undefined -> merge_msg_ContainerRef(PFtarget, NFtarget, TrUserData); + PFtarget == undefined -> NFtarget; + NFtarget == undefined -> PFtarget + end, + config = + if NFconfig =:= undefined -> PFconfig; + true -> NFconfig + end}. + +-compile({nowarn_unused_function,merge_msg_ContainerRequest/3}). +merge_msg_ContainerRequest(#'ContainerRequest'{action = PFaction}, #'ContainerRequest'{action = NFaction}, TrUserData) -> + #'ContainerRequest'{action = + case {PFaction, NFaction} of + {{list, OPFaction}, {list, ONFaction}} -> {list, 'merge_msg_ContainerRequest.List'(OPFaction, ONFaction, TrUserData)}; + {{deploy, OPFaction}, {deploy, ONFaction}} -> {deploy, 'merge_msg_ContainerRequest.Deploy'(OPFaction, ONFaction, TrUserData)}; + {{start, OPFaction}, {start, ONFaction}} -> {start, 'merge_msg_ContainerRequest.Start'(OPFaction, ONFaction, TrUserData)}; + {{stop, OPFaction}, {stop, ONFaction}} -> {stop, 'merge_msg_ContainerRequest.Stop'(OPFaction, ONFaction, TrUserData)}; + {{kill, OPFaction}, {kill, ONFaction}} -> {kill, 'merge_msg_ContainerRequest.Kill'(OPFaction, ONFaction, TrUserData)}; + {{remove, OPFaction}, {remove, ONFaction}} -> {remove, 'merge_msg_ContainerRequest.Remove'(OPFaction, ONFaction, TrUserData)}; + {{config, OPFaction}, {config, ONFaction}} -> {config, 'merge_msg_ContainerRequest.Config'(OPFaction, ONFaction, TrUserData)}; + {_, undefined} -> PFaction; + _ -> NFaction + end}. + +-compile({nowarn_unused_function,merge_msg_ContainerDeployParams/3}). +merge_msg_ContainerDeployParams(#'ContainerDeployParams'{container_name = PFcontainer_name, container_dir = PFcontainer_dir, spec = PFspec}, #'ContainerDeployParams'{container_name = NFcontainer_name, container_dir = NFcontainer_dir, spec = NFspec}, + TrUserData) -> + #'ContainerDeployParams'{container_name = + if NFcontainer_name =:= undefined -> PFcontainer_name; + true -> NFcontainer_name + end, + container_dir = + if NFcontainer_dir =:= undefined -> PFcontainer_dir; + true -> NFcontainer_dir + end, + spec = + if PFspec /= undefined, NFspec /= undefined -> merge_msg_ContainerSpec(PFspec, NFspec, TrUserData); + PFspec == undefined -> NFspec; + NFspec == undefined -> PFspec + end}. + +-compile({nowarn_unused_function,merge_msg_ContainerSpec/3}). +merge_msg_ContainerSpec(#'ContainerSpec'{image = PFimage, command = PFcommand, entrypoint = PFentrypoint, env = PFenv, labels = PFlabels, volumes = PFvolumes, user = PFuser, working_dir = PFworking_dir, hostname = PFhostname, expose = PFexpose, + networks = PFnetworks, network_mode = PFnetwork_mode, healthcheck = PFhealthcheck, restart = PFrestart, privileged = PFprivileged, cap_add = PFcap_add, cap_drop = PFcap_drop, devices = PFdevices, resources = PFresources, ulimits = PFulimits, + tmpfs = PFtmpfs, sysctls = PFsysctls, extra_hosts = PFextra_hosts}, + #'ContainerSpec'{image = NFimage, command = NFcommand, entrypoint = NFentrypoint, env = NFenv, labels = NFlabels, volumes = NFvolumes, user = NFuser, working_dir = NFworking_dir, hostname = NFhostname, expose = NFexpose, networks = NFnetworks, + network_mode = NFnetwork_mode, healthcheck = NFhealthcheck, restart = NFrestart, privileged = NFprivileged, cap_add = NFcap_add, cap_drop = NFcap_drop, devices = NFdevices, resources = NFresources, ulimits = NFulimits, tmpfs = NFtmpfs, + sysctls = NFsysctls, extra_hosts = NFextra_hosts}, + TrUserData) -> + #'ContainerSpec'{image = + if NFimage =:= undefined -> PFimage; + true -> NFimage + end, + command = + if PFcommand /= undefined, NFcommand /= undefined -> 'erlang_++'(PFcommand, NFcommand, TrUserData); + PFcommand == undefined -> NFcommand; + NFcommand == undefined -> PFcommand + end, + entrypoint = + if PFentrypoint /= undefined, NFentrypoint /= undefined -> 'erlang_++'(PFentrypoint, NFentrypoint, TrUserData); + PFentrypoint == undefined -> NFentrypoint; + NFentrypoint == undefined -> PFentrypoint + end, + env = + if PFenv /= undefined, NFenv /= undefined -> 'erlang_++'(PFenv, NFenv, TrUserData); + PFenv == undefined -> NFenv; + NFenv == undefined -> PFenv + end, + labels = + if PFlabels /= undefined, NFlabels /= undefined -> 'tr_merge_ContainerSpec.labels'(PFlabels, NFlabels, TrUserData); + PFlabels == undefined -> NFlabels; + NFlabels == undefined -> PFlabels + end, + volumes = + if PFvolumes /= undefined, NFvolumes /= undefined -> 'erlang_++'(PFvolumes, NFvolumes, TrUserData); + PFvolumes == undefined -> NFvolumes; + NFvolumes == undefined -> PFvolumes + end, + user = + if NFuser =:= undefined -> PFuser; + true -> NFuser + end, + working_dir = + if NFworking_dir =:= undefined -> PFworking_dir; + true -> NFworking_dir + end, + hostname = + if NFhostname =:= undefined -> PFhostname; + true -> NFhostname + end, + expose = + if PFexpose /= undefined, NFexpose /= undefined -> 'erlang_++'(PFexpose, NFexpose, TrUserData); + PFexpose == undefined -> NFexpose; + NFexpose == undefined -> PFexpose + end, + networks = + if PFnetworks /= undefined, NFnetworks /= undefined -> 'erlang_++'(PFnetworks, NFnetworks, TrUserData); + PFnetworks == undefined -> NFnetworks; + NFnetworks == undefined -> PFnetworks + end, + network_mode = + if NFnetwork_mode =:= undefined -> PFnetwork_mode; + true -> NFnetwork_mode + end, + healthcheck = + if PFhealthcheck /= undefined, NFhealthcheck /= undefined -> merge_msg_Healthcheck(PFhealthcheck, NFhealthcheck, TrUserData); + PFhealthcheck == undefined -> NFhealthcheck; + NFhealthcheck == undefined -> PFhealthcheck + end, + restart = + if PFrestart /= undefined, NFrestart /= undefined -> merge_msg_RestartPolicy(PFrestart, NFrestart, TrUserData); + PFrestart == undefined -> NFrestart; + NFrestart == undefined -> PFrestart + end, + privileged = + if NFprivileged =:= undefined -> PFprivileged; + true -> NFprivileged + end, + cap_add = + if PFcap_add /= undefined, NFcap_add /= undefined -> 'erlang_++'(PFcap_add, NFcap_add, TrUserData); + PFcap_add == undefined -> NFcap_add; + NFcap_add == undefined -> PFcap_add + end, + cap_drop = + if PFcap_drop /= undefined, NFcap_drop /= undefined -> 'erlang_++'(PFcap_drop, NFcap_drop, TrUserData); + PFcap_drop == undefined -> NFcap_drop; + NFcap_drop == undefined -> PFcap_drop + end, + devices = + if PFdevices /= undefined, NFdevices /= undefined -> 'erlang_++'(PFdevices, NFdevices, TrUserData); + PFdevices == undefined -> NFdevices; + NFdevices == undefined -> PFdevices + end, + resources = + if PFresources /= undefined, NFresources /= undefined -> merge_msg_ResourceLimits(PFresources, NFresources, TrUserData); + PFresources == undefined -> NFresources; + NFresources == undefined -> PFresources + end, + ulimits = + if PFulimits /= undefined, NFulimits /= undefined -> 'erlang_++'(PFulimits, NFulimits, TrUserData); + PFulimits == undefined -> NFulimits; + NFulimits == undefined -> PFulimits + end, + tmpfs = + if PFtmpfs /= undefined, NFtmpfs /= undefined -> 'erlang_++'(PFtmpfs, NFtmpfs, TrUserData); + PFtmpfs == undefined -> NFtmpfs; + NFtmpfs == undefined -> PFtmpfs + end, + sysctls = + if PFsysctls /= undefined, NFsysctls /= undefined -> 'tr_merge_ContainerSpec.sysctls'(PFsysctls, NFsysctls, TrUserData); + PFsysctls == undefined -> NFsysctls; + NFsysctls == undefined -> PFsysctls + end, + extra_hosts = + if PFextra_hosts /= undefined, NFextra_hosts /= undefined -> 'erlang_++'(PFextra_hosts, NFextra_hosts, TrUserData); + PFextra_hosts == undefined -> NFextra_hosts; + NFextra_hosts == undefined -> PFextra_hosts + end}. + +-compile({nowarn_unused_function,merge_msg_VolumeBind/3}). +merge_msg_VolumeBind(#'VolumeBind'{host_path = PFhost_path, container_path = PFcontainer_path, read_only = PFread_only}, #'VolumeBind'{host_path = NFhost_path, container_path = NFcontainer_path, read_only = NFread_only}, _) -> + #'VolumeBind'{host_path = + if NFhost_path =:= undefined -> PFhost_path; + true -> NFhost_path + end, + container_path = + if NFcontainer_path =:= undefined -> PFcontainer_path; + true -> NFcontainer_path + end, + read_only = + if NFread_only =:= undefined -> PFread_only; + true -> NFread_only + end}. + +-compile({nowarn_unused_function,merge_msg_PortExpose/3}). +merge_msg_PortExpose(#'PortExpose'{container_port = PFcontainer_port, protocol = PFprotocol}, #'PortExpose'{container_port = NFcontainer_port, protocol = NFprotocol}, _) -> + #'PortExpose'{container_port = + if NFcontainer_port =:= undefined -> PFcontainer_port; + true -> NFcontainer_port + end, + protocol = + if NFprotocol =:= undefined -> PFprotocol; + true -> NFprotocol + end}. + +-compile({nowarn_unused_function,merge_msg_Healthcheck/3}). +merge_msg_Healthcheck(#'Healthcheck'{test = PFtest, interval_ns = PFinterval_ns, timeout_ns = PFtimeout_ns, retries = PFretries}, #'Healthcheck'{test = NFtest, interval_ns = NFinterval_ns, timeout_ns = NFtimeout_ns, retries = NFretries}, + TrUserData) -> + #'Healthcheck'{test = + if PFtest /= undefined, NFtest /= undefined -> 'erlang_++'(PFtest, NFtest, TrUserData); + PFtest == undefined -> NFtest; + NFtest == undefined -> PFtest + end, + interval_ns = + if NFinterval_ns =:= undefined -> PFinterval_ns; + true -> NFinterval_ns + end, + timeout_ns = + if NFtimeout_ns =:= undefined -> PFtimeout_ns; + true -> NFtimeout_ns + end, + retries = + if NFretries =:= undefined -> PFretries; + true -> NFretries + end}. + +-compile({nowarn_unused_function,merge_msg_RestartPolicy/3}). +merge_msg_RestartPolicy(#'RestartPolicy'{name = PFname, maximum_retry_count = PFmaximum_retry_count}, #'RestartPolicy'{name = NFname, maximum_retry_count = NFmaximum_retry_count}, _) -> + #'RestartPolicy'{name = + if NFname =:= undefined -> PFname; + true -> NFname + end, + maximum_retry_count = + if NFmaximum_retry_count =:= undefined -> PFmaximum_retry_count; + true -> NFmaximum_retry_count + end}. + +-compile({nowarn_unused_function,merge_msg_DeviceMapping/3}). +merge_msg_DeviceMapping(#'DeviceMapping'{host_path = PFhost_path, container_path = PFcontainer_path, cgroup_permissions = PFcgroup_permissions}, + #'DeviceMapping'{host_path = NFhost_path, container_path = NFcontainer_path, cgroup_permissions = NFcgroup_permissions}, _) -> + #'DeviceMapping'{host_path = + if NFhost_path =:= undefined -> PFhost_path; + true -> NFhost_path + end, + container_path = + if NFcontainer_path =:= undefined -> PFcontainer_path; + true -> NFcontainer_path + end, + cgroup_permissions = + if NFcgroup_permissions =:= undefined -> PFcgroup_permissions; + true -> NFcgroup_permissions + end}. + +-compile({nowarn_unused_function,merge_msg_ResourceLimits/3}). +merge_msg_ResourceLimits(#'ResourceLimits'{memory_bytes = PFmemory_bytes, memory_reservation_bytes = PFmemory_reservation_bytes, nano_cpus = PFnano_cpus, cpu_shares = PFcpu_shares}, + #'ResourceLimits'{memory_bytes = NFmemory_bytes, memory_reservation_bytes = NFmemory_reservation_bytes, nano_cpus = NFnano_cpus, cpu_shares = NFcpu_shares}, _) -> + #'ResourceLimits'{memory_bytes = + if NFmemory_bytes =:= undefined -> PFmemory_bytes; + true -> NFmemory_bytes + end, + memory_reservation_bytes = + if NFmemory_reservation_bytes =:= undefined -> PFmemory_reservation_bytes; + true -> NFmemory_reservation_bytes + end, + nano_cpus = + if NFnano_cpus =:= undefined -> PFnano_cpus; + true -> NFnano_cpus + end, + cpu_shares = + if NFcpu_shares =:= undefined -> PFcpu_shares; + true -> NFcpu_shares + end}. + +-compile({nowarn_unused_function,merge_msg_Ulimit/3}). +merge_msg_Ulimit(#'Ulimit'{name = PFname, soft = PFsoft, hard = PFhard}, #'Ulimit'{name = NFname, soft = NFsoft, hard = NFhard}, _) -> + #'Ulimit'{name = + if NFname =:= undefined -> PFname; + true -> NFname + end, + soft = + if NFsoft =:= undefined -> PFsoft; + true -> NFsoft + end, + hard = + if NFhard =:= undefined -> PFhard; + true -> NFhard + end}. + +-compile({nowarn_unused_function,merge_msg_TmpfsMount/3}). +merge_msg_TmpfsMount(#'TmpfsMount'{path = PFpath, options = PFoptions}, #'TmpfsMount'{path = NFpath, options = NFoptions}, _) -> + #'TmpfsMount'{path = + if NFpath =:= undefined -> PFpath; + true -> NFpath + end, + options = + if NFoptions =:= undefined -> PFoptions; + true -> NFoptions + end}. + -compile({nowarn_unused_function,merge_msg_AuthRequest/3}). merge_msg_AuthRequest(#'AuthRequest'{uuid = PFuuid, username = PFusername, salt = PFsalt, token = PFtoken, timestamp = PFtimestamp}, #'AuthRequest'{uuid = NFuuid, username = NFusername, salt = NFsalt, token = NFtoken, timestamp = NFtimestamp}, _) -> #'AuthRequest'{uuid = @@ -1729,6 +4689,25 @@ verify_msg(Msg, MsgName, Opts) -> 'RequestFrame' -> v_msg_RequestFrame(Msg, [MsgName], TrUserData); 'ResponseFrame' -> v_msg_ResponseFrame(Msg, [MsgName], TrUserData); 'CastFrame' -> v_msg_CastFrame(Msg, [MsgName], TrUserData); + 'ContainerRef' -> v_msg_ContainerRef(Msg, [MsgName], TrUserData); + 'ContainerRequest.List' -> 'v_msg_ContainerRequest.List'(Msg, [MsgName], TrUserData); + 'ContainerRequest.Deploy' -> 'v_msg_ContainerRequest.Deploy'(Msg, [MsgName], TrUserData); + 'ContainerRequest.Start' -> 'v_msg_ContainerRequest.Start'(Msg, [MsgName], TrUserData); + 'ContainerRequest.Stop' -> 'v_msg_ContainerRequest.Stop'(Msg, [MsgName], TrUserData); + 'ContainerRequest.Kill' -> 'v_msg_ContainerRequest.Kill'(Msg, [MsgName], TrUserData); + 'ContainerRequest.Remove' -> 'v_msg_ContainerRequest.Remove'(Msg, [MsgName], TrUserData); + 'ContainerRequest.Config' -> 'v_msg_ContainerRequest.Config'(Msg, [MsgName], TrUserData); + 'ContainerRequest' -> v_msg_ContainerRequest(Msg, [MsgName], TrUserData); + 'ContainerDeployParams' -> v_msg_ContainerDeployParams(Msg, [MsgName], TrUserData); + 'ContainerSpec' -> v_msg_ContainerSpec(Msg, [MsgName], TrUserData); + 'VolumeBind' -> v_msg_VolumeBind(Msg, [MsgName], TrUserData); + 'PortExpose' -> v_msg_PortExpose(Msg, [MsgName], TrUserData); + 'Healthcheck' -> v_msg_Healthcheck(Msg, [MsgName], TrUserData); + 'RestartPolicy' -> v_msg_RestartPolicy(Msg, [MsgName], TrUserData); + 'DeviceMapping' -> v_msg_DeviceMapping(Msg, [MsgName], TrUserData); + 'ResourceLimits' -> v_msg_ResourceLimits(Msg, [MsgName], TrUserData); + 'Ulimit' -> v_msg_Ulimit(Msg, [MsgName], TrUserData); + 'TmpfsMount' -> v_msg_TmpfsMount(Msg, [MsgName], TrUserData); 'AuthRequest' -> v_msg_AuthRequest(Msg, [MsgName], TrUserData); 'AuthReply' -> v_msg_AuthReply(Msg, [MsgName], TrUserData); 'Pub' -> v_msg_Pub(Msg, [MsgName], TrUserData); @@ -1753,6 +4732,7 @@ v_msg_RequestFrame(#'RequestFrame'{packet_id = F1, body = F2}, Path, TrUserData) undefined -> ok; {auth_request, OF2} -> v_submsg_AuthRequest(OF2, [auth_request, body | Path], TrUserData); {rpc_request, OF2} -> v_submsg_RpcRequest(OF2, [rpc_request, body | Path], TrUserData); + {container_request, OF2} -> v_submsg_ContainerRequest(OF2, [container_request, body | Path], TrUserData); _ -> mk_type_error(invalid_oneof, F2, [body | Path]) end, ok; @@ -1787,6 +4767,423 @@ v_msg_CastFrame(#'CastFrame'{body = F1}, Path, TrUserData) -> ok; v_msg_CastFrame(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'CastFrame'}, X, Path). +-compile({nowarn_unused_function,v_submsg_ContainerRef/3}). +-dialyzer({nowarn_function,v_submsg_ContainerRef/3}). +v_submsg_ContainerRef(Msg, Path, TrUserData) -> v_msg_ContainerRef(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,v_msg_ContainerRef/3}). +-dialyzer({nowarn_function,v_msg_ContainerRef/3}). +v_msg_ContainerRef(#'ContainerRef'{id = F1, name = F2}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_string(F1, [id | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_string(F2, [name | Path], TrUserData) + end, + ok; +v_msg_ContainerRef(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'ContainerRef'}, X, Path). + +-compile({nowarn_unused_function,'v_submsg_ContainerRequest.List'/3}). +-dialyzer({nowarn_function,'v_submsg_ContainerRequest.List'/3}). +'v_submsg_ContainerRequest.List'(Msg, Path, TrUserData) -> 'v_msg_ContainerRequest.List'(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,'v_msg_ContainerRequest.List'/3}). +-dialyzer({nowarn_function,'v_msg_ContainerRequest.List'/3}). +'v_msg_ContainerRequest.List'(#'ContainerRequest.List'{all = F1}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_bool(F1, [all | Path], TrUserData) + end, + ok; +'v_msg_ContainerRequest.List'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'ContainerRequest.List'}, X, Path). + +-compile({nowarn_unused_function,'v_submsg_ContainerRequest.Deploy'/3}). +-dialyzer({nowarn_function,'v_submsg_ContainerRequest.Deploy'/3}). +'v_submsg_ContainerRequest.Deploy'(Msg, Path, TrUserData) -> 'v_msg_ContainerRequest.Deploy'(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,'v_msg_ContainerRequest.Deploy'/3}). +-dialyzer({nowarn_function,'v_msg_ContainerRequest.Deploy'/3}). +'v_msg_ContainerRequest.Deploy'(#'ContainerRequest.Deploy'{task_id = F1, params = F2}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_uint32(F1, [task_id | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_submsg_ContainerDeployParams(F2, [params | Path], TrUserData) + end, + ok; +'v_msg_ContainerRequest.Deploy'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'ContainerRequest.Deploy'}, X, Path). + +-compile({nowarn_unused_function,'v_submsg_ContainerRequest.Start'/3}). +-dialyzer({nowarn_function,'v_submsg_ContainerRequest.Start'/3}). +'v_submsg_ContainerRequest.Start'(Msg, Path, TrUserData) -> 'v_msg_ContainerRequest.Start'(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,'v_msg_ContainerRequest.Start'/3}). +-dialyzer({nowarn_function,'v_msg_ContainerRequest.Start'/3}). +'v_msg_ContainerRequest.Start'(#'ContainerRequest.Start'{target = F1}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_submsg_ContainerRef(F1, [target | Path], TrUserData) + end, + ok; +'v_msg_ContainerRequest.Start'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'ContainerRequest.Start'}, X, Path). + +-compile({nowarn_unused_function,'v_submsg_ContainerRequest.Stop'/3}). +-dialyzer({nowarn_function,'v_submsg_ContainerRequest.Stop'/3}). +'v_submsg_ContainerRequest.Stop'(Msg, Path, TrUserData) -> 'v_msg_ContainerRequest.Stop'(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,'v_msg_ContainerRequest.Stop'/3}). +-dialyzer({nowarn_function,'v_msg_ContainerRequest.Stop'/3}). +'v_msg_ContainerRequest.Stop'(#'ContainerRequest.Stop'{target = F1, timeout_seconds = F2}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_submsg_ContainerRef(F1, [target | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_uint32(F2, [timeout_seconds | Path], TrUserData) + end, + ok; +'v_msg_ContainerRequest.Stop'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'ContainerRequest.Stop'}, X, Path). + +-compile({nowarn_unused_function,'v_submsg_ContainerRequest.Kill'/3}). +-dialyzer({nowarn_function,'v_submsg_ContainerRequest.Kill'/3}). +'v_submsg_ContainerRequest.Kill'(Msg, Path, TrUserData) -> 'v_msg_ContainerRequest.Kill'(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,'v_msg_ContainerRequest.Kill'/3}). +-dialyzer({nowarn_function,'v_msg_ContainerRequest.Kill'/3}). +'v_msg_ContainerRequest.Kill'(#'ContainerRequest.Kill'{target = F1, signal = F2}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_submsg_ContainerRef(F1, [target | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_string(F2, [signal | Path], TrUserData) + end, + ok; +'v_msg_ContainerRequest.Kill'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'ContainerRequest.Kill'}, X, Path). + +-compile({nowarn_unused_function,'v_submsg_ContainerRequest.Remove'/3}). +-dialyzer({nowarn_function,'v_submsg_ContainerRequest.Remove'/3}). +'v_submsg_ContainerRequest.Remove'(Msg, Path, TrUserData) -> 'v_msg_ContainerRequest.Remove'(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,'v_msg_ContainerRequest.Remove'/3}). +-dialyzer({nowarn_function,'v_msg_ContainerRequest.Remove'/3}). +'v_msg_ContainerRequest.Remove'(#'ContainerRequest.Remove'{target = F1, force = F2, remove_volumes = F3}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_submsg_ContainerRef(F1, [target | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_bool(F2, [force | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_bool(F3, [remove_volumes | Path], TrUserData) + end, + ok; +'v_msg_ContainerRequest.Remove'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'ContainerRequest.Remove'}, X, Path). + +-compile({nowarn_unused_function,'v_submsg_ContainerRequest.Config'/3}). +-dialyzer({nowarn_function,'v_submsg_ContainerRequest.Config'/3}). +'v_submsg_ContainerRequest.Config'(Msg, Path, TrUserData) -> 'v_msg_ContainerRequest.Config'(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,'v_msg_ContainerRequest.Config'/3}). +-dialyzer({nowarn_function,'v_msg_ContainerRequest.Config'/3}). +'v_msg_ContainerRequest.Config'(#'ContainerRequest.Config'{target = F1, config = F2}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_submsg_ContainerRef(F1, [target | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_bytes(F2, [config | Path], TrUserData) + end, + ok; +'v_msg_ContainerRequest.Config'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'ContainerRequest.Config'}, X, Path). + +-compile({nowarn_unused_function,v_submsg_ContainerRequest/3}). +-dialyzer({nowarn_function,v_submsg_ContainerRequest/3}). +v_submsg_ContainerRequest(Msg, Path, TrUserData) -> v_msg_ContainerRequest(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,v_msg_ContainerRequest/3}). +-dialyzer({nowarn_function,v_msg_ContainerRequest/3}). +v_msg_ContainerRequest(#'ContainerRequest'{action = F1}, Path, TrUserData) -> + case F1 of + undefined -> ok; + {list, OF1} -> 'v_submsg_ContainerRequest.List'(OF1, [list, action | Path], TrUserData); + {deploy, OF1} -> 'v_submsg_ContainerRequest.Deploy'(OF1, [deploy, action | Path], TrUserData); + {start, OF1} -> 'v_submsg_ContainerRequest.Start'(OF1, [start, action | Path], TrUserData); + {stop, OF1} -> 'v_submsg_ContainerRequest.Stop'(OF1, [stop, action | Path], TrUserData); + {kill, OF1} -> 'v_submsg_ContainerRequest.Kill'(OF1, [kill, action | Path], TrUserData); + {remove, OF1} -> 'v_submsg_ContainerRequest.Remove'(OF1, [remove, action | Path], TrUserData); + {config, OF1} -> 'v_submsg_ContainerRequest.Config'(OF1, [config, action | Path], TrUserData); + _ -> mk_type_error(invalid_oneof, F1, [action | Path]) + end, + ok; +v_msg_ContainerRequest(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'ContainerRequest'}, X, Path). + +-compile({nowarn_unused_function,v_submsg_ContainerDeployParams/3}). +-dialyzer({nowarn_function,v_submsg_ContainerDeployParams/3}). +v_submsg_ContainerDeployParams(Msg, Path, TrUserData) -> v_msg_ContainerDeployParams(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,v_msg_ContainerDeployParams/3}). +-dialyzer({nowarn_function,v_msg_ContainerDeployParams/3}). +v_msg_ContainerDeployParams(#'ContainerDeployParams'{container_name = F1, container_dir = F2, spec = F3}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_string(F1, [container_name | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_string(F2, [container_dir | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_submsg_ContainerSpec(F3, [spec | Path], TrUserData) + end, + ok; +v_msg_ContainerDeployParams(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'ContainerDeployParams'}, X, Path). + +-compile({nowarn_unused_function,v_submsg_ContainerSpec/3}). +-dialyzer({nowarn_function,v_submsg_ContainerSpec/3}). +v_submsg_ContainerSpec(Msg, Path, TrUserData) -> v_msg_ContainerSpec(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,v_msg_ContainerSpec/3}). +-dialyzer({nowarn_function,v_msg_ContainerSpec/3}). +v_msg_ContainerSpec(#'ContainerSpec'{image = F1, command = F2, entrypoint = F3, env = F4, labels = F5, volumes = F6, user = F7, working_dir = F8, hostname = F9, expose = F10, networks = F11, network_mode = F12, healthcheck = F13, restart = F14, + privileged = F15, cap_add = F16, cap_drop = F17, devices = F18, resources = F19, ulimits = F20, tmpfs = F21, sysctls = F22, extra_hosts = F23}, + Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_string(F1, [image | Path], TrUserData) + end, + if is_list(F2) -> + _ = [v_type_string(Elem, [command | Path], TrUserData) || Elem <- F2], + ok; + true -> mk_type_error({invalid_list_of, string}, F2, [command | Path]) + end, + if is_list(F3) -> + _ = [v_type_string(Elem, [entrypoint | Path], TrUserData) || Elem <- F3], + ok; + true -> mk_type_error({invalid_list_of, string}, F3, [entrypoint | Path]) + end, + if is_list(F4) -> + _ = [v_type_string(Elem, [env | Path], TrUserData) || Elem <- F4], + ok; + true -> mk_type_error({invalid_list_of, string}, F4, [env | Path]) + end, + 'v_map'(F5, [labels | Path], TrUserData), + if is_list(F6) -> + _ = [v_submsg_VolumeBind(Elem, [volumes | Path], TrUserData) || Elem <- F6], + ok; + true -> mk_type_error({invalid_list_of, {msg, 'VolumeBind'}}, F6, [volumes | Path]) + end, + if F7 == undefined -> ok; + true -> v_type_string(F7, [user | Path], TrUserData) + end, + if F8 == undefined -> ok; + true -> v_type_string(F8, [working_dir | Path], TrUserData) + end, + if F9 == undefined -> ok; + true -> v_type_string(F9, [hostname | Path], TrUserData) + end, + if is_list(F10) -> + _ = [v_submsg_PortExpose(Elem, [expose | Path], TrUserData) || Elem <- F10], + ok; + true -> mk_type_error({invalid_list_of, {msg, 'PortExpose'}}, F10, [expose | Path]) + end, + if is_list(F11) -> + _ = [v_type_string(Elem, [networks | Path], TrUserData) || Elem <- F11], + ok; + true -> mk_type_error({invalid_list_of, string}, F11, [networks | Path]) + end, + if F12 == undefined -> ok; + true -> v_type_string(F12, [network_mode | Path], TrUserData) + end, + if F13 == undefined -> ok; + true -> v_submsg_Healthcheck(F13, [healthcheck | Path], TrUserData) + end, + if F14 == undefined -> ok; + true -> v_submsg_RestartPolicy(F14, [restart | Path], TrUserData) + end, + if F15 == undefined -> ok; + true -> v_type_bool(F15, [privileged | Path], TrUserData) + end, + if is_list(F16) -> + _ = [v_type_string(Elem, [cap_add | Path], TrUserData) || Elem <- F16], + ok; + true -> mk_type_error({invalid_list_of, string}, F16, [cap_add | Path]) + end, + if is_list(F17) -> + _ = [v_type_string(Elem, [cap_drop | Path], TrUserData) || Elem <- F17], + ok; + true -> mk_type_error({invalid_list_of, string}, F17, [cap_drop | Path]) + end, + if is_list(F18) -> + _ = [v_submsg_DeviceMapping(Elem, [devices | Path], TrUserData) || Elem <- F18], + ok; + true -> mk_type_error({invalid_list_of, {msg, 'DeviceMapping'}}, F18, [devices | Path]) + end, + if F19 == undefined -> ok; + true -> v_submsg_ResourceLimits(F19, [resources | Path], TrUserData) + end, + if is_list(F20) -> + _ = [v_submsg_Ulimit(Elem, [ulimits | Path], TrUserData) || Elem <- F20], + ok; + true -> mk_type_error({invalid_list_of, {msg, 'Ulimit'}}, F20, [ulimits | Path]) + end, + if is_list(F21) -> + _ = [v_submsg_TmpfsMount(Elem, [tmpfs | Path], TrUserData) || Elem <- F21], + ok; + true -> mk_type_error({invalid_list_of, {msg, 'TmpfsMount'}}, F21, [tmpfs | Path]) + end, + 'v_map'(F22, [sysctls | Path], TrUserData), + if is_list(F23) -> + _ = [v_type_string(Elem, [extra_hosts | Path], TrUserData) || Elem <- F23], + ok; + true -> mk_type_error({invalid_list_of, string}, F23, [extra_hosts | Path]) + end, + ok; +v_msg_ContainerSpec(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'ContainerSpec'}, X, Path). + +-compile({nowarn_unused_function,v_submsg_VolumeBind/3}). +-dialyzer({nowarn_function,v_submsg_VolumeBind/3}). +v_submsg_VolumeBind(Msg, Path, TrUserData) -> v_msg_VolumeBind(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,v_msg_VolumeBind/3}). +-dialyzer({nowarn_function,v_msg_VolumeBind/3}). +v_msg_VolumeBind(#'VolumeBind'{host_path = F1, container_path = F2, read_only = F3}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_string(F1, [host_path | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_string(F2, [container_path | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_bool(F3, [read_only | Path], TrUserData) + end, + ok; +v_msg_VolumeBind(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'VolumeBind'}, X, Path). + +-compile({nowarn_unused_function,v_submsg_PortExpose/3}). +-dialyzer({nowarn_function,v_submsg_PortExpose/3}). +v_submsg_PortExpose(Msg, Path, TrUserData) -> v_msg_PortExpose(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,v_msg_PortExpose/3}). +-dialyzer({nowarn_function,v_msg_PortExpose/3}). +v_msg_PortExpose(#'PortExpose'{container_port = F1, protocol = F2}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_uint32(F1, [container_port | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_string(F2, [protocol | Path], TrUserData) + end, + ok; +v_msg_PortExpose(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'PortExpose'}, X, Path). + +-compile({nowarn_unused_function,v_submsg_Healthcheck/3}). +-dialyzer({nowarn_function,v_submsg_Healthcheck/3}). +v_submsg_Healthcheck(Msg, Path, TrUserData) -> v_msg_Healthcheck(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,v_msg_Healthcheck/3}). +-dialyzer({nowarn_function,v_msg_Healthcheck/3}). +v_msg_Healthcheck(#'Healthcheck'{test = F1, interval_ns = F2, timeout_ns = F3, retries = F4}, Path, TrUserData) -> + if is_list(F1) -> + _ = [v_type_string(Elem, [test | Path], TrUserData) || Elem <- F1], + ok; + true -> mk_type_error({invalid_list_of, string}, F1, [test | Path]) + end, + if F2 == undefined -> ok; + true -> v_type_uint64(F2, [interval_ns | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_uint64(F3, [timeout_ns | Path], TrUserData) + end, + if F4 == undefined -> ok; + true -> v_type_uint32(F4, [retries | Path], TrUserData) + end, + ok; +v_msg_Healthcheck(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'Healthcheck'}, X, Path). + +-compile({nowarn_unused_function,v_submsg_RestartPolicy/3}). +-dialyzer({nowarn_function,v_submsg_RestartPolicy/3}). +v_submsg_RestartPolicy(Msg, Path, TrUserData) -> v_msg_RestartPolicy(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,v_msg_RestartPolicy/3}). +-dialyzer({nowarn_function,v_msg_RestartPolicy/3}). +v_msg_RestartPolicy(#'RestartPolicy'{name = F1, maximum_retry_count = F2}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_string(F1, [name | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_uint32(F2, [maximum_retry_count | Path], TrUserData) + end, + ok; +v_msg_RestartPolicy(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'RestartPolicy'}, X, Path). + +-compile({nowarn_unused_function,v_submsg_DeviceMapping/3}). +-dialyzer({nowarn_function,v_submsg_DeviceMapping/3}). +v_submsg_DeviceMapping(Msg, Path, TrUserData) -> v_msg_DeviceMapping(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,v_msg_DeviceMapping/3}). +-dialyzer({nowarn_function,v_msg_DeviceMapping/3}). +v_msg_DeviceMapping(#'DeviceMapping'{host_path = F1, container_path = F2, cgroup_permissions = F3}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_string(F1, [host_path | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_string(F2, [container_path | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_string(F3, [cgroup_permissions | Path], TrUserData) + end, + ok; +v_msg_DeviceMapping(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'DeviceMapping'}, X, Path). + +-compile({nowarn_unused_function,v_submsg_ResourceLimits/3}). +-dialyzer({nowarn_function,v_submsg_ResourceLimits/3}). +v_submsg_ResourceLimits(Msg, Path, TrUserData) -> v_msg_ResourceLimits(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,v_msg_ResourceLimits/3}). +-dialyzer({nowarn_function,v_msg_ResourceLimits/3}). +v_msg_ResourceLimits(#'ResourceLimits'{memory_bytes = F1, memory_reservation_bytes = F2, nano_cpus = F3, cpu_shares = F4}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_uint64(F1, [memory_bytes | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_uint64(F2, [memory_reservation_bytes | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_uint64(F3, [nano_cpus | Path], TrUserData) + end, + if F4 == undefined -> ok; + true -> v_type_uint64(F4, [cpu_shares | Path], TrUserData) + end, + ok; +v_msg_ResourceLimits(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'ResourceLimits'}, X, Path). + +-compile({nowarn_unused_function,v_submsg_Ulimit/3}). +-dialyzer({nowarn_function,v_submsg_Ulimit/3}). +v_submsg_Ulimit(Msg, Path, TrUserData) -> v_msg_Ulimit(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,v_msg_Ulimit/3}). +-dialyzer({nowarn_function,v_msg_Ulimit/3}). +v_msg_Ulimit(#'Ulimit'{name = F1, soft = F2, hard = F3}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_string(F1, [name | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_uint64(F2, [soft | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_uint64(F3, [hard | Path], TrUserData) + end, + ok; +v_msg_Ulimit(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'Ulimit'}, X, Path). + +-compile({nowarn_unused_function,v_submsg_TmpfsMount/3}). +-dialyzer({nowarn_function,v_submsg_TmpfsMount/3}). +v_submsg_TmpfsMount(Msg, Path, TrUserData) -> v_msg_TmpfsMount(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,v_msg_TmpfsMount/3}). +-dialyzer({nowarn_function,v_msg_TmpfsMount/3}). +v_msg_TmpfsMount(#'TmpfsMount'{path = F1, options = F2}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_string(F1, [path | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_string(F2, [options | Path], TrUserData) + end, + ok; +v_msg_TmpfsMount(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'TmpfsMount'}, X, Path). + -compile({nowarn_unused_function,v_submsg_AuthRequest/3}). -dialyzer({nowarn_function,v_submsg_AuthRequest/3}). v_submsg_AuthRequest(Msg, Path, TrUserData) -> v_msg_AuthRequest(Msg, Path, TrUserData). @@ -1971,6 +5368,20 @@ v_type_uint32(N, _Path, _TrUserData) when is_integer(N), 0 =< N, N =< 4294967295 v_type_uint32(N, Path, _TrUserData) when is_integer(N) -> mk_type_error({value_out_of_range, uint32, unsigned, 32}, N, Path); v_type_uint32(X, Path, _TrUserData) -> mk_type_error({bad_integer, uint32, unsigned, 32}, X, Path). +-compile({nowarn_unused_function,v_type_uint64/3}). +-dialyzer({nowarn_function,v_type_uint64/3}). +v_type_uint64(N, _Path, _TrUserData) when is_integer(N), 0 =< N, N =< 18446744073709551615 -> ok; +v_type_uint64(N, Path, _TrUserData) when is_integer(N) -> mk_type_error({value_out_of_range, uint64, unsigned, 64}, N, Path); +v_type_uint64(X, Path, _TrUserData) -> mk_type_error({bad_integer, uint64, unsigned, 64}, X, Path). + +-compile({nowarn_unused_function,v_type_bool/3}). +-dialyzer({nowarn_function,v_type_bool/3}). +v_type_bool(false, _Path, _TrUserData) -> ok; +v_type_bool(true, _Path, _TrUserData) -> ok; +v_type_bool(0, _Path, _TrUserData) -> ok; +v_type_bool(1, _Path, _TrUserData) -> ok; +v_type_bool(X, Path, _TrUserData) -> mk_type_error(bad_boolean_value, X, Path). + -compile({nowarn_unused_function,v_type_string/3}). -dialyzer({nowarn_function,v_type_string/3}). v_type_string(S, Path, _TrUserData) when is_list(S); is_binary(S) -> @@ -1988,6 +5399,19 @@ v_type_bytes(B, _Path, _TrUserData) when is_binary(B) -> ok; v_type_bytes(B, _Path, _TrUserData) when is_list(B) -> ok; v_type_bytes(X, Path, _TrUserData) -> mk_type_error(bad_binary_value, X, Path). +-compile({nowarn_unused_function,'v_map'/3}). +-dialyzer({nowarn_function,'v_map'/3}). +'v_map'(KVs, Path, TrUserData) when is_list(KVs) -> + [case X of + {Key, Value} -> + v_type_string(Key, [key | Path], TrUserData), + v_type_string(Value, [value | Path], TrUserData); + _ -> mk_type_error(invalid_key_value_tuple, X, Path) + end + || X <- KVs], + ok; +'v_map'(X, Path, _TrUserData) -> mk_type_error(invalid_list_of_key_value_tuples, X, Path). + -compile({nowarn_unused_function,mk_type_error/3}). -spec mk_type_error(_, _, list()) -> no_return(). mk_type_error(Error, ValueSeen, Path) -> @@ -2023,13 +5447,69 @@ cons(Elem, Acc, _TrUserData) -> [Elem | Acc]. -compile({nowarn_unused_function,'erlang_++'/3}). -compile({inline,'erlang_++'/3}). 'erlang_++'(A, B, _TrUserData) -> A ++ B. +-compile({inline,'tr_encode_ContainerSpec.labels[x]'/2}). +'tr_encode_ContainerSpec.labels[x]'(X, _) -> mt_maptuple_to_pseudomsg_r(X, 'map'). + +-compile({inline,'tr_encode_ContainerSpec.sysctls[x]'/2}). +'tr_encode_ContainerSpec.sysctls[x]'(X, _) -> mt_maptuple_to_pseudomsg_r(X, 'map'). + +-compile({inline,'tr_decode_init_default_ContainerSpec.labels'/2}). +'tr_decode_init_default_ContainerSpec.labels'(_, _) -> mt_empty_map_r(). + +-compile({inline,'tr_merge_ContainerSpec.labels'/3}). +'tr_merge_ContainerSpec.labels'(X1, X2, _) -> mt_merge_maptuples_r(X1, X2). + +-compile({inline,'tr_decode_repeated_finalize_ContainerSpec.labels'/2}). +'tr_decode_repeated_finalize_ContainerSpec.labels'(L, _) -> mt_finalize_items_r(L). + +-compile({inline,'tr_decode_repeated_add_elem_ContainerSpec.labels'/3}). +'tr_decode_repeated_add_elem_ContainerSpec.labels'(Elem, L, _) -> mt_add_item_r(Elem, L). + +-compile({inline,'tr_decode_init_default_ContainerSpec.sysctls'/2}). +'tr_decode_init_default_ContainerSpec.sysctls'(_, _) -> mt_empty_map_r(). + +-compile({inline,'tr_merge_ContainerSpec.sysctls'/3}). +'tr_merge_ContainerSpec.sysctls'(X1, X2, _) -> mt_merge_maptuples_r(X1, X2). + +-compile({inline,'tr_decode_repeated_finalize_ContainerSpec.sysctls'/2}). +'tr_decode_repeated_finalize_ContainerSpec.sysctls'(L, _) -> mt_finalize_items_r(L). + +-compile({inline,'tr_decode_repeated_add_elem_ContainerSpec.sysctls'/3}). +'tr_decode_repeated_add_elem_ContainerSpec.sysctls'(Elem, L, _) -> mt_add_item_r(Elem, L). + +-compile({inline,mt_maptuple_to_pseudomsg_r/2}). +mt_maptuple_to_pseudomsg_r({K, V}, RName) -> {RName, K, V}. + + +-compile({inline,mt_empty_map_r/0}). +mt_empty_map_r() -> []. + +-compile({inline,mt_add_item_r/2}). +mt_add_item_r({_RName, K, V}, Acc) -> [{K, V} | Acc]. + + +-compile({inline,mt_finalize_items_r/1}). +mt_finalize_items_r(Acc) -> mt_finalize_items_r_aux(lists:reverse(Acc), dict:new()). + +mt_finalize_items_r_aux([{K, V} | Tl], D) -> mt_finalize_items_r_aux(Tl, dict:store(K, V, D)); +mt_finalize_items_r_aux([], D) -> dict:to_list(D). + + +-compile({inline,mt_merge_maptuples_r/2}). +mt_merge_maptuples_r(L1, L2) -> dict:to_list(dict:merge(fun (_Key, _V1, V2) -> V2 end, dict:from_list(L1), dict:from_list(L2))). + + get_msg_defs() -> [{{msg, 'RequestFrame'}, [#field{name = packet_id, fnum = 1, rnum = 2, type = uint32, occurrence = optional, opts = []}, #gpb_oneof{name = body, rnum = 3, - fields = [#field{name = auth_request, fnum = 2, rnum = 3, type = {msg, 'AuthRequest'}, occurrence = optional, opts = []}, #field{name = rpc_request, fnum = 3, rnum = 3, type = {msg, 'RpcRequest'}, occurrence = optional, opts = []}], opts = []}]}, + fields = + [#field{name = auth_request, fnum = 2, rnum = 3, type = {msg, 'AuthRequest'}, occurrence = optional, opts = []}, + #field{name = rpc_request, fnum = 3, rnum = 3, type = {msg, 'RpcRequest'}, occurrence = optional, opts = []}, + #field{name = container_request, fnum = 4, rnum = 3, type = {msg, 'ContainerRequest'}, occurrence = optional, opts = []}], + opts = []}]}, {{msg, 'ResponseFrame'}, [#field{name = packet_id, fnum = 1, rnum = 2, type = uint32, occurrence = optional, opts = []}, #gpb_oneof{name = body, rnum = 3, @@ -2042,6 +5522,81 @@ get_msg_defs() -> #field{name = data, fnum = 3, rnum = 2, type = {msg, 'Data'}, occurrence = optional, opts = []}, #field{name = event_stream, fnum = 4, rnum = 2, type = {msg, 'TaskEventStream'}, occurrence = optional, opts = []}], opts = []}]}, + {{msg, 'ContainerRef'}, [#field{name = id, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, #field{name = name, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}]}, + {{msg, 'ContainerRequest.List'}, [#field{name = all, fnum = 1, rnum = 2, type = bool, occurrence = optional, opts = []}]}, + {{msg, 'ContainerRequest.Deploy'}, [#field{name = task_id, fnum = 1, rnum = 2, type = uint32, occurrence = optional, opts = []}, #field{name = params, fnum = 2, rnum = 3, type = {msg, 'ContainerDeployParams'}, occurrence = optional, opts = []}]}, + {{msg, 'ContainerRequest.Start'}, [#field{name = target, fnum = 1, rnum = 2, type = {msg, 'ContainerRef'}, occurrence = optional, opts = []}]}, + {{msg, 'ContainerRequest.Stop'}, [#field{name = target, fnum = 1, rnum = 2, type = {msg, 'ContainerRef'}, occurrence = optional, opts = []}, #field{name = timeout_seconds, fnum = 2, rnum = 3, type = uint32, occurrence = optional, opts = []}]}, + {{msg, 'ContainerRequest.Kill'}, [#field{name = target, fnum = 1, rnum = 2, type = {msg, 'ContainerRef'}, occurrence = optional, opts = []}, #field{name = signal, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}]}, + {{msg, 'ContainerRequest.Remove'}, + [#field{name = target, fnum = 1, rnum = 2, type = {msg, 'ContainerRef'}, occurrence = optional, opts = []}, + #field{name = force, fnum = 2, rnum = 3, type = bool, occurrence = optional, opts = []}, + #field{name = remove_volumes, fnum = 3, rnum = 4, type = bool, occurrence = optional, opts = []}]}, + {{msg, 'ContainerRequest.Config'}, [#field{name = target, fnum = 1, rnum = 2, type = {msg, 'ContainerRef'}, occurrence = optional, opts = []}, #field{name = config, fnum = 2, rnum = 3, type = bytes, occurrence = optional, opts = []}]}, + {{msg, 'ContainerRequest'}, + [#gpb_oneof{name = action, rnum = 2, + fields = + [#field{name = list, fnum = 10, rnum = 2, type = {msg, 'ContainerRequest.List'}, occurrence = optional, opts = []}, + #field{name = deploy, fnum = 11, rnum = 2, type = {msg, 'ContainerRequest.Deploy'}, occurrence = optional, opts = []}, + #field{name = start, fnum = 12, rnum = 2, type = {msg, 'ContainerRequest.Start'}, occurrence = optional, opts = []}, + #field{name = stop, fnum = 13, rnum = 2, type = {msg, 'ContainerRequest.Stop'}, occurrence = optional, opts = []}, + #field{name = kill, fnum = 14, rnum = 2, type = {msg, 'ContainerRequest.Kill'}, occurrence = optional, opts = []}, + #field{name = remove, fnum = 15, rnum = 2, type = {msg, 'ContainerRequest.Remove'}, occurrence = optional, opts = []}, + #field{name = config, fnum = 16, rnum = 2, type = {msg, 'ContainerRequest.Config'}, occurrence = optional, opts = []}], + opts = []}]}, + {{msg, 'ContainerDeployParams'}, + [#field{name = container_name, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, + #field{name = container_dir, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}, + #field{name = spec, fnum = 3, rnum = 4, type = {msg, 'ContainerSpec'}, occurrence = optional, opts = []}]}, + {{msg, 'ContainerSpec'}, + [#field{name = image, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, + #field{name = command, fnum = 2, rnum = 3, type = string, occurrence = repeated, opts = []}, + #field{name = entrypoint, fnum = 3, rnum = 4, type = string, occurrence = repeated, opts = []}, + #field{name = env, fnum = 4, rnum = 5, type = string, occurrence = repeated, opts = []}, + #field{name = labels, fnum = 5, rnum = 6, type = {map, string, string}, occurrence = repeated, opts = []}, + #field{name = volumes, fnum = 6, rnum = 7, type = {msg, 'VolumeBind'}, occurrence = repeated, opts = []}, + #field{name = user, fnum = 7, rnum = 8, type = string, occurrence = optional, opts = []}, + #field{name = working_dir, fnum = 8, rnum = 9, type = string, occurrence = optional, opts = []}, + #field{name = hostname, fnum = 9, rnum = 10, type = string, occurrence = optional, opts = []}, + #field{name = expose, fnum = 10, rnum = 11, type = {msg, 'PortExpose'}, occurrence = repeated, opts = []}, + #field{name = networks, fnum = 11, rnum = 12, type = string, occurrence = repeated, opts = []}, + #field{name = network_mode, fnum = 12, rnum = 13, type = string, occurrence = optional, opts = []}, + #field{name = healthcheck, fnum = 13, rnum = 14, type = {msg, 'Healthcheck'}, occurrence = optional, opts = []}, + #field{name = restart, fnum = 14, rnum = 15, type = {msg, 'RestartPolicy'}, occurrence = optional, opts = []}, + #field{name = privileged, fnum = 15, rnum = 16, type = bool, occurrence = optional, opts = []}, + #field{name = cap_add, fnum = 16, rnum = 17, type = string, occurrence = repeated, opts = []}, + #field{name = cap_drop, fnum = 17, rnum = 18, type = string, occurrence = repeated, opts = []}, + #field{name = devices, fnum = 18, rnum = 19, type = {msg, 'DeviceMapping'}, occurrence = repeated, opts = []}, + #field{name = resources, fnum = 19, rnum = 20, type = {msg, 'ResourceLimits'}, occurrence = optional, opts = []}, + #field{name = ulimits, fnum = 20, rnum = 21, type = {msg, 'Ulimit'}, occurrence = repeated, opts = []}, + #field{name = tmpfs, fnum = 21, rnum = 22, type = {msg, 'TmpfsMount'}, occurrence = repeated, opts = []}, + #field{name = sysctls, fnum = 22, rnum = 23, type = {map, string, string}, occurrence = repeated, opts = []}, + #field{name = extra_hosts, fnum = 23, rnum = 24, type = string, occurrence = repeated, opts = []}]}, + {{msg, 'VolumeBind'}, + [#field{name = host_path, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, + #field{name = container_path, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}, + #field{name = read_only, fnum = 3, rnum = 4, type = bool, occurrence = optional, opts = []}]}, + {{msg, 'PortExpose'}, [#field{name = container_port, fnum = 1, rnum = 2, type = uint32, occurrence = optional, opts = []}, #field{name = protocol, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}]}, + {{msg, 'Healthcheck'}, + [#field{name = test, fnum = 1, rnum = 2, type = string, occurrence = repeated, opts = []}, + #field{name = interval_ns, fnum = 2, rnum = 3, type = uint64, occurrence = optional, opts = []}, + #field{name = timeout_ns, fnum = 3, rnum = 4, type = uint64, occurrence = optional, opts = []}, + #field{name = retries, fnum = 4, rnum = 5, type = uint32, occurrence = optional, opts = []}]}, + {{msg, 'RestartPolicy'}, [#field{name = name, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, #field{name = maximum_retry_count, fnum = 2, rnum = 3, type = uint32, occurrence = optional, opts = []}]}, + {{msg, 'DeviceMapping'}, + [#field{name = host_path, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, + #field{name = container_path, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}, + #field{name = cgroup_permissions, fnum = 3, rnum = 4, type = string, occurrence = optional, opts = []}]}, + {{msg, 'ResourceLimits'}, + [#field{name = memory_bytes, fnum = 1, rnum = 2, type = uint64, occurrence = optional, opts = []}, + #field{name = memory_reservation_bytes, fnum = 2, rnum = 3, type = uint64, occurrence = optional, opts = []}, + #field{name = nano_cpus, fnum = 3, rnum = 4, type = uint64, occurrence = optional, opts = []}, + #field{name = cpu_shares, fnum = 4, rnum = 5, type = uint64, occurrence = optional, opts = []}]}, + {{msg, 'Ulimit'}, + [#field{name = name, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, + #field{name = soft, fnum = 2, rnum = 3, type = uint64, occurrence = optional, opts = []}, + #field{name = hard, fnum = 3, rnum = 4, type = uint64, occurrence = optional, opts = []}]}, + {{msg, 'TmpfsMount'}, [#field{name = path, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, #field{name = options, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}]}, {{msg, 'AuthRequest'}, [#field{name = uuid, fnum = 1, rnum = 2, type = bytes, occurrence = optional, opts = []}, #field{name = username, fnum = 2, rnum = 3, type = bytes, occurrence = optional, opts = []}, @@ -2067,13 +5622,77 @@ get_msg_defs() -> #field{name = stream, fnum = 3, rnum = 4, type = bytes, occurrence = optional, opts = []}]}]. -get_msg_names() -> ['RequestFrame', 'ResponseFrame', 'CastFrame', 'AuthRequest', 'AuthReply', 'Pub', 'Command', 'RpcRequest', 'RpcReply.RpcResult', 'RpcReply.RpcError', 'RpcReply', 'Data', 'TaskEventStream']. +get_msg_names() -> + ['RequestFrame', + 'ResponseFrame', + 'CastFrame', + 'ContainerRef', + 'ContainerRequest.List', + 'ContainerRequest.Deploy', + 'ContainerRequest.Start', + 'ContainerRequest.Stop', + 'ContainerRequest.Kill', + 'ContainerRequest.Remove', + 'ContainerRequest.Config', + 'ContainerRequest', + 'ContainerDeployParams', + 'ContainerSpec', + 'VolumeBind', + 'PortExpose', + 'Healthcheck', + 'RestartPolicy', + 'DeviceMapping', + 'ResourceLimits', + 'Ulimit', + 'TmpfsMount', + 'AuthRequest', + 'AuthReply', + 'Pub', + 'Command', + 'RpcRequest', + 'RpcReply.RpcResult', + 'RpcReply.RpcError', + 'RpcReply', + 'Data', + 'TaskEventStream']. get_group_names() -> []. -get_msg_or_group_names() -> ['RequestFrame', 'ResponseFrame', 'CastFrame', 'AuthRequest', 'AuthReply', 'Pub', 'Command', 'RpcRequest', 'RpcReply.RpcResult', 'RpcReply.RpcError', 'RpcReply', 'Data', 'TaskEventStream']. +get_msg_or_group_names() -> + ['RequestFrame', + 'ResponseFrame', + 'CastFrame', + 'ContainerRef', + 'ContainerRequest.List', + 'ContainerRequest.Deploy', + 'ContainerRequest.Start', + 'ContainerRequest.Stop', + 'ContainerRequest.Kill', + 'ContainerRequest.Remove', + 'ContainerRequest.Config', + 'ContainerRequest', + 'ContainerDeployParams', + 'ContainerSpec', + 'VolumeBind', + 'PortExpose', + 'Healthcheck', + 'RestartPolicy', + 'DeviceMapping', + 'ResourceLimits', + 'Ulimit', + 'TmpfsMount', + 'AuthRequest', + 'AuthReply', + 'Pub', + 'Command', + 'RpcRequest', + 'RpcReply.RpcResult', + 'RpcReply.RpcError', + 'RpcReply', + 'Data', + 'TaskEventStream']. get_enum_names() -> []. @@ -2093,7 +5712,11 @@ fetch_enum_def(EnumName) -> erlang:error({no_such_enum, EnumName}). find_msg_def('RequestFrame') -> [#field{name = packet_id, fnum = 1, rnum = 2, type = uint32, occurrence = optional, opts = []}, #gpb_oneof{name = body, rnum = 3, - fields = [#field{name = auth_request, fnum = 2, rnum = 3, type = {msg, 'AuthRequest'}, occurrence = optional, opts = []}, #field{name = rpc_request, fnum = 3, rnum = 3, type = {msg, 'RpcRequest'}, occurrence = optional, opts = []}], opts = []}]; + fields = + [#field{name = auth_request, fnum = 2, rnum = 3, type = {msg, 'AuthRequest'}, occurrence = optional, opts = []}, + #field{name = rpc_request, fnum = 3, rnum = 3, type = {msg, 'RpcRequest'}, occurrence = optional, opts = []}, + #field{name = container_request, fnum = 4, rnum = 3, type = {msg, 'ContainerRequest'}, occurrence = optional, opts = []}], + opts = []}]; find_msg_def('ResponseFrame') -> [#field{name = packet_id, fnum = 1, rnum = 2, type = uint32, occurrence = optional, opts = []}, #gpb_oneof{name = body, rnum = 3, @@ -2106,6 +5729,82 @@ find_msg_def('CastFrame') -> #field{name = data, fnum = 3, rnum = 2, type = {msg, 'Data'}, occurrence = optional, opts = []}, #field{name = event_stream, fnum = 4, rnum = 2, type = {msg, 'TaskEventStream'}, occurrence = optional, opts = []}], opts = []}]; +find_msg_def('ContainerRef') -> [#field{name = id, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, #field{name = name, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}]; +find_msg_def('ContainerRequest.List') -> [#field{name = all, fnum = 1, rnum = 2, type = bool, occurrence = optional, opts = []}]; +find_msg_def('ContainerRequest.Deploy') -> + [#field{name = task_id, fnum = 1, rnum = 2, type = uint32, occurrence = optional, opts = []}, #field{name = params, fnum = 2, rnum = 3, type = {msg, 'ContainerDeployParams'}, occurrence = optional, opts = []}]; +find_msg_def('ContainerRequest.Start') -> [#field{name = target, fnum = 1, rnum = 2, type = {msg, 'ContainerRef'}, occurrence = optional, opts = []}]; +find_msg_def('ContainerRequest.Stop') -> [#field{name = target, fnum = 1, rnum = 2, type = {msg, 'ContainerRef'}, occurrence = optional, opts = []}, #field{name = timeout_seconds, fnum = 2, rnum = 3, type = uint32, occurrence = optional, opts = []}]; +find_msg_def('ContainerRequest.Kill') -> [#field{name = target, fnum = 1, rnum = 2, type = {msg, 'ContainerRef'}, occurrence = optional, opts = []}, #field{name = signal, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}]; +find_msg_def('ContainerRequest.Remove') -> + [#field{name = target, fnum = 1, rnum = 2, type = {msg, 'ContainerRef'}, occurrence = optional, opts = []}, + #field{name = force, fnum = 2, rnum = 3, type = bool, occurrence = optional, opts = []}, + #field{name = remove_volumes, fnum = 3, rnum = 4, type = bool, occurrence = optional, opts = []}]; +find_msg_def('ContainerRequest.Config') -> [#field{name = target, fnum = 1, rnum = 2, type = {msg, 'ContainerRef'}, occurrence = optional, opts = []}, #field{name = config, fnum = 2, rnum = 3, type = bytes, occurrence = optional, opts = []}]; +find_msg_def('ContainerRequest') -> + [#gpb_oneof{name = action, rnum = 2, + fields = + [#field{name = list, fnum = 10, rnum = 2, type = {msg, 'ContainerRequest.List'}, occurrence = optional, opts = []}, + #field{name = deploy, fnum = 11, rnum = 2, type = {msg, 'ContainerRequest.Deploy'}, occurrence = optional, opts = []}, + #field{name = start, fnum = 12, rnum = 2, type = {msg, 'ContainerRequest.Start'}, occurrence = optional, opts = []}, + #field{name = stop, fnum = 13, rnum = 2, type = {msg, 'ContainerRequest.Stop'}, occurrence = optional, opts = []}, + #field{name = kill, fnum = 14, rnum = 2, type = {msg, 'ContainerRequest.Kill'}, occurrence = optional, opts = []}, + #field{name = remove, fnum = 15, rnum = 2, type = {msg, 'ContainerRequest.Remove'}, occurrence = optional, opts = []}, + #field{name = config, fnum = 16, rnum = 2, type = {msg, 'ContainerRequest.Config'}, occurrence = optional, opts = []}], + opts = []}]; +find_msg_def('ContainerDeployParams') -> + [#field{name = container_name, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, + #field{name = container_dir, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}, + #field{name = spec, fnum = 3, rnum = 4, type = {msg, 'ContainerSpec'}, occurrence = optional, opts = []}]; +find_msg_def('ContainerSpec') -> + [#field{name = image, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, + #field{name = command, fnum = 2, rnum = 3, type = string, occurrence = repeated, opts = []}, + #field{name = entrypoint, fnum = 3, rnum = 4, type = string, occurrence = repeated, opts = []}, + #field{name = env, fnum = 4, rnum = 5, type = string, occurrence = repeated, opts = []}, + #field{name = labels, fnum = 5, rnum = 6, type = {map, string, string}, occurrence = repeated, opts = []}, + #field{name = volumes, fnum = 6, rnum = 7, type = {msg, 'VolumeBind'}, occurrence = repeated, opts = []}, + #field{name = user, fnum = 7, rnum = 8, type = string, occurrence = optional, opts = []}, + #field{name = working_dir, fnum = 8, rnum = 9, type = string, occurrence = optional, opts = []}, + #field{name = hostname, fnum = 9, rnum = 10, type = string, occurrence = optional, opts = []}, + #field{name = expose, fnum = 10, rnum = 11, type = {msg, 'PortExpose'}, occurrence = repeated, opts = []}, + #field{name = networks, fnum = 11, rnum = 12, type = string, occurrence = repeated, opts = []}, + #field{name = network_mode, fnum = 12, rnum = 13, type = string, occurrence = optional, opts = []}, + #field{name = healthcheck, fnum = 13, rnum = 14, type = {msg, 'Healthcheck'}, occurrence = optional, opts = []}, + #field{name = restart, fnum = 14, rnum = 15, type = {msg, 'RestartPolicy'}, occurrence = optional, opts = []}, + #field{name = privileged, fnum = 15, rnum = 16, type = bool, occurrence = optional, opts = []}, + #field{name = cap_add, fnum = 16, rnum = 17, type = string, occurrence = repeated, opts = []}, + #field{name = cap_drop, fnum = 17, rnum = 18, type = string, occurrence = repeated, opts = []}, + #field{name = devices, fnum = 18, rnum = 19, type = {msg, 'DeviceMapping'}, occurrence = repeated, opts = []}, + #field{name = resources, fnum = 19, rnum = 20, type = {msg, 'ResourceLimits'}, occurrence = optional, opts = []}, + #field{name = ulimits, fnum = 20, rnum = 21, type = {msg, 'Ulimit'}, occurrence = repeated, opts = []}, + #field{name = tmpfs, fnum = 21, rnum = 22, type = {msg, 'TmpfsMount'}, occurrence = repeated, opts = []}, + #field{name = sysctls, fnum = 22, rnum = 23, type = {map, string, string}, occurrence = repeated, opts = []}, + #field{name = extra_hosts, fnum = 23, rnum = 24, type = string, occurrence = repeated, opts = []}]; +find_msg_def('VolumeBind') -> + [#field{name = host_path, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, + #field{name = container_path, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}, + #field{name = read_only, fnum = 3, rnum = 4, type = bool, occurrence = optional, opts = []}]; +find_msg_def('PortExpose') -> [#field{name = container_port, fnum = 1, rnum = 2, type = uint32, occurrence = optional, opts = []}, #field{name = protocol, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}]; +find_msg_def('Healthcheck') -> + [#field{name = test, fnum = 1, rnum = 2, type = string, occurrence = repeated, opts = []}, + #field{name = interval_ns, fnum = 2, rnum = 3, type = uint64, occurrence = optional, opts = []}, + #field{name = timeout_ns, fnum = 3, rnum = 4, type = uint64, occurrence = optional, opts = []}, + #field{name = retries, fnum = 4, rnum = 5, type = uint32, occurrence = optional, opts = []}]; +find_msg_def('RestartPolicy') -> [#field{name = name, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, #field{name = maximum_retry_count, fnum = 2, rnum = 3, type = uint32, occurrence = optional, opts = []}]; +find_msg_def('DeviceMapping') -> + [#field{name = host_path, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, + #field{name = container_path, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}, + #field{name = cgroup_permissions, fnum = 3, rnum = 4, type = string, occurrence = optional, opts = []}]; +find_msg_def('ResourceLimits') -> + [#field{name = memory_bytes, fnum = 1, rnum = 2, type = uint64, occurrence = optional, opts = []}, + #field{name = memory_reservation_bytes, fnum = 2, rnum = 3, type = uint64, occurrence = optional, opts = []}, + #field{name = nano_cpus, fnum = 3, rnum = 4, type = uint64, occurrence = optional, opts = []}, + #field{name = cpu_shares, fnum = 4, rnum = 5, type = uint64, occurrence = optional, opts = []}]; +find_msg_def('Ulimit') -> + [#field{name = name, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, + #field{name = soft, fnum = 2, rnum = 3, type = uint64, occurrence = optional, opts = []}, + #field{name = hard, fnum = 3, rnum = 4, type = uint64, occurrence = optional, opts = []}]; +find_msg_def('TmpfsMount') -> [#field{name = path, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []}, #field{name = options, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}]; find_msg_def('AuthRequest') -> [#field{name = uuid, fnum = 1, rnum = 2, type = bytes, occurrence = optional, opts = []}, #field{name = username, fnum = 2, rnum = 3, type = bytes, occurrence = optional, opts = []}, @@ -2190,6 +5889,25 @@ service_and_rpc_name_to_fqbins(S, R) -> error({gpb_error, {badservice_or_rpc, {S fqbin_to_msg_name(<<"RequestFrame">>) -> 'RequestFrame'; fqbin_to_msg_name(<<"ResponseFrame">>) -> 'ResponseFrame'; fqbin_to_msg_name(<<"CastFrame">>) -> 'CastFrame'; +fqbin_to_msg_name(<<"ContainerRef">>) -> 'ContainerRef'; +fqbin_to_msg_name(<<"ContainerRequest.List">>) -> 'ContainerRequest.List'; +fqbin_to_msg_name(<<"ContainerRequest.Deploy">>) -> 'ContainerRequest.Deploy'; +fqbin_to_msg_name(<<"ContainerRequest.Start">>) -> 'ContainerRequest.Start'; +fqbin_to_msg_name(<<"ContainerRequest.Stop">>) -> 'ContainerRequest.Stop'; +fqbin_to_msg_name(<<"ContainerRequest.Kill">>) -> 'ContainerRequest.Kill'; +fqbin_to_msg_name(<<"ContainerRequest.Remove">>) -> 'ContainerRequest.Remove'; +fqbin_to_msg_name(<<"ContainerRequest.Config">>) -> 'ContainerRequest.Config'; +fqbin_to_msg_name(<<"ContainerRequest">>) -> 'ContainerRequest'; +fqbin_to_msg_name(<<"ContainerDeployParams">>) -> 'ContainerDeployParams'; +fqbin_to_msg_name(<<"ContainerSpec">>) -> 'ContainerSpec'; +fqbin_to_msg_name(<<"VolumeBind">>) -> 'VolumeBind'; +fqbin_to_msg_name(<<"PortExpose">>) -> 'PortExpose'; +fqbin_to_msg_name(<<"Healthcheck">>) -> 'Healthcheck'; +fqbin_to_msg_name(<<"RestartPolicy">>) -> 'RestartPolicy'; +fqbin_to_msg_name(<<"DeviceMapping">>) -> 'DeviceMapping'; +fqbin_to_msg_name(<<"ResourceLimits">>) -> 'ResourceLimits'; +fqbin_to_msg_name(<<"Ulimit">>) -> 'Ulimit'; +fqbin_to_msg_name(<<"TmpfsMount">>) -> 'TmpfsMount'; fqbin_to_msg_name(<<"AuthRequest">>) -> 'AuthRequest'; fqbin_to_msg_name(<<"AuthReply">>) -> 'AuthReply'; fqbin_to_msg_name(<<"Pub">>) -> 'Pub'; @@ -2206,6 +5924,25 @@ fqbin_to_msg_name(E) -> error({gpb_error, {badmsg, E}}). msg_name_to_fqbin('RequestFrame') -> <<"RequestFrame">>; msg_name_to_fqbin('ResponseFrame') -> <<"ResponseFrame">>; msg_name_to_fqbin('CastFrame') -> <<"CastFrame">>; +msg_name_to_fqbin('ContainerRef') -> <<"ContainerRef">>; +msg_name_to_fqbin('ContainerRequest.List') -> <<"ContainerRequest.List">>; +msg_name_to_fqbin('ContainerRequest.Deploy') -> <<"ContainerRequest.Deploy">>; +msg_name_to_fqbin('ContainerRequest.Start') -> <<"ContainerRequest.Start">>; +msg_name_to_fqbin('ContainerRequest.Stop') -> <<"ContainerRequest.Stop">>; +msg_name_to_fqbin('ContainerRequest.Kill') -> <<"ContainerRequest.Kill">>; +msg_name_to_fqbin('ContainerRequest.Remove') -> <<"ContainerRequest.Remove">>; +msg_name_to_fqbin('ContainerRequest.Config') -> <<"ContainerRequest.Config">>; +msg_name_to_fqbin('ContainerRequest') -> <<"ContainerRequest">>; +msg_name_to_fqbin('ContainerDeployParams') -> <<"ContainerDeployParams">>; +msg_name_to_fqbin('ContainerSpec') -> <<"ContainerSpec">>; +msg_name_to_fqbin('VolumeBind') -> <<"VolumeBind">>; +msg_name_to_fqbin('PortExpose') -> <<"PortExpose">>; +msg_name_to_fqbin('Healthcheck') -> <<"Healthcheck">>; +msg_name_to_fqbin('RestartPolicy') -> <<"RestartPolicy">>; +msg_name_to_fqbin('DeviceMapping') -> <<"DeviceMapping">>; +msg_name_to_fqbin('ResourceLimits') -> <<"ResourceLimits">>; +msg_name_to_fqbin('Ulimit') -> <<"Ulimit">>; +msg_name_to_fqbin('TmpfsMount') -> <<"TmpfsMount">>; msg_name_to_fqbin('AuthRequest') -> <<"AuthRequest">>; msg_name_to_fqbin('AuthReply') -> <<"AuthReply">>; msg_name_to_fqbin('Pub') -> <<"Pub">>; @@ -2254,7 +5991,39 @@ get_all_source_basenames() -> ["message.proto"]. get_all_proto_names() -> ["message"]. -get_msg_containment("message") -> ['AuthReply', 'AuthRequest', 'CastFrame', 'Command', 'Data', 'Pub', 'RequestFrame', 'ResponseFrame', 'RpcReply', 'RpcReply.RpcError', 'RpcReply.RpcResult', 'RpcRequest', 'TaskEventStream']; +get_msg_containment("message") -> + ['AuthReply', + 'AuthRequest', + 'CastFrame', + 'Command', + 'ContainerDeployParams', + 'ContainerRef', + 'ContainerRequest', + 'ContainerRequest.Config', + 'ContainerRequest.Deploy', + 'ContainerRequest.Kill', + 'ContainerRequest.List', + 'ContainerRequest.Remove', + 'ContainerRequest.Start', + 'ContainerRequest.Stop', + 'ContainerSpec', + 'Data', + 'DeviceMapping', + 'Healthcheck', + 'PortExpose', + 'Pub', + 'RequestFrame', + 'ResourceLimits', + 'ResponseFrame', + 'RestartPolicy', + 'RpcReply', + 'RpcReply.RpcError', + 'RpcReply.RpcResult', + 'RpcRequest', + 'TaskEventStream', + 'TmpfsMount', + 'Ulimit', + 'VolumeBind']; get_msg_containment(P) -> error({gpb_error, {badproto, P}}). @@ -2274,18 +6043,37 @@ get_enum_containment("message") -> []; get_enum_containment(P) -> error({gpb_error, {badproto, P}}). +get_proto_by_msg_name_as_fqbin(<<"ContainerRequest.Stop">>) -> "message"; get_proto_by_msg_name_as_fqbin(<<"Data">>) -> "message"; get_proto_by_msg_name_as_fqbin(<<"RpcReply.RpcError">>) -> "message"; get_proto_by_msg_name_as_fqbin(<<"Pub">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"ResourceLimits">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"ContainerSpec">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"ContainerDeployParams">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"VolumeBind">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"Ulimit">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"TmpfsMount">>) -> "message"; get_proto_by_msg_name_as_fqbin(<<"RpcRequest">>) -> "message"; get_proto_by_msg_name_as_fqbin(<<"RpcReply.RpcResult">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"ContainerRequest.Start">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"ContainerRequest.List">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"ContainerRequest">>) -> "message"; get_proto_by_msg_name_as_fqbin(<<"Command">>) -> "message"; get_proto_by_msg_name_as_fqbin(<<"AuthRequest">>) -> "message"; get_proto_by_msg_name_as_fqbin(<<"ResponseFrame">>) -> "message"; get_proto_by_msg_name_as_fqbin(<<"RequestFrame">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"PortExpose">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"ContainerRequest.Remove">>) -> "message"; get_proto_by_msg_name_as_fqbin(<<"CastFrame">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"ContainerRef">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"DeviceMapping">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"ContainerRequest.Config">>) -> "message"; get_proto_by_msg_name_as_fqbin(<<"RpcReply">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"RestartPolicy">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"ContainerRequest.Deploy">>) -> "message"; get_proto_by_msg_name_as_fqbin(<<"AuthReply">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"Healthcheck">>) -> "message"; +get_proto_by_msg_name_as_fqbin(<<"ContainerRequest.Kill">>) -> "message"; get_proto_by_msg_name_as_fqbin(<<"TaskEventStream">>) -> "message"; get_proto_by_msg_name_as_fqbin(E) -> error({gpb_error, {badmsg, E}}). diff --git a/src/transport/http/container_handler.erl b/src/transport/http/container_handler.erl index 68c1099..1ec94bc 100644 --- a/src/transport/http/container_handler.erl +++ b/src/transport/http/container_handler.erl @@ -69,11 +69,7 @@ handle_request("POST", "/container/deploy", _, #{<<"uuid">> := UUID, <<"task_id" undefined -> {ok, 200, iot_util:json_error(404, <<"host not found">>)}; Pid when is_pid(Pid) -> - Params = jiffy:encode(#{ - <<"task_id">> => TaskId, - <<"config">> => Config - }, [force_utf8]), - case iot_host:deploy_container(Pid, TaskId, Params) of + case iot_host:deploy_container(Pid, TaskId, Config) of {ok, Ref} -> case iot_host:await_reply(Pid, Ref, ?REQ_TIMEOUT) of {ok, Result} -> @@ -185,6 +181,7 @@ validate_config(Config) when is_map(Config) -> %% 可选参数(附带默认值) Optional = [ {<<"privileged">>, boolean}, + {<<"entrypoint">>, {list, binary}}, {<<"envs">>, {list, binary}}, {<<"ports">>, {list, binary}}, {<<"expose">>, {list, binary}}, @@ -194,6 +191,8 @@ validate_config(Config) when is_map(Config) -> {<<"user">>, binary}, {<<"working_dir">>, binary}, {<<"hostname">>, binary}, + {<<"container_dir">>, binary}, + {<<"network_mode">>, binary}, {<<"cap_add">>, {list, binary}}, {<<"cap_drop">>, {list, binary}}, {<<"devices">>, {list, binary}}, diff --git a/src/transport/tcp/tcp_channel.erl b/src/transport/tcp/tcp_channel.erl index a3f5f63..7d77305 100644 --- a/src/transport/tcp/tcp_channel.erl +++ b/src/transport/tcp/tcp_channel.erl @@ -16,7 +16,7 @@ -define(INFLIGHT_TIMEOUT, 60000). %% API --export([pub/4, jsonrpc_call/3, cancel_jsonrpc_call/2, command/3]). +-export([pub/4, jsonrpc_call/3, container_call/3, cancel_jsonrpc_call/2, command/3]). -export([start_link/3, stop/2]). %% gen_server callbacks @@ -54,9 +54,16 @@ command(Pid, CommandType, Command) when is_pid(Pid), is_integer(CommandType), is %% 向通道中写入消息 -spec jsonrpc_call(Pid :: pid(), ReceiverPid :: pid(), Request :: {Method :: binary(), Params :: binary()}) -> Ref :: reference(). -jsonrpc_call(Pid, ReceiverPid, Request = {Method, Params}) when is_pid(Pid), is_pid(ReceiverPid), is_binary(Method), is_binary(Params) -> +jsonrpc_call(Pid, ReceiverPid, {Method, Params}) when is_pid(Pid), is_pid(ReceiverPid), is_binary(Method), is_binary(Params) -> Ref = make_ref(), - gen_server:cast(Pid, {jsonrpc_call, ReceiverPid, Ref, Request}), + RpcRequest = #'RpcRequest'{method = Method, params = Params}, + gen_server:cast(Pid, {request_call, ReceiverPid, Ref, {rpc_request, RpcRequest}}), + Ref. + +-spec container_call(Pid :: pid(), ReceiverPid :: pid(), Request :: message_pb:'ContainerRequest'()) -> Ref :: reference(). +container_call(Pid, ReceiverPid, Request) when is_pid(Pid), is_pid(ReceiverPid), is_record(Request, 'ContainerRequest') -> + Ref = make_ref(), + gen_server:cast(Pid, {request_call, ReceiverPid, Ref, {container_request, Request}}), Ref. -spec cancel_jsonrpc_call(Pid :: pid(), Ref :: reference()) -> ok. @@ -112,15 +119,15 @@ handle_cast({command, CommandType, Command}, State = #state{transport = Transpor Transport:send(Socket, <>), {noreply, State}; -%% 推送消息 -handle_cast({jsonrpc_call, ReceiverPid, Ref, {Method, Params}}, State = #state{transport = Transport, socket = Socket, packet_id = PacketId, inflight = Inflight}) -> +%% 推送需要响应的请求 +handle_cast({request_call, ReceiverPid, Ref, Body}, State = #state{transport = Transport, socket = Socket, packet_id = PacketId, inflight = Inflight}) -> case next_packet_id(PacketId, Inflight) of {ok, NPacketId, NextPacketId} -> Encoded = message_pb:encode_msg(#'RequestFrame'{ packet_id = NPacketId, - body = {rpc_request, #'RpcRequest'{method = Method, params = Params}} + body = Body }), - TimerRef = erlang:start_timer(?INFLIGHT_TIMEOUT, self(), {jsonrpc_timeout, NPacketId}), + TimerRef = erlang:start_timer(?INFLIGHT_TIMEOUT, self(), {request_timeout, NPacketId}), Transport:send(Socket, <>), RequestInfo = #inflight_request{receiver_pid = ReceiverPid, ref = Ref, timer_ref = TimerRef}, @@ -144,10 +151,10 @@ handle_info({tcp, Socket, <>}, State = #state{ ResponseFrame = message_pb:decode_msg(FrameBin, 'ResponseFrame'), handle_response_frame(ResponseFrame, Inflight, State); -handle_info({timeout, TimerRef, {jsonrpc_timeout, PacketId}}, State = #state{inflight = Inflight}) -> +handle_info({timeout, TimerRef, {request_timeout, PacketId}}, State = #state{inflight = Inflight}) -> case maps:get(PacketId, Inflight, undefined) of #inflight_request{ref = Ref, timer_ref = TimerRef} -> - logger:warning("[ws_channel] jsonrpc request timeout, packet_id: ~p, ref: ~p", [PacketId, Ref]), + logger:warning("[ws_channel] request timeout, packet_id: ~p, ref: ~p", [PacketId, Ref]), {noreply, State#state{inflight = maps:remove(PacketId, Inflight)}}; _ -> {noreply, State} @@ -270,6 +277,9 @@ handle_request_frame(#'RequestFrame'{packet_id = PacketId, handle_request_frame(#'RequestFrame'{packet_id = PacketId, body = {rpc_request, RpcRequest}}, _Transport, _Socket, State) -> logger:warning("[ws_channel] unsupported request message type: rpc_request, packet_id: ~p, request: ~p", [PacketId, RpcRequest]), {stop, State}; +handle_request_frame(#'RequestFrame'{packet_id = PacketId, body = {container_request, ContainerRequest}}, _Transport, _Socket, State) -> + logger:warning("[ws_channel] unsupported request message type: container_request, packet_id: ~p, request: ~p", [PacketId, ContainerRequest]), + {stop, State}; handle_request_frame(#'RequestFrame'{packet_id = PacketId, body = undefined}, _Transport, _Socket, State) -> logger:warning("[ws_channel] empty request frame, packet_id: ~p", [PacketId]), {stop, State}.