diff --git a/src/v1/cluster_manager_client.ts b/src/v1/cluster_manager_client.ts index 640e862..3f13c20 100644 --- a/src/v1/cluster_manager_client.ts +++ b/src/v1/cluster_manager_client.ts @@ -43,8 +43,13 @@ export class ClusterManagerClient { private _descriptors: Descriptors = {page: {}, stream: {}, longrunning: {}}; private _innerApiCalls: {[name: string]: Function}; 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; - clusterManagerStub: Promise<{[name: string]: Function}>; + clusterManagerStub?: Promise<{[name: string]: Function}>; /** * Construct an instance of ClusterManagerClient. @@ -68,8 +73,6 @@ export class ClusterManagerClient { * 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. */ @@ -99,25 +102,28 @@ export class ClusterManagerClient { // 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 ClusterManagerClient).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}`); @@ -133,7 +139,7 @@ export class ClusterManagerClient { 'protos', 'protos.json' ); - const protos = gaxGrpc.loadProto( + this._protos = this._gaxGrpc.loadProto( opts.fallback ? require('../../protos/protos.json') : nodejsProtoPath ); @@ -141,7 +147,7 @@ export class ClusterManagerClient { // (e.g. 50 results at a time, with tokens to get subsequent // pages). Denote the keys used for pagination and results. this._descriptors.page = { - listUsableSubnetworks: new gaxModule.PageDescriptor( + listUsableSubnetworks: new this._gaxModule.PageDescriptor( 'pageToken', 'nextPageToken', 'subnetworks' @@ -149,7 +155,7 @@ export class ClusterManagerClient { }; // Put together the default options sent with requests. - const defaults = gaxGrpc.constructSettings( + this._defaults = this._gaxGrpc.constructSettings( 'google.container.v1.ClusterManager', gapicConfig as gax.ClientConfig, opts.clientConfig || {}, @@ -160,17 +166,35 @@ export class ClusterManagerClient { // 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.clusterManagerStub) { + return this.clusterManagerStub; + } // Put together the "service stub" for // google.container.v1.ClusterManager. - this.clusterManagerStub = gaxGrpc.createStub( - opts.fallback - ? (protos as protobuf.Root).lookupService( + this.clusterManagerStub = this._gaxGrpc.createStub( + this._opts.fallback + ? (this._protos as protobuf.Root).lookupService( 'google.container.v1.ClusterManager' ) : // tslint:disable-next-line no-any - (protos as any).google.container.v1.ClusterManager, - opts + (this._protos as any).google.container.v1.ClusterManager, + this._opts ) as Promise<{[method: string]: Function}>; // Iterate over each of the methods that the service provides @@ -222,9 +246,9 @@ export class ClusterManagerClient { } ); - 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] @@ -238,6 +262,8 @@ export class ClusterManagerClient { return apiCall(argument, callOptions, callback); }; } + + return this.clusterManagerStub; } /** @@ -371,6 +397,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ parent: request.parent || '', }); + this.initialize(); return this._innerApiCalls.listClusters(request, options, callback); } getCluster( @@ -455,6 +482,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.getCluster(request, options, callback); } createCluster( @@ -551,6 +579,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ parent: request.parent || '', }); + this.initialize(); return this._innerApiCalls.createCluster(request, options, callback); } updateCluster( @@ -637,6 +666,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.updateCluster(request, options, callback); } updateNodePool( @@ -739,6 +769,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.updateNodePool(request, options, callback); } setNodePoolAutoscaling( @@ -838,6 +869,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.setNodePoolAutoscaling( request, options, @@ -932,6 +964,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.setLoggingService(request, options, callback); } setMonitoringService( @@ -1025,6 +1058,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.setMonitoringService(request, options, callback); } setAddonsConfig( @@ -1112,6 +1146,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.setAddonsConfig(request, options, callback); } setLocations( @@ -1204,6 +1239,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.setLocations(request, options, callback); } updateMaster( @@ -1299,6 +1335,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.updateMaster(request, options, callback); } setMasterAuth( @@ -1389,6 +1426,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.setMasterAuth(request, options, callback); } deleteCluster( @@ -1481,6 +1519,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.deleteCluster(request, options, callback); } listOperations( @@ -1562,6 +1601,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ parent: request.parent || '', }); + this.initialize(); return this._innerApiCalls.listOperations(request, options, callback); } getOperation( @@ -1646,6 +1686,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.getOperation(request, options, callback); } cancelOperation( @@ -1729,6 +1770,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.cancelOperation(request, options, callback); } getServerConfig( @@ -1809,6 +1851,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.getServerConfig(request, options, callback); } listNodePools( @@ -1893,6 +1936,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ parent: request.parent || '', }); + this.initialize(); return this._innerApiCalls.listNodePools(request, options, callback); } getNodePool( @@ -1981,6 +2025,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.getNodePool(request, options, callback); } createNodePool( @@ -2068,6 +2113,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ parent: request.parent || '', }); + this.initialize(); return this._innerApiCalls.createNodePool(request, options, callback); } deleteNodePool( @@ -2156,6 +2202,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.deleteNodePool(request, options, callback); } rollbackNodePoolUpgrade( @@ -2254,6 +2301,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.rollbackNodePoolUpgrade( request, options, @@ -2349,6 +2397,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.setNodePoolManagement( request, options, @@ -2446,6 +2495,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.setLabels(request, options, callback); } setLegacyAbac( @@ -2532,6 +2582,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.setLegacyAbac(request, options, callback); } startIPRotation( @@ -2618,6 +2669,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.startIPRotation(request, options, callback); } completeIPRotation( @@ -2703,6 +2755,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.completeIPRotation(request, options, callback); } setNodePoolSize( @@ -2793,6 +2846,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.setNodePoolSize(request, options, callback); } setNetworkPolicy( @@ -2879,6 +2933,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.setNetworkPolicy(request, options, callback); } setMaintenancePolicy( @@ -2965,6 +3020,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ name: request.name || '', }); + this.initialize(); return this._innerApiCalls.setMaintenancePolicy(request, options, callback); } @@ -3063,6 +3119,7 @@ export class ClusterManagerClient { ] = gax.routingHeader.fromParams({ parent: request.parent || '', }); + this.initialize(); return this._innerApiCalls.listUsableSubnetworks( request, options, @@ -3120,6 +3177,7 @@ export class ClusterManagerClient { parent: request.parent || '', }); const callSettings = new gax.CallSettings(options); + this.initialize(); return this._descriptors.page.listUsableSubnetworks.createStream( this._innerApiCalls.listUsableSubnetworks as gax.GaxCall, request, @@ -3133,8 +3191,9 @@ export class ClusterManagerClient { * The client will no longer be usable and all future behavior is undefined. */ close(): Promise { + this.initialize(); if (!this._terminated) { - return this.clusterManagerStub.then(stub => { + return this.clusterManagerStub!.then(stub => { this._terminated = true; stub.close(); }); diff --git a/synth.metadata b/synth.metadata index 3c0c95d..2b370b1 100644 --- a/synth.metadata +++ b/synth.metadata @@ -1,13 +1,13 @@ { - "updateTime": "2020-02-29T12:18:01.970231Z", + "updateTime": "2020-03-05T23:03:14.339441Z", "sources": [ { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "83c6f84035ee0f80eaa44d8b688a010461cc4080", - "internalRef": "297918498", - "log": "83c6f84035ee0f80eaa44d8b688a010461cc4080\nUpdate google/api/auth.proto to make AuthProvider to have JwtLocation\n\nPiperOrigin-RevId: 297918498\n\ne9e90a787703ec5d388902e2cb796aaed3a385b4\nDialogflow weekly v2/v2beta1 library update:\n - adding get validation result\n - adding field mask override control for output audio config\nImportant updates are also posted at:\nhttps://cloud.google.com/dialogflow/docs/release-notes\n\nPiperOrigin-RevId: 297671458\n\n1a2b05cc3541a5f7714529c665aecc3ea042c646\nAdding .yaml and .json config files.\n\nPiperOrigin-RevId: 297570622\n\ndfe1cf7be44dee31d78f78e485d8c95430981d6e\nPublish `QueryOptions` proto.\n\nIntroduced a `query_options` input in `ExecuteSqlRequest`.\n\nPiperOrigin-RevId: 297497710\n\ndafc905f71e5d46f500b41ed715aad585be062c3\npubsub: revert pull init_rpc_timeout & max_rpc_timeout back to 25 seconds and reset multiplier to 1.0\n\nPiperOrigin-RevId: 297486523\n\nf077632ba7fee588922d9e8717ee272039be126d\nfirestore: add update_transform\n\nPiperOrigin-RevId: 297405063\n\n0aba1900ffef672ec5f0da677cf590ee5686e13b\ncluster: use square brace for cross-reference\n\nPiperOrigin-RevId: 297204568\n\n5dac2da18f6325cbaed54603c43f0667ecd50247\nRestore retry params in gapic config because securitycenter has non-standard default retry params.\nRestore a few retry codes for some idempotent methods.\n\nPiperOrigin-RevId: 297196720\n\n1eb61455530252bba8b2c8d4bc9832960e5a56f6\npubsub: v1 replace IAM HTTP rules\n\nPiperOrigin-RevId: 297188590\n\n80b2d25f8d43d9d47024ff06ead7f7166548a7ba\nDialogflow weekly v2/v2beta1 library update:\n - updates to mega agent api\n - adding field mask override control for output audio config\nImportant updates are also posted at:\nhttps://cloud.google.com/dialogflow/docs/release-notes\n\nPiperOrigin-RevId: 297187629\n\n0b1876b35e98f560f9c9ca9797955f020238a092\nUse an older version of protoc-docs-plugin that is compatible with the specified gapic-generator and protobuf versions.\n\nprotoc-docs-plugin >=0.4.0 (see commit https://github.com/googleapis/protoc-docs-plugin/commit/979f03ede6678c487337f3d7e88bae58df5207af) is incompatible with protobuf 3.9.1.\n\nPiperOrigin-RevId: 296986742\n\n1e47e676cddbbd8d93f19ba0665af15b5532417e\nFix: Restore a method signature for UpdateCluster\n\nPiperOrigin-RevId: 296901854\n\n7f910bcc4fc4704947ccfd3ceed015d16b9e00c2\nUpdate Dataproc v1beta2 client.\n\nPiperOrigin-RevId: 296451205\n\nde287524405a3dce124d301634731584fc0432d7\nFix: Reinstate method signatures that had been missed off some RPCs\nFix: Correct resource types for two fields\n\nPiperOrigin-RevId: 296435091\n\ne5bc9566ae057fb4c92f8b7e047f1c8958235b53\nDeprecate the endpoint_uris field, as it is unused.\n\nPiperOrigin-RevId: 296357191\n\n8c12e2b4dca94e12bff9f538bdac29524ff7ef7a\nUpdate Dataproc v1 client.\n\nPiperOrigin-RevId: 296336662\n\n17567c4a1ef0a9b50faa87024d66f8acbb561089\nRemoving erroneous comment, a la https://github.com/googleapis/java-speech/pull/103\n\nPiperOrigin-RevId: 296332968\n\n3eaaaf8626ce5b0c0bc7eee05e143beffa373b01\nAdd BUILD.bazel for v1 secretmanager.googleapis.com\n\nPiperOrigin-RevId: 296274723\n\ne76149c3d992337f85eeb45643106aacae7ede82\nMove securitycenter v1 to use generate from annotations.\n\nPiperOrigin-RevId: 296266862\n\n203740c78ac69ee07c3bf6be7408048751f618f8\nAdd StackdriverLoggingConfig field to Cloud Tasks v2 API.\n\nPiperOrigin-RevId: 296256388\n\ne4117d5e9ed8bbca28da4a60a94947ca51cb2083\nCreate a Bazel BUILD file for the google.actions.type export.\n\nPiperOrigin-RevId: 296212567\n\na9639a0a9854fd6e1be08bba1ac3897f4f16cb2f\nAdd secretmanager.googleapis.com v1 protos\n\nPiperOrigin-RevId: 295983266\n\nce4f4c21d9dd2bfab18873a80449b9d9851efde8\nasset: v1p1beta1 remove SearchResources and SearchIamPolicies\n\nPiperOrigin-RevId: 295861722\n\ncb61d6c2d070b589980c779b68ffca617f789116\nasset: v1p1beta1 remove SearchResources and SearchIamPolicies\n\nPiperOrigin-RevId: 295855449\n\nab2685d8d3a0e191dc8aef83df36773c07cb3d06\nfix: Dataproc v1 - AutoscalingPolicy annotation\n\nThis adds the second resource name pattern to the\nAutoscalingPolicy resource.\n\nCommitter: @lukesneeringer\nPiperOrigin-RevId: 295738415\n\n8a1020bf6828f6e3c84c3014f2c51cb62b739140\nUpdate cloud asset api v1p4beta1.\n\nPiperOrigin-RevId: 295286165\n\n5cfa105206e77670369e4b2225597386aba32985\nAdd service control related proto build rule.\n\nPiperOrigin-RevId: 295262088\n\nee4dddf805072004ab19ac94df2ce669046eec26\nmonitoring v3: Add prefix \"https://cloud.google.com/\" into the link for global access\ncl 295167522, get ride of synth.py hacks\n\nPiperOrigin-RevId: 295238095\n\nd9835e922ea79eed8497db270d2f9f85099a519c\nUpdate some minor docs changes about user event proto\n\nPiperOrigin-RevId: 295185610\n\n5f311e416e69c170243de722023b22f3df89ec1c\nfix: use correct PHP package name in gapic configuration\n\nPiperOrigin-RevId: 295161330\n\n6cdd74dcdb071694da6a6b5a206e3a320b62dd11\npubsub: v1 add client config annotations and retry config\n\nPiperOrigin-RevId: 295158776\n\n" + "sha": "f0b581b5bdf803e45201ecdb3688b60e381628a8", + "internalRef": "299181282", + "log": "f0b581b5bdf803e45201ecdb3688b60e381628a8\nfix: recommendationengine/v1beta1 update some comments\n\nPiperOrigin-RevId: 299181282\n\n10e9a0a833dc85ff8f05b2c67ebe5ac785fe04ff\nbuild: add generated BUILD file for Routes Preferred API\n\nPiperOrigin-RevId: 299164808\n\n86738c956a8238d7c77f729be78b0ed887a6c913\npublish v1p1beta1: update with absolute address in comments\n\nPiperOrigin-RevId: 299152383\n\n73d9f2ad4591de45c2e1f352bc99d70cbd2a6d95\npublish v1: update with absolute address in comments\n\nPiperOrigin-RevId: 299147194\n\nd2158f24cb77b0b0ccfe68af784c6a628705e3c6\npublish v1beta2: update with absolute address in comments\n\nPiperOrigin-RevId: 299147086\n\n7fca61292c11b4cd5b352cee1a50bf88819dd63b\npublish v1p2beta1: update with absolute address in comments\n\nPiperOrigin-RevId: 299146903\n\n583b7321624736e2c490e328f4b1957335779295\npublish v1p3beta1: update with absolute address in comments\n\nPiperOrigin-RevId: 299146674\n\n638253bf86d1ce1c314108a089b7351440c2f0bf\nfix: add java_multiple_files option for automl text_sentiment.proto\n\nPiperOrigin-RevId: 298971070\n\n373d655703bf914fb8b0b1cc4071d772bac0e0d1\nUpdate Recs AI Beta public bazel file\n\nPiperOrigin-RevId: 298961623\n\ndcc5d00fc8a8d8b56f16194d7c682027b2c66a3b\nfix: add java_multiple_files option for automl classification.proto\n\nPiperOrigin-RevId: 298953301\n\na3f791827266f3496a6a5201d58adc4bb265c2a3\nchore: automl/v1 publish annotations and retry config\n\nPiperOrigin-RevId: 298942178\n\n01c681586d8d6dbd60155289b587aee678530bd9\nMark return_immediately in PullRequest deprecated.\n\nPiperOrigin-RevId: 298893281\n\nc9f5e9c4bfed54bbd09227e990e7bded5f90f31c\nRemove out of date documentation for predicate support on the Storage API\n\nPiperOrigin-RevId: 298883309\n\nfd5b3b8238d783b04692a113ffe07c0363f5de0f\ngenerate webrisk v1 proto\n\nPiperOrigin-RevId: 298847934\n\n541b1ded4abadcc38e8178680b0677f65594ea6f\nUpdate cloud asset api v1p4beta1.\n\nPiperOrigin-RevId: 298686266\n\nc0d171acecb4f5b0bfd2c4ca34fc54716574e300\n Updated to include the Notification v1 API.\n\nPiperOrigin-RevId: 298652775\n\n2346a9186c0bff2c9cc439f2459d558068637e05\nAdd Service Directory v1beta1 protos and configs\n\nPiperOrigin-RevId: 298625638\n\na78ed801b82a5c6d9c5368e24b1412212e541bb7\nPublishing v3 protos and configs.\n\nPiperOrigin-RevId: 298607357\n\n4a180bfff8a21645b3a935c2756e8d6ab18a74e0\nautoml/v1beta1 publish proto updates\n\nPiperOrigin-RevId: 298484782\n\n6de6e938b7df1cd62396563a067334abeedb9676\nchore: use the latest gapic-generator and protoc-java-resource-name-plugin in Bazel workspace.\n\nPiperOrigin-RevId: 298474513\n\n244ab2b83a82076a1fa7be63b7e0671af73f5c02\nAdds service config definition for bigqueryreservation v1\n\nPiperOrigin-RevId: 298455048\n\n" } }, { diff --git a/test/gapic-cluster_manager-v1.ts b/test/gapic-cluster_manager-v1.ts index 86f17dd..c7bbea8 100644 --- a/test/gapic-cluster_manager-v1.ts +++ b/test/gapic-cluster_manager-v1.ts @@ -83,12 +83,30 @@ describe('v1.ClusterManagerClient', () => { }); assert(client); }); + it('has initialize method and supports deferred initialization', async () => { + const client = new clustermanagerModule.v1.ClusterManagerClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + assert.strictEqual(client.clusterManagerStub, undefined); + await client.initialize(); + assert(client.clusterManagerStub); + }); + it('has close method', () => { + const client = new clustermanagerModule.v1.ClusterManagerClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.close(); + }); describe('listClusters', () => { it('invokes listClusters without error', done => { const client = new clustermanagerModule.v1.ClusterManagerClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IListClustersRequest = {}; request.parent = ''; @@ -112,6 +130,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IListClustersRequest = {}; request.parent = ''; @@ -137,6 +157,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IGetClusterRequest = {}; request.name = ''; @@ -160,6 +182,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IGetClusterRequest = {}; request.name = ''; @@ -185,6 +209,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ICreateClusterRequest = {}; request.parent = ''; @@ -208,6 +234,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ICreateClusterRequest = {}; request.parent = ''; @@ -233,6 +261,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IUpdateClusterRequest = {}; request.name = ''; @@ -256,6 +286,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IUpdateClusterRequest = {}; request.name = ''; @@ -281,6 +313,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IUpdateNodePoolRequest = {}; request.name = ''; @@ -304,6 +338,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IUpdateNodePoolRequest = {}; request.name = ''; @@ -329,6 +365,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetNodePoolAutoscalingRequest = {}; request.name = ''; @@ -352,6 +390,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetNodePoolAutoscalingRequest = {}; request.name = ''; @@ -377,6 +417,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetLoggingServiceRequest = {}; request.name = ''; @@ -400,6 +442,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetLoggingServiceRequest = {}; request.name = ''; @@ -425,6 +469,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetMonitoringServiceRequest = {}; request.name = ''; @@ -448,6 +494,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetMonitoringServiceRequest = {}; request.name = ''; @@ -473,6 +521,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetAddonsConfigRequest = {}; request.name = ''; @@ -496,6 +546,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetAddonsConfigRequest = {}; request.name = ''; @@ -521,6 +573,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetLocationsRequest = {}; request.name = ''; @@ -544,6 +598,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetLocationsRequest = {}; request.name = ''; @@ -569,6 +625,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IUpdateMasterRequest = {}; request.name = ''; @@ -592,6 +650,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IUpdateMasterRequest = {}; request.name = ''; @@ -617,6 +677,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetMasterAuthRequest = {}; request.name = ''; @@ -640,6 +702,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetMasterAuthRequest = {}; request.name = ''; @@ -665,6 +729,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IDeleteClusterRequest = {}; request.name = ''; @@ -688,6 +754,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IDeleteClusterRequest = {}; request.name = ''; @@ -713,6 +781,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IListOperationsRequest = {}; request.parent = ''; @@ -736,6 +806,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IListOperationsRequest = {}; request.parent = ''; @@ -761,6 +833,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IGetOperationRequest = {}; request.name = ''; @@ -784,6 +858,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IGetOperationRequest = {}; request.name = ''; @@ -809,6 +885,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ICancelOperationRequest = {}; request.name = ''; @@ -832,6 +910,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ICancelOperationRequest = {}; request.name = ''; @@ -857,6 +937,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IGetServerConfigRequest = {}; request.name = ''; @@ -880,6 +962,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IGetServerConfigRequest = {}; request.name = ''; @@ -905,6 +989,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IListNodePoolsRequest = {}; request.parent = ''; @@ -928,6 +1014,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IListNodePoolsRequest = {}; request.parent = ''; @@ -953,6 +1041,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IGetNodePoolRequest = {}; request.name = ''; @@ -976,6 +1066,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IGetNodePoolRequest = {}; request.name = ''; @@ -1001,6 +1093,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ICreateNodePoolRequest = {}; request.parent = ''; @@ -1024,6 +1118,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ICreateNodePoolRequest = {}; request.parent = ''; @@ -1049,6 +1145,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IDeleteNodePoolRequest = {}; request.name = ''; @@ -1072,6 +1170,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IDeleteNodePoolRequest = {}; request.name = ''; @@ -1097,6 +1197,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IRollbackNodePoolUpgradeRequest = {}; request.name = ''; @@ -1120,6 +1222,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IRollbackNodePoolUpgradeRequest = {}; request.name = ''; @@ -1148,6 +1252,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetNodePoolManagementRequest = {}; request.name = ''; @@ -1171,6 +1277,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetNodePoolManagementRequest = {}; request.name = ''; @@ -1196,6 +1304,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetLabelsRequest = {}; request.name = ''; @@ -1219,6 +1329,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetLabelsRequest = {}; request.name = ''; @@ -1244,6 +1356,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetLegacyAbacRequest = {}; request.name = ''; @@ -1267,6 +1381,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetLegacyAbacRequest = {}; request.name = ''; @@ -1292,6 +1408,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IStartIPRotationRequest = {}; request.name = ''; @@ -1315,6 +1433,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IStartIPRotationRequest = {}; request.name = ''; @@ -1340,6 +1460,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ICompleteIPRotationRequest = {}; request.name = ''; @@ -1363,6 +1485,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ICompleteIPRotationRequest = {}; request.name = ''; @@ -1388,6 +1512,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetNodePoolSizeRequest = {}; request.name = ''; @@ -1411,6 +1537,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetNodePoolSizeRequest = {}; request.name = ''; @@ -1436,6 +1564,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetNetworkPolicyRequest = {}; request.name = ''; @@ -1459,6 +1589,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetNetworkPolicyRequest = {}; request.name = ''; @@ -1484,6 +1616,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetMaintenancePolicyRequest = {}; request.name = ''; @@ -1507,6 +1641,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.ISetMaintenancePolicyRequest = {}; request.name = ''; @@ -1532,6 +1668,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IListUsableSubnetworksRequest = {}; request.parent = ''; @@ -1559,6 +1697,8 @@ describe('v1.ClusterManagerClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); + // Initialize client before mocking + client.initialize(); // Mock request const request: protosTypes.google.container.v1.IListUsableSubnetworksRequest = {}; request.parent = '';