diff options
-rw-r--r-- | app/controllers/projects/environments_controller.rb | 11 | ||||
-rw-r--r-- | app/models/project.rb | 2 | ||||
-rw-r--r-- | app/views/projects/deployments/_actions.haml | 8 | ||||
-rw-r--r-- | app/views/projects/environments/_environment.html.haml | 2 | ||||
-rw-r--r-- | app/views/projects/environments/index.html.haml | 32 | ||||
-rw-r--r-- | app/views/projects/environments/show.html.haml | 7 | ||||
-rw-r--r-- | app/views/projects/merge_requests/widget/_heading.html.haml | 5 | ||||
-rw-r--r-- | db/migrate/20161006104309_add_state_to_environment.rb | 10 |
8 files changed, 45 insertions, 32 deletions
diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb index d5de9e796df..4fe8c3a1889 100644 --- a/app/controllers/projects/environments_controller.rb +++ b/app/controllers/projects/environments_controller.rb @@ -7,11 +7,12 @@ class Projects::EnvironmentsController < Projects::ApplicationController def index @scope = params[:scope] - @environments = project.environments - - # TODO: fix the values of this vars to show the correct results - @available_environments_count = project.environments.count - @stopped_environments_count = project.environments.count + @all_environments = project.environments + @environments = + case @scope + when 'closed' then @all_environments.closed + else @all_environments.opened + end end def show diff --git a/app/models/project.rb b/app/models/project.rb index ecd742a17d5..12705f9ae48 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1302,7 +1302,7 @@ class Project < ActiveRecord::Base environment_ids.where(ref: ref) end - environments.where(id: environment_ids).select do |environment| + environments.opened.where(id: environment_ids).select do |environment| environment.includes_commit?(commit) end end diff --git a/app/views/projects/deployments/_actions.haml b/app/views/projects/deployments/_actions.haml index 6e5e1288722..2d9c229ed5b 100644 --- a/app/views/projects/deployments/_actions.haml +++ b/app/views/projects/deployments/_actions.haml @@ -14,9 +14,11 @@ = custom_icon('icon_play') %span= action.name.humanize - .inline - %a.close-env-link.btn - = icon('stop', class: 'close-env-icon') + - if local_assigns.fetch(:allow_close, false) && deployment.closeable? + .inline + %a.close-env-link.btn + = link_to [:play, @project.namespace.becomes(Namespace), @project, deployment.close_action], method: :post, rel: 'nofollow', data: { confirm: 'Are you sure you want to close this environment?' } do + = icon('stop', class: 'close-env-icon') - if local_assigns.fetch(:allow_rollback, false) = link_to [:retry, @project.namespace.becomes(Namespace), @project, deployment.deployable], method: :post, class: 'btn' do diff --git a/app/views/projects/environments/_environment.html.haml b/app/views/projects/environments/_environment.html.haml index 2e9c395f08a..205392b1e81 100644 --- a/app/views/projects/environments/_environment.html.haml +++ b/app/views/projects/environments/_environment.html.haml @@ -21,4 +21,4 @@ #{time_ago_with_tooltip(last_deployment.created_at)} %td.hidden-xs - = render 'projects/deployments/actions', deployment: last_deployment + = render 'projects/deployments/actions', deployment: last_deployment, allow_close: environment.opened? diff --git a/app/views/projects/environments/index.html.haml b/app/views/projects/environments/index.html.haml index 949f0855777..702cccd6ab3 100644 --- a/app/views/projects/environments/index.html.haml +++ b/app/views/projects/environments/index.html.haml @@ -3,26 +3,26 @@ = render "projects/pipelines/head" %div{ class: container_class } - - if can?(current_user, :create_environment, @project) && !@environments.blank? - .top-area - %ul.nav-links - %li{class: ('active' if @scope.nil?)} - = link_to project_environments_path(@project) do - Availabe - %span.badge.js-avaibale-environments-count - = number_with_delimiter(@available_environments_count) - - %li{class: ('active' if @scope == 'stopped')} - = link_to project_environments_path(@project, scope: :stopped) do - Stopped - %span.badge.js-stopped-environments-count - = number_with_delimiter(@stopped_environments_count) + .top-area + %ul.nav-links + %li{class: ('active' if @scope.nil?)} + = link_to project_environments_path(@project) do + Availabe + %span.badge.js-avaibale-environments-count + = number_with_delimiter(@all_environments.opened.count) - .nav-controls + %li{class: ('active' if @scope == 'closed')} + = link_to project_environments_path(@project, scope: :stopped) do + Stopped + %span.badge.js-stopped-environments-count + = number_with_delimiter(@all_environments.closed.count) + + .nav-controls + - if can?(current_user, :create_environment, @project) && !@all_environments.blank? = link_to new_namespace_project_environment_path(@project.namespace, @project), class: 'btn btn-create' do New environment - - if @environments.blank? + - if @all_environments.blank? .blank-state.blank-state-no-icon %h2.blank-state-title You don't have any environments right now. diff --git a/app/views/projects/environments/show.html.haml b/app/views/projects/environments/show.html.haml index 5ca35bb92b1..5f4a0ef082c 100644 --- a/app/views/projects/environments/show.html.haml +++ b/app/views/projects/environments/show.html.haml @@ -2,6 +2,8 @@ - page_title "Environments" = render "projects/pipelines/head" +- last_deployment = @environment.last_deployment + %div{ class: container_class } .top-area .col-md-9 @@ -10,8 +12,9 @@ .nav-controls - if can?(current_user, :update_environment, @environment) = link_to 'Edit', edit_namespace_project_environment_path(@project.namespace, @project, @environment), class: 'btn' - / TODO: Confirm if the method is :delete - = link_to 'Close', namespace_project_environment_path(@project.namespace, @project, @environment), data: { confirm: 'Are you sure you want to delete this environment?' }, class: 'btn btn-danger', method: :delete + - if @environment.opened? && last_deployment.try(:close_action) + = link_to 'Close', [:play, @project.namespace.becomes(Namespace), @project, last_deployment.close_action], data: { confirm: 'Are you sure you want to close this environment?' }, class: 'btn btn-danger', method: :post + = link_to 'Destroy', namespace_project_environment_path(@project.namespace, @project, @environment), data: { confirm: 'Are you sure you want to delete this environment?' }, class: 'btn btn-danger', method: :delete - if @deployments.blank? .blank-state.blank-state-no-icon diff --git a/app/views/projects/merge_requests/widget/_heading.html.haml b/app/views/projects/merge_requests/widget/_heading.html.haml index 7d9ed7dd5a1..a92f0f9f481 100644 --- a/app/views/projects/merge_requests/widget/_heading.html.haml +++ b/app/views/projects/merge_requests/widget/_heading.html.haml @@ -58,5 +58,6 @@ = link_to external_url, target: '_blank' do = icon('external-link', text: "View on #{external_url.gsub(/\A.*?:\/\//, '')}", right: true) %span.close-env-container - = link_to '#', class: 'close-evn-link' do - = icon('stop-circle-o', text: 'Stop environment') + - if environment.closeable? + = link_to [:play, @project.namespace.becomes(Namespace), @project, environment.close_action], method: :post, class: 'close-evn-link', rel: 'nofollow', data: { confirm: 'Are you sure you want to close this environment?' } do + = icon('stop-circle-o', text: 'Stop environment') diff --git a/db/migrate/20161006104309_add_state_to_environment.rb b/db/migrate/20161006104309_add_state_to_environment.rb index 2a6fd1a6a93..83dff07069f 100644 --- a/db/migrate/20161006104309_add_state_to_environment.rb +++ b/db/migrate/20161006104309_add_state_to_environment.rb @@ -1,9 +1,15 @@ class AddStateToEnvironment < ActiveRecord::Migration include Gitlab::Database::MigrationHelpers + disable_ddl_transaction! + DOWNTIME = false - def change - add_column :environments, :state, :string + def up + add_column_with_default(:environments, :state, :string, default: :opened) + end + + def down + remove_column(:environments, :state) end end |