in tasks/Node/src/tasks/AzureDtlCreateVM/task.ts [27:76]
async function checkArtifactsStatus(client: DevTestLabsClient, labVmId: string, templateFile: string, failOnArtifactError: boolean): Promise<void> {
if (!failOnArtifactError) {
tl.debug(`Fail on artifact error is ${failOnArtifactError}. Nothing to check. Ignoring.`);
return;
}
const expectedArtifactsCount: number = getExpectedArtifactsCount(templateFile);
if (expectedArtifactsCount <= 0) {
tl.debug(`Expected artifact count is ${expectedArtifactsCount}. Nothing to check. Ignoring.`);
return;
}
const vm: DevTestLabsModels.VirtualMachinesGetResponse = await getLabVm(client, labVmId);
const artifacts: DevTestLabsModels.ArtifactInstallProperties[] = vm.artifacts ? vm.artifacts : [];
const failedArtifacts: DevTestLabsModels.ArtifactInstallProperties[] = artifacts.filter(a => a && equalsIgnoreCase(a.status, 'Failed'));
const succeededArtifacts: DevTestLabsModels.ArtifactInstallProperties[] = artifacts.filter(a => a && equalsIgnoreCase(a.status, 'Succeeded'));
console.log(`Number of Artifacts Expected: ${expectedArtifactsCount}, Reported: ${artifacts.length}, Succeeded: ${succeededArtifacts.length}, Failed: ${failedArtifacts.length}`);
if (failedArtifacts.length > 0 || succeededArtifacts.length < expectedArtifactsCount) {
failedArtifacts.forEach(failedArtifact => {
tl.warning(`Failed to apply artifact '${getArtifactName(failedArtifact)}'.`);
if (failedArtifact.deploymentStatusMessage) {
let deploymentStatusMessage: string = failedArtifact.deploymentStatusMessage;
try {
deploymentStatusMessage = JSON.parse(failedArtifact.deploymentStatusMessage).error.details.message;
}
catch {
// Use the default.
}
console.log(`deploymentStatusMessage = ${deploymentStatusMessage}`);
}
if (failedArtifact.vmExtensionStatusMessage) {
let vmExtensionStatusMessage: string = failedArtifact.vmExtensionStatusMessage;
try {
vmExtensionStatusMessage = JSON.parse(failedArtifact.vmExtensionStatusMessage)[1].message;
}
catch {
// Use the default.
}
console.log(`vmExtensionStatusMessage = ${vmExtensionStatusMessage.replace(/\\n/gi, '')}`);
}
});
throw 'At least one artifact failed to apply. Review the lab virtual machine artifact results blade for full details.';
}
}