summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-10-12 13:53:37 +0200
committerKamil Trzcinski <ayufan@ayufan.eu>2016-10-12 13:53:37 +0200
commit60469abc8602a90b9ee67e1d998c99219f951b1c (patch)
treec00b5f4be3468bc02040805aea2f105c73c01b50
parent9b84abccf46ece8a30842f847b01795b4ed0f2a2 (diff)
downloadgitlab-ce-60469abc8602a90b9ee67e1d998c99219f951b1c.tar.gz
Fix deployments controller
-rw-r--r--app/controllers/projects/deployments_controller.rb12
-rw-r--r--app/views/projects/deployments/_actions.haml2
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)