Skip to content

Commit cbc4ed3

Browse files
Merge pull request #1807 from craigcomstock/ENT-6035/master
ENT-6035 Added duplicate host cleanup during FR import
2 parents df80482 + 998c953 commit cbc4ed3

3 files changed

Lines changed: 28 additions & 1 deletion

File tree

cfe_internal/enterprise/federation/federation.cf

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,8 @@ bundle agent federation_manage_files
316316
"feeder_username" data => parsejson('{"feeder_username":"$(cfengine_enterprise_federation:config.transport_user)"}');
317317
"feeder" data => parsejson('{"feeder": "$(sys.key_digest)"}');
318318
"cf_version" data => parsejson('{"cf_version":"$(sys.cf_version)"}');
319+
"handle_duplicates_value" string => ifelse("cfengine_mp_fr_handle_duplicate_hostkeys", "yes", "no");
320+
"handle_duplicates" data => parsejson('{"handle_duplicates":"$(handle_duplicates_value)"}');
319321

320322
files:
321323
enterprise_edition.(policy_server|am_policy_hub)::
@@ -364,7 +366,11 @@ bundle agent federation_manage_files
364366
create => "true",
365367
template_method => "mustache",
366368
edit_template => "$(this.promise_dirname)/../../../templates/federated_reporting/config.sh.mustache",
367-
template_data => mergedata(@(login), @(feeder_username), @(feeder), @(cf_version),
369+
template_data => mergedata(@(login),
370+
@(feeder_username),
371+
@(feeder),
372+
@(cf_version),
373+
@(handle_duplicates),
368374
parsejson('{"inventory_refresh_cmd": ""}')),
369375
perms => default:mog( "640", "root", "$(transport_user)" );
370376

templates/federated_reporting/config.sh.mustache

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,5 @@ CFE_FR_IMPORT_FILTERS_DIR="${CFE_FR_IMPORT_FILTERS_DIR:-$DEFAULT_PREFIX/superhub
7676
CFE_FR_INVENTORY_REFRESH_CMD="{{inventory_refresh_cmd}}"
7777
CFE_FR_DB_USER="{{db_user}}"
7878
CFE_FR_DB_USER="${CFE_FR_DB_USER:-cfpostgres}"
79+
CFE_FR_HANDLE_DUPLICATES="{{handle_duplicates}}" # default is no (don't handle duplicates as it adds to time to import)
80+
CFE_FR_HANDLE_DUPLICATES="${CFE_FR_HANDLE_DUPLICATES:-no}"

templates/federated_reporting/import.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ true "${CFE_FR_COMPRESSOR_EXT?undefined}"
1717
true "${CFE_FR_EXTRACTOR?undefined}"
1818
true "${CFE_FR_TABLES?undefined}"
1919
true "${CFE_FR_INVENTORY_REFRESH_CMD?undefined}"
20+
true "${CFE_FR_HANDLE_DUPLICATES?undefined}"
2021

2122
if ! type "$CFE_FR_EXTRACTOR" >/dev/null; then
2223
log "Extractor $CFE_FR_EXTRACTOR not available!"
@@ -57,8 +58,10 @@ table_whitelist=$(printf "'%s'," $CFE_FR_TABLES | sed -e 's/,$//')
5758

5859
failed=0
5960
log "Setting up schemas for import"
61+
declare -a hostkeys
6062
for file in $dump_files; do
6163
hostkey=$(basename "$file" | cut -d. -f1)
64+
hostkeys+=($hostkey)
6265
"$CFE_BIN_DIR"/psql -U $CFE_FR_DB_USER -d cfdb --set "ON_ERROR_STOP=1" \
6366
-c "SELECT ensure_feeder_schema('$hostkey', ARRAY[$table_whitelist]);" \
6467
> schema_setup.log 2>&1 || failed=1
@@ -100,6 +103,22 @@ else
100103
done
101104
fi
102105

106+
if [ "$CFE_FR_HANDLE_DUPLICATES" = "yes" ]; then
107+
log "Handle Duplicate Hostkeys"
108+
hostkey_list=$(printf "'%s'," ${hostkeys[*]} | sed -e 's/,$//')
109+
"$CFE_BIN_DIR"/psql -U $CFE_FR_DB_USER -d cfdb --set "ON_ERROR_STOP=1" \
110+
-c "SELECT handle_duplicate_hostkeys_in_import(ARRAY[$hostkey_list]);" \
111+
> duplicates.log 2>&1 || failed=1
112+
if [ "$failed" = "0" ]; then
113+
log "Handle Duplicate Hostkeys: DONE"
114+
else
115+
log "Handle Duplicate Hostkeys: FAILED"
116+
log "last 10 lines of duplicates.log"
117+
tail -n 10 duplicates.log
118+
exit 1
119+
fi
120+
fi
121+
103122
failed=0
104123
log "Attaching schemas"
105124
for file in $dump_files; do

0 commit comments

Comments
 (0)