From 4b68106f54d70eac0d322c0d6490bb6edbd871d8 Mon Sep 17 00:00:00 2001 From: Kenjiro Nakayama Date: Mon, 1 Aug 2016 22:58:35 +0900 Subject: [PATCH 1/3] Pass command and trust_prefix to the validation of rkt task configuration --- client/driver/rkt.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/client/driver/rkt.go b/client/driver/rkt.go index 36795446fbe5..8c64f08d63d4 100644 --- a/client/driver/rkt.go +++ b/client/driver/rkt.go @@ -57,7 +57,9 @@ type RktDriver struct { type RktDriverConfig struct { ImageName string `mapstructure:"image"` + Command string `mapstructure:"command"` Args []string `mapstructure:"args"` + TrustPrefix string `mapstructure:"trust_prefix"` DNSServers []string `mapstructure:"dns_servers"` // DNS Server for containers DNSSearchDomains []string `mapstructure:"dns_search_domains"` // DNS Search domains for containers } @@ -99,9 +101,15 @@ func (d *RktDriver) Validate(config map[string]interface{}) error { Type: fields.TypeString, Required: true, }, + "command": &fields.FieldSchema{ + Type: fields.TypeString, + }, "args": &fields.FieldSchema{ Type: fields.TypeArray, }, + "trust_prefix": &fields.FieldSchema{ + Type: fields.TypeString, + }, "dns_servers": &fields.FieldSchema{ Type: fields.TypeArray, }, From 6b72f2cbc1d106dc3b8f1ddad73bf116b237a037 Mon Sep 17 00:00:00 2001 From: Kenjiro Nakayama Date: Thu, 4 Aug 2016 10:18:58 +0900 Subject: [PATCH 2/3] Add TestRktTrustPrefix --- client/driver/rkt_test.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/client/driver/rkt_test.go b/client/driver/rkt_test.go index 5a4c84dbc09d..bd9ee1087445 100644 --- a/client/driver/rkt_test.go +++ b/client/driver/rkt_test.go @@ -325,3 +325,41 @@ func TestRktDriverUser(t *testing.T) { t.Fatalf("Expecting '%v' in '%v'", msg, err) } } + +func TestRktTrustPrefix(t *testing.T) { + if os.Getenv("NOMAD_TEST_RKT") == "" { + t.Skip("skipping rkt tests") + } + ctestutils.RktCompatible(t) + task := &structs.Task{ + Name: "etcd", + Config: map[string]interface{}{ + "trust_prefix": "example.com/invalid", + "image": "coreos.com/etcd:v2.0.4", + "command": "/etcd", + "args": []string{"--version"}, + }, + LogConfig: &structs.LogConfig{ + MaxFiles: 10, + MaxFileSizeMB: 10, + }, + Resources: &structs.Resources{ + MemoryMB: 128, + CPU: 100, + }, + } + driverCtx, execCtx := testDriverContexts(task) + defer execCtx.AllocDir.Destroy() + + d := NewRktDriver(driverCtx) + + handle, err := d.Start(execCtx, task) + if err == nil { + handle.Kill() + t.Fatalf("Should've failed") + } + msg := "Error running rkt trust" + if !strings.Contains(err.Error(), msg) { + t.Fatalf("Expecting '%v' in '%v'", msg, err) + } +} From c2a38d6773d79396438e53aaac868d547a1ecd46 Mon Sep 17 00:00:00 2001 From: Kenjiro Nakayama Date: Thu, 4 Aug 2016 17:15:18 +0900 Subject: [PATCH 3/3] Add TestRktTaskValidate --- client/driver/rkt_test.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/client/driver/rkt_test.go b/client/driver/rkt_test.go index bd9ee1087445..f8ed84243285 100644 --- a/client/driver/rkt_test.go +++ b/client/driver/rkt_test.go @@ -363,3 +363,25 @@ func TestRktTrustPrefix(t *testing.T) { t.Fatalf("Expecting '%v' in '%v'", msg, err) } } + +func TestRktTaskValidate(t *testing.T) { + ctestutils.RktCompatible(t) + task := &structs.Task{ + Name: "etcd", + Config: map[string]interface{}{ + "trust_prefix": "coreos.com/etcd", + "image": "coreos.com/etcd:v2.0.4", + "command": "/etcd", + "args": []string{"--version"}, + "dns_servers": []string{"8.8.8.8", "8.8.4.4"}, + "dns_search_domains": []string{"example.com", "example.org", "example.net"}, + }, + } + driverCtx, execCtx := testDriverContexts(task) + defer execCtx.AllocDir.Destroy() + + d := NewRktDriver(driverCtx) + if err := d.Validate(task.Config); err != nil { + t.Fatalf("Validation error in TaskConfig : '%v'", err) + } +}