@@ -213,35 +213,7 @@ func (b *BindOptions) Run(ctx context.Context) error {
213213 return fmt .Errorf ("failed to get APIExport %q: %w" , apiExportName , err )
214214 }
215215
216- // Iterate over all permission claims defined in the APIExport
217- for _ , claim := range apiExport .Spec .PermissionClaims {
218- // Build an AcceptablePermissionClaim using the SDK structs
219- parsedClaim := apisv1alpha2.AcceptablePermissionClaim {
220- ScopedPermissionClaim : apisv1alpha2.ScopedPermissionClaim {
221- PermissionClaim : apisv1alpha2.PermissionClaim {
222- GroupResource : apisv1alpha2.GroupResource {
223- Group : claim .Group ,
224- Resource : claim .Resource ,
225- },
226- Verbs : []string {"*" },
227- },
228- Selector : apisv1alpha2.PermissionClaimSelector {MatchAll : true },
229- },
230- State : apisv1alpha2 .ClaimAccepted , // default; may be overridden following
231- }
232-
233- // Add to accepted claims if user requested accept-all
234- if b .AcceptAllPermissionClaims {
235- parsedClaim .State = apisv1alpha2 .ClaimAccepted
236- b .acceptedPermissionClaims = append (b .acceptedPermissionClaims , parsedClaim )
237- }
238-
239- // Add to rejected claims if user requested reject-all
240- if b .RejectAllPermissionClaims {
241- parsedClaim .State = apisv1alpha2 .ClaimRejected
242- b .rejectedPermissionClaims = append (b .rejectedPermissionClaims , parsedClaim )
243- }
244- }
216+ b .addAllPermissionClaims (apiExport .Spec .PermissionClaims )
245217 }
246218
247219 apiBinding , err := b .newAPIBinding (preferredAPIBindingVersion )
@@ -277,6 +249,40 @@ func (b *BindOptions) Run(ctx context.Context) error {
277249 return nil
278250}
279251
252+ // addAllPermissionClaims accepts or rejects every given APIExport permission claim,
253+ // depending on whether --accept-all-permission-claims or --reject-all-permission-claims is set.
254+ func (b * BindOptions ) addAllPermissionClaims (claims []apisv1alpha1.PermissionClaim ) {
255+ for _ , claim := range claims {
256+ // Build an AcceptablePermissionClaim using the SDK structs
257+ parsedClaim := apisv1alpha2.AcceptablePermissionClaim {
258+ ScopedPermissionClaim : apisv1alpha2.ScopedPermissionClaim {
259+ PermissionClaim : apisv1alpha2.PermissionClaim {
260+ GroupResource : apisv1alpha2.GroupResource {
261+ Group : claim .Group ,
262+ Resource : claim .Resource ,
263+ },
264+ Verbs : []string {"*" },
265+ IdentityHash : claim .IdentityHash ,
266+ },
267+ Selector : apisv1alpha2.PermissionClaimSelector {MatchAll : true },
268+ },
269+ State : apisv1alpha2 .ClaimAccepted , // default; may be overridden following
270+ }
271+
272+ // Add to accepted claims if user requested accept-all
273+ if b .AcceptAllPermissionClaims {
274+ parsedClaim .State = apisv1alpha2 .ClaimAccepted
275+ b .acceptedPermissionClaims = append (b .acceptedPermissionClaims , parsedClaim )
276+ }
277+
278+ // Add to rejected claims if user requested reject-all
279+ if b .RejectAllPermissionClaims {
280+ parsedClaim .State = apisv1alpha2 .ClaimRejected
281+ b .rejectedPermissionClaims = append (b .rejectedPermissionClaims , parsedClaim )
282+ }
283+ }
284+ }
285+
280286func (b * BindOptions ) newAPIBinding (preferredAPIBindingVersion string ) (apishelpers.APIBinding , error ) {
281287 path , apiExportName := logicalcluster .NewPath (b .APIExportRef ).Split ()
282288
0 commit comments