From 3dd873afb89e601a22832cc0622779dfba58cfe1 Mon Sep 17 00:00:00 2001 From: "Alexis (AJ) Jasso" Date: Fri, 19 Apr 2024 09:53:49 -0700 Subject: [PATCH] Update tf render tests to v0.8.0, add opsgenie tfrender test --- DB_PATH | 0 pager/opsgenie.go | 24 +- .../testdata/TestRenderDataUser.golden.tf | 2 +- ...TestRenderOnCallScheduleResource.golden.tf | 2 +- .../TestRenderOpsgenieSample.golden.tf | 403 ++++++++++++++++++ .../TestRenderPagerDutySample.golden.tf | 2 +- .../testdata/TestRenderTeamResource.golden.tf | 2 +- tfrender/testdata/opsgenie_seed.sql | 126 ++++++ tfrender/tfrender.go | 4 +- tfrender/tfrender_opsgenie_test.go | 35 ++ 10 files changed, 587 insertions(+), 13 deletions(-) create mode 100644 DB_PATH create mode 100644 tfrender/testdata/TestRenderOpsgenieSample.golden.tf create mode 100644 tfrender/testdata/opsgenie_seed.sql create mode 100644 tfrender/tfrender_opsgenie_test.go diff --git a/DB_PATH b/DB_PATH new file mode 100644 index 0000000..e69de29 diff --git a/pager/opsgenie.go b/pager/opsgenie.go index f68e346..2640f9f 100644 --- a/pager/opsgenie.go +++ b/pager/opsgenie.go @@ -123,14 +123,19 @@ func (o *Opsgenie) saveRotationToDB(ctx context.Context, s schedule.Schedule, r ogsHandoffTime := r.StartDate.Format(time.TimeOnly) ogsHandoffDay := strings.ToLower(r.StartDate.Weekday().String()) - var ogsStrategy string + var ogsStrategy, ogsDuration string switch r.Type { case og.Daily: ogsStrategy = "daily" + ogsDuration = "" case og.Weekly: ogsStrategy = "weekly" - default: + ogsDuration = "" + case og.Hourly: ogsStrategy = "custom" + ogsDuration = fmt.Sprintf("PT%dH", r.Length) + default: + return fmt.Errorf("unexpected schedule strategy %s. skipping rotation %s of schedule %s", ogsStrategy, r.Id, s.Id) } ogsParams := store.InsertExtScheduleParams{ @@ -141,7 +146,7 @@ func (o *Opsgenie) saveRotationToDB(ctx context.Context, s schedule.Schedule, r HandoffTime: ogsHandoffTime, HandoffDay: ogsHandoffDay, Strategy: ogsStrategy, - ShiftDuration: "", + ShiftDuration: ogsDuration, } q := store.UseQueries(ctx) @@ -188,11 +193,16 @@ func (o *Opsgenie) saveRotationToDB(ctx context.Context, s schedule.Schedule, r // it at all and I had to guess at this behavior from testing before digging into the source to confirm which, as it turns out, // is exactly how I wanted to spend my morning so thanks for that. if r.TimeRestriction != nil { + loc, err := time.LoadLocation(s.Timezone) + if err != nil { + console.Warnf("unable to parse location %s. using UTC instead", s.Timezone) + loc = time.UTC + } switch r.TimeRestriction.Type { case og.WeekdayAndTimeOfDay: for i, tr := range r.TimeRestriction.RestrictionList { - startTime := time.Date(0, time.January, 1, int(*tr.StartHour), int(*tr.StartMin), 0, 0, time.UTC) - endTime := time.Date(0, time.January, 1, int(*tr.EndHour), int(*tr.EndMin), 0, 0, time.UTC) + startTime := time.Date(0, time.January, 1, int(*tr.StartHour), int(*tr.StartMin), 0, 0, loc) + endTime := time.Date(0, time.January, 1, int(*tr.EndHour), int(*tr.EndMin), 0, 0, loc) ogsRestrictionsParams := store.InsertExtScheduleRestrictionParams{ ScheduleID: ogsParams.ID, @@ -210,8 +220,8 @@ func (o *Opsgenie) saveRotationToDB(ctx context.Context, s schedule.Schedule, r for i := range 7 { tr := r.TimeRestriction.Restriction startDayStr := strings.ToLower(time.Weekday(i).String()) - startTime := time.Date(0, time.January, 1, int(*tr.StartHour), int(*tr.StartMin), 0, 0, time.UTC) - endTime := time.Date(0, time.January, 1, int(*tr.EndHour), int(*tr.EndMin), 0, 0, time.UTC) + startTime := time.Date(0, time.January, 1, int(*tr.StartHour), int(*tr.StartMin), 0, 0, loc) + endTime := time.Date(0, time.January, 1, int(*tr.EndHour), int(*tr.EndMin), 0, 0, loc) var endDayStr string if endTime.Before(startTime) { day := (i + 1) % 7 diff --git a/tfrender/testdata/TestRenderDataUser.golden.tf b/tfrender/testdata/TestRenderDataUser.golden.tf index 935c5e1..4bd7bd9 100644 --- a/tfrender/testdata/TestRenderDataUser.golden.tf +++ b/tfrender/testdata/TestRenderDataUser.golden.tf @@ -2,7 +2,7 @@ terraform { required_providers { firehydrant = { source = "firehydrant/firehydrant" - version = ">= 0.7.1" + version = ">= 0.8.0" } } } diff --git a/tfrender/testdata/TestRenderOnCallScheduleResource.golden.tf b/tfrender/testdata/TestRenderOnCallScheduleResource.golden.tf index f34d470..8bd7c08 100644 --- a/tfrender/testdata/TestRenderOnCallScheduleResource.golden.tf +++ b/tfrender/testdata/TestRenderOnCallScheduleResource.golden.tf @@ -2,7 +2,7 @@ terraform { required_providers { firehydrant = { source = "firehydrant/firehydrant" - version = ">= 0.7.1" + version = ">= 0.8.0" } } } diff --git a/tfrender/testdata/TestRenderOpsgenieSample.golden.tf b/tfrender/testdata/TestRenderOpsgenieSample.golden.tf new file mode 100644 index 0000000..d2e1c34 --- /dev/null +++ b/tfrender/testdata/TestRenderOpsgenieSample.golden.tf @@ -0,0 +1,403 @@ +terraform { + required_providers { + firehydrant = { + source = "firehydrant/firehydrant" + version = ">= 0.8.0" + } + } +} + +data "firehydrant_user" "agajewski" { + email = "agajewski@firehydrant.com" +} + +data "firehydrant_user" "ajasso" { + email = "ajasso@firehydrant.com" +} + +data "firehydrant_user" "abakhtiari" { + email = "abakhtiari@firehydrant.com" +} + +data "firehydrant_user" "akoenigbautista" { + email = "akoenigbautista@firehydrant.com" +} + +data "firehydrant_user" "breese" { + email = "breese@firehydrant.com" +} + +data "firehydrant_user" "btrowbridge" { + email = "btrowbridge@firehydrant.com" +} + +data "firehydrant_user" "boblad" { + email = "boblad@firehydrant.com" +} + +data "firehydrant_user" "cbeavers" { + email = "cbeavers@firehydrant.com" +} + +data "firehydrant_user" "cweber" { + email = "cweber@firehydrant.com" +} + +data "firehydrant_user" "cquinn" { + email = "cquinn@firehydrant.com" +} + +data "firehydrant_user" "cgrant" { + email = "cgrant@firehydrant.com" +} + +data "firehydrant_user" "dcondomitti" { + email = "dcondomitti@firehydrant.com" +} + +data "firehydrant_user" "dleong" { + email = "dleong@firehydrant.com" +} + +data "firehydrant_user" "davidcelis" { + email = "davidcelis@firehydrant.com" +} + +data "firehydrant_user" "deleted_dlinch_at_firehydrant_io" { + email = "deleted+dlinch_at_firehydrant.io@firehydrant.com" +} + +data "firehydrant_user" "dylan" { + email = "dylan@firehydrant.com" +} + +data "firehydrant_user" "epegues" { + email = "epegues@firehydrant.com" +} + +data "firehydrant_user" "it_integrations" { + email = "it-integrations@firehydrant.com" +} + +data "firehydrant_user" "jhamilton" { + email = "jhamilton@firehydrant.com" +} + +data "firehydrant_user" "jscott" { + email = "jscott@firehydrant.com" +} + +data "firehydrant_user" "lcastellanos" { + email = "lcastellanos@firehydrant.com" +} + +data "firehydrant_user" "lincoln" { + email = "lincoln@firehydrant.com" +} + +data "firehydrant_user" "mhughes" { + email = "mhughes@firehydrant.com" +} + +data "firehydrant_user" "mevans" { + email = "mevans@firehydrant.com" +} + +data "firehydrant_user" "mrulonmiller" { + email = "mrulonmiller@firehydrant.com" +} + +data "firehydrant_user" "mtison" { + email = "mtison@firehydrant.com" +} + +data "firehydrant_user" "robert" { + email = "robert@firehydrant.com" +} + +data "firehydrant_user" "ralipour" { + email = "ralipour@firehydrant.com" +} + +data "firehydrant_user" "tdamico" { + email = "tdamico@firehydrant.com" +} + +data "firehydrant_user" "vthanh" { + email = "vthanh@firehydrant.com" +} + +data "firehydrant_user" "whusin" { + email = "whusin@firehydrant.com" +} + +data "firehydrant_user" "ymuller" { + email = "ymuller@firehydrant.com" +} + +resource "firehydrant_team" "vinny_test_team" { + name = "Vinny Test Team" + + memberships { + user_id = data.firehydrant_user.mhughes.id + } + + memberships { + user_id = data.firehydrant_user.vthanh.id + } +} + +resource "firehydrant_team" "platform" { + name = "Platform" +} + +resource "firehydrant_team" "aj_team" { + name = "AJ Team" + + memberships { + user_id = data.firehydrant_user.cweber.id + } + + memberships { + user_id = data.firehydrant_user.akoenigbautista.id + } + + memberships { + user_id = data.firehydrant_user.abakhtiari.id + } + + memberships { + user_id = data.firehydrant_user.ajasso.id + } +} + +resource "firehydrant_team" "customer_success" { + name = "Customer Success" + + memberships { + user_id = data.firehydrant_user.cweber.id + } +} + +resource "firehydrant_team" "chris_test_team" { + name = "Chris Test Team" + + memberships { + user_id = data.firehydrant_user.cweber.id + } +} + +resource "firehydrant_team" "andrewkb_test_team" { + name = "AndrewKB Test Team" +} + +resource "firehydrant_team" "noodlebrigade" { + name = "noodlebrigade" + + memberships { + user_id = data.firehydrant_user.breese.id + } +} + +resource "firehydrant_team" "christine_test_team" { + name = "Christine Test Team" + + memberships { + user_id = data.firehydrant_user.agajewski.id + } +} + +resource "firehydrant_team" "krista_test_team" { + name = "krista-test-team" + + memberships { + user_id = data.firehydrant_user.abakhtiari.id + } +} + +resource "firehydrant_on_call_schedule" "customer_success_customer_success_schedule_rot1" { + name = "Customer Success_schedule - Rot1" + description = "(Rot1)" + team_id = resource.firehydrant_team.customer_success.id + time_zone = "America/Los_Angeles" + + member_ids = [data.firehydrant_user.cweber.id] + + strategy { + type = "weekly" + handoff_day = "tuesday" + handoff_time = "04:45:32" + } +} + +resource "firehydrant_on_call_schedule" "chris_test_team_chris_test_team_schedule_rot1" { + name = "Chris Test Team_schedule - Rot1" + description = "(Rot1)" + team_id = resource.firehydrant_team.chris_test_team.id + time_zone = "America/Los_Angeles" + + member_ids = [data.firehydrant_user.cweber.id] + + strategy { + type = "weekly" + handoff_day = "monday" + handoff_time = "07:00:00" + } +} + +resource "firehydrant_on_call_schedule" "vinny_test_team_vinny_test_team_schedule_first" { + name = "Vinny Test Team_schedule - First" + description = "(First)" + team_id = resource.firehydrant_team.vinny_test_team.id + time_zone = "America/Los_Angeles" + + member_ids = [data.firehydrant_user.vthanh.id] + + strategy { + type = "daily" + handoff_time = "08:00:00" + } +} + +resource "firehydrant_on_call_schedule" "aj_team_aj_team_schedule_daytime_rotation" { + name = "AJ Team_schedule - Daytime rotation" + description = "(Daytime rotation)" + team_id = resource.firehydrant_team.aj_team.id + time_zone = "America/Los_Angeles" + + member_ids = [data.firehydrant_user.ajasso.id, data.firehydrant_user.abakhtiari.id, data.firehydrant_user.cweber.id, data.firehydrant_user.akoenigbautista.id] + + strategy { + type = "weekly" + handoff_day = "monday" + handoff_time = "07:00:00" + } + + restrictions { + start_day = "monday" + start_time = "08:00:00" + end_day = "monday" + end_time = "18:00:00" + } + + restrictions { + start_day = "tuesday" + start_time = "08:00:00" + end_day = "tuesday" + end_time = "18:00:00" + } + + restrictions { + start_day = "wednesday" + start_time = "08:00:00" + end_day = "wednesday" + end_time = "18:00:00" + } + + restrictions { + start_day = "thursday" + start_time = "08:00:00" + end_day = "thursday" + end_time = "18:00:00" + } + + restrictions { + start_day = "friday" + start_time = "08:00:00" + end_day = "friday" + end_time = "18:00:00" + } +} + +resource "firehydrant_on_call_schedule" "aj_team_aj_team_schedule_nighttime_rotation" { + name = "AJ Team_schedule - Nighttime rotation" + description = "(Nighttime rotation)" + team_id = resource.firehydrant_team.aj_team.id + time_zone = "America/Los_Angeles" + + member_ids = [data.firehydrant_user.ajasso.id, data.firehydrant_user.abakhtiari.id, data.firehydrant_user.cweber.id, data.firehydrant_user.akoenigbautista.id] + + strategy { + type = "daily" + handoff_time = "15:00:00" + } + + restrictions { + start_day = "sunday" + start_time = "18:00:00" + end_day = "monday" + end_time = "08:00:00" + } + + restrictions { + start_day = "monday" + start_time = "18:00:00" + end_day = "tuesday" + end_time = "08:00:00" + } + + restrictions { + start_day = "tuesday" + start_time = "18:00:00" + end_day = "wednesday" + end_time = "08:00:00" + } + + restrictions { + start_day = "wednesday" + start_time = "18:00:00" + end_day = "thursday" + end_time = "08:00:00" + } + + restrictions { + start_day = "thursday" + start_time = "18:00:00" + end_day = "friday" + end_time = "08:00:00" + } + + restrictions { + start_day = "friday" + start_time = "18:00:00" + end_day = "saturday" + end_time = "08:00:00" + } + + restrictions { + start_day = "saturday" + start_time = "18:00:00" + end_day = "sunday" + end_time = "08:00:00" + } +} + +resource "firehydrant_on_call_schedule" "noodlebrigade_noodlebrigade_schedule_rot1" { + name = "noodlebrigade_schedule - Rot1" + description = "(Rot1)" + team_id = resource.firehydrant_team.noodlebrigade.id + time_zone = "America/Los_Angeles" + + member_ids = [data.firehydrant_user.breese.id] + + strategy { + type = "weekly" + handoff_day = "monday" + handoff_time = "08:00:00" + } +} + +resource "firehydrant_on_call_schedule" "krista_test_team_krista_test_team_schedule_rot1" { + name = "krista-test-team_schedule - Rot1" + description = "(Rot1)" + team_id = resource.firehydrant_team.krista_test_team.id + time_zone = "America/Los_Angeles" + + member_ids = [data.firehydrant_user.abakhtiari.id] + + strategy { + type = "weekly" + handoff_day = "tuesday" + handoff_time = "01:24:00" + } +} diff --git a/tfrender/testdata/TestRenderPagerDutySample.golden.tf b/tfrender/testdata/TestRenderPagerDutySample.golden.tf index fad6b7b..b4e71ed 100644 --- a/tfrender/testdata/TestRenderPagerDutySample.golden.tf +++ b/tfrender/testdata/TestRenderPagerDutySample.golden.tf @@ -2,7 +2,7 @@ terraform { required_providers { firehydrant = { source = "firehydrant/firehydrant" - version = ">= 0.7.1" + version = ">= 0.8.0" } } } diff --git a/tfrender/testdata/TestRenderTeamResource.golden.tf b/tfrender/testdata/TestRenderTeamResource.golden.tf index 2c846fd..d886778 100644 --- a/tfrender/testdata/TestRenderTeamResource.golden.tf +++ b/tfrender/testdata/TestRenderTeamResource.golden.tf @@ -2,7 +2,7 @@ terraform { required_providers { firehydrant = { source = "firehydrant/firehydrant" - version = ">= 0.7.1" + version = ">= 0.8.0" } } } diff --git a/tfrender/testdata/opsgenie_seed.sql b/tfrender/testdata/opsgenie_seed.sql new file mode 100644 index 0000000..f70edff --- /dev/null +++ b/tfrender/testdata/opsgenie_seed.sql @@ -0,0 +1,126 @@ + +INSERT INTO fh_users VALUES('49ef2cda-ab4f-4599-852c-8cc2c8884523','Aaron Gajewski','agajewski@firehydrant.com'); +INSERT INTO fh_users VALUES('90c17208-46b4-4e82-b9b8-b8f5d8215a05','AJ Jasso','ajasso@firehydrant.com'); +INSERT INTO fh_users VALUES('66506894-ecbc-4034-b8e6-30851dabf5f3','Andrew Bakhtiari','abakhtiari@firehydrant.com'); +INSERT INTO fh_users VALUES('a8fc03aa-8443-4c76-819c-8b7242fec459','Andrew Koenig-Bautista','akoenigbautista@firehydrant.com'); +INSERT INTO fh_users VALUES('4fd25a81-3a5b-4883-955c-2fb0e8c38f78','Bailey Reese','breese@firehydrant.com'); +INSERT INTO fh_users VALUES('38fb92e2-f7cf-4491-92f6-321cff78a335','Brian Trowbridge','btrowbridge@firehydrant.com'); +INSERT INTO fh_users VALUES('fd66d024-bcfd-4774-b042-a9e851bbf29e','Bryant Oblad','boblad@firehydrant.com'); +INSERT INTO fh_users VALUES('a4132c19-0f6a-4887-bcaa-a912e4e6603e','Chelane Beavers','cbeavers@firehydrant.com'); +INSERT INTO fh_users VALUES('aaa1ed90-d9da-4484-9817-a48e07630b5b','Christopher Weber','cweber@firehydrant.com'); +INSERT INTO fh_users VALUES('c069bed9-4fb4-4355-ac8d-bd3a1fd83105','Colin Quinn','cquinn@firehydrant.com'); +INSERT INTO fh_users VALUES('7fc302c9-df76-4f6a-a49f-43edea020543','Courtney Grant','cgrant@firehydrant.com'); +INSERT INTO fh_users VALUES('8e72f881-1433-4012-b663-92d82d458a54','Daniel Condomitti','dcondomitti@firehydrant.com'); +INSERT INTO fh_users VALUES('4c734622-3d7e-4ddf-ba2a-05de7aee97b1','Danielle Leong','dleong@firehydrant.com'); +INSERT INTO fh_users VALUES('4bcaad72-f75e-4944-a794-ba0d2b62d56e','David Celis','davidcelis@firehydrant.com'); +INSERT INTO fh_users VALUES('9fb3eccb-16c4-49a8-8611-031051c100d7','Derik Linch','deleted+dlinch_at_firehydrant.io@firehydrant.com'); +INSERT INTO fh_users VALUES('ac87c699-1fd0-492a-a946-90a416c86a95','Dylan Nielsen','dylan@firehydrant.com'); +INSERT INTO fh_users VALUES('e856b3aa-9e91-4b70-8432-f572dbc00856','Emma Pegues','epegues@firehydrant.com'); +INSERT INTO fh_users VALUES('c08039a6-2aaf-4a80-9f73-7199620e6c11','IT Integration User (Service)','it-integrations@firehydrant.com'); +INSERT INTO fh_users VALUES('9f7fc789-2a8f-44ec-8572-b67a5c459679','Josh Hamilton','jhamilton@firehydrant.com'); +INSERT INTO fh_users VALUES('7a7b55b2-0a72-4c5b-8551-d737252f508e','Jouhné Scott','jscott@firehydrant.com'); +INSERT INTO fh_users VALUES('e7a1e283-56dc-42f4-b5be-8932f85fa524','Leslie Castellanos','lcastellanos@firehydrant.com'); +INSERT INTO fh_users VALUES('63c4f38a-8d91-45d8-82f9-ec3f1366f035','Lincoln Ritter','lincoln@firehydrant.com'); +INSERT INTO fh_users VALUES('b27cb660-2862-4a57-a22a-270ed6bc4868','Matt Hughes','mhughes@firehydrant.com'); +INSERT INTO fh_users VALUES('a08a6b60-92ed-48e1-aee6-fe44e102479b','Michael Evans','mevans@firehydrant.com'); +INSERT INTO fh_users VALUES('c95eb286-0c86-4602-8c6d-c554056165f3','Michael Rulon-Miller','mrulonmiller@firehydrant.com'); +INSERT INTO fh_users VALUES('d05771eb-562e-488e-90da-7a95907b31d8','Monica Tison','mtison@firehydrant.com'); +INSERT INTO fh_users VALUES('4a08d22e-c728-44da-a4a5-02dc863a878e','Robert Ross','robert@firehydrant.com'); +INSERT INTO fh_users VALUES('f4f1286c-e58f-4b24-86e8-d77bc0539946','Rod Alipour','ralipour@firehydrant.com'); +INSERT INTO fh_users VALUES('d06e1a90-b75f-41e9-969f-2c3e656e5807','Troy D''Amico','tdamico@firehydrant.com'); +INSERT INTO fh_users VALUES('169c6ffd-a729-4f5d-a49f-f62987fa55c4','Vinny Thanh','vthanh@firehydrant.com'); +INSERT INTO fh_users VALUES('6ee560a6-cc0b-44db-8b65-fec57b82ce65','Wilson Husin','whusin@firehydrant.com'); +INSERT INTO fh_users VALUES('a37d8a8d-8bd0-41d4-b4c6-d680eea6d34e','Ylan Muller','ymuller@firehydrant.com'); + +INSERT INTO ext_users VALUES('e0a51be7-3c7e-407f-8678-292ab421f55f','Christopher Weber','cweber@firehydrant.com','aaa1ed90-d9da-4484-9817-a48e07630b5b'); +INSERT INTO ext_users VALUES('c4e3f8fd-601b-4ca3-9f1c-cb32e9678dca','Christine Yi','cyi@firehydrant.com','49ef2cda-ab4f-4599-852c-8cc2c8884523'); +INSERT INTO ext_users VALUES('1dc37638-ab52-44f3-848e-a16bcc584fb7','FireHydrant Demo','fh-demo@firehydrant.io','90c17208-46b4-4e82-b9b8-b8f5d8215a05'); +INSERT INTO ext_users VALUES('9253cf00-6195-4123-a9a6-f9f1e25718d8','FireHydrant Eng','fh-eng@firehydrant.io','66506894-ecbc-4034-b8e6-30851dabf5f3'); +INSERT INTO ext_users VALUES('e94e17aa-418c-44f7-8e47-1eaebf6b5343','FireHydrant Success','fh-success@firehydrant.com','a8fc03aa-8443-4c76-819c-8b7242fec459'); +INSERT INTO ext_users VALUES('d68757c4-5eec-4560-8c5b-91c463f87dd8','Gaby Mendez','gmendez@firehydrant.com','4fd25a81-3a5b-4883-955c-2fb0e8c38f78'); +INSERT INTO ext_users VALUES('a13020ca-cb08-48e3-9403-bed181a22e72','Jouhné Scott','jscott@firehydrant.com','7a7b55b2-0a72-4c5b-8551-d737252f508e'); +INSERT INTO ext_users VALUES('99a5e241-3c4c-4182-acc2-b916155f9064','Matt Hughes','mhughes@firehydrant.com','b27cb660-2862-4a57-a22a-270ed6bc4868'); +INSERT INTO ext_users VALUES('407ab11f-bf99-4427-b8a1-5d0032f520be','Vinny Thanh','vthanh@firehydrant.com','169c6ffd-a729-4f5d-a49f-f62987fa55c4'); +INSERT INTO ext_users VALUES('30149ed1-8449-4e44-a91d-137c0ee4116b','Ylan Muller','ymuller@firehydrant.com','a37d8a8d-8bd0-41d4-b4c6-d680eea6d34e'); + +INSERT INTO fh_teams VALUES('8c465512-b0b4-47df-ba59-735574bc4dde','Alerting','alerting'); +INSERT INTO fh_teams VALUES('d98aa7e2-9b38-41a8-b5de-49743c3b9ac2','Assign Product On-call','on-call-gameday'); +INSERT INTO fh_teams VALUES('20c766e5-318a-4acc-a8f9-660e824e50f8','Customer Success and Support','customer-success-and-support'); +INSERT INTO fh_teams VALUES('23a23d67-fafd-4edd-bed2-2ef8a0d7cd63','Design','design'); +INSERT INTO fh_teams VALUES('863df868-15dc-4ac3-a0dc-6ace3c8c5735','Engineering','engineering'); +INSERT INTO fh_teams VALUES('9807cad6-add5-4fcb-b6c6-0df2f8968bf8','Engineering Leadership','engineering-leadership'); +INSERT INTO fh_teams VALUES('cf875890-17a7-4232-9651-80c68657dc1a','Frontend On-call','frontend'); +INSERT INTO fh_teams VALUES('27175c92-558e-43a8-8628-29d6adbee34a','Incident Management','incident-management'); +INSERT INTO fh_teams VALUES('d0a13551-0a4d-4609-bdf0-01763ce8b300','Infrastructure Team','infrastructure'); +INSERT INTO fh_teams VALUES('e4119c67-d380-4cc4-90af-29aec1915c41','IT','it'); +INSERT INTO fh_teams VALUES('9dece84c-be6f-487e-bd01-3762a1c53633','Marketing','marketing'); +INSERT INTO fh_teams VALUES('b5aac299-2329-4f95-aacd-a0462d5ee9ef','Product','product'); +INSERT INTO fh_teams VALUES('606b4f8b-b568-41b9-9154-ac874db35e1f','Security','security'); +INSERT INTO fh_teams VALUES('d644e590-f1e5-45f5-8b3e-650f550b3833','Urgent Support','urgent-support'); + +INSERT INTO ext_teams VALUES('017e4326-abdf-4cd9-8cad-5f23bd7f4753','Vinny Test Team','vinny-test-team',NULL); +INSERT INTO ext_teams VALUES('3dd6b50f-28ed-4660-b982-606bfa6c4cf2','Platform','platform',NULL); +INSERT INTO ext_teams VALUES('946bf740-0497-4d5d-b31f-23a6e55a2719','AJ Team','aj-team',NULL); +INSERT INTO ext_teams VALUES('b7acbc33-9853-4150-8a4b-10156d9408c8','Customer Success','customer-success',NULL); +INSERT INTO ext_teams VALUES('d8ff49ac-9df0-4c08-b8c9-1d3b0b24e9cc','Chris Test Team','chris-test-team',NULL); +INSERT INTO ext_teams VALUES('d9237718-d19e-428b-ba73-64621bb26951','AndrewKB Test Team','andrewkb-test-team',NULL); +INSERT INTO ext_teams VALUES('e3436ab1-7547-4a47-a02a-36fee3dc91f9','noodlebrigade','noodlebrigade',NULL); +INSERT INTO ext_teams VALUES('f5a99a73-cdfb-49a2-af34-aeb05c59d937','Christine Test Team','christine-test-team',NULL); +INSERT INTO ext_teams VALUES('ff71fe69-ecd9-4621-82f7-6d290e6c3ae0','krista-test-team','krista-test-team',NULL); + +INSERT INTO ext_memberships VALUES('99a5e241-3c4c-4182-acc2-b916155f9064','017e4326-abdf-4cd9-8cad-5f23bd7f4753'); +INSERT INTO ext_memberships VALUES('407ab11f-bf99-4427-b8a1-5d0032f520be','017e4326-abdf-4cd9-8cad-5f23bd7f4753'); +INSERT INTO ext_memberships VALUES('e0a51be7-3c7e-407f-8678-292ab421f55f','946bf740-0497-4d5d-b31f-23a6e55a2719'); +INSERT INTO ext_memberships VALUES('e94e17aa-418c-44f7-8e47-1eaebf6b5343','946bf740-0497-4d5d-b31f-23a6e55a2719'); +INSERT INTO ext_memberships VALUES('9253cf00-6195-4123-a9a6-f9f1e25718d8','946bf740-0497-4d5d-b31f-23a6e55a2719'); +INSERT INTO ext_memberships VALUES('1dc37638-ab52-44f3-848e-a16bcc584fb7','946bf740-0497-4d5d-b31f-23a6e55a2719'); +INSERT INTO ext_memberships VALUES('e0a51be7-3c7e-407f-8678-292ab421f55f','b7acbc33-9853-4150-8a4b-10156d9408c8'); +INSERT INTO ext_memberships VALUES('e0a51be7-3c7e-407f-8678-292ab421f55f','d8ff49ac-9df0-4c08-b8c9-1d3b0b24e9cc'); +INSERT INTO ext_memberships VALUES('d68757c4-5eec-4560-8c5b-91c463f87dd8','e3436ab1-7547-4a47-a02a-36fee3dc91f9'); +INSERT INTO ext_memberships VALUES('c4e3f8fd-601b-4ca3-9f1c-cb32e9678dca','f5a99a73-cdfb-49a2-af34-aeb05c59d937'); +INSERT INTO ext_memberships VALUES('9253cf00-6195-4123-a9a6-f9f1e25718d8','ff71fe69-ecd9-4621-82f7-6d290e6c3ae0'); + +INSERT INTO ext_schedules VALUES('3fee43f2-02da-49be-ab50-c88ed13aecc3-b1b5f7f6-728b-47bd-af02-c3e1c33bf219','Customer Success_schedule - Rot1','(Rot1)','America/Los_Angeles','weekly','','','04:45:32','tuesday'); +INSERT INTO ext_schedules VALUES('57c134f4-adeb-41f2-990b-8eebe7bcfcf2-cf71a41b-3261-4f0b-93ed-5a1d1c583db8','how - Rota1','(Rota1)','America/Chicago','weekly','','','13:00:00','tuesday'); +INSERT INTO ext_schedules VALUES('6520320e-d58b-4ed3-b910-a14439e84d07-55b9bf1d-7964-4eca-aa5e-33c642175b4e','Chris Test Team_schedule - Rot1','(Rot1)','America/Los_Angeles','weekly','','','07:00:00','monday'); +INSERT INTO ext_schedules VALUES('791aa2c3-431b-4fb0-ae83-8d2814034098-0685bec4-5dd5-4a26-861d-3532166c2675','Vinny Test Team_schedule - First','(First)','America/Los_Angeles','daily','','','08:00:00','monday'); +INSERT INTO ext_schedules VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-2b3ba1f8-5df9-4af7-a1ac-73f90bd30b2d','AJ Team_schedule - Daytime rotation','(Daytime rotation)','America/Los_Angeles','weekly','','','07:00:00','monday'); +INSERT INTO ext_schedules VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-9b488cc6-efa0-44f3-a432-b913acab9147','AJ Team_schedule - Nighttime rotation','(Nighttime rotation)','America/Los_Angeles','daily','','','15:00:00','wednesday'); +INSERT INTO ext_schedules VALUES('95fd8385-3e98-4ebf-9fd5-5c949a91487d-51ae23a9-9bbe-4127-bfcf-5044e38411d4','noodlebrigade_schedule - Rot1','(Rot1)','America/Los_Angeles','weekly','','','08:00:00','monday'); +INSERT INTO ext_schedules VALUES('a9557dfb-2a79-4dbc-9ee9-f428f65015da-a8b3e583-f879-444a-824b-794fceff016f','krista-test-team_schedule - Rot1','(Rot1)','America/Los_Angeles','weekly','','','01:24:00','tuesday'); + +INSERT INTO ext_schedule_restrictions VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-2b3ba1f8-5df9-4af7-a1ac-73f90bd30b2d','0','08:00:00','monday','18:00:00','monday'); +INSERT INTO ext_schedule_restrictions VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-2b3ba1f8-5df9-4af7-a1ac-73f90bd30b2d','1','08:00:00','tuesday','18:00:00','tuesday'); +INSERT INTO ext_schedule_restrictions VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-2b3ba1f8-5df9-4af7-a1ac-73f90bd30b2d','2','08:00:00','wednesday','18:00:00','wednesday'); +INSERT INTO ext_schedule_restrictions VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-2b3ba1f8-5df9-4af7-a1ac-73f90bd30b2d','3','08:00:00','thursday','18:00:00','thursday'); +INSERT INTO ext_schedule_restrictions VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-2b3ba1f8-5df9-4af7-a1ac-73f90bd30b2d','4','08:00:00','friday','18:00:00','friday'); +INSERT INTO ext_schedule_restrictions VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-9b488cc6-efa0-44f3-a432-b913acab9147','0','18:00:00','sunday','08:00:00','monday'); +INSERT INTO ext_schedule_restrictions VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-9b488cc6-efa0-44f3-a432-b913acab9147','1','18:00:00','monday','08:00:00','tuesday'); +INSERT INTO ext_schedule_restrictions VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-9b488cc6-efa0-44f3-a432-b913acab9147','2','18:00:00','tuesday','08:00:00','wednesday'); +INSERT INTO ext_schedule_restrictions VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-9b488cc6-efa0-44f3-a432-b913acab9147','3','18:00:00','wednesday','08:00:00','thursday'); +INSERT INTO ext_schedule_restrictions VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-9b488cc6-efa0-44f3-a432-b913acab9147','4','18:00:00','thursday','08:00:00','friday'); +INSERT INTO ext_schedule_restrictions VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-9b488cc6-efa0-44f3-a432-b913acab9147','5','18:00:00','friday','08:00:00','saturday'); +INSERT INTO ext_schedule_restrictions VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-9b488cc6-efa0-44f3-a432-b913acab9147','6','18:00:00','saturday','08:00:00','sunday'); + +INSERT INTO ext_schedule_teams VALUES('3fee43f2-02da-49be-ab50-c88ed13aecc3-b1b5f7f6-728b-47bd-af02-c3e1c33bf219','b7acbc33-9853-4150-8a4b-10156d9408c8'); +INSERT INTO ext_schedule_teams VALUES('6520320e-d58b-4ed3-b910-a14439e84d07-55b9bf1d-7964-4eca-aa5e-33c642175b4e','d8ff49ac-9df0-4c08-b8c9-1d3b0b24e9cc'); +INSERT INTO ext_schedule_teams VALUES('791aa2c3-431b-4fb0-ae83-8d2814034098-0685bec4-5dd5-4a26-861d-3532166c2675','017e4326-abdf-4cd9-8cad-5f23bd7f4753'); +INSERT INTO ext_schedule_teams VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-2b3ba1f8-5df9-4af7-a1ac-73f90bd30b2d','946bf740-0497-4d5d-b31f-23a6e55a2719'); +INSERT INTO ext_schedule_teams VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-9b488cc6-efa0-44f3-a432-b913acab9147','946bf740-0497-4d5d-b31f-23a6e55a2719'); +INSERT INTO ext_schedule_teams VALUES('95fd8385-3e98-4ebf-9fd5-5c949a91487d-51ae23a9-9bbe-4127-bfcf-5044e38411d4','e3436ab1-7547-4a47-a02a-36fee3dc91f9'); +INSERT INTO ext_schedule_teams VALUES('a9557dfb-2a79-4dbc-9ee9-f428f65015da-a8b3e583-f879-444a-824b-794fceff016f','ff71fe69-ecd9-4621-82f7-6d290e6c3ae0'); + +INSERT INTO ext_schedule_members VALUES('3fee43f2-02da-49be-ab50-c88ed13aecc3-b1b5f7f6-728b-47bd-af02-c3e1c33bf219','e0a51be7-3c7e-407f-8678-292ab421f55f'); +INSERT INTO ext_schedule_members VALUES('57c134f4-adeb-41f2-990b-8eebe7bcfcf2-cf71a41b-3261-4f0b-93ed-5a1d1c583db8','9253cf00-6195-4123-a9a6-f9f1e25718d8'); +INSERT INTO ext_schedule_members VALUES('6520320e-d58b-4ed3-b910-a14439e84d07-55b9bf1d-7964-4eca-aa5e-33c642175b4e','e0a51be7-3c7e-407f-8678-292ab421f55f'); +INSERT INTO ext_schedule_members VALUES('791aa2c3-431b-4fb0-ae83-8d2814034098-0685bec4-5dd5-4a26-861d-3532166c2675','407ab11f-bf99-4427-b8a1-5d0032f520be'); +INSERT INTO ext_schedule_members VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-2b3ba1f8-5df9-4af7-a1ac-73f90bd30b2d','9253cf00-6195-4123-a9a6-f9f1e25718d8'); +INSERT INTO ext_schedule_members VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-2b3ba1f8-5df9-4af7-a1ac-73f90bd30b2d','1dc37638-ab52-44f3-848e-a16bcc584fb7'); +INSERT INTO ext_schedule_members VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-2b3ba1f8-5df9-4af7-a1ac-73f90bd30b2d','e94e17aa-418c-44f7-8e47-1eaebf6b5343'); +INSERT INTO ext_schedule_members VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-2b3ba1f8-5df9-4af7-a1ac-73f90bd30b2d','e0a51be7-3c7e-407f-8678-292ab421f55f'); +INSERT INTO ext_schedule_members VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-9b488cc6-efa0-44f3-a432-b913acab9147','9253cf00-6195-4123-a9a6-f9f1e25718d8'); +INSERT INTO ext_schedule_members VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-9b488cc6-efa0-44f3-a432-b913acab9147','1dc37638-ab52-44f3-848e-a16bcc584fb7'); +INSERT INTO ext_schedule_members VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-9b488cc6-efa0-44f3-a432-b913acab9147','e94e17aa-418c-44f7-8e47-1eaebf6b5343'); +INSERT INTO ext_schedule_members VALUES('8ab5a183-8ef5-47db-9de0-56663cfbae7c-9b488cc6-efa0-44f3-a432-b913acab9147','e0a51be7-3c7e-407f-8678-292ab421f55f'); +INSERT INTO ext_schedule_members VALUES('95fd8385-3e98-4ebf-9fd5-5c949a91487d-51ae23a9-9bbe-4127-bfcf-5044e38411d4','d68757c4-5eec-4560-8c5b-91c463f87dd8'); +INSERT INTO ext_schedule_members VALUES('a9557dfb-2a79-4dbc-9ee9-f428f65015da-a8b3e583-f879-444a-824b-794fceff016f','9253cf00-6195-4123-a9a6-f9f1e25718d8'); diff --git a/tfrender/tfrender.go b/tfrender/tfrender.go index 96ec5b5..fec6b04 100644 --- a/tfrender/tfrender.go +++ b/tfrender/tfrender.go @@ -29,7 +29,7 @@ type TFRender struct { func fhProviderVersion() string { bi, ok := debug.ReadBuildInfo() if !ok { - return ">= 0.7.1" + return ">= 0.8.0" } // Recommend version which is used in the migration tool @@ -46,7 +46,7 @@ func fhProviderVersion() string { } } - return ">= 0.7.1" + return ">= 0.8.0" } func New(dir string, name string) (*TFRender, error) { diff --git a/tfrender/tfrender_opsgenie_test.go b/tfrender/tfrender_opsgenie_test.go new file mode 100644 index 0000000..3e40786 --- /dev/null +++ b/tfrender/tfrender_opsgenie_test.go @@ -0,0 +1,35 @@ +package tfrender_test + +import ( + "os" + "strings" + "testing" + + "github.com/firehydrant/signals-migrator/store" + "gotest.tools/golden" +) + +func TestRenderOpsgenieSample(t *testing.T) { + ctx, tfr := tfrInit(t) + + seed, err := os.ReadFile("testdata/opsgenie_seed.sql") + if err != nil { + t.Fatal(err) + } + + sql := strings.TrimSpace(string(seed)) + + if _, err := store.FromContext(ctx).ExecContext(ctx, sql); err != nil { + t.Fatal(err) + } + if err := tfr.Write(ctx); err != nil { + t.Fatal(err) + } + + content, err := os.ReadFile(tfr.Filepath()) + if err != nil { + t.Fatal(err) + } + + golden.Assert(t, string(content), goldenFile(tfr.Filename())) +}