Skip to content

Commit cd14e46

Browse files
authored
[MetricsAdvisor] change timestamps type from Date to number (Azure#12162)
* [MetricsAdvisor] change timestamps type from Date to number This addresses one of the Arch Board review feedback. I still keep the timestamps in MetricSeriesData and MetricEnrichedSeriesData as Date type because their most common usage is plotting because keeping them as Date make it easier to use year/month/date in x-axis labels. * Remove unused type * Update CHANGELOG
1 parent 48c5853 commit cd14e46

File tree

5 files changed

+160
-59
lines changed

5 files changed

+160
-59
lines changed

sdk/metricsadvisor/ai-metrics-advisor/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@
2121
- [Breaking] The `-List` suffix is removed from Array properties in `MetricSeriesData` and `MetricsEnrichedSeriesData`. Plural form is used instead.
2222
- [Breaking] `*PageResponse` types now extends from `Array<ItemType>` instead of wrapping an array of `ItemType`. Their types names are also shortened.
2323
- [Breaking] Data feed ingestion granularity now has `"PerMinute"` and `"PerSecond"` instead of `"Minutely"` and `"Secondly"`.
24+
- [Breaking] Change the type of following timestamp properties from `Date` to `number`
25+
- `AnomalyAlert.timestamp`
26+
- `DataPointAnomaly.timestamp`
27+
- `EnrichmentStatus.timestamp`
28+
- `IngestionStatus.timestamp`
29+
- `latestSuccessTimestamp` and `latestActiveTimestamp` in the return type of `getDataFeedIngestionProgress()`.
2430
- Parameters of `Date` type now also accept strings. No validation is done for the strings. The SDK calls `new Date()` to convert them to `Date`.
2531

2632
## 1.0.0-beta.1 (2020-10-07)

sdk/metricsadvisor/ai-metrics-advisor/review/ai-metrics-advisor.api.md

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export interface AnomalyAlert {
5252
createdOn?: Date;
5353
id: string;
5454
modifiedOn?: Date;
55-
timestamp?: Date;
55+
timestamp?: number;
5656
}
5757

5858
// @public
@@ -335,7 +335,7 @@ export interface DataPointAnomaly {
335335
seriesKey: DimensionKey;
336336
severity: AnomalySeverity;
337337
status?: AnomalyStatus;
338-
timestamp: Date;
338+
timestamp: number;
339339
}
340340

341341
// @public
@@ -407,7 +407,7 @@ export type EmailNotificationHookPatch = {
407407
export interface EnrichmentStatus {
408408
readonly message?: string;
409409
readonly status?: string;
410-
readonly timestamp?: Date;
410+
readonly timestamp?: number;
411411
}
412412

413413
// @public
@@ -416,14 +416,6 @@ export type FeedbackQueryTimeMode = "MetricTimestamp" | "FeedbackCreatedTime";
416416
// @public
417417
export type FeedbackType = "Anomaly" | "ChangePoint" | "Period" | "Comment";
418418

419-
// @public
420-
export type GeneratedClientGetIngestionProgressResponse = DataFeedIngestionProgress & {
421-
_response: coreHttp.HttpResponse & {
422-
bodyAsText: string;
423-
parsedBody: DataFeedIngestionProgress;
424-
};
425-
};
426-
427419
// @public
428420
export type GetAnomalyAlertConfigurationResponse = AnomalyAlertConfiguration & {
429421
_response: coreHttp.HttpResponse & {
@@ -473,6 +465,17 @@ export type GetIncidentRootCauseResponse = {
473465
};
474466
};
475467

468+
// @public
469+
export type GetIngestionProgressResponse = {
470+
readonly latestSuccessTimestamp?: number;
471+
readonly latestActiveTimestamp?: number;
472+
} & {
473+
_response: coreHttp.HttpResponse & {
474+
bodyAsText: string;
475+
parsedBody: any;
476+
};
477+
};
478+
476479
// @public
477480
export type GetMetricEnrichedSeriesDataOptions = {} & OperationOptions;
478481

@@ -571,7 +574,7 @@ export interface InfluxDBParameter {
571574
export interface IngestionStatus {
572575
readonly message?: string;
573576
readonly status?: IngestionStatusType;
574-
readonly timestamp?: Date;
577+
readonly timestamp?: number;
575578
}
576579

577580
// @public
@@ -810,7 +813,7 @@ export class MetricsAdvisorAdministrationClient {
810813
readonly endpointUrl: string;
811814
getAnomalyAlertConfiguration(id: string, options?: OperationOptions): Promise<GetAnomalyAlertConfigurationResponse>;
812815
getDataFeed(id: string, options?: OperationOptions): Promise<GetDataFeedResponse>;
813-
getDataFeedIngestionProgress(dataFeedId: string, options?: {}): Promise<GeneratedClientGetIngestionProgressResponse>;
816+
getDataFeedIngestionProgress(dataFeedId: string, options?: {}): Promise<GetIngestionProgressResponse>;
814817
getHook(id: string, options?: OperationOptions): Promise<GetHookResponse>;
815818
getMetricAnomalyDetectionConfiguration(id: string, options?: OperationOptions): Promise<GetAnomalyDetectionConfigurationResponse>;
816819
listAnomalyAlertConfigurations(detectionConfigId: string, options?: OperationOptions): PagedAsyncIterableIterator<AnomalyAlertConfiguration, AlertConfigurationsPageResponse, undefined>;

sdk/metricsadvisor/ai-metrics-advisor/src/metricsAdvisorAdministrationClient.ts

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,10 @@ import {
4242
AlertConfigurationsPageResponse,
4343
DetectionConfigurationsPageResponse,
4444
HooksPageResponse,
45-
DataFeedStatus
45+
DataFeedStatus,
46+
GetIngestionProgressResponse
4647
} from "./models";
47-
import {
48-
DataSourceType,
49-
GeneratedClientGetIngestionProgressResponse,
50-
NeedRollupEnum
51-
} from "./generated/models";
48+
import { DataSourceType, NeedRollupEnum } from "./generated/models";
5249
import {
5350
fromServiceAnomalyDetectionConfiguration,
5451
fromServiceDataFeedDetailUnion,
@@ -1295,15 +1292,20 @@ export class MetricsAdvisorAdministrationClient {
12951292
public async getDataFeedIngestionProgress(
12961293
dataFeedId: string,
12971294
options = {}
1298-
): Promise<GeneratedClientGetIngestionProgressResponse> {
1295+
): Promise<GetIngestionProgressResponse> {
12991296
const { span, updatedOptions: finalOptions } = createSpan(
13001297
"MetricsAdvisorAdministrationClient-getDataFeedIngestionProgress",
13011298
options
13021299
);
13031300

13041301
try {
13051302
const requestOptions = operationOptionsToRequestOptionsBase(finalOptions);
1306-
return await this.client.getIngestionProgress(dataFeedId, requestOptions);
1303+
const response = await this.client.getIngestionProgress(dataFeedId, requestOptions);
1304+
return {
1305+
latestActiveTimestamp: response.latestActiveTimestamp?.getTime(),
1306+
latestSuccessTimestamp: response.latestSuccessTimestamp?.getTime(),
1307+
_response: response._response
1308+
};
13071309
} catch (e) {
13081310
span.setStatus({
13091311
code: CanonicalCode.UNKNOWN,
@@ -1338,10 +1340,20 @@ export class MetricsAdvisorAdministrationClient {
13381340
top: options?.maxPageSize
13391341
}
13401342
);
1341-
const resultArray = Object.defineProperty(segmentResponse.value || [], "continuationToken", {
1342-
enumerable: true,
1343-
value: segmentResponse.nextLink
1344-
});
1343+
const resultArray = Object.defineProperty(
1344+
segmentResponse.value?.map((s) => {
1345+
return {
1346+
timestamp: s.timestamp?.getTime(),
1347+
status: s.status,
1348+
message: s.message
1349+
};
1350+
}) || [],
1351+
"continuationToken",
1352+
{
1353+
enumerable: true,
1354+
value: segmentResponse.nextLink
1355+
}
1356+
);
13451357
yield Object.defineProperty(resultArray, "_response", {
13461358
enumerable: false,
13471359
value: segmentResponse._response
@@ -1362,10 +1374,20 @@ export class MetricsAdvisorAdministrationClient {
13621374
options
13631375
);
13641376

1365-
const resultArray = Object.defineProperty(segmentResponse.value || [], "continuationToken", {
1366-
enumerable: true,
1367-
value: segmentResponse.nextLink
1368-
});
1377+
const resultArray = Object.defineProperty(
1378+
segmentResponse.value?.map((s) => {
1379+
return {
1380+
timestamp: s.timestamp?.getTime(),
1381+
status: s.status,
1382+
message: s.message
1383+
};
1384+
}) || [],
1385+
"continuationToken",
1386+
{
1387+
enumerable: true,
1388+
value: segmentResponse.nextLink
1389+
}
1390+
);
13691391
yield Object.defineProperty(resultArray, "_response", {
13701392
enumerable: false,
13711393
value: segmentResponse._response

sdk/metricsadvisor/ai-metrics-advisor/src/metricsAdvisorClient.ts

Lines changed: 36 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,12 @@ import {
3232
MetricEnrichmentStatusPageResponse,
3333
MetricSeriesDefinition,
3434
DimensionKey,
35+
EnrichmentStatus,
3536
GetMetricSeriesDataResponse,
3637
MetricFeedbackPageResponse,
3738
AlertQueryTimeMode
3839
} from "./models";
39-
import {
40-
SeverityFilterCondition,
41-
EnrichmentStatus,
42-
FeedbackType,
43-
FeedbackQueryTimeMode
44-
} from "./generated/models";
40+
import { SeverityFilterCondition, FeedbackType, FeedbackQueryTimeMode } from "./generated/models";
4541
import { toServiceMetricFeedbackUnion, fromServiceMetricFeedbackUnion } from "./transforms";
4642
import { createClientPipeline } from "./createClientPipeline";
4743

@@ -259,7 +255,7 @@ export class MetricsAdvisorClient {
259255
alertConfigId: alertConfigId,
260256
createdOn: a.createdTime,
261257
modifiedOn: a.modifiedTime,
262-
timestamp: a.timestamp
258+
timestamp: a.timestamp?.getTime()
263259
};
264260
});
265261
const resultArray = Object.defineProperty(alerts || [], "continuationToken", {
@@ -287,7 +283,7 @@ export class MetricsAdvisorClient {
287283
alertConfigId: alertConfigId,
288284
createdOn: a.createdTime,
289285
modifiedOn: a.modifiedTime,
290-
timestamp: a.timestamp
286+
timestamp: a.timestamp?.getTime()
291287
};
292288
});
293289
const resultArray = Object.defineProperty(alerts || [], "continuationToken", {
@@ -454,13 +450,12 @@ export class MetricsAdvisorClient {
454450
return {
455451
detectionConfigurationId: a.anomalyDetectionConfigurationId!,
456452
metricId: a.metricId,
457-
timestampe: a.timestamp,
458453
createdOn: a.createdTime,
459454
modifiedOn: a.modifiedTime,
460455
seriesKey: a.dimension,
461456
severity: a.property.anomalySeverity,
462457
status: a.property.anomalyStatus,
463-
timestamp: a.timestamp
458+
timestamp: a.timestamp.getTime()
464459
};
465460
});
466461
const resultArray = Object.defineProperty(anomalies || [], "continuationToken", {
@@ -490,13 +485,12 @@ export class MetricsAdvisorClient {
490485
return {
491486
detectionConfigurationId: a.anomalyDetectionConfigurationId!,
492487
metricId: a.metricId,
493-
timestampe: a.timestamp,
494488
createdOn: a.createdTime,
495489
modifiedOn: a.modifiedTime,
496490
seriesKey: a.dimension,
497491
severity: a.property.anomalySeverity,
498492
status: a.property.anomalyStatus,
499-
timestamp: a.timestamp
493+
timestamp: a.timestamp.getTime()
500494
};
501495
});
502496
const resultArray = Object.defineProperty(anomalies || [], "continuationToken", {
@@ -931,7 +925,7 @@ export class MetricsAdvisorClient {
931925
return {
932926
detectionConfigurationId: detectionConfigId,
933927
metricId: a.metricId,
934-
timestamp: a.timestamp,
928+
timestamp: a.timestamp.getTime(),
935929
createdOn: a.createdTime,
936930
modifiedOn: a.modifiedTime,
937931
seriesKey: a.dimension,
@@ -963,7 +957,7 @@ export class MetricsAdvisorClient {
963957
return {
964958
detectionConfigurationId: detectionConfigId,
965959
metricId: a.metricId,
966-
timestamp: a.timestamp,
960+
timestamp: a.timestamp.getTime(),
967961
createdOn: a.createdTime,
968962
modifiedOn: a.modifiedTime,
969963
seriesKey: a.dimension,
@@ -2180,10 +2174,20 @@ export class MetricsAdvisorClient {
21802174
...options,
21812175
top: maxPageSize
21822176
});
2183-
const resultArray = Object.defineProperty(segmentResponse.value || [], "continuationToken", {
2184-
enumerable: true,
2185-
value: segmentResponse.nextLink
2186-
});
2177+
const resultArray = Object.defineProperty(
2178+
segmentResponse.value?.map((s) => {
2179+
return {
2180+
timestamp: s.timestamp?.getTime(),
2181+
status: s.status,
2182+
message: s.message
2183+
};
2184+
}) || [],
2185+
"continuationToken",
2186+
{
2187+
enumerable: true,
2188+
value: segmentResponse.nextLink
2189+
}
2190+
);
21872191
yield Object.defineProperty(resultArray, "_response", {
21882192
enumerable: false,
21892193
value: segmentResponse._response
@@ -2199,10 +2203,20 @@ export class MetricsAdvisorClient {
21992203
optionsBody,
22002204
options
22012205
);
2202-
const resultArray = Object.defineProperty(segmentResponse.value || [], "continuationToken", {
2203-
enumerable: true,
2204-
value: segmentResponse.nextLink
2205-
});
2206+
const resultArray = Object.defineProperty(
2207+
segmentResponse.value?.map((s) => {
2208+
return {
2209+
timestamp: s.timestamp?.getTime(),
2210+
status: s.status,
2211+
message: s.message
2212+
};
2213+
}) || [],
2214+
"continuationToken",
2215+
{
2216+
enumerable: true,
2217+
value: segmentResponse.nextLink
2218+
}
2219+
);
22062220
yield Object.defineProperty(resultArray, "_response", {
22072221
enumerable: false,
22082222
value: segmentResponse._response

0 commit comments

Comments
 (0)