ubicloud/model/github_installation.rb
Burak Velioglu 52da8d4e2e Add migration file for github custom labels
Adding the migration for github custom labels, which will keep
a custom label which can be used to have label-level limits.
2025-09-15 14:40:49 +03:00

56 lines
2.3 KiB
Ruby

# frozen_string_literal: true
require_relative "../model"
class GithubInstallation < Sequel::Model
many_to_one :project
one_to_many :runners, key: :installation_id, class: :GithubRunner
one_to_many :repositories, key: :installation_id, class: :GithubRepository
many_to_many :cache_entries, join_table: :github_repository, right_key: :id, right_primary_key: :repository_id, left_key: :installation_id, class: :GithubCacheEntry
plugin ResourceMethods
def total_active_runner_vcpus
runners_dataset.total_active_runner_vcpus
end
def free_runner_upgrade?(at = Time.now)
free_runner_upgrade_expires_at > at
end
def free_runner_upgrade_expires_at
dates = [created_at + 7 * 24 * 60 * 60]
if (upgrade_until = project.get_ff_free_runner_upgrade_until)
dates.push(Time.parse(upgrade_until))
end
dates.max
end
def premium_runner_enabled?
!!allocator_preferences["family_filter"]&.include?("premium")
end
def cache_storage_gib
[project.effective_quota_value("GithubRunnerCacheStorage"), premium_runner_enabled? ? 100 : 0].max
end
end
# Table: github_installation
# Columns:
# id | uuid | PRIMARY KEY
# installation_id | bigint | NOT NULL
# name | text | NOT NULL
# type | text | NOT NULL
# project_id | uuid |
# cache_enabled | boolean | NOT NULL DEFAULT true
# use_docker_mirror | boolean | NOT NULL DEFAULT false
# allocator_preferences | jsonb | NOT NULL DEFAULT '{}'::jsonb
# created_at | timestamp with time zone | NOT NULL DEFAULT CURRENT_TIMESTAMP
# Indexes:
# github_installation_pkey | PRIMARY KEY btree (id)
# Foreign key constraints:
# github_installation_project_id_fkey | (project_id) REFERENCES project(id)
# Referenced By:
# github_custom_label | github_custom_label_installation_id_fkey | (installation_id) REFERENCES github_installation(id)
# github_repository | github_repository_installation_id_fkey | (installation_id) REFERENCES github_installation(id)
# github_runner | github_runner_installation_id_fkey | (installation_id) REFERENCES github_installation(id)