* feature (workers): required schema changes Changes required for consolidation of worker name, description and address fields * fixup! feature (workers): required schema changes * fixup! feature (workers): required schema changes * fixup! feature (workers): required schema changes * Fixing up address constraint. * last_status_time = now() on insert only if the worker is type = 'kms' * update last_status_time for pki and kms based on different columns being updated. * tweaking the constraints on last_status_time and address. Co-authored-by: Todd <github@quaddi.com>
67 lines
2.4 KiB
PL/PgSQL
67 lines
2.4 KiB
PL/PgSQL
begin;
|
|
|
|
-- worker_aggregate view allows the worker and configuration to be read at the
|
|
-- same time.
|
|
create view server_worker_aggregate as
|
|
with worker_config_tags(worker_id, source, tags) as (
|
|
select
|
|
ct.worker_id,
|
|
ct.source,
|
|
-- keys and tags can be any lowercase printable character so use uppercase characters as delimitors.
|
|
string_agg(distinct concat_ws('Y', ct.key, ct.value), 'Z') as tags
|
|
from server_worker_tag ct
|
|
group by ct.worker_id, ct.source
|
|
),
|
|
connection_count (worker_id, count) as (
|
|
select
|
|
worker_id,
|
|
count(1) as count
|
|
from session_connection
|
|
where closed_reason is null
|
|
group by worker_id
|
|
)
|
|
select
|
|
w.public_id,
|
|
w.scope_id,
|
|
w.description,
|
|
w.name,
|
|
w.address,
|
|
w.create_time,
|
|
w.update_time,
|
|
w.version,
|
|
w.last_status_time,
|
|
cc.count as active_connection_count,
|
|
-- keys and tags can be any lowercase printable character so use uppercase characters as delimitors.
|
|
wt.tags as api_tags,
|
|
ct.tags as worker_config_tags
|
|
from server_worker w
|
|
left join worker_config_tags wt on
|
|
w.public_id = wt.worker_id and wt.source = 'api'
|
|
left join worker_config_tags ct on
|
|
w.public_id = ct.worker_id and ct.source = 'configuration'
|
|
left join connection_count as cc on
|
|
w.public_id = cc.worker_id;
|
|
comment on view server_worker_aggregate is
|
|
'server_worker_aggregate contains the worker resource with its worker provided config values and its configuration and api provided tags.';
|
|
|
|
|
|
-- Replaces the view created in 9/01.
|
|
-- Remove the worker id from this view. In actuality this is almost a no-op
|
|
-- because no server information was ever getting populated here due to a bug
|
|
-- in the update mask when updating a session at the time we activate a session.
|
|
create view session_list as
|
|
select
|
|
s.public_id, s.user_id, s.host_id, s.target_id,
|
|
s.host_set_id, s.auth_token_id, s.scope_id, s.certificate,s.expiration_time,
|
|
s.connection_limit, s.tofu_token, s.key_id, s.termination_reason, s.version,
|
|
s.create_time, s.update_time, s.endpoint, s.worker_filter,
|
|
ss.state, ss.previous_end_time, ss.start_time, ss.end_time, sc.public_id as connection_id,
|
|
sc.client_tcp_address, sc.client_tcp_port, sc.endpoint_tcp_address, sc.endpoint_tcp_port,
|
|
sc.bytes_up, sc.bytes_down, sc.closed_reason
|
|
from session s
|
|
join session_state ss on
|
|
s.public_id = ss.session_id
|
|
left join session_connection sc on
|
|
s.public_id = sc.session_id;
|
|
|
|
commit; |