UNPKG

@cloud-carbon-footprint/gcp

Version:

The core logic to get cloud usage data and estimate energy and carbon emissions from Google Cloud Platform.

76 lines 3.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GCP_REPLICATION_FACTORS_FOR_SERVICES = void 0; const common_1 = require("@cloud-carbon-footprint/common"); const domain_1 = require("../domain"); const GCPRegions_1 = require("./GCPRegions"); const { REPLICATION_FACTORS } = domain_1.GCP_CLOUD_CONSTANTS; var SERVICES; (function (SERVICES) { SERVICES["CLOUD_STORAGE"] = "Cloud Storage"; SERVICES["COMPUTE_ENGINE"] = "Compute Engine"; SERVICES["CLOUD_FILESTORE"] = "Cloud Filestore"; SERVICES["CLOUD_SQL"] = "Cloud SQL"; SERVICES["CLOUD_MEMORYSTORE_FOR_REDIS"] = "Cloud Memorystore for Redis"; SERVICES["CLOUD_SPANNER"] = "Cloud Spanner"; SERVICES["KUBERNETES_ENGINE"] = "Kubernetes Engine"; SERVICES["CLOUD_COMPOSER"] = "Cloud Composer"; })(SERVICES || (SERVICES = {})); exports.GCP_REPLICATION_FACTORS_FOR_SERVICES = { [SERVICES.CLOUD_STORAGE]: (usageType) => { if (usageType.includes('Dual-region')) return REPLICATION_FACTORS.CLOUD_STORAGE_DUAL_REGION; if (usageType.includes('Multi-region')) { return REPLICATION_FACTORS.CLOUD_STORAGE_MULTI_REGION; } return REPLICATION_FACTORS.CLOUD_STORAGE_SINGLE_REGION; }, [SERVICES.COMPUTE_ENGINE]: (usageType, region) => { if (usageType.includes('Regional')) return REPLICATION_FACTORS.COMPUTE_ENGINE_REGIONAL_DISKS; if ((0, common_1.containsAny)(['Snapshot', 'Image'], usageType)) { const multiRegions = Object.values(GCPRegions_1.GCP_MULTI_REGIONS); const dualRegions = Object.values(GCPRegions_1.GCP_DUAL_REGIONS); if (multiRegions.includes(region)) return REPLICATION_FACTORS.CLOUD_STORAGE_MULTI_REGION; if (dualRegions.includes(region)) return REPLICATION_FACTORS.CLOUD_STORAGE_DUAL_REGION; return REPLICATION_FACTORS.CLOUD_STORAGE_SINGLE_REGION; } return REPLICATION_FACTORS.DEFAULT; }, [SERVICES.CLOUD_FILESTORE]: () => { return REPLICATION_FACTORS.CLOUD_FILESTORE; }, [SERVICES.CLOUD_SQL]: (usageType) => { if (usageType.includes('Regional - Standard storage') || usageType.includes('HA')) { return REPLICATION_FACTORS.CLOUD_SQL_HIGH_AVAILABILITY; } return REPLICATION_FACTORS.DEFAULT; }, [SERVICES.CLOUD_MEMORYSTORE_FOR_REDIS]: (usageType) => { if (usageType.includes('Standard')) return REPLICATION_FACTORS.CLOUD_MEMORY_STORE_REDIS; return REPLICATION_FACTORS.DEFAULT; }, [SERVICES.CLOUD_SPANNER]: (usageType) => { if (usageType.includes('Regional')) return REPLICATION_FACTORS.CLOUD_SPANNER_SINGLE_REGION; if (usageType.includes('Multi-Region')) return REPLICATION_FACTORS.CLOUD_SPANNER_MULTI_REGION; return REPLICATION_FACTORS.DEFAULT; }, [SERVICES.KUBERNETES_ENGINE]: (usageType) => { if (usageType.includes('Clusters') && (usageType.includes('Regional') || usageType.includes('Autopilot'))) return REPLICATION_FACTORS.KUBERNETES_ENGINE; return REPLICATION_FACTORS.DEFAULT; }, [SERVICES.CLOUD_COMPOSER]: (usageType) => { if (usageType.includes('Storage') || usageType.includes('storage')) return REPLICATION_FACTORS.CLOUD_STORAGE_SINGLE_REGION; return REPLICATION_FACTORS.DEFAULT; }, }; //# sourceMappingURL=ReplicationFactors.js.map