-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhandler.js
More file actions
86 lines (72 loc) · 3.42 KB
/
handler.js
File metadata and controls
86 lines (72 loc) · 3.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*
* Copyright 2025 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
* OF ANY KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
import { ok } from '@adobe/spacecat-shared-http-utils';
import { Config } from '@adobe/spacecat-shared-data-access';
import { say } from '../../utils/slack-utils.js';
const TASK_TYPE = 'disable-import-audit-processor';
/**
* Runs the disable import and audit processor
* @param {object} message - The message object containing siteId and auditContext
* @param {object} context - The context object
*/
export async function runDisableImportAuditProcessor(message, context) {
const { log, env, dataAccess } = context;
const {
siteId, siteUrl, organizationId, taskContext,
} = message;
const { Site, Configuration } = dataAccess;
const {
importTypes = [], auditTypes = [], slackContext, scheduledRun = false,
} = taskContext;
log.info('Processing disable import and audit request:', {
taskType: TASK_TYPE,
siteId,
organizationId,
importTypes,
auditTypes,
scheduledRun,
});
if (scheduledRun) {
log.info(`Scheduled run detected - skipping disable of imports and audits for site: ${siteUrl}`);
await say(env, log, slackContext, `:information_source: Scheduled run detected for site ${siteUrl} - skipping disable of imports and audits`);
return ok({ message: 'Scheduled run - no disable of imports and audits performed' });
}
try {
const site = await Site.findByBaseURL(siteUrl);
if (!site) {
throw new Error(`Site not found for siteId: ${siteId}`);
}
const siteConfig = site.getConfig();
for (const importType of importTypes) {
siteConfig.disableImport(importType);
}
site.setConfig(Config.toDynamoItem(siteConfig));
const configuration = await Configuration.findLatest();
for (const auditType of auditTypes) {
configuration.disableHandlerForSite(auditType, site);
}
await site.save();
await configuration.save();
log.info(`For site: ${siteUrl}: Disabled imports and audits`);
const importsText = importTypes.length > 0 ? importTypes.join(', ') : 'None';
const auditsText = auditTypes.length > 0 ? auditTypes.join(', ') : 'None';
let slackMessage = `:broom: *For site: ${siteUrl}: Disabled imports*: ${importsText} *and audits*: ${auditsText}`;
await say(env, log, slackContext, slackMessage);
slackMessage = ':information_source: The list of enabled imports and audits may differ from the disabled ones because items that are already enabled are not automatically disabled. When schedule run flag is true then no imports and audits are disabled.';
await say(env, log, slackContext, slackMessage);
} catch (error) {
log.error('Error in disable import and audit processor:', error);
await say(env, log, slackContext, `:x: Error disabling imports and audits: ${error.message}`);
}
return ok({ message: 'Disable import and audit processor completed' });
}
export default runDisableImportAuditProcessor;