ContainerHostConfig.fromJson constructor

ContainerHostConfig.fromJson(
  1. Map<String, dynamic> json
)

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>(),
  );
}