Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
7c3cfc5
constructor and some of the surrounding things
sadasant Aug 24, 2020
28b4eb6
createRoleAssignment
sadasant Aug 24, 2020
eb9cbe0
createRoleAssignment documentation
sadasant Aug 24, 2020
a5524f5
deleteRoleAssignment
sadasant Aug 24, 2020
167935d
getRoleAssignment
sadasant Aug 24, 2020
44e9eb3
listRoleAssignments
sadasant Aug 24, 2020
3790bd1
listRoleDefinitions
sadasant Aug 24, 2020
2188a87
api-extractor
sadasant Aug 24, 2020
60f4bd3
formatting
sadasant Aug 24, 2020
ac414c9
deleted the filter option on the list operations
sadasant Aug 24, 2020
9e5505a
fixing the build
sadasant Aug 24, 2020
57fd102
lint fixes
sadasant Aug 24, 2020
0ce383e
forgot to api extract the last commit
sadasant Aug 24, 2020
7f179ef
bad reference to a parameter
sadasant Aug 25, 2020
8919a93
Resolves https://github.com/Azure/azure-sdk-for-js/pull/10815#discuss…
sadasant Aug 25, 2020
ee1d71e
Addressing: https://github.com/Azure/azure-sdk-for-js/pull/10815#disc…
sadasant Aug 25, 2020
b7d3bf5
Feedback fixes
sadasant Aug 25, 2020
26e9583
role to roleScope, and RoleDefinitionPermission to KeyVaultPermission
sadasant Aug 26, 2020
a10a592
KeyVaultAccessControlClient documentation and removing lint from the …
sadasant Aug 26, 2020
09148fd
cleaned up bad reference to KeyClient
sadasant Aug 26, 2020
1b0f642
Addressing https://github.com/Azure/azure-sdk-for-js/pull/10815#discu…
sadasant Aug 27, 2020
4513d72
Merge remote-tracking branch 'Azure/master' into keyvault-admin/10799…
sadasant Aug 27, 2020
6ab4ae1
fixed bad references
sadasant Aug 27, 2020
7c845ca
Update sdk/keyvault/keyvault-admin/src/accessControlClient.ts
sadasant Sep 1, 2020
9030441
Apply suggestions from code review
sadasant Sep 2, 2020
18d7911
Fixes after updating from remote
sadasant Sep 2, 2020
74b7bfc
Addressing https://github.com/Azure/azure-sdk-for-js/pull/10815/files…
sadasant Sep 2, 2020
ca12be4
tsdoc cleanup
sadasant Sep 2, 2020
e306ff4
linting
sadasant Sep 2, 2020
d61f0b6
Merge remote-tracking branch 'Azure/master' into keyvault-admin/10799…
sadasant Sep 2, 2020
64a5d1d
fixes after updating the generated files
sadasant Sep 2, 2020
1386365
enforcing most of the properties, after discussing with .Net
sadasant Sep 2, 2020
590a835
Addressing https://github.com/Azure/azure-sdk-for-js/pull/10815#discu…
sadasant Sep 2, 2020
23431cc
no more operationOptionsToRequestOptionsBase
sadasant Sep 4, 2020
66bcdd4
Key Vault
sadasant Sep 4, 2020
8484177
Merge remote-tracking branch 'Azure/master' into keyvault-admin/10799…
sadasant Sep 4, 2020
24380a7
only 7.2-preview service version
sadasant Sep 4, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
listRoleAssignments
  • Loading branch information
sadasant committed Aug 24, 2020
commit 44e9eb3790edc1f56e198358432b8394417f8602
114 changes: 108 additions & 6 deletions sdk/keyvault/keyvault-admin/src/accessControlClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,18 @@
// Licensed under the MIT license.
/// <reference lib="esnext.asynciterable" />

import { CreateRoleAssignmentOptions, KeyVaultRoleAssignment, AccessControlClientOptions, RoleAssignmentScope, DeleteRoleAssignmentOptions } from "./accessControlModels";
import { operationOptionsToRequestOptionsBase, TokenCredential, isTokenCredential, signingPolicy, createPipelineFromOptions } from '@azure/core-http';
import { SDK_VERSION, LATEST_API_VERSION } from './constants';
import { PageSettings, PagedAsyncIterableIterator } from "@azure/core-paging";

import { challengeBasedAuthenticationPolicy } from "../../keyvault-common/src";
import { logger } from "./log";
import { RoleAssignmentsCreateResponse, RoleAssignmentsDeleteResponse, RoleAssignmentsListForScopeOptionalParams } from './generated/models';

import { CreateRoleAssignmentOptions, KeyVaultRoleAssignment, AccessControlClientOptions, RoleAssignmentScope, DeleteRoleAssignmentOptions, ListRoleAssignmentsOptions } from "./accessControlModels";
import { SDK_VERSION, LATEST_API_VERSION } from './constants';
import { KeyVaultClient } from './generated/keyVaultClient';
import { createSpan, setParentSpan } from './tracing';
import { RoleAssignmentsCreateResponse, RoleAssignmentsDeleteResponse } from './generated/models';
import { mappings } from './mappings';
import { logger } from "./log";

export class AccessControlClient {
/**
Expand Down Expand Up @@ -208,6 +211,105 @@ export class AccessControlClient {
return mappings.roleAssignment.generatedToPublic(response);
}

public async listRoleAssignments(): PagedAsyncIterableIterator<KeyVaultRoleAssignment> {}
public async listRoleDefinitions(): PagedAsyncIterableIterator<KeyVaultRoleAssignment> {}
/**
* @internal
* @ignore
* Deals with the pagination of {@link listRoleAssignments}.
* @param {string} scope The scope of the role assignments.
* @param {PageSettings} continuationState An object that indicates the position of the paginated request.
* @param {ListRoleAssignmentsOptions} [options] Common options for the iterative endpoints.
*/
private async *listRoleAssignmentsPage(
scope: RoleAssignmentScope,
continuationState: PageSettings,
options?: ListRoleAssignmentsOptions
): AsyncIterableIterator<KeyVaultRoleAssignment[]> {
if (continuationState.continuationToken == null) {
const optionsComplete: RoleAssignmentsListForScopeOptionalParams = {
// Not supported!
// maxresults: continuationState.maxPageSize,
...options
};
const currentSetResponse = await this.client.roleAssignments.listForScope(this.vaultUrl, scope, optionsComplete);
continuationState.continuationToken = currentSetResponse.nextLink;
if (currentSetResponse.value) {
yield currentSetResponse.value.map(mappings.roleAssignment.generatedToPublic, this);
}
}
while (continuationState.continuationToken) {
const currentSetResponse = await this.client.roleAssignments.listForScopeNext(
this.vaultUrl, scope,
continuationState.continuationToken,
options
);
continuationState.continuationToken = currentSetResponse.nextLink;
if (currentSetResponse.value) {
yield currentSetResponse.value.map(mappings.roleAssignment.generatedToPublic, this);
} else {
break;
}
}
}

/**
* @internal
* @ignore
* Deals with the iteration of all the available results of {@link listRoleAssignments}.
* @param {string} scope The scope of the role assignments.
* @param {ListRoleAssignmentsOptions} [options] Common options for the iterative endpoints.
*/
private async *listRoleAssignmentsAll(
scope: RoleAssignmentScope,
options?: ListRoleAssignmentsOptions
): AsyncIterableIterator<KeyVaultRoleAssignment> {
const f = {};

for await (const page of this.listRoleAssignmentsPage(scope, f, options)) {
for (const item of page) {
yield item;
}
}
}

/**
* Iterates over all of the available role assignments in an Azure Key Vault.
*
* Example usage:
* ```ts
* let client = new AccessControlClient(url, credentials);
* for await (const roleAssignment of client.listRoleAssignments("/")) {
* console.log("Role assignment: ", roleAssignment);
* }
* ```
* @summary Lists all of the role assignments in a given scope.
* @param {string} scope The scope of the role assignments.
* @param {ListPropertiesOfKeysOptions} [options] The optional parameters.
*/
public listRoleAssignments(
scope: RoleAssignmentScope,
options: ListRoleAssignmentsOptions = {}
): PagedAsyncIterableIterator<KeyVaultRoleAssignment> {
const requestOptions = operationOptionsToRequestOptionsBase(options);
const span = createSpan("listRoleAssignments", requestOptions);
const updatedOptions: ListRoleAssignmentsOptions = {
...requestOptions,
...setParentSpan(span, requestOptions)
};

const iter = this.listRoleAssignmentsAll(scope, updatedOptions);

span.end();
return {
next() {
return iter.next();
},
[Symbol.asyncIterator]() {
return this;
},
byPage: (settings: PageSettings = {}) =>
this.listRoleAssignmentsPage(scope, settings, updatedOptions)
};
}

public listRoleDefinitions(): PagedAsyncIterableIterator<KeyVaultRoleDefinition> {}
}
7 changes: 6 additions & 1 deletion sdk/keyvault/keyvault-admin/src/accessControlModels.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,9 @@ export interface CreateRoleAssignmentOptions extends coreHttp.OperationOptions {
* An interface representing the optional parameters that can be
* passed to {@link deleteRoleAssignment}
*/
export interface DeleteRoleAssignmentOptions extends coreHttp.OperationOptions {}
export interface DeleteRoleAssignmentOptions extends coreHttp.OperationOptions {}

/**
* An interface representing optional parameters passed to {@link listRoleAssignments}.
*/
export interface ListRoleAssignmentsOptions extends coreHttp.OperationOptions {}