firebase-tools
Version:
Command-Line Interface for Firebase
155 lines (154 loc) • 6.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ValueType = exports.Reducer = exports.MetricKind = exports.Aligner = exports.TimeSeriesView = exports.CLOUD_MONITORING_VERSION = void 0;
exports.queryTimeSeries = queryTimeSeries;
exports.listNotificationChannels = listNotificationChannels;
exports.createNotificationChannel = createNotificationChannel;
exports.getAlertPolicy = getAlertPolicy;
exports.updateAlertPolicy = updateAlertPolicy;
const api_1 = require("../api");
const apiv2_1 = require("../apiv2");
const error_1 = require("../error");
exports.CLOUD_MONITORING_VERSION = "v3";
var TimeSeriesView;
(function (TimeSeriesView) {
TimeSeriesView["FULL"] = "FULL";
TimeSeriesView["HEADERS"] = "HEADERS";
})(TimeSeriesView || (exports.TimeSeriesView = TimeSeriesView = {}));
var Aligner;
(function (Aligner) {
Aligner["ALIGN_NONE"] = "ALIGN_NONE";
Aligner["ALIGN_DELTA"] = "ALIGN_DELTA";
Aligner["ALIGN_RATE"] = "ALIGN_RATE";
Aligner["ALIGN_INTERPOLATE"] = "ALIGN_INTERPOLATE";
Aligner["ALIGN_NEXT_OLDER"] = "ALIGN_NEXT_OLDER";
Aligner["ALIGN_MIN"] = "ALIGN_MIN";
Aligner["ALIGN_MAX"] = "ALIGN_MAX";
Aligner["ALIGN_MEAN"] = "ALIGN_MEAN";
Aligner["ALIGN_COUNT"] = "ALIGN_COUNT";
Aligner["ALIGN_SUM"] = "ALIGN_SUM";
Aligner["ALIGN_STDDEV"] = "ALIGN_STDDEV";
Aligner["ALIGN_COUNT_TRUE"] = "ALIGN_COUNT_TRUE";
Aligner["ALIGN_FRACTION_TRUE"] = "ALIGN_FRACTION_TRUE";
})(Aligner || (exports.Aligner = Aligner = {}));
var MetricKind;
(function (MetricKind) {
MetricKind["METRIC_KIND_UNSPECIFIED"] = "METRIC_KIND_UNSPECIFIED";
MetricKind["GAUGE"] = "GAUGE";
MetricKind["DELTA"] = "DELTA";
MetricKind["CUMULATIVE"] = "CUMULATIVE";
})(MetricKind || (exports.MetricKind = MetricKind = {}));
var Reducer;
(function (Reducer) {
Reducer["REDUCE_NONE"] = "REDUCE_NONE";
Reducer["REDUCE_MEAN"] = "REDUCE_MEAN";
Reducer["REDUCE_MIN"] = "REDUCE_MIN";
Reducer["REDUCE_MAX"] = "REDUCE_MAX";
Reducer["REDUCE_SUM"] = "REDUCE_SUM";
Reducer["REDUCE_STDDEV"] = "REDUCE_STDDEV";
Reducer["REDUCE_COUNT"] = "REDUCE_COUNT";
Reducer["REDUCE_COUNT_TRUE"] = "REDUCE_COUNT_TRUE";
Reducer["REDUCE_FRACTION_TRUE"] = "REDUCE_FRACTION_TRUE";
Reducer["REDUCE_PERCENTILE_99"] = "REDUCE_PERCENTILE_99";
Reducer["REDUCE_PERCENTILE_95"] = "REDUCE_PERCENTILE_95";
Reducer["REDUCE_PERCENTILE_50"] = "REDUCE_PERCENTILE_50";
Reducer["REDUCE_PERCENTILE_05"] = "REDUCE_PERCENTILE_05";
})(Reducer || (exports.Reducer = Reducer = {}));
var ValueType;
(function (ValueType) {
ValueType["VALUE_TYPE_UNSPECIFIED"] = "VALUE_TYPE_UNSPECIFIED";
ValueType["BOOL"] = "BOOL";
ValueType["INT64"] = "INT64";
ValueType["DOUBLE"] = "DOUBLE";
ValueType["STRING"] = "STRING";
})(ValueType || (exports.ValueType = ValueType = {}));
async function queryTimeSeries(query, project) {
const client = new apiv2_1.Client({
urlPrefix: (0, api_1.cloudMonitoringOrigin)(),
apiVersion: exports.CLOUD_MONITORING_VERSION,
});
const queryParams = {};
for (const [key, value] of Object.entries(query)) {
if (typeof value === "string" || typeof value === "number") {
queryParams[key] = value;
}
}
try {
const res = await client.get(`/projects/${project}/timeSeries/`, {
queryParams,
});
return res.body.timeSeries;
}
catch (err) {
throw new error_1.FirebaseError(`Failed to get Cloud Monitoring metric: ${(0, error_1.getErrMsg)(err)}`, {
status: (0, error_1.getErrStatus)(err),
original: (0, error_1.getError)(err),
});
}
}
async function listNotificationChannels(project, filter) {
const client = new apiv2_1.Client({
urlPrefix: (0, api_1.cloudMonitoringOrigin)(),
apiVersion: exports.CLOUD_MONITORING_VERSION,
});
try {
const res = await client.get(`/projects/${project}/notificationChannels`, filter ? { queryParams: { filter } } : {});
return res.body?.notificationChannels ?? [];
}
catch (err) {
throw new error_1.FirebaseError(`Failed to list Cloud Monitoring notification channels: ${(0, error_1.getErrMsg)(err)}`, {
status: (0, error_1.getErrStatus)(err),
original: (0, error_1.getError)(err),
});
}
}
async function createNotificationChannel(project, channel) {
const client = new apiv2_1.Client({
urlPrefix: (0, api_1.cloudMonitoringOrigin)(),
apiVersion: exports.CLOUD_MONITORING_VERSION,
});
try {
const res = await client.post(`/projects/${project}/notificationChannels`, channel);
return res.body;
}
catch (err) {
throw new error_1.FirebaseError(`Failed to create Cloud Monitoring notification channel: ${(0, error_1.getErrMsg)(err)}`, {
status: (0, error_1.getErrStatus)(err),
original: (0, error_1.getError)(err),
});
}
}
async function getAlertPolicy(name) {
const client = new apiv2_1.Client({
urlPrefix: (0, api_1.cloudMonitoringOrigin)(),
apiVersion: exports.CLOUD_MONITORING_VERSION,
});
const path = name.startsWith("/") ? name : `/${name}`;
try {
const res = await client.get(path);
return res.body;
}
catch (err) {
throw new error_1.FirebaseError(`Failed to get Cloud Monitoring alert policy ${name}: ${(0, error_1.getErrMsg)(err)}`, {
status: (0, error_1.getErrStatus)(err),
original: (0, error_1.getError)(err),
});
}
}
async function updateAlertPolicy(policy, updateMask) {
const client = new apiv2_1.Client({
urlPrefix: (0, api_1.cloudMonitoringOrigin)(),
apiVersion: exports.CLOUD_MONITORING_VERSION,
});
const path = policy.name.startsWith("/") ? policy.name : `/${policy.name}`;
try {
const res = await client.patch(path, policy, updateMask ? { queryParams: { updateMask } } : {});
return res.body;
}
catch (err) {
throw new error_1.FirebaseError(`Failed to update Cloud Monitoring alert policy ${policy.name}: ${(0, error_1.getErrMsg)(err)}`, {
status: (0, error_1.getErrStatus)(err),
original: (0, error_1.getError)(err),
});
}
}