mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-03 20:26:05 +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 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",
|
||||||
|
|||||||
Reference in New Issue
Block a user