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