Skip to content

Commit 0beafe5

Browse files
[manila-csi-plugin] Use GET method for listing share access rules (#3147)
1 parent b8dd86a commit 0beafe5

1 file changed

Lines changed: 30 additions & 1 deletion

File tree

pkg/csi/manila/manilaclient/client.go

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121

2222
"github.com/gophercloud/gophercloud/v2"
2323
"github.com/gophercloud/gophercloud/v2/openstack/sharedfilesystems/v2/messages"
24+
"github.com/gophercloud/gophercloud/v2/openstack/sharedfilesystems/v2/shareaccessrules"
2425
"github.com/gophercloud/gophercloud/v2/openstack/sharedfilesystems/v2/shares"
2526
"github.com/gophercloud/gophercloud/v2/openstack/sharedfilesystems/v2/sharetypes"
2627
"github.com/gophercloud/gophercloud/v2/openstack/sharedfilesystems/v2/snapshots"
@@ -75,7 +76,35 @@ func (c Client) SetShareMetadata(ctx context.Context, shareID string, opts share
7576
}
7677

7778
func (c Client) GetAccessRights(ctx context.Context, shareID string) ([]shares.AccessRight, error) {
78-
return shares.ListAccessRights(ctx, c.c, shareID).Extract()
79+
// Set microversion to 2.45 to use the GET /share-access-rules endpoint
80+
v := c.GetMicroversion()
81+
c.SetMicroversion("2.45")
82+
defer c.SetMicroversion(v)
83+
84+
rules, err := shareaccessrules.List(ctx, c.c, shareID).Extract()
85+
if err != nil {
86+
return nil, err
87+
}
88+
89+
return toAccessRights(rules), nil
90+
}
91+
92+
// toAccessRights adapts the shareaccessrules API type to the shares.AccessRight type
93+
func toAccessRights(rules []shareaccessrules.ShareAccess) []shares.AccessRight {
94+
accessRights := make([]shares.AccessRight, len(rules))
95+
for i, r := range rules {
96+
accessRights[i] = shares.AccessRight{
97+
ShareID: r.ShareID,
98+
AccessType: r.AccessType,
99+
AccessTo: r.AccessTo,
100+
AccessKey: r.AccessKey,
101+
AccessLevel: r.AccessLevel,
102+
State: r.State,
103+
ID: r.ID,
104+
}
105+
}
106+
107+
return accessRights
79108
}
80109

81110
func (c Client) GrantAccess(ctx context.Context, shareID string, opts shares.GrantAccessOptsBuilder) (*shares.AccessRight, error) {

0 commit comments

Comments
 (0)