diff --git a/src/dispatch/database/revisions/tenant/versions/2023-09-05_1dd78f49e303.py b/src/dispatch/database/revisions/tenant/versions/2023-09-05_1dd78f49e303.py deleted file mode 100644 index f9563d43f66a..000000000000 --- a/src/dispatch/database/revisions/tenant/versions/2023-09-05_1dd78f49e303.py +++ /dev/null @@ -1,30 +0,0 @@ -"""Adds an environment variable for spliting up test and prod signals. - -Revision ID: 1dd78f49e303 -Revises: 4e57f5b1f3f3 -Create Date: 2023-09-05 09:57:18.160124 - -""" -from alembic import op -import sqlalchemy as sa - -# revision identifiers, used by Alembic. -revision = "1dd78f49e303" -down_revision = "4e57f5b1f3f3" -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column("signal", sa.Column("environment", sa.String(), nullable=True, default="prod")) - op.execute("UPDATE signal SET environment = 'prod'") - op.alter_column("signal", "environment", nullable=False) - - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_column("signal", "environment") - # ### end Alembic commands ### diff --git a/src/dispatch/signal/flows.py b/src/dispatch/signal/flows.py index 12d5fdd20a35..373ec4efa85f 100644 --- a/src/dispatch/signal/flows.py +++ b/src/dispatch/signal/flows.py @@ -19,12 +19,7 @@ from dispatch.signal import flows as signal_flows from dispatch.signal import service as signal_service from dispatch.signal.enums import SignalEngagementStatus -from dispatch.signal.models import ( - SignalFilterAction, - SignalInstance, - SignalInstanceCreate, - SignalEnvironment, -) +from dispatch.signal.models import SignalFilterAction, SignalInstance, SignalInstanceCreate from dispatch.workflow import flows as workflow_flows from dispatch.entity_type.models import EntityScopeEnum @@ -180,7 +175,6 @@ def create_signal_instance( signal = signal_service.get_by_variant_or_external_id( db_session=db_session, project_id=project.id, - environment=signal_instance_data.get("environment", SignalEnvironment.PROD), external_id=signal_instance_data.get("id"), variant=signal_instance_data["variant"], ) diff --git a/src/dispatch/signal/models.py b/src/dispatch/signal/models.py index e7d37e5496e4..23dfd127e490 100644 --- a/src/dispatch/signal/models.py +++ b/src/dispatch/signal/models.py @@ -129,11 +129,6 @@ class SignalFilterAction(DispatchEnum): none = "none" -class SignalEnvironment(DispatchEnum): - PROD = "prod" - TEST = "test" - - class Signal(Base, TimeStampMixin, ProjectMixin): id = Column(Integer, primary_key=True) name = Column(String) @@ -146,7 +141,6 @@ class Signal(Base, TimeStampMixin, ProjectMixin): variant = Column(String) loopin_signal_identity = Column(Boolean, default=False) enabled = Column(Boolean, default=False) - environment = Column(String, default=SignalEnvironment.PROD) case_type_id = Column(Integer, ForeignKey(CaseType.id)) case_type = relationship("CaseType", backref="signals") case_priority_id = Column(Integer, ForeignKey(CasePriority.id)) @@ -310,7 +304,6 @@ class SignalBase(DispatchBase): enabled: Optional[bool] = False external_url: Optional[str] create_case: Optional[bool] = True - environment: Optional[SignalEnvironment] = SignalEnvironment.PROD oncall_service: Optional[Service] source: Optional[SourceBase] created_at: Optional[datetime] = None @@ -337,7 +330,6 @@ class SignalUpdate(SignalBase): class SignalRead(SignalBase): id: PrimaryKey engagements: Optional[List[SignalEngagementRead]] = [] - environment: Optional[SignalEnvironment] = SignalEnvironment.PROD entity_types: Optional[List[EntityTypeRead]] = [] filters: Optional[List[SignalFilterRead]] = [] workflows: Optional[List[WorkflowRead]] = [] @@ -352,7 +344,6 @@ class SignalReadMinimal(DispatchBase): description: Optional[str] variant: Optional[str] external_id: str - environment: Optional[SignalEnvironment] = SignalEnvironment.PROD enabled: Optional[bool] = False external_url: Optional[str] create_case: Optional[bool] = True diff --git a/src/dispatch/signal/service.py b/src/dispatch/signal/service.py index f207ecc0b4d8..f445763af842 100644 --- a/src/dispatch/signal/service.py +++ b/src/dispatch/signal/service.py @@ -225,31 +225,18 @@ def get_by_primary_or_external_id( def get_by_variant_or_external_id( - *, - db_session: Session, - project_id: int, - environment: str, - external_id: str = None, - variant: str = None, + *, db_session: Session, project_id: int, external_id: str = None, variant: str = None ) -> Optional[Signal]: """Gets a signal it's external id (and variant if supplied).""" if variant: return ( db_session.query(Signal) - .filter( - Signal.project_id == project_id, - Signal.environment == environment, - Signal.variant == variant, - ) + .filter(Signal.project_id == project_id, Signal.variant == variant) .one_or_none() ) return ( db_session.query(Signal) - .filter( - Signal.project_id == project_id, - Signal.environment == environment, - Signal.external_id == external_id, - ) + .filter(Signal.project_id == project_id, Signal.external_id == external_id) .one_or_none() ) diff --git a/src/dispatch/signal/views.py b/src/dispatch/signal/views.py index 6234ec65f849..b83aee39ab25 100644 --- a/src/dispatch/signal/views.py +++ b/src/dispatch/signal/views.py @@ -1,11 +1,11 @@ import logging from typing import Union -from fastapi import APIRouter, BackgroundTasks, Depends, HTTPException, Request, Response, status +from fastapi import APIRouter, BackgroundTasks, HTTPException, Request, Response, status, Depends from pydantic.error_wrappers import ErrorWrapper, ValidationError from sqlalchemy.exc import IntegrityError -from dispatch.auth.permissions import PermissionsDependency, SensitiveProjectActionPermission +from dispatch.auth.permissions import SensitiveProjectActionPermission, PermissionsDependency from dispatch.auth.service import CurrentUser from dispatch.database.core import DbSession from dispatch.database.service import CommonParameters, search_filter_sort_paginate @@ -15,13 +15,11 @@ from dispatch.rate_limiter import limiter from dispatch.signal import service as signal_service -from .flows import signal_instance_update_flow from .models import ( SignalCreate, SignalEngagementCreate, SignalEngagementPagination, SignalEngagementRead, - SignalEnvironment, SignalFilterCreate, SignalFilterPagination, SignalFilterRead, @@ -46,6 +44,8 @@ update_signal_filter, ) +from .flows import signal_instance_update_flow + router = APIRouter() log = logging.getLogger(__name__) @@ -75,14 +75,12 @@ def create_signal_instance( if not signal_instance_in.signal: external_id = signal_instance_in.raw.get("externalId") variant = signal_instance_in.raw.get("variant") - environment = signal_instance_in.raw.get("environment", SignalEnvironment.PROD) if external_id or variant: signal = signal_service.get_by_variant_or_external_id( db_session=db_session, project_id=project.id, external_id=external_id, - environment=environment, variant=variant, ) diff --git a/tests/factories.py b/tests/factories.py index 2db070a9bd54..bb39718abbc6 100644 --- a/tests/factories.py +++ b/tests/factories.py @@ -817,7 +817,6 @@ class SignalFactory(BaseFactory): description = "Test Description" external_url = "https://test.com" external_id = "1234" - environment = "test" variant = "Test Variant" enabled = True loopin_signal_identity = False diff --git a/tests/signal/test_signal_flow.py b/tests/signal/test_signal_flow.py index 40642f89b765..f4612bbde555 100644 --- a/tests/signal/test_signal_flow.py +++ b/tests/signal/test_signal_flow.py @@ -12,7 +12,7 @@ def test_create_signal_instance(session, signal, case_severity, case_priority, u case_severity.default = True case_severity.project_id = signal.project_id - instance_data = {"variant": signal.variant, "environment": "test"} + instance_data = {"variant": signal.variant} assert create_signal_instance( db_session=session, @@ -31,25 +31,6 @@ def test_create_signal_instance_no_variant(session, signal, case_severity, case_ case_severity.default = True case_severity.project_id = signal.project_id - instance_data = {"variant": "unknown", "environment": "test"} - with pytest.raises(DispatchException): - create_signal_instance( - db_session=session, - project=signal.project, - signal_instance_data=instance_data, - current_user=user, - ) - - -def test_create_signal_instance_no_environment(session, signal, case_severity, case_priority, user): - from dispatch.signal.flows import create_signal_instance - - case_priority.default = True - case_priority.project_id = signal.project_id - - case_severity.default = True - case_severity.project_id = signal.project_id - instance_data = {"variant": "unknown"} with pytest.raises(DispatchException): create_signal_instance( @@ -70,7 +51,7 @@ def test_create_signal_instance_not_enabled(session, signal, case_severity, case case_severity.project_id = signal.project_id signal.enabled = False - instance_data = {"variant": signal.variant, "environment": "test"} + instance_data = {"variant": signal.variant} with pytest.raises(DispatchException): create_signal_instance( db_session=session,