From 06833648929ad8d13b862c1560c52fb510134c4c Mon Sep 17 00:00:00 2001 From: David Whittaker Date: Wed, 7 May 2025 14:48:59 -0700 Subject: [PATCH 1/5] feat(db): adds user confirmation to database cli commands --- src/dispatch/cli.py | 70 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 57 insertions(+), 13 deletions(-) diff --git a/src/dispatch/cli.py b/src/dispatch/cli.py index 25c7693f5645..531363dced90 100644 --- a/src/dispatch/cli.py +++ b/src/dispatch/cli.py @@ -266,6 +266,44 @@ def dispatch_database(): pass +def prompt_for_confirmation(command: str) -> bool: + """Prompts the user for database details.""" + from dispatch.config import DATABASE_HOSTNAME, DATABASE_NAME + from sqlalchemy_utils import database_exists + + database_hostname = click.prompt( + f"Please enter the database hostname (env = {DATABASE_HOSTNAME})" + ) + if database_hostname != DATABASE_HOSTNAME: + click.secho( + f"ERROR: You cannot {command} a database with a different hostname.", + fg="red", + ) + return False + if database_hostname != "localhost": + click.secho( + f"Warning: You are about to {command} a remote database.", + fg="yellow", + ) + database_name = click.prompt(f"Please enter the database name (env = {DATABASE_NAME})") + if database_name != DATABASE_NAME: + click.secho( + f"ERROR: You cannot {command} a database with a different name.", + fg="red", + ) + return False + sqlalchemy_database_uri = f"postgresql+psycopg2://{config._DATABASE_CREDENTIAL_USER}:{config._QUOTED_DATABASE_PASSWORD}@{database_hostname}:{config.DATABASE_PORT}/{database_name}" + + if database_exists(str(sqlalchemy_database_uri)): + if click.confirm( + f"Are you sure you want to {command} database: '{database_hostname}:{database_name}'?" + ): + return True + else: + click.secho(f"Database '{database_hostname}:{database_name}' does not exist!!!", fg="red") + return False + + @dispatch_database.command("init") def database_init(): """Initializes a new database.""" @@ -273,6 +311,10 @@ def database_init(): from .database.core import engine from .database.manage import init_database + if not prompt_for_confirmation("init"): + click.secho("Aborting database initialization.", fg="red") + return + init_database(engine) click.secho("Success.", fg="green") @@ -294,6 +336,10 @@ def restore_database(dump_file): DATABASE_PORT, ) + if not prompt_for_confirmation("restore"): + click.secho("Aborting database initialization.", fg="red") + return + username, password = str(DATABASE_CREDENTIALS).split(":") try: @@ -366,22 +412,20 @@ def dump_database(dump_file): @dispatch_database.command("drop") def drop_database(): """Drops all data in database.""" - from sqlalchemy_utils import database_exists, drop_database + from sqlalchemy_utils import drop_database - database_hostname = click.prompt( - f"Please enter the database hostname (env = {config.DATABASE_HOSTNAME})" + if not prompt_for_confirmation("drop"): + click.secho("Aborting database drop.", fg="red") + return + + sqlalchemy_database_uri = ( + f"postgresql+psycopg2://{config._DATABASE_CREDENTIAL_USER}:" + f"{config._QUOTED_DATABASE_PASSWORD}@{config.DATABASE_HOSTNAME}:" + f"{config.DATABASE_PORT}/{config.DATABASE_NAME}" ) - database_name = click.prompt(f"Please enter the database name (env = {config.DATABASE_NAME})") - sqlalchemy_database_uri = f"postgresql+psycopg2://{config._DATABASE_CREDENTIAL_USER}:{config._QUOTED_DATABASE_PASSWORD}@{database_hostname}:{config.DATABASE_PORT}/{database_name}" - if database_exists(str(sqlalchemy_database_uri)): - if click.confirm( - f"Are you sure you want to drop database: '{database_hostname}:{database_name}'?" - ): - drop_database(str(sqlalchemy_database_uri)) - click.secho("Success.", fg="green") - else: - click.secho(f"Database '{database_hostname}:{database_name}' does not exist!!!", fg="red") + drop_database(str(sqlalchemy_database_uri)) + click.secho("Success.", fg="green") @dispatch_database.command("upgrade") From 4e292a998d15102fef9aedc5d4679dcb210f09ee Mon Sep 17 00:00:00 2001 From: David Whittaker Date: Wed, 7 May 2025 14:54:01 -0700 Subject: [PATCH 2/5] fix to correct action --- src/dispatch/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dispatch/cli.py b/src/dispatch/cli.py index 531363dced90..b145c5a2f635 100644 --- a/src/dispatch/cli.py +++ b/src/dispatch/cli.py @@ -337,7 +337,7 @@ def restore_database(dump_file): ) if not prompt_for_confirmation("restore"): - click.secho("Aborting database initialization.", fg="red") + click.secho("Aborting database restore.", fg="red") return username, password = str(DATABASE_CREDENTIALS).split(":") From bb47963def67f98cbd8915cecbf970070c8172e8 Mon Sep 17 00:00:00 2001 From: David Whittaker Date: Sat, 10 May 2025 22:57:07 -0700 Subject: [PATCH 3/5] providing way for playwright to opt out of confirmation --- .github/workflows/playwright.yml | 2 +- src/dispatch/cli.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index 4247512649cf..b2d77f1c00fd 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -56,7 +56,7 @@ jobs: - name: Install playwright browsers run: npx playwright install --with-deps chromium - name: Setup sample database - run: dispatch database restore --dump-file data/dispatch-sample-data.dump && dispatch database upgrade + run: dispatch database restore --dump-file data/dispatch-sample-data.dump --skip-check && dispatch database upgrade - name: Run tests run: npx playwright test --project=chromium - uses: actions/upload-artifact@v4 diff --git a/src/dispatch/cli.py b/src/dispatch/cli.py index b145c5a2f635..e8fc869d9e4b 100644 --- a/src/dispatch/cli.py +++ b/src/dispatch/cli.py @@ -325,7 +325,8 @@ def database_init(): default="dispatch-backup.dump", help="Path to a PostgreSQL text format dump file.", ) -def restore_database(dump_file): +@click.option("--skip-check", is_flag=True, help="Skip confirmation check if flag is set.") +def restore_database(dump_file, skip_check): """Restores the database via psql.""" from sh import ErrorReturnCode_1, createdb, psql @@ -336,7 +337,7 @@ def restore_database(dump_file): DATABASE_PORT, ) - if not prompt_for_confirmation("restore"): + if not skip_check and not prompt_for_confirmation("restore"): click.secho("Aborting database restore.", fg="red") return From ea0520a1a9a5244243b277547e2f6c838f703d60 Mon Sep 17 00:00:00 2001 From: David Whittaker Date: Sun, 11 May 2025 15:25:23 -0700 Subject: [PATCH 4/5] updating database project with display_name --- data/dispatch-sample-data.dump | 175 +++++++++++++++++---------------- 1 file changed, 90 insertions(+), 85 deletions(-) diff --git a/data/dispatch-sample-data.dump b/data/dispatch-sample-data.dump index ebe439b5dd18..7be0bb5b5854 100644 --- a/data/dispatch-sample-data.dump +++ b/data/dispatch-sample-data.dump @@ -7863,7 +7863,7 @@ COPY dispatch_organization_default.assoc_team_contact_filters (team_contact_id, -- Data for Name: case; Type: TABLE DATA; Schema: dispatch_organization_default; Owner: postgres -- -COPY dispatch_organization_default."case" (id, name, title, description, resolution, status, visibility, reported_at, closed_at, search_vector, duplicate_id, project_id, updated_at, created_at, triage_at, escalated_at, tactical_group_id, case_document_id, related_id, case_type_id, case_severity_id, case_priority_id, participants_team, participants_location, assignee_id, resolution_reason, signal_thread_ts, reporter_id, dedicated_channel, genai_analysis) FROM stdin; +COPY dispatch_organization_default."case" (id, name, title, description, resolution, status, visibility, reported_at, closed_at, search_vector, duplicate_id, project_id, updated_at, created_at, triage_at, escalated_at, tactical_group_id, case_document_id, related_id, case_type_id, case_severity_id, case_priority_id, participants_team, participants_location, assignee_id, resolution_reason, signal_thread_ts, reporter_id, dedicated_channel, genai_analysis, event) FROM stdin; \. @@ -8031,64 +8031,64 @@ COPY dispatch_organization_default.entity_type (id, name, description, jpath, re -- Data for Name: event; Type: TABLE DATA; Schema: dispatch_organization_default; Owner: postgres -- -COPY dispatch_organization_default.event (id, uuid, started_at, ended_at, source, description, details, individual_id, incident_id, search_vector, updated_at, created_at, dispatch_user_id, case_id, type, owner, pinned) FROM stdin; -29 49557f6b-2628-4b14-88f0-68fce5ecd67f 2021-07-27 19:54:05.75815 2021-07-27 19:54:05.75815 Dispatch Core App The incident status has been changed from Active to Stable null \N 4 'activ':11B 'app':3A 'chang':9B 'core':2A 'dispatch':1A 'incid':5B 'stabl':13B 'status':6B 2021-07-27 19:54:05.772009 2021-07-27 19:54:05.758732 \N \N \N \N \N -2 e08315a0-31d6-4437-97fa-8e0e301e9156 2021-07-27 19:47:56.293577 2021-07-27 19:47:56.293577 Dispatch Core App Incident created null \N 2 'app':3A 'core':2A 'creat':5B 'dispatch':1A 'incid':4B 2021-07-27 19:47:56.305149 2021-07-27 19:47:56.294086 \N \N \N \N \N -3 bc36af33-865f-4d33-9691-789530899043 2021-07-27 19:47:58.180227 2021-07-27 19:47:58.180227 Dispatch Core App Kevin Glisson added to incident with Reporter role null \N 2 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'report':10B 'role':11B 2021-07-27 19:47:58.193746 2021-07-27 19:47:58.180704 \N \N \N \N \N -4 34596f8e-a2ee-47a7-b07b-fd06b0dff034 2021-07-27 19:47:58.244569 2021-07-27 19:47:58.244569 Dispatch Core App Kevin Glisson added to incident with Incident Commander role null \N 2 'ad':6B 'app':3A 'command':11B 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B,10B 'kevin':4B 'role':12B 2021-07-27 19:47:58.25909 2021-07-27 19:47:58.245143 \N \N \N \N \N -5 e1c27b93-668f-4515-8211-e5565b7b9cde 2021-07-27 19:47:58.314789 2021-07-27 19:47:58.314789 Dispatch Core App Kevin Glisson added to incident with Liaison role null \N 2 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'liaison':10B 'role':11B 2021-07-27 19:47:58.327942 2021-07-27 19:47:58.315231 \N \N \N \N \N -6 30c0fbee-6f25-4a13-b58e-d709a153e675 2021-07-27 19:47:58.416893 2021-07-27 19:47:58.416893 Dispatch Plugin - Ticket Management Ticket created null \N 2 'creat':6B 'dispatch':1A 'manag':4A 'plugin':2A 'ticket':3A,5B 2021-07-27 19:47:58.435201 2021-07-27 19:47:58.417773 \N \N \N \N \N -7 113e46da-145f-48f9-8bd5-996e094662bd 2021-07-27 19:48:09.864668 2021-07-27 19:48:09.864668 Google Group Plugin - Participant Group Management Tactical and notification groups created null \N 2 'creat':11B 'googl':1A 'group':2A,5A,10B 'manag':6A 'notif':9B 'particip':4A 'plugin':3A 'tactic':7B 2021-07-27 19:48:09.897076 2021-07-27 19:48:09.866061 \N \N \N \N \N -8 9e56cb0c-1717-4f98-994c-9b4f719d4be6 2021-07-27 19:48:09.922736 2021-07-27 19:48:09.922736 Dispatch Core App Tactical and notification groups added to incident null \N 2 'ad':8B 'app':3A 'core':2A 'dispatch':1A 'group':7B 'incid':10B 'notif':6B 'tactic':4B 2021-07-27 19:48:09.938657 2021-07-27 19:48:09.924632 \N \N \N \N \N -9 c4e9010b-4816-4170-8132-230224247474 2021-07-27 19:48:11.60449 2021-07-27 19:48:11.60449 Google Calendar Plugin - Conference Management Incident conference created null \N 2 'calendar':2A 'confer':4A,7B 'creat':8B 'googl':1A 'incid':6B 'manag':5A 'plugin':3A 2021-07-27 19:48:11.626794 2021-07-27 19:48:11.6052 \N \N \N \N \N -10 390cb9fd-6a65-4e20-bd08-fdabb29575cf 2021-07-27 19:48:11.638431 2021-07-27 19:48:11.638431 Dispatch Core App Conference added to incident null \N 2 'ad':5B 'app':3A 'confer':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 19:48:11.653171 2021-07-27 19:48:11.640634 \N \N \N \N \N -11 2f72c7e9-dd0b-4012-8a45-f9a14fd2d292 2021-07-27 19:48:12.750551 2021-07-27 19:48:12.750551 Slack Plugin - Conversation Management Incident conversation created null \N 2 'convers':3A,6B 'creat':7B 'incid':5B 'manag':4A 'plugin':2A 'slack':1A 2021-07-27 19:48:12.765715 2021-07-27 19:48:12.751284 \N \N \N \N \N -12 1a1688bf-6a9d-4dbf-85d8-7a7473ce6bd6 2021-07-27 19:48:12.778119 2021-07-27 19:48:12.778119 Dispatch Core App Conversation added to incident null \N 2 'ad':5B 'app':3A 'convers':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 19:48:12.797313 2021-07-27 19:48:12.780851 \N \N \N \N \N -13 e466ae85-f69a-4205-88b9-02d38067ae42 2021-07-27 19:48:23.80163 2021-07-27 19:48:23.80163 Dispatch Core App Incident participants added to incident null \N 2 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'incid':4B,8B 'particip':5B 2021-07-27 19:48:23.821511 2021-07-27 19:48:23.802091 \N \N \N \N \N -14 98872d38-28d8-447b-8959-3e0f0d5ef967 2021-07-27 19:48:23.847811 2021-07-27 19:48:23.847811 Dispatch Core App Incident notifications sent null \N 2 'app':3A 'core':2A 'dispatch':1A 'incid':4B 'notif':5B 'sent':6B 2021-07-27 19:48:23.868016 2021-07-27 19:48:23.848395 \N \N \N \N \N -28 9bdc350c-17dc-4620-a12f-a7caef66d5b9 2021-07-27 19:53:27.379661 2021-07-27 19:53:27.379661 Dispatch Core App Incident notifications sent null \N 4 'app':3A 'core':2A 'dispatch':1A 'incid':4B 'notif':5B 'sent':6B 2021-07-27 19:53:27.404884 2021-07-27 19:53:27.38054 \N \N \N \N \N -16 4dbe489a-e720-4c8f-a085-e843d1bf8a44 2021-07-27 19:52:57.762162 2021-07-27 19:52:57.762162 Dispatch Core App Incident created null \N 4 'app':3A 'core':2A 'creat':5B 'dispatch':1A 'incid':4B 2021-07-27 19:52:57.77186 2021-07-27 19:52:57.762571 \N \N \N \N \N -17 bf3f08c2-3d94-4783-8181-22952bc0323b 2021-07-27 19:52:59.37065 2021-07-27 19:52:59.37065 Dispatch Core App Kevin Glisson added to incident with Reporter role null \N 4 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'report':10B 'role':11B 2021-07-27 19:52:59.381702 2021-07-27 19:52:59.371169 \N \N \N \N \N -18 e9c821c9-4688-459b-b5c3-01d954fb60e5 2021-07-27 19:52:59.426042 2021-07-27 19:52:59.426042 Dispatch Core App Kevin Glisson added to incident with Incident Commander role null \N 4 'ad':6B 'app':3A 'command':11B 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B,10B 'kevin':4B 'role':12B 2021-07-27 19:52:59.4361 2021-07-27 19:52:59.426481 \N \N \N \N \N -19 b22a5a27-7490-47e5-97df-cee2cdf704ec 2021-07-27 19:52:59.479856 2021-07-27 19:52:59.479856 Dispatch Core App Kevin Glisson added to incident with Liaison role null \N 4 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'liaison':10B 'role':11B 2021-07-27 19:52:59.489004 2021-07-27 19:52:59.480284 \N \N \N \N \N -20 b3f9a89e-499d-4b13-9307-c0d3f268cd8f 2021-07-27 19:52:59.531497 2021-07-27 19:52:59.531497 Dispatch Plugin - Ticket Management Ticket created null \N 4 'creat':6B 'dispatch':1A 'manag':4A 'plugin':2A 'ticket':3A,5B 2021-07-27 19:52:59.542519 2021-07-27 19:52:59.531965 \N \N \N \N \N -21 fdbb0a06-6103-41e0-8928-6717d4d6bdd7 2021-07-27 19:53:10.827467 2021-07-27 19:53:10.827467 Google Group Plugin - Participant Group Management Tactical and notification groups created null \N 4 'creat':11B 'googl':1A 'group':2A,5A,10B 'manag':6A 'notif':9B 'particip':4A 'plugin':3A 'tactic':7B 2021-07-27 19:53:10.837657 2021-07-27 19:53:10.827908 \N \N \N \N \N -22 f7db3521-a173-4810-bb8d-906fae813385 2021-07-27 19:53:10.852037 2021-07-27 19:53:10.852037 Dispatch Core App Tactical and notification groups added to incident null \N 4 'ad':8B 'app':3A 'core':2A 'dispatch':1A 'group':7B 'incid':10B 'notif':6B 'tactic':4B 2021-07-27 19:53:10.863075 2021-07-27 19:53:10.854458 \N \N \N \N \N -23 7ee29eb2-eb53-4568-8740-687715fe3244 2021-07-27 19:53:12.690793 2021-07-27 19:53:12.690793 Google Calendar Plugin - Conference Management Incident conference created null \N 4 'calendar':2A 'confer':4A,7B 'creat':8B 'googl':1A 'incid':6B 'manag':5A 'plugin':3A 2021-07-27 19:53:12.735069 2021-07-27 19:53:12.692004 \N \N \N \N \N -24 5b5c5178-e215-4b03-9a0f-0eecef30764d 2021-07-27 19:53:12.757005 2021-07-27 19:53:12.757005 Dispatch Core App Conference added to incident null \N 4 'ad':5B 'app':3A 'confer':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 19:53:12.789824 2021-07-27 19:53:12.766925 \N \N \N \N \N -25 4ce347ba-8bb3-43cd-aa89-6925a5abe635 2021-07-27 19:53:13.910679 2021-07-27 19:53:13.910679 Slack Plugin - Conversation Management Incident conversation created null \N 4 'convers':3A,6B 'creat':7B 'incid':5B 'manag':4A 'plugin':2A 'slack':1A 2021-07-27 19:53:13.922948 2021-07-27 19:53:13.911156 \N \N \N \N \N -26 01f553ab-6076-4b26-885b-d5a663582f36 2021-07-27 19:53:13.931279 2021-07-27 19:53:13.931279 Dispatch Core App Conversation added to incident null \N 4 'ad':5B 'app':3A 'convers':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 19:53:13.944528 2021-07-27 19:53:13.93326 \N \N \N \N \N -27 fa5a2de2-55d2-4367-bf45-5af76d66c037 2021-07-27 19:53:27.32766 2021-07-27 19:53:27.32766 Dispatch Core App Incident participants added to incident null \N 4 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'incid':4B,8B 'particip':5B 2021-07-27 19:53:27.349556 2021-07-27 19:53:27.328643 \N \N \N \N \N -31 f33e4fe2-2e34-48a5-b5ce-6381f2cef8be 2021-07-27 20:06:15.278243 2021-07-27 20:06:15.278243 Dispatch Core App Incident created null \N 5 'app':3A 'core':2A 'creat':5B 'dispatch':1A 'incid':4B 2021-07-27 20:06:15.312985 2021-07-27 20:06:15.27966 \N \N \N \N \N -39 c9635f42-89a6-40a4-9d3f-21d973bbe30c 2021-07-27 20:06:30.176489 2021-07-27 20:06:30.176489 Dispatch Core App Conference added to incident null \N 5 'ad':5B 'app':3A 'confer':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 20:06:30.194772 2021-07-27 20:06:30.178632 \N \N \N \N \N -30 99528494-bd9c-47e2-af62-e2a9fa8cfee2 2021-07-27 19:54:05.78089 2021-07-27 19:54:05.78089 Incident Participant Kevin Glisson marked the incident as Stable null 2 4 'glisson':4B 'incid':1A,7B 'kevin':3B 'mark':5B 'particip':2A 'stabl':9B 2021-07-27 19:54:05.799518 2021-07-27 19:54:05.781404 \N \N \N \N \N -32 d1fa6a89-2ba9-4d15-89c1-253abf63a3a2 2021-07-27 20:06:16.908774 2021-07-27 20:06:16.908774 Dispatch Core App Kevin Glisson added to incident with Reporter role null \N 5 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'report':10B 'role':11B 2021-07-27 20:06:16.922622 2021-07-27 20:06:16.909275 \N \N \N \N \N -36 f624f934-1d41-474a-8f7b-bba918465582 2021-07-27 20:06:28.35038 2021-07-27 20:06:28.35038 Google Group Plugin - Participant Group Management Tactical and notification groups created null \N 5 'creat':11B 'googl':1A 'group':2A,5A,10B 'manag':6A 'notif':9B 'particip':4A 'plugin':3A 'tactic':7B 2021-07-27 20:06:28.363617 2021-07-27 20:06:28.350863 \N \N \N \N \N -42 aff9ebed-f588-42c9-8cde-dcf3c2231561 2021-07-27 20:06:41.583368 2021-07-27 20:06:41.583368 Dispatch Core App Incident participants added to incident null \N 5 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'incid':4B,8B 'particip':5B 2021-07-27 20:06:41.595314 2021-07-27 20:06:41.58404 \N \N \N \N \N -49 ff5df909-ed07-47bb-9120-3127856f73ad 2021-07-27 20:11:43.928812 2021-07-27 20:11:43.928812 Google Group Plugin - Participant Group Management Tactical and notification groups created null \N 6 'creat':11B 'googl':1A 'group':2A,5A,10B 'manag':6A 'notif':9B 'particip':4A 'plugin':3A 'tactic':7B 2021-07-27 20:11:43.942367 2021-07-27 20:11:43.929272 \N \N \N \N \N -50 52e93cc0-1d00-42c5-8e98-6ab7f9775578 2021-07-27 20:11:43.966374 2021-07-27 20:11:43.966374 Dispatch Core App Tactical and notification groups added to incident null \N 6 'ad':8B 'app':3A 'core':2A 'dispatch':1A 'group':7B 'incid':10B 'notif':6B 'tactic':4B 2021-07-27 20:11:43.983846 2021-07-27 20:11:43.971549 \N \N \N \N \N -52 ebf60d7f-5740-4fb9-a55f-195b1f995eb6 2021-07-27 20:11:45.396347 2021-07-27 20:11:45.396347 Dispatch Core App Documents added to incident null \N 6 'ad':5B 'app':3A 'core':2A 'dispatch':1A 'document':4B 'incid':7B 2021-07-27 20:11:45.410134 2021-07-27 20:11:45.396813 \N \N \N \N \N -54 da58b6e3-05bb-407e-8c4f-bead96ea7564 2021-07-27 20:11:47.206694 2021-07-27 20:11:47.206694 Dispatch Core App Conference added to incident null \N 6 'ad':5B 'app':3A 'confer':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 20:11:47.221122 2021-07-27 20:11:47.208661 \N \N \N \N \N -57 2f5d5c41-13e7-4e6a-ab03-40b67b62faba 2021-07-27 20:11:58.989198 2021-07-27 20:11:58.989198 Dispatch Core App Incident participants added to incident null \N 6 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'incid':4B,8B 'particip':5B 2021-07-27 20:11:59.001975 2021-07-27 20:11:58.989674 \N \N \N \N \N -33 4dd9a5d8-4bad-4b1c-a3ac-27dafc162394 2021-07-27 20:06:16.987165 2021-07-27 20:06:16.987165 Dispatch Core App Kevin Glisson added to incident with Incident Commander role null \N 5 'ad':6B 'app':3A 'command':11B 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B,10B 'kevin':4B 'role':12B 2021-07-27 20:06:17.002968 2021-07-27 20:06:16.987704 \N \N \N \N \N -34 af3eff3c-0342-4aa7-a7ca-23a80dc0fff2 2021-07-27 20:06:17.051194 2021-07-27 20:06:17.051194 Dispatch Core App Kevin Glisson added to incident with Liaison role null \N 5 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'liaison':10B 'role':11B 2021-07-27 20:06:17.062652 2021-07-27 20:06:17.051675 \N \N \N \N \N -35 6ee1463f-f308-4992-b479-b3b2b54b44e9 2021-07-27 20:06:17.115146 2021-07-27 20:06:17.115146 Dispatch Plugin - Ticket Management Ticket created null \N 5 'creat':6B 'dispatch':1A 'manag':4A 'plugin':2A 'ticket':3A,5B 2021-07-27 20:06:17.131931 2021-07-27 20:06:17.11566 \N \N \N \N \N -37 5c846eae-e681-402d-9c7e-8dc0e359c7d3 2021-07-27 20:06:28.38158 2021-07-27 20:06:28.38158 Dispatch Core App Tactical and notification groups added to incident null \N 5 'ad':8B 'app':3A 'core':2A 'dispatch':1A 'group':7B 'incid':10B 'notif':6B 'tactic':4B 2021-07-27 20:06:28.395437 2021-07-27 20:06:28.383165 \N \N \N \N \N -38 db45a35e-93ec-461d-a9b3-ebc4e075d081 2021-07-27 20:06:30.137656 2021-07-27 20:06:30.137656 Google Calendar Plugin - Conference Management Incident conference created null \N 5 'calendar':2A 'confer':4A,7B 'creat':8B 'googl':1A 'incid':6B 'manag':5A 'plugin':3A 2021-07-27 20:06:30.166434 2021-07-27 20:06:30.139734 \N \N \N \N \N -40 9e1d954c-7668-4faf-a95a-e25ea4a82e09 2021-07-27 20:06:31.264981 2021-07-27 20:06:31.264981 Slack Plugin - Conversation Management Incident conversation created null \N 5 'convers':3A,6B 'creat':7B 'incid':5B 'manag':4A 'plugin':2A 'slack':1A 2021-07-27 20:06:31.280714 2021-07-27 20:06:31.26551 \N \N \N \N \N -41 83288834-75cb-4e44-8be8-cc62347894de 2021-07-27 20:06:31.290579 2021-07-27 20:06:31.290579 Dispatch Core App Conversation added to incident null \N 5 'ad':5B 'app':3A 'convers':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 20:06:31.304529 2021-07-27 20:06:31.29202 \N \N \N \N \N -43 0ba2f55e-ec9b-4f9e-95e4-68b0f50c8445 2021-07-27 20:06:41.611774 2021-07-27 20:06:41.611774 Dispatch Core App Incident notifications sent null \N 5 'app':3A 'core':2A 'dispatch':1A 'incid':4B 'notif':5B 'sent':6B 2021-07-27 20:06:41.627956 2021-07-27 20:06:41.612213 \N \N \N \N \N -44 74fddbad-1c2e-4620-aab4-5bc341b19fd2 2021-07-27 20:11:30.531955 2021-07-27 20:11:30.531955 Dispatch Core App Incident created null \N 6 'app':3A 'core':2A 'creat':5B 'dispatch':1A 'incid':4B 2021-07-27 20:11:30.543425 2021-07-27 20:11:30.532627 \N \N \N \N \N -45 f7ab4553-0c76-4f03-b0d9-fe6171e02cb8 2021-07-27 20:11:32.374781 2021-07-27 20:11:32.374781 Dispatch Core App Kevin Glisson added to incident with Reporter role null \N 6 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'report':10B 'role':11B 2021-07-27 20:11:32.3914 2021-07-27 20:11:32.375392 \N \N \N \N \N -46 a5367169-cee2-4070-8acd-e25b586164b0 2021-07-27 20:11:32.452052 2021-07-27 20:11:32.452052 Dispatch Core App Kevin Glisson added to incident with Incident Commander role null \N 6 'ad':6B 'app':3A 'command':11B 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B,10B 'kevin':4B 'role':12B 2021-07-27 20:11:32.467419 2021-07-27 20:11:32.452485 \N \N \N \N \N -47 572417cc-ecbc-426a-a28c-48eda55cc560 2021-07-27 20:11:32.514367 2021-07-27 20:11:32.514367 Dispatch Core App Kevin Glisson added to incident with Liaison role null \N 6 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'liaison':10B 'role':11B 2021-07-27 20:11:32.527335 2021-07-27 20:11:32.514892 \N \N \N \N \N -48 7ae8bd56-d996-4da2-9f0c-68f11c970661 2021-07-27 20:11:32.600598 2021-07-27 20:11:32.600598 Dispatch Plugin - Ticket Management Ticket created null \N 6 'creat':6B 'dispatch':1A 'manag':4A 'plugin':2A 'ticket':3A,5B 2021-07-27 20:11:32.616295 2021-07-27 20:11:32.601402 \N \N \N \N \N -51 f2d13f13-2236-4408-a242-50ab2a714730 2021-07-27 20:11:45.348881 2021-07-27 20:11:45.348881 Dispatch Core App Creation of incident storage failed. Reason: Request failed. Errors: {'error': {'errors': [{'domain': 'global', 'reason': 'notFound', 'message': 'File not found: 1rxGkxQFdKxtwEKN-p-k5Fe8JC6f5uNg8.', 'locationType': 'parameter', 'location': 'fileId'}], 'code': 404, 'message': 'File not found: 1rxGkxQFdKxtwEKN-p-k5Fe8JC6f5uNg8.'}} null \N 6 '1rxgkxqfdkxtwekn':24B,38B '1rxgkxqfdkxtwekn-p-k5fe8jc6f5ung8':23B,37B '404':32B 'app':3A 'code':31B 'core':2A 'creation':4B 'dispatch':1A 'domain':15B 'error':12B,13B,14B 'fail':8B,11B 'file':20B,34B 'fileid':30B 'found':22B,36B 'global':16B 'incid':6B 'k5fe8jc6f5ung8':26B,40B 'locat':29B 'locationtyp':27B 'messag':19B,33B 'notfound':18B 'p':25B,39B 'paramet':28B 'reason':9B,17B 'request':10B 'storag':7B 2021-07-27 20:11:45.382849 2021-07-27 20:11:45.350277 \N \N \N \N \N -53 0fad1b80-d626-4c97-b535-dfdf0098485e 2021-07-27 20:11:47.168067 2021-07-27 20:11:47.168067 Google Calendar Plugin - Conference Management Incident conference created null \N 6 'calendar':2A 'confer':4A,7B 'creat':8B 'googl':1A 'incid':6B 'manag':5A 'plugin':3A 2021-07-27 20:11:47.1984 2021-07-27 20:11:47.168696 \N \N \N \N \N -55 6c0b289e-5dff-470a-aed7-0caf9405c082 2021-07-27 20:11:48.26168 2021-07-27 20:11:48.26168 Slack Plugin - Conversation Management Incident conversation created null \N 6 'convers':3A,6B 'creat':7B 'incid':5B 'manag':4A 'plugin':2A 'slack':1A 2021-07-27 20:11:48.278603 2021-07-27 20:11:48.26263 \N \N \N \N \N -56 6fe13da1-de96-41dd-ba9a-29a752060b46 2021-07-27 20:11:48.28756 2021-07-27 20:11:48.28756 Dispatch Core App Conversation added to incident null \N 6 'ad':5B 'app':3A 'convers':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 20:11:48.307412 2021-07-27 20:11:48.290557 \N \N \N \N \N -58 d66ec104-af72-46df-80a8-2b32a6fa8944 2021-07-27 20:11:59.021607 2021-07-27 20:11:59.021607 Dispatch Core App Incident notifications sent null \N 6 'app':3A 'core':2A 'dispatch':1A 'incid':4B 'notif':5B 'sent':6B 2021-07-27 20:11:59.04991 2021-07-27 20:11:59.022365 \N \N \N \N \N -59 7e011a9d-9bb9-4770-b5e3-1a21197e60c2 2021-07-28 17:13:49.192243 2021-07-28 17:13:49.192243 Dispatch Core App New incident task created by Kevin Glisson {"weblink": null} \N 4 'app':3A 'core':2A 'creat':7B 'dispatch':1A 'glisson':10B 'incid':5B 'kevin':9B 'new':4B 'task':6B 2021-07-28 17:13:49.218153 2021-07-28 17:13:49.199624 \N \N \N \N \N +COPY dispatch_organization_default.event (id, uuid, started_at, ended_at, source, description, details, individual_id, incident_id, search_vector, updated_at, created_at, signal_id, dispatch_user_id, case_id, type, owner, pinned) FROM stdin; +29 49557f6b-2628-4b14-88f0-68fce5ecd67f 2021-07-27 19:54:05.75815 2021-07-27 19:54:05.75815 Dispatch Core App The incident status has been changed from Active to Stable null \N 4 'activ':11B 'app':3A 'chang':9B 'core':2A 'dispatch':1A 'incid':5B 'stabl':13B 'status':6B 2021-07-27 19:54:05.772009 2021-07-27 19:54:05.758732 \N \N \N \N \N \N +2 e08315a0-31d6-4437-97fa-8e0e301e9156 2021-07-27 19:47:56.293577 2021-07-27 19:47:56.293577 Dispatch Core App Incident created null \N 2 'app':3A 'core':2A 'creat':5B 'dispatch':1A 'incid':4B 2021-07-27 19:47:56.305149 2021-07-27 19:47:56.294086 \N \N \N \N \N \N +3 bc36af33-865f-4d33-9691-789530899043 2021-07-27 19:47:58.180227 2021-07-27 19:47:58.180227 Dispatch Core App Kevin Glisson added to incident with Reporter role null \N 2 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'report':10B 'role':11B 2021-07-27 19:47:58.193746 2021-07-27 19:47:58.180704 \N \N \N \N \N \N +4 34596f8e-a2ee-47a7-b07b-fd06b0dff034 2021-07-27 19:47:58.244569 2021-07-27 19:47:58.244569 Dispatch Core App Kevin Glisson added to incident with Incident Commander role null \N 2 'ad':6B 'app':3A 'command':11B 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B,10B 'kevin':4B 'role':12B 2021-07-27 19:47:58.25909 2021-07-27 19:47:58.245143 \N \N \N \N \N \N +5 e1c27b93-668f-4515-8211-e5565b7b9cde 2021-07-27 19:47:58.314789 2021-07-27 19:47:58.314789 Dispatch Core App Kevin Glisson added to incident with Liaison role null \N 2 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'liaison':10B 'role':11B 2021-07-27 19:47:58.327942 2021-07-27 19:47:58.315231 \N \N \N \N \N \N +6 30c0fbee-6f25-4a13-b58e-d709a153e675 2021-07-27 19:47:58.416893 2021-07-27 19:47:58.416893 Dispatch Plugin - Ticket Management Ticket created null \N 2 'creat':6B 'dispatch':1A 'manag':4A 'plugin':2A 'ticket':3A,5B 2021-07-27 19:47:58.435201 2021-07-27 19:47:58.417773 \N \N \N \N \N \N +7 113e46da-145f-48f9-8bd5-996e094662bd 2021-07-27 19:48:09.864668 2021-07-27 19:48:09.864668 Google Group Plugin - Participant Group Management Tactical and notification groups created null \N 2 'creat':11B 'googl':1A 'group':2A,5A,10B 'manag':6A 'notif':9B 'particip':4A 'plugin':3A 'tactic':7B 2021-07-27 19:48:09.897076 2021-07-27 19:48:09.866061 \N \N \N \N \N \N +8 9e56cb0c-1717-4f98-994c-9b4f719d4be6 2021-07-27 19:48:09.922736 2021-07-27 19:48:09.922736 Dispatch Core App Tactical and notification groups added to incident null \N 2 'ad':8B 'app':3A 'core':2A 'dispatch':1A 'group':7B 'incid':10B 'notif':6B 'tactic':4B 2021-07-27 19:48:09.938657 2021-07-27 19:48:09.924632 \N \N \N \N \N \N +9 c4e9010b-4816-4170-8132-230224247474 2021-07-27 19:48:11.60449 2021-07-27 19:48:11.60449 Google Calendar Plugin - Conference Management Incident conference created null \N 2 'calendar':2A 'confer':4A,7B 'creat':8B 'googl':1A 'incid':6B 'manag':5A 'plugin':3A 2021-07-27 19:48:11.626794 2021-07-27 19:48:11.6052 \N \N \N \N \N \N +10 390cb9fd-6a65-4e20-bd08-fdabb29575cf 2021-07-27 19:48:11.638431 2021-07-27 19:48:11.638431 Dispatch Core App Conference added to incident null \N 2 'ad':5B 'app':3A 'confer':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 19:48:11.653171 2021-07-27 19:48:11.640634 \N \N \N \N \N \N +11 2f72c7e9-dd0b-4012-8a45-f9a14fd2d292 2021-07-27 19:48:12.750551 2021-07-27 19:48:12.750551 Slack Plugin - Conversation Management Incident conversation created null \N 2 'convers':3A,6B 'creat':7B 'incid':5B 'manag':4A 'plugin':2A 'slack':1A 2021-07-27 19:48:12.765715 2021-07-27 19:48:12.751284 \N \N \N \N \N \N +12 1a1688bf-6a9d-4dbf-85d8-7a7473ce6bd6 2021-07-27 19:48:12.778119 2021-07-27 19:48:12.778119 Dispatch Core App Conversation added to incident null \N 2 'ad':5B 'app':3A 'convers':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 19:48:12.797313 2021-07-27 19:48:12.780851 \N \N \N \N \N \N +13 e466ae85-f69a-4205-88b9-02d38067ae42 2021-07-27 19:48:23.80163 2021-07-27 19:48:23.80163 Dispatch Core App Incident participants added to incident null \N 2 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'incid':4B,8B 'particip':5B 2021-07-27 19:48:23.821511 2021-07-27 19:48:23.802091 \N \N \N \N \N \N +14 98872d38-28d8-447b-8959-3e0f0d5ef967 2021-07-27 19:48:23.847811 2021-07-27 19:48:23.847811 Dispatch Core App Incident notifications sent null \N 2 'app':3A 'core':2A 'dispatch':1A 'incid':4B 'notif':5B 'sent':6B 2021-07-27 19:48:23.868016 2021-07-27 19:48:23.848395 \N \N \N \N \N \N +28 9bdc350c-17dc-4620-a12f-a7caef66d5b9 2021-07-27 19:53:27.379661 2021-07-27 19:53:27.379661 Dispatch Core App Incident notifications sent null \N 4 'app':3A 'core':2A 'dispatch':1A 'incid':4B 'notif':5B 'sent':6B 2021-07-27 19:53:27.404884 2021-07-27 19:53:27.38054 \N \N \N \N \N \N +16 4dbe489a-e720-4c8f-a085-e843d1bf8a44 2021-07-27 19:52:57.762162 2021-07-27 19:52:57.762162 Dispatch Core App Incident created null \N 4 'app':3A 'core':2A 'creat':5B 'dispatch':1A 'incid':4B 2021-07-27 19:52:57.77186 2021-07-27 19:52:57.762571 \N \N \N \N \N \N +17 bf3f08c2-3d94-4783-8181-22952bc0323b 2021-07-27 19:52:59.37065 2021-07-27 19:52:59.37065 Dispatch Core App Kevin Glisson added to incident with Reporter role null \N 4 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'report':10B 'role':11B 2021-07-27 19:52:59.381702 2021-07-27 19:52:59.371169 \N \N \N \N \N \N +18 e9c821c9-4688-459b-b5c3-01d954fb60e5 2021-07-27 19:52:59.426042 2021-07-27 19:52:59.426042 Dispatch Core App Kevin Glisson added to incident with Incident Commander role null \N 4 'ad':6B 'app':3A 'command':11B 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B,10B 'kevin':4B 'role':12B 2021-07-27 19:52:59.4361 2021-07-27 19:52:59.426481 \N \N \N \N \N \N +19 b22a5a27-7490-47e5-97df-cee2cdf704ec 2021-07-27 19:52:59.479856 2021-07-27 19:52:59.479856 Dispatch Core App Kevin Glisson added to incident with Liaison role null \N 4 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'liaison':10B 'role':11B 2021-07-27 19:52:59.489004 2021-07-27 19:52:59.480284 \N \N \N \N \N \N +20 b3f9a89e-499d-4b13-9307-c0d3f268cd8f 2021-07-27 19:52:59.531497 2021-07-27 19:52:59.531497 Dispatch Plugin - Ticket Management Ticket created null \N 4 'creat':6B 'dispatch':1A 'manag':4A 'plugin':2A 'ticket':3A,5B 2021-07-27 19:52:59.542519 2021-07-27 19:52:59.531965 \N \N \N \N \N \N +21 fdbb0a06-6103-41e0-8928-6717d4d6bdd7 2021-07-27 19:53:10.827467 2021-07-27 19:53:10.827467 Google Group Plugin - Participant Group Management Tactical and notification groups created null \N 4 'creat':11B 'googl':1A 'group':2A,5A,10B 'manag':6A 'notif':9B 'particip':4A 'plugin':3A 'tactic':7B 2021-07-27 19:53:10.837657 2021-07-27 19:53:10.827908 \N \N \N \N \N \N +22 f7db3521-a173-4810-bb8d-906fae813385 2021-07-27 19:53:10.852037 2021-07-27 19:53:10.852037 Dispatch Core App Tactical and notification groups added to incident null \N 4 'ad':8B 'app':3A 'core':2A 'dispatch':1A 'group':7B 'incid':10B 'notif':6B 'tactic':4B 2021-07-27 19:53:10.863075 2021-07-27 19:53:10.854458 \N \N \N \N \N \N +23 7ee29eb2-eb53-4568-8740-687715fe3244 2021-07-27 19:53:12.690793 2021-07-27 19:53:12.690793 Google Calendar Plugin - Conference Management Incident conference created null \N 4 'calendar':2A 'confer':4A,7B 'creat':8B 'googl':1A 'incid':6B 'manag':5A 'plugin':3A 2021-07-27 19:53:12.735069 2021-07-27 19:53:12.692004 \N \N \N \N \N \N +24 5b5c5178-e215-4b03-9a0f-0eecef30764d 2021-07-27 19:53:12.757005 2021-07-27 19:53:12.757005 Dispatch Core App Conference added to incident null \N 4 'ad':5B 'app':3A 'confer':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 19:53:12.789824 2021-07-27 19:53:12.766925 \N \N \N \N \N \N +25 4ce347ba-8bb3-43cd-aa89-6925a5abe635 2021-07-27 19:53:13.910679 2021-07-27 19:53:13.910679 Slack Plugin - Conversation Management Incident conversation created null \N 4 'convers':3A,6B 'creat':7B 'incid':5B 'manag':4A 'plugin':2A 'slack':1A 2021-07-27 19:53:13.922948 2021-07-27 19:53:13.911156 \N \N \N \N \N \N +26 01f553ab-6076-4b26-885b-d5a663582f36 2021-07-27 19:53:13.931279 2021-07-27 19:53:13.931279 Dispatch Core App Conversation added to incident null \N 4 'ad':5B 'app':3A 'convers':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 19:53:13.944528 2021-07-27 19:53:13.93326 \N \N \N \N \N \N +27 fa5a2de2-55d2-4367-bf45-5af76d66c037 2021-07-27 19:53:27.32766 2021-07-27 19:53:27.32766 Dispatch Core App Incident participants added to incident null \N 4 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'incid':4B,8B 'particip':5B 2021-07-27 19:53:27.349556 2021-07-27 19:53:27.328643 \N \N \N \N \N \N +31 f33e4fe2-2e34-48a5-b5ce-6381f2cef8be 2021-07-27 20:06:15.278243 2021-07-27 20:06:15.278243 Dispatch Core App Incident created null \N 5 'app':3A 'core':2A 'creat':5B 'dispatch':1A 'incid':4B 2021-07-27 20:06:15.312985 2021-07-27 20:06:15.27966 \N \N \N \N \N \N +39 c9635f42-89a6-40a4-9d3f-21d973bbe30c 2021-07-27 20:06:30.176489 2021-07-27 20:06:30.176489 Dispatch Core App Conference added to incident null \N 5 'ad':5B 'app':3A 'confer':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 20:06:30.194772 2021-07-27 20:06:30.178632 \N \N \N \N \N \N +30 99528494-bd9c-47e2-af62-e2a9fa8cfee2 2021-07-27 19:54:05.78089 2021-07-27 19:54:05.78089 Incident Participant Kevin Glisson marked the incident as Stable null 2 4 'glisson':4B 'incid':1A,7B 'kevin':3B 'mark':5B 'particip':2A 'stabl':9B 2021-07-27 19:54:05.799518 2021-07-27 19:54:05.781404 \N \N \N \N \N \N +32 d1fa6a89-2ba9-4d15-89c1-253abf63a3a2 2021-07-27 20:06:16.908774 2021-07-27 20:06:16.908774 Dispatch Core App Kevin Glisson added to incident with Reporter role null \N 5 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'report':10B 'role':11B 2021-07-27 20:06:16.922622 2021-07-27 20:06:16.909275 \N \N \N \N \N \N +36 f624f934-1d41-474a-8f7b-bba918465582 2021-07-27 20:06:28.35038 2021-07-27 20:06:28.35038 Google Group Plugin - Participant Group Management Tactical and notification groups created null \N 5 'creat':11B 'googl':1A 'group':2A,5A,10B 'manag':6A 'notif':9B 'particip':4A 'plugin':3A 'tactic':7B 2021-07-27 20:06:28.363617 2021-07-27 20:06:28.350863 \N \N \N \N \N \N +42 aff9ebed-f588-42c9-8cde-dcf3c2231561 2021-07-27 20:06:41.583368 2021-07-27 20:06:41.583368 Dispatch Core App Incident participants added to incident null \N 5 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'incid':4B,8B 'particip':5B 2021-07-27 20:06:41.595314 2021-07-27 20:06:41.58404 \N \N \N \N \N \N +49 ff5df909-ed07-47bb-9120-3127856f73ad 2021-07-27 20:11:43.928812 2021-07-27 20:11:43.928812 Google Group Plugin - Participant Group Management Tactical and notification groups created null \N 6 'creat':11B 'googl':1A 'group':2A,5A,10B 'manag':6A 'notif':9B 'particip':4A 'plugin':3A 'tactic':7B 2021-07-27 20:11:43.942367 2021-07-27 20:11:43.929272 \N \N \N \N \N \N +50 52e93cc0-1d00-42c5-8e98-6ab7f9775578 2021-07-27 20:11:43.966374 2021-07-27 20:11:43.966374 Dispatch Core App Tactical and notification groups added to incident null \N 6 'ad':8B 'app':3A 'core':2A 'dispatch':1A 'group':7B 'incid':10B 'notif':6B 'tactic':4B 2021-07-27 20:11:43.983846 2021-07-27 20:11:43.971549 \N \N \N \N \N \N +52 ebf60d7f-5740-4fb9-a55f-195b1f995eb6 2021-07-27 20:11:45.396347 2021-07-27 20:11:45.396347 Dispatch Core App Documents added to incident null \N 6 'ad':5B 'app':3A 'core':2A 'dispatch':1A 'document':4B 'incid':7B 2021-07-27 20:11:45.410134 2021-07-27 20:11:45.396813 \N \N \N \N \N \N +54 da58b6e3-05bb-407e-8c4f-bead96ea7564 2021-07-27 20:11:47.206694 2021-07-27 20:11:47.206694 Dispatch Core App Conference added to incident null \N 6 'ad':5B 'app':3A 'confer':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 20:11:47.221122 2021-07-27 20:11:47.208661 \N \N \N \N \N \N +57 2f5d5c41-13e7-4e6a-ab03-40b67b62faba 2021-07-27 20:11:58.989198 2021-07-27 20:11:58.989198 Dispatch Core App Incident participants added to incident null \N 6 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'incid':4B,8B 'particip':5B 2021-07-27 20:11:59.001975 2021-07-27 20:11:58.989674 \N \N \N \N \N \N +33 4dd9a5d8-4bad-4b1c-a3ac-27dafc162394 2021-07-27 20:06:16.987165 2021-07-27 20:06:16.987165 Dispatch Core App Kevin Glisson added to incident with Incident Commander role null \N 5 'ad':6B 'app':3A 'command':11B 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B,10B 'kevin':4B 'role':12B 2021-07-27 20:06:17.002968 2021-07-27 20:06:16.987704 \N \N \N \N \N \N +34 af3eff3c-0342-4aa7-a7ca-23a80dc0fff2 2021-07-27 20:06:17.051194 2021-07-27 20:06:17.051194 Dispatch Core App Kevin Glisson added to incident with Liaison role null \N 5 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'liaison':10B 'role':11B 2021-07-27 20:06:17.062652 2021-07-27 20:06:17.051675 \N \N \N \N \N \N +35 6ee1463f-f308-4992-b479-b3b2b54b44e9 2021-07-27 20:06:17.115146 2021-07-27 20:06:17.115146 Dispatch Plugin - Ticket Management Ticket created null \N 5 'creat':6B 'dispatch':1A 'manag':4A 'plugin':2A 'ticket':3A,5B 2021-07-27 20:06:17.131931 2021-07-27 20:06:17.11566 \N \N \N \N \N \N +37 5c846eae-e681-402d-9c7e-8dc0e359c7d3 2021-07-27 20:06:28.38158 2021-07-27 20:06:28.38158 Dispatch Core App Tactical and notification groups added to incident null \N 5 'ad':8B 'app':3A 'core':2A 'dispatch':1A 'group':7B 'incid':10B 'notif':6B 'tactic':4B 2021-07-27 20:06:28.395437 2021-07-27 20:06:28.383165 \N \N \N \N \N \N +38 db45a35e-93ec-461d-a9b3-ebc4e075d081 2021-07-27 20:06:30.137656 2021-07-27 20:06:30.137656 Google Calendar Plugin - Conference Management Incident conference created null \N 5 'calendar':2A 'confer':4A,7B 'creat':8B 'googl':1A 'incid':6B 'manag':5A 'plugin':3A 2021-07-27 20:06:30.166434 2021-07-27 20:06:30.139734 \N \N \N \N \N \N +40 9e1d954c-7668-4faf-a95a-e25ea4a82e09 2021-07-27 20:06:31.264981 2021-07-27 20:06:31.264981 Slack Plugin - Conversation Management Incident conversation created null \N 5 'convers':3A,6B 'creat':7B 'incid':5B 'manag':4A 'plugin':2A 'slack':1A 2021-07-27 20:06:31.280714 2021-07-27 20:06:31.26551 \N \N \N \N \N \N +41 83288834-75cb-4e44-8be8-cc62347894de 2021-07-27 20:06:31.290579 2021-07-27 20:06:31.290579 Dispatch Core App Conversation added to incident null \N 5 'ad':5B 'app':3A 'convers':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 20:06:31.304529 2021-07-27 20:06:31.29202 \N \N \N \N \N \N +43 0ba2f55e-ec9b-4f9e-95e4-68b0f50c8445 2021-07-27 20:06:41.611774 2021-07-27 20:06:41.611774 Dispatch Core App Incident notifications sent null \N 5 'app':3A 'core':2A 'dispatch':1A 'incid':4B 'notif':5B 'sent':6B 2021-07-27 20:06:41.627956 2021-07-27 20:06:41.612213 \N \N \N \N \N \N +44 74fddbad-1c2e-4620-aab4-5bc341b19fd2 2021-07-27 20:11:30.531955 2021-07-27 20:11:30.531955 Dispatch Core App Incident created null \N 6 'app':3A 'core':2A 'creat':5B 'dispatch':1A 'incid':4B 2021-07-27 20:11:30.543425 2021-07-27 20:11:30.532627 \N \N \N \N \N \N +45 f7ab4553-0c76-4f03-b0d9-fe6171e02cb8 2021-07-27 20:11:32.374781 2021-07-27 20:11:32.374781 Dispatch Core App Kevin Glisson added to incident with Reporter role null \N 6 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'report':10B 'role':11B 2021-07-27 20:11:32.3914 2021-07-27 20:11:32.375392 \N \N \N \N \N \N +46 a5367169-cee2-4070-8acd-e25b586164b0 2021-07-27 20:11:32.452052 2021-07-27 20:11:32.452052 Dispatch Core App Kevin Glisson added to incident with Incident Commander role null \N 6 'ad':6B 'app':3A 'command':11B 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B,10B 'kevin':4B 'role':12B 2021-07-27 20:11:32.467419 2021-07-27 20:11:32.452485 \N \N \N \N \N \N +47 572417cc-ecbc-426a-a28c-48eda55cc560 2021-07-27 20:11:32.514367 2021-07-27 20:11:32.514367 Dispatch Core App Kevin Glisson added to incident with Liaison role null \N 6 'ad':6B 'app':3A 'core':2A 'dispatch':1A 'glisson':5B 'incid':8B 'kevin':4B 'liaison':10B 'role':11B 2021-07-27 20:11:32.527335 2021-07-27 20:11:32.514892 \N \N \N \N \N \N +48 7ae8bd56-d996-4da2-9f0c-68f11c970661 2021-07-27 20:11:32.600598 2021-07-27 20:11:32.600598 Dispatch Plugin - Ticket Management Ticket created null \N 6 'creat':6B 'dispatch':1A 'manag':4A 'plugin':2A 'ticket':3A,5B 2021-07-27 20:11:32.616295 2021-07-27 20:11:32.601402 \N \N \N \N \N \N +51 f2d13f13-2236-4408-a242-50ab2a714730 2021-07-27 20:11:45.348881 2021-07-27 20:11:45.348881 Dispatch Core App Creation of incident storage failed. Reason: Request failed. Errors: {'error': {'errors': [{'domain': 'global', 'reason': 'notFound', 'message': 'File not found: 1rxGkxQFdKxtwEKN-p-k5Fe8JC6f5uNg8.', 'locationType': 'parameter', 'location': 'fileId'}], 'code': 404, 'message': 'File not found: 1rxGkxQFdKxtwEKN-p-k5Fe8JC6f5uNg8.'}} null \N 6 '1rxgkxqfdkxtwekn':24B,38B '1rxgkxqfdkxtwekn-p-k5fe8jc6f5ung8':23B,37B '404':32B 'app':3A 'code':31B 'core':2A 'creation':4B 'dispatch':1A 'domain':15B 'error':12B,13B,14B 'fail':8B,11B 'file':20B,34B 'fileid':30B 'found':22B,36B 'global':16B 'incid':6B 'k5fe8jc6f5ung8':26B,40B 'locat':29B 'locationtyp':27B 'messag':19B,33B 'notfound':18B 'p':25B,39B 'paramet':28B 'reason':9B,17B 'request':10B 'storag':7B 2021-07-27 20:11:45.382849 2021-07-27 20:11:45.350277 \N \N \N \N \N \N +53 0fad1b80-d626-4c97-b535-dfdf0098485e 2021-07-27 20:11:47.168067 2021-07-27 20:11:47.168067 Google Calendar Plugin - Conference Management Incident conference created null \N 6 'calendar':2A 'confer':4A,7B 'creat':8B 'googl':1A 'incid':6B 'manag':5A 'plugin':3A 2021-07-27 20:11:47.1984 2021-07-27 20:11:47.168696 \N \N \N \N \N \N +55 6c0b289e-5dff-470a-aed7-0caf9405c082 2021-07-27 20:11:48.26168 2021-07-27 20:11:48.26168 Slack Plugin - Conversation Management Incident conversation created null \N 6 'convers':3A,6B 'creat':7B 'incid':5B 'manag':4A 'plugin':2A 'slack':1A 2021-07-27 20:11:48.278603 2021-07-27 20:11:48.26263 \N \N \N \N \N \N +56 6fe13da1-de96-41dd-ba9a-29a752060b46 2021-07-27 20:11:48.28756 2021-07-27 20:11:48.28756 Dispatch Core App Conversation added to incident null \N 6 'ad':5B 'app':3A 'convers':4B 'core':2A 'dispatch':1A 'incid':7B 2021-07-27 20:11:48.307412 2021-07-27 20:11:48.290557 \N \N \N \N \N \N +58 d66ec104-af72-46df-80a8-2b32a6fa8944 2021-07-27 20:11:59.021607 2021-07-27 20:11:59.021607 Dispatch Core App Incident notifications sent null \N 6 'app':3A 'core':2A 'dispatch':1A 'incid':4B 'notif':5B 'sent':6B 2021-07-27 20:11:59.04991 2021-07-27 20:11:59.022365 \N \N \N \N \N \N +59 7e011a9d-9bb9-4770-b5e3-1a21197e60c2 2021-07-28 17:13:49.192243 2021-07-28 17:13:49.192243 Dispatch Core App New incident task created by Kevin Glisson {"weblink": null} \N 4 'app':3A 'core':2A 'creat':7B 'dispatch':1A 'glisson':10B 'incid':5B 'kevin':9B 'new':4B 'task':6B 2021-07-28 17:13:49.218153 2021-07-28 17:13:49.199624 \N \N \N \N \N \N \. @@ -8136,11 +8136,11 @@ google-group-participant-notifications-group 04k668n30umn23k https://groups.goog -- Data for Name: incident; Type: TABLE DATA; Schema: dispatch_organization_default; Owner: postgres -- -COPY dispatch_organization_default.incident (id, name, title, description, status, visibility, reported_at, stable_at, closed_at, search_vector, incident_priority_id, incident_type_id, duplicate_id, project_id, created_at, updated_at, resolution, participants_team, participants_location, commanders_location, reporters_location, commander_id, reporter_id, liaison_id, scribe_id, incident_document_id, incident_review_document_id, tactical_group_id, notifications_group_id, incident_severity_id, delay_executive_report_reminder, delay_tactical_report_reminder) FROM stdin; -2 dispatch-default-default-2 This is just a test A very bad situation Active Open 2021-07-27 19:47:56.28659 \N \N '2':14A 'bad':8C 'default':12A,13A 'dispatch':11A 'dispatch-default-default':10A 'situat':9C 'test':5B 3 3 \N 1 2021-07-27 19:47:56.286601 2021-07-27 19:48:23.867097 Description of the actions taken to resolve the incident. Unknown America/Los_Angeles America/Los_Angeles America/Los_Angeles 1 1 1 \N \N \N 1 2 1 \N \N -4 dispatch-default-default-4 Heartbleed Sad PKI noises Stable Open 2021-07-27 19:52:57.757214 2021-07-27 19:54:03.96021 \N '4':9A 'default':7A,8A 'dispatch':6A 'dispatch-default-default':5A 'heartble':1B 'nois':4C 'pki':3C 'sad':2C 1 1 \N 1 2021-07-27 19:52:57.757221 2021-07-28 17:13:49.216785 Description of the actions taken to resolve the incident. Unknown America/Los_Angeles America/Los_Angeles America/Los_Angeles 2 2 2 \N \N \N 3 4 1 \N \N -5 dispatch-default-default-5 Solarwinds More like a solar tornado. Active Open 2021-07-27 20:06:15.252697 \N \N '5':11A 'default':9A,10A 'dispatch':8A 'dispatch-default-default':7A 'like':3C 'solar':5C 'solarwind':1B 'tornado':6C 2 1 \N 1 2021-07-27 20:06:15.252705 2021-07-27 20:06:41.627061 Description of the actions taken to resolve the incident. Unknown America/Los_Angeles America/Los_Angeles America/Los_Angeles 3 3 3 \N \N \N 5 6 1 \N \N -6 dispatch-default-default-6 Kaseya Those backups are good right? Active Open 2021-07-27 20:11:30.525883 \N \N '6':11A 'backup':3C 'default':9A,10A 'dispatch':8A 'dispatch-default-default':7A 'good':5C 'kaseya':1B 'right':6C 3 1 \N 1 2021-07-27 20:11:30.525893 2021-07-27 20:11:59.048666 Description of the actions taken to resolve the incident. Unknown America/Los_Angeles America/Los_Angeles America/Los_Angeles 4 4 4 \N \N \N 7 8 1 \N \N +COPY dispatch_organization_default.incident (id, name, title, description, status, visibility, reported_at, stable_at, closed_at, search_vector, incident_priority_id, incident_type_id, duplicate_id, project_id, created_at, updated_at, resolution, participants_team, participants_location, commanders_location, reporters_location, commander_id, reporter_id, liaison_id, scribe_id, summary, incident_document_id, incident_review_document_id, tactical_group_id, notifications_group_id, incident_severity_id, delay_executive_report_reminder, delay_tactical_report_reminder) FROM stdin; +2 dispatch-default-default-2 This is just a test A very bad situation Active Open 2021-07-27 19:47:56.28659 \N \N '2':14A 'bad':8C 'default':12A,13A 'dispatch':11A 'dispatch-default-default':10A 'situat':9C 'test':5B 3 3 \N 1 2021-07-27 19:47:56.286601 2021-07-27 19:48:23.867097 Description of the actions taken to resolve the incident. Unknown America/Los_Angeles America/Los_Angeles America/Los_Angeles 1 1 1 \N \N \N \N 1 2 1 \N \N +4 dispatch-default-default-4 Heartbleed Sad PKI noises Stable Open 2021-07-27 19:52:57.757214 2021-07-27 19:54:03.96021 \N '4':9A 'default':7A,8A 'dispatch':6A 'dispatch-default-default':5A 'heartble':1B 'nois':4C 'pki':3C 'sad':2C 1 1 \N 1 2021-07-27 19:52:57.757221 2021-07-28 17:13:49.216785 Description of the actions taken to resolve the incident. Unknown America/Los_Angeles America/Los_Angeles America/Los_Angeles 2 2 2 \N \N \N \N 3 4 1 \N \N +5 dispatch-default-default-5 Solarwinds More like a solar tornado. Active Open 2021-07-27 20:06:15.252697 \N \N '5':11A 'default':9A,10A 'dispatch':8A 'dispatch-default-default':7A 'like':3C 'solar':5C 'solarwind':1B 'tornado':6C 2 1 \N 1 2021-07-27 20:06:15.252705 2021-07-27 20:06:41.627061 Description of the actions taken to resolve the incident. Unknown America/Los_Angeles America/Los_Angeles America/Los_Angeles 3 3 3 \N \N \N \N 5 6 1 \N \N +6 dispatch-default-default-6 Kaseya Those backups are good right? Active Open 2021-07-27 20:11:30.525883 \N \N '6':11A 'backup':3C 'default':9A,10A 'dispatch':8A 'dispatch-default-default':7A 'good':5C 'kaseya':1B 'right':6C 3 1 \N 1 2021-07-27 20:11:30.525893 2021-07-27 20:11:59.048666 Description of the actions taken to resolve the incident. Unknown America/Los_Angeles America/Los_Angeles America/Los_Angeles 4 4 4 \N \N \N \N 7 8 1 \N \N \. @@ -8170,10 +8170,10 @@ COPY dispatch_organization_default.incident_cost_type (id, name, description, ca -- Data for Name: incident_priority; Type: TABLE DATA; Schema: dispatch_organization_default; Owner: postgres -- -COPY dispatch_organization_default.incident_priority (id, name, description, page_commander, tactical_report_reminder, executive_report_reminder, enabled, "default", view_order, search_vector, project_id, color) FROM stdin; -1 High This incident may require your team's full attention 24x7, and should be prioritized over all other work, until the incident is stable. The incident commander will get paged. f 2 6 t f 1 '24x7':11 'attent':10 'command':27 'full':9 'get':29 'high':1 'incid':3,22,26 'may':4 'page':30 'priorit':15 'requir':5 'stabl':24 'team':7 'work':19 1 \N -2 Medium This incident may require your team's full attention during waking hours (Pacific Time), including weekends, until the incident is stable. f 6 12 t f 2 'attent':10 'full':9 'hour':13 'incid':3,20 'includ':16 'may':4 'medium':1 'pacif':14 'requir':5 'stabl':22 'team':7 'time':15 'wake':12 'weekend':17 1 \N -3 Low This incident may require your team's attention during working hours (Pacific Time), until the incident is stable. f 12 999999 t t 3 'attent':9 'hour':12 'incid':3,17 'low':1 'may':4 'pacif':13 'requir':5 'stabl':19 'team':7 'time':14 'work':11 1 \N +COPY dispatch_organization_default.incident_priority (id, name, description, page_commander, disable_delayed_message_warning, tactical_report_reminder, executive_report_reminder, enabled, "default", view_order, search_vector, project_id, color) FROM stdin; +1 High This incident may require your team's full attention 24x7, and should be prioritized over all other work, until the incident is stable. The incident commander will get paged. f \N 2 6 t f 1 '24x7':11 'attent':10 'command':27 'full':9 'get':29 'high':1 'incid':3,22,26 'may':4 'page':30 'priorit':15 'requir':5 'stabl':24 'team':7 'work':19 1 \N +2 Medium This incident may require your team's full attention during waking hours (Pacific Time), including weekends, until the incident is stable. f \N 6 12 t f 2 'attent':10 'full':9 'hour':13 'incid':3,20 'includ':16 'may':4 'medium':1 'pacif':14 'requir':5 'stabl':22 'team':7 'time':15 'wake':12 'weekend':17 1 \N +3 Low This incident may require your team's attention during working hours (Pacific Time), until the incident is stable. f \N 12 999999 t t 3 'attent':9 'hour':12 'incid':3,17 'low':1 'may':4 'pacif':13 'requir':5 'stabl':19 'team':7 'time':14 'work':11 1 \N \. @@ -8222,13 +8222,13 @@ COPY dispatch_organization_default.incident_severity (id, name, description, col -- Data for Name: incident_type; Type: TABLE DATA; Schema: dispatch_organization_default; Owner: postgres -- -COPY dispatch_organization_default.incident_type (id, name, slug, description, exclude_from_metrics, enabled, "default", visibility, plugin_metadata, incident_template_document_id, executive_template_document_id, review_template_document_id, tracking_template_document_id, commander_service_id, liaison_service_id, search_vector, project_id, cost_model_id, channel_description, description_service_id, task_plugin_metadata) FROM stdin; -6 Other \N This is a miscellaneous incident. f t f Open [] 1 2 3 \N \N \N 'incid':6 'involv':7 'misc':2,9 'oth':1,8 1 \N \N \N [] -5 Denial of Service \N This is an incident involving a Denial of Service attack on a compute resource or service. f t f Open [] 1 2 3 \N \N \N 'ddos':1,8 'den':2,9 'incid':6 'involv':7 1 \N \N \N [] -4 Malware \N This is an incident involving malware on a host. f t f Open [] 1 2 3 \N \N \N 'incid':6 'involv':7 'mal':1,8 1 \N \N \N [] -3 Customer Data \N This is an incident involving customer data. f t f Open [] 1 2 3 \N \N \N 'custom':1,8 'data':2,9 'incid':6 'involv':7 1 \N \N \N [] -2 Employee Investigation \N This is an employee investigation. f t f Restricted [] 1 2 3 \N \N \N 'employe':1,6 'investig':2,7 1 \N \N \N [] -1 Vulnerability \N This is an incident involving a misconfiguration or vulnerability. f t t Open [] 1 2 3 \N \N \N 'incid':5 'involv':6 'misconfigur':8 'vulner':1,10 1 \N \N \N [] +COPY dispatch_organization_default.incident_type (id, name, slug, description, exclude_from_metrics, enabled, "default", visibility, plugin_metadata, exclude_from_reminders, exclude_from_review, incident_template_document_id, executive_template_document_id, review_template_document_id, tracking_template_document_id, commander_service_id, liaison_service_id, search_vector, project_id, cost_model_id, channel_description, description_service_id, task_plugin_metadata) FROM stdin; +6 Other \N This is a miscellaneous incident. f t f Open [] \N \N 1 2 3 \N \N \N 'incid':6 'involv':7 'misc':2,9 'oth':1,8 1 \N \N \N [] +5 Denial of Service \N This is an incident involving a Denial of Service attack on a compute resource or service. f t f Open [] \N \N 1 2 3 \N \N \N 'ddos':1,8 'den':2,9 'incid':6 'involv':7 1 \N \N \N [] +4 Malware \N This is an incident involving malware on a host. f t f Open [] \N \N 1 2 3 \N \N \N 'incid':6 'involv':7 'mal':1,8 1 \N \N \N [] +3 Customer Data \N This is an incident involving customer data. f t f Open [] \N \N 1 2 3 \N \N \N 'custom':1,8 'data':2,9 'incid':6 'involv':7 1 \N \N \N [] +2 Employee Investigation \N This is an employee investigation. f t f Restricted [] \N \N 1 2 3 \N \N \N 'employe':1,6 'investig':2,7 1 \N \N \N [] +1 Vulnerability \N This is an incident involving a misconfiguration or vulnerability. f t t Open [] \N \N 1 2 3 \N \N \N 'incid':5 'involv':6 'misconfigur':8 'vulner':1,10 1 \N \N \N [] \. @@ -8332,8 +8332,8 @@ COPY dispatch_organization_default.plugin_instance (id, enabled, plugin_id, proj -- Data for Name: project; Type: TABLE DATA; Schema: dispatch_organization_default; Owner: postgres -- -COPY dispatch_organization_default.project (id, name, description, "default", color, organization_id, search_vector, annual_employee_cost, business_year_hours, owner_email, owner_conversation, send_daily_reports, stable_priority_id, enabled, allow_self_join, storage_folder_one, storage_folder_two, storage_use_folder_one_as_primary, storage_use_title, select_commander_visibility, send_weekly_reports, weekly_report_notification_id, report_incident_instructions, report_incident_title_hint, report_incident_description_hint) FROM stdin; -1 default Default dispatch project. t \N 1 'default':1A,2B 'dispatch':3B 'project':4B 650000 2080 team@acme.com \N \N \N t t \N \N \N f t f \N \N \N \N +COPY dispatch_organization_default.project (id, name, display_name, description, "default", color, organization_id, search_vector, annual_employee_cost, business_year_hours, owner_email, owner_conversation, send_daily_reports, stable_priority_id, enabled, allow_self_join, storage_folder_one, storage_folder_two, storage_use_folder_one_as_primary, storage_use_title, select_commander_visibility, send_weekly_reports, weekly_report_notification_id, report_incident_instructions, report_incident_title_hint, report_incident_description_hint, snooze_extension_oncall_service_id) FROM stdin; +1 default default Default dispatch project. t \N 1 'default':1A,2B 'dispatch':3B 'project':4B 650000 2080 team@acme.com \N \N \N t t \N \N \N f t f \N \N \N \N \N \. @@ -8388,7 +8388,7 @@ COPY dispatch_organization_default.search_filter (id, name, description, express -- Data for Name: service; Type: TABLE DATA; Schema: dispatch_organization_default; Owner: postgres -- -COPY dispatch_organization_default.service (id, is_active, name, type, description, external_id, search_vector, project_id, updated_at, created_at, evergreen, evergreen_owner, evergreen_reminder_interval, evergreen_last_reminder_at, health_metrics) FROM stdin; +COPY dispatch_organization_default.service (id, is_active, name, type, description, external_id, search_vector, project_id, updated_at, created_at, evergreen, shift_hours_type, evergreen_owner, evergreen_reminder_interval, evergreen_last_reminder_at, health_metrics) FROM stdin; \. @@ -8436,7 +8436,7 @@ COPY dispatch_organization_default.signal_filter (evergreen, evergreen_owner, ev -- Data for Name: signal_instance; Type: TABLE DATA; Schema: dispatch_organization_default; Owner: postgres -- -COPY dispatch_organization_default.signal_instance (id, case_id, signal_id, raw, project_id, updated_at, created_at, filter_action, engagement_thread_ts, case_type_id, case_priority_id, canary) FROM stdin; +COPY dispatch_organization_default.signal_instance (id, case_id, signal_id, raw, project_id, updated_at, created_at, filter_action, engagement_thread_ts, conversation_target, case_type_id, case_priority_id, oncall_service_id, canary) FROM stdin; \. @@ -13128,6 +13128,7 @@ ALTER TABLE ONLY dispatch_organization_default.event ALTER TABLE ONLY dispatch_organization_default.event ADD CONSTRAINT event_individual_id_fkey FOREIGN KEY (individual_id) REFERENCES dispatch_organization_default.individual_contact(id) ON DELETE CASCADE; + -- -- Name: event event_signal_id_fkey; Type: FK CONSTRAINT; Schema: dispatch_organization_default; Owner: postgres -- @@ -13135,6 +13136,7 @@ ALTER TABLE ONLY dispatch_organization_default.event ALTER TABLE ONLY dispatch_organization_default.event ADD CONSTRAINT event_signal_id_fkey FOREIGN KEY (signal_id) REFERENCES dispatch_organization_default.signal(id) ON DELETE CASCADE; + -- -- Name: feedback feedback_incident_id_fkey; Type: FK CONSTRAINT; Schema: dispatch_organization_default; Owner: postgres -- @@ -13856,26 +13858,28 @@ ALTER TABLE ONLY dispatch_organization_default.signal_instance -- --- Name: signal_instance signal_instance_project_id_fkey; Type: FK CONSTRAINT; Schema: dispatch_organization_default; Owner: postgres +-- Name: signal_instance signal_instance_oncall_service_id_fkey; Type: FK CONSTRAINT; Schema: dispatch_organization_default; Owner: postgres -- ALTER TABLE ONLY dispatch_organization_default.signal_instance - ADD CONSTRAINT signal_instance_project_id_fkey FOREIGN KEY (project_id) REFERENCES dispatch_organization_default.project(id) ON DELETE CASCADE; + ADD CONSTRAINT signal_instance_oncall_service_id_fkey FOREIGN KEY (oncall_service_id) REFERENCES dispatch_organization_default.service(id); -- --- Name: signal_instance signal_instance_signal_id_fkey; Type: FK CONSTRAINT; Schema: dispatch_organization_default; Owner: postgres +-- Name: signal_instance signal_instance_project_id_fkey; Type: FK CONSTRAINT; Schema: dispatch_organization_default; Owner: postgres -- ALTER TABLE ONLY dispatch_organization_default.signal_instance - ADD CONSTRAINT signal_instance_signal_id_fkey FOREIGN KEY (signal_id) REFERENCES dispatch_organization_default.signal(id); + ADD CONSTRAINT signal_instance_project_id_fkey FOREIGN KEY (project_id) REFERENCES dispatch_organization_default.project(id) ON DELETE CASCADE; + -- --- Name: signal_instance signal_instance_oncall_service_id_fkey; Type: FK CONSTRAINT; Schema: dispatch_organization_default; Owner: postgres +-- Name: signal_instance signal_instance_signal_id_fkey; Type: FK CONSTRAINT; Schema: dispatch_organization_default; Owner: postgres -- ALTER TABLE ONLY dispatch_organization_default.signal_instance - ADD CONSTRAINT signal_instance_oncall_service_id_fkey FOREIGN KEY (oncall_service_id) REFERENCES dispatch_organization_default.service(id); + ADD CONSTRAINT signal_instance_signal_id_fkey FOREIGN KEY (signal_id) REFERENCES dispatch_organization_default.signal(id); + -- -- Name: signal signal_oncall_service_id_fkey; Type: FK CONSTRAINT; Schema: dispatch_organization_default; Owner: postgres @@ -15032,3 +15036,4 @@ ALTER TABLE ONLY public.workflow_term -- -- PostgreSQL database dump complete -- + From 4a7654dbb4983df9f52d657369399e13e429abb8 Mon Sep 17 00:00:00 2001 From: David Whittaker Date: Sun, 11 May 2025 16:42:56 -0700 Subject: [PATCH 5/5] fixing validation errors for incident create --- src/dispatch/incident/models.py | 17 ++++- src/dispatch/incident/views.py | 19 +++++- src/dispatch/static/dispatch/components.d.ts | 68 ++++++++++---------- src/dispatch/ticket/models.py | 4 +- 4 files changed, 70 insertions(+), 38 deletions(-) diff --git a/src/dispatch/incident/models.py b/src/dispatch/incident/models.py index 44d158630989..462bce5a6dd9 100644 --- a/src/dispatch/incident/models.py +++ b/src/dispatch/incident/models.py @@ -1,4 +1,5 @@ """Models for incident resources in the Dispatch application.""" + from collections import Counter, defaultdict from datetime import datetime @@ -238,6 +239,7 @@ def participant_observer(self, participants): class ProjectRead(DispatchBase): """Pydantic model for reading a project resource.""" + id: PrimaryKey | None name: NameStr color: str | None @@ -248,12 +250,14 @@ class ProjectRead(DispatchBase): class CaseRead(DispatchBase): """Pydantic model for reading a case resource.""" + id: PrimaryKey name: NameStr | None class TaskRead(DispatchBase): """Pydantic model for reading a task resource.""" + id: PrimaryKey assignees: list[ParticipantRead | None] = [] created_at: datetime | None @@ -268,6 +272,7 @@ class TaskRead(DispatchBase): class TaskReadMinimal(DispatchBase): """Pydantic model for reading a minimal task resource.""" + id: PrimaryKey description: str | None = None status: TaskStatus = TaskStatus.open @@ -276,6 +281,7 @@ class TaskReadMinimal(DispatchBase): # Pydantic models... class IncidentBase(DispatchBase): """Base Pydantic model for incident resources.""" + title: str description: str resolution: str | None @@ -301,8 +307,9 @@ def description_required(cls, v: str) -> str: class IncidentCreate(IncidentBase): """Pydantic model for creating an incident resource.""" - commander: ParticipantUpdate | None - commander_email: str | None + + commander: ParticipantUpdate | None = None + commander_email: str | None = None incident_priority: IncidentPriorityCreate | None incident_severity: IncidentSeverityCreate | None incident_type: IncidentTypeCreate | None @@ -313,12 +320,14 @@ class IncidentCreate(IncidentBase): class IncidentReadBasic(DispatchBase): """Pydantic model for reading a basic incident resource.""" + id: PrimaryKey name: NameStr | None class IncidentReadMinimal(IncidentBase): """Pydantic model for reading a minimal incident resource.""" + id: PrimaryKey closed_at: datetime | None = None commander: ParticipantReadMinimal | None @@ -348,6 +357,7 @@ class IncidentReadMinimal(IncidentBase): class IncidentUpdate(IncidentBase): """Pydantic model for updating an incident resource.""" + cases: list[CaseRead] | None = [] commander: ParticipantUpdate | None delay_executive_report_reminder: datetime | None = None @@ -384,6 +394,7 @@ def find_exclusive(cls, v): class IncidentRead(IncidentBase): """Pydantic model for reading an incident resource.""" + id: PrimaryKey cases: list[CaseRead] | None = [] closed_at: datetime | None = None @@ -424,6 +435,7 @@ class IncidentRead(IncidentBase): class IncidentExpandedPagination(Pagination): """Pydantic model for paginated expanded incident results.""" + itemsPerPage: int page: int items: list[IncidentRead] = [] @@ -431,4 +443,5 @@ class IncidentExpandedPagination(Pagination): class IncidentPagination(Pagination): """Pydantic model for paginated incident results.""" + items: list[IncidentReadMinimal] = [] diff --git a/src/dispatch/incident/views.py b/src/dispatch/incident/views.py index 1d3045bce940..db26e4d3c507 100644 --- a/src/dispatch/incident/views.py +++ b/src/dispatch/incident/views.py @@ -24,8 +24,10 @@ from dispatch.event.models import EventCreateMinimal, EventUpdate from dispatch.incident.enums import IncidentStatus from dispatch.individual.models import IndividualContactRead +from dispatch.individual.service import get_or_create from dispatch.models import OrganizationSlug, PrimaryKey from dispatch.participant.models import ParticipantUpdate +from dispatch.project import service as project_service from dispatch.report import flows as report_flows from dispatch.report.models import ExecutiveReportCreate, TacticalReportCreate @@ -120,8 +122,23 @@ def create_incident( ): """Creates a new incident.""" if not incident_in.reporter: + # Ensure the individual exists, create if not + if incident_in.project is None: + raise HTTPException( + status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=[{"msg": "Project must be set to create reporter individual."}], + ) + # Fetch the full DB project instance + project = project_service.get_by_name_or_default( + db_session=db_session, project_in=incident_in.project + ) + individual = get_or_create( + db_session=db_session, + email=current_user.email, + project=project, + ) incident_in.reporter = ParticipantUpdate( - individual=IndividualContactRead(email=current_user.email) + individual=IndividualContactRead(id=individual.id, email=individual.email) ) incident = create(db_session=db_session, incident_in=incident_in) diff --git a/src/dispatch/static/dispatch/components.d.ts b/src/dispatch/static/dispatch/components.d.ts index 269c2d6c81e9..cd9ce5015d8e 100644 --- a/src/dispatch/static/dispatch/components.d.ts +++ b/src/dispatch/static/dispatch/components.d.ts @@ -1,51 +1,51 @@ // generated by unplugin-vue-components // We suggest you to commit this file into source control // Read more: https://github.com/vuejs/core/pull/3399 -import "@vue/runtime-core" +import '@vue/runtime-core' export {} -declare module "@vue/runtime-core" { +declare module '@vue/runtime-core' { export interface GlobalComponents { - AdminLayout: typeof import("./src/components/layouts/AdminLayout.vue")["default"] + AdminLayout: typeof import('./src/components/layouts/AdminLayout.vue')['default'] AnimatedNumber: typeof import("./src/components/AnimatedNumber.vue")["default"] - AppDrawer: typeof import("./src/components/AppDrawer.vue")["default"] - AppToolbar: typeof import("./src/components/AppToolbar.vue")["default"] - AutoComplete: typeof import("./src/components/AutoComplete.vue")["default"] + AppDrawer: typeof import('./src/components/AppDrawer.vue')['default'] + AppToolbar: typeof import('./src/components/AppToolbar.vue')['default'] + AutoComplete: typeof import('./src/components/AutoComplete.vue')['default'] Avatar: typeof import("./src/components/Avatar.vue")["default"] - BaseCombobox: typeof import("./src/components/BaseCombobox.vue")["default"] - BasicLayout: typeof import("./src/components/layouts/BasicLayout.vue")["default"] - ColorPickerInput: typeof import("./src/components/ColorPickerInput.vue")["default"] - DashboardLayout: typeof import("./src/components/layouts/DashboardLayout.vue")["default"] - DateChipGroupRelative: typeof import("./src/components/DateChipGroupRelative.vue")["default"] - DateTimePicker: typeof import("./src/components/DateTimePicker.vue")["default"] - DateTimePickerMenu: typeof import("./src/components/DateTimePickerMenu.vue")["default"] - DateWindowInput: typeof import("./src/components/DateWindowInput.vue")["default"] - DefaultLayout: typeof import("./src/components/layouts/DefaultLayout.vue")["default"] - DMenu: typeof import("./src/components/DMenu.vue")["default"] - DTooltip: typeof import("./src/components/DTooltip.vue")["default"] - GenaiAnalysisDisplay: typeof import("./src/components/GenaiAnalysisDisplay.vue")["default"] - IconPickerInput: typeof import("./src/components/IconPickerInput.vue")["default"] - InfoWidget: typeof import("./src/components/InfoWidget.vue")["default"] - Loading: typeof import("./src/components/Loading.vue")["default"] - LockButton: typeof import("./src/components/LockButton.vue")["default"] - MonacoEditor: typeof import("./src/components/MonacoEditor.vue")["default"] - NotificationSnackbarsWrapper: typeof import("./src/components/NotificationSnackbarsWrapper.vue")["default"] + BaseCombobox: typeof import('./src/components/BaseCombobox.vue')['default'] + BasicLayout: typeof import('./src/components/layouts/BasicLayout.vue')['default'] + ColorPickerInput: typeof import('./src/components/ColorPickerInput.vue')['default'] + DashboardLayout: typeof import('./src/components/layouts/DashboardLayout.vue')['default'] + DateChipGroupRelative: typeof import('./src/components/DateChipGroupRelative.vue')['default'] + DateTimePicker: typeof import('./src/components/DateTimePicker.vue')['default'] + DateTimePickerMenu: typeof import('./src/components/DateTimePickerMenu.vue')['default'] + DateWindowInput: typeof import('./src/components/DateWindowInput.vue')['default'] + DefaultLayout: typeof import('./src/components/layouts/DefaultLayout.vue')['default'] + DMenu: typeof import('./src/components/DMenu.vue')['default'] + DTooltip: typeof import('./src/components/DTooltip.vue')['default'] + GenaiAnalysisDisplay: typeof import('./src/components/GenaiAnalysisDisplay.vue')['default'] + IconPickerInput: typeof import('./src/components/IconPickerInput.vue')['default'] + InfoWidget: typeof import('./src/components/InfoWidget.vue')['default'] + Loading: typeof import('./src/components/Loading.vue')['default'] + LockButton: typeof import('./src/components/LockButton.vue')['default'] + MonacoEditor: typeof import('./src/components/MonacoEditor.vue')['default'] + NotificationSnackbarsWrapper: typeof import('./src/components/NotificationSnackbarsWrapper.vue')['default'] PageHeader: typeof import("./src/components/PageHeader.vue")["default"] ParticipantAutoComplete: typeof import("./src/components/ParticipantAutoComplete.vue")["default"] - ParticipantSelect: typeof import("./src/components/ParticipantSelect.vue")["default"] - PreciseDateTimePicker: typeof import("./src/components/PreciseDateTimePicker.vue")["default"] + ParticipantSelect: typeof import('./src/components/ParticipantSelect.vue')['default'] + PreciseDateTimePicker: typeof import('./src/components/PreciseDateTimePicker.vue')['default'] ProjectAutoComplete: typeof import("./src/components/ProjectAutoComplete.vue")["default"] - Refresh: typeof import("./src/components/Refresh.vue")["default"] - RichEditor: typeof import("./src/components/RichEditor.vue")["default"] - RouterLink: typeof import("vue-router")["RouterLink"] - RouterView: typeof import("vue-router")["RouterView"] - SavingState: typeof import("./src/components/SavingState.vue")["default"] - SearchPopover: typeof import("./src/components/SearchPopover.vue")["default"] - SettingsBreadcrumbs: typeof import("./src/components/SettingsBreadcrumbs.vue")["default"] + Refresh: typeof import('./src/components/Refresh.vue')['default'] + RichEditor: typeof import('./src/components/RichEditor.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + SavingState: typeof import('./src/components/SavingState.vue')['default'] + SearchPopover: typeof import('./src/components/SearchPopover.vue')['default'] + SettingsBreadcrumbs: typeof import('./src/components/SettingsBreadcrumbs.vue')['default'] ShepherdStep: typeof import("./src/components/ShepherdStep.vue")["default"] ShpherdStep: typeof import("./src/components/ShpherdStep.vue")["default"] - StatWidget: typeof import("./src/components/StatWidget.vue")["default"] + StatWidget: typeof import('./src/components/StatWidget.vue')['default'] SubjectLastUpdated: typeof import("./src/components/SubjectLastUpdated.vue")["default"] TimePicker: typeof import("./src/components/TimePicker.vue")["default"] VAlert: typeof import("vuetify/lib")["VAlert"] diff --git a/src/dispatch/ticket/models.py b/src/dispatch/ticket/models.py index dbe3e4689fd4..1f4ad8051041 100644 --- a/src/dispatch/ticket/models.py +++ b/src/dispatch/ticket/models.py @@ -11,6 +11,7 @@ class Ticket(Base, ResourceMixin): """SQLAlchemy model for ticket resources.""" + id = Column(Integer, primary_key=True) incident_id = Column(Integer, ForeignKey("incident.id", ondelete="CASCADE")) case_id = Column(Integer, ForeignKey("case.id", ondelete="CASCADE")) @@ -32,7 +33,8 @@ class TicketUpdate(TicketBase): class TicketRead(TicketBase): """Pydantic model for reading a ticket resource.""" - description: str | None = None + + description: str | None = TICKET_DESCRIPTION @field_validator("description", mode="before") @classmethod