Skip to content

Commit 9267636

Browse files
authored
[App Config] Rename Snapshot Properties and Add Overload (Azure#27047)
1 parent 1ac75e2 commit 9267636

File tree

15 files changed

+408
-249
lines changed

15 files changed

+408
-249
lines changed

sdk/appconfiguration/app-configuration/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111

1212
### Other Changes
1313

14+
- Rename `Snapshot` -> `ConfigurationSnapshot`
15+
- Rename the properties `retentionPeriod` -> `retentionPeriodInSeconds`, `size` -> `sizeInBytes` for `ConfigurationSnapshot`
16+
- Rename the type `CompositionType` -> `SnapshotComposition`, `SnapshotStatus` -> `ConfigurationSnapshotStatus`
17+
- Update the method signature for `archiveSnapshot` and `updateSnapshot` to take in a snapshot name as a parameter
18+
1419
## 1.5.0-beta.1 (2023-07-14)
1520

1621
### Features Added

sdk/appconfiguration/app-configuration/README.md

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ async function run() {
204204
const poller = await client.beginCreateSnapshot({
205205
name:"testsnapshot",
206206
retentionPeriod: 2592000,
207-
filters: [{key, label}],
207+
filters: [{keyFilter: key, labelFilter: label}],
208208
});
209209
const snapshot = await poller.pollUntilDone();
210210
}
@@ -217,7 +217,7 @@ You can also use `beginCreateSnapshotAndWait` to have the result of the creation
217217
const snapshot = await client.beginCreateSnapshotAndWait({
218218
name:"testsnapshot",
219219
retentionPeriod: 2592000,
220-
filters: [{key, label}],
220+
filters: [{keyFilter: key, labelFilter: label}],
221221
});
222222
```
223223

@@ -249,13 +249,25 @@ for await (const snapshot of snapshots) {
249249
### Recover and archive the snapshot
250250
```javascript
251251
// Snapshot is in ready status
252-
let archivedSnapshot = await client.archiveSnapshot({name: "testsnapshot"});
252+
let archivedSnapshot = await client.archiveSnapshot("testsnapshot");
253253
console.log("Snapshot updated status is:", archivedSnapshot.status);
254254

255255
// Snapshot is in archive status
256-
let recoverSnapshot = await client.recoverSnapshot({name: "testsnapshot"});
256+
let recoverSnapshot = await client.recoverSnapshot("testsnapshot");
257257
console.log("Snapshot updated status is:", recoverSnapshot.status);
258258
```
259+
260+
You can also use an overload that takes the name of the snapshot only.
261+
```javascript
262+
// Snapshot is in ready status
263+
let archivedSnapshot = await client.archiveSnapshot("testsnapshot");
264+
console.log("Snapshot updated status is:", archivedSnapshot.status);
265+
266+
// Snapshot is in archive status
267+
let recoverSnapshot = await client.recoverSnapshot("testsnapshot");
268+
console.log("Snapshot updated status is:", recoverSnapshot.status);
269+
```
270+
259271
## Troubleshooting
260272

261273
### Logging

sdk/appconfiguration/app-configuration/assets.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"AssetsRepo": "Azure/azure-sdk-assets",
33
"AssetsRepoPrefixPath": "js",
44
"TagPrefix": "js/appconfiguration/app-configuration",
5-
"Tag": "js/appconfiguration/app-configuration_89796f3f90"
5+
"Tag": "js/appconfiguration/app-configuration_7d75890bc5"
66
}

sdk/appconfiguration/app-configuration/review/app-configuration.api.md

Lines changed: 46 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export class AppConfigurationClient {
4141
constructor(connectionString: string, options?: AppConfigurationClientOptions);
4242
constructor(endpoint: string, tokenCredential: TokenCredential, options?: AppConfigurationClientOptions);
4343
addConfigurationSetting(configurationSetting: AddConfigurationSettingParam | AddConfigurationSettingParam<FeatureFlagValue> | AddConfigurationSettingParam<SecretReferenceValue>, options?: AddConfigurationSettingOptions): Promise<AddConfigurationSettingResponse>;
44-
archiveSnapshot(snapshotId: SnapshotId, options?: UpdateSnapshotOptions): Promise<UpdateSnapshotResponse>;
44+
archiveSnapshot(name: string, options?: UpdateSnapshotOptions): Promise<UpdateSnapshotResponse>;
4545
beginCreateSnapshot(snapshot: SnapshotInfo, options?: CreateSnapshotOptions): Promise<SimplePollerLike<OperationState<CreateSnapshotResponse>, CreateSnapshotResponse>>;
4646
beginCreateSnapshotAndWait(snapshot: SnapshotInfo, options?: CreateSnapshotOptions): Promise<CreateSnapshotResponse>;
4747
deleteConfigurationSetting(id: ConfigurationSettingId, options?: DeleteConfigurationSettingOptions): Promise<DeleteConfigurationSettingResponse>;
@@ -50,8 +50,8 @@ export class AppConfigurationClient {
5050
listConfigurationSettings(options?: ListConfigurationSettingsOptions): PagedAsyncIterableIterator<ConfigurationSetting, ListConfigurationSettingPage, PageSettings>;
5151
listConfigurationSettingsForSnapshot(snapshotName: string, options?: ListConfigurationSettingsForSnapshotOptions): PagedAsyncIterableIterator<ConfigurationSetting, ListConfigurationSettingPage, PageSettings>;
5252
listRevisions(options?: ListRevisionsOptions): PagedAsyncIterableIterator<ConfigurationSetting, ListRevisionsPage, PageSettings>;
53-
listSnapshots(options?: ListSnapshotsOptions): PagedAsyncIterableIterator<Snapshot, ListSnapshotsPage, PageSettings>;
54-
recoverSnapshot(snapshotId: SnapshotId, options?: UpdateSnapshotOptions): Promise<UpdateSnapshotResponse>;
53+
listSnapshots(options?: ListSnapshotsOptions): PagedAsyncIterableIterator<ConfigurationSnapshot, ListSnapshotsPage, PageSettings>;
54+
recoverSnapshot(name: string, options?: UpdateSnapshotOptions): Promise<UpdateSnapshotResponse>;
5555
setConfigurationSetting(configurationSetting: SetConfigurationSettingParam | SetConfigurationSettingParam<FeatureFlagValue> | SetConfigurationSettingParam<SecretReferenceValue>, options?: SetConfigurationSettingOptions): Promise<SetConfigurationSettingResponse>;
5656
setReadOnly(id: ConfigurationSettingId, readOnly: boolean, options?: SetReadOnlyOptions): Promise<SetReadOnlyResponse>;
5757
updateSyncToken(syncToken: string): void;
@@ -62,18 +62,17 @@ export interface AppConfigurationClientOptions extends CommonClientOptions {
6262
apiVersion?: AppConfigurationApiVersion;
6363
}
6464

65-
// @public
66-
export type CompositionType = string;
67-
6865
// @public
6966
export type ConfigurationSetting<T extends string | FeatureFlagValue | SecretReferenceValue = string> = ConfigurationSettingParam<T> & {
7067
isReadOnly: boolean;
7168
lastModified?: Date;
7269
};
7370

7471
// @public
75-
export interface ConfigurationSettingId extends ConfigurationSettingsFilter {
72+
export interface ConfigurationSettingId {
7673
etag?: string;
74+
key: string;
75+
label?: string;
7776
}
7877

7978
// @public
@@ -93,10 +92,30 @@ export type ConfigurationSettingResponse<HeadersT> = ConfigurationSetting & Http
9392

9493
// @public
9594
export interface ConfigurationSettingsFilter {
96-
key: string;
97-
label?: string;
95+
keyFilter: string;
96+
labelFilter?: string;
97+
}
98+
99+
// @public
100+
export interface ConfigurationSnapshot {
101+
compositionType?: SnapshotComposition;
102+
readonly createdOn?: Date;
103+
readonly etag?: string;
104+
readonly expiresOn?: Date;
105+
filters: ConfigurationSettingsFilter[];
106+
readonly itemCount?: number;
107+
readonly name: string;
108+
retentionPeriodInSeconds?: number;
109+
readonly sizeInBytes?: number;
110+
readonly status?: ConfigurationSnapshotStatus;
111+
tags?: {
112+
[propertyName: string]: string;
113+
};
98114
}
99115

116+
// @public
117+
export type ConfigurationSnapshotStatus = string;
118+
100119
// @public
101120
export interface CreateSnapshotOptions extends OperationOptions {
102121
updateIntervalInMs?: number;
@@ -148,7 +167,7 @@ export interface GetConfigurationSettingResponse extends ConfigurationSetting, G
148167
}
149168

150169
// @public
151-
export interface GetSnapshotOptions extends OperationOptions, HttpOnlyIfChangedField, OptionalSnapshotFields {
170+
export interface GetSnapshotOptions extends OperationOptions, OptionalSnapshotFields {
152171
}
153172

154173
// @public
@@ -185,27 +204,26 @@ export function isFeatureFlag(setting: ConfigurationSetting): setting is Configu
185204
export function isSecretReference(setting: ConfigurationSetting): setting is ConfigurationSetting & Required<Pick<ConfigurationSetting, "value">>;
186205

187206
// @public
188-
export enum KnownCompositionType {
189-
Key = "key",
190-
KeyLabel = "key_label"
191-
}
192-
193-
// @public
194-
export enum KnownSnapshotStatus {
207+
export enum KnownConfigurationSnapshotStatus {
195208
Archived = "archived",
196209
Failed = "failed",
197210
Provisioning = "provisioning",
198211
Ready = "ready"
199212
}
200213

214+
// @public
215+
export enum KnownSnapshotComposition {
216+
Key = "key",
217+
KeyLabel = "key_label"
218+
}
219+
201220
// @public
202221
export interface ListConfigurationSettingPage extends HttpResponseField<SyncTokenHeaderField>, PageSettings {
203222
items: ConfigurationSetting[];
204223
}
205224

206225
// @public
207226
export interface ListConfigurationSettingsForSnapshotOptions extends OperationOptions, OptionalFields {
208-
acceptDateTime?: Date;
209227
}
210228

211229
// @public
@@ -231,16 +249,16 @@ export interface ListSettingsOptions extends OptionalFields {
231249
// @public
232250
export interface ListSnapshots extends OptionalSnapshotFields {
233251
nameFilter?: string;
234-
statusFilter?: SnapshotStatus[];
252+
statusFilter?: ConfigurationSnapshotStatus[];
235253
}
236254

237255
// @public
238256
export interface ListSnapshotsOptions extends OperationOptions, ListSnapshots, OptionalSnapshotFields {
239257
}
240258

241259
// @public
242-
export interface ListSnapshotsPage extends HttpResponseField<SyncTokenHeaderField>, PageSettings {
243-
items: Snapshot[];
260+
export interface ListSnapshotsPage extends SyncTokenHeaderField, PageSettings {
261+
items: ConfigurationSnapshot[];
244262
}
245263

246264
// @public
@@ -250,7 +268,7 @@ export interface OptionalFields {
250268

251269
// @public
252270
export interface OptionalSnapshotFields {
253-
fields?: (keyof Snapshot)[];
271+
fields?: (keyof ConfigurationSnapshot)[];
254272
}
255273

256274
// @public
@@ -298,56 +316,31 @@ export interface SetReadOnlyResponse extends ConfigurationSetting, SyncTokenHead
298316
}
299317

300318
// @public
301-
export interface Snapshot {
302-
compositionType?: CompositionType;
303-
readonly createdOn?: Date;
304-
readonly etag?: string;
305-
readonly expiresOn?: Date;
306-
filters: ConfigurationSettingsFilter[];
307-
readonly itemCount?: number;
308-
readonly name: string;
309-
retentionPeriod?: number;
310-
readonly size?: number;
311-
readonly status?: SnapshotStatus;
312-
tags?: {
313-
[propertyName: string]: string;
314-
};
315-
}
316-
317-
// @public
318-
export interface SnapshotId {
319-
etag?: string;
320-
name: string;
321-
}
319+
export type SnapshotComposition = string;
322320

323321
// @public
324322
export interface SnapshotInfo {
325-
compositionType?: CompositionType;
323+
compositionType?: SnapshotComposition;
326324
filters: ConfigurationSettingsFilter[];
327325
name: string;
328-
retentionPeriod?: number;
326+
retentionPeriodInSeconds?: number;
329327
tags?: {
330328
[propertyName: string]: string;
331329
};
332330
}
333331

334332
// @public
335-
export interface SnapshotResponse extends Snapshot, SyncTokenHeaderField {
333+
export interface SnapshotResponse extends ConfigurationSnapshot, SyncTokenHeaderField {
336334
}
337335

338-
// @public
339-
export type SnapshotStatus = string;
340-
341-
// @public
342-
export type State = "NotStarted" | "Running" | "Succeeded" | "Failed" | "Canceled";
343-
344336
// @public
345337
export interface SyncTokenHeaderField {
346338
syncToken?: string;
347339
}
348340

349341
// @public
350-
export interface UpdateSnapshotOptions extends HttpOnlyIfUnchangedField, OperationOptions {
342+
export interface UpdateSnapshotOptions extends OperationOptions {
343+
etag?: string;
351344
}
352345

353346
// @public

sdk/appconfiguration/app-configuration/samples-dev/snapshot.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export async function main() {
3434
name: "mySnapshot",
3535
filters: [
3636
{
37-
key: key1,
37+
keyFilter: key1,
3838
},
3939
],
4040
});
@@ -56,7 +56,7 @@ export async function main() {
5656
name: "mySnapshot2",
5757
filters: [
5858
{
59-
key: key2,
59+
keyFilter: key2,
6060
},
6161
],
6262
});
@@ -69,13 +69,9 @@ export async function main() {
6969
console.log(` Found snapshot: ${snapshot.name}`);
7070
}
7171
// archive snapshot
72-
await client.archiveSnapshot(newSnapshot);
72+
await client.archiveSnapshot(newSnapshot.name);
7373
console.log(`${newSnapshot.name} has been archived with the status ${newSnapshot.status}`);
7474

75-
// removing the setting
76-
await client.archiveSnapshot({ name: newSnapshot.name as string, etag: newSnapshot.etag });
77-
console.log(`${newSnapshot.name} has been archived`);
78-
7975
await cleanupSampleValues([key1], client);
8076
}
8177

sdk/appconfiguration/app-configuration/src/appConfigurationClient.ts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import {
3434
SetConfigurationSettingResponse,
3535
SetReadOnlyOptions,
3636
SetReadOnlyResponse,
37-
SnapshotId,
3837
SnapshotInfo,
3938
UpdateSnapshotOptions,
4039
UpdateSnapshotResponse,
@@ -46,7 +45,7 @@ import {
4645
GetKeyValuesResponse,
4746
GetRevisionsResponse,
4847
GetSnapshotsResponse,
49-
Snapshot,
48+
ConfigurationSnapshot,
5049
} from "./generated/src/models";
5150
import { InternalClientPipelineOptions } from "@azure/core-client";
5251
import { PagedAsyncIterableIterator, PagedResult, getPagedAsyncIterator } from "@azure/core-paging";
@@ -621,7 +620,7 @@ export class AppConfigurationClient {
621620
* @param options - Optional parameters for the request.
622621
*/
623622
recoverSnapshot(
624-
snapshotId: SnapshotId,
623+
name: string,
625624
options: UpdateSnapshotOptions = {}
626625
): Promise<UpdateSnapshotResponse> {
627626
return tracingClient.withSpan(
@@ -630,11 +629,14 @@ export class AppConfigurationClient {
630629
async (updatedOptions) => {
631630
logger.info("[recoverSnapshot] Recover a snapshot");
632631
const originalResponse = await this.client.updateSnapshot(
633-
snapshotId.name,
632+
name,
634633
{ status: "ready" },
635634
{
636635
...updatedOptions,
637-
...checkAndFormatIfAndIfNoneMatch({ etag: snapshotId.etag }, options),
636+
...checkAndFormatIfAndIfNoneMatch(
637+
{ etag: options.etag },
638+
{ onlyIfUnchanged: true, ...options }
639+
),
638640
}
639641
);
640642
const response = transformSnapshotResponse(originalResponse);
@@ -643,19 +645,18 @@ export class AppConfigurationClient {
643645
}
644646
);
645647
}
646-
647648
/**
648649
* Archive a ready snapshot
649650
*
650651
* Example usage:
651652
* ```ts
652-
* const result = await client.archiveSnapshot("MySnapshot");
653+
* const result = await client.archiveSnapshot({name: "MySnapshot"});
653654
* ```
654655
* @param name - The name of the snapshot.
655656
* @param options - Optional parameters for the request.
656657
*/
657658
archiveSnapshot(
658-
snapshotId: SnapshotId,
659+
name: string,
659660
options: UpdateSnapshotOptions = {}
660661
): Promise<UpdateSnapshotResponse> {
661662
return tracingClient.withSpan(
@@ -664,11 +665,14 @@ export class AppConfigurationClient {
664665
async (updatedOptions) => {
665666
logger.info("[archiveSnapshot] Archive a snapshot");
666667
const originalResponse = await this.client.updateSnapshot(
667-
snapshotId.name,
668+
name,
668669
{ status: "archived" },
669670
{
670671
...updatedOptions,
671-
...checkAndFormatIfAndIfNoneMatch({ etag: snapshotId.etag }, options),
672+
...checkAndFormatIfAndIfNoneMatch(
673+
{ etag: options.etag },
674+
{ onlyIfUnchanged: true, ...options }
675+
),
672676
}
673677
);
674678
const response = transformSnapshotResponse(originalResponse);
@@ -689,7 +693,7 @@ export class AppConfigurationClient {
689693
*/
690694
listSnapshots(
691695
options: ListSnapshotsOptions = {}
692-
): PagedAsyncIterableIterator<Snapshot, ListSnapshotsPage, PageSettings> {
696+
): PagedAsyncIterableIterator<ConfigurationSnapshot, ListSnapshotsPage, PageSettings> {
693697
const pagedResult: PagedResult<ListSnapshotsPage, PageSettings, string | undefined> = {
694698
firstPageLink: undefined,
695699
getPage: async (pageLink: string | undefined) => {

0 commit comments

Comments
 (0)