1288 Commits

Author SHA1 Message Date
Zuul
9aced4db27 Merge "Switch to newer openstackdocstheme and reno versions" 2020-06-03 18:32:59 +00:00
Zuul
99e6a49208 Merge "Remove <py3.5 dependencies from requirements.txt" 2020-06-03 18:32:57 +00:00
Andreas Jaeger
3d105b623d Switch to newer openstackdocstheme and reno versions
Switch to openstackdocstheme 2.2.1 and reno 3.1.0 versions. Using
these versions will allow especially:
* Linking from HTML to PDF document
* Allow parallel building of documents
* Fix some rendering problems

Update Sphinx version as well.

Disable openstackdocs_auto_name to use 'project' variable as name.

Set openstackdocs_pdf_link to link to PDF file. Note that
the link to the published document only works on docs.openstack.org
where the PDF file is placed in the top-level html directory. The
site-preview places the PDF in a pdf directory.

Change pygments_style to 'native' since old theme version always used
'native' and the theme now respects the setting and using 'sphinx' can
lead to some strange rendering.

Remove docs requirements from lower-constraints, they are not needed
during install or test but only for docs building.

openstackdocstheme renames some variables, so follow the renames
before the next release removes them. A couple of variables are also
not needed anymore, remove them.

See also
http://lists.openstack.org/pipermail/openstack-discuss/2020-May/014971.html

Change-Id: I131850d2a5c6164dfd48c9c95885d4754b5236c6
2020-06-03 08:31:04 +02:00
Andreas Jaeger
019bade19c Remove <py3.5 dependencies from requirements.txt
The requirements repo is support python 3.5 as oldest python version
while swift still supports py27.

thus, requirements-check will fail on a couple of lines in swift.  The
check is only run when these files are touched.

The py2.7 packagers we know about aren't depending on upstream
requirements.txt for correctness and aside from all the production
deployments running on py2.7 we only realistically support >=py3.7

There's no good reason for our requirements.txt to be "unspported" by
the openstack requirements check job.  Since they only support >=py3.5
we can change our requirements.txt inline with that.  This should be
fine for everything we could hope to get out of both our
requirements.txt and the check!

Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com>
Change-Id: Ibf8000498528c401707be8b0b91b8355cd993786
2020-06-03 08:30:43 +02:00
Tim Burke
738514c164 docs: s3api doesn't support tagging
Change-Id: I227e8c2defe96fb5f33054167677ae551830d9e8
2020-06-02 21:51:00 -07:00
Thiago da Silva
20c6bdb71c Enable s3api and staticweb tests across all func tests
This patch removed the separate s3api, staticweb functional tests
gate jobs and added them across all other functional test jobs.

Change-Id: Ie1c606132a054defc2b3cc14a66031090e7b8449
2020-06-01 19:16:48 -07:00
Matthew Oliver
78cce72f8a Ussuri contrib docs community goal
This patch standardizes the CONTRIBUTING.rst file and adds the
required doc/source/contributor/contributing.rst

Swift already had a detailed CONTIRBUTING.rst and an informative
REVIEW_GUIDELINES.rst in the root of the repo. So we are also pulling
them into the contributor documentation so they can not only be easily
found in the checked repo but in the online documentation.

Change-Id: I4c84efbe50eb25ab922c9d6b69198dae341af48b
2020-05-26 15:06:02 -07:00
Tim Burke
cb37d3acd6 docs: Clean up mount options
* Stop specifying logbufs=8; that's the default
* Stop including nodiratime with noatime; the latter implies the former

Nothing wrong with being explicit, I suppose, but may as well keep the
mount options to what we can easily explain: we want noatime because
Swift does not use atime, so we don't want to lose any performance to
tracking atime.

Change-Id: I1e52b4368ad7eb375964eee5132bc50297536355
2020-05-03 00:43:57 -07:00
Zuul
f87862e696 Merge "docs: Encourage usage of UUID inside /etc/fstab in examples" 2020-04-04 22:48:30 +00:00
Michele Valsecchi
875a142980 docs: Encourage usage of UUID inside /etc/fstab in examples
Update doc examples to use explicit UUID of devices, instead of using
unstable device names.

Change-Id: I3a2eb7bbe4b4091d2567897904d939df1df6b251
Closes-Bug: #1817966
2020-04-04 19:03:12 +09:00
Zuul
0524feef8c Merge "Add etag quoter to saio proxy config" 2020-03-26 00:51:18 +00:00
Zuul
e73619b25a Merge "proxy-logging: add fields ttfb and pid" 2020-01-31 19:01:09 +00:00
Thiago da Silva
d46a0c7d69 Add etag quoter to saio proxy config
Change-Id: I48ebbb38427612a52c36078586af7b9780b5ea37
2020-01-31 08:47:00 +11:00
Zuul
3010d31804 Merge "s3api: Implement object versioning API" 2020-01-29 03:52:57 +00:00
Zuul
3a1c3eaa67 Merge "Add a note to the part power increase documentation" 2020-01-29 03:52:40 +00:00
karen chan
6097660f0c s3api: Implement object versioning API
Translate AWS S3 Object Versioning API requests to native Swift Object
Versioning API, speficially:

 * bucket versioning status
 * bucket versioned objects listing params
 * object GETorHEAD & DELETE versionId
 * multi_delete versionId

Change-Id: I8296681b61996e073b3ba12ad46f99042dc15c37
Co-Authored-By: Tim Burke <tim.burke@gmail.com>
Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com>
2020-01-28 14:00:08 -08:00
Romain LE DISEZ
ebaf154fc4 Add a note to the part power increase documentation
Specify that the relink command must be run as the same user than the
daemon processes to avoid creating files that are not manipulable by the
server/replicator/...

Change-Id: If23592855db5f5bb0ec1e7c679de15769fd86871
2020-01-28 13:51:05 -05:00
Romain LE DISEZ
d8821c75bd proxy-logging: add fields ttfb and pid
Change-Id: I1611e34846e586703e9d3709fa64e8df41f2d685
2020-01-27 15:54:52 -05:00
Romain LE DISEZ
27fd97cef9 Middleware that allows a user to have quoted Etags
Users have complained for a while that Swift's ETags don't match the
expected RFC formats. We've resisted fixing this for just as long,
worrying that the fix would break innumerable clients that expect the
value to be a hex-encoded MD5 digest and *nothing else*.

But, users keep asking for it, and some consumers (including some CDNs)
break if we *don't* have quoted etags -- so, let's make it an option.

With this middleware, Swift users can set metadata per-account or even
per-container to explicitly request RFC compliant etags or not. Swift
operators also get an option to change the default behavior
cluster-wide; it defaults to the old, non-compliant format.

See also:
  - https://tools.ietf.org/html/rfc2616#section-3.11
  - https://tools.ietf.org/html/rfc7232#section-2.3

Closes-Bug: 1099087
Closes-Bug: 1424614
Co-Authored-By: Tim Burke <tim.burke@gmail.com>
Change-Id: I380c6e34949d857158e11eb428b3eda9975d855d
2020-01-27 12:53:35 -08:00
Clay Gerrard
2759d5d51c New Object Versioning mode
This patch adds a new object versioning mode. This new mode provides
a new set of APIs for users to interact with older versions of an
object. It also changes the naming scheme of older versions and adds
a version-id to each object.

This new mode is not backwards compatible or interchangeable with the
other two modes (i.e., stack and history), especially due to the changes
in the namimg scheme of older versions. This new mode will also serve
as a foundation for adding S3 versioning compatibility in the s3api
middleware.

Note that this does not (yet) support using a versioned container as
a source in container-sync. Container sync should be enhanced to sync
previous versions of objects.

Change-Id: Ic7d39ba425ca324eeb4543a2ce8d03428e2225a1
Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com>
Co-Authored-By: Tim Burke <tim.burke@gmail.com>
Co-Authored-By: Thiago da Silva <thiagodasilva@gmail.com>
2020-01-24 17:39:56 -08:00
Thiago da Silva
26ff2eb1cb container-sync: Sync static links similar to how we sync SLOs
This allows static symlinks to be synced before their target. Dynamic
symlinks could already be synced even if target object has not been
synced, but static links previously required that target object existed
before it can be PUT. Now, have container_sync middleware plumb in an
override like it does for SLO.

Change-Id: I3bfc62b77b247003adcee6bd4d374168bfd6707d
2020-01-24 17:15:57 -08:00
Tim Burke
0901464513 Clean up container-sync docs
Change-Id: I98ebe15353d675ca00fee387003bf6572ac385e6
2020-01-15 18:32:19 -08:00
Zuul
e32689a96d Merge "Deprecate per-service auto_create_account_prefix" 2020-01-07 01:30:20 +00:00
zhufl
47eb78897d Fix the duplicated words issue like "the the "
This is to fix the duplicated words issue, like:
  * "both of which which must be stripped off"
  * "In addition the the values set"
  and so on

Change-Id: Id3d84281f15815b4185c76874575e91a3589981b
2020-01-06 10:34:42 +08:00
Clay Gerrard
4601548dab Deprecate per-service auto_create_account_prefix
If we move it to constraints it's more globally accessible in our code,
but more importantly it's more obvious to ops that everything breaks if
you try to mis-configure different values per-service.

Change-Id: Ib8f7d08bc48da12be5671abe91a17ae2b49ecfee
2020-01-05 09:53:30 -06:00
Zuul
f97c34d77d Merge "Set swift_source more in s3api middleware" 2019-12-09 02:05:34 +00:00
Tim Burke
da4e07164e Set swift_source more in s3api middleware
Change-Id: I89f3a4b5a3a8c160afb298aad726acce09c65265
2019-12-06 08:32:48 -08:00
Tim Burke
c35ab2e1d8 Set swift_source in account_quotas middleware
Change-Id: Ib54a65a920fc335c1e0a496cb91c0de3003e2cc5
2019-12-05 14:18:18 -08:00
Tim Burke
e11c58ef89 Turn off dns_compliant_bucket_names for ceph tests
We get a handful more passing tests that way, following their move to boto3.

Change-Id: I73e9c38bde00a7117cec97e98f013e86350aa5be
2019-11-22 17:39:01 +00:00
Tim Burke
249a302d0c Remove a bunch of known-failures that moved from boto to boto3
Change-Id: I775a03e0ba1e10982eb6f7ef52be773c8831b1ec
2019-11-19 14:57:02 -08:00
Tim Burke
cfb3ae6019 Update known-failures and config for up-rev'ed ceph/s3tests
Change-Id: I3833843cd8d23c498a2afe6c68a3f0afe26343c0
2019-11-16 14:24:08 -08:00
Zuul
9fa0b211a9 Merge "Seamlessly reload servers with SIGUSR1" 2019-11-14 20:34:48 +00:00
Zuul
cf33b3dac7 Merge "proxy: stop sending chunks to objects with a Queue" 2019-11-14 10:28:54 +00:00
Darrell Bishop
1107f24179 Seamlessly reload servers with SIGUSR1
Swift servers can now be seamlessly reloaded by sending them a SIGUSR1
(instead of a SIGHUP).  The server forks off a synchronized child to
wait to close the old listen socket(s) until the new server has started
up and bound its listen socket(s).  The new server is exec'ed from the
old one so its PID doesn't change.  This makes Systemd happier, so a
ReloadExec= stanza can now be used.

The seamless part means that incoming connections will alwyas get
accepted either by the old server or the new one.  This eliminates
client-perceived "downtime" during server reloads, while allowing the
server to fully reload, re-reading configuration, becoming a fresh
Python interpreter instance, etc.  The SO_REUSEPORT socket option has
already been getting used, so nothing had to change there.

This patch also includes a non-invasive fix for a current eventlet bug;
see https://github.com/eventlet/eventlet/pull/590
That bug prevents a SIGHUP "reload" from properly servicing existing
requests before old worker processes close sockets and exit.  The
existing probtests missed this, but the new ones, in this patch, caught
it.

New probe tests cover both old SIGHUP "reload" behavior as well as the
new SIGUSR1 seamless reload behavior.

Change-Id: I3e5229d2fb04be67e53533ff65b0870038accbb7
2019-11-07 10:15:26 -08:00
Romain LE DISEZ
2f1111a436 proxy: stop sending chunks to objects with a Queue
During a PUT of an object, the proxy instanciates one Putter per
object-server that will store data (either the full object or a
fragment, depending on the storage policy). Each Putter is owning a
Queue that will be used to bufferize data chunks before they are
written to the socket connected to the object-server. The chunks are
moved from the queue to the socket by a greenthread. There is one
greenthread per Putter. If the client is uploading faster than the
object-servers can manage, the Queue could grow and consume a lot of
memory. To avoid that, the queue is bounded (default: 10). Having a
bounded queue also allows to ensure that all object-servers will get
the data at the same rate because if one queue is full, the
greenthread reading from the client socket will block when trying to
write to the queue. So the global rate is the one of the slowest
object-server.

The thing is, every operating system manages socket buffers for incoming
and outgoing data. Concerning the send buffer, the behavior is such that
if the buffer is full, a call to write() will block, otherwise the call
will return immediately. It behaves a lot like the Putter's Queue,
except that the size of the buffer is dynamic so it adapts itself to the
speed of the receiver.

Thus, managing a queue in addition to the socket send buffer is a
duplicate queueing/buffering that provides no interest but is, as shown
by profiling and benchmarks, very CPU costly.

This patch removes the queuing mecanism. Instead, the greenthread
reading data from the client will directly write to the socket. If an
object-server is getting slow, the buffer will fulfill, blocking the
reader greenthread. Benchmark shows a CPU consumption reduction of more
than 30% will the observed rate for an upload is increasing by about
45%.

Change-Id: Icf8f800cb25096f93d3faa1e6ec091eb29500758
2019-11-07 18:01:58 +08:00
Chris Smart
a505d02b37 Tweak Swift AIO docs, update CentOS and Fedora
The Swift AIO documentation is out of date for CentOS and Fedora.

This patch updates the documentation to ensure that the instructions are
clear and accurate.

It also cleans up a few other sections along the way and adds some new
headings to make it easier to read. Some explanatory notes are added,
such as the need for XFS storage and test directories. XFS tmp loopback
device is moved out of the user's home directory to /srv to match
storage.

Change-Id: Ieb0341536b7149c99139a1cf620828eba25f4bc6
Signed-off-by: Chris Smart <chris.smart@humanservices.gov.au>
2019-11-02 20:48:47 +11:00
Tim Burke
2ac50079c1 docs: Fix then/than grammar
Change-Id: I948d65d0d3b58fcb13f8141fe095ccad4b8f1425
Closes-Bug: #1848485
2019-10-17 09:52:50 -07:00
Matthew Oliver
0217b12b6d PDF Documentation Build tox target
This patch adds a `pdf-docs` tox target that will build
PDF versions of our docs. As per the Train community goal:

  https://governance.openstack.org/tc/goals/selected/train/pdf-doc-generation.html

Add sphinxcontrib-svg2pdfconverter to doc/requirements.txt
to convert our SVGs.

Story: 2006122
Task: 35515
Change-Id: I26cefda80d3234df68d7152b404e0a71da74ab90
2019-10-01 15:47:11 -07:00
Zuul
4bd9003221 Merge "py3: Update Getting Started docs" 2019-08-31 00:50:09 +00:00
Tim Burke
3e4efb7aa4 py3: Update Getting Started docs
Change-Id: I94050c40585b397a9f7bab1e48650b89f70ab24d
2019-08-29 16:55:27 -07:00
Ondřej Nový
a32fb30c16 Use SOURCE_DATE_EPOCH in docs to make build reproducible
Set copyright year and html_last_updated_fmt to SOURCE_DATE_EPOCH if
it's set. See https://reproducible-builds.org/specs/source-date-epoch/

This patch make build reproducible, see https://reproducible-builds.org/

Change-Id: I730a8265ca2c70c639ef77a613908e84eb738b70
2019-08-24 21:04:22 +02:00
Zuul
186346443d Merge "Fixing broken links" 2019-08-16 12:21:57 +00:00
Alexandra Settle
0c16fd9536 Fixing broken links
Small changes, but helpful, mostly.

Backport: stein rocky

Change-Id: Ic4b6524d7804d2f74b2973b6acdb9e2679209cd4
2019-08-16 11:45:52 +00:00
Thiago da Silva
9e9c363361 fix ec overview doc formatting
Change-Id: I3fee824e4fdc21aac21a6bb97f24a82d8ea3577d
2019-08-14 18:00:50 +02:00
Andreas Jaeger
097a62cad3 Fix broken API-ref link
The URL is object-store, not object-storage. Fix one occurence.

Change-Id: I08ed3b19cbe0024fd67a6fb7a7a6db0d9084976b
2019-07-26 11:49:15 +02:00
Andreas Jaeger
73ec8f15df Update api-ref location
The api documentation is now published on docs.openstack.org instead
of developer.openstack.org. Update all links that are changed to the
new location.

Note that the Swift API lives at /object-store and not /object-storage.

Note that redirects will be set up as well but let's point now to the
new location.

For details, see:
http://lists.openstack.org/pipermail/openstack-discuss/2019-July/007828.html

Change-Id: Ie38357e4c278335c35d186708573bb6bdabaa012
2019-07-22 19:17:55 +02:00
zengjia
0ae1ad63c1 Update auth_url in install docs
Beginning with the Queens release, the keystone install guide
recommends running all interfaces on the same port.This patch
updates the swift install guide to reflect that change

Change-Id: Id00cfd2c921da352abdbbbb6668b921f3cb31a1a
Closes-bug: #1754104
2019-07-11 15:03:16 +08:00
Zuul
f75167d925 Merge "Remove nobarrier option" 2019-06-19 03:21:29 +00:00
Thiago da Silva
4ab3706b75 Remove nobarrier option
XFS no longer supports nobarrier mount option.
It has been deprecated for a long time[1] and removed in
recent kernel versions resulting in an error when trying to
mount: "kernel: XFS (loop0): unknown mount option [nobarrier]."

[1] - https://patchwork.kernel.org/patch/9486549/

Change-Id: Iaa9208fb20545ae9ac990f0e180899108d983123
2019-06-18 14:47:39 +01:00
Thiago da Silva
ccd3b890cd Enable s3api in saio docker container
Change-Id: Ie759c4092408a210d32f6457142457087343d33a
2019-06-17 14:54:11 +01:00