mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
Merge pull request #2590 from Infisical/daniel/fix-envkey-missing-project
fix: envkey project imports
This commit is contained in:
@@ -126,6 +126,7 @@ export const importDataIntoInfisicalFn = async ({
|
||||
|
||||
const originalToNewProjectId = new Map<string, string>();
|
||||
const originalToNewEnvironmentId = new Map<string, string>();
|
||||
const projectsNotImported: string[] = [];
|
||||
|
||||
await projectDAL.transaction(async (tx) => {
|
||||
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}]`);
|
||||
throw new BadRequestError({ message: `Failed to import to project [name:${project.name}]` });
|
||||
});
|
||||
|
||||
originalToNewProjectId.set(project.id, newProject.id);
|
||||
}
|
||||
|
||||
// Import environments
|
||||
if (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)}`);
|
||||
|
||||
if (!projectId) {
|
||||
projectsNotImported.push(environment.projectId);
|
||||
// eslint-disable-next-line no-continue
|
||||
continue;
|
||||
}
|
||||
|
||||
const existingEnv = await projectEnvDAL.findOne({ projectId, slug }, tx);
|
||||
|
||||
if (existingEnv) {
|
||||
@@ -180,6 +186,11 @@ export const importDataIntoInfisicalFn = async ({
|
||||
>();
|
||||
|
||||
for (const secret of data.secrets) {
|
||||
if (!originalToNewEnvironmentId.get(secret.environmentId)) {
|
||||
// eslint-disable-next-line no-continue
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!mappedToEnvironmentId.has(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;
|
||||
|
||||
await importDataIntoInfisicalFn({
|
||||
const { projectsNotImported } = await importDataIntoInfisicalFn({
|
||||
input: decryptedJson,
|
||||
projectDAL,
|
||||
projectEnvDAL,
|
||||
@@ -112,6 +112,17 @@ export const externalMigrationQueueFactory = ({
|
||||
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({
|
||||
recipients: [actorEmail],
|
||||
subjectLine: "Infisical import successful",
|
||||
|
||||
Reference in New Issue
Block a user