From 9e0097a0ea39a667cce372cd41a508995822f7ce Mon Sep 17 00:00:00 2001 From: Tom Wilkie Date: Thu, 15 Oct 2015 09:08:39 +0000 Subject: [PATCH] Implement restart policy support in Docker provider. --- .../docker/resource_docker_container.go | 6 ++++++ .../docker/resource_docker_container_funcs.go | 21 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/builtin/providers/docker/resource_docker_container.go b/builtin/providers/docker/resource_docker_container.go index 59e65b9c1672..7a088c10a073 100644 --- a/builtin/providers/docker/resource_docker_container.go +++ b/builtin/providers/docker/resource_docker_container.go @@ -142,6 +142,12 @@ func resourceDockerContainer() *schema.Resource { Optional: true, ForceNew: true, }, + + "restart_policy": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, }, } } diff --git a/builtin/providers/docker/resource_docker_container_funcs.go b/builtin/providers/docker/resource_docker_container_funcs.go index aa74a4e1d81c..61c5a96e69d1 100644 --- a/builtin/providers/docker/resource_docker_container_funcs.go +++ b/builtin/providers/docker/resource_docker_container_funcs.go @@ -93,6 +93,27 @@ func resourceDockerContainerCreate(d *schema.ResourceData, meta interface{}) err PublishAllPorts: d.Get("publish_all_ports").(bool), } + if v, ok := d.GetOk("restart_policy"); ok { + restartPolicy := v.(string) + switch { + case restartPolicy == "no" || restartPolicy == "always" || restartPolicy == "on-failure": + hostConfig.RestartPolicy = dc.RestartPolicy{ + Name: restartPolicy, + } + case strings.HasPrefix(restartPolicy, "on-failure:"): + count, err := strconv.Atoi(strings.SplitN(restartPolicy, ":", 2)[1]) + if err != nil { + return fmt.Errorf("Invalid restart_policy: %s", restartPolicy) + } + hostConfig.RestartPolicy = dc.RestartPolicy{ + Name: "on-failure", + MaximumRetryCount: count, + } + default: + return fmt.Errorf("Invalid restart_policy: %s", restartPolicy) + } + } + if len(portBindings) != 0 { hostConfig.PortBindings = portBindings }