UNPKG

container-image-scanner

Version:

🚨 EMERGENCY Bitnami Migration Scanner - Critical Timeline Aug 28/Sep 29, 2025. Enterprise scanner for 280+ Bitnami images, 118+ Helm charts with emergency migration automation to AWS alternatives.

174 lines • 5.48 kB
export interface ScanOptions { accounts?: string; regions: string; orgScan?: boolean; roleArn?: string; output?: string; criticalOnly?: boolean; verbose?: boolean; } export interface ContainerImage { account: string; accountName: string; region: string; cluster: string; namespace: string; workload: string; workloadType: 'deployment' | 'statefulset' | 'daemonset' | 'pod' | 'job' | 'cronjob'; container: string; image: string; tag: string; isLatest: boolean; riskLevel: 'EMERGENCY' | 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW'; category: string; ecrAlternative: string; replicas: number; lastScanned: string; pullPolicy?: string; resources?: { requests?: { cpu?: string; memory?: string; }; limits?: { cpu?: string; memory?: string; }; }; isLegacyMigrated?: boolean; daysUntilBreaking: number; rSig: string; emergencyMitigation?: { temporaryFix: string; legacyRepository: string; chartMigrationRequired: boolean; }; migrationPriority: 'IMMEDIATE' | 'URGENT' | 'HIGH' | 'MEDIUM' | 'LOW'; businessImpact: 'CRITICAL_SYSTEM' | 'HIGH_AVAILABILITY' | 'BUSINESS_FUNCTION' | 'DEV_TEST' | 'NON_CRITICAL'; } export interface ScanResults { metadata: { scanId: string; timestamp: string; version: string; totalAccounts: number; totalClusters: number; daysUntilDeadline: number; broadcomDeadline: string; scanDuration: number; legacyMigrationDeadline: string; catalogDeletionDeadline: string; daysUntilLegacyMigration: number; daysUntilCatalogDeletion: number; emergencyMode: boolean; }; summary: { totalImages: number; emergencyRisk: number; criticalRisk: number; highRisk: number; mediumRisk: number; lowRisk: number; categorizedImages: Record<string, number>; requiresImmediateMitigation: number; legacyMigratedImages: number; chartMigrationsRequired: number; businessCriticalAffected: number; topRiskClusters: Array<{ cluster: string; account: string; region: string; bitnamiCount: number; criticalCount: number; emergencyCount: number; daysUntilBreaking: number; }>; popularServices: { jenkins: number; tomcat: number; zookeeper: number; opensearch: number; rabbitmq: number; wordpress: number; nginx: number; redis: number; kafka: number; elasticsearch: number; metricsServer: number; mongodb: number; mysql: number; postgresql: number; }; }; images: ContainerImage[]; clusters: Array<{ account: string; region: string; name: string; status: string; version?: string; bitnamiImageCount: number; totalImageCount: number; }>; errors: Array<{ account: string; region?: string; cluster?: string; error: string; timestamp: string; errorType: 'AUTH' | 'NETWORK' | 'KUBECTL' | 'PARSING' | 'OTHER'; }>; } export declare class ContainerImageScanner { results: ScanResults; private startTime; private bitnamiImages; private readonly LEGACY_MIGRATION_DEADLINE; private readonly CATALOG_DELETION_DEADLINE; private readonly POPULAR_SERVICES; private readonly BUSINESS_CRITICAL_SERVICES; constructor(); isBitnamiImage(imageName: string): boolean; assessRiskLevel(imageName: string): 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL'; getAwsAlternative(imageName: string): string | undefined; isLegacyMigrated(imageName: string): boolean; getDaysUntilBreaking(): { legacy: number; deletion: number; emergency: boolean; }; generateRSig(image: ContainerImage): string; assessMigrationPriority(image: ContainerImage): 'IMMEDIATE' | 'URGENT' | 'HIGH' | 'MEDIUM' | 'LOW'; generateEmergencyMitigation(image: ContainerImage): { temporaryFix: string; legacyRepository: string; chartMigrationRequired: boolean; }; private extractServiceName; searchImages(searchText: string, fields?: string[]): ContainerImage[]; filterImages(filters: { field: string; operator: string; value: any; }[]): ContainerImage[]; getClusterSummary(): any[]; startInteractiveMode(): Promise<void>; displayResults(images?: ContainerImage[]): void; displayClusterSummary(): void; processScanResults(scanData: any): any; processCluster(cluster: any): any; private getRiskPriority; validateAccountId(accountId: string): boolean; validateRegion(region: string): boolean; private initializeResults; performScan(options: ScanOptions): Promise<void>; discoverOrganizationAccounts(): Promise<Array<{ id: string; name: string; }>>; private calculateSummary; private saveResults; scanAccount(accountId: string, accountName: string, regions: string[]): Promise<void>; generateRoleSetupInstructions(_options: any): Promise<void>; } //# sourceMappingURL=scanner.d.ts.map