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