@puls-atlas/cli
Version:
The Puls Atlas CLI tool for managing Atlas projects
30 lines • 1.17 kB
JavaScript
import { fetchWithTimeout } from '../request.js';
import { createRequestHeaders, hasResolvedAuth, resolveAccess } from './access.js';
const failDiscovery = (access, message) => ({
targets: null,
warnings: [...access.warnings, message]
});
export const discoverIndexes = async context => {
const access = await resolveAccess(context);
if (!access.node || !hasResolvedAuth(access)) {
return failDiscovery(access, 'Elasticsearch index discovery is unavailable because node or authentication could not be resolved.');
}
try {
const response = await fetchWithTimeout(`${access.node}/_cat/indices?format=json&h=index`, {
headers: createRequestHeaders(access),
method: 'GET'
});
if (!response.ok) {
return failDiscovery(access, `Elasticsearch index discovery failed with status ${response.status}.`);
}
const indexes = await response.json();
return {
targets: indexes.map(index => ({
name: index?.index ?? null
})),
warnings: access.warnings
};
} catch (error) {
return failDiscovery(access, `Could not inspect Elasticsearch indexes at ${access.node}: ${error.message}`);
}
};