diff --git a/packages/google-devtools-containeranalysis/src/v1/container_analysis_client.ts b/packages/google-devtools-containeranalysis/src/v1/container_analysis_client.ts
index cff1628a115..5322aa4c583 100644
--- a/packages/google-devtools-containeranalysis/src/v1/container_analysis_client.ts
+++ b/packages/google-devtools-containeranalysis/src/v1/container_analysis_client.ts
@@ -54,9 +54,13 @@ export class ContainerAnalysisClient {
private _innerApiCalls: {[name: string]: Function};
private _pathTemplates: {[name: string]: gax.PathTemplate};
private _terminated = false;
+ private _opts: ClientOptions;
+ private _gaxModule: typeof gax | typeof gax.fallback;
+ private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient;
+ private _protos: {};
+ private _defaults: {[method: string]: gax.CallSettings};
auth: gax.GoogleAuth;
- opts: ClientOptions;
- containerAnalysisStub: Promise<{[name: string]: Function}>;
+ containerAnalysisStub?: Promise<{[name: string]: Function}>;
/**
* Construct an instance of ContainerAnalysisClient.
@@ -80,8 +84,6 @@ export class ContainerAnalysisClient {
* app is running in an environment which supports
* {@link https://developers.google.com/identity/protocols/application-default-credentials Application Default Credentials},
* your project ID will be detected automatically.
- * @param {function} [options.promise] - Custom promise module to use instead
- * of native Promises.
* @param {string} [options.apiEndpoint] - The domain name of the
* API remote host.
*/
@@ -111,25 +113,28 @@ export class ContainerAnalysisClient {
// If we are in browser, we are already using fallback because of the
// "browser" field in package.json.
// But if we were explicitly requested to use fallback, let's do it now.
- const gaxModule = !isBrowser && opts.fallback ? gax.fallback : gax;
+ this._gaxModule = !isBrowser && opts.fallback ? gax.fallback : gax;
// Create a `gaxGrpc` object, with any grpc-specific options
// sent to the client.
opts.scopes = (this.constructor as typeof ContainerAnalysisClient).scopes;
- const gaxGrpc = new gaxModule.GrpcClient(opts);
+ this._gaxGrpc = new this._gaxModule.GrpcClient(opts);
+
+ // Save options to use in initialize() method.
+ this._opts = opts;
// Save the auth object to the client, for use by other methods.
- this.auth = gaxGrpc.auth as gax.GoogleAuth;
+ this.auth = this._gaxGrpc.auth as gax.GoogleAuth;
// Determine the client header string.
- const clientHeader = [`gax/${gaxModule.version}`, `gapic/${version}`];
+ const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`];
if (typeof process !== 'undefined' && 'versions' in process) {
clientHeader.push(`gl-node/${process.versions.node}`);
} else {
- clientHeader.push(`gl-web/${gaxModule.version}`);
+ clientHeader.push(`gl-web/${this._gaxModule.version}`);
}
if (!opts.fallback) {
- clientHeader.push(`grpc/${gaxGrpc.grpcVersion}`);
+ clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`);
}
if (opts.libName && opts.libVersion) {
clientHeader.push(`${opts.libName}/${opts.libVersion}`);
@@ -145,7 +150,7 @@ export class ContainerAnalysisClient {
'protos',
'protos.json'
);
- const protos = gaxGrpc.loadProto(
+ this._protos = this._gaxGrpc.loadProto(
opts.fallback ? require('../../protos/protos.json') : nodejsProtoPath
);
@@ -153,16 +158,16 @@ export class ContainerAnalysisClient {
// identifiers to uniquely identify resources within the API.
// Create useful helper objects for these.
this._pathTemplates = {
- notePathTemplate: new gaxModule.PathTemplate(
+ notePathTemplate: new this._gaxModule.PathTemplate(
'projects/{project}/notes/{note}'
),
- occurrencePathTemplate: new gaxModule.PathTemplate(
+ occurrencePathTemplate: new this._gaxModule.PathTemplate(
'projects/{project}/occurrences/{occurrence}'
),
};
// Put together the default options sent with requests.
- const defaults = gaxGrpc.constructSettings(
+ this._defaults = this._gaxGrpc.constructSettings(
'google.devtools.containeranalysis.v1.ContainerAnalysis',
gapicConfig as gax.ClientConfig,
opts.clientConfig || {},
@@ -173,18 +178,36 @@ export class ContainerAnalysisClient {
// of calling the API is handled in `google-gax`, with this code
// merely providing the destination and request information.
this._innerApiCalls = {};
+ }
+
+ /**
+ * Initialize the client.
+ * Performs asynchronous operations (such as authentication) and prepares the client.
+ * This function will be called automatically when any class method is called for the
+ * first time, but if you need to initialize it before calling an actual method,
+ * feel free to call initialize() directly.
+ *
+ * You can await on this method if you want to make sure the client is initialized.
+ *
+ * @returns {Promise} A promise that resolves to an authenticated service stub.
+ */
+ initialize() {
+ // If the client stub promise is already initialized, return immediately.
+ if (this.containerAnalysisStub) {
+ return this.containerAnalysisStub;
+ }
// Put together the "service stub" for
// google.devtools.containeranalysis.v1.ContainerAnalysis.
- this.containerAnalysisStub = gaxGrpc.createStub(
- opts.fallback
- ? (protos as protobuf.Root).lookupService(
+ this.containerAnalysisStub = this._gaxGrpc.createStub(
+ this._opts.fallback
+ ? (this._protos as protobuf.Root).lookupService(
'google.devtools.containeranalysis.v1.ContainerAnalysis'
)
: // tslint:disable-next-line no-any
- (protos as any).google.devtools.containeranalysis.v1
+ (this._protos as any).google.devtools.containeranalysis.v1
.ContainerAnalysis,
- opts
+ this._opts
) as Promise<{[method: string]: Function}>;
// Iterate over each of the methods that the service provides
@@ -208,9 +231,9 @@ export class ContainerAnalysisClient {
}
);
- const apiCall = gaxModule.createApiCall(
+ const apiCall = this._gaxModule.createApiCall(
innerCallPromise,
- defaults[methodName],
+ this._defaults[methodName],
this._descriptors.page[methodName] ||
this._descriptors.stream[methodName] ||
this._descriptors.longrunning[methodName]
@@ -224,7 +247,8 @@ export class ContainerAnalysisClient {
return apiCall(argument, callOptions, callback);
};
}
- this.opts = opts;
+
+ return this.containerAnalysisStub;
}
/**
@@ -351,6 +375,7 @@ export class ContainerAnalysisClient {
] = gax.routingHeader.fromParams({
resource: request.resource || '',
});
+ this.initialize();
return this._innerApiCalls.setIamPolicy(request, options, callback);
}
getIamPolicy(
@@ -427,6 +452,7 @@ export class ContainerAnalysisClient {
] = gax.routingHeader.fromParams({
resource: request.resource || '',
});
+ this.initialize();
return this._innerApiCalls.getIamPolicy(request, options, callback);
}
testIamPermissions(
@@ -502,6 +528,7 @@ export class ContainerAnalysisClient {
] = gax.routingHeader.fromParams({
resource: request.resource || '',
});
+ this.initialize();
return this._innerApiCalls.testIamPermissions(request, options, callback);
}
@@ -544,18 +571,6 @@ export class ContainerAnalysisClient {
matchNoteFromNoteName(noteName: string) {
return this._pathTemplates.notePathTemplate.match(noteName).note;
}
- /**
- * Returns an instance of a @google-cloud/grafeas client, configured to
- * connect to Google Cloud's Container Analysis API. For documentation
- * on this client, see:
- * https://googleapis.dev/nodejs/grafeas/latest/index.html
- *
- * @returns {GrafeasClient} - An instance of a Grafeas client.
- *
- */
- getGrafeasClient() {
- return new GrafeasClient(this.opts);
- }
/**
* Return a fully-qualified occurrence resource name string.
@@ -601,12 +616,26 @@ export class ContainerAnalysisClient {
* The client will no longer be usable and all future behavior is undefined.
*/
close(): Promise {
+ this.initialize();
if (!this._terminated) {
- return this.containerAnalysisStub.then(stub => {
+ return this.containerAnalysisStub!.then(stub => {
this._terminated = true;
stub.close();
});
}
return Promise.resolve();
}
+
+ /**
+ * Returns an instance of a @google-cloud/grafeas client, configured to
+ * connect to Google Cloud's Container Analysis API. For documentation
+ * on this client, see:
+ * https://googleapis.dev/nodejs/grafeas/latest/index.html
+ *
+ * @returns {GrafeasClient} - An instance of a Grafeas client.
+ *
+ */
+ getGrafeasClient() {
+ return new GrafeasClient(this._opts);
+ }
}
diff --git a/packages/google-devtools-containeranalysis/src/v1beta1/container_analysis_v1_beta1_client.ts b/packages/google-devtools-containeranalysis/src/v1beta1/container_analysis_v1_beta1_client.ts
index 66f693e37fc..4517b9c839b 100644
--- a/packages/google-devtools-containeranalysis/src/v1beta1/container_analysis_v1_beta1_client.ts
+++ b/packages/google-devtools-containeranalysis/src/v1beta1/container_analysis_v1_beta1_client.ts
@@ -56,8 +56,13 @@ export class ContainerAnalysisV1Beta1Client {
private _innerApiCalls: {[name: string]: Function};
private _pathTemplates: {[name: string]: gax.PathTemplate};
private _terminated = false;
+ private _opts: ClientOptions;
+ private _gaxModule: typeof gax | typeof gax.fallback;
+ private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient;
+ private _protos: {};
+ private _defaults: {[method: string]: gax.CallSettings};
auth: gax.GoogleAuth;
- containerAnalysisV1Beta1Stub: Promise<{[name: string]: Function}>;
+ containerAnalysisV1Beta1Stub?: Promise<{[name: string]: Function}>;
/**
* Construct an instance of ContainerAnalysisV1Beta1Client.
@@ -81,8 +86,6 @@ export class ContainerAnalysisV1Beta1Client {
* app is running in an environment which supports
* {@link https://developers.google.com/identity/protocols/application-default-credentials Application Default Credentials},
* your project ID will be detected automatically.
- * @param {function} [options.promise] - Custom promise module to use instead
- * of native Promises.
* @param {string} [options.apiEndpoint] - The domain name of the
* API remote host.
*/
@@ -113,26 +116,29 @@ export class ContainerAnalysisV1Beta1Client {
// If we are in browser, we are already using fallback because of the
// "browser" field in package.json.
// But if we were explicitly requested to use fallback, let's do it now.
- const gaxModule = !isBrowser && opts.fallback ? gax.fallback : gax;
+ this._gaxModule = !isBrowser && opts.fallback ? gax.fallback : gax;
// Create a `gaxGrpc` object, with any grpc-specific options
// sent to the client.
opts.scopes = (this
.constructor as typeof ContainerAnalysisV1Beta1Client).scopes;
- const gaxGrpc = new gaxModule.GrpcClient(opts);
+ this._gaxGrpc = new this._gaxModule.GrpcClient(opts);
+
+ // Save options to use in initialize() method.
+ this._opts = opts;
// Save the auth object to the client, for use by other methods.
- this.auth = gaxGrpc.auth as gax.GoogleAuth;
+ this.auth = this._gaxGrpc.auth as gax.GoogleAuth;
// Determine the client header string.
- const clientHeader = [`gax/${gaxModule.version}`, `gapic/${version}`];
+ const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`];
if (typeof process !== 'undefined' && 'versions' in process) {
clientHeader.push(`gl-node/${process.versions.node}`);
} else {
- clientHeader.push(`gl-web/${gaxModule.version}`);
+ clientHeader.push(`gl-web/${this._gaxModule.version}`);
}
if (!opts.fallback) {
- clientHeader.push(`grpc/${gaxGrpc.grpcVersion}`);
+ clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`);
}
if (opts.libName && opts.libVersion) {
clientHeader.push(`${opts.libName}/${opts.libVersion}`);
@@ -148,7 +154,7 @@ export class ContainerAnalysisV1Beta1Client {
'protos',
'protos.json'
);
- const protos = gaxGrpc.loadProto(
+ this._protos = this._gaxGrpc.loadProto(
opts.fallback ? require('../../protos/protos.json') : nodejsProtoPath
);
@@ -156,14 +162,16 @@ export class ContainerAnalysisV1Beta1Client {
// identifiers to uniquely identify resources within the API.
// Create useful helper objects for these.
this._pathTemplates = {
- notePathTemplate: new gaxModule.PathTemplate(
+ notePathTemplate: new this._gaxModule.PathTemplate(
'projects/{project}/notes/{note}'
),
- occurrencePathTemplate: new gaxModule.PathTemplate(
+ occurrencePathTemplate: new this._gaxModule.PathTemplate(
'projects/{project}/occurrences/{occurrence}'
),
- projectPathTemplate: new gaxModule.PathTemplate('projects/{project}'),
- scanConfigPathTemplate: new gaxModule.PathTemplate(
+ projectPathTemplate: new this._gaxModule.PathTemplate(
+ 'projects/{project}'
+ ),
+ scanConfigPathTemplate: new this._gaxModule.PathTemplate(
'projects/{project}/scanConfigs/{scan_config}'
),
};
@@ -172,7 +180,7 @@ export class ContainerAnalysisV1Beta1Client {
// (e.g. 50 results at a time, with tokens to get subsequent
// pages). Denote the keys used for pagination and results.
this._descriptors.page = {
- listScanConfigs: new gaxModule.PageDescriptor(
+ listScanConfigs: new this._gaxModule.PageDescriptor(
'pageToken',
'nextPageToken',
'scanConfigs'
@@ -180,7 +188,7 @@ export class ContainerAnalysisV1Beta1Client {
};
// Put together the default options sent with requests.
- const defaults = gaxGrpc.constructSettings(
+ this._defaults = this._gaxGrpc.constructSettings(
'google.devtools.containeranalysis.v1beta1.ContainerAnalysisV1Beta1',
gapicConfig as gax.ClientConfig,
opts.clientConfig || {},
@@ -191,18 +199,36 @@ export class ContainerAnalysisV1Beta1Client {
// of calling the API is handled in `google-gax`, with this code
// merely providing the destination and request information.
this._innerApiCalls = {};
+ }
+
+ /**
+ * Initialize the client.
+ * Performs asynchronous operations (such as authentication) and prepares the client.
+ * This function will be called automatically when any class method is called for the
+ * first time, but if you need to initialize it before calling an actual method,
+ * feel free to call initialize() directly.
+ *
+ * You can await on this method if you want to make sure the client is initialized.
+ *
+ * @returns {Promise} A promise that resolves to an authenticated service stub.
+ */
+ initialize() {
+ // If the client stub promise is already initialized, return immediately.
+ if (this.containerAnalysisV1Beta1Stub) {
+ return this.containerAnalysisV1Beta1Stub;
+ }
// Put together the "service stub" for
// google.devtools.containeranalysis.v1beta1.ContainerAnalysisV1Beta1.
- this.containerAnalysisV1Beta1Stub = gaxGrpc.createStub(
- opts.fallback
- ? (protos as protobuf.Root).lookupService(
+ this.containerAnalysisV1Beta1Stub = this._gaxGrpc.createStub(
+ this._opts.fallback
+ ? (this._protos as protobuf.Root).lookupService(
'google.devtools.containeranalysis.v1beta1.ContainerAnalysisV1Beta1'
)
: // tslint:disable-next-line no-any
- (protos as any).google.devtools.containeranalysis.v1beta1
+ (this._protos as any).google.devtools.containeranalysis.v1beta1
.ContainerAnalysisV1Beta1,
- opts
+ this._opts
) as Promise<{[method: string]: Function}>;
// Iterate over each of the methods that the service provides
@@ -229,9 +255,9 @@ export class ContainerAnalysisV1Beta1Client {
}
);
- const apiCall = gaxModule.createApiCall(
+ const apiCall = this._gaxModule.createApiCall(
innerCallPromise,
- defaults[methodName],
+ this._defaults[methodName],
this._descriptors.page[methodName] ||
this._descriptors.stream[methodName] ||
this._descriptors.longrunning[methodName]
@@ -245,6 +271,8 @@ export class ContainerAnalysisV1Beta1Client {
return apiCall(argument, callOptions, callback);
};
}
+
+ return this.containerAnalysisV1Beta1Stub;
}
/**
@@ -371,6 +399,7 @@ export class ContainerAnalysisV1Beta1Client {
] = gax.routingHeader.fromParams({
resource: request.resource || '',
});
+ this.initialize();
return this._innerApiCalls.setIamPolicy(request, options, callback);
}
getIamPolicy(
@@ -447,6 +476,7 @@ export class ContainerAnalysisV1Beta1Client {
] = gax.routingHeader.fromParams({
resource: request.resource || '',
});
+ this.initialize();
return this._innerApiCalls.getIamPolicy(request, options, callback);
}
testIamPermissions(
@@ -522,6 +552,7 @@ export class ContainerAnalysisV1Beta1Client {
] = gax.routingHeader.fromParams({
resource: request.resource || '',
});
+ this.initialize();
return this._innerApiCalls.testIamPermissions(request, options, callback);
}
getScanConfig(
@@ -603,6 +634,7 @@ export class ContainerAnalysisV1Beta1Client {
] = gax.routingHeader.fromParams({
name: request.name || '',
});
+ this.initialize();
return this._innerApiCalls.getScanConfig(request, options, callback);
}
updateScanConfig(
@@ -686,6 +718,7 @@ export class ContainerAnalysisV1Beta1Client {
] = gax.routingHeader.fromParams({
name: request.name || '',
});
+ this.initialize();
return this._innerApiCalls.updateScanConfig(request, options, callback);
}
@@ -777,6 +810,7 @@ export class ContainerAnalysisV1Beta1Client {
] = gax.routingHeader.fromParams({
parent: request.parent || '',
});
+ this.initialize();
return this._innerApiCalls.listScanConfigs(request, options, callback);
}
@@ -823,6 +857,7 @@ export class ContainerAnalysisV1Beta1Client {
parent: request.parent || '',
});
const callSettings = new gax.CallSettings(options);
+ this.initialize();
return this._descriptors.page.listScanConfigs.createStream(
this._innerApiCalls.listScanConfigs as gax.GaxCall,
request,
@@ -974,8 +1009,9 @@ export class ContainerAnalysisV1Beta1Client {
* The client will no longer be usable and all future behavior is undefined.
*/
close(): Promise {
+ this.initialize();
if (!this._terminated) {
- return this.containerAnalysisV1Beta1Stub.then(stub => {
+ return this.containerAnalysisV1Beta1Stub!.then(stub => {
this._terminated = true;
stub.close();
});
diff --git a/packages/google-devtools-containeranalysis/src/v1beta1/grafeas_v1_beta1_client.ts b/packages/google-devtools-containeranalysis/src/v1beta1/grafeas_v1_beta1_client.ts
index bb5b03b1c5d..3158659c08f 100644
--- a/packages/google-devtools-containeranalysis/src/v1beta1/grafeas_v1_beta1_client.ts
+++ b/packages/google-devtools-containeranalysis/src/v1beta1/grafeas_v1_beta1_client.ts
@@ -57,8 +57,13 @@ export class GrafeasV1Beta1Client {
private _innerApiCalls: {[name: string]: Function};
private _pathTemplates: {[name: string]: gax.PathTemplate};
private _terminated = false;
+ private _opts: ClientOptions;
+ private _gaxModule: typeof gax | typeof gax.fallback;
+ private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient;
+ private _protos: {};
+ private _defaults: {[method: string]: gax.CallSettings};
auth: gax.GoogleAuth;
- grafeasV1Beta1Stub: Promise<{[name: string]: Function}>;
+ grafeasV1Beta1Stub?: Promise<{[name: string]: Function}>;
/**
* Construct an instance of GrafeasV1Beta1Client.
@@ -82,8 +87,6 @@ export class GrafeasV1Beta1Client {
* app is running in an environment which supports
* {@link https://developers.google.com/identity/protocols/application-default-credentials Application Default Credentials},
* your project ID will be detected automatically.
- * @param {function} [options.promise] - Custom promise module to use instead
- * of native Promises.
* @param {string} [options.apiEndpoint] - The domain name of the
* API remote host.
*/
@@ -113,25 +116,28 @@ export class GrafeasV1Beta1Client {
// If we are in browser, we are already using fallback because of the
// "browser" field in package.json.
// But if we were explicitly requested to use fallback, let's do it now.
- const gaxModule = !isBrowser && opts.fallback ? gax.fallback : gax;
+ this._gaxModule = !isBrowser && opts.fallback ? gax.fallback : gax;
// Create a `gaxGrpc` object, with any grpc-specific options
// sent to the client.
opts.scopes = (this.constructor as typeof GrafeasV1Beta1Client).scopes;
- const gaxGrpc = new gaxModule.GrpcClient(opts);
+ this._gaxGrpc = new this._gaxModule.GrpcClient(opts);
+
+ // Save options to use in initialize() method.
+ this._opts = opts;
// Save the auth object to the client, for use by other methods.
- this.auth = gaxGrpc.auth as gax.GoogleAuth;
+ this.auth = this._gaxGrpc.auth as gax.GoogleAuth;
// Determine the client header string.
- const clientHeader = [`gax/${gaxModule.version}`, `gapic/${version}`];
+ const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`];
if (typeof process !== 'undefined' && 'versions' in process) {
clientHeader.push(`gl-node/${process.versions.node}`);
} else {
- clientHeader.push(`gl-web/${gaxModule.version}`);
+ clientHeader.push(`gl-web/${this._gaxModule.version}`);
}
if (!opts.fallback) {
- clientHeader.push(`grpc/${gaxGrpc.grpcVersion}`);
+ clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`);
}
if (opts.libName && opts.libVersion) {
clientHeader.push(`${opts.libName}/${opts.libVersion}`);
@@ -147,7 +153,7 @@ export class GrafeasV1Beta1Client {
'protos',
'protos.json'
);
- const protos = gaxGrpc.loadProto(
+ this._protos = this._gaxGrpc.loadProto(
opts.fallback ? require('../../protos/protos.json') : nodejsProtoPath
);
@@ -155,13 +161,13 @@ export class GrafeasV1Beta1Client {
// identifiers to uniquely identify resources within the API.
// Create useful helper objects for these.
this._pathTemplates = {
- notePathTemplate: new gaxModule.PathTemplate(
+ notePathTemplate: new this._gaxModule.PathTemplate(
'projects/{project}/notes/{note}'
),
- occurrencePathTemplate: new gaxModule.PathTemplate(
+ occurrencePathTemplate: new this._gaxModule.PathTemplate(
'projects/{project}/occurrences/{occurrence}'
),
- scanConfigPathTemplate: new gaxModule.PathTemplate(
+ scanConfigPathTemplate: new this._gaxModule.PathTemplate(
'projects/{project}/scanConfigs/{scan_config}'
),
};
@@ -170,17 +176,17 @@ export class GrafeasV1Beta1Client {
// (e.g. 50 results at a time, with tokens to get subsequent
// pages). Denote the keys used for pagination and results.
this._descriptors.page = {
- listOccurrences: new gaxModule.PageDescriptor(
+ listOccurrences: new this._gaxModule.PageDescriptor(
'pageToken',
'nextPageToken',
'occurrences'
),
- listNotes: new gaxModule.PageDescriptor(
+ listNotes: new this._gaxModule.PageDescriptor(
'pageToken',
'nextPageToken',
'notes'
),
- listNoteOccurrences: new gaxModule.PageDescriptor(
+ listNoteOccurrences: new this._gaxModule.PageDescriptor(
'pageToken',
'nextPageToken',
'occurrences'
@@ -188,7 +194,7 @@ export class GrafeasV1Beta1Client {
};
// Put together the default options sent with requests.
- const defaults = gaxGrpc.constructSettings(
+ this._defaults = this._gaxGrpc.constructSettings(
'google.devtools.containeranalysis.v1beta1.GrafeasV1Beta1',
gapicConfig as gax.ClientConfig,
opts.clientConfig || {},
@@ -199,18 +205,36 @@ export class GrafeasV1Beta1Client {
// of calling the API is handled in `google-gax`, with this code
// merely providing the destination and request information.
this._innerApiCalls = {};
+ }
+
+ /**
+ * Initialize the client.
+ * Performs asynchronous operations (such as authentication) and prepares the client.
+ * This function will be called automatically when any class method is called for the
+ * first time, but if you need to initialize it before calling an actual method,
+ * feel free to call initialize() directly.
+ *
+ * You can await on this method if you want to make sure the client is initialized.
+ *
+ * @returns {Promise} A promise that resolves to an authenticated service stub.
+ */
+ initialize() {
+ // If the client stub promise is already initialized, return immediately.
+ if (this.grafeasV1Beta1Stub) {
+ return this.grafeasV1Beta1Stub;
+ }
// Put together the "service stub" for
// google.devtools.containeranalysis.v1beta1.GrafeasV1Beta1.
- this.grafeasV1Beta1Stub = gaxGrpc.createStub(
- opts.fallback
- ? (protos as protobuf.Root).lookupService(
+ this.grafeasV1Beta1Stub = this._gaxGrpc.createStub(
+ this._opts.fallback
+ ? (this._protos as protobuf.Root).lookupService(
'google.devtools.containeranalysis.v1beta1.GrafeasV1Beta1'
)
: // tslint:disable-next-line no-any
- (protos as any).google.devtools.containeranalysis.v1beta1
+ (this._protos as any).google.devtools.containeranalysis.v1beta1
.GrafeasV1Beta1,
- opts
+ this._opts
) as Promise<{[method: string]: Function}>;
// Iterate over each of the methods that the service provides
@@ -246,9 +270,9 @@ export class GrafeasV1Beta1Client {
}
);
- const apiCall = gaxModule.createApiCall(
+ const apiCall = this._gaxModule.createApiCall(
innerCallPromise,
- defaults[methodName],
+ this._defaults[methodName],
this._descriptors.page[methodName] ||
this._descriptors.stream[methodName] ||
this._descriptors.longrunning[methodName]
@@ -262,6 +286,8 @@ export class GrafeasV1Beta1Client {
return apiCall(argument, callOptions, callback);
};
}
+
+ return this.grafeasV1Beta1Stub;
}
/**
@@ -384,6 +410,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
name: request.name || '',
});
+ this.initialize();
return this._innerApiCalls.getOccurrence(request, options, callback);
}
deleteOccurrence(
@@ -458,6 +485,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
name: request.name || '',
});
+ this.initialize();
return this._innerApiCalls.deleteOccurrence(request, options, callback);
}
createOccurrence(
@@ -532,6 +560,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
parent: request.parent || '',
});
+ this.initialize();
return this._innerApiCalls.createOccurrence(request, options, callback);
}
batchCreateOccurrences(
@@ -607,6 +636,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
parent: request.parent || '',
});
+ this.initialize();
return this._innerApiCalls.batchCreateOccurrences(
request,
options,
@@ -687,6 +717,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
name: request.name || '',
});
+ this.initialize();
return this._innerApiCalls.updateOccurrence(request, options, callback);
}
getOccurrenceNote(
@@ -760,6 +791,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
name: request.name || '',
});
+ this.initialize();
return this._innerApiCalls.getOccurrenceNote(request, options, callback);
}
getNote(
@@ -832,6 +864,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
name: request.name || '',
});
+ this.initialize();
return this._innerApiCalls.getNote(request, options, callback);
}
deleteNote(
@@ -904,6 +937,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
name: request.name || '',
});
+ this.initialize();
return this._innerApiCalls.deleteNote(request, options, callback);
}
createNote(
@@ -980,6 +1014,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
parent: request.parent || '',
});
+ this.initialize();
return this._innerApiCalls.createNote(request, options, callback);
}
batchCreateNotes(
@@ -1054,6 +1089,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
parent: request.parent || '',
});
+ this.initialize();
return this._innerApiCalls.batchCreateNotes(request, options, callback);
}
updateNote(
@@ -1130,6 +1166,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
name: request.name || '',
});
+ this.initialize();
return this._innerApiCalls.updateNote(request, options, callback);
}
getVulnerabilityOccurrencesSummary(
@@ -1213,6 +1250,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
parent: request.parent || '',
});
+ this.initialize();
return this._innerApiCalls.getVulnerabilityOccurrencesSummary(
request,
options,
@@ -1308,6 +1346,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
parent: request.parent || '',
});
+ this.initialize();
return this._innerApiCalls.listOccurrences(request, options, callback);
}
@@ -1354,6 +1393,7 @@ export class GrafeasV1Beta1Client {
parent: request.parent || '',
});
const callSettings = new gax.CallSettings(options);
+ this.initialize();
return this._descriptors.page.listOccurrences.createStream(
this._innerApiCalls.listOccurrences as gax.GaxCall,
request,
@@ -1448,6 +1488,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
parent: request.parent || '',
});
+ this.initialize();
return this._innerApiCalls.listNotes(request, options, callback);
}
@@ -1494,6 +1535,7 @@ export class GrafeasV1Beta1Client {
parent: request.parent || '',
});
const callSettings = new gax.CallSettings(options);
+ this.initialize();
return this._descriptors.page.listNotes.createStream(
this._innerApiCalls.listNotes as gax.GaxCall,
request,
@@ -1590,6 +1632,7 @@ export class GrafeasV1Beta1Client {
] = gax.routingHeader.fromParams({
name: request.name || '',
});
+ this.initialize();
return this._innerApiCalls.listNoteOccurrences(request, options, callback);
}
@@ -1636,6 +1679,7 @@ export class GrafeasV1Beta1Client {
name: request.name || '',
});
const callSettings = new gax.CallSettings(options);
+ this.initialize();
return this._descriptors.page.listNoteOccurrences.createStream(
this._innerApiCalls.listNoteOccurrences as gax.GaxCall,
request,
@@ -1764,8 +1808,9 @@ export class GrafeasV1Beta1Client {
* The client will no longer be usable and all future behavior is undefined.
*/
close(): Promise {
+ this.initialize();
if (!this._terminated) {
- return this.grafeasV1Beta1Stub.then(stub => {
+ return this.grafeasV1Beta1Stub!.then(stub => {
this._terminated = true;
stub.close();
});
diff --git a/packages/google-devtools-containeranalysis/synth.metadata b/packages/google-devtools-containeranalysis/synth.metadata
index e1d36c08b8e..4a24f7e78c7 100644
--- a/packages/google-devtools-containeranalysis/synth.metadata
+++ b/packages/google-devtools-containeranalysis/synth.metadata
@@ -1,19 +1,19 @@
{
- "updateTime": "2020-02-07T19:14:58.575078Z",
+ "updateTime": "2020-03-05T23:59:18.093854Z",
"sources": [
{
"git": {
"name": "googleapis",
"remote": "https://github.com/googleapis/googleapis.git",
- "sha": "e46f761cd6ec15a9e3d5ed4ff321a4bcba8e8585",
- "internalRef": "293710856"
+ "sha": "f0b581b5bdf803e45201ecdb3688b60e381628a8",
+ "internalRef": "299181282"
}
},
{
"template": {
"name": "node_library",
"origin": "synthtool.gcp",
- "version": "2019.10.17"
+ "version": "2020.2.4"
}
}
],
diff --git a/packages/google-devtools-containeranalysis/synth.py b/packages/google-devtools-containeranalysis/synth.py
index 3b87c2d813e..cef7454d8c6 100644
--- a/packages/google-devtools-containeranalysis/synth.py
+++ b/packages/google-devtools-containeranalysis/synth.py
@@ -56,34 +56,8 @@
"""import * as path from 'path';
const { GrafeasClient } = require('@google-cloud/grafeas');
""")
-s.replace("src/v1/container_analysis_client.ts",
-"""auth\: gax\.GoogleAuth;
-""",
-"""auth: gax.GoogleAuth;
-opts: ClientOptions;
-""")
-s.replace("src/v1/container_analysis_client.ts",
-""" \}
-
- \/\*\*
- \* The DNS address for this API service\.
- \*\/
-""",
-""" this.opts = opts;
- }
-
- /**
- * The DNS address for this API service.
- */
-""")
-s.replace("src/v1/container_analysis_client.ts",
-r""" matchNoteFromNoteName\(noteName: string\) {
- return this\._pathTemplates\.notePathTemplate\.match\(noteName\)\.note;
- }
-""",
-r""" matchNoteFromNoteName(noteName: string) {
- return this._pathTemplates.notePathTemplate.match(noteName).note;
- }
+s.replace("src/v1/container_analysis_client.ts", "^}",
+r"""
/**
* Returns an instance of a @google-cloud/grafeas client, configured to
* connect to Google Cloud's Container Analysis API. For documentation
@@ -94,8 +68,9 @@
*
*/
getGrafeasClient() {
- return new GrafeasClient(this.opts);
+ return new GrafeasClient(this._opts);
}
+}
""")
# Node.js specific cleanup
to_remove=['src/v1/grafeas_client.ts', 'src/v1/grafeas_client_config.json', 'src/v1/grafeas_proto_list.json', 'src/v1beta1/grafeas_client.ts','src/v1beta1/grafeas_client_config.json', 'src/v1beta1/grafeas_proto_list.json', 'test/gapic-grafeas_v1_beta1-v1beta1.ts', 'test/gapic-grafeas-v1.ts', 'test/gapic-grafeas-v1beta1.ts']
diff --git a/packages/google-devtools-containeranalysis/test/gapic-container_analysis-v1.ts b/packages/google-devtools-containeranalysis/test/gapic-container_analysis-v1.ts
index ebb1a171dda..2ceff01619f 100644
--- a/packages/google-devtools-containeranalysis/test/gapic-container_analysis-v1.ts
+++ b/packages/google-devtools-containeranalysis/test/gapic-container_analysis-v1.ts
@@ -83,12 +83,30 @@ describe('v1.ContainerAnalysisClient', () => {
});
assert(client);
});
+ it('has initialize method and supports deferred initialization', async () => {
+ const client = new containeranalysisModule.v1.ContainerAnalysisClient({
+ credentials: {client_email: 'bogus', private_key: 'bogus'},
+ projectId: 'bogus',
+ });
+ assert.strictEqual(client.containerAnalysisStub, undefined);
+ await client.initialize();
+ assert(client.containerAnalysisStub);
+ });
+ it('has close method', () => {
+ const client = new containeranalysisModule.v1.ContainerAnalysisClient({
+ credentials: {client_email: 'bogus', private_key: 'bogus'},
+ projectId: 'bogus',
+ });
+ client.close();
+ });
describe('setIamPolicy', () => {
it('invokes setIamPolicy without error', done => {
const client = new containeranalysisModule.v1.ContainerAnalysisClient({
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
});
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.iam.v1.ISetIamPolicyRequest = {};
request.resource = '';
@@ -112,6 +130,8 @@ describe('v1.ContainerAnalysisClient', () => {
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
});
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.iam.v1.ISetIamPolicyRequest = {};
request.resource = '';
@@ -137,6 +157,8 @@ describe('v1.ContainerAnalysisClient', () => {
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
});
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.iam.v1.IGetIamPolicyRequest = {};
request.resource = '';
@@ -160,6 +182,8 @@ describe('v1.ContainerAnalysisClient', () => {
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
});
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.iam.v1.IGetIamPolicyRequest = {};
request.resource = '';
@@ -185,6 +209,8 @@ describe('v1.ContainerAnalysisClient', () => {
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
});
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.iam.v1.ITestIamPermissionsRequest = {};
request.resource = '';
@@ -208,6 +234,8 @@ describe('v1.ContainerAnalysisClient', () => {
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
});
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.iam.v1.ITestIamPermissionsRequest = {};
request.resource = '';
diff --git a/packages/google-devtools-containeranalysis/test/gapic-container_analysis_v1_beta1-v1beta1.ts b/packages/google-devtools-containeranalysis/test/gapic-container_analysis_v1_beta1-v1beta1.ts
index c534d813fda..71ddb042ec8 100644
--- a/packages/google-devtools-containeranalysis/test/gapic-container_analysis_v1_beta1-v1beta1.ts
+++ b/packages/google-devtools-containeranalysis/test/gapic-container_analysis_v1_beta1-v1beta1.ts
@@ -89,6 +89,26 @@ describe('v1beta1.ContainerAnalysisV1Beta1Client', () => {
);
assert(client);
});
+ it('has initialize method and supports deferred initialization', async () => {
+ const client = new containeranalysisv1beta1Module.v1beta1.ContainerAnalysisV1Beta1Client(
+ {
+ credentials: {client_email: 'bogus', private_key: 'bogus'},
+ projectId: 'bogus',
+ }
+ );
+ assert.strictEqual(client.containerAnalysisV1Beta1Stub, undefined);
+ await client.initialize();
+ assert(client.containerAnalysisV1Beta1Stub);
+ });
+ it('has close method', () => {
+ const client = new containeranalysisv1beta1Module.v1beta1.ContainerAnalysisV1Beta1Client(
+ {
+ credentials: {client_email: 'bogus', private_key: 'bogus'},
+ projectId: 'bogus',
+ }
+ );
+ client.close();
+ });
describe('setIamPolicy', () => {
it('invokes setIamPolicy without error', done => {
const client = new containeranalysisv1beta1Module.v1beta1.ContainerAnalysisV1Beta1Client(
@@ -97,6 +117,8 @@ describe('v1beta1.ContainerAnalysisV1Beta1Client', () => {
projectId: 'bogus',
}
);
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.iam.v1.ISetIamPolicyRequest = {};
request.resource = '';
@@ -122,6 +144,8 @@ describe('v1beta1.ContainerAnalysisV1Beta1Client', () => {
projectId: 'bogus',
}
);
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.iam.v1.ISetIamPolicyRequest = {};
request.resource = '';
@@ -149,6 +173,8 @@ describe('v1beta1.ContainerAnalysisV1Beta1Client', () => {
projectId: 'bogus',
}
);
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.iam.v1.IGetIamPolicyRequest = {};
request.resource = '';
@@ -174,6 +200,8 @@ describe('v1beta1.ContainerAnalysisV1Beta1Client', () => {
projectId: 'bogus',
}
);
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.iam.v1.IGetIamPolicyRequest = {};
request.resource = '';
@@ -201,6 +229,8 @@ describe('v1beta1.ContainerAnalysisV1Beta1Client', () => {
projectId: 'bogus',
}
);
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.iam.v1.ITestIamPermissionsRequest = {};
request.resource = '';
@@ -226,6 +256,8 @@ describe('v1beta1.ContainerAnalysisV1Beta1Client', () => {
projectId: 'bogus',
}
);
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.iam.v1.ITestIamPermissionsRequest = {};
request.resource = '';
@@ -253,6 +285,8 @@ describe('v1beta1.ContainerAnalysisV1Beta1Client', () => {
projectId: 'bogus',
}
);
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.devtools.containeranalysis.v1beta1.IGetScanConfigRequest = {};
request.name = '';
@@ -278,6 +312,8 @@ describe('v1beta1.ContainerAnalysisV1Beta1Client', () => {
projectId: 'bogus',
}
);
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.devtools.containeranalysis.v1beta1.IGetScanConfigRequest = {};
request.name = '';
@@ -305,6 +341,8 @@ describe('v1beta1.ContainerAnalysisV1Beta1Client', () => {
projectId: 'bogus',
}
);
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.devtools.containeranalysis.v1beta1.IUpdateScanConfigRequest = {};
request.name = '';
@@ -330,6 +368,8 @@ describe('v1beta1.ContainerAnalysisV1Beta1Client', () => {
projectId: 'bogus',
}
);
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.devtools.containeranalysis.v1beta1.IUpdateScanConfigRequest = {};
request.name = '';
@@ -357,6 +397,8 @@ describe('v1beta1.ContainerAnalysisV1Beta1Client', () => {
projectId: 'bogus',
}
);
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.devtools.containeranalysis.v1beta1.IListScanConfigsRequest = {};
request.parent = '';
@@ -386,6 +428,8 @@ describe('v1beta1.ContainerAnalysisV1Beta1Client', () => {
projectId: 'bogus',
}
);
+ // Initialize client before mocking
+ client.initialize();
// Mock request
const request: protosTypes.google.devtools.containeranalysis.v1beta1.IListScanConfigsRequest = {};
request.parent = '';