MCPcopy
hub / github.com/Kong/insomnia / syncControlPlane

Function syncControlPlane

packages/insomnia/src/konnect/sync.ts:597–689  ·  view source on GitHub ↗

Syncs a single control plane: upserts its project + env, syncs all services, deletes stale workspaces.

(
  controlPlane: KonnectControlPlane,
  syncCtx: SyncContext,
  acc: ControlPlaneSyncAccumulators,
)

Source from the content-addressed store, hash-verified

595
596/** Syncs a single control plane: upserts its project + env, syncs all services, deletes stale workspaces. */
597async function syncControlPlane(
598 controlPlane: KonnectControlPlane,
599 syncCtx: SyncContext,
600 acc: ControlPlaneSyncAccumulators,
601): Promise<void> {
602 const { pat, organizationId, existingProjectsByKonnectId, signal, onProgress } = syncCtx;
603 acc.controlPlaneCounts.total++;
604 const region = controlPlane.region;
605
606 // Upsert project for this control plane
607 let project = existingProjectsByKonnectId.get(controlPlane.id);
608 if (project) {
609 if (
610 project.name !== controlPlane.name ||
611 project.konnectClusterType !== controlPlane.config.cluster_type ||
612 getKonnectDeploymentType(controlPlane) !== project.konnectDeploymentType ||
613 project.konnectRegion !== controlPlane.region
614 ) {
615 project = await insoservices.project.update(project, {
616 name: controlPlane.name,
617 konnectClusterType: controlPlane.config.cluster_type,
618 konnectDeploymentType: getKonnectDeploymentType(controlPlane),
619 konnectRegion: controlPlane.region,
620 });
621 acc.controlPlaneCounts.updated++;
622 }
623 } else {
624 project = await insoservices.project.create({
625 parentId: organizationId,
626 name: controlPlane.name,
627 konnectControlPlaneId: controlPlane.id,
628 konnectClusterType: controlPlane.config.cluster_type,
629 konnectDeploymentType: getKonnectDeploymentType(controlPlane),
630 konnectRegion: controlPlane.region,
631 });
632 existingProjectsByKonnectId.set(controlPlane.id, project);
633 acc.controlPlaneCounts.created++;
634 }
635
636 const globalEnvironmentId = await upsertProjectEnvVars(controlPlane, project);
637
638 onProgress?.(`Fetching services for ${controlPlane.name}...`);
639 const services = await fetchAllServices(pat, controlPlane.id, region, signal);
640
641 // Load existing Konnect workspaces for this project once, keyed by service id
642 const existingWorkspaces = (
643 await db.find<Workspace>(models.workspace.type, {
644 parentId: project._id,
645 konnectServiceId: { $ne: null },
646 })
647 ).filter(w => w.konnectServiceId != null);
648 const existingWorkspaceByServiceId = new Map(existingWorkspaces.map(w => [w.konnectServiceId!, w]));
649 const incomingServiceIds = new Set(services.map(s => s.id));
650
651 const ctx: ServiceSyncContext = { pat, controlPlane, project, region, globalEnvironmentId, signal, onProgress };
652 const CONCURRENCY = 5;
653 const bufferId = await db.bufferChanges();
654 try {

Callers 1

syncKonnectFunction · 0.85

Calls 15

getKonnectDeploymentTypeFunction · 0.90
fetchAllServicesFunction · 0.90
upsertProjectEnvVarsFunction · 0.85
zeroCountsFunction · 0.85
syncServiceWorkspaceFunction · 0.85
mergeCountsFunction · 0.85
mapMethod · 0.80
bufferChangesMethod · 0.80
flushChangesMethod · 0.80
updateMethod · 0.65
allMethod · 0.65
removeMethod · 0.65

Tested by

no test coverage detected