Adding table and model for group namespace filters
What does this MR do and why?
As part of consolidation of external audit event streaming destinations in &12339, we are creating a new table for storing namespace filters for group level audit event streaming destinations.
In this MR:
- Table
audit_events_streaming_group_namespace_filters
for storing namespace filters for destinations is created. Combination of namespace and destination should be unique. - Since there are 2 foreign keys associated with this table, so we are adding them in different migrations as per https://docs.gitlab.com/ee/development/migration_style_guide.html#creating-a-new-table-when-we-have-two-foreign-keys.
- We are also adding a limit of 5 namespace filters per destination.
Database
Destination foreign key migration
## up
bundle exec rake db:migrate:up:main VERSION=20240419074624
main: == [advisory_lock_connection] object_id: 121660, pg_backend_pid: 75228
main: == 20240419074624 AddDestinationFkToAuditEventsGroupNamespaceFilters: migrating
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- execute("ALTER TABLE audit_events_streaming_group_namespace_filters ADD CONSTRAINT fk_8ed182d7da FOREIGN KEY (external_streaming_destination_id) REFERENCES audit_events_group_external_streaming_destinations (id) ON DELETE CASCADE NOT VALID;")
main: -> 0.0027s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0001s
main: -- execute("ALTER TABLE audit_events_streaming_group_namespace_filters VALIDATE CONSTRAINT fk_8ed182d7da;")
main: -> 0.0032s
main: -- execute("RESET statement_timeout")
main: -> 0.0001s
main: == 20240419074624 AddDestinationFkToAuditEventsGroupNamespaceFilters: migrated (0.0343s)
main: == [advisory_lock_connection] object_id: 121660, pg_backend_pid: 75228
## down
bundle exec rake db:migrate:down:main VERSION=20240419074624
main: == [advisory_lock_connection] object_id: 121700, pg_backend_pid: 74709
main: == 20240419074624 AddDestinationFkToAuditEventsGroupNamespaceFilters: reverting
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- remove_foreign_key(:audit_events_streaming_group_namespace_filters, {:column=>:external_streaming_destination_id})
main: -> 0.0028s
main: == 20240419074624 AddDestinationFkToAuditEventsGroupNamespaceFilters: reverted (0.0451s)
main: == [advisory_lock_connection] object_id: 121700, pg_backend_pid: 74709
Namespace foreign key migration
## up
bundle exec rake db:migrate:up:main VERSION=20240419074648
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 76506
main: == 20240419074648 AddNamespaceFkToAuditEventsGroupNamespaceFilters: migrating =
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- execute("ALTER TABLE audit_events_streaming_group_namespace_filters ADD CONSTRAINT fk_a1a4486a96 FOREIGN KEY (namespace_id) REFERENCES namespaces (id) ON DELETE CASCADE NOT VALID;")
main: -> 0.0012s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0001s
main: -- execute("ALTER TABLE audit_events_streaming_group_namespace_filters VALIDATE CONSTRAINT fk_a1a4486a96;")
main: -> 0.0049s
main: -- execute("RESET statement_timeout")
main: -> 0.0003s
main: == 20240419074648 AddNamespaceFkToAuditEventsGroupNamespaceFilters: migrated (0.0375s)
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 76506
## down
bundle exec rake db:migrate:down:main VERSION=20240419074648
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 75961
main: == 20240419074648 AddNamespaceFkToAuditEventsGroupNamespaceFilters: reverting =
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- remove_foreign_key(:audit_events_streaming_group_namespace_filters, {:column=>:namespace_id})
main: -> 0.0025s
main: == 20240419074648 AddNamespaceFkToAuditEventsGroupNamespaceFilters: reverted (0.0288s)
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 75961
Create table migration
## up
bundle exec rake db:migrate:up:main VERSION=20240419071412
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 77827
main: == 20240419071412 CreateAuditEventsStreamingGroupNamespaceFilters: migrating ==
main: -- create_table(:audit_events_streaming_group_namespace_filters)
main: -> 0.0055s
main: == 20240419071412 CreateAuditEventsStreamingGroupNamespaceFilters: migrated (0.0153s)
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 77827
## down
bundle exec rake db:migrate:down:main VERSION=20240419071412
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 77297
main: == 20240419071412 CreateAuditEventsStreamingGroupNamespaceFilters: reverting ==
main: -- drop_table(:audit_events_streaming_group_namespace_filters)
main: -> 0.0019s
main: == 20240419071412 CreateAuditEventsStreamingGroupNamespaceFilters: reverted (0.0068s)
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 77297
MR acceptance checklist
Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
How to set up and validate locally
Numbered steps to set up and validate the change are strongly suggested.
Related to #436605 (closed)
Edited by Hitesh Raghuvanshi