Skip to content

Commit ac53f5b

Browse files
gwendhalc-croesusstephan-raynerjwelch92
authored
fix: allow time_zone to be specified in web schedules (#2401)
* fix: allow time_zone to be specified in web schedules * fix: ensure time_zone is read for web schedules * fix: add example for generated docs * fix: mark time_zone as computed Allows the API to correctly set the default value when `time_zone` is not specified by the user. * doc: fix typo * docs: fix typo in grafana_oncall_schedule examples Upstream fix edited the generated docs files directly. * fix: fmt terraform example * docs: generate docs again --------- Co-authored-by: Stephan Rayner <[email protected]> Co-authored-by: Jared Welch <[email protected]>
1 parent e7e4a5a commit ac53f5b

File tree

3 files changed

+36
-5
lines changed

3 files changed

+36
-5
lines changed

docs/resources/oncall_schedule.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ data "grafana_oncall_team" "my_team" {
3030
3131
// ICal based schedule
3232
resource "grafana_oncall_schedule" "example_schedule" {
33-
name = "Example Ical Schadule"
33+
name = "Example Ical Schedule"
3434
type = "ical"
3535
ical_url_primary = "https://example.com/example_ical.ics"
3636
ical_url_overrides = "https://example.com/example_overrides_ical.ics"
@@ -46,7 +46,7 @@ resource "grafana_oncall_schedule" "example_schedule" {
4646
4747
// Shift based schedule
4848
resource "grafana_oncall_schedule" "example_schedule" {
49-
name = "Example Calendar Schadule"
49+
name = "Example Calendar Schedule"
5050
type = "calendar"
5151
time_zone = "America/New_York"
5252
@@ -57,6 +57,18 @@ resource "grafana_oncall_schedule" "example_schedule" {
5757
]
5858
ical_url_overrides = "https://example.com/example_overrides_ical.ics"
5959
}
60+
61+
// Web based schedule
62+
resource "grafana_oncall_schedule" "example_schedule" {
63+
name = "Example Web Schedule"
64+
type = "web"
65+
66+
// Optional: defaults to UTC
67+
time_zone = "America/New_York"
68+
69+
// Optional: specify the team to which the schedule belongs
70+
team_id = data.grafana_oncall_team.my_team.id
71+
}
6072
```
6173

6274
<!-- schema generated by tfplugindocs -->

examples/resources/grafana_oncall_schedule/resource.tf

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ data "grafana_oncall_team" "my_team" {
1515

1616
// ICal based schedule
1717
resource "grafana_oncall_schedule" "example_schedule" {
18-
name = "Example Ical Schadule"
18+
name = "Example Ical Schedule"
1919
type = "ical"
2020
ical_url_primary = "https://example.com/example_ical.ics"
2121
ical_url_overrides = "https://example.com/example_overrides_ical.ics"
@@ -31,7 +31,7 @@ resource "grafana_oncall_schedule" "example_schedule" {
3131

3232
// Shift based schedule
3333
resource "grafana_oncall_schedule" "example_schedule" {
34-
name = "Example Calendar Schadule"
34+
name = "Example Calendar Schedule"
3535
type = "calendar"
3636
time_zone = "America/New_York"
3737

@@ -42,3 +42,15 @@ resource "grafana_oncall_schedule" "example_schedule" {
4242
]
4343
ical_url_overrides = "https://example.com/example_overrides_ical.ics"
4444
}
45+
46+
// Web based schedule
47+
resource "grafana_oncall_schedule" "example_schedule" {
48+
name = "Example Web Schedule"
49+
type = "web"
50+
51+
// Optional: defaults to UTC
52+
time_zone = "America/New_York"
53+
54+
// Optional: specify the team to which the schedule belongs
55+
team_id = data.grafana_oncall_team.my_team.id
56+
}

internal/resources/oncall/resource_schedule.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ func resourceSchedule() *common.Resource {
5454
"time_zone": {
5555
Type: schema.TypeString,
5656
Optional: true,
57+
Computed: true,
5758
Description: "The schedule's time zone.",
5859
},
5960
"ical_url_primary": {
@@ -173,7 +174,7 @@ func resourceScheduleCreate(ctx context.Context, d *schema.ResourceData, client
173174

174175
timeZoneData, timeZoneOk := d.GetOk("time_zone")
175176
if timeZoneOk {
176-
if isScheduleTypeCalendar(typeData) {
177+
if isScheduleTypeCalendar(typeData) || isScheduleTypeWeb(typeData) {
177178
createOptions.TimeZone = timeZoneData.(string)
178179
} else {
179180
return diag.Errorf("time_zone can not be set with type: %s", typeData)
@@ -274,6 +275,8 @@ func resourceScheduleRead(ctx context.Context, d *schema.ResourceData, client *o
274275
if isScheduleTypeCalendar(schedule.Type) {
275276
d.Set("time_zone", schedule.TimeZone)
276277
d.Set("shifts", schedule.Shifts)
278+
} else if isScheduleTypeWeb(schedule.Type) {
279+
d.Set("time_zone", schedule.TimeZone)
277280
}
278281

279282
return nil
@@ -325,3 +328,7 @@ func expandScheduleSlack(in []any) *onCallAPI.SlackSchedule {
325328
func isScheduleTypeCalendar(t string) bool {
326329
return t == "calendar"
327330
}
331+
332+
func isScheduleTypeWeb(t string) bool {
333+
return t == "web"
334+
}

0 commit comments

Comments
 (0)