...

Source file src/cloud.google.com/go/iam/apiv2/auxiliary.go

Documentation: cloud.google.com/go/iam/apiv2

     1  // Copyright 2024 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  
    17  package iam
    18  
    19  import (
    20  	"context"
    21  	"time"
    22  
    23  	iampb "cloud.google.com/go/iam/apiv2/iampb"
    24  	"cloud.google.com/go/longrunning"
    25  	gax "github.com/googleapis/gax-go/v2"
    26  	"google.golang.org/api/iterator"
    27  )
    28  
    29  // CreatePolicyOperation manages a long-running operation from CreatePolicy.
    30  type CreatePolicyOperation struct {
    31  	lro      *longrunning.Operation
    32  	pollPath string
    33  }
    34  
    35  // Wait blocks until the long-running operation is completed, returning the response and any errors encountered.
    36  //
    37  // See documentation of Poll for error-handling information.
    38  func (op *CreatePolicyOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*iampb.Policy, error) {
    39  	opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...)
    40  	var resp iampb.Policy
    41  	if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil {
    42  		return nil, err
    43  	}
    44  	return &resp, nil
    45  }
    46  
    47  // Poll fetches the latest state of the long-running operation.
    48  //
    49  // Poll also fetches the latest metadata, which can be retrieved by Metadata.
    50  //
    51  // If Poll fails, the error is returned and op is unmodified. If Poll succeeds and
    52  // the operation has completed with failure, the error is returned and op.Done will return true.
    53  // If Poll succeeds and the operation has completed successfully,
    54  // op.Done will return true, and the response of the operation is returned.
    55  // If Poll succeeds and the operation has not completed, the returned response and error are both nil.
    56  func (op *CreatePolicyOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*iampb.Policy, error) {
    57  	opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...)
    58  	var resp iampb.Policy
    59  	if err := op.lro.Poll(ctx, &resp, opts...); err != nil {
    60  		return nil, err
    61  	}
    62  	if !op.Done() {
    63  		return nil, nil
    64  	}
    65  	return &resp, nil
    66  }
    67  
    68  // Metadata returns metadata associated with the long-running operation.
    69  // Metadata itself does not contact the server, but Poll does.
    70  // To get the latest metadata, call this method after a successful call to Poll.
    71  // If the metadata is not available, the returned metadata and error are both nil.
    72  func (op *CreatePolicyOperation) Metadata() (*iampb.PolicyOperationMetadata, error) {
    73  	var meta iampb.PolicyOperationMetadata
    74  	if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata {
    75  		return nil, nil
    76  	} else if err != nil {
    77  		return nil, err
    78  	}
    79  	return &meta, nil
    80  }
    81  
    82  // Done reports whether the long-running operation has completed.
    83  func (op *CreatePolicyOperation) Done() bool {
    84  	return op.lro.Done()
    85  }
    86  
    87  // Name returns the name of the long-running operation.
    88  // The name is assigned by the server and is unique within the service from which the operation is created.
    89  func (op *CreatePolicyOperation) Name() string {
    90  	return op.lro.Name()
    91  }
    92  
    93  // DeletePolicyOperation manages a long-running operation from DeletePolicy.
    94  type DeletePolicyOperation struct {
    95  	lro      *longrunning.Operation
    96  	pollPath string
    97  }
    98  
    99  // Wait blocks until the long-running operation is completed, returning the response and any errors encountered.
   100  //
   101  // See documentation of Poll for error-handling information.
   102  func (op *DeletePolicyOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*iampb.Policy, error) {
   103  	opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...)
   104  	var resp iampb.Policy
   105  	if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil {
   106  		return nil, err
   107  	}
   108  	return &resp, nil
   109  }
   110  
   111  // Poll fetches the latest state of the long-running operation.
   112  //
   113  // Poll also fetches the latest metadata, which can be retrieved by Metadata.
   114  //
   115  // If Poll fails, the error is returned and op is unmodified. If Poll succeeds and
   116  // the operation has completed with failure, the error is returned and op.Done will return true.
   117  // If Poll succeeds and the operation has completed successfully,
   118  // op.Done will return true, and the response of the operation is returned.
   119  // If Poll succeeds and the operation has not completed, the returned response and error are both nil.
   120  func (op *DeletePolicyOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*iampb.Policy, error) {
   121  	opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...)
   122  	var resp iampb.Policy
   123  	if err := op.lro.Poll(ctx, &resp, opts...); err != nil {
   124  		return nil, err
   125  	}
   126  	if !op.Done() {
   127  		return nil, nil
   128  	}
   129  	return &resp, nil
   130  }
   131  
   132  // Metadata returns metadata associated with the long-running operation.
   133  // Metadata itself does not contact the server, but Poll does.
   134  // To get the latest metadata, call this method after a successful call to Poll.
   135  // If the metadata is not available, the returned metadata and error are both nil.
   136  func (op *DeletePolicyOperation) Metadata() (*iampb.PolicyOperationMetadata, error) {
   137  	var meta iampb.PolicyOperationMetadata
   138  	if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata {
   139  		return nil, nil
   140  	} else if err != nil {
   141  		return nil, err
   142  	}
   143  	return &meta, nil
   144  }
   145  
   146  // Done reports whether the long-running operation has completed.
   147  func (op *DeletePolicyOperation) Done() bool {
   148  	return op.lro.Done()
   149  }
   150  
   151  // Name returns the name of the long-running operation.
   152  // The name is assigned by the server and is unique within the service from which the operation is created.
   153  func (op *DeletePolicyOperation) Name() string {
   154  	return op.lro.Name()
   155  }
   156  
   157  // UpdatePolicyOperation manages a long-running operation from UpdatePolicy.
   158  type UpdatePolicyOperation struct {
   159  	lro      *longrunning.Operation
   160  	pollPath string
   161  }
   162  
   163  // Wait blocks until the long-running operation is completed, returning the response and any errors encountered.
   164  //
   165  // See documentation of Poll for error-handling information.
   166  func (op *UpdatePolicyOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*iampb.Policy, error) {
   167  	opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...)
   168  	var resp iampb.Policy
   169  	if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil {
   170  		return nil, err
   171  	}
   172  	return &resp, nil
   173  }
   174  
   175  // Poll fetches the latest state of the long-running operation.
   176  //
   177  // Poll also fetches the latest metadata, which can be retrieved by Metadata.
   178  //
   179  // If Poll fails, the error is returned and op is unmodified. If Poll succeeds and
   180  // the operation has completed with failure, the error is returned and op.Done will return true.
   181  // If Poll succeeds and the operation has completed successfully,
   182  // op.Done will return true, and the response of the operation is returned.
   183  // If Poll succeeds and the operation has not completed, the returned response and error are both nil.
   184  func (op *UpdatePolicyOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*iampb.Policy, error) {
   185  	opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...)
   186  	var resp iampb.Policy
   187  	if err := op.lro.Poll(ctx, &resp, opts...); err != nil {
   188  		return nil, err
   189  	}
   190  	if !op.Done() {
   191  		return nil, nil
   192  	}
   193  	return &resp, nil
   194  }
   195  
   196  // Metadata returns metadata associated with the long-running operation.
   197  // Metadata itself does not contact the server, but Poll does.
   198  // To get the latest metadata, call this method after a successful call to Poll.
   199  // If the metadata is not available, the returned metadata and error are both nil.
   200  func (op *UpdatePolicyOperation) Metadata() (*iampb.PolicyOperationMetadata, error) {
   201  	var meta iampb.PolicyOperationMetadata
   202  	if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata {
   203  		return nil, nil
   204  	} else if err != nil {
   205  		return nil, err
   206  	}
   207  	return &meta, nil
   208  }
   209  
   210  // Done reports whether the long-running operation has completed.
   211  func (op *UpdatePolicyOperation) Done() bool {
   212  	return op.lro.Done()
   213  }
   214  
   215  // Name returns the name of the long-running operation.
   216  // The name is assigned by the server and is unique within the service from which the operation is created.
   217  func (op *UpdatePolicyOperation) Name() string {
   218  	return op.lro.Name()
   219  }
   220  
   221  // PolicyIterator manages a stream of *iampb.Policy.
   222  type PolicyIterator struct {
   223  	items    []*iampb.Policy
   224  	pageInfo *iterator.PageInfo
   225  	nextFunc func() error
   226  
   227  	// Response is the raw response for the current page.
   228  	// It must be cast to the RPC response type.
   229  	// Calling Next() or InternalFetch() updates this value.
   230  	Response interface{}
   231  
   232  	// InternalFetch is for use by the Google Cloud Libraries only.
   233  	// It is not part of the stable interface of this package.
   234  	//
   235  	// InternalFetch returns results from a single call to the underlying RPC.
   236  	// The number of results is no greater than pageSize.
   237  	// If there are no more results, nextPageToken is empty and err is nil.
   238  	InternalFetch func(pageSize int, pageToken string) (results []*iampb.Policy, nextPageToken string, err error)
   239  }
   240  
   241  // PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
   242  func (it *PolicyIterator) PageInfo() *iterator.PageInfo {
   243  	return it.pageInfo
   244  }
   245  
   246  // Next returns the next result. Its second return value is iterator.Done if there are no more
   247  // results. Once Next returns Done, all subsequent calls will return Done.
   248  func (it *PolicyIterator) Next() (*iampb.Policy, error) {
   249  	var item *iampb.Policy
   250  	if err := it.nextFunc(); err != nil {
   251  		return item, err
   252  	}
   253  	item = it.items[0]
   254  	it.items = it.items[1:]
   255  	return item, nil
   256  }
   257  
   258  func (it *PolicyIterator) bufLen() int {
   259  	return len(it.items)
   260  }
   261  
   262  func (it *PolicyIterator) takeBuf() interface{} {
   263  	b := it.items
   264  	it.items = nil
   265  	return b
   266  }
   267  

View as plain text