Commit c1338006 authored by Rémy Coutable's avatar Rémy Coutable

Extract the EE specific models/associations from spec/lib/gitlab/import_export/all_models.yml

Signed-off-by: default avatarRémy Coutable <remy@rymai.me>
parent 91b5b23a
---
issues:
- epic_issue
- epic
milestone:
- boards
merge_requests:
- approvals
- approvers
- approver_groups
- approved_by_users
pipelines:
- source_pipeline
- sourced_pipelines
- triggered_by_pipeline
- triggered_pipelines
- chat_data
protected_branches:
- unprotect_access_levels
protected_environments:
- project
- deploy_access_levels
deploy_access_levels:
- protected_environment
- user
- group
merge_access_levels:
- user
- group
push_access_levels:
- user
- group
unprotect_access_levels:
- user
- protected_branch
- group
project:
- gitlab_slack_application_service
- github_service
- protected_environments
- mirror_user
- push_rule
- jenkins_service
- jenkins_deprecated_service
- index_status
- approvers
- pages_domains
- audit_events
- path_locks
- approver_groups
- repository_state
- source_pipelines
- sourced_pipelines
- prometheus_metrics
- vulnerability_feedback
- prometheus_alerts
- software_license_policies
- project_registry
- packages
prometheus_metrics:
- project
- prometheus_alerts
prometheus_alerts:
- project
epic_issues:
- issue
- epic
...@@ -19,8 +19,6 @@ issues: ...@@ -19,8 +19,6 @@ issues:
- metrics - metrics
- timelogs - timelogs
- issue_assignees - issue_assignees
- epic_issue
- epic
- closed_by - closed_by
events: events:
- author - author
...@@ -58,7 +56,6 @@ milestone: ...@@ -58,7 +56,6 @@ milestone:
- merge_requests - merge_requests
- participants - participants
- events - events
- boards
snippets: snippets:
- author - author
- project - project
...@@ -94,13 +91,9 @@ merge_requests: ...@@ -94,13 +91,9 @@ merge_requests:
- merge_requests_closing_issues - merge_requests_closing_issues
- cached_closes_issues - cached_closes_issues
- metrics - metrics
- approvals
- approvers
- approver_groups
- timelogs - timelogs
- head_pipeline - head_pipeline
- latest_merge_request_diff - latest_merge_request_diff
- approved_by_users
merge_request_diff: merge_request_diff:
- merge_request - merge_request
- merge_request_diff_commits - merge_request_diff_commits
...@@ -127,11 +120,6 @@ pipelines: ...@@ -127,11 +120,6 @@ pipelines:
- artifacts - artifacts
- pipeline_schedule - pipeline_schedule
- merge_requests - merge_requests
- source_pipeline
- sourced_pipelines
- triggered_by_pipeline
- triggered_pipelines
- chat_data # EE only
pipeline_variables: pipeline_variables:
- pipeline - pipeline
stages: stages:
...@@ -178,29 +166,13 @@ protected_branches: ...@@ -178,29 +166,13 @@ protected_branches:
- project - project
- merge_access_levels - merge_access_levels
- push_access_levels - push_access_levels
- unprotect_access_levels
protected_environments:
- project
- deploy_access_levels
deploy_access_levels:
- protected_environment
- user
- group
protected_tags: protected_tags:
- project - project
- create_access_levels - create_access_levels
merge_access_levels: merge_access_levels:
- user
- protected_branch - protected_branch
- group
push_access_levels: push_access_levels:
- user
- protected_branch - protected_branch
- group
unprotect_access_levels:
- user
- protected_branch
- group
create_access_levels: create_access_levels:
- user - user
- protected_tag - protected_tag
...@@ -230,8 +202,6 @@ project: ...@@ -230,8 +202,6 @@ project:
- pipelines_email_service - pipelines_email_service
- mattermost_slash_commands_service - mattermost_slash_commands_service
- slack_slash_commands_service - slack_slash_commands_service
- gitlab_slack_application_service
- github_service
- irker_service - irker_service
- packagist_service - packagist_service
- pivotaltracker_service - pivotaltracker_service
...@@ -272,7 +242,6 @@ project: ...@@ -272,7 +242,6 @@ project:
- snippets - snippets
- hooks - hooks
- protected_branches - protected_branches
- protected_environments
- protected_tags - protected_tags
- project_members - project_members
- users - users
...@@ -305,26 +274,13 @@ project: ...@@ -305,26 +274,13 @@ project:
- pages_domains - pages_domains
- authorized_users - authorized_users
- project_authorizations - project_authorizations
- mirror_user
- push_rule
- jenkins_service
- jenkins_deprecated_service
- index_status
- approvers
- pages_domains
- audit_events
- remote_mirrors - remote_mirrors
- path_locks
- approver_groups
- route - route
- redirect_routes - redirect_routes
- statistics - statistics
- container_repositories - container_repositories
- uploads - uploads
- import_state - import_state
- repository_state
- source_pipelines
- sourced_pipelines
- members_and_requesters - members_and_requesters
- build_trace_section_names - build_trace_section_names
- build_trace_chunks - build_trace_chunks
...@@ -332,7 +288,6 @@ project: ...@@ -332,7 +288,6 @@ project:
- fork_network_member - fork_network_member
- fork_network - fork_network
- custom_attributes - custom_attributes
- prometheus_metrics
- lfs_file_locks - lfs_file_locks
- project_badges - project_badges
- source_of_merge_requests - source_of_merge_requests
...@@ -342,22 +297,12 @@ project: ...@@ -342,22 +297,12 @@ project:
- settings - settings
- ci_cd_settings - ci_cd_settings
- import_export_upload - import_export_upload
- vulnerability_feedback
- prometheus_alerts
- software_license_policies
- repository_languages - repository_languages
- project_registry
- packages
award_emoji: award_emoji:
- awardable - awardable
- user - user
priorities: priorities:
- label - label
prometheus_metrics:
- project
- prometheus_alerts
prometheus_alerts:
- project
timelogs: timelogs:
- issue - issue
- merge_request - merge_request
...@@ -367,9 +312,6 @@ push_event_payload: ...@@ -367,9 +312,6 @@ push_event_payload:
issue_assignees: issue_assignees:
- issue - issue
- assignee - assignee
epic_issues:
- issue
- epic
lfs_file_locks: lfs_file_locks:
- user - user
project_badges: project_badges:
......
...@@ -16,14 +16,30 @@ describe 'Import/Export model configuration' do ...@@ -16,14 +16,30 @@ describe 'Import/Export model configuration' do
# - User, Author... Models we do not care about for checking models # - User, Author... Models we do not care about for checking models
names.flatten.uniq - %w(milestones labels user author) + ['project'] names.flatten.uniq - %w(milestones labels user author) + ['project']
end end
let(:ce_models_yml) { 'spec/lib/gitlab/import_export/all_models.yml' }
let(:ce_models_hash) { YAML.load_file(ce_models_yml) }
let(:ee_models_yml) { 'ee/spec/lib/gitlab/import_export/all_models.yml' }
let(:ee_models_hash) { File.exist?(ee_models_yml) ? YAML.load_file(ee_models_yml) : {} }
let(:all_models_yml) { 'spec/lib/gitlab/import_export/all_models.yml' }
let(:all_models) { YAML.load_file(all_models_yml) }
let(:current_models) { setup_models } let(:current_models) { setup_models }
let(:all_models_hash) do
all_models_hash = ce_models_hash.dup
all_models_hash.each do |model, associations|
associations.concat(ee_models_hash[model] || [])
end
ee_models_hash.each do |model, associations|
all_models_hash[model] ||= associations
end
all_models_hash
end
it 'has no new models' do it 'has no new models' do
model_names.each do |model_name| model_names.each do |model_name|
new_models = Array(current_models[model_name]) - Array(all_models[model_name]) new_models = Array(current_models[model_name]) - Array(all_models_hash[model_name])
expect(new_models).to be_empty, failure_message(model_name.classify, new_models) expect(new_models).to be_empty, failure_message(model_name.classify, new_models)
end end
end end
...@@ -31,27 +47,21 @@ describe 'Import/Export model configuration' do ...@@ -31,27 +47,21 @@ describe 'Import/Export model configuration' do
# List of current models between models, in the format of # List of current models between models, in the format of
# {model: [model_2, model3], ...} # {model: [model_2, model3], ...}
def setup_models def setup_models
all_models_hash = {} model_names.each_with_object({}) do |model_name, hash|
hash[model_name] = associations_for(relation_class_for_name(model_name)) - ['project']
model_names.each do |model_name|
model_class = relation_class_for_name(model_name)
all_models_hash[model_name] = associations_for(model_class) - ['project']
end end
all_models_hash
end end
def failure_message(parent_model_name, new_models) def failure_message(parent_model_name, new_models)
<<-MSG <<~MSG
New model(s) <#{new_models.join(',')}> have been added, related to #{parent_model_name}, which is exported by New model(s) <#{new_models.join(',')}> have been added, related to #{parent_model_name}, which is exported by
the Import/Export feature. the Import/Export feature.
If you think this model should be included in the export, please add it to IMPORT_EXPORT_CONFIG. If you think this model should be included in the export, please add it to `#{Gitlab::ImportExport.config_file}`.
Definitely add it to MODELS_JSON to signal that you've handled this error and to prevent it from showing up in the future.
MODELS_JSON: #{File.expand_path(all_models_yml)} Definitely add it to `#{File.expand_path(ce_models_yml)}`
IMPORT_EXPORT_CONFIG: #{Gitlab::ImportExport.config_file} #{"or `#{File.expand_path(ee_models_yml)}` if the model/associations are EE-specific\n" if ee_models_hash.any?}
to signal that you've handled this error and to prevent it from showing up in the future.
MSG MSG
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment