Bläddra i källkod

Add DefaultAddressPools to docker info #40388

Signed-off-by: Wang Yumu <37442693@qq.com>
Wang Yumu 5 år sedan
förälder
incheckning
840a12ac90
3 ändrade filer med 45 tillägg och 9 borttagningar
  1. 19 0
      api/swagger.yaml
  2. 16 9
      api/types/types.go
  3. 10 0
      daemon/info.go

+ 19 - 0
api/swagger.yaml

@@ -4676,6 +4676,25 @@ definitions:
           such as number of nodes, and expiration are included.
         type: "string"
         example: "Community Engine"
+      DefaultAddressPools:
+        description: |
+          List of custom default address pools for local networks, which can be
+          specified in the daemon.json file or dockerd option.
+
+          Example: a Base "10.10.0.0/16" with Size 24 will define the set of 256
+          10.10.[0-255].0/24 address pools.
+        type: "array"
+        items:
+          type: "object"
+          properties:
+            Base:
+              description: "The network address in CIDR format"
+              type: "string"
+              example: "10.10.0.0/16"
+            Size:
+              description: "The network pool size"
+              type: "integer"
+              example: "24"
       Warnings:
         description: |
           List of warnings / informational messages about missing features, or

+ 16 - 9
api/types/types.go

@@ -203,15 +203,16 @@ type Info struct {
 	// LiveRestoreEnabled determines whether containers should be kept
 	// running when the daemon is shutdown or upon daemon start if
 	// running containers are detected
-	LiveRestoreEnabled bool
-	Isolation          container.Isolation
-	InitBinary         string
-	ContainerdCommit   Commit
-	RuncCommit         Commit
-	InitCommit         Commit
-	SecurityOptions    []string
-	ProductLicense     string `json:",omitempty"`
-	Warnings           []string
+	LiveRestoreEnabled  bool
+	Isolation           container.Isolation
+	InitBinary          string
+	ContainerdCommit    Commit
+	RuncCommit          Commit
+	InitCommit          Commit
+	SecurityOptions     []string
+	ProductLicense      string `json:",omitempty"`
+	DefaultAddressPools []NetworkAddressPool
+	Warnings            []string
 }
 
 // KeyValue holds a key/value pair
@@ -219,6 +220,12 @@ type KeyValue struct {
 	Key, Value string
 }
 
+// NetworkAddressPool is a temp struct used by Info struct
+type NetworkAddressPool struct {
+	Base string
+	Size int
+}
+
 // SecurityOpt contains the name and options of a security option
 type SecurityOpt struct {
 	Name    string

+ 10 - 0
daemon/info.go

@@ -78,6 +78,7 @@ func (daemon *Daemon) SystemInfo() *types.Info {
 	daemon.fillPluginsInfo(v)
 	daemon.fillSecurityOptions(v, sysInfo)
 	daemon.fillLicense(v)
+	daemon.fillDefaultAddressPools(v)
 
 	if v.DefaultRuntime == config.LinuxV1RuntimeName {
 		v.Warnings = append(v.Warnings, fmt.Sprintf("Configured default runtime %q is deprecated and will be removed in the next release.", config.LinuxV1RuntimeName))
@@ -229,6 +230,15 @@ func (daemon *Daemon) fillAPIInfo(v *types.Info) {
 	}
 }
 
+func (daemon *Daemon) fillDefaultAddressPools(v *types.Info) {
+	for _, pool := range daemon.configStore.DefaultAddressPools.Value() {
+		v.DefaultAddressPools = append(v.DefaultAddressPools, types.NetworkAddressPool{
+			Base: pool.Base,
+			Size: pool.Size,
+		})
+	}
+}
+
 func hostName() string {
 	hostname := ""
 	if hn, err := os.Hostname(); err != nil {