Merge pull request #2590 from Infisical/daniel/fix-envkey-missing-project

fix: envkey project imports
This commit is contained in:
Maidul Islam
2024-10-15 18:05:59 -04:00
committed by GitHub
2 changed files with 27 additions and 3 deletions
@@ -126,6 +126,7 @@ export const importDataIntoInfisicalFn = async ({
const originalToNewProjectId = new Map<string, string>(); const originalToNewProjectId = new Map<string, string>();
const originalToNewEnvironmentId = new Map<string, string>(); const originalToNewEnvironmentId = new Map<string, string>();
const projectsNotImported: string[] = [];
await projectDAL.transaction(async (tx) => { await projectDAL.transaction(async (tx) => {
for await (const project of data.projects) { for await (const project of data.projects) {
@@ -143,16 +144,21 @@ export const importDataIntoInfisicalFn = async ({
logger.error(e, `Failed to import to project [name:${project.name}]`); logger.error(e, `Failed to import to project [name:${project.name}]`);
throw new BadRequestError({ message: `Failed to import to project [name:${project.name}]` }); throw new BadRequestError({ message: `Failed to import to project [name:${project.name}]` });
}); });
originalToNewProjectId.set(project.id, newProject.id); originalToNewProjectId.set(project.id, newProject.id);
} }
// Import environments // Import environments
if (data.environments) { if (data.environments) {
for await (const environment of data.environments) { for await (const environment of data.environments) {
const projectId = originalToNewProjectId.get(environment.projectId)!; const projectId = originalToNewProjectId.get(environment.projectId);
const slug = slugify(`${environment.name}-${alphaNumericNanoId(4)}`); const slug = slugify(`${environment.name}-${alphaNumericNanoId(4)}`);
if (!projectId) {
projectsNotImported.push(environment.projectId);
// eslint-disable-next-line no-continue
continue;
}
const existingEnv = await projectEnvDAL.findOne({ projectId, slug }, tx); const existingEnv = await projectEnvDAL.findOne({ projectId, slug }, tx);
if (existingEnv) { if (existingEnv) {
@@ -180,6 +186,11 @@ export const importDataIntoInfisicalFn = async ({
>(); >();
for (const secret of data.secrets) { for (const secret of data.secrets) {
if (!originalToNewEnvironmentId.get(secret.environmentId)) {
// eslint-disable-next-line no-continue
continue;
}
if (!mappedToEnvironmentId.has(secret.environmentId)) { if (!mappedToEnvironmentId.has(secret.environmentId)) {
mappedToEnvironmentId.set(secret.environmentId, []); mappedToEnvironmentId.set(secret.environmentId, []);
} }
@@ -254,4 +265,6 @@ export const importDataIntoInfisicalFn = async ({
} }
} }
}); });
return { projectsNotImported };
}; };
@@ -97,7 +97,7 @@ export const externalMigrationQueueFactory = ({
const decryptedJson = JSON.parse(decrypted) as TImportInfisicalDataCreate; const decryptedJson = JSON.parse(decrypted) as TImportInfisicalDataCreate;
await importDataIntoInfisicalFn({ const { projectsNotImported } = await importDataIntoInfisicalFn({
input: decryptedJson, input: decryptedJson,
projectDAL, projectDAL,
projectEnvDAL, projectEnvDAL,
@@ -112,6 +112,17 @@ export const externalMigrationQueueFactory = ({
secretV2BridgeService secretV2BridgeService
}); });
if (projectsNotImported.length) {
logger.info(
{
actorEmail,
actorOrgId: decryptedJson.actorOrgId,
projectsNotImported
},
"One or more projects were not imported during import from external source"
);
}
await smtpService.sendMail({ await smtpService.sendMail({
recipients: [actorEmail], recipients: [actorEmail],
subjectLine: "Infisical import successful", subjectLine: "Infisical import successful",