5202b0e586
Refactor on-disk knowledge out of the object server by pushing the async update pickle creation to the new DiskFileManager class (name is not the best, so suggestions welcome), along with the REPLICATOR method logic. We also move the mount checking and thread pool storage to the new ondisk.Devices object, which then also becomes the new home of the audit_location_generator method. For the object server, a new setup() method is now called at the end of the controller's construction, and the _diskfile() method has been renamed to get_diskfile(), to allow implementation specific behavior. We then hide the need for the REST API layer to know how and where quarantining needs to be performed. There are now two places it is checked internally, on open() where we verify the content-length, name, and x-timestamp metadata, and in the reader on close where the etag metadata is checked if the entire file was read. We add a reader class to allow implementations to isolate the WSGI handling code for that specific environment (it is used no-where else in the REST APIs). This simplifies the caller's code to just use a "with" statement once open to avoid multiple points where close needs to be called. For a full historical comparison, including the usage patterns see: https://gist.github.com/portante/5488238 (as of master, 2b639f5, Merge "Fix 500 from account-quota This Commit middleware") --------------------------------+------------------------------------ DiskFileManager(conf) Methods: .pickle_async_update() .get_diskfile() .get_hashes() Attributes: .devices .logger .disk_chunk_size .keep_cache_size .bytes_per_sync DiskFile(a,c,o,keep_data_fp=) DiskFile(a,c,o) Methods: Methods: *.__iter__() .close(verify_file=) .is_deleted() .is_expired() .quarantine() .get_data_file_size() .open() .read_metadata() .create() .create() .write_metadata() .delete() .delete() Attributes: Attributes: .quarantined_dir .keep_cache .metadata *DiskFileReader() Methods: .__iter__() .close() Attributes: +.was_quarantined DiskWriter() DiskFileWriter() Methods: Methods: .write() .write() .put() .put() * Note that the DiskFile class * Note that the DiskReader() object implements all the methods returned by the necessary for a WSGI app DiskFileOpened.reader() method iterator implements all the methods necessary for a WSGI app iterator + Note that if the auditor is refactored to not use the DiskFile class, see https://review.openstack.org/44787 then we don't need the was_quarantined attribute A reference "in-memory" object server implementation of a backend DiskFile class in swift/obj/mem_server.py and swift/obj/mem_diskfile.py. One can also reference https://github.com/portante/gluster-swift/commits/diskfile for the proposed integration with the gluster-swift code based on these changes. Change-Id: I44e153fdb405a5743e9c05349008f94136764916 Signed-off-by: Peter Portante <peter.portante@redhat.com>
104 lines
2.4 KiB
ReStructuredText
104 lines
2.4 KiB
ReStructuredText
..
|
|
Copyright 2010-2012 OpenStack Foundation
|
|
All Rights Reserved.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
not use this file except in compliance with the License. You may obtain
|
|
a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
License for the specific language governing permissions and limitations
|
|
under the License.
|
|
|
|
Welcome to Swift's documentation!
|
|
=================================
|
|
|
|
Swift is a highly available, distributed, eventually consistent object/blob
|
|
store. Organizations can use Swift to store lots of data efficiently, safely, and cheaply.
|
|
|
|
This documentation is generated by the Sphinx toolkit and lives in the source
|
|
tree. Additional documentation on Swift and other components of OpenStack can
|
|
be found on the `OpenStack wiki`_ and at http://docs.openstack.org.
|
|
|
|
.. _`OpenStack wiki`: http://wiki.openstack.org
|
|
|
|
.. note::
|
|
|
|
If you're looking for associated projects that enhance or use Swift, please see the :ref:`associated_projects` page.
|
|
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
|
|
getting_started
|
|
|
|
Overview and Concepts
|
|
=====================
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
|
|
Swift's API docs <http://docs.openstack.org/api/openstack-object-storage/1.0/content/>
|
|
overview_architecture
|
|
overview_ring
|
|
overview_reaper
|
|
overview_auth
|
|
overview_replication
|
|
ratelimit
|
|
overview_large_objects
|
|
overview_object_versioning
|
|
overview_container_sync
|
|
overview_expiring_objects
|
|
cors
|
|
crossdomain
|
|
associated_projects
|
|
|
|
Developer Documentation
|
|
=======================
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
|
|
development_guidelines
|
|
development_saio
|
|
development_auth
|
|
development_ondisk_backends
|
|
|
|
Administrator Documentation
|
|
===========================
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
|
|
howto_installmultinode
|
|
deployment_guide
|
|
apache_deployment_guide
|
|
admin_guide
|
|
replication_network
|
|
|
|
Source Documentation
|
|
====================
|
|
|
|
.. toctree::
|
|
:maxdepth: 2
|
|
|
|
ring
|
|
proxy
|
|
account
|
|
container
|
|
db
|
|
object
|
|
misc
|
|
|
|
|
|
Indices and tables
|
|
==================
|
|
|
|
* :ref:`genindex`
|
|
* :ref:`modindex`
|
|
* :ref:`search`
|