diff --git a/CHANGELOG.md b/CHANGELOG.md index bc9174a5b1a0..71b61b8f8722 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,15 @@ ## 0.5.1 (Unreleased) +IMPROVEMENTS: + * driver/rkt: Support rkt's `--dns=host` and `--dns=none` options [GH-2028] + BUG FIXES: * agent/config: Fix use of IPv6 addresses [GH-2036] * cli: Improve parsing error when a job without a name is specified [GH-2030] * client: Fix race on StreamFramer Destroy which would cause a panic [GH-2007] * driver/docker: Make container exist errors non-retriable by task runner [GH-2033] + * driver/rkt: Fix validation of rkt volumes [GH-2027] ## 0.5.0 (November 16, 2016) diff --git a/client/driver/rkt.go b/client/driver/rkt.go index 4225d57a7f55..8e100dd3c631 100644 --- a/client/driver/rkt.go +++ b/client/driver/rkt.go @@ -136,6 +136,9 @@ func (d *RktDriver) Validate(config map[string]interface{}) error { "debug": &fields.FieldSchema{ Type: fields.TypeBool, }, + "volumes": &fields.FieldSchema{ + Type: fields.TypeArray, + }, }, } @@ -306,13 +309,18 @@ func (d *RktDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, e cmdArgs = append(cmdArgs, fmt.Sprintf("--cpu=%vm", int64(task.Resources.CPU))) // Add DNS servers - for _, ip := range driverConfig.DNSServers { - if err := net.ParseIP(ip); err == nil { - msg := fmt.Errorf("invalid ip address for container dns server %q", ip) - d.logger.Printf("[DEBUG] driver.rkt: %v", msg) - return nil, msg - } else { - cmdArgs = append(cmdArgs, fmt.Sprintf("--dns=%s", ip)) + if len(driverConfig.DNSServers) == 1 && (driverConfig.DNSServers[0] == "host" || driverConfig.DNSServers[0] == "none") { + // Special case single item lists with the special values "host" or "none" + cmdArgs = append(cmdArgs, fmt.Sprintf("--dns=%s", driverConfig.DNSServers[0])) + } else { + for _, ip := range driverConfig.DNSServers { + if err := net.ParseIP(ip); err == nil { + msg := fmt.Errorf("invalid ip address for container dns server %q", ip) + d.logger.Printf("[DEBUG] driver.rkt: %v", msg) + return nil, msg + } else { + cmdArgs = append(cmdArgs, fmt.Sprintf("--dns=%s", ip)) + } } }