From 884bf259c5d5b846ffdb5d96bbe1f09071e4552f Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 20 Nov 2019 13:31:40 +0200 Subject: [PATCH] Move some project routes under - scope This commit moves most of "Operations" tab routes under /-/ scope. It also moves audit_events page from project settings. This is part of "move all existing project routes under /-/ scope" initiative Signed-off-by: Dmitriy Zaporozhets --- .../unreleased/dz-move-operations-routes.yml | 5 + config/routes/project.rb | 102 +++++++++--------- doc/user/project/integrations/prometheus.md | 2 +- ee/config/routes/project.rb | 38 +++---- ee/spec/routing/project_routing_spec.rb | 12 +++ spec/routing/environments_spec.rb | 4 +- spec/routing/project_routing_spec.rb | 24 +++++ spec/serializers/cluster_basic_entity_spec.rb | 2 +- .../environment_status_entity_spec.rb | 2 +- 9 files changed, 117 insertions(+), 74 deletions(-) create mode 100644 changelogs/unreleased/dz-move-operations-routes.yml diff --git a/changelogs/unreleased/dz-move-operations-routes.yml b/changelogs/unreleased/dz-move-operations-routes.yml new file mode 100644 index 00000000000000..76e7e81fdeafe9 --- /dev/null +++ b/changelogs/unreleased/dz-move-operations-routes.yml @@ -0,0 +1,5 @@ +--- +title: Move operations project routes under - scope +merge_request: 20456 +author: +type: deprecated diff --git a/config/routes/project.rb b/config/routes/project.rb index 303fa8efaff3a3..848846b5f5b2c5 100644 --- a/config/routes/project.rb +++ b/config/routes/project.rb @@ -209,6 +209,55 @@ get :production end end + + concerns :clusterable + + namespace :serverless do + scope :functions do + get '/:environment_id/:id', to: 'functions#show' + get '/:environment_id/:id/metrics', to: 'functions#metrics', as: :metrics + end + + resources :functions, only: [:index] + end + + resources :environments, except: [:destroy] do + member do + post :stop + get :terminal + get :metrics + get :additional_metrics + get :metrics_dashboard + get '/terminal.ws/authorize', to: 'environments#terminal_websocket_authorize', constraints: { format: nil } + + get '/prometheus/api/v1/*proxy_path', to: 'environments/prometheus_api#proxy', as: :prometheus_api + end + + collection do + get :metrics, action: :metrics_redirect + get :folder, path: 'folders/*id', constraints: { format: /(html|json)/ } + get :search + end + + resources :deployments, only: [:index] do + member do + get :metrics + get :additional_metrics + end + end + end + + resources :error_tracking, only: [:index], controller: :error_tracking do + collection do + get ':issue_id/details', + to: 'error_tracking#details', + as: 'details' + get ':issue_id/stack_trace', + to: 'error_tracking#stack_trace', + as: 'stack_trace' + post :list_projects + end + end end # End of the /-/ scope. @@ -373,43 +422,6 @@ end end - concerns :clusterable - - resources :environments, except: [:destroy] do - member do - post :stop - get :terminal - get :metrics - get :additional_metrics - get :metrics_dashboard - get '/terminal.ws/authorize', to: 'environments#terminal_websocket_authorize', constraints: { format: nil } - - get '/prometheus/api/v1/*proxy_path', to: 'environments/prometheus_api#proxy', as: :prometheus_api - end - - collection do - get :metrics, action: :metrics_redirect - get :folder, path: 'folders/*id', constraints: { format: /(html|json)/ } - get :search - end - - resources :deployments, only: [:index] do - member do - get :metrics - get :additional_metrics - end - end - end - - namespace :serverless do - scope :functions do - get '/:environment_id/:id', to: 'functions#show' - get '/:environment_id/:id/metrics', to: 'functions#metrics', as: :metrics - end - - resources :functions, only: [:index] - end - draw :legacy_builds resources :hooks, only: [:index, :create, :edit, :update, :destroy], constraints: { id: /\d+/ } do @@ -507,18 +519,6 @@ end end - resources :error_tracking, only: [:index], controller: :error_tracking do - collection do - get ':issue_id/details', - to: 'error_tracking#details', - as: 'details' - get ':issue_id/stack_trace', - to: 'error_tracking#stack_trace', - as: 'stack_trace' - post :list_projects - end - end - scope :usage_ping, controller: :usage_ping do post :web_ide_clientside_preview end @@ -540,7 +540,9 @@ :project_members, :deploy_keys, :deploy_tokens, :labels, :milestones, :services, :boards, :releases, :forks, :group_links, :import, :avatar, :mirror, - :cycle_analytics, :mattermost, :variables, :triggers) + :cycle_analytics, :mattermost, :variables, :triggers, + :environments, :protected_environments, :error_tracking, + :serverless, :clusters, :audit_events) end # rubocop: disable Cop/PutProjectRoutesUnderScope diff --git a/doc/user/project/integrations/prometheus.md b/doc/user/project/integrations/prometheus.md index 6f7f9b27aa70eb..25ba0a47a4e9ed 100644 --- a/doc/user/project/integrations/prometheus.md +++ b/doc/user/project/integrations/prometheus.md @@ -481,7 +481,7 @@ It is possible to display metrics charts within [GitLab Flavored Markdown](../.. NOTE: **Note:** Requires [Kubernetes](prometheus_library/kubernetes.md) metrics. -To display a metric chart, include a link of the form `https:////environments//metrics`. +To display a metric chart, include a link of the form `https:////-/environments//metrics`. A single chart may also be embedded. You can generate a link to the chart via the dropdown located on the right side of the chart: diff --git a/ee/config/routes/project.rb b/ee/config/routes/project.rb index 47f2462b7837a8..479c0c639c4351 100644 --- a/ee/config/routes/project.rb +++ b/ee/config/routes/project.rb @@ -61,6 +61,25 @@ resources :subscriptions, only: [:create, :destroy] resources :licenses, only: [:index, :create, :update], controller: 'security/licenses' + + resources :environments, only: [] do + member do + get :logs + get '/pods/(:pod_name)/containers/(:container_name)/logs', to: 'environments#k8s_pod_logs', as: :k8s_pod_logs + end + + collection do + get :logs, action: :logs_redirect + end + end + + resources :protected_environments, only: [:create, :update, :destroy], constraints: { id: /\d+/ } do + collection do + get 'search' + end + end + + resources :audit_events, only: [:index] end # End of the /-/ scope. @@ -192,25 +211,6 @@ resource :dependencies, only: [:show] resource :licenses, only: [:show] - resources :environments, only: [] do - member do - get :logs - get '/pods/(:pod_name)/containers/(:container_name)/logs', to: 'environments#k8s_pod_logs', as: :k8s_pod_logs - end - - collection do - get :logs, action: :logs_redirect - end - end - - resources :protected_environments, only: [:create, :update, :destroy], constraints: { id: /\d+/ } do - collection do - get 'search' - end - end - - resources :audit_events, only: [:index] - # All new routes should go under /-/ scope. # Look for scope '-' at the top of the file. # rubocop: enable Cop/PutProjectRoutesUnderScope diff --git a/ee/spec/routing/project_routing_spec.rb b/ee/spec/routing/project_routing_spec.rb index 54fd6628780d17..ed6c79c6d13bd5 100644 --- a/ee/spec/routing/project_routing_spec.rb +++ b/ee/spec/routing/project_routing_spec.rb @@ -50,4 +50,16 @@ expect(post('/gitlab/gitlabhq/-/settings/operations/reset_alerting_token')).to route_to('projects/settings/operations#reset_alerting_token', namespace_id: 'gitlab', project_id: 'gitlabhq') end end + + describe Projects::ProtectedEnvironmentsController, 'routing' do + describe 'legacy routing' do + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/protected_environments", "/gitlab/gitlabhq/-/protected_environments" + end + end + + describe Projects::AuditEventsController, 'routing' do + describe 'legacy routing' do + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/audit_events", "/gitlab/gitlabhq/-/audit_events" + end + end end diff --git a/spec/routing/environments_spec.rb b/spec/routing/environments_spec.rb index ea172698764aa6..46d4f31dd31fe7 100644 --- a/spec/routing/environments_spec.rb +++ b/spec/routing/environments_spec.rb @@ -11,7 +11,7 @@ end let(:environments_route) do - "#{project.full_path}/environments/" + "#{project.full_path}/-/environments/" end describe 'routing environment folders' do @@ -38,7 +38,7 @@ end def get_folder(folder) - get("#{project.full_path}/environments/folders/#{folder}") + get("#{project.full_path}/-/environments/folders/#{folder}") end def folder_action(**opts) diff --git a/spec/routing/project_routing_spec.rb b/spec/routing/project_routing_spec.rb index 561c2b572ec5f1..fc562f934063cc 100644 --- a/spec/routing/project_routing_spec.rb +++ b/spec/routing/project_routing_spec.rb @@ -794,4 +794,28 @@ def show_with_template_type(template_type) expect(post('/gitlab/gitlabhq/usage_ping/web_ide_clientside_preview')).to route_to('projects/usage_ping#web_ide_clientside_preview', namespace_id: 'gitlab', project_id: 'gitlabhq') end end + + describe Projects::EnvironmentsController, 'routing' do + describe 'legacy routing' do + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/environments", "/gitlab/gitlabhq/-/environments" + end + end + + describe Projects::ClustersController, 'routing' do + describe 'legacy routing' do + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/clusters", "/gitlab/gitlabhq/-/clusters" + end + end + + describe Projects::ErrorTrackingController, 'routing' do + describe 'legacy routing' do + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/error_tracking", "/gitlab/gitlabhq/-/error_tracking" + end + end + + describe Projects::Serverless, 'routing' do + describe 'legacy routing' do + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/serverless", "/gitlab/gitlabhq/-/serverless" + end + end end diff --git a/spec/serializers/cluster_basic_entity_spec.rb b/spec/serializers/cluster_basic_entity_spec.rb index be03ee91784567..8c3307a1837753 100644 --- a/spec/serializers/cluster_basic_entity_spec.rb +++ b/spec/serializers/cluster_basic_entity_spec.rb @@ -24,7 +24,7 @@ it 'exposes the cluster details' do expect(subject[:name]).to eq('the-cluster') - expect(subject[:path]).to eq("/#{project.full_path}/clusters/#{cluster.id}") + expect(subject[:path]).to eq("/#{project.full_path}/-/clusters/#{cluster.id}") end context 'when the user does not have permission to view the cluster' do diff --git a/spec/serializers/environment_status_entity_spec.rb b/spec/serializers/environment_status_entity_spec.rb index bac590d44e950a..6d98f91cfde5c5 100644 --- a/spec/serializers/environment_status_entity_spec.rb +++ b/spec/serializers/environment_status_entity_spec.rb @@ -73,7 +73,7 @@ it 'returns metrics url' do expect(subject[:metrics_url]) - .to eq("/#{project.full_path}/environments/#{environment.id}/deployments/#{deployment.iid}/metrics") + .to eq("/#{project.full_path}/-/environments/#{environment.id}/deployments/#{deployment.iid}/metrics") end end -- GitLab