CE Port of Protected Environments backend

This commit is contained in:
Mayra Cabrera 2018-08-10 13:45:14 +00:00 committed by Kamil Trzciński
parent 91795dcd1c
commit 33311cb677
8 changed files with 49 additions and 6 deletions

View file

@ -251,6 +251,7 @@ class ProjectPolicy < BasePolicy
enable :update_pages
enable :read_cluster
enable :create_cluster
enable :create_environment_terminal
end
rule { (mirror_available & can?(:admin_project)) | admin }.enable :admin_remote_mirror

View file

@ -23,9 +23,8 @@ class EnvironmentEntity < Grape::Entity
stop_project_environment_path(environment.project, environment)
end
expose :terminal_path, if: ->(environment, _) { environment.has_terminals? } do |environment|
can?(request.current_user, :admin_environment, environment.project) &&
terminal_project_environment_path(environment.project, environment)
expose :terminal_path, if: ->(*) { environment.has_terminals? && can_access_terminal? } do |environment|
terminal_project_environment_path(environment.project, environment)
end
expose :folder_path do |environment|
@ -40,7 +39,13 @@ class EnvironmentEntity < Grape::Entity
private
alias_method :environment, :object
def current_user
request.current_user
end
def can_access_terminal?
can?(request.current_user, :create_environment_terminal, environment)
end
end

View file

@ -0,0 +1,8 @@
# frozen_string_literal: true
module Ci
class EnqueueBuildService < BaseService
def execute(build)
build.enqueue
end
end
end

View file

@ -37,7 +37,7 @@ module Ci
def process_build(build, current_status)
if valid_statuses_for_when(build.when).include?(current_status)
build.action? ? build.actionize : build.enqueue
build.action? ? build.actionize : enqueue_build(build)
true
else
build.skip
@ -93,5 +93,9 @@ module Ci
.where.not(id: latest_statuses.map(&:first))
.update_all(retried: true) if latest_statuses.any?
end
def enqueue_build(build)
Ci::EnqueueBuildService.new(project, @user).execute(build)
end
end
end

View file

@ -0,0 +1,5 @@
---
title: CE Port of Protected Environments backend
merge_request: 20859
author:
type: other

View file

@ -47,7 +47,7 @@ module Gitlab
end
def initialize(relation_sym:, relation_hash:, members_mapper:, user:, project:, excluded_keys: [])
@relation_name = OVERRIDES[relation_sym] || relation_sym
@relation_name = self.class.overrides[relation_sym] || relation_sym
@relation_hash = relation_hash.except('noteable_id')
@members_mapper = members_mapper
@user = user
@ -76,6 +76,10 @@ module Gitlab
generate_imported_object
end
def self.overrides
OVERRIDES
end
private
def setup_models

View file

@ -0,0 +1,16 @@
# frozen_string_literal: true
require 'spec_helper'
describe Ci::EnqueueBuildService, '#execute' do
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:ci_build) { create(:ci_build, :created) }
subject { described_class.new(project, user).execute(ci_build) }
it 'enqueues the build' do
subject
expect(ci_build.pending?).to be_truthy
end
end

View file

@ -9,7 +9,7 @@ module ConfigurationHelper
end
def relation_class_for_name(relation_name)
relation_name = Gitlab::ImportExport::RelationFactory::OVERRIDES[relation_name.to_sym] || relation_name
relation_name = Gitlab::ImportExport::RelationFactory.overrides[relation_name.to_sym] || relation_name
Gitlab::ImportExport::RelationFactory.relation_class(relation_name)
end