in source/packages/services/greengrass2-provisioning/src/fleet/fleet.dao.ts [196:263]
private assemble(
items: DocumentDbClientItem[]
): [DesiredTemplateUsage, ReportedTemplateUsage] {
logger.debug(`fleet.dao assemble: items:${JSON.stringify(items)}`);
if (items === undefined) {
return undefined;
}
const desiredMap: DesiredTemplateUsage = {};
const reportedMap: ReportedTemplateUsage = {};
const initDesiredMap = (name: string, version: number) => {
if (desiredMap[name] === undefined) {
desiredMap[name] = {};
}
if (desiredMap[name][version] === undefined) {
desiredMap[name][version] = {
inUse: 0,
IN_PROGRESS: 0,
SUCCEEDED: 0,
FAILED: 0,
};
}
};
const initReportedMap = (name: string, version: number) => {
if (reportedMap[name] === undefined) {
reportedMap[name] = {};
}
if (reportedMap[name][version] === undefined) {
reportedMap[name][version] = 0;
}
};
items.forEach((item) => {
const sk = expandDelimitedAttribute(item.sk);
if (
sk.length === 6 &&
sk[0] === PkType.Fleet &&
sk[2] === PkType.Template &&
sk[4] === PkType.TemplateVersion
) {
const type = sk[1];
const templateName = sk[3];
const templateVersion = parseInt(sk[5]);
if (type === 'reported') {
initReportedMap(templateName, templateVersion);
reportedMap[templateName][templateVersion] = item.inUse;
} else if (type === 'desired') {
initDesiredMap(templateName, templateVersion);
desiredMap[templateName][templateVersion] = {
inUse: item.inUse,
IN_PROGRESS: item.IN_PROGRESS,
SUCCEEDED: item.None ?? item.SUCCEEDED,
FAILED: item.Failure ?? item.FAILED,
};
}
}
});
logger.debug(
`fleet.dao assemble: exit: desired:${JSON.stringify(
desiredMap
)}, reported:${JSON.stringify(reportedMap)}`
);
return [desiredMap, reportedMap];
}