Skip to content

Commit

Permalink
docs(samples): add quickstart code for ExportAssets (#50)
Browse files Browse the repository at this point in the history
  • Loading branch information
peter-zheng-g authored and JustinBeckwith committed Nov 20, 2018
1 parent fd2d155 commit 92f9ac1
Show file tree
Hide file tree
Showing 3 changed files with 117 additions and 13 deletions.
16 changes: 13 additions & 3 deletions asset/snippets/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,19 @@
"**/*.test.js"
]
},
"scripts": {},
"scripts": {
"test": "mocha system-test --timeout 20000"
},
"dependencies": {
"@google-cloud/asset": "^0.1.0"
"@google-cloud/asset": "^0.1.0",
"@google-cloud/storage": "^2.3.0",
"express": "^4.16.4",
"uuid": "^3.3.2",
"yargs": "^12.0.0"
},
"devDependencies": {}
"devDependencies": {
"@google-cloud/nodejs-repo-tools": "^3.0.0",
"mocha": "^5.2.0",
"sinon": "^7.0.0"
}
}
63 changes: 53 additions & 10 deletions asset/snippets/quickstart.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright 2018, Google LLC.
* Copyright 2018, 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
Expand All @@ -15,14 +15,57 @@

'use strict';

// [START asset_quickstart]
// Imports the Google Cloud client library
const asset = require('@google-cloud/asset');
async function exportAssets(dumpFilePath) {
// [START asset_quickstart_exportassets]
const asset = require('@google-cloud/asset');
const client = new asset.v1beta1.AssetServiceClient({
// optional auth parameters.
});

// eslint-disable-next-line
const client = new asset.AssetServiceClient({
projectId: 'your-project-id',
keyFilename: '/path/to/keyfile.json',
});
// Your Google Cloud Platform project ID
const projectId = process.env.GCLOUD_PROJECT;
const projectResource = client.projectPath(projectId);

// [END asset_quickstart]
// var dumpFilePath = 'Dump file path, e.g.: gs://<my_bucket>/<my_asset_file>'
const outputConfig = {
gcsDestination: {
uri: dumpFilePath,
},
};
const request = {
parent: projectResource,
outputConfig: outputConfig,
};

// Handle the operation using the promise pattern.
const [operation] = await client.exportAssets(request);
// Operation#promise starts polling for the completion of the operation.
const [result] = await operation.promise();
// Do things with with the response.
console.log(result);
// [END asset_quickstart_exportassets]
}

const cli = require('yargs')
.demand(1)
.command(
'export-assets <dumpFilePath>',
'Export asserts to specified dump file path.',
{},
opts => exportAssets(opts.dumpFilePath)
)
.example(
'node $0 export-assets gs://my-bucket/my-assets.txt',
'Export assets to gs://my-bucket/my-assets.txt.'
)
.wrap(10)
.recommendCommands()
.epilogue(
'https://cloud.google.com/resource-manager/docs/cloud-asset-inventory/overview'
)
.help()
.strict();

if (module === require.main) {
cli.parse(process.argv.slice(2));
}
51 changes: 51 additions & 0 deletions asset/snippets/system-test/quickstart.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/**
* Copyright 2018, 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';

const assert = require('assert');
const path = require('path');
const test = require('mocha');
const tools = require('@google-cloud/nodejs-repo-tools');
const util = require('util');
const uuid = require('uuid');
const cwd = path.join(__dirname, '..');
const cmd = 'node quickstart.js';

const {Storage} = require('@google-cloud/storage');

const storage = new Storage();
const bucketName = `asset-nodejs-${uuid.v4()}`;
const bucket = storage.bucket(bucketName);

test.describe('quickstart sample tests', () => {
test.before(tools.checkCredentials);
test.before(async () => {
await bucket.create();
});

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

test.it('should export assets to specified path', async () => {
const dumpFilePath = util.format('gs://%s/my-assets.txt', bucketName);
await tools.runAsyncWithIO(`${cmd} export-assets ${dumpFilePath}`, cwd);
const file = await bucket.file('my-assets.txt');
const [exists] = await file.exists();
assert.ok(exists);
await file.delete();
});
});

0 comments on commit 92f9ac1

Please sign in to comment.