Skip to content

Commit b5fa369

Browse files
committed
Update swift to use gophercloud v2
1 parent 07c2263 commit b5fa369

File tree

2 files changed

+29
-27
lines changed

2 files changed

+29
-27
lines changed

pkg/storage/swift/swift.go

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package swift
22

33
import (
4+
"context"
45
"crypto/tls"
56
"crypto/x509"
67
"errors"
@@ -10,12 +11,12 @@ import (
1011
"strconv"
1112
"strings"
1213

13-
"github.com/gophercloud/gophercloud"
14-
"github.com/gophercloud/gophercloud/openstack"
15-
"github.com/gophercloud/gophercloud/openstack/objectstorage/v1/containers"
16-
"github.com/gophercloud/gophercloud/openstack/objectstorage/v1/objects"
17-
"github.com/gophercloud/gophercloud/pagination"
18-
"github.com/gophercloud/utils/openstack/clientconfig"
14+
"github.com/gophercloud/gophercloud/v2"
15+
"github.com/gophercloud/gophercloud/v2/openstack"
16+
"github.com/gophercloud/gophercloud/v2/openstack/objectstorage/v1/containers"
17+
"github.com/gophercloud/gophercloud/v2/openstack/objectstorage/v1/objects"
18+
"github.com/gophercloud/gophercloud/v2/pagination"
19+
"github.com/gophercloud/utils/v2/openstack/clientconfig"
1920
"github.com/goware/urlx"
2021
yamlv2 "gopkg.in/yaml.v2"
2122

@@ -77,7 +78,7 @@ func IsSwiftEnabled(listers *regopclient.StorageListers) (bool, error) {
7778
}
7879

7980
// Try to list containers to make sure the user has required permissions to do that
80-
if err := containers.List(conn, containers.ListOpts{}).EachPage(func(_ pagination.Page) (bool, error) {
81+
if err := containers.List(conn, containers.ListOpts{}).EachPage(context.TODO(), func(ctx context.Context, _ pagination.Page) (bool, error) {
8182
return false, nil
8283
}); err != nil {
8384
klog.Errorf("error listing swift containers: %v", err)
@@ -250,7 +251,7 @@ func (d *driver) getSwiftClient() (*gophercloud.ServiceClient, error) {
250251
provider.HTTPClient = client
251252
}
252253

253-
err = openstack.Authenticate(provider, *opts)
254+
err = openstack.Authenticate(context.TODO(), provider, *opts)
254255
if err != nil {
255256
return nil, fmt.Errorf("failed to authenticate against OpenStack: %w", err)
256257
}
@@ -388,7 +389,7 @@ func ensureAuthURLHasAPIVersion(authURL, authVersion string) (string, error) {
388389
}
389390

390391
func (d *driver) containerExists(client *gophercloud.ServiceClient, containerName string) error {
391-
_, err := containers.Get(client, containerName, containers.GetOpts{}).Extract()
392+
_, err := containers.Get(context.TODO(), client, containerName, containers.GetOpts{}).Extract()
392393
return err
393394
}
394395

@@ -448,7 +449,7 @@ func (d *driver) CreateStorage(cr *imageregistryv1.Config) error {
448449
if err != nil {
449450
// If the error is not ErrResourceNotFound
450451
// return the error
451-
if _, ok := err.(gophercloud.ErrDefault404); !ok {
452+
if !gophercloud.ResponseCodeIs(err, http.StatusNotFound) {
452453
util.UpdateCondition(cr, defaults.StorageExists, operatorapi.ConditionFalse, "Unable to check if container exists", fmt.Sprintf("Error occurred checking if container exists: %v", err))
453454
return err
454455
}
@@ -481,7 +482,7 @@ func (d *driver) CreateStorage(cr *imageregistryv1.Config) error {
481482
},
482483
}
483484

484-
_, err = containers.Create(client, cr.Spec.Storage.Swift.Container, createOps).Extract()
485+
_, err = containers.Create(context.TODO(), client, cr.Spec.Storage.Swift.Container, createOps).Extract()
485486
if err != nil {
486487
util.UpdateCondition(cr, defaults.StorageExists, operatorapi.ConditionFalse, "Creation Failed", err.Error())
487488
return err
@@ -517,12 +518,12 @@ func (d *driver) RemoveStorage(cr *imageregistryv1.Config) (bool, error) {
517518
pager := objects.List(client, cr.Spec.Storage.Swift.Container, &objects.ListOpts{
518519
Limit: 50,
519520
})
520-
if err := pager.EachPage(func(page pagination.Page) (bool, error) {
521+
if err := pager.EachPage(context.TODO(), func(ctx context.Context, page pagination.Page) (bool, error) {
521522
objectsOnPage, err := objects.ExtractNames(page)
522523
if err != nil {
523524
return false, err
524525
}
525-
resp, err := objects.BulkDelete(client, cr.Spec.Storage.Swift.Container, objectsOnPage).Extract()
526+
resp, err := objects.BulkDelete(ctx, client, cr.Spec.Storage.Swift.Container, objectsOnPage).Extract()
526527
if err != nil {
527528
return false, err
528529
}
@@ -540,14 +541,14 @@ func (d *driver) RemoveStorage(cr *imageregistryv1.Config) (bool, error) {
540541

541542
return true, nil
542543
}); err != nil {
543-
if _, ok := err.(gophercloud.ErrDefault404); !ok {
544+
if !gophercloud.ResponseCodeIs(err, http.StatusNotFound) {
544545
return false, err
545546
}
546547
}
547548

548-
_, err = containers.Delete(client, cr.Spec.Storage.Swift.Container).Extract()
549+
_, err = containers.Delete(context.TODO(), client, cr.Spec.Storage.Swift.Container).Extract()
549550
if err != nil {
550-
if _, ok := err.(gophercloud.ErrDefault404); !ok {
551+
if !gophercloud.ResponseCodeIs(err, http.StatusNotFound) {
551552
util.UpdateCondition(cr, defaults.StorageExists, operatorapi.ConditionUnknown, err.Error(), err.Error())
552553
return false, err
553554
}

pkg/storage/swift/swift_test.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package swift
22

33
import (
4+
"context"
45
"encoding/json"
56
"errors"
67
"fmt"
@@ -9,9 +10,9 @@ import (
910
"testing"
1011

1112
"github.com/davecgh/go-spew/spew"
12-
"github.com/gophercloud/gophercloud"
13-
"github.com/gophercloud/gophercloud/openstack/objectstorage/v1/containers"
14-
th "github.com/gophercloud/gophercloud/testhelper"
13+
"github.com/gophercloud/gophercloud/v2"
14+
"github.com/gophercloud/gophercloud/v2/openstack/objectstorage/v1/containers"
15+
th "github.com/gophercloud/gophercloud/v2/testhelper"
1516

1617
corev1 "k8s.io/api/core/v1"
1718
k8serrors "k8s.io/apimachinery/pkg/api/errors"
@@ -1101,10 +1102,10 @@ func TestNoPermissionsKeystone(t *testing.T) {
11011102
conn, err := d.getSwiftClient()
11021103
th.AssertNoErr(t, err)
11031104

1104-
// if the user doesn't have permissions, gophercloud should return ErrDefault403
1105-
listOpts := containers.ListOpts{Full: false}
1106-
_, err = containers.List(conn, listOpts).AllPages()
1107-
_, ok := err.(gophercloud.ErrDefault403)
1105+
// if the user doesn't have permissions, gophercloud should return StatusForbidden
1106+
listOpts := containers.ListOpts{}
1107+
_, err = containers.List(conn, listOpts).AllPages(context.TODO())
1108+
ok := gophercloud.ResponseCodeIs(err, http.StatusForbidden)
11081109
th.AssertEquals(t, true, ok)
11091110

11101111
// IsSwiftEnabled should return false in this case
@@ -1153,10 +1154,10 @@ func TestNoPermissionsSwauth(t *testing.T) {
11531154
conn, err := d.getSwiftClient()
11541155
th.AssertNoErr(t, err)
11551156

1156-
// if the user doesn't have permissions, gophercloud should return ErrDefault401
1157-
listOpts := containers.ListOpts{Full: false}
1158-
_, err = containers.List(conn, listOpts).AllPages()
1159-
_, ok := err.(gophercloud.ErrDefault401)
1157+
// if the user doesn't have permissions, gophercloud should return Status.Unauthorized
1158+
listOpts := containers.ListOpts{}
1159+
_, err = containers.List(conn, listOpts).AllPages(context.TODO())
1160+
ok := gophercloud.ResponseCodeIs(err, http.StatusUnauthorized)
11601161
th.AssertEquals(t, true, ok)
11611162

11621163
// IsSwiftEnabled should return false in this case

0 commit comments

Comments
 (0)