Class: Observability::GroupO11ySetting
Constant Summary
collapse
- HUMANIZED_ATTRIBUTES =
{
o11y_service_url: 'O11y service name'
}.freeze
- SETUP_WINDOW =
5.minutes
ApplicationRecord::MAX_PLUCK
HasCheckConstraints::NOT_NULL_CHECK_PATTERN
ResetOnColumnErrors::MAX_RESET_PERIOD
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
===, cached_column_list, #create_or_load_association, current_transaction, declarative_enum, default_select_columns, delete_all_returning, #deleted_from_database?, id_in, id_not_in, iid_in, nullable_column?, primary_key_in, #readable_by?, safe_ensure_unique, safe_find_or_create_by, safe_find_or_create_by!, #to_ability_name, underscore, where_exists, where_not_exists, with_fast_read_statement_timeout, without_order
#sharding_organization
#reset_on_union_error, #reset_on_unknown_attribute_error
#serializable_hash
Instance Attribute Details
#o11y_service_name ⇒ Object
60
61
62
|
# File 'app/models/observability/group_o11y_setting.rb', line 60
def o11y_service_name
@o11y_service_name || name_from_url || name_from_group
end
|
Class Method Details
.find_by_group_id(group_id) ⇒ Object
33
34
35
|
# File 'app/models/observability/group_o11y_setting.rb', line 33
def self.find_by_group_id(group_id)
find_by(group_id: group_id)
end
|
.human_attribute_name(attribute, *options) ⇒ Object
37
38
39
|
# File 'app/models/observability/group_o11y_setting.rb', line 37
def self.human_attribute_name(attribute, *options)
HUMANIZED_ATTRIBUTES[attribute.to_sym] || super
end
|
.observability_setting_for(resource) ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'app/models/observability/group_o11y_setting.rb', line 41
def self.observability_setting_for(resource)
return unless resource
group = resource.is_a?(Project) ? resource.group : resource
return unless group.is_a?(Group)
ancestor_ids = group.traversal_ids.reverse
return if ancestor_ids.empty?
group_id_attribute = arel_table[:group_id]
array_sql = "array_position(ARRAY[#{ancestor_ids.join(',')}]::bigint[], " \
"#{group_id_attribute.relation.name}.#{group_id_attribute.name})"
where(group_id: ancestor_ids)
.order(Arel.sql(array_sql))
.first
end
|
Instance Method Details
#name_from_group ⇒ Object
70
71
72
|
# File 'app/models/observability/group_o11y_setting.rb', line 70
def name_from_group
group&.full_path&.to_s&.tr('/', '-')
end
|
#name_from_url ⇒ Object
64
65
66
67
68
|
# File 'app/models/observability/group_o11y_setting.rb', line 64
def name_from_url
return unless o11y_service_url
o11y_service_url.to_s.gsub(%r{https://|\.gitlab-o11y\.com}, '')
end
|
#otel_address ⇒ Object
97
98
99
|
# File 'app/models/observability/group_o11y_setting.rb', line 97
def otel_address
"#{o11y_service_name}.otel.gitlab-o11y.com"
end
|
#otel_grpc_endpoint ⇒ Object
93
94
95
|
# File 'app/models/observability/group_o11y_setting.rb', line 93
def otel_grpc_endpoint
"http://#{otel_address}:4317"
end
|
#otel_http_endpoint ⇒ Object
89
90
91
|
# File 'app/models/observability/group_o11y_setting.rb', line 89
def otel_http_endpoint
"http://#{otel_address}:4318"
end
|
#provisioning? ⇒ Boolean
85
86
87
|
# File 'app/models/observability/group_o11y_setting.rb', line 85
def provisioning?
within_provisioning_window? || new_record?
end
|
74
75
76
77
78
79
80
81
82
83
|
# File 'app/models/observability/group_o11y_setting.rb', line 74
def validate_email_format
if o11y_service_user_email.blank?
errors.add(:o11y_service_user_email, I18n.t(:invalid, scope: 'activerecord.errors.messages'))
return
end
return if ValidateEmail.valid?(o11y_service_user_email)
errors.add(:o11y_service_user_email, I18n.t(:invalid, scope: 'valid_email.validations.email'))
end
|