From 81083dac5157effae8826749d5e30692bb3759e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Lapeyre?= Date: Fri, 10 Jul 2020 23:43:08 +0200 Subject: [PATCH] Add purge_on_delete to nomad_job resource Closes https://github.com/terraform-providers/terraform-provider-nomad/issues/124 --- nomad/resource_job.go | 9 ++++- nomad/resource_job_test.go | 59 ++++++++++++++++++++++++++++++++ website/docs/r/job.html.markdown | 3 ++ 3 files changed, 70 insertions(+), 1 deletion(-) diff --git a/nomad/resource_job.go b/nomad/resource_job.go index 62c3f701..3a6224e5 100644 --- a/nomad/resource_job.go +++ b/nomad/resource_job.go @@ -211,6 +211,12 @@ func resourceJob() *schema.Resource { }, }, }, + + "purge_on_delete": { + Description: "Whether to purge the job when the resource is deleted.", + Optional: true, + Type: schema.TypeBool, + }, }, } } @@ -412,7 +418,8 @@ func resourceJobDeregister(d *schema.ResourceData, meta interface{}) error { if opts.Namespace == "" { opts.Namespace = "default" } - _, _, err := client.Jobs().Deregister(id, false, opts) + purge := d.Get("purge_on_delete").(bool) + _, _, err := client.Jobs().Deregister(id, purge, opts) if err != nil { return fmt.Errorf("error deregistering job: %s", err) } diff --git a/nomad/resource_job_test.go b/nomad/resource_job_test.go index 5a2655ab..2f7ee719 100644 --- a/nomad/resource_job_test.go +++ b/nomad/resource_job_test.go @@ -401,6 +401,34 @@ func TestResourceJob_parameterizedJob(t *testing.T) { }) } +func TestResourceJob_purgeOnDelete(t *testing.T) { + r.Test(t, r.TestCase{ + Providers: testProviders, + PreCheck: func() { testAccPreCheck(t) }, + Steps: []r.TestStep{ + // create the resource + { + Config: testResourceJob_purgeOnDelete, + Check: testResourceJob_initialCheck(t), + }, + // make sure it is purged once deleted + { + Destroy: true, + Config: testResourceJob_purgeOnDelete, + Check: func(s *terraform.State) error { + providerConfig := testProvider.Meta().(ProviderConfig) + client := providerConfig.client + job, _, err := client.Jobs().Info("purge-test", nil) + if !assert.EqualError(t, err, "Unexpected response code: 404 (job not found)") { + return fmt.Errorf("Job found: %#v", job) + } + return nil + }, + }, + }, + }) +} + func testResourceJob_parameterizedCheck(s *terraform.State) error { resourceState := s.Modules[0].Resources["nomad_job.parameterized"] if resourceState == nil { @@ -723,6 +751,37 @@ resource "nomad_job" "test" { } ` +var testResourceJob_purgeOnDelete = ` +resource "nomad_job" "test" { + purge_on_delete = true + jobspec = <