Commit 1eaaef89 authored by Robert Speicher's avatar Robert Speicher

Merge branch 'fix-rubocop-master-failures' into 'master'

Cleaned up CI runner administration code

See merge request gitlab-org/gitlab-ce!21741
parents 99612476 f0e7b5e7
class Admin::RunnersController < Admin::ApplicationController
before_action :runner, except: :index
# rubocop: disable CodeReuse/ActiveRecord
def index
finder = Admin::RunnersFinder.new(params: params)
@runners = finder.execute
@active_runners_count = Ci::Runner.online.count
@sort = finder.sort_key
end
# rubocop: enable CodeReuse/ActiveRecord
def show
assign_builds_and_projects
......
......@@ -43,8 +43,7 @@ class Admin::RunnersFinder < UnionFinder
end
def sort!
sort = sort_key == 'contacted_asc' ? { contacted_at: :asc } : { created_at: :desc }
@runners = @runners.order(sort)
@runners = @runners.order_by(sort_key)
end
def paginate!
......
......@@ -72,6 +72,9 @@ module Ci
.project_type
end
scope :order_contacted_at_asc, -> { order(contacted_at: :asc) }
scope :order_created_at_desc, -> { order(created_at: :desc) }
validate :tag_constraints
validates :access_level, presence: true
validates :runner_type, presence: true
......@@ -124,6 +127,14 @@ module Ci
ONLINE_CONTACT_TIMEOUT.ago
end
def self.order_by(order)
if order == 'contacted_asc'
order_contacted_at_asc
else
order_created_at_desc
end
end
def set_default_values
self.token = SecureRandom.hex(15) if self.token.blank?
end
......
......@@ -797,4 +797,22 @@ describe Ci::Runner do
expect { subject.destroy }.to change { described_class.count }.by(-1)
end
end
describe '.order_by' do
it 'supports ordering by the contact date' do
runner1 = create(:ci_runner, contacted_at: 1.year.ago)
runner2 = create(:ci_runner, contacted_at: 1.month.ago)
runners = described_class.order_by('contacted_asc')
expect(runners).to eq([runner1, runner2])
end
it 'supports ordering by the creation date' do
runner1 = create(:ci_runner, created_at: 1.year.ago)
runner2 = create(:ci_runner, created_at: 1.month.ago)
runners = described_class.order_by('created_asc')
expect(runners).to eq([runner2, runner1])
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment