ContainerHostConfig.fromJson constructor
Deserialises a ContainerHostConfig from Docker's JSON representation.
Implementation
factory ContainerHostConfig.fromJson(Map<String, dynamic> json) {
Map<String, List<ContainerPortBinding>?>? portBindings;
final raw = json['PortBindings'] as Map<String, dynamic>?;
if (raw != null) {
portBindings = {};
for (final entry in raw.entries) {
final bindings = entry.value as List<dynamic>?;
portBindings[entry.key] = bindings
?.map(
(b) => ContainerPortBinding.fromJson(b as Map<String, dynamic>),
)
.toList();
}
}
List<T>? parseList<T>(
String key,
T Function(Map<String, dynamic>) fromJson,
) {
final list = json[key] as List<dynamic>?;
return list?.map((e) => fromJson(e as Map<String, dynamic>)).toList();
}
return ContainerHostConfig(
cpuShares: json['CpuShares'] as int?,
memory: json['Memory'] as int?,
cgroupParent: json['CgroupParent'] as String?,
blkioWeight: json['BlkioWeight'] as int?,
blkioWeightDevice: parseList(
'BlkioWeightDevice',
ContainerBlkioWeightDevice.fromJson,
),
blkioDeviceReadBps: parseList(
'BlkioDeviceReadBps',
ContainerBlkioDeviceRate.fromJson,
),
blkioDeviceWriteBps: parseList(
'BlkioDeviceWriteBps',
ContainerBlkioDeviceRate.fromJson,
),
blkioDeviceReadIOps: parseList(
'BlkioDeviceReadIOps',
ContainerBlkioDeviceRate.fromJson,
),
blkioDeviceWriteIOps: parseList(
'BlkioDeviceWriteIOps',
ContainerBlkioDeviceRate.fromJson,
),
cpuPeriod: json['CpuPeriod'] as int?,
cpuQuota: json['CpuQuota'] as int?,
cpuRealtimePeriod: json['CpuRealtimePeriod'] as int?,
cpuRealtimeRuntime: json['CpuRealtimeRuntime'] as int?,
cpusetCpus: json['CpusetCpus'] as String?,
cpusetMems: json['CpusetMems'] as String?,
devices: parseList('Devices', ContainerDeviceMapping.fromJson),
deviceCgroupRules:
(json['DeviceCgroupRules'] as List<dynamic>?)?.cast<String>(),
deviceRequests: parseList(
'DeviceRequests',
ContainerDeviceRequest.fromJson,
),
kernelMemoryTCP: json['KernelMemoryTCP'] as int?,
memoryReservation: json['MemoryReservation'] as int?,
memorySwap: json['MemorySwap'] as int?,
memorySwappiness: json['MemorySwappiness'] as int?,
nanoCpus: json['NanoCpus'] as int?,
oomKillDisable: json['OomKillDisable'] as bool?,
init: json['Init'] as bool?,
pidsLimit: json['PidsLimit'] as int?,
ulimits: parseList('Ulimits', ContainerUlimit.fromJson),
cpuCount: json['CpuCount'] as int?,
cpuPercent: json['CpuPercent'] as int?,
ioMaximumIOps: json['IOMaximumIOps'] as int?,
ioMaximumBandwidth: json['IOMaximumBandwidth'] as int?,
binds: (json['Binds'] as List<dynamic>?)?.cast<String>(),
containerIDFile: json['ContainerIDFile'] as String?,
logConfig: json['LogConfig'] != null
? ContainerLogConfig.fromJson(
json['LogConfig'] as Map<String, dynamic>,
)
: null,
networkMode: json['NetworkMode'] as String?,
portBindings: portBindings,
restartPolicy: json['RestartPolicy'] != null
? ContainerRestartPolicy.fromJson(
json['RestartPolicy'] as Map<String, dynamic>,
)
: null,
autoRemove: json['AutoRemove'] as bool?,
volumeDriver: json['VolumeDriver'] as String?,
volumesFrom: (json['VolumesFrom'] as List<dynamic>?)?.cast<String>(),
mounts: parseList('Mounts', ContainerMountPoint.fromJson),
consoleSize: (json['ConsoleSize'] as List<dynamic>?)?.cast<int>(),
annotations: (json['Annotations'] as Map<String, dynamic>?)
?.cast<String, String>(),
capAdd: (json['CapAdd'] as List<dynamic>?)?.cast<String>(),
capDrop: (json['CapDrop'] as List<dynamic>?)?.cast<String>(),
cgroupnsMode: json['CgroupnsMode'] as String?,
dns: (json['Dns'] as List<dynamic>?)?.cast<String>(),
dnsOptions: (json['DnsOptions'] as List<dynamic>?)?.cast<String>(),
dnsSearch: (json['DnsSearch'] as List<dynamic>?)?.cast<String>(),
extraHosts: (json['ExtraHosts'] as List<dynamic>?)?.cast<String>(),
groupAdd: (json['GroupAdd'] as List<dynamic>?)?.cast<String>(),
ipcMode: json['IpcMode'] as String?,
cgroup: json['Cgroup'] as String?,
links: (json['Links'] as List<dynamic>?)?.cast<String>(),
oomScoreAdj: json['OomScoreAdj'] as int?,
pidMode: json['PidMode'] as String?,
privileged: json['Privileged'] as bool?,
publishAllPorts: json['PublishAllPorts'] as bool?,
readonlyRootfs: json['ReadonlyRootfs'] as bool?,
securityOpt: (json['SecurityOpt'] as List<dynamic>?)?.cast<String>(),
storageOpt:
(json['StorageOpt'] as Map<String, dynamic>?)?.cast<String, String>(),
tmpfs: (json['Tmpfs'] as Map<String, dynamic>?)?.cast<String, String>(),
utsMode: json['UTSMode'] as String?,
usernsMode: json['UsernsMode'] as String?,
shmSize: json['ShmSize'] as int?,
sysctls:
(json['Sysctls'] as Map<String, dynamic>?)?.cast<String, String>(),
runtime: json['Runtime'] as String?,
isolation: json['Isolation'] as String?,
maskedPaths: (json['MaskedPaths'] as List<dynamic>?)?.cast<String>(),
readonlyPaths: (json['ReadonlyPaths'] as List<dynamic>?)?.cast<String>(),
);
}