Files
ubicloud/model/minio/minio_cluster.rb
Burak Velioglu 5bc883f0d6 Use display location names on resource URIs
While getting requests from a user or returning a response back to user, display
location names are used. Those names will be converted to internal location name
while sending them to the backend logic. Access tags of resources are also updated
to use display names instead of internal names
2024-04-24 01:46:35 -07:00

86 lines
1.8 KiB
Ruby

# frozen_string_literal: true
require_relative "../../model"
class MinioCluster < Sequel::Model
one_to_many :pools, key: :cluster_id, class: :MinioPool do |ds|
ds.order(:start_index)
end
many_through_many :servers, [[:minio_pool, :cluster_id, :id], [:minio_server, :minio_pool_id, :id]], class: :MinioServer do |ds|
ds.order(:index)
end
one_to_one :strand, key: :id
many_to_one :private_subnet, key: :private_subnet_id
include ResourceMethods
include SemaphoreMethods
include Authorization::HyperTagMethods
include Authorization::TaggableMethods
semaphore :destroy, :reconfigure
plugin :column_encryption do |enc|
enc.column :admin_password
enc.column :root_cert_key_1
enc.column :root_cert_key_2
end
def hyper_tag_name(project)
"project/#{project.ubid}/location/#{display_location}/minio-cluster/#{name}"
end
def display_location
LocationNameConverter.to_display_name(location)
end
def generate_etc_hosts_entry
servers.map do |server|
"#{server.private_ipv4_address} #{server.hostname}"
end.join("\n")
end
def storage_size_gib
pools.sum(&:storage_size_gib)
end
def server_count
pools.sum(&:server_count)
end
def drive_count
pools.sum(&:drive_count)
end
def ip4_urls
servers.map(&:ip4_url)
end
def single_instance_single_drive?
server_count == 1 && drive_count == 1
end
def single_instance_multi_drive?
server_count == 1 && drive_count > 1
end
def hostname
"#{name}.#{Config.minio_host_name}"
end
def url
dns_zone ? "https://#{hostname}:9000" : nil
end
def dns_zone
@dns_zone ||= DnsZone.where(project_id: Config.minio_service_project_id, name: Config.minio_host_name).first
end
def root_certs
root_cert_1.to_s + root_cert_2.to_s
end
def self.redacted_columns
super + [:root_cert_1, :root_cert_2]
end
end