-
Notifications
You must be signed in to change notification settings - Fork 591
/
asset_service.search_all_resources.js
207 lines (197 loc) · 9.03 KB
/
asset_service.search_all_resources.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
// Copyright 2022 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
//
// https://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.
//
// ** This file is automatically generated by gapic-generator-typescript. **
// ** https://github.com/googleapis/gapic-generator-typescript **
// ** All changes to this file may be overwritten. **
'use strict';
function main(scope) {
// [START cloudasset_v1_generated_AssetService_SearchAllResources_async]
/**
* This snippet has been automatically generated and should be regarded as a code template only.
* It will require modifications to work.
* It may require correct/in-range values for request initialization.
* TODO(developer): Uncomment these variables before running the sample.
*/
/**
* Required. A scope can be a project, a folder, or an organization. The search is
* limited to the resources within the `scope`. The caller must be granted the
* `cloudasset.assets.searchAllResources` (https://cloud.google.com/asset-inventory/docs/access-control#required_permissions)
* permission on the desired scope.
* The allowed values are:
* * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
* * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
* * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
* * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
*/
// const scope = 'abc123'
/**
* Optional. The query statement. See how to construct a
* query (https://cloud.google.com/asset-inventory/docs/searching-resources#how_to_construct_a_query)
* for more information. If not specified or empty, it will search all the
* resources within the specified `scope`.
* Examples:
* * `name:Important` to find Cloud resources whose name contains
* "Important" as a word.
* * `name=Important` to find the Cloud resource whose name is exactly
* "Important".
* * `displayName:Impor*` to find Cloud resources whose display name
* contains "Impor" as a prefix of any word in the field.
* * `location:us-west*` to find Cloud resources whose location contains both
* "us" and "west" as prefixes.
* * `labels:prod` to find Cloud resources whose labels contain "prod" as
* a key or value.
* * `labels.env:prod` to find Cloud resources that have a label "env"
* and its value is "prod".
* * `labels.env:*` to find Cloud resources that have a label "env".
* * `kmsKey:key` to find Cloud resources encrypted with a customer-managed
* encryption key whose name contains "key" as a word. This field is
* deprecated. Please use the `kmsKeys` field to retrieve KMS key
* information.
* * `kmsKeys:key` to find Cloud resources encrypted with customer-managed
* encryption keys whose name contains the word "key".
* * `relationships:instance-group-1` to find Cloud resources that have
* relationships with "instance-group-1" in the related resource name.
* * `relationships:INSTANCE_TO_INSTANCEGROUP` to find compute instances that
* have relationships of type "INSTANCE_TO_INSTANCEGROUP".
* * `relationships.INSTANCE_TO_INSTANCEGROUP:instance-group-1` to find
* compute instances that have relationships with "instance-group-1" in the
* compute instance group resource name, for relationship type
* "INSTANCE_TO_INSTANCEGROUP".
* * `state:ACTIVE` to find Cloud resources whose state contains "ACTIVE" as a
* word.
* * `NOT state:ACTIVE` to find Cloud resources whose state doesn't contain
* "ACTIVE" as a word.
* * `createTime<1609459200` to find Cloud resources that were created before
* "2021-01-01 00:00:00 UTC". 1609459200 is the epoch timestamp of
* "2021-01-01 00:00:00 UTC" in seconds.
* * `updateTime>1609459200` to find Cloud resources that were updated after
* "2021-01-01 00:00:00 UTC". 1609459200 is the epoch timestamp of
* "2021-01-01 00:00:00 UTC" in seconds.
* * `Important` to find Cloud resources that contain "Important" as a word
* in any of the searchable fields.
* * `Impor*` to find Cloud resources that contain "Impor" as a prefix of any
* word in any of the searchable fields.
* * `Important location:(us-west1 OR global)` to find Cloud
* resources that contain "Important" as a word in any of the searchable
* fields and are also located in the "us-west1" region or the "global"
* location.
*/
// const query = 'abc123'
/**
* Optional. A list of asset types that this request searches for. If empty, it will
* search all the searchable asset
* types (https://cloud.google.com/asset-inventory/docs/supported-asset-types#searchable_asset_types).
* Regular expressions are also supported. For example:
* * "compute.googleapis.com.*" snapshots resources whose asset type starts
* with "compute.googleapis.com".
* * ".*Instance" snapshots resources whose asset type ends with "Instance".
* * ".*Instance.*" snapshots resources whose asset type contains "Instance".
* See RE2 (https://github.com/google/re2/wiki/Syntax) for all supported
* regular expression syntax. If the regular expression does not match any
* supported asset type, an INVALID_ARGUMENT error will be returned.
*/
// const assetTypes = 'abc123'
/**
* Optional. The page size for search result pagination. Page size is capped at 500 even
* if a larger value is given. If set to zero, server will pick an appropriate
* default. Returned results may be fewer than requested. When this happens,
* there could be more results as long as `next_page_token` is returned.
*/
// const pageSize = 1234
/**
* Optional. If present, then retrieve the next batch of results from the preceding call
* to this method. `page_token` must be the value of `next_page_token` from
* the previous response. The values of all other method parameters, must be
* identical to those in the previous call.
*/
// const pageToken = 'abc123'
/**
* Optional. A comma-separated list of fields specifying the sorting order of the
* results. The default order is ascending. Add " DESC" after the field name
* to indicate descending order. Redundant space characters are ignored.
* Example: "location DESC, name".
* Only singular primitive fields in the response are sortable:
* * name
* * assetType
* * project
* * displayName
* * description
* * location
* * createTime
* * updateTime
* * state
* * parentFullResourceName
* * parentAssetType
* All the other fields such as repeated fields (e.g., `networkTags`,
* `kmsKeys`), map fields (e.g., `labels`) and struct fields (e.g.,
* `additionalAttributes`) are not supported.
*/
// const orderBy = 'abc123'
/**
* Optional. A comma-separated list of fields specifying which fields to be returned in
* ResourceSearchResult. Only '*' or combination of top level fields can be
* specified. Field names of both snake_case and camelCase are supported.
* Examples: `"*"`, `"name,location"`, `"name,versionedResources"`.
* The read_mask paths must be valid field paths listed but not limited to
* (both snake_case and camelCase are supported):
* * name
* * assetType
* * project
* * displayName
* * description
* * location
* * tagKeys
* * tagValues
* * tagValueIds
* * labels
* * networkTags
* * kmsKey (This field is deprecated. Please use the `kmsKeys` field to
* retrieve KMS key information.)
* * kmsKeys
* * createTime
* * updateTime
* * state
* * additionalAttributes
* * versionedResources
* If read_mask is not specified, all fields except versionedResources will
* be returned.
* If only '*' is specified, all fields including versionedResources will be
* returned.
* Any invalid field path will trigger INVALID_ARGUMENT error.
*/
// const readMask = {}
// Imports the Asset library
const {AssetServiceClient} = require('@google-cloud/asset').v1;
// Instantiates a client
const assetClient = new AssetServiceClient();
async function callSearchAllResources() {
// Construct request
const request = {
scope,
};
// Run request
const iterable = await assetClient.searchAllResourcesAsync(request);
for await (const response of iterable) {
console.log(response);
}
}
callSearchAllResources();
// [END cloudasset_v1_generated_AssetService_SearchAllResources_async]
}
process.on('unhandledRejection', err => {
console.error(err.message);
process.exitCode = 1;
});
main(...process.argv.slice(2));