-
Notifications
You must be signed in to change notification settings - Fork 221
Description
Hi all, I discovered something rather un-smooth and wanted to share. Maybe the fix is straight-forward for you.
What I report makes totally sense of course. Yet the error handling of the provider or the API is very misleading.
Terraform Version
❯ terraform version
Terraform v0.14.4
+ provider registry.terraform.io/pagerduty/pagerduty v1.8.0
Affected Resource(s)
- pagerduty_team_membership
- pagerduty_schedule
Terraform Configuration Files
Before
resource "pagerduty_team_membership" "TMTMTM" {
user_id = data.pagerduty_user.UUUU.id
team_id = pagerduty_team.TTTT.id
role = "manager"
}
resource "pagerduty_schedule" "EEE" {
name = format("%s-%s_Schedule_Eng1", local.organisation, local.teamT)
time_zone = "Europe/Berlin"
description = local.managedByTerraForm
layer {
name = "engineer1"
start = "2021-01-18T17:30:00+01:00"
rotation_virtual_start = "2021-01-18T17:30:00+01:00"
rotation_turn_length_seconds = 604800
users = [
data.pagerduty_user.IIIII.id,
data.pagerduty_user.UUUU.id,
data.pagerduty_user.LLLLL.id,
data.pagerduty_user.KKKK.id
]
}
}
After
Before
resource "pagerduty_team_membership" "TMTMTM" {
user_id = data.pagerduty_user.A_NEW_USER_OOOOO.id # <----------- Note, user changed
team_id = pagerduty_team.TTTT.id
role = "manager"
}
resource "pagerduty_schedule" "EEE" {
name = format("%s-%s_Schedule_Eng1", local.organisation, local.teamT)
time_zone = "Europe/Berlin"
description = local.managedByTerraForm
layer {
name = "engineer1"
start = "2021-01-18T17:30:00+01:00"
rotation_virtual_start = "2021-01-18T17:30:00+01:00"
rotation_turn_length_seconds = 604800
users = [
data.pagerduty_user.IIIII.id,
data.pagerduty_user.UUUU.id,
data.pagerduty_user.LLLLL.id,
data.pagerduty_user.KKKK.id
]
}
}
Panic Output
To reflect the change above TF must replace:
# pagerduty_team_membership.TMTMTM must be replaced
-/+ resource "pagerduty_team_membership" "TMTMTM" {
~ id = "PYQV0AO:P1V3E98" -> (known after apply)
~ user_id = "PYQV0AO" -> "P261LLO" # forces replacement
# (2 unchanged attributes hidden)
}
.... yes ....
pagerduty_team_membership.TMTMTM: Destroying... [id=PYQV0AO:P1V3E98]
pagerduty_team_membership.TMTMTM: Still destroying... [id=PYQV0AO:P1V3E98, 10s elapsed]
pagerduty_team_membership.TMTMTM: Still destroying... [id=PYQV0AO:P1V3E98, 20s elapsed]
pagerduty_team_membership.TMTMTM: Still destroying... [id=PYQV0AO:P1V3E98, 30s elapsed]
pagerduty_team_membership.TMTMTM: Still destroying... [id=PYQV0AO:P1V3E98, 40s elapsed]
pagerduty_team_membership.TMTMTM: Still destroying... [id=PYQV0AO:P1V3E98, 50s elapsed]
pagerduty_team_membership.TMTMTM: Still destroying... [id=PYQV0AO:P1V3E98, 1m0s elapsed]
pagerduty_team_membership.TMTMTM: Still destroying... [id=PYQV0AO:P1V3E98, 1m10s elapsed]
pagerduty_team_membership.TMTMTM: Still destroying... [id=PYQV0AO:P1V3E98, 1m20s elapsed]
^CInterrupt received.
Please wait for Terraform to exit or data loss may occur.
Gracefully shutting down...
Stopping operation...
pagerduty_team_membership.TMTMTM: Still destroying... [id=PYQV0AO:P1V3E98, 1m30s elapsed]
pagerduty_team_membership.TMTMTM: Still destroying... [id=PYQV0AO:P1V3E98, 1m40s elapsed]
pagerduty_team_membership.TMTMTM: Still destroying... [id=PYQV0AO:P1V3E98, 1m50s elapsed]
pagerduty_team_membership.TMTMTM: Still destroying... [id=PYQV0AO:P1V3E98, 2m0s elapsed]
In words
I wanted to replace one user with another. For that I just changed the team membership (replace one member with another).
But, in the schedule the old member was still used.
Expected Behavior
The API/Provider should output, that the object can not be destroyed because it is referenced in a schedule, or even in which schedule.
Can not destroy pagerduty_team_membership.TMTMTM, entity is in use in schedule pagerduty_schedule.EEE
Actual Behavior
See output. Destroy ends in an endless position (or at least I did not wait long enough).
Steps to Reproduce
Described above.
Best regards, Dom