mirror of https://github.com/hashicorp/boundary
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
606 lines
17 KiB
606 lines
17 KiB
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package plugin
|
|
|
|
const (
|
|
upsertHostCatalogSecretQuery = `
|
|
insert into host_plugin_catalog_secret
|
|
(catalog_id, secret, key_id)
|
|
values
|
|
(@catalog_id, @secret, @key_id)
|
|
on conflict (catalog_id) do update
|
|
set secret = excluded.secret,
|
|
key_id = excluded.key_id
|
|
returning *;
|
|
`
|
|
|
|
deleteHostCatalogSecretQuery = `
|
|
delete from host_plugin_catalog_secret
|
|
where catalog_id = @catalog_id;
|
|
`
|
|
|
|
setSyncNextRunInQuery = `
|
|
select
|
|
need_sync as sync_now,
|
|
sync_interval_seconds,
|
|
case
|
|
when sync_interval_seconds is null
|
|
then
|
|
extract(epoch from (least(now(), last_sync_time) + ?) - now())::int
|
|
when sync_interval_seconds > 0
|
|
then
|
|
extract(epoch from (least(now(), last_sync_time)) - now())::int + sync_interval_seconds
|
|
else
|
|
0
|
|
end resync_in
|
|
from host_plugin_set
|
|
order by need_sync desc, last_sync_time desc
|
|
limit 1;
|
|
`
|
|
|
|
setSyncJobQuery = `
|
|
need_sync
|
|
or
|
|
sync_interval_seconds is null and last_sync_time <= wt_add_seconds_to_now(?)
|
|
or
|
|
sync_interval_seconds > 0 and wt_add_seconds(sync_interval_seconds, last_sync_time) <= current_timestamp
|
|
`
|
|
|
|
updateSyncDataQuery = `
|
|
update host_plugin_set
|
|
set
|
|
last_sync_time = current_timestamp,
|
|
need_sync = false
|
|
where public_id = ?
|
|
`
|
|
|
|
estimateCountHosts = `
|
|
select sum(reltuples::bigint) as estimate from pg_class where oid in ('host_plugin_host'::regclass)
|
|
`
|
|
|
|
listHostsTemplate = `
|
|
with hosts as (
|
|
select public_id,
|
|
catalog_id,
|
|
external_id,
|
|
external_name,
|
|
name,
|
|
description,
|
|
create_time,
|
|
update_time,
|
|
version
|
|
from host_plugin_host
|
|
where catalog_id = @catalog_id
|
|
order by create_time desc, public_id desc
|
|
limit %d
|
|
),
|
|
host_catalog as (
|
|
select project_id,
|
|
plugin_id,
|
|
public_id
|
|
from host_plugin_catalog
|
|
where public_id = @catalog_id
|
|
),
|
|
host_ip_addresses as (
|
|
select string_agg(distinct host(address), '|') as ip_addresses,
|
|
host_id
|
|
from host_ip_address
|
|
where host_id in (select public_id from hosts)
|
|
group by host_id
|
|
),
|
|
host_dns_names as (
|
|
select string_agg(distinct name, '|') as dns_names,
|
|
host_id
|
|
from host_dns_name
|
|
where host_id in (select public_id from hosts)
|
|
group by host_id
|
|
),
|
|
host_set_ids as (
|
|
select string_agg(distinct set_id, '|') as set_ids,
|
|
host_id
|
|
from host_plugin_set_member
|
|
where host_id in (select public_id from hosts)
|
|
group by host_id
|
|
),
|
|
final as (
|
|
select h.public_id,
|
|
h.catalog_id,
|
|
h.external_id,
|
|
h.external_name,
|
|
hc.project_id,
|
|
hc.plugin_id,
|
|
h.name,
|
|
h.description,
|
|
h.create_time,
|
|
h.update_time,
|
|
h.version,
|
|
hia.ip_addresses,
|
|
hdn.dns_names,
|
|
hsi.set_ids
|
|
from hosts h
|
|
join host_catalog hc on hc.public_id = h.catalog_id
|
|
left outer join host_ip_addresses hia on hia.host_id = h.public_id
|
|
left outer join host_dns_names hdn on hdn.host_id = h.public_id
|
|
left outer join host_set_ids hsi on hsi.host_id = h.public_id
|
|
)
|
|
select *
|
|
from final
|
|
order by create_time desc, public_id desc;
|
|
`
|
|
|
|
listHostsPageTemplate = `
|
|
with hosts as (
|
|
select public_id,
|
|
catalog_id,
|
|
external_id,
|
|
external_name,
|
|
name,
|
|
description,
|
|
create_time,
|
|
update_time,
|
|
version
|
|
from host_plugin_host
|
|
where catalog_id = @catalog_id
|
|
and (create_time, public_id) < (@last_item_create_time, @last_item_id)
|
|
order by create_time desc, public_id desc
|
|
limit %d
|
|
),
|
|
host_catalog as (
|
|
select project_id,
|
|
plugin_id,
|
|
public_id
|
|
from host_plugin_catalog
|
|
where public_id = @catalog_id
|
|
),
|
|
host_ip_addresses as (
|
|
select string_agg(distinct host(address), '|') as ip_addresses,
|
|
host_id
|
|
from host_ip_address
|
|
where host_id in (select public_id from hosts)
|
|
group by host_id
|
|
),
|
|
host_dns_names as (
|
|
select string_agg(distinct name, '|') as dns_names,
|
|
host_id
|
|
from host_dns_name
|
|
where host_id in (select public_id from hosts)
|
|
group by host_id
|
|
),
|
|
host_set_ids as (
|
|
select string_agg(distinct set_id, '|') as set_ids,
|
|
host_id
|
|
from host_plugin_set_member
|
|
where host_id in (select public_id from hosts)
|
|
group by host_id
|
|
),
|
|
final as (
|
|
select h.public_id,
|
|
h.catalog_id,
|
|
h.external_id,
|
|
h.external_name,
|
|
hc.project_id,
|
|
hc.plugin_id,
|
|
h.name,
|
|
h.description,
|
|
h.create_time,
|
|
h.update_time,
|
|
h.version,
|
|
hia.ip_addresses,
|
|
hdn.dns_names,
|
|
hsi.set_ids
|
|
from hosts h
|
|
join host_catalog hc on hc.public_id = h.catalog_id
|
|
left outer join host_ip_addresses hia on hia.host_id = h.public_id
|
|
left outer join host_dns_names hdn on hdn.host_id = h.public_id
|
|
left outer join host_set_ids hsi on hsi.host_id = h.public_id
|
|
)
|
|
select *
|
|
from final
|
|
order by create_time desc, public_id desc;
|
|
`
|
|
|
|
listHostsRefreshTemplate = `
|
|
with hosts as (
|
|
select public_id,
|
|
catalog_id,
|
|
external_id,
|
|
external_name,
|
|
name,
|
|
description,
|
|
create_time,
|
|
update_time,
|
|
version
|
|
from host_plugin_host
|
|
where catalog_id = @catalog_id
|
|
and update_time > @updated_after_time
|
|
order by update_time desc, public_id desc
|
|
limit %d
|
|
),
|
|
host_catalog as (
|
|
select project_id,
|
|
plugin_id,
|
|
public_id
|
|
from host_plugin_catalog
|
|
where public_id = @catalog_id
|
|
),
|
|
host_ip_addresses as (
|
|
select string_agg(distinct host(address), '|') as ip_addresses,
|
|
host_id
|
|
from host_ip_address
|
|
where host_id in (select public_id from hosts)
|
|
group by host_id
|
|
),
|
|
host_dns_names as (
|
|
select string_agg(distinct name, '|') as dns_names,
|
|
host_id
|
|
from host_dns_name
|
|
where host_id in (select public_id from hosts)
|
|
group by host_id
|
|
),
|
|
host_set_ids as (
|
|
select string_agg(distinct set_id, '|') as set_ids,
|
|
host_id
|
|
from host_plugin_set_member
|
|
where host_id in (select public_id from hosts)
|
|
group by host_id
|
|
),
|
|
final as (
|
|
select h.public_id,
|
|
h.catalog_id,
|
|
h.external_id,
|
|
h.external_name,
|
|
hc.project_id,
|
|
hc.plugin_id,
|
|
h.name,
|
|
h.description,
|
|
h.create_time,
|
|
h.update_time,
|
|
h.version,
|
|
hia.ip_addresses,
|
|
hdn.dns_names,
|
|
hsi.set_ids
|
|
from hosts h
|
|
join host_catalog hc on hc.public_id = h.catalog_id
|
|
left outer join host_ip_addresses hia on hia.host_id = h.public_id
|
|
left outer join host_dns_names hdn on hdn.host_id = h.public_id
|
|
left outer join host_set_ids hsi on hsi.host_id = h.public_id
|
|
)
|
|
select *
|
|
from final
|
|
order by update_time desc, public_id desc;
|
|
`
|
|
|
|
listHostsRefreshPageTemplate = `
|
|
with hosts as (
|
|
select public_id,
|
|
catalog_id,
|
|
external_id,
|
|
external_name,
|
|
name,
|
|
description,
|
|
create_time,
|
|
update_time,
|
|
version
|
|
from host_plugin_host
|
|
where catalog_id = @catalog_id
|
|
and update_time > @updated_after_time
|
|
and (update_time, public_id) < (@last_item_update_time, @last_item_id)
|
|
order by update_time desc, public_id desc
|
|
limit %d
|
|
),
|
|
host_catalog as (
|
|
select project_id,
|
|
plugin_id,
|
|
public_id
|
|
from host_plugin_catalog
|
|
where public_id = @catalog_id
|
|
),
|
|
host_ip_addresses as (
|
|
select string_agg(distinct host(address), '|') as ip_addresses,
|
|
host_id
|
|
from host_ip_address
|
|
where host_id in (select public_id from hosts)
|
|
group by host_id
|
|
),
|
|
host_dns_names as (
|
|
select string_agg(distinct name, '|') as dns_names,
|
|
host_id
|
|
from host_dns_name
|
|
where host_id in (select public_id from hosts)
|
|
group by host_id
|
|
),
|
|
host_set_ids as (
|
|
select string_agg(distinct set_id, '|') as set_ids,
|
|
host_id
|
|
from host_plugin_set_member
|
|
where host_id in (select public_id from hosts)
|
|
group by host_id
|
|
),
|
|
final as (
|
|
select h.public_id,
|
|
h.catalog_id,
|
|
h.external_id,
|
|
h.external_name,
|
|
hc.project_id,
|
|
hc.plugin_id,
|
|
h.name,
|
|
h.description,
|
|
h.create_time,
|
|
h.update_time,
|
|
h.version,
|
|
hia.ip_addresses,
|
|
hdn.dns_names,
|
|
hsi.set_ids
|
|
from hosts h
|
|
join host_catalog hc on hc.public_id = h.catalog_id
|
|
left outer join host_ip_addresses hia on hia.host_id = h.public_id
|
|
left outer join host_dns_names hdn on hdn.host_id = h.public_id
|
|
left outer join host_set_ids hsi on hsi.host_id = h.public_id
|
|
)
|
|
select *
|
|
from final
|
|
order by update_time desc, public_id desc;
|
|
`
|
|
|
|
estimateCountHostSets = `
|
|
select sum(reltuples::bigint) as estimate from pg_class where oid in ('host_plugin_set'::regclass)
|
|
`
|
|
|
|
listSetsTemplate = `
|
|
with host_sets as (
|
|
select public_id,
|
|
catalog_id,
|
|
name,
|
|
description,
|
|
create_time,
|
|
update_time,
|
|
last_sync_time,
|
|
need_sync,
|
|
sync_interval_seconds,
|
|
version,
|
|
attributes
|
|
from host_plugin_set
|
|
where catalog_id = @catalog_id
|
|
order by create_time desc, public_id desc
|
|
limit %d
|
|
),
|
|
host_catalog as (
|
|
select plugin_id,
|
|
public_id
|
|
from host_plugin_catalog
|
|
where public_id = @catalog_id
|
|
),
|
|
preferred_endpoints as (
|
|
select string_agg(distinct concat_ws('=', priority, condition), '|') as preferred_endpoints,
|
|
host_set_id
|
|
from host_set_preferred_endpoint
|
|
where host_set_id in (select public_id from host_sets)
|
|
group by host_set_id
|
|
),
|
|
host_set_members as (
|
|
select string_agg(distinct host_id, '|') as host_ids,
|
|
set_id
|
|
from host_plugin_set_member
|
|
where set_id in (select public_id from host_sets)
|
|
group by set_id
|
|
),
|
|
final as (
|
|
select hs.public_id,
|
|
hs.catalog_id,
|
|
hc.plugin_id,
|
|
hs.name,
|
|
hs.description,
|
|
hs.create_time,
|
|
hs.update_time,
|
|
hs.last_sync_time,
|
|
hs.need_sync,
|
|
hs.sync_interval_seconds,
|
|
hs.version,
|
|
hs.attributes,
|
|
ppe.preferred_endpoints,
|
|
hsm.host_ids
|
|
from host_sets hs
|
|
join host_catalog hc on hc.public_id = hs.catalog_id
|
|
left outer join preferred_endpoints ppe on ppe.host_set_id = hs.public_id
|
|
left outer join host_set_members hsm on hsm.set_id = hs.public_id
|
|
)
|
|
select *
|
|
from final
|
|
order by create_time desc, public_id desc;
|
|
`
|
|
|
|
listSetsPageTemplate = `
|
|
with host_sets as (
|
|
select public_id,
|
|
catalog_id,
|
|
name,
|
|
description,
|
|
create_time,
|
|
update_time,
|
|
last_sync_time,
|
|
need_sync,
|
|
sync_interval_seconds,
|
|
version,
|
|
attributes
|
|
from host_plugin_set
|
|
where catalog_id = @catalog_id
|
|
and (create_time, public_id) < (@last_item_create_time, @last_item_id)
|
|
order by create_time desc, public_id desc
|
|
limit %d
|
|
),
|
|
host_catalog as (
|
|
select plugin_id,
|
|
public_id
|
|
from host_plugin_catalog
|
|
where public_id = @catalog_id
|
|
),
|
|
preferred_endpoints as (
|
|
select string_agg(distinct concat_ws('=', priority, condition), '|') as preferred_endpoints,
|
|
host_set_id
|
|
from host_set_preferred_endpoint
|
|
where host_set_id in (select public_id from host_sets)
|
|
group by host_set_id
|
|
),
|
|
host_set_members as (
|
|
select string_agg(distinct host_id, '|') as host_ids,
|
|
set_id
|
|
from host_plugin_set_member
|
|
where set_id in (select public_id from host_sets)
|
|
group by set_id
|
|
),
|
|
final as (
|
|
select hs.public_id,
|
|
hs.catalog_id,
|
|
hc.plugin_id,
|
|
hs.name,
|
|
hs.description,
|
|
hs.create_time,
|
|
hs.update_time,
|
|
hs.last_sync_time,
|
|
hs.need_sync,
|
|
hs.sync_interval_seconds,
|
|
hs.version,
|
|
hs.attributes,
|
|
ppe.preferred_endpoints,
|
|
hsm.host_ids
|
|
from host_sets hs
|
|
join host_catalog hc on hc.public_id = hs.catalog_id
|
|
left outer join preferred_endpoints ppe on ppe.host_set_id = hs.public_id
|
|
left outer join host_set_members hsm on hsm.set_id = hs.public_id
|
|
)
|
|
select *
|
|
from final
|
|
order by create_time desc, public_id desc;
|
|
`
|
|
|
|
listSetsRefreshTemplate = `
|
|
with host_sets as (
|
|
select public_id,
|
|
catalog_id,
|
|
name,
|
|
description,
|
|
create_time,
|
|
update_time,
|
|
last_sync_time,
|
|
need_sync,
|
|
sync_interval_seconds,
|
|
version,
|
|
attributes
|
|
from host_plugin_set
|
|
where catalog_id = @catalog_id
|
|
and update_time > @updated_after_time
|
|
order by update_time desc, public_id desc
|
|
limit %d
|
|
),
|
|
host_catalog as (
|
|
select plugin_id,
|
|
public_id
|
|
from host_plugin_catalog
|
|
where public_id = @catalog_id
|
|
),
|
|
preferred_endpoints as (
|
|
select string_agg(distinct concat_ws('=', priority, condition), '|') as preferred_endpoints,
|
|
host_set_id
|
|
from host_set_preferred_endpoint
|
|
where host_set_id in (select public_id from host_sets)
|
|
group by host_set_id
|
|
),
|
|
host_set_members as (
|
|
select string_agg(distinct host_id, '|') as host_ids,
|
|
set_id
|
|
from host_plugin_set_member
|
|
where set_id in (select public_id from host_sets)
|
|
group by set_id
|
|
),
|
|
final as (
|
|
select hs.public_id,
|
|
hs.catalog_id,
|
|
hc.plugin_id,
|
|
hs.name,
|
|
hs.description,
|
|
hs.create_time,
|
|
hs.update_time,
|
|
hs.last_sync_time,
|
|
hs.need_sync,
|
|
hs.sync_interval_seconds,
|
|
hs.version,
|
|
hs.attributes,
|
|
ppe.preferred_endpoints,
|
|
hsm.host_ids
|
|
from host_sets hs
|
|
join host_catalog hc on hc.public_id = hs.catalog_id
|
|
left outer join preferred_endpoints ppe on ppe.host_set_id = hs.public_id
|
|
left outer join host_set_members hsm on hsm.set_id = hs.public_id
|
|
)
|
|
select *
|
|
from final
|
|
order by update_time desc, public_id desc;
|
|
`
|
|
|
|
listSetsRefreshPageTemplate = `
|
|
with host_sets as (
|
|
select public_id,
|
|
catalog_id,
|
|
name,
|
|
description,
|
|
create_time,
|
|
update_time,
|
|
last_sync_time,
|
|
need_sync,
|
|
sync_interval_seconds,
|
|
version,
|
|
attributes
|
|
from host_plugin_set
|
|
where catalog_id = @catalog_id
|
|
and update_time > @updated_after_time
|
|
and (update_time, public_id) < (@last_item_update_time, @last_item_id)
|
|
order by update_time desc, public_id desc
|
|
limit %d
|
|
),
|
|
host_catalog as (
|
|
select plugin_id,
|
|
public_id
|
|
from host_plugin_catalog
|
|
where public_id = @catalog_id
|
|
),
|
|
preferred_endpoints as (
|
|
select string_agg(distinct concat_ws('=', priority, condition), '|') as preferred_endpoints,
|
|
host_set_id
|
|
from host_set_preferred_endpoint
|
|
where host_set_id in (select public_id from host_sets)
|
|
group by host_set_id
|
|
),
|
|
host_set_members as (
|
|
select string_agg(distinct host_id, '|') as host_ids,
|
|
set_id
|
|
from host_plugin_set_member
|
|
where set_id in (select public_id from host_sets)
|
|
group by set_id
|
|
),
|
|
final as (
|
|
select hs.public_id,
|
|
hs.catalog_id,
|
|
hc.plugin_id,
|
|
hs.name,
|
|
hs.description,
|
|
hs.create_time,
|
|
hs.update_time,
|
|
hs.last_sync_time,
|
|
hs.need_sync,
|
|
hs.sync_interval_seconds,
|
|
hs.version,
|
|
hs.attributes,
|
|
ppe.preferred_endpoints,
|
|
hsm.host_ids
|
|
from host_sets hs
|
|
join host_catalog hc on hc.public_id = hs.catalog_id
|
|
left outer join preferred_endpoints ppe on ppe.host_set_id = hs.public_id
|
|
left outer join host_set_members hsm on hsm.set_id = hs.public_id
|
|
)
|
|
select *
|
|
from final
|
|
order by update_time desc, public_id desc;
|
|
`
|
|
)
|