Adding table and model for instance 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 instance level audit event streaming destinations.
In this MR:
- Table
audit_events_streaming_instance_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
Namespace Foreign key migration
## up
bundle exec rake db:migrate:up:main VERSION=20240416141703
main: == [advisory_lock_connection] object_id: 121660, pg_backend_pid: 67793
main: == 20240416141703 AddNamespaceFkToAuditEventsInstanceNamespaceFilters: migrating
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- execute("ALTER TABLE audit_events_streaming_instance_namespace_filters ADD CONSTRAINT fk_ac20a85a68 FOREIGN KEY (namespace_id) REFERENCES namespaces (id) ON DELETE CASCADE NOT VALID;")
main: -> 0.0043s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0001s
main: -- execute("ALTER TABLE audit_events_streaming_instance_namespace_filters VALIDATE CONSTRAINT fk_ac20a85a68;")
main: -> 0.0057s
main: -- execute("RESET statement_timeout")
main: -> 0.0002s
main: == 20240416141703 AddNamespaceFkToAuditEventsInstanceNamespaceFilters: migrated (0.0531s)
main: == [advisory_lock_connection] object_id: 121660, pg_backend_pid: 67793
## down
bundle exec rake db:migrate:down:main VERSION=20240416141703
main: == [advisory_lock_connection] object_id: 121700, pg_backend_pid: 67252
main: == 20240416141703 AddNamespaceFkToAuditEventsInstanceNamespaceFilters: reverting
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- remove_foreign_key(:audit_events_streaming_instance_namespace_filters, {:column=>:namespace_id})
main: -> 0.0038s
main: == 20240416141703 AddNamespaceFkToAuditEventsInstanceNamespaceFilters: reverted (0.0415s)
main: == [advisory_lock_connection] object_id: 121700, pg_backend_pid: 67252
Destination foreign key migration
## up
bundle exec rake db:migrate:up:main VERSION=20240416141638
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 69161
main: == 20240416141638 AddDestinationFkToAuditEventsInstanceNamespaceFilters: migrating
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0002s
main: -- execute("ALTER TABLE audit_events_streaming_instance_namespace_filters VALIDATE CONSTRAINT fk_6e0be28087;")
main: -> 0.0003s
main: -- execute("RESET statement_timeout")
main: -> 0.0001s
main: == 20240416141638 AddDestinationFkToAuditEventsInstanceNamespaceFilters: migrated (0.0344s)
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 69161
## down
bundle exec rake db:migrate:down:main VERSION=20240416141638
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 68644
main: == 20240416141638 AddDestinationFkToAuditEventsInstanceNamespaceFilters: reverting
main: -- transaction_open?(nil)
main: -> 0.0000s
main: == 20240416141638 AddDestinationFkToAuditEventsInstanceNamespaceFilters: reverted (0.0333s)
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 68644
Table creation
## up
bundle exec rake db:migrate:up:main VERSION=20240402181020
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 70502
main: == 20240402181020 CreateAuditEventsStreamingInstanceNamespaceFilters: migrating
main: -- create_table(:audit_events_streaming_instance_namespace_filters)
main: -> 0.0105s
main: == 20240402181020 CreateAuditEventsStreamingInstanceNamespaceFilters: migrated (0.0289s)
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 70502
## down
bundle exec rake db:migrate:down:main VERSION=20240402181020
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 69977
main: == 20240402181020 CreateAuditEventsStreamingInstanceNamespaceFilters: reverting
main: -- drop_table(:audit_events_streaming_instance_namespace_filters)
main: -> 0.0035s
main: == 20240402181020 CreateAuditEventsStreamingInstanceNamespaceFilters: reverted (0.0085s)
main: == [advisory_lock_connection] object_id: 121680, pg_backend_pid: 69977
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 #436606 (closed)
Edited by Hitesh Raghuvanshi