Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
31 changes: 20 additions & 11 deletions datadog_sync/model/team_memberships.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,22 +150,31 @@ async def update_resource(self, _id: str, resource: Dict) -> Tuple[str, Dict]:

async def delete_resource(self, _id: str) -> None:
destination_client = self.config.destination_client
self.destination_team_memberships = await self.get_resources(destination_client)

# check the destination for a matching resource
# Get the state directly without refetching resources to avoid race conditions
# during concurrent cleanups where teams might already be deleted
state = self.config.state.destination[self.resource_type].get(_id, None)
existing = self._get_existing_team_membership(state)

# skip if the membership isn't found at the destination
if not existing:
# skip if the membership isn't found in state
if not state:
raise SkipResource(_id, self.resource_type, f"resource {_id} not found for deletion")

# delete the matching resource
team_id = existing["relationships"]["team"]["data"]["id"]
user_id = existing["relationships"]["user"]["data"]["id"]
await destination_client.delete(
self.team_memberships_path.format(team_id) + f"/{user_id}",
)
# Use team_id and user_id directly from state to avoid race conditions
team_id = state["relationships"]["team"]["data"]["id"]
user_id = state["relationships"]["user"]["data"]["id"]

try:
await destination_client.delete(
self.team_memberships_path.format(team_id) + f"/{user_id}",
)
except Exception as e:
# If we get a 404, the membership or team may have already been deleted
# This can happen during cleanup when teams are deleted concurrently
if "404" in str(e):
raise SkipResource(
_id, self.resource_type, f"resource {_id} or its team not found (may have been already deleted)"
)
raise

def connect_id(self, key: str, r_obj: Dict, resource_to_connect: str) -> Optional[List[str]]:
failed_connections = []
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:40:18.790823-05:00
2025-11-26T14:29:28.806831-05:00
3,627 changes: 1,900 additions & 1,727 deletions tests/integration/cassettes/test_cli/TestCli.test_cleanup.yaml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:39:41.254732-05:00
2025-11-26T14:28:50.396758-05:00
22,016 changes: 12,314 additions & 9,702 deletions tests/integration/cassettes/test_cli/TestCli.test_import.yaml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:39:56.095639-05:00
2025-11-26T14:29:05.284050-05:00

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:40:10.917756-05:00
2025-11-26T14:29:20.165545-05:00
51,930 changes: 25,361 additions & 26,569 deletions tests/integration/cassettes/test_cli/TestCli.test_migrate.yaml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:40:03.947644-05:00
2025-11-26T14:29:13.146249-05:00

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:39:45.609370-05:00
2025-11-26T14:28:54.901646-05:00
45,013 changes: 22,491 additions & 22,522 deletions tests/integration/cassettes/test_cli/TestCli.test_sync.yaml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:39:57.839253-05:00
2025-11-26T14:29:07.101721-05:00
36,325 changes: 18,146 additions & 18,179 deletions tests/integration/cassettes/test_cli/TestCli.test_sync_without_verify_ddr_status.yaml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:39:54.007727-05:00
2025-11-26T14:29:03.256114-05:00
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:31:26.346388-05:00
2025-11-26T14:20:03.620418-05:00

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:31:27.837021-05:00
2025-11-26T14:20:05.204535-05:00

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:31:17.330084-05:00
2025-11-26T14:19:54.382862-05:00

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:31:30.922135-05:00
2025-11-26T14:20:08.356803-05:00

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:31:19.580087-05:00
2025-11-26T14:19:56.693396-05:00

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:31:33.571689-05:00
2025-11-26T14:20:11.014936-05:00

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:31:22.892227-05:00
2025-11-26T14:19:59.917327-05:00

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:31:36.947818-05:00
2025-11-26T14:20:14.431533-05:00

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:31:49.593577-05:00
2025-11-26T14:20:27.687521-05:00

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025-11-11T09:31:50.607125-05:00
2025-11-26T14:20:28.722680-05:00
Loading
Loading