Skip to content

Commit

Permalink
docs(samples): add sample code for SearchAllResources and SearchAllIa…
Browse files Browse the repository at this point in the history
…mPolicies (#343)
  • Loading branch information
yuyifan-google committed Jun 16, 2020
1 parent af50bad commit 4437340
Show file tree
Hide file tree
Showing 4 changed files with 147 additions and 0 deletions.
1 change: 1 addition & 0 deletions packages/google-cloud-asset/samples/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
},
"dependencies": {
"@google-cloud/asset": "^3.1.0",
"@google-cloud/compute": "^2.0.0",
"@google-cloud/storage": "^5.0.0",
"uuid": "^8.0.0",
"yargs": "^15.0.0"
Expand Down
61 changes: 61 additions & 0 deletions packages/google-cloud-asset/samples/searchAllIamPolicies.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// Copyright 2020 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

// sample-metadata:
// title: Search All Iam Policies
// description: Search All Iam Policies.
// usage: node searchAllIamPolicies <SCOPE> <QUERY> <PAGE_SIZE> <PAGE_TOKEN>

async function main(scope, query, pageSize, pageToken) {
// [START asset_quickstart_search_all_iam_policies]
/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const scope = '';
// const query = '';
// const pageSize = 0;
// const pageToken = '';

const util = require('util');
const {AssetServiceClient} = require('@google-cloud/asset');

const client = new AssetServiceClient();
const projectId = await client.getProjectId();

async function searchAllIamPolicies() {
const request = {
scope: `projects/${projectId}`,
query: query,
pageSize: pageSize,
pageToken: pageToken,
};
const options = {
autoPaginate: false,
};

// Handle the operation using the promise pattern.
const result = await client.searchAllIamPolicies(request, options);
// Do things with with the response.
console.log(util.inspect(result, {depth: null}));
}
// [END asset_quickstart_search_all_iam_policies]
searchAllIamPolicies();
}

main(...process.argv.slice(2)).catch(err => {
console.error(err.message);
process.exitCode = 1;
});
65 changes: 65 additions & 0 deletions packages/google-cloud-asset/samples/searchAllResources.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
// Copyright 2020 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

// sample-metadata:
// title: Search All Resources
// description: Search All Resources.
// usage: node searchAllResources <SCOPE> <QUERY> <ASSET_TYPES> <PAGE_SIZE> <PAGE_TOKEN> <ORDER_BY>

async function main(scope, query, assetTypes, pageSize, pageToken, orderBy) {
// [START asset_quickstart_search_all_resources]
/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const scope = '';
// const query = '';
// const assetTypes = [];
// const pageSize = 0;
// const pageToken = '';
// const orderBy = '';

const util = require('util');
const {AssetServiceClient} = require('@google-cloud/asset');

const client = new AssetServiceClient();
const projectId = await client.getProjectId();

async function searchAllResources() {
const request = {
scope: `projects/${projectId}`,
query: query,
assetTypes: assetTypes,
pageSize: pageSize,
pageToken: pageToken,
orderBy: orderBy,
};
const options = {
autoPaginate: false,
};

// Handle the operation using the promise pattern.
const result = await client.searchAllResources(request, options);
// Do things with with the response.
console.log(util.inspect(result, {depth: null}));
}
// [END asset_quickstart_search_all_resources]
searchAllResources();
}

main(...process.argv.slice(2)).catch(err => {
console.error(err.message);
process.exitCode = 1;
});
20 changes: 20 additions & 0 deletions packages/google-cloud-asset/samples/test/sample.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@ const storage = new Storage();
const bucketName = `asset-nodejs-${uuid.v4()}`;
const bucket = storage.bucket(bucketName);

const Compute = require('@google-cloud/compute');
const zone = new Compute().zone('us-central1-c');
const vmName = `asset-nodejs-${uuid.v4()}`;

let vm;

// Some of these tests can take an extremely long time, and occasionally
// timeout, see:
// "Timeout of 180000ms exceeded. For async tests and hooks".
Expand All @@ -43,10 +49,12 @@ const delay = async test => {
describe('quickstart sample tests', () => {
before(async () => {
await bucket.create();
[vm] = await zone.createVM(vmName, {os: 'ubuntu'});
});

after(async () => {
await bucket.delete();
await vm.delete();
});

it('should export assets to specified path', async function () {
Expand All @@ -71,4 +79,16 @@ describe('quickstart sample tests', () => {
const stdout = execSync(`node quickstart ${assetName}`);
assert.include(stdout, assetName);
});

it('should search all resources successfully', async () => {
const query = `name:${vmName}`;
const stdout = execSync(`node searchAllResources '' ${query}`);
assert.include(stdout, vmName);
});

it('should search all iam policies successfully', async () => {
const query = 'policy:roles/owner';
const stdout = execSync(`node searchAllIamPolicies '' ${query}`);
assert.include(stdout, 'roles/owner');
});
});

0 comments on commit 4437340

Please sign in to comment.