refactor: modify Northflank integration sync logic

This commit is contained in:
Chukwunonso Frank
2023-07-12 12:25:44 +01:00
parent 5e2b31cb6c
commit 112d4ec9c0
+9 -77
View File
@@ -62,12 +62,14 @@ const syncSecrets = async ({
secrets, secrets,
accessId, accessId,
accessToken, accessToken,
secretGroupID
}: { }: {
integration: IIntegration; integration: IIntegration;
integrationAuth: IIntegrationAuth; integrationAuth: IIntegrationAuth;
secrets: any; secrets: any;
accessId: string | null; accessId: string | null;
accessToken: string; accessToken: string;
secretGroupID?: string;
}) => { }) => {
switch (integration.integration) { switch (integration.integration) {
case INTEGRATION_AZURE_KEY_VAULT: case INTEGRATION_AZURE_KEY_VAULT:
@@ -208,7 +210,8 @@ const syncSecrets = async ({
await syncSecretsNorthflank({ await syncSecretsNorthflank({
integration, integration,
secrets, secrets,
accessToken accessToken,
secretGroupID
}); });
break; break;
} }
@@ -1954,69 +1957,23 @@ const syncSecretsCloudflarePages = async ({
const syncSecretsNorthflank = async ({ const syncSecretsNorthflank = async ({
integration, integration,
secrets, secrets,
accessToken accessToken,
secretGroupID
}: { }: {
integration: IIntegration; integration: IIntegration;
secrets: any; secrets: any;
accessToken: string; accessToken: string;
secretGroupID?: string;
}) => { }) => {
// secrets: {
// secretGroupID: 'some_id',
// secretGroupName: 'some_name',
// data: {}
// }
const {
data: {
secrets: getSecretsRes
}
} = await standardRequest.get(
`${INTEGRATION_NORTHFLANK_API_URL}/v1/projects/${integration.appId}/secrets`,
{
headers: {
Authorization: `Bearer ${accessToken}`,
"Accept-Encoding": "application/json"
}
}
);
const secretGroups = getSecretsRes.map((group: any) => {
return {
id: group.id,
name: group.name
};
})
for await (const group of secretGroups) {
if (group.id === secrets.secretGroupID) {
// add secret to existing group
let {
data: {
secrets: {
variables
}
}
} = await standardRequest.get(
`${INTEGRATION_NORTHFLANK_API_URL}/v1/projects/${integration.appId}/secrets/${secrets.secretGroupID}`,
{
headers: {
Authorization: `Bearer ${accessToken}`,
"Accept-Encoding": "application/json"
}
}
);
variables = { ...secrets.data }
const modifiedFormatForSecretInjection = { const modifiedFormatForSecretInjection = {
secrets: { secrets: {
variables variables: secrets
} }
} }
await standardRequest.post( await standardRequest.post(
`${INTEGRATION_NORTHFLANK_API_URL}/v1/projects/${integration.appId}/secrets/${secrets.secretGroupID}`, `${INTEGRATION_NORTHFLANK_API_URL}/v1/projects/${integration.appId}/secrets/${secretGroupID}`,
modifiedFormatForSecretInjection, modifiedFormatForSecretInjection,
{ {
headers: { headers: {
@@ -2025,31 +1982,6 @@ const syncSecretsNorthflank = async ({
} }
} }
); );
} else {
// create new secret group
const modifiedFormatForSecretInjection = {
name: secrets.secretGroupName,
secretType: "environment",
priority: 10,
secrets: {
variables: secrets.data
}
};
await standardRequest.post(
`${INTEGRATION_NORTHFLANK_API_URL}/v1/projects/${integration.appId}/secrets`,
modifiedFormatForSecretInjection,
{
headers: {
Authorization: `Bearer ${accessToken}`,
"Accept-Encoding": "application/json"
}
}
);
}
}
// TODO:: figure out delete business logic for secret groups
}; };
export { syncSecrets }; export { syncSecrets };