Skip to content

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:

  1. Table audit_events_streaming_instance_namespace_filters for storing namespace filters for destinations is created. Combination of namespace and destination should be unique.
  2. 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.
  3. 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

Merge request reports