diff options
author | Kamil Trzcinski <ayufan@ayufan.eu> | 2016-10-12 13:53:37 +0200 |
---|---|---|
committer | Kamil Trzcinski <ayufan@ayufan.eu> | 2016-10-12 13:53:37 +0200 |
commit | 60469abc8602a90b9ee67e1d998c99219f951b1c (patch) | |
tree | c00b5f4be3468bc02040805aea2f105c73c01b50 | |
parent | 9b84abccf46ece8a30842f847b01795b4ed0f2a2 (diff) | |
download | gitlab-ce-60469abc8602a90b9ee67e1d998c99219f951b1c.tar.gz |
Fix deployments controller
-rw-r--r-- | app/controllers/projects/deployments_controller.rb | 12 | ||||
-rw-r--r-- | app/views/projects/deployments/_actions.haml | 2 |
2 files changed, 8 insertions, 6 deletions
diff --git a/app/controllers/projects/deployments_controller.rb b/app/controllers/projects/deployments_controller.rb index 8b25875d705..427e7aa7544 100644 --- a/app/controllers/projects/deployments_controller.rb +++ b/app/controllers/projects/deployments_controller.rb @@ -11,7 +11,9 @@ class Projects::DeploymentsController < Projects::ApplicationController def terminal_websocket_authorize Gitlab::Workhorse.verify_api_request!(request.headers) - render text: 'Not found', status: 404 unless deployment.deployable + render text: 'Missing deployable', status: 404 unless deployment.deployable + + deployable_variables = deployment.deployable.variables variables = Hash[*%w[ openshift_project CI_PROJECT_NAME @@ -19,22 +21,22 @@ class Projects::DeploymentsController < Projects::ApplicationController openshift_server OPENSHIFT_SERVER openshift_token OPENSHIFT_TOKEN ]].map do |json_key, variable_key| - [json_key, deployment.deployable.variables.find { |v| v[:key] == variable_key }] + [json_key, deployable_variables.find { |v| v[:key].to_s == variable_key }] end.to_h # TODO: restrict access: this allows even 'guests' to have terminal access if variables.values.all?(&:present?) set_workhorse_internal_api_content_type - render json: variables.map { |k, v| [k, v[:value]] }.to_h + render json: variables.map { |k, v| [k, ExpandVariables.expand(v[:value], deployable_variables)] }.to_h else - render text: 'Not found', status: 404 + render json: { message: 'Not found', variables: variables, deployable_variables: deployable_variables }, status: 404 end end protected def deployment - @deployment ||= project.deployments.find(params[:id].to_i) + @deployment ||= project.deployments.find_by(iid: params[:id].to_i) @deployment || render_404 end end diff --git a/app/views/projects/deployments/_actions.haml b/app/views/projects/deployments/_actions.haml index 716eb8d2c12..5764d9b19df 100644 --- a/app/views/projects/deployments/_actions.haml +++ b/app/views/projects/deployments/_actions.haml @@ -6,7 +6,7 @@ = icon('external-link') - if can?(current_user, :update_deployment, deployment) && deployment.deployable - %a.btn.btn-default.btn-terminal{href: "deployments/#{deployment.id}/terminal"} + = link_to terminal_namespace_project_deployment_path(@project.namespace.becomes(Namespace), @project, deployment), class: 'btn btn-default btn-terminal', rel: 'nofollow' do = custom_icon('icon_terminal') - if can?(current_user, :create_deployment, deployment) && deployment.deployable && local_assigns.fetch(:show_actions, false) |