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