Browse code

Create definition for SystemInfo response

The `/info` endpoint was badly documented, missing various
fields and incorrectly describing others.

This patch defines a type for the endpoint, based on the
API types in the source.

Also removing the response example in favor of
per-field examples, as this prevents an incorrectly
formatted response from masking omissions in the
actual type.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>

Sebastiaan van Stijn authored on 2017/08/11 22:45:17
Showing 1 changed files
... ...
@@ -3357,6 +3357,774 @@ definitions:
3357 3357
       Spec:
3358 3358
         $ref: "#/definitions/ConfigSpec"
3359 3359
 
3360
+  SystemInfo:
3361
+    type: "object"
3362
+    properties:
3363
+      ID:
3364
+        description: |
3365
+          Unique identifier of the daemon.
3366
+
3367
+          <p><br /></p>
3368
+
3369
+          > **Note**: The format of the ID itself is not part of the API, and
3370
+          > should not be considered stable.
3371
+        type: "string"
3372
+        example: "7TRN:IPZB:QYBB:VPBQ:UMPP:KARE:6ZNR:XE6T:7EWV:PKF4:ZOJD:TPYS"
3373
+      Containers:
3374
+        description: "Total number of containers on the host."
3375
+        type: "integer"
3376
+        example: 14
3377
+      ContainersRunning:
3378
+        description: |
3379
+          Number of containers with status `"running"`.
3380
+        type: "integer"
3381
+        example: 3
3382
+      ContainersPaused:
3383
+        description: |
3384
+          Number of containers with status `"paused"`.
3385
+        type: "integer"
3386
+        example: 1
3387
+      ContainersStopped:
3388
+        description: |
3389
+          Number of containers with status `"stopped"`.
3390
+        type: "integer"
3391
+        example: 10
3392
+      Images:
3393
+        description: |
3394
+          Total number of images on the host.
3395
+
3396
+          Both _tagged_ and _untagged_ (dangling) images are counted.
3397
+        type: "integer"
3398
+        example: 508
3399
+      Driver:
3400
+        description: "Name of the storage driver in use."
3401
+        type: "string"
3402
+        example: "overlay2"
3403
+      DriverStatus:
3404
+        description: |
3405
+          Information specific to the storage driver, provided as
3406
+          "label" / "value" pairs.
3407
+
3408
+          This information is provided by the storage driver, and formatted
3409
+          in a way consistent with the output of `docker info` on the command
3410
+          line.
3411
+
3412
+          <p><br /></p>
3413
+
3414
+          > **Note**: The information returned in this field, including the
3415
+          > formatting of values and labels, should not be considered stable,
3416
+          > and may change without notice.
3417
+        type: "array"
3418
+        items:
3419
+          type: "array"
3420
+          items:
3421
+            type: "string"
3422
+        example:
3423
+          - ["Backing Filesystem", "extfs"]
3424
+          - ["Supports d_type", "true"]
3425
+          - ["Native Overlay Diff", "true"]
3426
+      DockerRootDir:
3427
+        description: |
3428
+          Root directory of persistent Docker state.
3429
+
3430
+          Defaults to `/var/lib/docker` on Linux, and `C:\ProgramData\docker`
3431
+          on Windows.
3432
+        type: "string"
3433
+        example: "/var/lib/docker"
3434
+      SystemStatus:
3435
+        description: |
3436
+          Status information about this node (standalone Swarm API).
3437
+
3438
+          <p><br /></p>
3439
+
3440
+          > **Note**: The information returned in this field is only propagated
3441
+          > by the Swarm standalone API, and is empty (`null`) when using
3442
+          > built-in swarm mode.
3443
+        type: "array"
3444
+        items:
3445
+          type: "array"
3446
+          items:
3447
+            type: "string"
3448
+        example:
3449
+          - ["Role", "primary"]
3450
+          - ["State", "Healthy"]
3451
+          - ["Strategy", "spread"]
3452
+          - ["Filters", "health, port, containerslots, dependency, affinity, constraint, whitelist"]
3453
+          - ["Nodes", "2"]
3454
+          - [" swarm-agent-00", "192.168.99.102:2376"]
3455
+          - ["  â”” ID", "5CT6:FBGO:RVGO:CZL4:PB2K:WCYN:2JSV:KSHH:GGFW:QOPG:6J5Q:IOZ2|192.168.99.102:2376"]
3456
+          - ["  â”” Status", "Healthy"]
3457
+          - ["  â”” Containers", "1 (1 Running, 0 Paused, 0 Stopped)"]
3458
+          - ["  â”” Reserved CPUs", "0 / 1"]
3459
+          - ["  â”” Reserved Memory", "0 B / 1.021 GiB"]
3460
+          - ["  â”” Labels", "kernelversion=4.4.74-boot2docker, operatingsystem=Boot2Docker 17.06.0-ce (TCL 7.2); HEAD : 0672754 - Thu Jun 29 00:06:31 UTC 2017, ostype=linux, provider=virtualbox, storagedriver=aufs"]
3461
+          - ["  â”” UpdatedAt", "2017-08-09T10:03:46Z"]
3462
+          - ["  â”” ServerVersion", "17.06.0-ce"]
3463
+          - [" swarm-manager", "192.168.99.101:2376"]
3464
+          - ["  â”” ID", "TAMD:7LL3:SEF7:LW2W:4Q2X:WVFH:RTXX:JSYS:XY2P:JEHL:ZMJK:JGIW|192.168.99.101:2376"]
3465
+          - ["  â”” Status", "Healthy"]
3466
+          - ["  â”” Containers", "2 (2 Running, 0 Paused, 0 Stopped)"]
3467
+          - ["  â”” Reserved CPUs", "0 / 1"]
3468
+          - ["  â”” Reserved Memory", "0 B / 1.021 GiB"]
3469
+          - ["  â”” Labels", "kernelversion=4.4.74-boot2docker, operatingsystem=Boot2Docker 17.06.0-ce (TCL 7.2); HEAD : 0672754 - Thu Jun 29 00:06:31 UTC 2017, ostype=linux, provider=virtualbox, storagedriver=aufs"]
3470
+          - ["  â”” UpdatedAt", "2017-08-09T10:04:11Z"]
3471
+          - ["  â”” ServerVersion", "17.06.0-ce"]
3472
+      Plugins:
3473
+        $ref: "#/definitions/PluginsInfo"
3474
+      MemoryLimit:
3475
+        description: "Indicates if the host has memory limit support enabled."
3476
+        type: "boolean"
3477
+        example: true
3478
+      SwapLimit:
3479
+        description: "Indicates if the host has memory swap limit support enabled."
3480
+        type: "boolean"
3481
+        example: true
3482
+      KernelMemory:
3483
+        description: "Indicates if the host has kernel memory limit support enabled."
3484
+        type: "boolean"
3485
+        example: true
3486
+      CpuCfsPeriod:
3487
+        description: "Indicates if CPU CFS(Completely Fair Scheduler) period is supported by the host."
3488
+        type: "boolean"
3489
+        example: true
3490
+      CpuCfsQuota:
3491
+        description: "Indicates if CPU CFS(Completely Fair Scheduler) quota is supported by the host."
3492
+        type: "boolean"
3493
+        example: true
3494
+      CPUShares:
3495
+        description: "Indicates if CPU Shares limiting is supported by the host."
3496
+        type: "boolean"
3497
+        example: true
3498
+      CPUSet:
3499
+        description: |
3500
+          Indicates if CPUsets (cpuset.cpus, cpuset.mems) are supported by the host.
3501
+
3502
+          See [cpuset(7)](https://www.kernel.org/doc/Documentation/cgroup-v1/cpusets.txt)
3503
+        type: "boolean"
3504
+        example: true
3505
+      OomKillDisable:
3506
+        description: "Indicates if OOM killer disable is supported on the host."
3507
+        type: "boolean"
3508
+      IPv4Forwarding:
3509
+        description: "Indicates IPv4 forwarding is enabled."
3510
+        type: "boolean"
3511
+        example: true
3512
+      BridgeNfIptables:
3513
+        description: "Indicates if `bridge-nf-call-iptables` is available on the host."
3514
+        type: "boolean"
3515
+        example: true
3516
+      BridgeNfIp6tables:
3517
+        description: "Indicates if `bridge-nf-call-ip6tables` is available on the host."
3518
+        type: "boolean"
3519
+        example: true
3520
+      Debug:
3521
+        description: "Indicates if the daemon is running in debug-mode / with debug-level logging enabled."
3522
+        type: "boolean"
3523
+        example: true
3524
+      NFd:
3525
+        description: |
3526
+          The total number of file Descriptors in use by the daemon process.
3527
+
3528
+          This information is only returned if debug-mode is enabled.
3529
+        type: "integer"
3530
+        example: 64
3531
+      NGoroutines:
3532
+        description: |
3533
+          The  number of goroutines that currently exist.
3534
+
3535
+          This information is only returned if debug-mode is enabled.
3536
+        type: "integer"
3537
+        example: 174
3538
+      SystemTime:
3539
+        description: |
3540
+          Current system-time in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt)
3541
+          format with nano-seconds.
3542
+        type: "string"
3543
+        example: "2017-08-08T20:28:29.06202363Z"
3544
+      LoggingDriver:
3545
+        description: |
3546
+          The logging driver to use as a default for new containers.
3547
+        type: "string"
3548
+      CgroupDriver:
3549
+        description: |
3550
+          The driver to use for managing cgroups.
3551
+        type: "string"
3552
+        enum: ["cgroupfs", "systemd"]
3553
+        default: "cgroupfs"
3554
+        example: "cgroupfs"
3555
+      NEventsListener:
3556
+        description: "Number of event listeners subscribed."
3557
+        type: "integer"
3558
+        example: 30
3559
+      KernelVersion:
3560
+        description: |
3561
+          Kernel version of the host.
3562
+
3563
+          On Linux, this information obtained from `uname`. On Windows this
3564
+          information is queried from the <kbd>HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\</kbd>
3565
+          registry value, for example _"10.0 14393 (14393.1198.amd64fre.rs1_release_sec.170427-1353)"_.
3566
+        type: "string"
3567
+        example: "4.9.38-moby"
3568
+      OperatingSystem:
3569
+        description: |
3570
+          Name of the host's operating system, for example: "Ubuntu 16.04.2 LTS"
3571
+          or "Windows Server 2016 Datacenter"
3572
+        type: "string"
3573
+        example: "Alpine Linux v3.5"
3574
+      OSType:
3575
+        description: |
3576
+          Generic type of the operating system of the host, as returned by the
3577
+          Go runtime (`GOOS`).
3578
+
3579
+          Currently returned values are "linux" and "windows". A full list of
3580
+          possible values can be found in the [Go documentation](https://golang.org/doc/install/source#environment).
3581
+        type: "string"
3582
+        example: "linux"
3583
+      Architecture:
3584
+        description: |
3585
+          Hardware architecture of the host, as returned by the Go runtime
3586
+          (`GOARCH`).
3587
+
3588
+          A full list of possible values can be found in the [Go documentation](https://golang.org/doc/install/source#environment).
3589
+        type: "string"
3590
+        example: "x86_64"
3591
+      NCPU:
3592
+        description: |
3593
+          The number of logical CPUs usable by the daemon.
3594
+
3595
+          The number of available CPUs is checked by querying the operating
3596
+          system when the daemon starts. Changes to operating system CPU
3597
+          allocation after the daemon is started are not reflected.
3598
+        type: "integer"
3599
+        example: 4
3600
+      MemTotal:
3601
+        description: |
3602
+          Total amount of physical memory available on the host, in kilobytes (kB).
3603
+        type: "integer"
3604
+        format: "int64"
3605
+        example: 2095882240
3606
+
3607
+      IndexServerAddress:
3608
+        description: |
3609
+          Address / URL of the index server that is used for image search,
3610
+          and as a default for user authentication for Docker Hub and Docker Cloud.
3611
+        default: "https://index.docker.io/v1/"
3612
+        type: "string"
3613
+        example: "https://index.docker.io/v1/"
3614
+      RegistryConfig:
3615
+        $ref: "#/definitions/RegistryServiceConfig"
3616
+      GenericResources:
3617
+        $ref: "#/definitions/GenericResources"
3618
+      HttpProxy:
3619
+        description: |
3620
+          HTTP-proxy configured for the daemon. This value is obtained from the
3621
+          [`HTTP_PROXY`](https://www.gnu.org/software/wget/manual/html_node/Proxies.html) environment variable.
3622
+
3623
+          Containers do not automatically inherit this configuration.
3624
+        type: "string"
3625
+        example: "http://user:pass@proxy.corp.example.com:8080"
3626
+      HttpsProxy:
3627
+        description: |
3628
+          HTTPS-proxy configured for the daemon. This value is obtained from the
3629
+          [`HTTPS_PROXY`](https://www.gnu.org/software/wget/manual/html_node/Proxies.html) environment variable.
3630
+
3631
+          Containers do not automatically inherit this configuration.
3632
+        type: "string"
3633
+        example: "https://user:pass@proxy.corp.example.com:4443"
3634
+      NoProxy:
3635
+        description: |
3636
+          Comma-separated list of domain extensions for which no proxy should be
3637
+          used. This value is obtained from the [`NO_PROXY`](https://www.gnu.org/software/wget/manual/html_node/Proxies.html)
3638
+          environment variable.
3639
+
3640
+          Containers do not automatically inherit this configuration.
3641
+        type: "string"
3642
+        example: "*.local, 169.254/16"
3643
+      Name:
3644
+        description: "Hostname of the host."
3645
+        type: "string"
3646
+        example: "node5.corp.example.com"
3647
+      Labels:
3648
+        description: |
3649
+          User-defined labels (key/value metadata) as set on the daemon.
3650
+
3651
+          <p><br /></p>
3652
+
3653
+          > **Note**: When part of a Swarm, nodes can both have _daemon_ labels,
3654
+          > set through the daemon configuration, and _node_ labels, set from a
3655
+          > manager node in the Swarm. Node labels are not included in this
3656
+          > field. Node labels can be retrieved using the `/nodes/(id)` endpoint
3657
+          > on a manager node in the Swarm.
3658
+        type: "array"
3659
+        items:
3660
+          type: "string"
3661
+        example: ["storage=ssd", "production"]
3662
+      ExperimentalBuild:
3663
+        description: |
3664
+          Indicates if experimental features are enabled on the daemon.
3665
+        type: "boolean"
3666
+        example: true
3667
+      ServerVersion:
3668
+        description: |
3669
+          Version string of the daemon.
3670
+
3671
+          > **Note**: the [standalone Swarm API](https://docs.docker.com/swarm/swarm-api/)
3672
+          > returns the Swarm version instead of the daemon  version, for example
3673
+          > `swarm/1.2.8`.
3674
+        type: "string"
3675
+        example: "17.06.0-ce"
3676
+      ClusterStore:
3677
+        description: |
3678
+          URL of the distributed storage backend.
3679
+
3680
+
3681
+          The storage backend is used for multihost networking (to store
3682
+          network and endpoint information) and by the node discovery mechanism.
3683
+
3684
+          <p><br /></p>
3685
+
3686
+          > **Note**: This field is only propagated when using standalone Swarm
3687
+          > mode, and overlay networking using an external k/v store. Overlay
3688
+          > networks with Swarm mode enabled use the built-in raft store, and
3689
+          > this field will be empty.
3690
+        type: "string"
3691
+        example: "consul://consul.corp.example.com:8600/some/path"
3692
+      ClusterAdvertise:
3693
+        description: |
3694
+          The network endpoint that the Engine advertises for the purpose of
3695
+          node discovery. ClusterAdvertise is a `host:port` combination on which
3696
+          the daemon is reachable by other hosts.
3697
+
3698
+          <p><br /></p>
3699
+
3700
+          > **Note**: This field is only propagated when using standalone Swarm
3701
+          > mode, and overlay networking using an external k/v store. Overlay
3702
+          > networks with Swarm mode enabled use the built-in raft store, and
3703
+          > this field will be empty.
3704
+        type: "string"
3705
+        example: "node5.corp.example.com:8000"
3706
+      Runtimes:
3707
+        description: |
3708
+          List of [OCI compliant](https://github.com/opencontainers/runtime-spec)
3709
+          runtimes configured on the daemon. Keys hold the "name" used to
3710
+          reference the runtime.
3711
+
3712
+          The Docker daemon relies on an OCI compliant runtime (invoked via the
3713
+          `containerd` daemon) as its interface to the Linux kernel namespaces,
3714
+          cgroups, and SELinux.
3715
+
3716
+          The default runtime is `runc`, and automatically configured. Additional
3717
+          runtimes can be configured by the user and will be listed here.
3718
+        type: "object"
3719
+        additionalProperties:
3720
+          $ref: "#/definitions/Runtime"
3721
+        default:
3722
+          runc:
3723
+            path: "docker-runc"
3724
+        example:
3725
+          runc:
3726
+            path: "docker-runc"
3727
+          runc-master:
3728
+            path: "/go/bin/runc"
3729
+          custom:
3730
+            path: "/usr/local/bin/my-oci-runtime"
3731
+            runtimeArgs: ["--debug", "--systemd-cgroup=false"]
3732
+      DefaultRuntime:
3733
+        description: |
3734
+          Name of the default OCI runtime that is used when starting containers.
3735
+
3736
+          The default can be overridden per-container at create time.
3737
+        type: "string"
3738
+        default: "runc"
3739
+        example: "runc"
3740
+      Swarm:
3741
+        $ref: "#/definitions/SwarmInfo"
3742
+      LiveRestoreEnabled:
3743
+        description: |
3744
+          Indicates if live restore is enabled.
3745
+
3746
+          If enabled, containers are kept running when the daemon is shutdown
3747
+          or upon daemon start if running containers are detected.
3748
+        type: "boolean"
3749
+        default: false
3750
+        example: false
3751
+      Isolation:
3752
+        description: |
3753
+          Represents the isolation technology to use as a default for containers.
3754
+          The supported values are platform-specific.
3755
+
3756
+          If no isolation value is specified on daemon start, on Windows client,
3757
+          the default is `hyperv`, and on Windows server, the default is `process`.
3758
+
3759
+          This option is currently not used on other platforms.
3760
+        default: "default"
3761
+        type: "string"
3762
+        enum:
3763
+          - "default"
3764
+          - "hyperv"
3765
+          - "process"
3766
+      InitBinary:
3767
+        description: |
3768
+          Name and, optional, path of the the `docker-init` binary.
3769
+
3770
+          If the path is omitted, the daemon searches the host's `$PATH` for the
3771
+          binary and uses the first result.
3772
+        type: "string"
3773
+        example: "docker-init"
3774
+      ContainerdCommit:
3775
+        $ref: "#/definitions/Commit"
3776
+      RuncCommit:
3777
+        $ref: "#/definitions/Commit"
3778
+      InitCommit:
3779
+        $ref: "#/definitions/Commit"
3780
+      SecurityOptions:
3781
+        description: |
3782
+          List of security features that are enabled on the daemon, such as
3783
+          apparmor, seccomp, SELinux, and user-namespaces (userns).
3784
+
3785
+          Additional configuration options for each security feature may
3786
+          be present, and are included as a comma-separated list of key/value
3787
+          pairs.
3788
+        type: "array"
3789
+        items:
3790
+          type: "string"
3791
+        example:
3792
+          - "name=apparmor"
3793
+          - "name=seccomp,profile=default"
3794
+          - "name=selinux"
3795
+          - "name=userns"
3796
+
3797
+
3798
+  # PluginsInfo is a temp struct holding Plugins name
3799
+  # registered with docker daemon. It is used by Info struct
3800
+  PluginsInfo:
3801
+    description: |
3802
+      Available plugins per type.
3803
+
3804
+      <p><br /></p>
3805
+
3806
+      > **Note**: Only unmanaged (V1) plugins are included in this list.
3807
+      > V1 plugins are "lazily" loaded, and are not returned in this list
3808
+      > if there is no resource using the plugin.
3809
+    type: "object"
3810
+    properties:
3811
+      Volume:
3812
+        description: "Names of available volume-drivers, and network-driver plugins."
3813
+        type: "array"
3814
+        items:
3815
+          type: "string"
3816
+        example: ["local"]
3817
+      Network:
3818
+        description: "Names of available network-drivers, and network-driver plugins."
3819
+        type: "array"
3820
+        items:
3821
+          type: "string"
3822
+        example: ["bridge", "host", "ipvlan", "macvlan", "null", "overlay"]
3823
+      Authorization:
3824
+        description: "Names of available authorization plugins."
3825
+        type: "array"
3826
+        items:
3827
+          type: "string"
3828
+        example: ["img-authz-plugin", "hbm"]
3829
+      Log:
3830
+        description: "Names of available logging-drivers, and logging-driver plugins."
3831
+        type: "array"
3832
+        items:
3833
+          type: "string"
3834
+        example: ["awslogs", "fluentd", "gcplogs", "gelf", "journald", "json-file", "logentries", "splunk", "syslog"]
3835
+
3836
+
3837
+  RegistryServiceConfig:
3838
+    description: |
3839
+      RegistryServiceConfig stores daemon registry services configuration.
3840
+    type: "object"
3841
+    x-nullable: true
3842
+    properties:
3843
+      AllowNondistributableArtifactsCIDRs:
3844
+        description: |
3845
+          List of IP ranges to which nondistributable artifacts can be pushed,
3846
+          using the CIDR syntax [RFC 4632](https://tools.ietf.org/html/4632).
3847
+
3848
+          Some images (for example, Windows base images) contain artifacts
3849
+          whose distribution is restricted by license. When these images are
3850
+          pushed to a registry, restricted artifacts are not included.
3851
+
3852
+          This configuration override this behavior, and enables the daemon to
3853
+          push nondistributable artifacts to all registries whose resolved IP
3854
+          address is within the subnet described by the CIDR syntax.
3855
+
3856
+          This option is useful when pushing images containing
3857
+          nondistributable artifacts to a registry on an air-gapped network so
3858
+          hosts on that network can pull the images without connecting to
3859
+          another server.
3860
+
3861
+          > **Warning**: Nondistributable artifacts typically have restrictions
3862
+          > on how and where they can be distributed and shared. Only use this
3863
+          > feature to push artifacts to private registries and ensure that you
3864
+          > are in compliance with any terms that cover redistributing
3865
+          > nondistributable artifacts.
3866
+
3867
+        type: "array"
3868
+        items:
3869
+          type: "string"
3870
+        example: ["::1/128", "127.0.0.0/8"]
3871
+      AllowNondistributableArtifactsHostnames:
3872
+        description: |
3873
+          List of registry hostnames to which nondistributable artifacts can be
3874
+          pushed, using the format `<hostname>[:<port>]` or `<IP address>[:<port>]`.
3875
+
3876
+          Some images (for example, Windows base images) contain artifacts
3877
+          whose distribution is restricted by license. When these images are
3878
+          pushed to a registry, restricted artifacts are not included.
3879
+
3880
+          This configuration override this behavior for the specified
3881
+          registries.
3882
+
3883
+          This option is useful when pushing images containing
3884
+          nondistributable artifacts to a registry on an air-gapped network so
3885
+          hosts on that network can pull the images without connecting to
3886
+          another server.
3887
+
3888
+          > **Warning**: Nondistributable artifacts typically have restrictions
3889
+          > on how and where they can be distributed and shared. Only use this
3890
+          > feature to push artifacts to private registries and ensure that you
3891
+          > are in compliance with any terms that cover redistributing
3892
+          > nondistributable artifacts.
3893
+        type: "array"
3894
+        items:
3895
+          type: "string"
3896
+        example: ["registry.internal.corp.example.com:3000", "[2001:db8:a0b:12f0::1]:443"]
3897
+      InsecureRegistryCIDRs:
3898
+        description: |
3899
+          List of IP ranges of insecure registries, using the CIDR syntax
3900
+          ([RFC 4632](https://tools.ietf.org/html/4632)). Insecure registries
3901
+          accept un-encrypted (HTTP) and/or untrusted (HTTPS with certificates
3902
+          from unknown CAs) communication.
3903
+
3904
+          By default, local registries (`127.0.0.0/8`) are configured as
3905
+          insecure. All other registries are secure. Communicating with an
3906
+          insecure registry is not possible if the daemon assumes that registry
3907
+          is secure.
3908
+
3909
+          This configuration override this behavior, insecure communication with
3910
+          registries whose resolved IP address is within the subnet described by
3911
+          the CIDR syntax.
3912
+
3913
+          Registries can also be marked insecure by hostname. Those registries
3914
+          are listed under `IndexConfigs` and have their `Secure` field set to
3915
+          `false`.
3916
+
3917
+          > **Warning**: Using this option can be useful when running a local
3918
+          > registry, but introduces security vulnerabilities. This option
3919
+          > should therefore ONLY be used for testing purposes. For increased
3920
+          > security, users should add their CA to their system's list of trusted
3921
+          > CAs instead of enabling this option.
3922
+        type: "array"
3923
+        items:
3924
+          type: "string"
3925
+        example: ["::1/128", "127.0.0.0/8"]
3926
+      IndexConfigs:
3927
+        type: "object"
3928
+        additionalProperties:
3929
+          $ref: "#/definitions/IndexInfo"
3930
+        example:
3931
+          "127.0.0.1:5000":
3932
+            "Name": "127.0.0.1:5000"
3933
+            "Mirrors": []
3934
+            "Secure": false
3935
+            "Official": false
3936
+          "[2001:db8:a0b:12f0::1]:80":
3937
+            "Name": "[2001:db8:a0b:12f0::1]:80"
3938
+            "Mirrors": []
3939
+            "Secure": false
3940
+            "Official": false
3941
+          "docker.io":
3942
+            Name: "docker.io"
3943
+            Mirrors: ["https://hub-mirror.corp.example.com:5000/"]
3944
+            Secure: true
3945
+            Official: true
3946
+          "registry.internal.corp.example.com:3000":
3947
+            Name: "registry.internal.corp.example.com:3000"
3948
+            Mirrors: []
3949
+            Secure: false
3950
+            Official: false
3951
+      Mirrors:
3952
+        description: |
3953
+          List of registry URLs that act as a mirror for the official
3954
+          (`docker.io`) registry.
3955
+
3956
+        type: "array"
3957
+        items:
3958
+          type: "string"
3959
+        example:
3960
+          - "https://hub-mirror.corp.example.com:5000/"
3961
+          - "https://[2001:db8:a0b:12f0::1]/"
3962
+
3963
+  IndexInfo:
3964
+    description:
3965
+      IndexInfo contains information about a registry.
3966
+    type: "object"
3967
+    x-nullable: true
3968
+    properties:
3969
+      Name:
3970
+        description: |
3971
+          Name of the registry, such as "docker.io".
3972
+        type: "string"
3973
+        example: "docker.io"
3974
+      Mirrors:
3975
+        description: |
3976
+          List of mirrors, expressed as URIs.
3977
+        type: "array"
3978
+        items:
3979
+          type: "string"
3980
+        example:
3981
+          - "https://hub-mirror.corp.example.com:5000/"
3982
+          - "https://registry-2.docker.io/"
3983
+          - "https://registry-3.docker.io/"
3984
+      Secure:
3985
+        description: |
3986
+          Indicates if the the registry is part of the list of insecure
3987
+          registries.
3988
+
3989
+          If `false`, the registry is insecure. Insecure registries accept
3990
+          un-encrypted (HTTP) and/or untrusted (HTTPS with certificates from
3991
+          unknown CAs) communication.
3992
+
3993
+          > **Warning**: Insecure registries can be useful when running a local
3994
+          > registry. However, because its use creates security vulnerabilities
3995
+          > it should ONLY be enabled for testing purposes. For increased
3996
+          > security, users should add their CA to their system's list of
3997
+          > trusted CAs instead of enabling this option.
3998
+        type: "boolean"
3999
+        example: true
4000
+      Official:
4001
+        description: |
4002
+          Indicates whether this is an official registry (i.e., Docker Hub / docker.io)
4003
+        type: "boolean"
4004
+        example: true
4005
+
4006
+  Runtime:
4007
+    description: |
4008
+      Runtime describes an [OCI compliant](https://github.com/opencontainers/runtime-spec)
4009
+      runtime.
4010
+
4011
+      The runtime is invoked by the daemon via the `containerd` daemon. OCI
4012
+      runtimes act as an interface to the Linux kernel namespaces, cgroups,
4013
+      and SELinux.
4014
+    type: "object"
4015
+    properties:
4016
+      path:
4017
+        description: |
4018
+          Name and, optional, path, of the OCI executable binary.
4019
+
4020
+          If the path is omitted, the daemon searches the host's `$PATH` for the
4021
+          binary and uses the first result.
4022
+        type: "string"
4023
+        example: "/usr/local/bin/my-oci-runtime"
4024
+      runtimeArgs:
4025
+        description: |
4026
+          List of command-line arguments to pass to the runtime when invoked.
4027
+        type: "array"
4028
+        x-nullable: true
4029
+        items:
4030
+          type: "string"
4031
+        example: ["--debug", "--systemd-cgroup=false"]
4032
+
4033
+  Commit:
4034
+    description: |
4035
+      Commit holds the Git-commit (SHA1) that a binary was built from, as
4036
+      reported in the version-string of external tools, such as `containerd`,
4037
+      or `runC`.
4038
+    type: "object"
4039
+    properties:
4040
+      ID:
4041
+        description: "Actual commit ID of external tool."
4042
+        type: "string"
4043
+        example: "cfb82a876ecc11b5ca0977d1733adbe58599088a"
4044
+      Expected:
4045
+        description: |
4046
+          Commit ID of external tool expected by dockerd as set at build time.
4047
+        type: "string"
4048
+        example: "2d41c047c83e09a6d61d464906feb2a2f3c52aa4"
4049
+
4050
+  SwarmInfo:
4051
+    description: |
4052
+      Represents generic information about swarm.
4053
+    type: "object"
4054
+    properties:
4055
+      NodeID:
4056
+        description: "Unique identifier of for this node in the swarm."
4057
+        type: "string"
4058
+        default: ""
4059
+        example: "k67qz4598weg5unwwffg6z1m1"
4060
+      NodeAddr:
4061
+        description: |
4062
+          IP address at which this node can be reached by other nodes in the
4063
+          swarm.
4064
+        type: "string"
4065
+        default: ""
4066
+        example: "10.0.0.46"
4067
+      LocalNodeState:
4068
+        $ref: "#/definitions/LocalNodeState"
4069
+      ControlAvailable:
4070
+        type: "boolean"
4071
+        default: false
4072
+        example: true
4073
+      Error:
4074
+        type: "string"
4075
+        default: ""
4076
+      RemoteManagers:
4077
+        description: |
4078
+          List of ID's and addresses of other managers in the swarm.
4079
+        type: "array"
4080
+        default: null
4081
+        x-nullable: true
4082
+        items:
4083
+          $ref: "#/definitions/PeerNode"
4084
+        example:
4085
+          - NodeID: "71izy0goik036k48jg985xnds"
4086
+            Addr: "10.0.0.158:2377"
4087
+          - NodeID: "79y6h1o4gv8n120drcprv5nmc"
4088
+            Addr: "10.0.0.159:2377"
4089
+          - NodeID: "k67qz4598weg5unwwffg6z1m1"
4090
+            Addr: "10.0.0.46:2377"
4091
+      Nodes:
4092
+        description: "Total number of nodes in the swarm."
4093
+        type: "integer"
4094
+        x-nullable: true
4095
+        example: 4
4096
+      Managers:
4097
+        description: "Total number of managers in the swarm."
4098
+        type: "integer"
4099
+        x-nullable: true
4100
+        example: 3
4101
+      Cluster:
4102
+        $ref: "#/definitions/ClusterInfo"
4103
+
4104
+  LocalNodeState:
4105
+    description: "Current local status of this node."
4106
+    type: "string"
4107
+    default: ""
4108
+    enum:
4109
+      - ""
4110
+      - "inactive"
4111
+      - "pending"
4112
+      - "active"
4113
+      - "error"
4114
+      - "locked"
4115
+    example: "active"
4116
+
4117
+  PeerNode:
4118
+    description: "Represents a peer-node in the swarm"
4119
+    properties:
4120
+      NodeID:
4121
+        description: "Unique identifier of for this node in the swarm."
4122
+        type: "string"
4123
+      Addr:
4124
+        description: |
4125
+          IP address and ports at which this node can be reached.
4126
+        type: "string"
4127
+
3360 4128
 paths:
3361 4129
   /containers/json:
3362 4130
     get:
... ...
@@ -5941,209 +6709,7 @@ paths:
5941 5941
         200:
5942 5942
           description: "No error"
5943 5943
           schema:
5944
-            type: "object"
5945
-            properties:
5946
-              Architecture:
5947
-                type: "string"
5948
-              Containers:
5949
-                type: "integer"
5950
-              ContainersRunning:
5951
-                type: "integer"
5952
-              ContainersStopped:
5953
-                type: "integer"
5954
-              ContainersPaused:
5955
-                type: "integer"
5956
-              CpuCfsPeriod:
5957
-                type: "boolean"
5958
-              CpuCfsQuota:
5959
-                type: "boolean"
5960
-              Debug:
5961
-                type: "boolean"
5962
-              DiscoveryBackend:
5963
-                type: "string"
5964
-              DockerRootDir:
5965
-                type: "string"
5966
-              Driver:
5967
-                type: "string"
5968
-              DriverStatus:
5969
-                type: "array"
5970
-                items:
5971
-                  type: "array"
5972
-                  items:
5973
-                    type: "string"
5974
-              SystemStatus:
5975
-                type: "array"
5976
-                items:
5977
-                  type: "array"
5978
-                  items:
5979
-                    type: "string"
5980
-              Plugins:
5981
-                type: "object"
5982
-                properties:
5983
-                  Volume:
5984
-                    type: "array"
5985
-                    items:
5986
-                      type: "string"
5987
-                  Network:
5988
-                    type: "array"
5989
-                    items:
5990
-                      type: "string"
5991
-                  Log:
5992
-                    type: "array"
5993
-                    items:
5994
-                      type: "string"
5995
-              ExperimentalBuild:
5996
-                type: "boolean"
5997
-              HttpProxy:
5998
-                type: "string"
5999
-              HttpsProxy:
6000
-                type: "string"
6001
-              ID:
6002
-                type: "string"
6003
-              IPv4Forwarding:
6004
-                type: "boolean"
6005
-              Images:
6006
-                type: "integer"
6007
-              IndexServerAddress:
6008
-                type: "string"
6009
-              InitPath:
6010
-                type: "string"
6011
-              InitSha1:
6012
-                type: "string"
6013
-              KernelVersion:
6014
-                type: "string"
6015
-              Labels:
6016
-                type: "array"
6017
-                items:
6018
-                  type: "string"
6019
-              MemTotal:
6020
-                type: "integer"
6021
-              GenericResources:
6022
-                $ref: "#/definitions/GenericResources"
6023
-              MemoryLimit:
6024
-                type: "boolean"
6025
-              NCPU:
6026
-                type: "integer"
6027
-              NEventsListener:
6028
-                type: "integer"
6029
-              NFd:
6030
-                type: "integer"
6031
-              NGoroutines:
6032
-                type: "integer"
6033
-              Name:
6034
-                type: "string"
6035
-              NoProxy:
6036
-                type: "string"
6037
-              OomKillDisable:
6038
-                type: "boolean"
6039
-              OSType:
6040
-                type: "string"
6041
-              OomScoreAdj:
6042
-                type: "integer"
6043
-              OperatingSystem:
6044
-                type: "string"
6045
-              RegistryConfig:
6046
-                type: "object"
6047
-                properties:
6048
-                  IndexConfigs:
6049
-                    type: "object"
6050
-                    additionalProperties:
6051
-                      type: "object"
6052
-                      properties:
6053
-                        Mirrors:
6054
-                          type: "array"
6055
-                          items:
6056
-                            type: "string"
6057
-                        Name:
6058
-                          type: "string"
6059
-                        Official:
6060
-                          type: "boolean"
6061
-                        Secure:
6062
-                          type: "boolean"
6063
-                  InsecureRegistryCIDRs:
6064
-                    type: "array"
6065
-                    items:
6066
-                      type: "string"
6067
-              SwapLimit:
6068
-                type: "boolean"
6069
-              SystemTime:
6070
-                type: "string"
6071
-              ServerVersion:
6072
-                type: "string"
6073
-          examples:
6074
-            application/json:
6075
-              Architecture: "x86_64"
6076
-              ClusterStore: "etcd://localhost:2379"
6077
-              CgroupDriver: "cgroupfs"
6078
-              Containers: 11
6079
-              ContainersRunning: 7
6080
-              ContainersStopped: 3
6081
-              ContainersPaused: 1
6082
-              CpuCfsPeriod: true
6083
-              CpuCfsQuota: true
6084
-              Debug: false
6085
-              DockerRootDir: "/var/lib/docker"
6086
-              Driver: "btrfs"
6087
-              DriverStatus:
6088
-                -
6089
-                  - ""
6090
-              ExperimentalBuild: false
6091
-              HttpProxy: "http://test:test@localhost:8080"
6092
-              HttpsProxy: "https://test:test@localhost:8080"
6093
-              ID: "7TRN:IPZB:QYBB:VPBQ:UMPP:KARE:6ZNR:XE6T:7EWV:PKF4:ZOJD:TPYS"
6094
-              IPv4Forwarding: true
6095
-              Images: 16
6096
-              IndexServerAddress: "https://index.docker.io/v1/"
6097
-              InitPath: "/usr/bin/docker"
6098
-              InitSha1: ""
6099
-              KernelMemory: true
6100
-              KernelVersion: "3.12.0-1-amd64"
6101
-              Labels:
6102
-                - "storage=ssd"
6103
-              MemTotal: 2099236864
6104
-              MemoryLimit: true
6105
-              NCPU: 1
6106
-              NEventsListener: 0
6107
-              NFd: 11
6108
-              NGoroutines: 21
6109
-              Name: "prod-server-42"
6110
-              NoProxy: "9.81.1.160"
6111
-              OomKillDisable: true
6112
-              OSType: "linux"
6113
-              OperatingSystem: "Boot2Docker"
6114
-              Plugins:
6115
-                Volume:
6116
-                  - "local"
6117
-                Network:
6118
-                  - "null"
6119
-                  - "host"
6120
-                  - "bridge"
6121
-              RegistryConfig:
6122
-                IndexConfigs:
6123
-                  docker.io:
6124
-                    Name: "docker.io"
6125
-                    Official: true
6126
-                    Secure: true
6127
-                InsecureRegistryCIDRs:
6128
-                  - "127.0.0.0/8"
6129
-              SecurityOptions:
6130
-                - Key: "Name"
6131
-                  Value: "seccomp"
6132
-                - Key: "Profile"
6133
-                  Value: "default"
6134
-                - Key: "Name"
6135
-                  Value: "apparmor"
6136
-                - Key: "Name"
6137
-                  Value: "selinux"
6138
-                - Key: "Name"
6139
-                  Value: "userns"
6140
-              ServerVersion: "1.9.0"
6141
-              SwapLimit: false
6142
-              SystemStatus:
6143
-                -
6144
-                  - "State"
6145
-                  - "Healthy"
6146
-              SystemTime: "2015-03-10T11:11:23.730591467-07:00"
5944
+            $ref: "#/definitions/SystemInfo"
6147 5945
         500:
6148 5946
           description: "Server error"
6149 5947
           schema: