Skip to content

Commit b56d19e

Browse files
[Metrics Advisor] Create functions modified to return id with response instead of complete objects (Azure#13254)
* add createDataFeedResponse type and create function update * update create datafeed function and tests * update api review file * update samples for create datafeed * update samples for create datafeed * samples fix * modified createDetectionConfig function * modified createAlertConfig function * modified createAlertConfig function * modified createHook function * modified api review file * modifies createFeedback function * modifies createFeedback function * modifies api review file * update samples
1 parent 11783a3 commit b56d19e

File tree

13 files changed

+284
-72
lines changed

13 files changed

+284
-72
lines changed

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

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,10 @@ async function createDataFeed(adminClient, sqlServerConnectionString, sqlServerQ
232232
accessMode: "Private",
233233
adminEmails: ["[email protected]"]
234234
};
235-
const result = await adminClient.createDataFeed(dataFeed);
236-
235+
const created = await adminClient.createDataFeed(dataFeed);
236+
/* To get the full datafeed object, you can call the get method and pass the id of the created datafeed
237+
*/
238+
const result = await adminClient.getDataFeed(created.id);
237239
return result;
238240
}
239241
```
@@ -317,7 +319,12 @@ async function configureAnomalyDetectionConfiguration(adminClient, metricId) {
317319
},
318320
description: "Detection configuration description"
319321
};
320-
return await adminClient.createDetectionConfig(anomalyConfig);
322+
const created = await adminClient.createDetectionConfig(anomalyConfig);
323+
324+
/* To get the full detection config object, you can call the get method and pass the id of the created detection config
325+
*/
326+
const result = await adminClient.getDetectionConfig(created.id);
327+
return result;
321328
}
322329
```
323330

@@ -358,7 +365,11 @@ async function createWebhookHook(adminClient) {
358365
}
359366
};
360367

361-
return await adminClient.createHook(hook);
368+
const created = await adminClient.createHook(hook);
369+
/* To get the full hook object, you can call the get method and pass the id of the created hook
370+
*/
371+
const result = await adminClient.getHook(created.id);
372+
return result;
362373
}
363374
```
364375

@@ -410,7 +421,11 @@ async function configureAlertConfiguration(adminClient, detectionConfigId, hookI
410421
hookIds,
411422
description: "Alerting config description"
412423
};
413-
return await adminClient.createAlertConfig(anomalyAlertConfig);
424+
const created = await adminClient.createAlertConfig(anomalyAlertConfig);
425+
/* To get the full alert config object, you can call the get method and pass the id of the created alert config
426+
*/
427+
const result = await adminClient.getAlertConfig(created.id);
428+
return result;
414429
}
415430
```
416431

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

Lines changed: 65 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,69 @@ export type ChangeThresholdConditionUnion = {
191191
suppressCondition: SuppressCondition;
192192
};
193193

194+
// @public
195+
export type CreateAnomalyAlertConfigurationResponse = CreatedAnomalyAlertConfiguration & {
196+
_response: coreHttp.HttpResponse & {
197+
parsedHeaders: any;
198+
};
199+
};
200+
201+
// @public
202+
export type CreateAnomalyDetectionConfigurationResponse = CreatedAnomalyDetectionConfiguration & {
203+
_response: coreHttp.HttpResponse & {
204+
parsedHeaders: any;
205+
};
206+
};
207+
208+
// @public
209+
export interface CreatedAnomalyAlertConfiguration {
210+
id: string;
211+
}
212+
213+
// @public
214+
export type CreatedAnomalyDetectionConfiguration = {
215+
id: string;
216+
};
217+
194218
// @public
195219
export type CreateDataFeedOptions = DataFeedOptions & OperationOptions;
196220

221+
// @public
222+
export type CreateDataFeedResponse = CreatedDataFeed & {
223+
_response: coreHttp.HttpResponse & {
224+
parsedHeaders: any;
225+
};
226+
};
227+
228+
// @public
229+
export type CreatedDataFeed = {
230+
id: string;
231+
};
232+
233+
// @public
234+
export type CreatedNotificationHook = {
235+
id: string;
236+
};
237+
238+
// @public
239+
export type CreateFeedbackResponse = CreateMetricFeedback & {
240+
_response: coreHttp.HttpResponse & {
241+
parsedHeaders: any;
242+
};
243+
};
244+
245+
// @public
246+
export type CreateHookResponse = CreatedNotificationHook & {
247+
_response: coreHttp.HttpResponse & {
248+
parsedHeaders: any;
249+
};
250+
};
251+
252+
// @public
253+
export type CreateMetricFeedback = {
254+
id: string;
255+
};
256+
197257
// @public
198258
export type DataFeed = {
199259
id: string;
@@ -923,10 +983,10 @@ export type MetricPeriodFeedback = {
923983
// @public
924984
export class MetricsAdvisorAdministrationClient {
925985
constructor(endpointUrl: string, credential: TokenCredential | MetricsAdvisorKeyCredential, options?: MetricsAdvisorAdministrationClientOptions);
926-
createAlertConfig(config: Omit<AnomalyAlertConfiguration, "id">, options?: OperationOptions): Promise<GetAnomalyAlertConfigurationResponse>;
927-
createDataFeed(feed: DataFeedDescriptor, operationOptions?: OperationOptions): Promise<GetDataFeedResponse>;
928-
createDetectionConfig(config: Omit<AnomalyDetectionConfiguration, "id">, options?: OperationOptions): Promise<GetAnomalyDetectionConfigurationResponse>;
929-
createHook(hookInfo: EmailNotificationHook | WebNotificationHook, options?: OperationOptions): Promise<GetHookResponse>;
986+
createAlertConfig(config: Omit<AnomalyAlertConfiguration, "id">, options?: OperationOptions): Promise<CreateAnomalyAlertConfigurationResponse>;
987+
createDataFeed(feed: DataFeedDescriptor, operationOptions?: OperationOptions): Promise<CreateDataFeedResponse>;
988+
createDetectionConfig(config: Omit<AnomalyDetectionConfiguration, "id">, options?: OperationOptions): Promise<CreateAnomalyDetectionConfigurationResponse>;
989+
createHook(hookInfo: EmailNotificationHook | WebNotificationHook, options?: OperationOptions): Promise<CreateHookResponse>;
930990
deleteAlertConfig(id: string, options?: OperationOptions): Promise<RestResponse>;
931991
deleteDataFeed(id: string, options?: OperationOptions): Promise<RestResponse>;
932992
deleteDetectionConfig(id: string, options?: OperationOptions): Promise<RestResponse>;
@@ -956,7 +1016,7 @@ export interface MetricsAdvisorAdministrationClientOptions extends PipelineOptio
9561016
// @public
9571017
export class MetricsAdvisorClient {
9581018
constructor(endpointUrl: string, credential: TokenCredential | MetricsAdvisorKeyCredential, options?: MetricsAdvisorClientOptions);
959-
createFeedback(feedback: MetricFeedbackUnion, options?: OperationOptions): Promise<GetFeedbackResponse>;
1019+
createFeedback(feedback: MetricFeedbackUnion, options?: OperationOptions): Promise<CreateFeedbackResponse>;
9601020
readonly endpointUrl: string;
9611021
getFeedback(id: string, options?: OperationOptions): Promise<GetFeedbackResponse>;
9621022
getIncidentRootCauses(detectionConfigId: string, incidentId: string, options?: OperationOptions): Promise<GetIncidentRootCauseResponse>;

sdk/metricsadvisor/ai-metrics-advisor/samples/javascript/metricFeedback.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ async function providePeriodFeedback(client, metricId) {
5050
periodValue: 4,
5151
dimensionKey: { city: "Manila", category: "Handmade" }
5252
};
53-
return await client.createFeedback(periodFeedback);
53+
const created = await client.createFeedback(periodFeedback);
54+
return await client.getFeedback(created.id);
5455
}
5556

5657
async function provideChangePointFeedback(client, metricId) {
@@ -62,7 +63,8 @@ async function provideChangePointFeedback(client, metricId) {
6263
value: "ChangePoint",
6364
dimensionKey: { city: "Manila", category: "Handmade" }
6465
};
65-
return await client.createFeedback(changePointFeedback);
66+
const created = await client.createFeedback(changePointFeedback);
67+
return await client.getFeedback(created.id);
6668
}
6769

6870
async function provideCommentFeedback(client, metricId) {
@@ -73,7 +75,8 @@ async function provideCommentFeedback(client, metricId) {
7375
dimensionKey: { city: "Manila", category: "Handmade" },
7476
comment: "This is a comment"
7577
};
76-
return await client.createFeedback(commendFeedback);
78+
const created = await client.createFeedback(commendFeedback);
79+
return await client.getFeedback(created.id);
7780
}
7881

7982
async function getFeedback(client, feedbackId) {

sdk/metricsadvisor/ai-metrics-advisor/samples/javascript/quickstart.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ async function main() {
3131
const created = await createDataFeed(adminClient, sqlServerConnectionString, sqlServerQuery);
3232
console.log(`Data feed created: ${created.id}`);
3333
console.log(" metrics: ");
34-
console.log(created.schema.metrics);
34+
const datafeed = await adminClient.getDataFeed(created.id);
35+
console.log(datafeed.schema.metrics);
3536

3637
console.log("Waiting for a minute before checking ingestion status...");
3738
await delay(60 * 1000);
@@ -44,7 +45,7 @@ async function main() {
4445
new Date(Date.UTC(2020, 8, 12))
4546
);
4647

47-
const metricId = created.schema.metrics[0].id;
48+
const metricId = datafeed.schema.metrics[0].id;
4849
const detectionConfig = await configureAnomalyDetectionConfiguration(adminClient, metricId);
4950
console.log(`Detection configuration created: ${detectionConfig.id}`);
5051

sdk/metricsadvisor/ai-metrics-advisor/samples/typescript/src/dataFeed.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ dotenv.config();
1010
import {
1111
MetricsAdvisorKeyCredential,
1212
MetricsAdvisorAdministrationClient,
13-
GetDataFeedResponse,
13+
CreateDataFeedResponse,
1414
DataFeedPatch,
1515
DataFeedDescriptor
1616
} from "@azure/ai-metrics-advisor";
@@ -70,7 +70,7 @@ async function listDataFeeds(client: MetricsAdvisorAdministrationClient) {
7070

7171
async function createDataFeed(
7272
client: MetricsAdvisorAdministrationClient
73-
): Promise<GetDataFeedResponse> {
73+
): Promise<CreateDataFeedResponse> {
7474
console.log("Creating Datafeed...");
7575
const feed: DataFeedDescriptor = {
7676
name: "test-datafeed-" + new Date().getTime().toString(),
@@ -127,8 +127,7 @@ async function createDataFeed(
127127
accessMode: "Private"
128128
};
129129
const result = await client.createDataFeed(feed);
130-
131-
console.dir(result);
130+
console.log(result.id);
132131
return result;
133132
}
134133

sdk/metricsadvisor/ai-metrics-advisor/samples/typescript/src/metricFeedback.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,9 @@ async function providePeriodFeedback(client: MetricsAdvisorClient, metricId: str
5858
periodValue: 4,
5959
dimensionKey: { city: "Manila", category: "Handmade" }
6060
};
61-
return await client.createFeedback(periodFeedback);
61+
62+
const created = await client.createFeedback(periodFeedback);
63+
return await client.getFeedback(created.id);
6264
}
6365

6466
async function provideChangePointFeedback(client: MetricsAdvisorClient, metricId: string) {
@@ -70,7 +72,8 @@ async function provideChangePointFeedback(client: MetricsAdvisorClient, metricId
7072
value: "ChangePoint",
7173
dimensionKey: { city: "Manila", category: "Handmade" }
7274
};
73-
return await client.createFeedback(changePointFeedback);
75+
const created = await client.createFeedback(changePointFeedback);
76+
return await client.getFeedback(created.id);
7477
}
7578

7679
async function provideCommentFeedback(client: MetricsAdvisorClient, metricId: string) {
@@ -81,7 +84,8 @@ async function provideCommentFeedback(client: MetricsAdvisorClient, metricId: st
8184
dimensionKey: { city: "Manila", category: "Handmade" },
8285
comment: "This is a comment"
8386
};
84-
return await client.createFeedback(commendFeedback);
87+
const created = await client.createFeedback(commendFeedback);
88+
return await client.getFeedback(created.id);
8589
}
8690

8791
async function getFeedback(client: MetricsAdvisorClient, feedbackId: string) {

sdk/metricsadvisor/ai-metrics-advisor/samples/typescript/src/quickstart.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
MetricsAdvisorKeyCredential,
1313
MetricsAdvisorAdministrationClient,
1414
AnomalyAlert,
15-
GetDataFeedResponse,
15+
CreateDataFeedResponse,
1616
MetricsAdvisorClient,
1717
WebNotificationHook,
1818
DataFeedDescriptor,
@@ -38,8 +38,9 @@ export async function main() {
3838

3939
const created = await createDataFeed(adminClient, sqlServerConnectionString, sqlServerQuery);
4040
console.log(`Data feed created: ${created.id}`);
41+
const datafeed = await adminClient.getDataFeed(created.id);
4142
console.log(" metrics: ");
42-
console.log(created.schema.metrics);
43+
console.log(datafeed.schema.metrics);
4344

4445
console.log("Waiting for a minute before checking ingestion status...");
4546
await delay(60 * 1000);
@@ -52,7 +53,7 @@ export async function main() {
5253
new Date(Date.UTC(2020, 8, 12))
5354
);
5455

55-
const metricId = created.schema.metrics[0].id!;
56+
const metricId = datafeed.schema.metrics[0].id!;
5657
const detectionConfig = await configureAnomalyDetectionConfiguration(adminClient, metricId);
5758
console.log(`Detection configuration created: ${detectionConfig.id!}`);
5859

@@ -88,7 +89,7 @@ async function createDataFeed(
8889
adminClient: MetricsAdvisorAdministrationClient,
8990
sqlServerConnectionString: string,
9091
sqlServerQuery: string
91-
): Promise<GetDataFeedResponse> {
92+
): Promise<CreateDataFeedResponse> {
9293
console.log("Creating Datafeed...");
9394
const dataFeed: DataFeedDescriptor = {
9495
name: "test_datafeed_" + new Date().getTime().toString(),

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

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import {
3131
WebNotificationHookPatch,
3232
EmailNotificationHookPatch,
3333
AnomalyDetectionConfiguration,
34+
CreateDataFeedResponse,
3435
GetDataFeedResponse,
3536
GetAnomalyDetectionConfigurationResponse,
3637
GetAnomalyAlertConfigurationResponse,
@@ -44,7 +45,10 @@ import {
4445
HooksPageResponse,
4546
DataFeedStatus,
4647
GetIngestionProgressResponse,
47-
AnomalyAlertConfiguration
48+
AnomalyAlertConfiguration,
49+
CreateAnomalyDetectionConfigurationResponse,
50+
CreateAnomalyAlertConfigurationResponse,
51+
CreateHookResponse
4852
} from "./models";
4953
import { DataSourceType, HookInfoUnion, NeedRollupEnum } from "./generated/models";
5054
import {
@@ -183,7 +187,7 @@ export class MetricsAdvisorAdministrationClient {
183187
public async createDataFeed(
184188
feed: DataFeedDescriptor,
185189
operationOptions: OperationOptions = {}
186-
): Promise<GetDataFeedResponse> {
190+
): Promise<CreateDataFeedResponse> {
187191
const { span, updatedOptions: finalOptions } = createSpan(
188192
"MetricsAdvisorAdministrationClient-createDataFeed",
189193
operationOptions
@@ -260,8 +264,8 @@ export class MetricsAdvisorAdministrationClient {
260264
throw new Error("Expected a valid location to retrieve the created configuration");
261265
}
262266
const lastSlashIndex = result.location.lastIndexOf("/");
263-
const feedId = result.location.substring(lastSlashIndex + 1);
264-
return this.getDataFeed(feedId);
267+
const id = result.location.substring(lastSlashIndex + 1);
268+
return { id, _response: result._response };
265269
} catch (e) {
266270
span.setStatus({
267271
code: CanonicalCode.UNKNOWN,
@@ -552,7 +556,7 @@ export class MetricsAdvisorAdministrationClient {
552556
public async createDetectionConfig(
553557
config: Omit<AnomalyDetectionConfiguration, "id">,
554558
options: OperationOptions = {}
555-
): Promise<GetAnomalyDetectionConfigurationResponse> {
559+
): Promise<CreateAnomalyDetectionConfigurationResponse> {
556560
const { span, updatedOptions: finalOptions } = createSpan(
557561
"MetricsAdvisorAdministrationClient-createDetectionConfig",
558562
options
@@ -569,7 +573,7 @@ export class MetricsAdvisorAdministrationClient {
569573
}
570574
const lastSlashIndex = result.location.lastIndexOf("/");
571575
const configId = result.location.substring(lastSlashIndex + 1);
572-
return this.getDetectionConfig(configId);
576+
return { id: configId, _response: result._response };
573577
} catch (e) {
574578
span.setStatus({
575579
code: CanonicalCode.UNKNOWN,
@@ -683,7 +687,7 @@ export class MetricsAdvisorAdministrationClient {
683687
public async createAlertConfig(
684688
config: Omit<AnomalyAlertConfiguration, "id">,
685689
options: OperationOptions = {}
686-
): Promise<GetAnomalyAlertConfigurationResponse> {
690+
): Promise<CreateAnomalyAlertConfigurationResponse> {
687691
const { span, updatedOptions: finalOptions } = createSpan(
688692
"MetricsAdvisorAdministrationClient-createAlertConfig",
689693
options
@@ -700,7 +704,7 @@ export class MetricsAdvisorAdministrationClient {
700704
}
701705
const lastSlashIndex = result.location.lastIndexOf("/");
702706
const configId = result.location.substring(lastSlashIndex + 1);
703-
return this.getAlertConfig(configId);
707+
return { id: configId, _response: result._response };
704708
} catch (e) {
705709
span.setStatus({
706710
code: CanonicalCode.UNKNOWN,
@@ -937,7 +941,7 @@ export class MetricsAdvisorAdministrationClient {
937941
public async createHook(
938942
hookInfo: EmailNotificationHook | WebNotificationHook,
939943
options: OperationOptions = {}
940-
): Promise<GetHookResponse> {
944+
): Promise<CreateHookResponse> {
941945
const { span, updatedOptions: finalOptions } = createSpan(
942946
"MetricsAdvisorAdministrationClient-createHook",
943947
options
@@ -961,7 +965,7 @@ export class MetricsAdvisorAdministrationClient {
961965
}
962966
const lastSlashIndex = result.location.lastIndexOf("/");
963967
const hookId = result.location.substring(lastSlashIndex + 1);
964-
return this.getHook(hookId);
968+
return { id: hookId, _response: result._response };
965969
} catch (e) {
966970
span.setStatus({
967971
code: CanonicalCode.UNKNOWN,

0 commit comments

Comments
 (0)