diff --git a/azurerm/internal/services/logic/resource_arm_logic_app_trigger_recurrence.go b/azurerm/internal/services/logic/resource_arm_logic_app_trigger_recurrence.go index 673852349632..c9ad22c308b3 100644 --- a/azurerm/internal/services/logic/resource_arm_logic_app_trigger_recurrence.go +++ b/azurerm/internal/services/logic/resource_arm_logic_app_trigger_recurrence.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/helper/validation" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/validate" ) func resourceArmLogicAppTriggerRecurrence() *schema.Resource { @@ -59,6 +60,12 @@ func resourceArmLogicAppTriggerRecurrence() *schema.Resource { Type: schema.TypeInt, Required: true, }, + + "start_time": { + Type: schema.TypeString, + Optional: true, + ValidateFunc: validate.RFC3339Time, + }, }, } } @@ -72,6 +79,10 @@ func resourceArmLogicAppTriggerRecurrenceCreateUpdate(d *schema.ResourceData, me "type": "Recurrence", } + if v, ok := d.GetOk("start_time"); ok { + trigger["recurrence"].(map[string]interface{})["startTime"] = v.(string) + } + logicAppId := d.Get("logic_app_id").(string) name := d.Get("name").(string) if err := resourceLogicAppTriggerUpdate(d, meta, logicAppId, name, trigger, "azurerm_logic_app_trigger_recurrence"); err != nil { @@ -125,6 +136,10 @@ func resourceArmLogicAppTriggerRecurrenceRead(d *schema.ResourceData, meta inter d.Set("interval", int(interval.(float64))) } + if startTime := recurrence["startTime"]; startTime != nil { + d.Set("start_time", startTime.(string)) + } + return nil } diff --git a/azurerm/internal/services/logic/tests/resource_arm_logic_app_trigger_recurrence_test.go b/azurerm/internal/services/logic/tests/resource_arm_logic_app_trigger_recurrence_test.go index 249124e6e372..8de5a70128ea 100644 --- a/azurerm/internal/services/logic/tests/resource_arm_logic_app_trigger_recurrence_test.go +++ b/azurerm/internal/services/logic/tests/resource_arm_logic_app_trigger_recurrence_test.go @@ -192,6 +192,26 @@ func TestAccAzureRMLogicAppTriggerRecurrence_update(t *testing.T) { }) } +func TestAccAzureRMLogicAppTriggerRecurrence_startTime(t *testing.T) { + data := acceptance.BuildTestData(t, "azurerm_logic_app_trigger_recurrence", "test") + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acceptance.PreCheck(t) }, + Providers: acceptance.SupportedProviders, + CheckDestroy: testCheckAzureRMLogicAppWorkflowDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAzureRMLogicAppTriggerRecurrence_startTime(data, "2020-01-01T01:02:03Z"), + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMLogicAppTriggerExists(data.ResourceName), + resource.TestCheckResourceAttr(data.ResourceName, "start_time", "2020-01-01T01:02:03Z"), + ), + }, + data.ImportStep(), + }, + }) +} + func testAccAzureRMLogicAppTriggerRecurrence_basic(data acceptance.TestData, frequency string, interval int) string { return fmt.Sprintf(` resource "azurerm_resource_group" "test" { @@ -214,6 +234,29 @@ resource "azurerm_logic_app_trigger_recurrence" "test" { `, data.RandomInteger, data.Locations.Primary, data.RandomInteger, frequency, interval) } +func testAccAzureRMLogicAppTriggerRecurrence_startTime(data acceptance.TestData, startTime string) string { + return fmt.Sprintf(` +resource "azurerm_resource_group" "test" { + name = "acctestRG-%d" + location = "%s" +} + +resource "azurerm_logic_app_workflow" "test" { + name = "acctestlaw-%d" + location = "${azurerm_resource_group.test.location}" + resource_group_name = "${azurerm_resource_group.test.name}" +} + +resource "azurerm_logic_app_trigger_recurrence" "test" { + name = "frequency-trigger" + logic_app_id = "${azurerm_logic_app_workflow.test.id}" + frequency = "Month" + interval = 1 + start_time = "%s" +} +`, data.RandomInteger, data.Locations.Primary, data.RandomInteger, startTime) +} + func testAccAzureRMLogicAppTriggerRecurrence_requiresImport(data acceptance.TestData, frequency string, interval int) string { template := testAccAzureRMLogicAppTriggerRecurrence_basic(data, frequency, interval) return fmt.Sprintf(` diff --git a/website/docs/r/logic_app_trigger_recurrence.html.markdown b/website/docs/r/logic_app_trigger_recurrence.html.markdown index 2452ca634383..91ec38648f4f 100644 --- a/website/docs/r/logic_app_trigger_recurrence.html.markdown +++ b/website/docs/r/logic_app_trigger_recurrence.html.markdown @@ -47,6 +47,8 @@ The following arguments are supported: * `interval` - (Required) Specifies interval used for the Frequency, for example a value of `4` for `interval` and `hour` for `frequency` would run the Trigger every 4 hours. +* `start_time` - (Optional) Specifies the start date and time for this trigger in RFC3339 format: `2000-01-02T03:04:05Z`. + ## Attributes Reference The following attributes are exported: