Swift3 functests should transition to using boto3

Bug #1557260 reported by Tim Burke
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Object Storage (swift)
New
Undecided
Unassigned

Bug Description

With the sig V4 effort in https://review.openstack.org/#/c/211933/, we're finding a few issues with current boto. And from their README [1], it sounds like the likelihood of getting them fixed in the 2.x series is diminished:

> Boto3, the next version of Boto, is now stable and recommended for
> general use. It can be used side-by-side with Boto in the same project,
> so it is easy to start using Boto3 in your existing projects as well as
> new projects. Going forward, API updates and all new feature work will
> be focused on Boto3.
>
> To assist users who still depend on Boto and cannot immediately switch
> over, we will be triaging and addressing critical issues and PRs in Boto
> in the short term. As more users make the switch to Boto3, we expect to
> reduce our maintenance involvement over time. If we decide on a cutoff
> date or any significant changes to our maintenance plan, we will make
> pre-announcements well ahead of schedule to allow ample time for our
> users to adapt/migrate.

I don't know whether sig V4 issues would be covered by "critical issues" or not, but getting on 3.x [2] sooner rather than later is probably a good idea.

[1] https://github.com/boto/boto/blob/develop/README.rst
[2] https://github.com/boto/boto3

Tim Burke (1-tim-z)
description: updated
Revision history for this message
Andrey Pavlov (apavlov-e) wrote :

Can I do this work?

Revision history for this message
Tim Burke (1-tim-z) wrote :

New development will be on s3api in Swift's tree.

affects: swift3 → swift
Tim Burke (1-tim-z)
tags: added: s3api
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to swift (master)

Reviewed: https://review.opendev.org/657149
Committed: https://git.openstack.org/cgit/openstack/swift/commit/?id=d4e7940457cd31b4ee91a01a0c492781179fcfe4
Submitter: Zuul
Branch: master

commit d4e7940457cd31b4ee91a01a0c492781179fcfe4
Author: Timur Alperovich <email address hidden>
Date: Sat May 4 12:11:54 2019 -0700

    Start transition to boto3 in s3api tests.

    Adds the scaffolding required for tests to use boto3 and converts the
    test_bucket.py tests to the new interface. Follow on patches will
    convert the other tests to use the boto3 library.

    Notable changes: we no longer try to reach for the equivalent of
    `boto.make_request()` and instead rely on the boto3/botocore event
    system to mutate requests as necessary (or to disable pre-flight
    validators).

    Partial-Bug: 1557260
    Change-Id: I3d77ef4a6b878c49ebfa0c8b8647d7199d87601e

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to swift (feature/losf)

Fix proposed to branch: feature/losf
Review: https://review.opendev.org/663260

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to swift (feature/losf)
Download full text (11.7 KiB)

Reviewed: https://review.opendev.org/663260
Committed: https://git.openstack.org/cgit/openstack/swift/commit/?id=3ba65cb7eca6948d32b53ba91157037c48f06002
Submitter: Zuul
Branch: feature/losf

commit 79ab3a490ada6aa4db28efa5b71a3f1a080920f7
Author: Clay Gerrard <email address hidden>
Date: Tue Jun 4 11:45:35 2019 -0500

    Note s3api compatability requirements in sample.conf

    Change-Id: I12f6e4a5a880a2d5e0f4fff4618e4196be311267

commit eaf180c68dc7cba866df0c70199ae48fb382c6e0
Author: Pete Zaitcev <email address hidden>
Date: Mon Jun 3 22:00:41 2019 -0500

    Fix a few Sphinx warnings

    This precludes us from landing anything in the gate, because we
    treat Sphinx warnings as errors in OpenStack.

    Specifically, 3 warnings are fixed:

    /home/zuul/src/opendev.org/openstack/swift/swift/common/middleware\
    /s3api/etree.py:docstring of\
     swift.common.middleware.s3api.etree.Element:1:\
    Inline strong start-string without end-string.

    duplicate object description of\
     swift.common.middleware.versioned_writes, other instance in\
     middleware, use :noindex: for one of them

    duplicate object description of\
     swift.common.ring.composite_builder, other instance in\
     overview_ring, use :noindex: for one of them

    Change-Id: I5e0bd61a301d46b2674b4605882462575b635220

commit 4f9595f1130f6c45f8e3e08db55dddc31844be93
Author: Matthew Oliver <email address hidden>
Date: Tue Apr 23 12:15:32 2019 +1000

    py3: port symlink middleware

    This patch ports the symlink middleware to py3.
    The middleware itself seems to be mostly fine and most changes
    are in the symlink unit tests.

    Change-Id: I973c2e1bb8969cf6bffece8ce68881c393efbaef

commit 2c4f284055e1031f17f97229056616017385d8bc
Author: zengjia <email address hidden>
Date: Thu May 23 10:53:31 2019 +0800

    Modify the version path URL of the configuration file

    In the main branch, I think it is necessary to modify
    the configuration file path in the document as the
    main branch path, and to change the path to a stable
    version when the version is released.

    Change-Id: Ib1bc4c59ed4c7624782b8b1cdea20847c14c90bf

commit ff04ef05cd5a8f9675cbc8f292fa666d03ae6644
Author: Tim Burke <email address hidden>
Date: Wed May 22 16:36:50 2019 -0700

    Rework private-request-method interface

    Instead of taking a X-Backend-Allow-Method that *must match* the
    REQUEST_METHOD, take a truish X-Backend-Allow-Private-Methods and
    expand the set of allowed methods. This allows us to also expose
    the full list of available private methods when returning a 405.

    Drive-By: make async-delete tests a little more robust:
      * check that end_marker and prefix are preserved on subsequent
        listings
      * check that objects with a leading slash are correctly handled

    Change-Id: I5542623f16e0b5a0d728a6706343809e50743f73

commit 04c8015b889e3ddcbf111f3b0fa99bbbe12b8624
Author: Clay Gerrard <email address hidden>
Date: Wed May 22 16:23:42 2019 -0500

    Add more tests for async expirer

    Related-Change-Id: Ia13ee5da3d1b5c536eccaadc7a6fdcd997374443
 ...

tags: added: in-feature-losf
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to swift (master)

Related fix proposed to branch: master
Review: https://review.opendev.org/c/openstack/swift/+/918144

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to swift (master)

Reviewed: https://review.opendev.org/c/openstack/swift/+/918144
Committed: https://opendev.org/openstack/swift/commit/dd8b7656daad1c244c94aa6d2bc8b4eb59c8cb3b
Submitter: "Zuul (22348)"
Branch: master

commit dd8b7656daad1c244c94aa6d2bc8b4eb59c8cb3b
Author: Tim Burke <email address hidden>
Date: Fri May 3 13:24:02 2024 -0700

    Skip boto 2.x tests if boto is not installed

    The boto library was last updated two years ago and has
    rusted to the point that it's unusable on py312 -- see
    https://github.com/boto/boto/issues/3951

    We should transition all of these tests to boto3 equivalents,
    but this should help out in the meantime.

    Related-Bug: #1557260
    Related-Bug: #2063367
    Change-Id: If95f45371f352c6a2d16be1a3e1b64e265bccfb4

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to swift (feature/mpu)

Related fix proposed to branch: feature/mpu
Review: https://review.opendev.org/c/openstack/swift/+/922311

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to swift (feature/mpu)
Download full text (8.6 KiB)

Reviewed: https://review.opendev.org/c/openstack/swift/+/922311
Committed: https://opendev.org/openstack/swift/commit/51fd293f1f947f6972e4fa6751f94f750bbd86f2
Submitter: "Zuul (22348)"
Branch: feature/mpu

commit 5be20f46df164b4b62e59916cfef15aebf880a7f
Author: Tim Burke <email address hidden>
Date: Mon Jun 17 15:58:56 2024 -0700

    CI: update known failures for the ceph tests

    For some reason, when we switched from py36 on centos8 to py39 on
    centos9, these two tests started failing. Looks like a disagreement
    about whether the canonical path for a bucket request should have
    a trailing slash or not.

    Mark them as known-failures for now so we can stay aware of any
    other new breakage brought on by swift code changes.

    Related-Change: I4f6b9c07af7bc768654f1a5d0c66b048e0f2c9c1
    Change-Id: If990752c7ef7667182dbe18e49679e48c0e3d42d

commit a290f445efe812ad4886ca23cca00c8bb3b48c2b
Author: Tim Burke <email address hidden>
Date: Mon Jun 17 14:43:10 2024 -0700

    CI: make sure old swift is truly gone for rolling-upgrade jobs

    While switching how some executable scripts were configured, I saw
    some strange rolling-upgrade failures that seemed to indicate that
    the new invocation method was trying to be used with old code. It
    seems like it maybe has something to do with whether swift was
    installed to /usr/local/lib/python3.9/site-packages/ or
    /usr/local/lib64/python3.9/site-packages/ but I'm not entirely
    sure.

    At any rate, a proper package manager ought to uninstall the old
    version then install the new one, so it seems reasonable to do that
    with pip, too.

    Change-Id: I12e84745e7601d162755bc9d0f1cda7b63e92197

commit 90da23c7d232ba443b0814fd71c39f4585d30e4c
Author: Thomas Goirand <email address hidden>
Date: Thu Jun 13 11:27:55 2024 +0200

    kms_keymaster: allow specifying barbican_endpoint

    Under a multi-region deployment with a single Keystone server,
    specifying the Keystone auth credentials isn't enough. Indeed,
    Castellan succeeds when logging-in, but may use the wrong
    Barbican endpoint (if there are 2 Barbican deployed). This is
    what happened to us, when deploying our 2nd region.

    They way to fix it would be to tell Castellan what region to use,
    unfortunately, there's no such option in Castellan. Though we may
    specify the barbican_endpoint, which is what this patch allows.

    Change-Id: Ib7f4219ef5fdef65e9cfd5701e28b5288741783e

commit 3637b1abd9240f7feeebc7f299d42fe8815d7dcd
Author: Anish Kachinthaya <email address hidden>
Date: Mon Mar 11 19:02:10 2024 -0400

    add bytes of expiring objects to queue entry

    The size in bytes from object metadata of expiring objects are stored in
    expirey queue entries under the content_type field.

    The x-content-type-timestamp take from object metadata is provided along
    with the x-content-type update so the container replicator resolves the
    latest content-type and ensures eventual consistency.

    UpgradeImpact: During rolling upgrades you should expect expirer queue
    entries to continue lacking swift_expirer_bytes= annotati...

Read more...

tags: added: in-feature-mpu
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.