Skip to content

Commit f1950d2

Browse files
committed
ref(uptime): Read uptime_status from uptime_subscription
1 parent 7d9c0d2 commit f1950d2

File tree

10 files changed

+20
-30
lines changed

10 files changed

+20
-30
lines changed

src/sentry/incidents/endpoints/organization_alert_rule_index.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,10 @@ def get(self, request: Request, organization) -> Response:
325325
incident_status=Case(
326326
# If an uptime monitor is failing we want to treat it the same as if an alert is failing, so sort
327327
# by the critical status
328-
When(uptime_status=UptimeStatus.FAILED, then=IncidentStatus.CRITICAL.value),
328+
When(
329+
uptime_subscription__uptime_status=UptimeStatus.FAILED,
330+
then=IncidentStatus.CRITICAL.value,
331+
),
329332
default=-2,
330333
)
331334
)

src/sentry/testutils/factories.py

-4
Original file line numberDiff line numberDiff line change
@@ -2046,8 +2046,6 @@ def create_project_uptime_subscription(
20462046
mode: ProjectUptimeSubscriptionMode,
20472047
name: str | None,
20482048
owner: Actor | None,
2049-
uptime_status: UptimeStatus,
2050-
uptime_status_update_date: datetime,
20512049
id: int | None,
20522050
):
20532051
if name is None:
@@ -2069,8 +2067,6 @@ def create_project_uptime_subscription(
20692067
name=name,
20702068
owner_team_id=owner_team_id,
20712069
owner_user_id=owner_user_id,
2072-
uptime_status=uptime_status,
2073-
uptime_status_update_date=uptime_status_update_date,
20742070
pk=id,
20752071
)
20762072

src/sentry/testutils/fixtures.py

-4
Original file line numberDiff line numberDiff line change
@@ -767,8 +767,6 @@ def create_project_uptime_subscription(
767767
project = self.project
768768
if env is None:
769769
env = self.environment
770-
if uptime_status_update_date is None:
771-
uptime_status_update_date = timezone.now()
772770

773771
if uptime_subscription is None:
774772
uptime_subscription = self.create_uptime_subscription(
@@ -783,8 +781,6 @@ def create_project_uptime_subscription(
783781
mode,
784782
name,
785783
Actor.from_object(owner) if owner else None,
786-
uptime_status,
787-
uptime_status_update_date,
788784
id,
789785
)
790786
# TODO(epurkhiser): Dual create a detector as well, can be removed

src/sentry/uptime/consumers/results_consumer.py

+8-5
Original file line numberDiff line numberDiff line change
@@ -186,10 +186,12 @@ def produce_snuba_uptime_result(
186186
result: The check result to be sent to Snuba
187187
"""
188188
try:
189+
uptime_subscription = project_subscription.uptime_subscription
189190
project = project_subscription.project
191+
190192
retention_days = quotas.backend.get_event_retention(organization=project.organization) or 90
191193

192-
if project_subscription.uptime_status == UptimeStatus.FAILED:
194+
if uptime_subscription.uptime_status == UptimeStatus.FAILED:
193195
incident_status = IncidentStatus.IN_INCIDENT
194196
else:
195197
incident_status = IncidentStatus.NO_INCIDENT
@@ -300,7 +302,8 @@ def handle_active_result(
300302
result: CheckResult,
301303
metric_tags: dict[str, str],
302304
):
303-
uptime_status = project_subscription.uptime_status
305+
uptime_subscription = project_subscription.uptime_subscription
306+
uptime_status = uptime_subscription.uptime_status
304307
result_status = result["status"]
305308

306309
redis = _get_cluster()
@@ -322,7 +325,7 @@ def handle_active_result(
322325
restricted_host_provider_ids = options.get(
323326
"uptime.restrict-issue-creation-by-hosting-provider-id"
324327
)
325-
host_provider_id = project_subscription.uptime_subscription.host_provider_id
328+
host_provider_id = uptime_subscription.host_provider_id
326329
issue_creation_restricted_by_provider = host_provider_id in restricted_host_provider_ids
327330

328331
if issue_creation_restricted_by_provider:
@@ -346,7 +349,7 @@ def handle_active_result(
346349
"uptime_active_sent_occurrence",
347350
extra={
348351
"project_id": project_subscription.project_id,
349-
"url": project_subscription.uptime_subscription.url,
352+
"url": uptime_subscription.url,
350353
**result,
351354
},
352355
)
@@ -378,7 +381,7 @@ def handle_active_result(
378381
"uptime_active_resolved",
379382
extra={
380383
"project_id": project_subscription.project_id,
381-
"url": project_subscription.uptime_subscription.url,
384+
"url": uptime_subscription.url,
382385
**result,
383386
},
384387
)

src/sentry/uptime/endpoints/serializers.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def serialize(
6464
"environment": obj.environment.name if obj.environment else None,
6565
"name": obj.name or f"Uptime Monitoring for {obj.uptime_subscription.url}",
6666
"status": obj.get_status_display(),
67-
"uptimeStatus": obj.uptime_status,
67+
"uptimeStatus": obj.uptime_subscription.uptime_status,
6868
"mode": obj.mode,
6969
"url": obj.uptime_subscription.url,
7070
"headers": obj.uptime_subscription.headers,

src/sentry/uptime/subscriptions/subscriptions.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,6 @@ def create_project_uptime_subscription(
231231
name=name,
232232
owner_user_id=owner_user_id,
233233
owner_team_id=owner_team_id,
234-
uptime_status=uptime_status,
235234
)
236235
detector = create_detector_from_project_subscription(uptime_monitor)
237236

@@ -345,15 +344,15 @@ def disable_uptime_detector(detector: Detector):
345344
also be disabled.
346345
"""
347346
uptime_monitor = get_project_subscription(detector)
347+
uptime_subscription = uptime_monitor.uptime_subscription
348+
348349
if uptime_monitor.status == ObjectStatus.DISABLED:
349350
return
350351

351-
if uptime_monitor.uptime_status == UptimeStatus.FAILED:
352+
if uptime_subscription.uptime_status == UptimeStatus.FAILED:
352353
# Resolve the issue so that we don't see it in the ui anymore
353354
resolve_uptime_issue(uptime_monitor)
354355

355-
uptime_subscription = uptime_monitor.uptime_subscription
356-
357356
uptime_monitor.update(
358357
status=ObjectStatus.DISABLED,
359358
# We set the status back to ok here so that if we re-enable we'll start

tests/sentry/uptime/consumers/test_results_consumer.py

-6
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,6 @@ def test(self):
156156
assignee = group.get_assignee()
157157
assert assignee and (assignee.id == self.user.id)
158158
self.project_subscription.refresh_from_db()
159-
assert self.project_subscription.uptime_status == UptimeStatus.FAILED
160159
assert self.project_subscription.uptime_subscription.uptime_status == UptimeStatus.FAILED
161160

162161
def test_does_nothing_when_missing_project_subscription(self):
@@ -221,7 +220,6 @@ def test_restricted_host_provider_id(self):
221220

222221
# subscription status is still updated
223222
self.project_subscription.refresh_from_db()
224-
assert self.project_subscription.uptime_status == UptimeStatus.FAILED
225223
assert self.project_subscription.uptime_subscription.uptime_status == UptimeStatus.FAILED
226224

227225
def test_reset_fail_count(self):
@@ -318,7 +316,6 @@ def test_reset_fail_count(self):
318316
with pytest.raises(Group.DoesNotExist):
319317
Group.objects.get(grouphash__hash=hashed_fingerprint)
320318
self.project_subscription.refresh_from_db()
321-
assert self.project_subscription.uptime_status == UptimeStatus.OK
322319
assert self.project_subscription.uptime_subscription.uptime_status == UptimeStatus.OK
323320

324321
def test_no_create_issues_feature(self):
@@ -351,7 +348,6 @@ def test_no_create_issues_feature(self):
351348
with pytest.raises(Group.DoesNotExist):
352349
Group.objects.get(grouphash__hash=hashed_fingerprint)
353350
self.project_subscription.refresh_from_db()
354-
assert self.project_subscription.uptime_status == UptimeStatus.FAILED
355351
assert self.project_subscription.uptime_subscription.uptime_status == UptimeStatus.FAILED
356352

357353
def test_resolve(self):
@@ -412,7 +408,6 @@ def test_resolve(self):
412408
assert group.issue_type == UptimeDomainCheckFailure
413409
assert group.status == GroupStatus.UNRESOLVED
414410
self.project_subscription.refresh_from_db()
415-
assert self.project_subscription.uptime_status == UptimeStatus.FAILED
416411
assert self.project_subscription.uptime_subscription.uptime_status == UptimeStatus.FAILED
417412

418413
result = self.create_uptime_result(
@@ -443,7 +438,6 @@ def test_resolve(self):
443438
group.refresh_from_db()
444439
assert group.status == GroupStatus.RESOLVED
445440
self.project_subscription.refresh_from_db()
446-
assert self.project_subscription.uptime_status == UptimeStatus.OK
447441
assert self.project_subscription.uptime_subscription.uptime_status == UptimeStatus.OK
448442

449443
def test_no_subscription(self):

tests/sentry/uptime/endpoints/test_serializers.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def test(self):
1313
"name": uptime_monitor.name,
1414
"environment": uptime_monitor.environment.name if uptime_monitor.environment else None,
1515
"status": uptime_monitor.get_status_display(),
16-
"uptimeStatus": uptime_monitor.uptime_status,
16+
"uptimeStatus": uptime_monitor.uptime_subscription.uptime_status,
1717
"mode": uptime_monitor.mode,
1818
"url": uptime_monitor.uptime_subscription.url,
1919
"method": uptime_monitor.uptime_subscription.method,
@@ -38,7 +38,7 @@ def test_default_name(self):
3838
"name": f"Uptime Monitoring for {uptime_monitor.uptime_subscription.url}",
3939
"environment": uptime_monitor.environment.name if uptime_monitor.environment else None,
4040
"status": uptime_monitor.get_status_display(),
41-
"uptimeStatus": uptime_monitor.uptime_status,
41+
"uptimeStatus": uptime_monitor.uptime_subscription.uptime_status,
4242
"mode": uptime_monitor.mode,
4343
"url": uptime_monitor.uptime_subscription.url,
4444
"method": uptime_monitor.uptime_subscription.method,
@@ -60,7 +60,7 @@ def test_owner(self):
6060
"name": uptime_monitor.name,
6161
"environment": uptime_monitor.environment.name if uptime_monitor.environment else None,
6262
"status": uptime_monitor.get_status_display(),
63-
"uptimeStatus": uptime_monitor.uptime_status,
63+
"uptimeStatus": uptime_monitor.uptime_subscription.uptime_status,
6464
"mode": uptime_monitor.mode,
6565
"url": uptime_monitor.uptime_subscription.url,
6666
"method": uptime_monitor.uptime_subscription.method,

tests/sentry/uptime/subscriptions/test_subscriptions.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -759,7 +759,7 @@ def test_disable_failed(self, mock_remove_seat):
759759

760760
proj_sub.refresh_from_db()
761761
assert proj_sub.status == ObjectStatus.DISABLED
762-
assert proj_sub.uptime_status == UptimeStatus.OK
762+
assert proj_sub.uptime_subscription.uptime_status == UptimeStatus.OK
763763
assert proj_sub.uptime_subscription.status == UptimeSubscription.Status.DISABLED.value
764764
mock_remove_seat.assert_called_with(DataCategory.UPTIME, proj_sub)
765765

tests/sentry/uptime/subscriptions/test_tasks.py

-1
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,6 @@ def run_test(
523523

524524
proj_sub.refresh_from_db()
525525
assert proj_sub.status == expected_status
526-
assert proj_sub.uptime_status == expected_uptime_status
527526
assert proj_sub.uptime_subscription.uptime_status == expected_uptime_status
528527

529528
detector = get_detector(proj_sub.uptime_subscription)

0 commit comments

Comments
 (0)