1// Copyright 2020 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// https://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15// Code generated by protoc-gen-go_gapic. DO NOT EDIT. 16 17package datacatalog 18 19import ( 20 "context" 21 "fmt" 22 "math" 23 "net/url" 24 "time" 25 26 "github.com/golang/protobuf/proto" 27 gax "github.com/googleapis/gax-go/v2" 28 "google.golang.org/api/iterator" 29 "google.golang.org/api/option" 30 gtransport "google.golang.org/api/transport/grpc" 31 datacatalogpb "google.golang.org/genproto/googleapis/cloud/datacatalog/v1" 32 iampb "google.golang.org/genproto/googleapis/iam/v1" 33 "google.golang.org/grpc" 34 "google.golang.org/grpc/codes" 35 "google.golang.org/grpc/metadata" 36) 37 38var newClientHook clientHook 39 40// CallOptions contains the retry settings for each method of Client. 41type CallOptions struct { 42 SearchCatalog []gax.CallOption 43 CreateEntryGroup []gax.CallOption 44 GetEntryGroup []gax.CallOption 45 UpdateEntryGroup []gax.CallOption 46 DeleteEntryGroup []gax.CallOption 47 ListEntryGroups []gax.CallOption 48 CreateEntry []gax.CallOption 49 UpdateEntry []gax.CallOption 50 DeleteEntry []gax.CallOption 51 GetEntry []gax.CallOption 52 LookupEntry []gax.CallOption 53 ListEntries []gax.CallOption 54 CreateTagTemplate []gax.CallOption 55 GetTagTemplate []gax.CallOption 56 UpdateTagTemplate []gax.CallOption 57 DeleteTagTemplate []gax.CallOption 58 CreateTagTemplateField []gax.CallOption 59 UpdateTagTemplateField []gax.CallOption 60 RenameTagTemplateField []gax.CallOption 61 DeleteTagTemplateField []gax.CallOption 62 CreateTag []gax.CallOption 63 UpdateTag []gax.CallOption 64 DeleteTag []gax.CallOption 65 ListTags []gax.CallOption 66 SetIamPolicy []gax.CallOption 67 GetIamPolicy []gax.CallOption 68 TestIamPermissions []gax.CallOption 69} 70 71func defaultClientOptions() []option.ClientOption { 72 return []option.ClientOption{ 73 option.WithEndpoint("datacatalog.googleapis.com:443"), 74 option.WithGRPCDialOption(grpc.WithDisableServiceConfig()), 75 option.WithScopes(DefaultAuthScopes()...), 76 option.WithGRPCDialOption(grpc.WithDefaultCallOptions( 77 grpc.MaxCallRecvMsgSize(math.MaxInt32))), 78 } 79} 80 81func defaultCallOptions() *CallOptions { 82 return &CallOptions{ 83 SearchCatalog: []gax.CallOption{ 84 gax.WithRetry(func() gax.Retryer { 85 return gax.OnCodes([]codes.Code{ 86 codes.Unavailable, 87 }, gax.Backoff{ 88 Initial: 100 * time.Millisecond, 89 Max: 60000 * time.Millisecond, 90 Multiplier: 1.30, 91 }) 92 }), 93 }, 94 CreateEntryGroup: []gax.CallOption{}, 95 GetEntryGroup: []gax.CallOption{ 96 gax.WithRetry(func() gax.Retryer { 97 return gax.OnCodes([]codes.Code{ 98 codes.Unavailable, 99 }, gax.Backoff{ 100 Initial: 100 * time.Millisecond, 101 Max: 60000 * time.Millisecond, 102 Multiplier: 1.30, 103 }) 104 }), 105 }, 106 UpdateEntryGroup: []gax.CallOption{}, 107 DeleteEntryGroup: []gax.CallOption{}, 108 ListEntryGroups: []gax.CallOption{ 109 gax.WithRetry(func() gax.Retryer { 110 return gax.OnCodes([]codes.Code{ 111 codes.Unavailable, 112 }, gax.Backoff{ 113 Initial: 100 * time.Millisecond, 114 Max: 60000 * time.Millisecond, 115 Multiplier: 1.30, 116 }) 117 }), 118 }, 119 CreateEntry: []gax.CallOption{}, 120 UpdateEntry: []gax.CallOption{}, 121 DeleteEntry: []gax.CallOption{}, 122 GetEntry: []gax.CallOption{ 123 gax.WithRetry(func() gax.Retryer { 124 return gax.OnCodes([]codes.Code{ 125 codes.Unavailable, 126 }, gax.Backoff{ 127 Initial: 100 * time.Millisecond, 128 Max: 60000 * time.Millisecond, 129 Multiplier: 1.30, 130 }) 131 }), 132 }, 133 LookupEntry: []gax.CallOption{ 134 gax.WithRetry(func() gax.Retryer { 135 return gax.OnCodes([]codes.Code{ 136 codes.Unavailable, 137 }, gax.Backoff{ 138 Initial: 100 * time.Millisecond, 139 Max: 60000 * time.Millisecond, 140 Multiplier: 1.30, 141 }) 142 }), 143 }, 144 ListEntries: []gax.CallOption{ 145 gax.WithRetry(func() gax.Retryer { 146 return gax.OnCodes([]codes.Code{ 147 codes.Unavailable, 148 }, gax.Backoff{ 149 Initial: 100 * time.Millisecond, 150 Max: 60000 * time.Millisecond, 151 Multiplier: 1.30, 152 }) 153 }), 154 }, 155 CreateTagTemplate: []gax.CallOption{}, 156 GetTagTemplate: []gax.CallOption{}, 157 UpdateTagTemplate: []gax.CallOption{}, 158 DeleteTagTemplate: []gax.CallOption{}, 159 CreateTagTemplateField: []gax.CallOption{}, 160 UpdateTagTemplateField: []gax.CallOption{}, 161 RenameTagTemplateField: []gax.CallOption{}, 162 DeleteTagTemplateField: []gax.CallOption{}, 163 CreateTag: []gax.CallOption{}, 164 UpdateTag: []gax.CallOption{}, 165 DeleteTag: []gax.CallOption{}, 166 ListTags: []gax.CallOption{ 167 gax.WithRetry(func() gax.Retryer { 168 return gax.OnCodes([]codes.Code{ 169 codes.Unavailable, 170 }, gax.Backoff{ 171 Initial: 100 * time.Millisecond, 172 Max: 60000 * time.Millisecond, 173 Multiplier: 1.30, 174 }) 175 }), 176 }, 177 SetIamPolicy: []gax.CallOption{}, 178 GetIamPolicy: []gax.CallOption{ 179 gax.WithRetry(func() gax.Retryer { 180 return gax.OnCodes([]codes.Code{ 181 codes.Unavailable, 182 }, gax.Backoff{ 183 Initial: 100 * time.Millisecond, 184 Max: 60000 * time.Millisecond, 185 Multiplier: 1.30, 186 }) 187 }), 188 }, 189 TestIamPermissions: []gax.CallOption{}, 190 } 191} 192 193// Client is a client for interacting with Google Cloud Data Catalog API. 194// 195// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. 196type Client struct { 197 // Connection pool of gRPC connections to the service. 198 connPool gtransport.ConnPool 199 200 // The gRPC API client. 201 client datacatalogpb.DataCatalogClient 202 203 // The call options for this service. 204 CallOptions *CallOptions 205 206 // The x-goog-* metadata to be sent with each request. 207 xGoogMetadata metadata.MD 208} 209 210// NewClient creates a new data catalog client. 211// 212// Data Catalog API service allows clients to discover, understand, and manage 213// their data. 214func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) { 215 clientOpts := defaultClientOptions() 216 217 if newClientHook != nil { 218 hookOpts, err := newClientHook(ctx, clientHookParams{}) 219 if err != nil { 220 return nil, err 221 } 222 clientOpts = append(clientOpts, hookOpts...) 223 } 224 225 connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) 226 if err != nil { 227 return nil, err 228 } 229 c := &Client{ 230 connPool: connPool, 231 CallOptions: defaultCallOptions(), 232 233 client: datacatalogpb.NewDataCatalogClient(connPool), 234 } 235 c.setGoogleClientInfo() 236 237 return c, nil 238} 239 240// Connection returns a connection to the API service. 241// 242// Deprecated. 243func (c *Client) Connection() *grpc.ClientConn { 244 return c.connPool.Conn() 245} 246 247// Close closes the connection to the API service. The user should invoke this when 248// the client is no longer required. 249func (c *Client) Close() error { 250 return c.connPool.Close() 251} 252 253// setGoogleClientInfo sets the name and version of the application in 254// the `x-goog-api-client` header passed on each request. Intended for 255// use by Google-written clients. 256func (c *Client) setGoogleClientInfo(keyval ...string) { 257 kv := append([]string{"gl-go", versionGo()}, keyval...) 258 kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version) 259 c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...)) 260} 261 262// SearchCatalog searches Data Catalog for multiple resources like entries, tags that 263// match a query. 264// 265// This is a custom method 266// (https://cloud.google.com/apis/design/custom_methods (at https://cloud.google.com/apis/design/custom_methods)) and does not return 267// the complete resource, only the resource identifier and high level 268// fields. Clients can subsequentally call Get methods. 269// 270// Note that Data Catalog search queries do not guarantee full recall. Query 271// results that match your query may not be returned, even in subsequent 272// result pages. Also note that results returned (and not returned) can vary 273// across repeated search queries. 274// 275// See Data Catalog Search 276// Syntax (at https://cloud.google.com/data-catalog/docs/how-to/search-reference) 277// for more information. 278func (c *Client) SearchCatalog(ctx context.Context, req *datacatalogpb.SearchCatalogRequest, opts ...gax.CallOption) *SearchCatalogResultIterator { 279 ctx = insertMetadata(ctx, c.xGoogMetadata) 280 opts = append(c.CallOptions.SearchCatalog[0:len(c.CallOptions.SearchCatalog):len(c.CallOptions.SearchCatalog)], opts...) 281 it := &SearchCatalogResultIterator{} 282 req = proto.Clone(req).(*datacatalogpb.SearchCatalogRequest) 283 it.InternalFetch = func(pageSize int, pageToken string) ([]*datacatalogpb.SearchCatalogResult, string, error) { 284 var resp *datacatalogpb.SearchCatalogResponse 285 req.PageToken = pageToken 286 if pageSize > math.MaxInt32 { 287 req.PageSize = math.MaxInt32 288 } else { 289 req.PageSize = int32(pageSize) 290 } 291 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 292 var err error 293 resp, err = c.client.SearchCatalog(ctx, req, settings.GRPC...) 294 return err 295 }, opts...) 296 if err != nil { 297 return nil, "", err 298 } 299 300 it.Response = resp 301 return resp.Results, resp.NextPageToken, nil 302 } 303 fetch := func(pageSize int, pageToken string) (string, error) { 304 items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) 305 if err != nil { 306 return "", err 307 } 308 it.items = append(it.items, items...) 309 return nextPageToken, nil 310 } 311 it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) 312 it.pageInfo.MaxSize = int(req.PageSize) 313 it.pageInfo.Token = req.PageToken 314 return it 315} 316 317// CreateEntryGroup creates an EntryGroup. 318// 319// An entry group contains logically related entries together with Cloud 320// Identity and Access Management policies that specify the users who can 321// create, edit, and view entries within the entry group. 322// 323// Data Catalog automatically creates an entry group for BigQuery entries 324// (“@bigquery”) and Pub/Sub topics ("@pubsub"). Users create their own entry 325// group to contain Cloud Storage fileset entries or custom type entries, 326// and the IAM policies associated with those entries. Entry groups, like 327// entries, can be searched. 328// 329// A maximum of 10,000 entry groups may be created per organization across all 330// locations. 331// 332// Users should enable the Data Catalog API in the project identified by 333// the parent parameter (see [Data Catalog Resource Project] 334// (https://cloud.google.com/data-catalog/docs/concepts/resource-project (at https://cloud.google.com/data-catalog/docs/concepts/resource-project)) for 335// more information). 336func (c *Client) CreateEntryGroup(ctx context.Context, req *datacatalogpb.CreateEntryGroupRequest, opts ...gax.CallOption) (*datacatalogpb.EntryGroup, error) { 337 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 338 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 339 opts = append(c.CallOptions.CreateEntryGroup[0:len(c.CallOptions.CreateEntryGroup):len(c.CallOptions.CreateEntryGroup)], opts...) 340 var resp *datacatalogpb.EntryGroup 341 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 342 var err error 343 resp, err = c.client.CreateEntryGroup(ctx, req, settings.GRPC...) 344 return err 345 }, opts...) 346 if err != nil { 347 return nil, err 348 } 349 return resp, nil 350} 351 352// GetEntryGroup gets an EntryGroup. 353func (c *Client) GetEntryGroup(ctx context.Context, req *datacatalogpb.GetEntryGroupRequest, opts ...gax.CallOption) (*datacatalogpb.EntryGroup, error) { 354 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 355 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 356 opts = append(c.CallOptions.GetEntryGroup[0:len(c.CallOptions.GetEntryGroup):len(c.CallOptions.GetEntryGroup)], opts...) 357 var resp *datacatalogpb.EntryGroup 358 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 359 var err error 360 resp, err = c.client.GetEntryGroup(ctx, req, settings.GRPC...) 361 return err 362 }, opts...) 363 if err != nil { 364 return nil, err 365 } 366 return resp, nil 367} 368 369// UpdateEntryGroup updates an EntryGroup. The user should enable the Data Catalog API in the 370// project identified by the entry_group.name parameter (see [Data Catalog 371// Resource Project] 372// (https://cloud.google.com/data-catalog/docs/concepts/resource-project (at https://cloud.google.com/data-catalog/docs/concepts/resource-project)) for 373// more information). 374func (c *Client) UpdateEntryGroup(ctx context.Context, req *datacatalogpb.UpdateEntryGroupRequest, opts ...gax.CallOption) (*datacatalogpb.EntryGroup, error) { 375 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "entry_group.name", url.QueryEscape(req.GetEntryGroup().GetName()))) 376 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 377 opts = append(c.CallOptions.UpdateEntryGroup[0:len(c.CallOptions.UpdateEntryGroup):len(c.CallOptions.UpdateEntryGroup)], opts...) 378 var resp *datacatalogpb.EntryGroup 379 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 380 var err error 381 resp, err = c.client.UpdateEntryGroup(ctx, req, settings.GRPC...) 382 return err 383 }, opts...) 384 if err != nil { 385 return nil, err 386 } 387 return resp, nil 388} 389 390// DeleteEntryGroup deletes an EntryGroup. Only entry groups that do not contain entries can be 391// deleted. Users should enable the Data Catalog API in the project 392// identified by the name parameter (see [Data Catalog Resource Project] 393// (https://cloud.google.com/data-catalog/docs/concepts/resource-project (at https://cloud.google.com/data-catalog/docs/concepts/resource-project)) for 394// more information). 395func (c *Client) DeleteEntryGroup(ctx context.Context, req *datacatalogpb.DeleteEntryGroupRequest, opts ...gax.CallOption) error { 396 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 397 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 398 opts = append(c.CallOptions.DeleteEntryGroup[0:len(c.CallOptions.DeleteEntryGroup):len(c.CallOptions.DeleteEntryGroup)], opts...) 399 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 400 var err error 401 _, err = c.client.DeleteEntryGroup(ctx, req, settings.GRPC...) 402 return err 403 }, opts...) 404 return err 405} 406 407// ListEntryGroups lists entry groups. 408func (c *Client) ListEntryGroups(ctx context.Context, req *datacatalogpb.ListEntryGroupsRequest, opts ...gax.CallOption) *EntryGroupIterator { 409 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 410 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 411 opts = append(c.CallOptions.ListEntryGroups[0:len(c.CallOptions.ListEntryGroups):len(c.CallOptions.ListEntryGroups)], opts...) 412 it := &EntryGroupIterator{} 413 req = proto.Clone(req).(*datacatalogpb.ListEntryGroupsRequest) 414 it.InternalFetch = func(pageSize int, pageToken string) ([]*datacatalogpb.EntryGroup, string, error) { 415 var resp *datacatalogpb.ListEntryGroupsResponse 416 req.PageToken = pageToken 417 if pageSize > math.MaxInt32 { 418 req.PageSize = math.MaxInt32 419 } else { 420 req.PageSize = int32(pageSize) 421 } 422 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 423 var err error 424 resp, err = c.client.ListEntryGroups(ctx, req, settings.GRPC...) 425 return err 426 }, opts...) 427 if err != nil { 428 return nil, "", err 429 } 430 431 it.Response = resp 432 return resp.EntryGroups, resp.NextPageToken, nil 433 } 434 fetch := func(pageSize int, pageToken string) (string, error) { 435 items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) 436 if err != nil { 437 return "", err 438 } 439 it.items = append(it.items, items...) 440 return nextPageToken, nil 441 } 442 it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) 443 it.pageInfo.MaxSize = int(req.PageSize) 444 it.pageInfo.Token = req.PageToken 445 return it 446} 447 448// CreateEntry creates an entry. Only entries of ‘FILESET’ type or user-specified type can 449// be created. 450// 451// Users should enable the Data Catalog API in the project identified by 452// the parent parameter (see [Data Catalog Resource Project] 453// (https://cloud.google.com/data-catalog/docs/concepts/resource-project (at https://cloud.google.com/data-catalog/docs/concepts/resource-project)) for 454// more information). 455// 456// A maximum of 100,000 entries may be created per entry group. 457func (c *Client) CreateEntry(ctx context.Context, req *datacatalogpb.CreateEntryRequest, opts ...gax.CallOption) (*datacatalogpb.Entry, error) { 458 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 459 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 460 opts = append(c.CallOptions.CreateEntry[0:len(c.CallOptions.CreateEntry):len(c.CallOptions.CreateEntry)], opts...) 461 var resp *datacatalogpb.Entry 462 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 463 var err error 464 resp, err = c.client.CreateEntry(ctx, req, settings.GRPC...) 465 return err 466 }, opts...) 467 if err != nil { 468 return nil, err 469 } 470 return resp, nil 471} 472 473// UpdateEntry updates an existing entry. 474// Users should enable the Data Catalog API in the project identified by 475// the entry.name parameter (see [Data Catalog Resource Project] 476// (https://cloud.google.com/data-catalog/docs/concepts/resource-project (at https://cloud.google.com/data-catalog/docs/concepts/resource-project)) for 477// more information). 478func (c *Client) UpdateEntry(ctx context.Context, req *datacatalogpb.UpdateEntryRequest, opts ...gax.CallOption) (*datacatalogpb.Entry, error) { 479 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "entry.name", url.QueryEscape(req.GetEntry().GetName()))) 480 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 481 opts = append(c.CallOptions.UpdateEntry[0:len(c.CallOptions.UpdateEntry):len(c.CallOptions.UpdateEntry)], opts...) 482 var resp *datacatalogpb.Entry 483 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 484 var err error 485 resp, err = c.client.UpdateEntry(ctx, req, settings.GRPC...) 486 return err 487 }, opts...) 488 if err != nil { 489 return nil, err 490 } 491 return resp, nil 492} 493 494// DeleteEntry deletes an existing entry. Only entries created through 495// CreateEntry 496// method can be deleted. 497// Users should enable the Data Catalog API in the project identified by 498// the name parameter (see [Data Catalog Resource Project] 499// (https://cloud.google.com/data-catalog/docs/concepts/resource-project (at https://cloud.google.com/data-catalog/docs/concepts/resource-project)) for 500// more information). 501func (c *Client) DeleteEntry(ctx context.Context, req *datacatalogpb.DeleteEntryRequest, opts ...gax.CallOption) error { 502 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 503 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 504 opts = append(c.CallOptions.DeleteEntry[0:len(c.CallOptions.DeleteEntry):len(c.CallOptions.DeleteEntry)], opts...) 505 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 506 var err error 507 _, err = c.client.DeleteEntry(ctx, req, settings.GRPC...) 508 return err 509 }, opts...) 510 return err 511} 512 513// GetEntry gets an entry. 514func (c *Client) GetEntry(ctx context.Context, req *datacatalogpb.GetEntryRequest, opts ...gax.CallOption) (*datacatalogpb.Entry, error) { 515 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 516 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 517 opts = append(c.CallOptions.GetEntry[0:len(c.CallOptions.GetEntry):len(c.CallOptions.GetEntry)], opts...) 518 var resp *datacatalogpb.Entry 519 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 520 var err error 521 resp, err = c.client.GetEntry(ctx, req, settings.GRPC...) 522 return err 523 }, opts...) 524 if err != nil { 525 return nil, err 526 } 527 return resp, nil 528} 529 530// LookupEntry get an entry by target resource name. This method allows clients to use 531// the resource name from the source Google Cloud Platform service to get the 532// Data Catalog Entry. 533func (c *Client) LookupEntry(ctx context.Context, req *datacatalogpb.LookupEntryRequest, opts ...gax.CallOption) (*datacatalogpb.Entry, error) { 534 ctx = insertMetadata(ctx, c.xGoogMetadata) 535 opts = append(c.CallOptions.LookupEntry[0:len(c.CallOptions.LookupEntry):len(c.CallOptions.LookupEntry)], opts...) 536 var resp *datacatalogpb.Entry 537 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 538 var err error 539 resp, err = c.client.LookupEntry(ctx, req, settings.GRPC...) 540 return err 541 }, opts...) 542 if err != nil { 543 return nil, err 544 } 545 return resp, nil 546} 547 548// ListEntries lists entries. 549func (c *Client) ListEntries(ctx context.Context, req *datacatalogpb.ListEntriesRequest, opts ...gax.CallOption) *EntryIterator { 550 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 551 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 552 opts = append(c.CallOptions.ListEntries[0:len(c.CallOptions.ListEntries):len(c.CallOptions.ListEntries)], opts...) 553 it := &EntryIterator{} 554 req = proto.Clone(req).(*datacatalogpb.ListEntriesRequest) 555 it.InternalFetch = func(pageSize int, pageToken string) ([]*datacatalogpb.Entry, string, error) { 556 var resp *datacatalogpb.ListEntriesResponse 557 req.PageToken = pageToken 558 if pageSize > math.MaxInt32 { 559 req.PageSize = math.MaxInt32 560 } else { 561 req.PageSize = int32(pageSize) 562 } 563 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 564 var err error 565 resp, err = c.client.ListEntries(ctx, req, settings.GRPC...) 566 return err 567 }, opts...) 568 if err != nil { 569 return nil, "", err 570 } 571 572 it.Response = resp 573 return resp.Entries, resp.NextPageToken, nil 574 } 575 fetch := func(pageSize int, pageToken string) (string, error) { 576 items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) 577 if err != nil { 578 return "", err 579 } 580 it.items = append(it.items, items...) 581 return nextPageToken, nil 582 } 583 it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) 584 it.pageInfo.MaxSize = int(req.PageSize) 585 it.pageInfo.Token = req.PageToken 586 return it 587} 588 589// CreateTagTemplate creates a tag template. The user should enable the Data Catalog API in 590// the project identified by the parent parameter (see Data Catalog 591// Resource 592// Project (at https://cloud.google.com/data-catalog/docs/concepts/resource-project) 593// for more information). 594func (c *Client) CreateTagTemplate(ctx context.Context, req *datacatalogpb.CreateTagTemplateRequest, opts ...gax.CallOption) (*datacatalogpb.TagTemplate, error) { 595 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 596 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 597 opts = append(c.CallOptions.CreateTagTemplate[0:len(c.CallOptions.CreateTagTemplate):len(c.CallOptions.CreateTagTemplate)], opts...) 598 var resp *datacatalogpb.TagTemplate 599 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 600 var err error 601 resp, err = c.client.CreateTagTemplate(ctx, req, settings.GRPC...) 602 return err 603 }, opts...) 604 if err != nil { 605 return nil, err 606 } 607 return resp, nil 608} 609 610// GetTagTemplate gets a tag template. 611func (c *Client) GetTagTemplate(ctx context.Context, req *datacatalogpb.GetTagTemplateRequest, opts ...gax.CallOption) (*datacatalogpb.TagTemplate, error) { 612 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 613 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 614 opts = append(c.CallOptions.GetTagTemplate[0:len(c.CallOptions.GetTagTemplate):len(c.CallOptions.GetTagTemplate)], opts...) 615 var resp *datacatalogpb.TagTemplate 616 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 617 var err error 618 resp, err = c.client.GetTagTemplate(ctx, req, settings.GRPC...) 619 return err 620 }, opts...) 621 if err != nil { 622 return nil, err 623 } 624 return resp, nil 625} 626 627// UpdateTagTemplate updates a tag template. This method cannot be used to update the fields of 628// a template. The tag template fields are represented as separate resources 629// and should be updated using their own create/update/delete methods. 630// Users should enable the Data Catalog API in the project identified by 631// the tag_template.name parameter (see [Data Catalog Resource Project] 632// (https://cloud.google.com/data-catalog/docs/concepts/resource-project (at https://cloud.google.com/data-catalog/docs/concepts/resource-project)) for 633// more information). 634func (c *Client) UpdateTagTemplate(ctx context.Context, req *datacatalogpb.UpdateTagTemplateRequest, opts ...gax.CallOption) (*datacatalogpb.TagTemplate, error) { 635 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "tag_template.name", url.QueryEscape(req.GetTagTemplate().GetName()))) 636 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 637 opts = append(c.CallOptions.UpdateTagTemplate[0:len(c.CallOptions.UpdateTagTemplate):len(c.CallOptions.UpdateTagTemplate)], opts...) 638 var resp *datacatalogpb.TagTemplate 639 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 640 var err error 641 resp, err = c.client.UpdateTagTemplate(ctx, req, settings.GRPC...) 642 return err 643 }, opts...) 644 if err != nil { 645 return nil, err 646 } 647 return resp, nil 648} 649 650// DeleteTagTemplate deletes a tag template and all tags using the template. 651// Users should enable the Data Catalog API in the project identified by 652// the name parameter (see [Data Catalog Resource Project] 653// (https://cloud.google.com/data-catalog/docs/concepts/resource-project (at https://cloud.google.com/data-catalog/docs/concepts/resource-project)) for 654// more information). 655func (c *Client) DeleteTagTemplate(ctx context.Context, req *datacatalogpb.DeleteTagTemplateRequest, opts ...gax.CallOption) error { 656 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 657 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 658 opts = append(c.CallOptions.DeleteTagTemplate[0:len(c.CallOptions.DeleteTagTemplate):len(c.CallOptions.DeleteTagTemplate)], opts...) 659 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 660 var err error 661 _, err = c.client.DeleteTagTemplate(ctx, req, settings.GRPC...) 662 return err 663 }, opts...) 664 return err 665} 666 667// CreateTagTemplateField creates a field in a tag template. The user should enable the Data Catalog 668// API in the project identified by the parent parameter (see 669// Data Catalog Resource 670// Project (at https://cloud.google.com/data-catalog/docs/concepts/resource-project) 671// for more information). 672func (c *Client) CreateTagTemplateField(ctx context.Context, req *datacatalogpb.CreateTagTemplateFieldRequest, opts ...gax.CallOption) (*datacatalogpb.TagTemplateField, error) { 673 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 674 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 675 opts = append(c.CallOptions.CreateTagTemplateField[0:len(c.CallOptions.CreateTagTemplateField):len(c.CallOptions.CreateTagTemplateField)], opts...) 676 var resp *datacatalogpb.TagTemplateField 677 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 678 var err error 679 resp, err = c.client.CreateTagTemplateField(ctx, req, settings.GRPC...) 680 return err 681 }, opts...) 682 if err != nil { 683 return nil, err 684 } 685 return resp, nil 686} 687 688// UpdateTagTemplateField updates a field in a tag template. This method cannot be used to update the 689// field type. Users should enable the Data Catalog API in the project 690// identified by the name parameter (see [Data Catalog Resource Project] 691// (https://cloud.google.com/data-catalog/docs/concepts/resource-project (at https://cloud.google.com/data-catalog/docs/concepts/resource-project)) for 692// more information). 693func (c *Client) UpdateTagTemplateField(ctx context.Context, req *datacatalogpb.UpdateTagTemplateFieldRequest, opts ...gax.CallOption) (*datacatalogpb.TagTemplateField, error) { 694 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 695 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 696 opts = append(c.CallOptions.UpdateTagTemplateField[0:len(c.CallOptions.UpdateTagTemplateField):len(c.CallOptions.UpdateTagTemplateField)], opts...) 697 var resp *datacatalogpb.TagTemplateField 698 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 699 var err error 700 resp, err = c.client.UpdateTagTemplateField(ctx, req, settings.GRPC...) 701 return err 702 }, opts...) 703 if err != nil { 704 return nil, err 705 } 706 return resp, nil 707} 708 709// RenameTagTemplateField renames a field in a tag template. The user should enable the Data Catalog 710// API in the project identified by the name parameter (see Data Catalog 711// Resource 712// Project (at https://cloud.google.com/data-catalog/docs/concepts/resource-project) 713// for more information). 714func (c *Client) RenameTagTemplateField(ctx context.Context, req *datacatalogpb.RenameTagTemplateFieldRequest, opts ...gax.CallOption) (*datacatalogpb.TagTemplateField, error) { 715 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 716 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 717 opts = append(c.CallOptions.RenameTagTemplateField[0:len(c.CallOptions.RenameTagTemplateField):len(c.CallOptions.RenameTagTemplateField)], opts...) 718 var resp *datacatalogpb.TagTemplateField 719 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 720 var err error 721 resp, err = c.client.RenameTagTemplateField(ctx, req, settings.GRPC...) 722 return err 723 }, opts...) 724 if err != nil { 725 return nil, err 726 } 727 return resp, nil 728} 729 730// DeleteTagTemplateField deletes a field in a tag template and all uses of that field. 731// Users should enable the Data Catalog API in the project identified by 732// the name parameter (see [Data Catalog Resource Project] 733// (https://cloud.google.com/data-catalog/docs/concepts/resource-project (at https://cloud.google.com/data-catalog/docs/concepts/resource-project)) for 734// more information). 735func (c *Client) DeleteTagTemplateField(ctx context.Context, req *datacatalogpb.DeleteTagTemplateFieldRequest, opts ...gax.CallOption) error { 736 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 737 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 738 opts = append(c.CallOptions.DeleteTagTemplateField[0:len(c.CallOptions.DeleteTagTemplateField):len(c.CallOptions.DeleteTagTemplateField)], opts...) 739 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 740 var err error 741 _, err = c.client.DeleteTagTemplateField(ctx, req, settings.GRPC...) 742 return err 743 }, opts...) 744 return err 745} 746 747// CreateTag creates a tag on an Entry. 748// Note: The project identified by the parent parameter for the 749// tag (at https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.entryGroups.entries.tags/create#path-parameters) 750// and the 751// tag 752// template (at https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.tagTemplates/create#path-parameters) 753// used to create the tag must be from the same organization. 754func (c *Client) CreateTag(ctx context.Context, req *datacatalogpb.CreateTagRequest, opts ...gax.CallOption) (*datacatalogpb.Tag, error) { 755 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 756 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 757 opts = append(c.CallOptions.CreateTag[0:len(c.CallOptions.CreateTag):len(c.CallOptions.CreateTag)], opts...) 758 var resp *datacatalogpb.Tag 759 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 760 var err error 761 resp, err = c.client.CreateTag(ctx, req, settings.GRPC...) 762 return err 763 }, opts...) 764 if err != nil { 765 return nil, err 766 } 767 return resp, nil 768} 769 770// UpdateTag updates an existing tag. 771func (c *Client) UpdateTag(ctx context.Context, req *datacatalogpb.UpdateTagRequest, opts ...gax.CallOption) (*datacatalogpb.Tag, error) { 772 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "tag.name", url.QueryEscape(req.GetTag().GetName()))) 773 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 774 opts = append(c.CallOptions.UpdateTag[0:len(c.CallOptions.UpdateTag):len(c.CallOptions.UpdateTag)], opts...) 775 var resp *datacatalogpb.Tag 776 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 777 var err error 778 resp, err = c.client.UpdateTag(ctx, req, settings.GRPC...) 779 return err 780 }, opts...) 781 if err != nil { 782 return nil, err 783 } 784 return resp, nil 785} 786 787// DeleteTag deletes a tag. 788func (c *Client) DeleteTag(ctx context.Context, req *datacatalogpb.DeleteTagRequest, opts ...gax.CallOption) error { 789 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 790 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 791 opts = append(c.CallOptions.DeleteTag[0:len(c.CallOptions.DeleteTag):len(c.CallOptions.DeleteTag)], opts...) 792 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 793 var err error 794 _, err = c.client.DeleteTag(ctx, req, settings.GRPC...) 795 return err 796 }, opts...) 797 return err 798} 799 800// ListTags lists the tags on an Entry. 801func (c *Client) ListTags(ctx context.Context, req *datacatalogpb.ListTagsRequest, opts ...gax.CallOption) *TagIterator { 802 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 803 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 804 opts = append(c.CallOptions.ListTags[0:len(c.CallOptions.ListTags):len(c.CallOptions.ListTags)], opts...) 805 it := &TagIterator{} 806 req = proto.Clone(req).(*datacatalogpb.ListTagsRequest) 807 it.InternalFetch = func(pageSize int, pageToken string) ([]*datacatalogpb.Tag, string, error) { 808 var resp *datacatalogpb.ListTagsResponse 809 req.PageToken = pageToken 810 if pageSize > math.MaxInt32 { 811 req.PageSize = math.MaxInt32 812 } else { 813 req.PageSize = int32(pageSize) 814 } 815 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 816 var err error 817 resp, err = c.client.ListTags(ctx, req, settings.GRPC...) 818 return err 819 }, opts...) 820 if err != nil { 821 return nil, "", err 822 } 823 824 it.Response = resp 825 return resp.Tags, resp.NextPageToken, nil 826 } 827 fetch := func(pageSize int, pageToken string) (string, error) { 828 items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) 829 if err != nil { 830 return "", err 831 } 832 it.items = append(it.items, items...) 833 return nextPageToken, nil 834 } 835 it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) 836 it.pageInfo.MaxSize = int(req.PageSize) 837 it.pageInfo.Token = req.PageToken 838 return it 839} 840 841// SetIamPolicy sets the access control policy for a resource. Replaces any existing 842// policy. 843// Supported resources are: 844// 845// Tag templates. 846// 847// Entries. 848// 849// Entry groups. 850// Note, this method cannot be used to manage policies for BigQuery, Pub/Sub 851// and any external Google Cloud Platform resources synced to Data Catalog. 852// 853// Callers must have following Google IAM permission 854// 855// datacatalog.tagTemplates.setIamPolicy to set policies on tag 856// templates. 857// 858// datacatalog.entries.setIamPolicy to set policies on entries. 859// 860// datacatalog.entryGroups.setIamPolicy to set policies on entry groups. 861func (c *Client) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { 862 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))) 863 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 864 opts = append(c.CallOptions.SetIamPolicy[0:len(c.CallOptions.SetIamPolicy):len(c.CallOptions.SetIamPolicy)], opts...) 865 var resp *iampb.Policy 866 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 867 var err error 868 resp, err = c.client.SetIamPolicy(ctx, req, settings.GRPC...) 869 return err 870 }, opts...) 871 if err != nil { 872 return nil, err 873 } 874 return resp, nil 875} 876 877// GetIamPolicy gets the access control policy for a resource. A NOT_FOUND error 878// is returned if the resource does not exist. An empty policy is returned 879// if the resource exists but does not have a policy set on it. 880// 881// Supported resources are: 882// 883// Tag templates. 884// 885// Entries. 886// 887// Entry groups. 888// Note, this method cannot be used to manage policies for BigQuery, Pub/Sub 889// and any external Google Cloud Platform resources synced to Data Catalog. 890// 891// Callers must have following Google IAM permission 892// 893// datacatalog.tagTemplates.getIamPolicy to get policies on tag 894// templates. 895// 896// datacatalog.entries.getIamPolicy to get policies on entries. 897// 898// datacatalog.entryGroups.getIamPolicy to get policies on entry groups. 899func (c *Client) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { 900 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))) 901 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 902 opts = append(c.CallOptions.GetIamPolicy[0:len(c.CallOptions.GetIamPolicy):len(c.CallOptions.GetIamPolicy)], opts...) 903 var resp *iampb.Policy 904 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 905 var err error 906 resp, err = c.client.GetIamPolicy(ctx, req, settings.GRPC...) 907 return err 908 }, opts...) 909 if err != nil { 910 return nil, err 911 } 912 return resp, nil 913} 914 915// TestIamPermissions returns the caller’s permissions on a resource. 916// If the resource does not exist, an empty set of permissions is returned 917// (We don’t return a NOT_FOUND error). 918// 919// Supported resources are: 920// 921// Tag templates. 922// 923// Entries. 924// 925// Entry groups. 926// Note, this method cannot be used to manage policies for BigQuery, Pub/Sub 927// and any external Google Cloud Platform resources synced to Data Catalog. 928// 929// A caller is not required to have Google IAM permission to make this 930// request. 931func (c *Client) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest, opts ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) { 932 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))) 933 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 934 opts = append(c.CallOptions.TestIamPermissions[0:len(c.CallOptions.TestIamPermissions):len(c.CallOptions.TestIamPermissions)], opts...) 935 var resp *iampb.TestIamPermissionsResponse 936 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 937 var err error 938 resp, err = c.client.TestIamPermissions(ctx, req, settings.GRPC...) 939 return err 940 }, opts...) 941 if err != nil { 942 return nil, err 943 } 944 return resp, nil 945} 946 947// EntryGroupIterator manages a stream of *datacatalogpb.EntryGroup. 948type EntryGroupIterator struct { 949 items []*datacatalogpb.EntryGroup 950 pageInfo *iterator.PageInfo 951 nextFunc func() error 952 953 // Response is the raw response for the current page. 954 // It must be cast to the RPC response type. 955 // Calling Next() or InternalFetch() updates this value. 956 Response interface{} 957 958 // InternalFetch is for use by the Google Cloud Libraries only. 959 // It is not part of the stable interface of this package. 960 // 961 // InternalFetch returns results from a single call to the underlying RPC. 962 // The number of results is no greater than pageSize. 963 // If there are no more results, nextPageToken is empty and err is nil. 964 InternalFetch func(pageSize int, pageToken string) (results []*datacatalogpb.EntryGroup, nextPageToken string, err error) 965} 966 967// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. 968func (it *EntryGroupIterator) PageInfo() *iterator.PageInfo { 969 return it.pageInfo 970} 971 972// Next returns the next result. Its second return value is iterator.Done if there are no more 973// results. Once Next returns Done, all subsequent calls will return Done. 974func (it *EntryGroupIterator) Next() (*datacatalogpb.EntryGroup, error) { 975 var item *datacatalogpb.EntryGroup 976 if err := it.nextFunc(); err != nil { 977 return item, err 978 } 979 item = it.items[0] 980 it.items = it.items[1:] 981 return item, nil 982} 983 984func (it *EntryGroupIterator) bufLen() int { 985 return len(it.items) 986} 987 988func (it *EntryGroupIterator) takeBuf() interface{} { 989 b := it.items 990 it.items = nil 991 return b 992} 993 994// EntryIterator manages a stream of *datacatalogpb.Entry. 995type EntryIterator struct { 996 items []*datacatalogpb.Entry 997 pageInfo *iterator.PageInfo 998 nextFunc func() error 999 1000 // Response is the raw response for the current page. 1001 // It must be cast to the RPC response type. 1002 // Calling Next() or InternalFetch() updates this value. 1003 Response interface{} 1004 1005 // InternalFetch is for use by the Google Cloud Libraries only. 1006 // It is not part of the stable interface of this package. 1007 // 1008 // InternalFetch returns results from a single call to the underlying RPC. 1009 // The number of results is no greater than pageSize. 1010 // If there are no more results, nextPageToken is empty and err is nil. 1011 InternalFetch func(pageSize int, pageToken string) (results []*datacatalogpb.Entry, nextPageToken string, err error) 1012} 1013 1014// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. 1015func (it *EntryIterator) PageInfo() *iterator.PageInfo { 1016 return it.pageInfo 1017} 1018 1019// Next returns the next result. Its second return value is iterator.Done if there are no more 1020// results. Once Next returns Done, all subsequent calls will return Done. 1021func (it *EntryIterator) Next() (*datacatalogpb.Entry, error) { 1022 var item *datacatalogpb.Entry 1023 if err := it.nextFunc(); err != nil { 1024 return item, err 1025 } 1026 item = it.items[0] 1027 it.items = it.items[1:] 1028 return item, nil 1029} 1030 1031func (it *EntryIterator) bufLen() int { 1032 return len(it.items) 1033} 1034 1035func (it *EntryIterator) takeBuf() interface{} { 1036 b := it.items 1037 it.items = nil 1038 return b 1039} 1040 1041// SearchCatalogResultIterator manages a stream of *datacatalogpb.SearchCatalogResult. 1042type SearchCatalogResultIterator struct { 1043 items []*datacatalogpb.SearchCatalogResult 1044 pageInfo *iterator.PageInfo 1045 nextFunc func() error 1046 1047 // Response is the raw response for the current page. 1048 // It must be cast to the RPC response type. 1049 // Calling Next() or InternalFetch() updates this value. 1050 Response interface{} 1051 1052 // InternalFetch is for use by the Google Cloud Libraries only. 1053 // It is not part of the stable interface of this package. 1054 // 1055 // InternalFetch returns results from a single call to the underlying RPC. 1056 // The number of results is no greater than pageSize. 1057 // If there are no more results, nextPageToken is empty and err is nil. 1058 InternalFetch func(pageSize int, pageToken string) (results []*datacatalogpb.SearchCatalogResult, nextPageToken string, err error) 1059} 1060 1061// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. 1062func (it *SearchCatalogResultIterator) PageInfo() *iterator.PageInfo { 1063 return it.pageInfo 1064} 1065 1066// Next returns the next result. Its second return value is iterator.Done if there are no more 1067// results. Once Next returns Done, all subsequent calls will return Done. 1068func (it *SearchCatalogResultIterator) Next() (*datacatalogpb.SearchCatalogResult, error) { 1069 var item *datacatalogpb.SearchCatalogResult 1070 if err := it.nextFunc(); err != nil { 1071 return item, err 1072 } 1073 item = it.items[0] 1074 it.items = it.items[1:] 1075 return item, nil 1076} 1077 1078func (it *SearchCatalogResultIterator) bufLen() int { 1079 return len(it.items) 1080} 1081 1082func (it *SearchCatalogResultIterator) takeBuf() interface{} { 1083 b := it.items 1084 it.items = nil 1085 return b 1086} 1087 1088// TagIterator manages a stream of *datacatalogpb.Tag. 1089type TagIterator struct { 1090 items []*datacatalogpb.Tag 1091 pageInfo *iterator.PageInfo 1092 nextFunc func() error 1093 1094 // Response is the raw response for the current page. 1095 // It must be cast to the RPC response type. 1096 // Calling Next() or InternalFetch() updates this value. 1097 Response interface{} 1098 1099 // InternalFetch is for use by the Google Cloud Libraries only. 1100 // It is not part of the stable interface of this package. 1101 // 1102 // InternalFetch returns results from a single call to the underlying RPC. 1103 // The number of results is no greater than pageSize. 1104 // If there are no more results, nextPageToken is empty and err is nil. 1105 InternalFetch func(pageSize int, pageToken string) (results []*datacatalogpb.Tag, nextPageToken string, err error) 1106} 1107 1108// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. 1109func (it *TagIterator) PageInfo() *iterator.PageInfo { 1110 return it.pageInfo 1111} 1112 1113// Next returns the next result. Its second return value is iterator.Done if there are no more 1114// results. Once Next returns Done, all subsequent calls will return Done. 1115func (it *TagIterator) Next() (*datacatalogpb.Tag, error) { 1116 var item *datacatalogpb.Tag 1117 if err := it.nextFunc(); err != nil { 1118 return item, err 1119 } 1120 item = it.items[0] 1121 it.items = it.items[1:] 1122 return item, nil 1123} 1124 1125func (it *TagIterator) bufLen() int { 1126 return len(it.items) 1127} 1128 1129func (it *TagIterator) takeBuf() interface{} { 1130 b := it.items 1131 it.items = nil 1132 return b 1133} 1134