Commit c0530a76 authored by Mike Greiling's avatar Mike Greiling

add group shared runner usage overview page

parent fd9597d4
......@@ -90,3 +90,39 @@
}
}
}
.panel {
.shared_runners_limit_under_quota {
color: $gl-success;
}
.shared_runners_limit_over_quota {
color: $gl-danger;
}
}
.pipeline-quota {
border-top: 1px solid $table-border-color;
border-bottom: 1px solid $table-border-color;
margin: 0 0 $gl-padding;
.row {
padding-top: 10px;
padding-bottom: 10px;
}
.right {
text-align: right;
}
.progress {
height: 6px;
width: 100%;
margin-bottom: 0;
margin-top: 4px;
}
}
table.pipeline-project-metrics tr td {
padding: $gl-padding;
}
......@@ -368,14 +368,6 @@ a.deploy-project-label {
color: $gl-warning;
}
.shared_runners_limit_under_quota {
color: $gl-success;
}
.shared_runners_limit_over_quota {
color: $gl-danger;
}
.breadcrumb.repo-breadcrumb {
padding: 0;
background: transparent;
......
class Groups::PipelineQuotaController < Groups::ApplicationController
before_action :authorize_admin_group!
layout 'group_settings'
def index
@projects = @group.projects.page(params[:page])
end
end
......@@ -67,6 +67,28 @@ module GroupsHelper
end
end
def group_shared_runner_limits_progress_bar(group)
percent = [group.shared_runners_minutes_percent_used, 100].min
status =
if percent == 100
'danger'
elsif percent >= 80
'warning'
else
'success'
end
options = {
class: "progress-bar progress-bar-#{status}",
style: "width: #{percent}%;"
}
content_tag :div, class: 'progress' do
content_tag :div, nil, options
end
end
def group_issues(group)
IssuesFinder.new(current_user, group_id: group.id).execute
end
......
......@@ -192,6 +192,11 @@ class Namespace < ActiveRecord::Base
shared_runners_minutes.to_i >= shared_runners_minutes_limit
end
def shared_runners_minutes_percent_used
return 0 unless shared_runners_enabled? && shared_runners_minutes_limit_enabled?
100 * shared_runners_minutes.to_i / shared_runners_minutes_limit
end
private
def repository_storage_paths
......
- page_title "Pipeline Quota"
%h3.page-title Group Pipeline Quota
%p.light Monthly build minutes usage across shared runners for #{@group.name}
.pipeline-quota.container-fluid
.row
.col-sm-6
%strong
Current Period Usage
%div
= group_shared_runner_limits_quota(@group)
minutes
.col-sm-6.right
- if @group.shared_runners_minutes_limit_enabled?
= "#{@group.shared_runners_minutes_percent_used}% used"
- else
Unlimited
= group_shared_runner_limits_progress_bar(@group)
%table.table.pipeline-project-metrics
%thead
%tr
%th Project
%th Minutes
%tbody
- @projects.each do |project|
%tr
%td
.avatar-container.s20
= project_icon(project, alt: '', class: 'avatar project-avatar s20')
%strong= link_to project.name, project
%td
= project.shared_runners_minutes.to_i
- if @projects.blank?
%tr
%td{colspan: 2}
.nothing-here-block This group has no projects
= paginate @projects, theme: "gitlab"
......@@ -28,5 +28,9 @@
= link_to group_audit_events_path(@group), title: "Audit Events" do
%span
Audit Events
= nav_link(controller: :pipeline_quota) do
= link_to group_pipeline_quota_path(@group), title: "Pipeline Quota" do
%span
Pipeline Quota
%li
= link_to 'Edit Group', edit_group_path(@group)
......@@ -26,6 +26,7 @@ scope(path: 'groups/*group_id',
## EE-specific
resource :notification_setting, only: [:update]
resources :audit_events, only: [:index]
resources :pipeline_quota, only: [:index]
## EE-specific
## EE-specific
......
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