@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
JavaScript
;
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