summaryrefslogtreecommitdiffstats
path: root/swift/1.4.8
diff options
context:
space:
mode:
authorPeter Portante <peter.portante@redhat.com>2012-11-08 01:16:56 -0500
committerVijay Bellur <vbellur@redhat.com>2012-11-16 04:52:26 -0800
commit1129698a490ac9266b1f613fababdf524e11f887 (patch)
tree0a4e22d7657c66cd36ce759bc095cba96eae95b4 /swift/1.4.8
parente8d95655d5e73462723799d20e59bc4f21bdf973 (diff)
object-storage: final changes to remove swift diff
Final set of changes to remove the diffs carried to make UFO work with OpenStack Swift. The code is now a complete layering on top of OpenStack Swift where we either "monkey patch" or subclass as necessary. See BZ 870589 (https://bugzilla.redhat.com/show_bug.cgi?id=870589). There are a lot of changes here due for the most part to rearranging the directory hierarchy to have create a proper python module hierarchy under the "gluster" namespace. Plugin references have been removed. The differences that used to be in the swift.diff file are now replaced with server implementations for account, container, object, and proxy that subclass the swift versions. Additionally, the plugins/conf directory has been moved to the "etc" directory, and the plugins/bin directory promoted a level. Unit tests pass. A new setup.py file is provided so that the install process can use it for creating all the necessary python install infrastructure (eggs and paste support). A new RPM spec file is provided which to properly install the new code, and the sample configuration files have been modified to reference the new python egg. Change-Id: I4316c1b66dca80f847fe9b0d583174689c175599 BUG: 870589 Signed-off-by: Peter Portante <peter.portante@redhat.com> Reviewed-on: http://review.gluster.org/4180 Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com> Reviewed-by: Mohammed Junaid <junaid@redhat.com> Tested-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Diffstat (limited to 'swift/1.4.8')
-rwxr-xr-xswift/1.4.8/.unittests2
-rw-r--r--swift/1.4.8/README12
-rwxr-xr-xswift/1.4.8/bin/gluster-swift-gen-builders (renamed from swift/1.4.8/plugins/bin/gluster-swift-gen-builders)0
-rw-r--r--swift/1.4.8/etc/account-server/1.conf-gluster (renamed from swift/1.4.8/plugins/conf/account-server/1.conf-gluster)4
-rw-r--r--swift/1.4.8/etc/container-server/1.conf-gluster (renamed from swift/1.4.8/plugins/conf/container-server/1.conf-gluster)4
-rw-r--r--swift/1.4.8/etc/fs.conf-gluster13
-rw-r--r--swift/1.4.8/etc/object-server/1.conf-gluster (renamed from swift/1.4.8/plugins/conf/object-server/1.conf-gluster)4
-rw-r--r--swift/1.4.8/etc/proxy-server.conf-gluster (renamed from swift/1.4.8/plugins/conf/proxy-server.conf-gluster)7
-rw-r--r--swift/1.4.8/etc/swift.conf-gluster (renamed from swift/1.4.8/plugins/conf/swift.conf-gluster)1
-rw-r--r--swift/1.4.8/gluster-swift-ufo.spec (renamed from swift/1.4.8/gluster-swift-plugin.spec)59
-rw-r--r--swift/1.4.8/gluster-swift.spec396
-rw-r--r--swift/1.4.8/gluster/__init__.py (renamed from swift/1.4.8/plugins/__init__.py)0
-rw-r--r--swift/1.4.8/gluster/swift/__init__.py18
-rw-r--r--swift/1.4.8/gluster/swift/account/__init__.py (renamed from swift/1.4.8/plugins/middleware/__init__.py)0
-rw-r--r--swift/1.4.8/gluster/swift/account/server.py45
-rw-r--r--swift/1.4.8/gluster/swift/common/DiskDir.py (renamed from swift/1.4.8/plugins/DiskDir.py)17
-rw-r--r--swift/1.4.8/gluster/swift/common/DiskFile.py (renamed from swift/1.4.8/plugins/DiskFile.py)10
-rw-r--r--swift/1.4.8/gluster/swift/common/Glusterfs.py (renamed from swift/1.4.8/plugins/Glusterfs.py)7
-rw-r--r--swift/1.4.8/gluster/swift/common/__init__.py (renamed from swift/1.4.8/test/unit/plugins/__init__.py)0
-rw-r--r--swift/1.4.8/gluster/swift/common/constraints.py (renamed from swift/1.4.8/plugins/constraints.py)2
-rw-r--r--swift/1.4.8/gluster/swift/common/fs_utils.py (renamed from swift/1.4.8/plugins/fs_utils.py)0
-rw-r--r--swift/1.4.8/gluster/swift/common/middleware/__init__.py0
-rw-r--r--swift/1.4.8/gluster/swift/common/middleware/gluster.py (renamed from swift/1.4.8/plugins/middleware/gluster.py)2
-rw-r--r--swift/1.4.8/gluster/swift/common/utils.py (renamed from swift/1.4.8/plugins/utils.py)22
-rw-r--r--swift/1.4.8/gluster/swift/container/__init__.py0
-rw-r--r--swift/1.4.8/gluster/swift/container/server.py46
-rw-r--r--swift/1.4.8/gluster/swift/obj/__init__.py0
-rw-r--r--swift/1.4.8/gluster/swift/obj/server.py33
-rw-r--r--swift/1.4.8/gluster/swift/proxy/__init__.py0
-rw-r--r--swift/1.4.8/gluster/swift/proxy/server.py27
-rw-r--r--swift/1.4.8/plugins/conf/fs.conf-gluster8
-rw-r--r--swift/1.4.8/setup.py57
-rw-r--r--swift/1.4.8/swift.diff174
-rw-r--r--swift/1.4.8/test/unit/common/__init__.py0
-rw-r--r--swift/1.4.8/test/unit/common/data/account_tree.tar.bz2 (renamed from swift/1.4.8/test/unit/plugins/data/account_tree.tar.bz2)bin228 -> 228 bytes
-rw-r--r--swift/1.4.8/test/unit/common/data/container_tree.tar.bz2 (renamed from swift/1.4.8/test/unit/plugins/data/container_tree.tar.bz2)bin282 -> 282 bytes
-rw-r--r--swift/1.4.8/test/unit/common/test_utils.py (renamed from swift/1.4.8/test/unit/plugins/test_utils.py)10
37 files changed, 311 insertions, 669 deletions
diff --git a/swift/1.4.8/.unittests b/swift/1.4.8/.unittests
index 113e5dd1f0f..2cee10be531 100755
--- a/swift/1.4.8/.unittests
+++ b/swift/1.4.8/.unittests
@@ -1,6 +1,6 @@
#!/bin/bash
cd test/unit
-nosetests --exe --with-coverage --cover-package plugins --cover-erase $@
+nosetests --exe --with-coverage --cover-package gluster --cover-erase $@
rm -f .coverage
cd -
diff --git a/swift/1.4.8/README b/swift/1.4.8/README
index 18435e08a7e..9efd918b59a 100644
--- a/swift/1.4.8/README
+++ b/swift/1.4.8/README
@@ -3,20 +3,14 @@ via gluster-native/nfs mount to be accessed as containers and objects. It is
a plugin for OpenStack Swift project.
Install
-* Clone the swift repo from git://github.com/openstack/swift.git
-* Apply the swift.diff present in glusterfs.git/swift/1.4.8 to the swift repo.
-* Create a directory named "plugins" under swift.git/swift directory.
-* Copy the contents of glusterfs.git/swift/1.4.8/plugins/ under swift.git/swift/
- except the conf directory.
-* Copy the contents of glusterfs.git/swift/1.4.8/plugins/conf under /etc/swift/.
-* Run python setup.py install
+ * TBD
Once this is done, you can access the GlusterFS volumes as Swift accounts.
Add the Volume names with the user-name and its corresponding password to the
/etc/swift/proxy-server.conf (follow the syntax used in the sample conf file).
-Command to start the servers
+Command to start the servers (TBD)
swift-init main start
-Command to stop the servers
+Command to stop the servers (TBD)
swift-init main stop
diff --git a/swift/1.4.8/plugins/bin/gluster-swift-gen-builders b/swift/1.4.8/bin/gluster-swift-gen-builders
index b89cd15fb00..b89cd15fb00 100755
--- a/swift/1.4.8/plugins/bin/gluster-swift-gen-builders
+++ b/swift/1.4.8/bin/gluster-swift-gen-builders
diff --git a/swift/1.4.8/plugins/conf/account-server/1.conf-gluster b/swift/1.4.8/etc/account-server/1.conf-gluster
index c7a4c10a4fc..da8f3172634 100644
--- a/swift/1.4.8/plugins/conf/account-server/1.conf-gluster
+++ b/swift/1.4.8/etc/account-server/1.conf-gluster
@@ -1,7 +1,7 @@
[DEFAULT]
devices = /mnt/gluster-object
mount_check = true
-bind_port = 6012 # Be sure to keep in sync with /usr/bin/gluster-swift-gen-builders
+bind_port = 6012
user = root
log_facility = LOG_LOCAL2
@@ -9,7 +9,7 @@ log_facility = LOG_LOCAL2
pipeline = account-server
[app:account-server]
-use = egg:swift#account
+use = egg:gluster_swift_ufo#account
[account-replicator]
vm_test_mode = yes
diff --git a/swift/1.4.8/plugins/conf/container-server/1.conf-gluster b/swift/1.4.8/etc/container-server/1.conf-gluster
index 2b97eef6241..acad6213543 100644
--- a/swift/1.4.8/plugins/conf/container-server/1.conf-gluster
+++ b/swift/1.4.8/etc/container-server/1.conf-gluster
@@ -1,7 +1,7 @@
[DEFAULT]
devices = /mnt/gluster-object
mount_check = true
-bind_port = 6011 # Be sure to keep in sync with /usr/bin/gluster-swift-gen-builders
+bind_port = 6011
user = root
log_facility = LOG_LOCAL2
@@ -9,7 +9,7 @@ log_facility = LOG_LOCAL2
pipeline = container-server
[app:container-server]
-use = egg:swift#container
+use = egg:gluster_swift_ufo#container
[container-replicator]
vm_test_mode = yes
diff --git a/swift/1.4.8/etc/fs.conf-gluster b/swift/1.4.8/etc/fs.conf-gluster
new file mode 100644
index 00000000000..bbbdc2bd10d
--- /dev/null
+++ b/swift/1.4.8/etc/fs.conf-gluster
@@ -0,0 +1,13 @@
+[DEFAULT]
+# IP address of a GlusterFS volume server member. By default, we assume the
+# local host.
+mount_ip = localhost
+
+# The GlusterFS server need not be local, a remote server can also be used
+# by setting "remote_cluster = yes".
+remote_cluster = no
+
+# By default it is assumed the Gluster volumes can be accessed using other
+# methods besides UFO (not object only), which disables a caching
+# optimizations in order to keep in sync with file system changes.
+object_only = no
diff --git a/swift/1.4.8/plugins/conf/object-server/1.conf-gluster b/swift/1.4.8/etc/object-server/1.conf-gluster
index 62e2fb49624..fe157a9b53d 100644
--- a/swift/1.4.8/plugins/conf/object-server/1.conf-gluster
+++ b/swift/1.4.8/etc/object-server/1.conf-gluster
@@ -1,7 +1,7 @@
[DEFAULT]
devices = /mnt/gluster-object
mount_check = true
-bind_port = 6010 # Be sure to keep in sync with /usr/bin/gluster-swift-gen-builders
+bind_port = 6010
user = root
log_facility = LOG_LOCAL2
@@ -9,7 +9,7 @@ log_facility = LOG_LOCAL2
pipeline = object-server
[app:object-server]
-use = egg:swift#object
+use = egg:gluster_swift_ufo#object
[object-replicator]
vm_test_mode = yes
diff --git a/swift/1.4.8/plugins/conf/proxy-server.conf-gluster b/swift/1.4.8/etc/proxy-server.conf-gluster
index b5e1f6f3515..30eb745bff8 100644
--- a/swift/1.4.8/plugins/conf/proxy-server.conf-gluster
+++ b/swift/1.4.8/etc/proxy-server.conf-gluster
@@ -4,10 +4,10 @@ user = root
log_facility = LOG_LOCAL1
[pipeline:main]
-pipeline = healthcheck cache tempauth gluster proxy-server
+pipeline = healthcheck cache tempauth proxy-server
[app:proxy-server]
-use = egg:swift#proxy
+use = egg:gluster_swift_ufo#proxy
allow_account_management = true
account_autocreate = true
@@ -31,6 +31,3 @@ use = egg:swift#healthcheck
[filter:cache]
use = egg:swift#memcache
-
-[filter:gluster]
-use = egg:swift#gluster
diff --git a/swift/1.4.8/plugins/conf/swift.conf-gluster b/swift/1.4.8/etc/swift.conf-gluster
index e506b6f54a8..25c3ca1571f 100644
--- a/swift/1.4.8/plugins/conf/swift.conf-gluster
+++ b/swift/1.4.8/etc/swift.conf-gluster
@@ -1,5 +1,4 @@
[DEFAULT]
-Enable_plugin = yes
[swift-hash]
diff --git a/swift/1.4.8/gluster-swift-plugin.spec b/swift/1.4.8/gluster-swift-ufo.spec
index 0a1637dc664..55b192a27ed 100644
--- a/swift/1.4.8/gluster-swift-plugin.spec
+++ b/swift/1.4.8/gluster-swift-ufo.spec
@@ -4,19 +4,22 @@
############################################################################################################
# Setting up the environment. #
# * Create a directory %{name}-%{version} under $HOME/rpmbuild/SOURCES #
-# * Copy the contents of plugins directory into $HOME/rpmbuild/SOURCES/%{name}-%{version} #
+# * Copy the contents of gluster directory into $HOME/rpmbuild/SOURCES/%{name}-%{version} #
# * tar zcvf %{name}-%{version}-%{release}.tar.gz $HOME/rpmbuild/SOURCES/%{name}-%{version} %{name}.spec #
# For more information refer #
# http://fedoraproject.org/wiki/How_to_create_an_RPM_package #
############################################################################################################
+%if ! (0%{?fedora} > 12 || 0%{?rhel} > 5)
+%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
+%endif
+
%define _confdir /etc/swift
-%define _swiftdir /usr/lib/python2.6/site-packages/swift
-%define _ufo_version 1.0
-%define _ufo_release 12
+%define _ufo_version 1.1
+%define _ufo_release 1
Summary : GlusterFS Unified File and Object Storage.
-Name : gluster-swift-plugin
+Name : gluster-swift-ufo
Version : %{_ufo_version}
Release : %{_ufo_release}
Group : Application/File
@@ -28,7 +31,14 @@ BuildArch: noarch
Requires : memcached
Requires : openssl
Requires : python
-Requires : gluster-swift
+#Requires : openstack-swift >= 1.4.8
+#Requires : openstack-swift-account >= 1.4.8
+#Requires : openstack-swift-auth >= 1.4.8
+#Requires : openstack-swift-container >= 1.4.8
+#Requires : openstack-swift-object >= 1.4.8
+#Requires : openstack-swift-proxy >= 1.4.8
+#Obsoletes: gluster-swift
+#Obsoletes: gluster-swift-plugin
%description
Gluster Unified File and Object Storage unifies NAS and object storage
@@ -39,33 +49,36 @@ storage costs.
%prep
%setup -q
+%build
+%{__python} setup.py build
+
%install
rm -rf %{buildroot}
-mkdir -p %{buildroot}/%{_swiftdir}/plugins/middleware
-mkdir -p %{buildroot}/%{_confdir}/
-mkdir -p %{buildroot}/%{_bindir}/
+%{__python} setup.py install -O1 --skip-build --root %{buildroot}
-cp constraints.py %{buildroot}/%{_swiftdir}/plugins
-cp DiskDir.py %{buildroot}/%{_swiftdir}/plugins
-cp DiskFile.py %{buildroot}/%{_swiftdir}/plugins
-cp Glusterfs.py %{buildroot}/%{_swiftdir}/plugins
-cp __init__.py %{buildroot}/%{_swiftdir}/plugins
-cp utils.py %{buildroot}/%{_swiftdir}/plugins
-cp fs_utils.py %{buildroot}/%{_swiftdir}/plugins
+mkdir -p %{buildroot}/%{_confdir}/
+cp -r etc/* %{buildroot}/%{_confdir}/
-cp middleware/__init__.py %{buildroot}/%{_swiftdir}/plugins/middleware
-cp middleware/gluster.py %{buildroot}/%{_swiftdir}/plugins/middleware
+mkdir -p %{buildroot}/%{_bindir}/
+cp bin/gluster-swift-gen-builders %{buildroot}/%{_bindir}/
-cp -r conf/* %{buildroot}/%{_confdir}/
-
-cp bin/gluster-swift-gen-builders %{buildroot}/%{_bindir}/
+%clean
+rm -rf %{buildroot}
%files
%defattr(-,root,root)
-%docdir conf
-%{_swiftdir}/plugins
+%{python_sitelib}/gluster
+#%{python_sitelib}/gluster/swift/*.py*
+#%{python_sitelib}/gluster/swift/common/*.py*
+#%{python_sitelib}/gluster/swift/common/middleware
+#%{python_sitelib}/gluster/swift/proxy
+#%{python_sitelib}/gluster/swift/obj
+#%{python_sitelib}/gluster/swift/container
+#%{python_sitelib}/gluster/swift/account
+%{python_sitelib}/gluster_swift_ufo-%{version}-*.egg-info
%{_bindir}/gluster-swift-gen-builders
+%dir %{_sysconfdir}/swift
%config %{_confdir}/account-server/1.conf-gluster
%config %{_confdir}/container-server/1.conf-gluster
%config %{_confdir}/object-server/1.conf-gluster
diff --git a/swift/1.4.8/gluster-swift.spec b/swift/1.4.8/gluster-swift.spec
deleted file mode 100644
index a525e9e4a83..00000000000
--- a/swift/1.4.8/gluster-swift.spec
+++ /dev/null
@@ -1,396 +0,0 @@
-%if ! (0%{?fedora} > 12 || 0%{?rhel} > 5)
-%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
-%endif
-
-Name: gluster-swift
-Version: 1.4.8
-Release: 12%{?dist}
-Summary: OpenStack Object Storage (swift)
-
-Group: Development/Languages
-License: ASL 2.0
-URL: http://launchpad.net/swift
-Source0: http://launchpad.net/swift/essex/%{version}/+download/swift-%{version}.tar.gz
-Source1: %{name}-functions
-Source2: %{name}-account.init
-Source4: %{name}-container.init
-Source5: %{name}-object.init
-Source6: %{name}-proxy.init
-Patch0: openstack-swift-newdeps.patch
-Patch1: openstack-swift-docmod.patch
-Patch2: openstack-swift-nonet.patch
-Patch3: gluster.patch
-
-BuildRoot: %{_tmppath}/swift-%{version}-%{release}-root-%(%{__id_u} -n)
-
-BuildArch: noarch
-BuildRequires: dos2unix
-BuildRequires: python-devel
-BuildRequires: python-setuptools
-BuildRequires: python-netifaces
-BuildRequires: python-paste-deploy
-Requires: python-configobj
-Requires: python-eventlet >= 0.9.8
-Requires: python-greenlet >= 0.3.1
-Requires: python-paste-deploy
-Requires: python-simplejson
-Requires: python-webob1.0
-Requires: pyxattr
-Requires: python-setuptools
-Requires: python-netifaces
-Requires: python-netifaces
-
-Conflicts: openstack-swift
-
-Requires(post): chkconfig
-Requires(postun): initscripts
-Requires(preun): chkconfig
-Requires(pre): shadow-utils
-Obsoletes: openstack-swift-auth <= 1.4.0
-
-%description
-OpenStack Object Storage (swift) aggregates commodity servers to work together
-in clusters for reliable, redundant, and large-scale storage of static objects.
-Objects are written to multiple hardware devices in the data center, with the
-OpenStack software responsible for ensuring data replication and integrity
-across the cluster. Storage clusters can scale horizontally by adding new nodes,
-which are automatically configured. Should a node fail, OpenStack works to
-replicate its content from other active nodes. Because OpenStack uses software
-logic to ensure data replication and distribution across different devices,
-inexpensive commodity hard drives and servers can be used in lieu of more
-expensive equipment.
-
-%package account
-Summary: A swift account server
-Group: Applications/System
-
-Requires: %{name} = %{version}-%{release}
-
-%description account
-OpenStack Object Storage (swift) aggregates commodity servers to work together
-in clusters for reliable, redundant, and large-scale storage of static objects.
-
-This package contains the %{name} account server.
-
-%package container
-Summary: A swift container server
-Group: Applications/System
-
-Requires: %{name} = %{version}-%{release}
-
-%description container
-OpenStack Object Storage (swift) aggregates commodity servers to work together
-in clusters for reliable, redundant, and large-scale storage of static objects.
-
-This package contains the %{name} container server.
-
-%package object
-Summary: A swift object server
-Group: Applications/System
-
-Requires: %{name} = %{version}-%{release}
-Requires: rsync >= 3.0
-
-%description object
-OpenStack Object Storage (swift) aggregates commodity servers to work together
-in clusters for reliable, redundant, and large-scale storage of static objects.
-
-This package contains the %{name} object server.
-
-%package proxy
-Summary: A swift proxy server
-Group: Applications/System
-
-Requires: %{name} = %{version}-%{release}
-
-%description proxy
-OpenStack Object Storage (swift) aggregates commodity servers to work together
-in clusters for reliable, redundant, and large-scale storage of static objects.
-
-This package contains the %{name} proxy server.
-
-%package doc
-Summary: Documentation for %{name}
-Group: Documentation
-#%if 0%{?rhel} >= 6
-#BuildRequires: python-sphinx10 >= 1.0
-#%endif
-%if 0%{?fedora} >= 14
-BuildRequires: python-sphinx >= 1.0
-%endif
-# Required for generating docs
-BuildRequires: python-eventlet
-BuildRequires: python-simplejson
-BuildRequires: python-webob1.0
-BuildRequires: pyxattr
-
-%description doc
-OpenStack Object Storage (swift) aggregates commodity servers to work together
-in clusters for reliable, redundant, and large-scale storage of static objects.
-
-This package contains documentation files for %{name}.
-
-%prep
-%setup -q -n swift-%{version}
-%patch0 -p1 -b .newdeps
-%patch1 -p1 -b .docmod
-%patch2 -p1 -b .nonet
-%patch3 -p1 -b .gluster
-# Fix wrong-file-end-of-line-encoding warning
-dos2unix LICENSE
-
-%build
-%{__python} setup.py build
-# Fails unless we create the build directory
-mkdir -p doc/build
-# Build docs
-%if 0%{?fedora} >= 14
-%{__python} setup.py build_sphinx
-%endif
-#%if 0%{?rhel} >= 6
-#export PYTHONPATH="$( pwd ):$PYTHONPATH"
-#SPHINX_DEBUG=1 sphinx-1.0-build -b html doc/source doc/build/html
-#SPHINX_DEBUG=1 sphinx-1.0-build -b man doc/source doc/build/man
-#%endif
-# Fix hidden-file-or-dir warning
-#rm doc/build/html/.buildinfo
-
-%install
-rm -rf %{buildroot}
-%{__python} setup.py install -O1 --skip-build --root %{buildroot}
-# Init helper functions
-install -p -D -m 644 %{SOURCE1} %{buildroot}%{_datarootdir}/%{name}/functions
-# Init scripts
-install -p -D -m 755 %{SOURCE2} %{buildroot}%{_initrddir}/%{name}-account
-install -p -D -m 755 %{SOURCE4} %{buildroot}%{_initrddir}/%{name}-container
-install -p -D -m 755 %{SOURCE5} %{buildroot}%{_initrddir}/%{name}-object
-install -p -D -m 755 %{SOURCE6} %{buildroot}%{_initrddir}/%{name}-proxy
-# Remove tests
-rm -fr %{buildroot}/%{python_sitelib}/test
-# Misc other
-install -d -m 755 %{buildroot}%{_sysconfdir}/swift
-install -d -m 755 %{buildroot}%{_sysconfdir}/swift/account-server
-install -d -m 755 %{buildroot}%{_sysconfdir}/swift/container-server
-install -d -m 755 %{buildroot}%{_sysconfdir}/swift/object-server
-install -d -m 755 %{buildroot}%{_sysconfdir}/swift/proxy-server
-# Install pid directory
-install -d -m 755 %{buildroot}%{_localstatedir}/run/swift
-install -d -m 755 %{buildroot}%{_localstatedir}/run/swift/account-server
-install -d -m 755 %{buildroot}%{_localstatedir}/run/swift/container-server
-install -d -m 755 %{buildroot}%{_localstatedir}/run/swift/object-server
-install -d -m 755 %{buildroot}%{_localstatedir}/run/swift/proxy-server
-
-%clean
-rm -rf %{buildroot}
-
-%pre
-getent group swift >/dev/null || groupadd -r swift -g 160
-getent passwd swift >/dev/null || \
-useradd -r -g swift -u 160 -d %{_sharedstatedir}/swift -s /sbin/nologin \
--c "OpenStack Swift Daemons" swift
-exit 0
-
-%post account
-/sbin/chkconfig --add %{name}-account
-
-%preun account
-if [ $1 = 0 ] ; then
- /sbin/service %{name}-account stop >/dev/null 2>&1
- /sbin/chkconfig --del %{name}-account
-fi
-
-%postun account
-if [ "$1" -ge "1" ] ; then
- /sbin/service %{name}-account condrestart >/dev/null 2>&1 || :
-fi
-
-%post container
-/sbin/chkconfig --add %{name}-container
-
-%preun container
-if [ $1 = 0 ] ; then
- /sbin/service %{name}-container stop >/dev/null 2>&1
- /sbin/chkconfig --del %{name}-container
-fi
-
-%postun container
-if [ "$1" -ge "1" ] ; then
- /sbin/service %{name}-container condrestart >/dev/null 2>&1 || :
-fi
-
-%post object
-/sbin/chkconfig --add %{name}-object
-
-%preun object
-if [ $1 = 0 ] ; then
- /sbin/service %{name}-object stop >/dev/null 2>&1
- /sbin/chkconfig --del %{name}-object
-fi
-
-%postun object
-if [ "$1" -ge "1" ] ; then
- /sbin/service %{name}-object condrestart >/dev/null 2>&1 || :
-fi
-
-%post proxy
-/sbin/chkconfig --add %{name}-proxy
-
-%preun proxy
-if [ $1 = 0 ] ; then
- /sbin/service %{name}-proxy stop >/dev/null 2>&1
- /sbin/chkconfig --del %{name}-proxy
-fi
-
-%postun proxy
-if [ "$1" -ge "1" ] ; then
- /sbin/service %{name}-proxy condrestart >/dev/null 2>&1 || :
-fi
-
-%files
-%defattr(-,root,root,-)
-%doc AUTHORS LICENSE README
-%doc etc/dispersion.conf-sample etc/drive-audit.conf-sample etc/object-expirer.conf-sample
-%doc etc/swift.conf-sample
-%dir %{_datarootdir}/%{name}/functions
-%dir %attr(0755, swift, swift) %{_localstatedir}/run/swift
-%dir %{_sysconfdir}/swift
-%dir %{python_sitelib}/swift
-%{_bindir}/swift
-%{_bindir}/swift-account-audit
-%{_bindir}/swift-bench
-%{_bindir}/swift-drive-audit
-%{_bindir}/swift-get-nodes
-%{_bindir}/swift-init
-%{_bindir}/swift-ring-builder
-%{_bindir}/swift-dispersion-populate
-%{_bindir}/swift-dispersion-report
-%{_bindir}/swift-recon*
-%{_bindir}/swift-object-expirer
-%{_bindir}/swift-oldies
-%{_bindir}/swift-orphans
-%{_bindir}/swift-form-signature
-%{_bindir}/swift-temp-url
-%{python_sitelib}/swift/*.py*
-%{python_sitelib}/swift/common
-%{python_sitelib}/swift-%{version}-*.egg-info
-
-%files account
-%defattr(-,root,root,-)
-%doc etc/account-server.conf-sample
-%dir %{_initrddir}/%{name}-account
-%dir %attr(0755, swift, swift) %{_localstatedir}/run/swift/account-server
-%dir %{_sysconfdir}/swift/account-server
-%{_bindir}/swift-account-auditor
-%{_bindir}/swift-account-reaper
-%{_bindir}/swift-account-replicator
-%{_bindir}/swift-account-server
-%{python_sitelib}/swift/account
-
-
-%files container
-%defattr(-,root,root,-)
-%doc etc/container-server.conf-sample
-%dir %{_initrddir}/%{name}-container
-%dir %attr(0755, swift, swift) %{_localstatedir}/run/swift/container-server
-%dir %{_sysconfdir}/swift/container-server
-%{_bindir}/swift-container-auditor
-%{_bindir}/swift-container-server
-%{_bindir}/swift-container-replicator
-%{_bindir}/swift-container-updater
-%{_bindir}/swift-container-sync
-%{python_sitelib}/swift/container
-
-%files object
-%defattr(-,root,root,-)
-%doc etc/object-server.conf-sample etc/rsyncd.conf-sample
-%dir %{_initrddir}/%{name}-object
-%dir %attr(0755, swift, swift) %{_localstatedir}/run/swift/object-server
-%dir %{_sysconfdir}/swift/object-server
-%{_bindir}/swift-object-auditor
-%{_bindir}/swift-object-info
-%{_bindir}/swift-object-replicator
-%{_bindir}/swift-object-server
-%{_bindir}/swift-object-updater
-%{python_sitelib}/swift/obj
-
-%files proxy
-%defattr(-,root,root,-)
-%doc etc/proxy-server.conf-sample
-%dir %{_initrddir}/%{name}-proxy
-%dir %attr(0755, swift, swift) %{_localstatedir}/run/swift/proxy-server
-%dir %{_sysconfdir}/swift/proxy-server
-%{_bindir}/swift-proxy-server
-%{python_sitelib}/swift/proxy
-
-%files doc
-%defattr(-,root,root,-)
-%doc LICENSE
-#%doc doc/build/html
-
-%changelog
-* Thu Apr 26 2012 Anthony Towns <atowns@redhat.com> 1.4.8-2
-- Apply gluster patches
-- Rename to gluster-swift
-
-* Thu Mar 22 2012 Alan Pevec <apevec@redhat.com> 1.4.8-1
-- Update to 1.4.8
-
-* Fri Mar 09 2012 Alan Pevec <apevec@redhat.com> 1.4.7-1
-- Update to 1.4.7
-
-* Mon Feb 13 2012 Alan Pevec <apevec@redhat.com> 1.4.6-1
-- Update to 1.4.6
-
-* Thu Jan 12 2012 Alan Pevec <apevec@redhat.com> 1.4.4-2
-- add back /var/run/swift for el6
-
-* Wed Jan 04 2012 Alan Pevec <apevec@redhat.com> 1.4.4-1
-- Use updated parallel install versions of epel packages (pbrady)
-- Ensure the docs aren't built with the system glance module (pbrady)
-- Ensure we don't access the net when building docs (pbrady)
-- Update to 1.4.4
-
-* Wed Nov 23 2011 David Nalley <david@gnsa.us> -1.4.3-2
-* fixed some missing requires
-
-* Sat Nov 05 2011 David Nalley <david@gnsa.us> - 1.4.3-1
-- Update to 1.4.3
-- fix init script add, registration, deletion BZ 685155
-- fixing BR to facilitate epel6 building
-
-* Tue Aug 23 2011 David Nalley <david@gnsa.us> - 1.4.0-2
-- adding uid:gid for bz 732693
-
-* Wed Jun 22 2011 David Nalley <david@gnsa.us> - 1.4.1-1
-- Update to 1.4.0
-- change the name of swift binary from st to swift
-
-* Sat Jun 04 2011 David Nalley <david@gnsa.us> - 1.4.0-1
-- Update to 1.4.0
-
-* Fri May 20 2011 David Nalley <david@gnsa.us> - 1.3.0-1
-- Update to 1.3.0
-
-* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.1.0-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
-
-* Sun Dec 05 2010 Silas Sewell <silas@sewell.ch> - 1.1.0-1
-- Update to 1.1.0
-
-* Sun Aug 08 2010 Silas Sewell <silas@sewell.ch> - 1.0.2-5
-- Update for new Python macro guidelines
-- Use dos2unix instead of sed
-- Make gecos field more descriptive
-
-* Wed Jul 28 2010 Silas Sewell <silas@sewell.ch> - 1.0.2-4
-- Rename to openstack-swift
-
-* Wed Jul 28 2010 Silas Sewell <silas@sewell.ch> - 1.0.2-3
-- Fix return value in swift-functions
-
-* Tue Jul 27 2010 Silas Sewell <silas@sewell.ch> - 1.0.2-2
-- Add swift user
-- Update init scripts
-
-* Sun Jul 18 2010 Silas Sewell <silas@sewell.ch> - 1.0.2-1
-- Initial build
diff --git a/swift/1.4.8/plugins/__init__.py b/swift/1.4.8/gluster/__init__.py
index e69de29bb2d..e69de29bb2d 100644
--- a/swift/1.4.8/plugins/__init__.py
+++ b/swift/1.4.8/gluster/__init__.py
diff --git a/swift/1.4.8/gluster/swift/__init__.py b/swift/1.4.8/gluster/swift/__init__.py
new file mode 100644
index 00000000000..17578ebee40
--- /dev/null
+++ b/swift/1.4.8/gluster/swift/__init__.py
@@ -0,0 +1,18 @@
+""" Gluster Swift UFO """
+
+class Version(object):
+ def __init__(self, canonical_version, final):
+ self.canonical_version = canonical_version
+ self.final = final
+
+ @property
+ def pretty_version(self):
+ if self.final:
+ return self.canonical_version
+ else:
+ return '%s-dev' % (self.canonical_version,)
+
+
+_version = Version('1.1', True)
+__version__ = _version.pretty_version
+__canonical_version__ = _version.canonical_version
diff --git a/swift/1.4.8/plugins/middleware/__init__.py b/swift/1.4.8/gluster/swift/account/__init__.py
index e69de29bb2d..e69de29bb2d 100644
--- a/swift/1.4.8/plugins/middleware/__init__.py
+++ b/swift/1.4.8/gluster/swift/account/__init__.py
diff --git a/swift/1.4.8/gluster/swift/account/server.py b/swift/1.4.8/gluster/swift/account/server.py
new file mode 100644
index 00000000000..8b98315790a
--- /dev/null
+++ b/swift/1.4.8/gluster/swift/account/server.py
@@ -0,0 +1,45 @@
+# Copyright (c) 2012 Red Hat, Inc.
+#
+# 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.
+
+""" Account Server for Gluster Swift UFO """
+
+# Simply importing this monkey patches the constraint handling to fit our
+# needs
+import gluster.swift.common.constraints
+
+from swift.account import server
+from gluster.swift.common.DiskDir import DiskAccount
+
+
+class AccountController(server.AccountController):
+ def _get_account_broker(self, drive, part, account):
+ """
+ Overriden to provide the GlusterFS specific broker that talks to
+ Gluster for the information related to servicing a given request
+ instead of talking to a database.
+
+ :param drive: drive that holds the container
+ :param part: partition the container is in
+ :param account: account name
+ :returns: DiskDir object
+ """
+ return DiskAccount(self.root, account, self.logger)
+
+
+def app_factory(global_conf, **local_conf):
+ """paste.deploy app factory for creating WSGI account server apps."""
+ conf = global_conf.copy()
+ conf.update(local_conf)
+ return AccountController(conf)
diff --git a/swift/1.4.8/plugins/DiskDir.py b/swift/1.4.8/gluster/swift/common/DiskDir.py
index b12827c582b..8602fabae83 100644
--- a/swift/1.4.8/plugins/DiskDir.py
+++ b/swift/1.4.8/gluster/swift/common/DiskDir.py
@@ -15,14 +15,15 @@
import os, errno
-from swift.plugins.utils import clean_metadata, dir_empty, rmdirs, mkdirs, \
- validate_account, validate_container, is_marker, get_container_details, \
- get_account_details, get_container_metadata, create_container_metadata, \
- create_account_metadata, DEFAULT_GID, DEFAULT_UID, validate_object, \
- create_object_metadata, read_metadata, write_metadata, X_CONTENT_TYPE, \
- X_CONTENT_LENGTH, X_TIMESTAMP, X_PUT_TIMESTAMP, X_TYPE, X_ETAG, \
- X_OBJECTS_COUNT, X_BYTES_USED, X_CONTAINER_COUNT, CONTAINER
-from swift.plugins import Glusterfs
+from gluster.swift.common.utils import clean_metadata, dir_empty, rmdirs, \
+ mkdirs, validate_account, validate_container, is_marker, \
+ get_container_details, get_account_details, get_container_metadata, \
+ create_container_metadata, create_account_metadata, DEFAULT_GID, \
+ DEFAULT_UID, validate_object, create_object_metadata, read_metadata, \
+ write_metadata, X_CONTENT_TYPE, X_CONTENT_LENGTH, X_TIMESTAMP, \
+ X_PUT_TIMESTAMP, X_TYPE, X_ETAG, X_OBJECTS_COUNT, X_BYTES_USED, \
+ X_CONTAINER_COUNT, CONTAINER
+from gluster.swift.common import Glusterfs
from swift.common.constraints import CONTAINER_LISTING_LIMIT
from swift.common.utils import normalize_timestamp, TRUE_VALUES
diff --git a/swift/1.4.8/plugins/DiskFile.py b/swift/1.4.8/gluster/swift/common/DiskFile.py
index a57b2ece368..6404be6d68f 100644
--- a/swift/1.4.8/plugins/DiskFile.py
+++ b/swift/1.4.8/gluster/swift/common/DiskFile.py
@@ -18,13 +18,13 @@ from eventlet import tpool
from tempfile import mkstemp
from contextlib import contextmanager
from swift.common.utils import normalize_timestamp, renamer
-from swift.plugins.utils import mkdirs, rmdirs, validate_object, \
+from gluster.swift.common.utils import mkdirs, rmdirs, validate_object, \
create_object_metadata, do_open, do_close, do_unlink, do_chown, \
do_stat, do_listdir, read_metadata, write_metadata
-from swift.plugins.utils import X_CONTENT_TYPE, X_CONTENT_LENGTH, X_TIMESTAMP, \
- X_PUT_TIMESTAMP, X_TYPE, X_ETAG, X_OBJECTS_COUNT, X_BYTES_USED, \
- X_OBJECT_TYPE, FILE, DIR, MARKER_DIR, OBJECT, DIR_TYPE, FILE_TYPE, \
- DEFAULT_UID, DEFAULT_GID
+from gluster.swift.common.utils import X_CONTENT_TYPE, X_CONTENT_LENGTH, \
+ X_TIMESTAMP, X_PUT_TIMESTAMP, X_TYPE, X_ETAG, X_OBJECTS_COUNT, \
+ X_BYTES_USED, X_OBJECT_TYPE, FILE, DIR, MARKER_DIR, OBJECT, DIR_TYPE, \
+ FILE_TYPE, DEFAULT_UID, DEFAULT_GID
import logging
from swift.obj.server import DiskFile
diff --git a/swift/1.4.8/plugins/Glusterfs.py b/swift/1.4.8/gluster/swift/common/Glusterfs.py
index c176a247b9b..2d3273ed429 100644
--- a/swift/1.4.8/plugins/Glusterfs.py
+++ b/swift/1.4.8/gluster/swift/common/Glusterfs.py
@@ -16,23 +16,18 @@ import logging
import os, fcntl, time
from ConfigParser import ConfigParser
from swift.common.utils import TRUE_VALUES
-from swift.plugins.fs_utils import mkdirs
+from gluster.swift.common.fs_utils import mkdirs
#
# Read the fs.conf file once at startup (module load)
#
_fs_conf = ConfigParser()
-AUTH_ACCOUNT = 'auth'
MOUNT_IP = 'localhost'
REMOTE_CLUSTER = False
OBJECT_ONLY = False
if _fs_conf.read(os.path.join('/etc/swift', 'fs.conf')):
try:
- AUTH_ACCOUNT = _fs_conf.get('DEFAULT', 'auth_account', 'auth')
- except (NoSectionError, NoOptionError):
- pass
- try:
MOUNT_IP = _fs_conf.get('DEFAULT', 'mount_ip', 'localhost')
except (NoSectionError, NoOptionError):
pass
diff --git a/swift/1.4.8/test/unit/plugins/__init__.py b/swift/1.4.8/gluster/swift/common/__init__.py
index e69de29bb2d..e69de29bb2d 100644
--- a/swift/1.4.8/test/unit/plugins/__init__.py
+++ b/swift/1.4.8/gluster/swift/common/__init__.py
diff --git a/swift/1.4.8/plugins/constraints.py b/swift/1.4.8/gluster/swift/common/constraints.py
index 6d003b94caf..a4fc8008c7e 100644
--- a/swift/1.4.8/plugins/constraints.py
+++ b/swift/1.4.8/gluster/swift/common/constraints.py
@@ -16,7 +16,7 @@
from webob.exc import HTTPBadRequest
import swift.common.constraints
-from swift.plugins import Glusterfs
+from gluster.swift.common import Glusterfs
MAX_OBJECT_NAME_COMPONENT_LENGTH = swift.common.constraints.constraints_conf_int(
diff --git a/swift/1.4.8/plugins/fs_utils.py b/swift/1.4.8/gluster/swift/common/fs_utils.py
index 7f5292c2bf1..7f5292c2bf1 100644
--- a/swift/1.4.8/plugins/fs_utils.py
+++ b/swift/1.4.8/gluster/swift/common/fs_utils.py
diff --git a/swift/1.4.8/gluster/swift/common/middleware/__init__.py b/swift/1.4.8/gluster/swift/common/middleware/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/swift/1.4.8/gluster/swift/common/middleware/__init__.py
diff --git a/swift/1.4.8/plugins/middleware/gluster.py b/swift/1.4.8/gluster/swift/common/middleware/gluster.py
index e0e65e35312..ab63c51e12f 100644
--- a/swift/1.4.8/plugins/middleware/gluster.py
+++ b/swift/1.4.8/gluster/swift/common/middleware/gluster.py
@@ -14,7 +14,7 @@
# limitations under the License.
# Noop Middleware that simply allows us to monkey patch the constraints
-import swift.plugins.constraints
+import gluster.swift.common.constraints
class Gluster(object):
"""
diff --git a/swift/1.4.8/plugins/utils.py b/swift/1.4.8/gluster/swift/common/utils.py
index 45990d1da67..56376f8eed5 100644
--- a/swift/1.4.8/plugins/utils.py
+++ b/swift/1.4.8/gluster/swift/common/utils.py
@@ -21,8 +21,8 @@ from hashlib import md5
import cPickle as pickle
from ConfigParser import ConfigParser, NoSectionError, NoOptionError
from swift.common.utils import normalize_timestamp, TRUE_VALUES
-from swift.plugins.fs_utils import *
-from swift.plugins import Glusterfs
+from gluster.swift.common.fs_utils import *
+from gluster.swift.common import Glusterfs
X_CONTENT_TYPE = 'Content-Type'
X_CONTENT_LENGTH = 'Content-Length'
@@ -455,21 +455,3 @@ def create_container_metadata(cont_path, memcache=None):
def create_account_metadata(acc_path, memcache=None):
metadata = get_account_metadata(acc_path, memcache)
return restore_metadata(acc_path, metadata)
-
-
-_DEFAULT_GLUSTER_ENABLED = os.getenv('GLUSTER_UNIT_TEST_ENABLED', 'no')
-__swift_conf = ConfigParser()
-__swift_conf.read(os.path.join('/etc/swift', 'swift.conf'))
-try:
- _gluster_enabled_val = __swift_conf.get('DEFAULT', 'Enable_plugin', _DEFAULT_GLUSTER_ENABLED)
-except NoOptionError, NoSectionError:
- _gluster_enabled_val = _DEFAULT_GLUSTER_ENABLED
-del __swift_conf
-_gluster_enabled = _gluster_enabled_val in TRUE_VALUES
-
-def Gluster_enabled():
- return _gluster_enabled
-
-if _gluster_enabled:
- # Monkey patch only when Gluster enabled
- import swift.plugins.constraints
diff --git a/swift/1.4.8/gluster/swift/container/__init__.py b/swift/1.4.8/gluster/swift/container/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/swift/1.4.8/gluster/swift/container/__init__.py
diff --git a/swift/1.4.8/gluster/swift/container/server.py b/swift/1.4.8/gluster/swift/container/server.py
new file mode 100644
index 00000000000..e2a19730220
--- /dev/null
+++ b/swift/1.4.8/gluster/swift/container/server.py
@@ -0,0 +1,46 @@
+# Copyright (c) 2012 Red Hat, Inc.
+#
+# 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.
+
+""" Container Server for Gluster Swift UFO """
+
+# Simply importing this monkey patches the constraint handling to fit our
+# needs
+import gluster.swift.common.constraints
+
+from swift.container import server
+from gluster.swift.common.DiskDir import DiskDir
+
+
+class ContainerController(server.ContainerController):
+ def _get_container_broker(self, drive, part, account, container):
+ """
+ Overriden to provide the GlusterFS specific broker that talks to
+ Gluster for the information related to servicing a given request
+ instead of talking to a database.
+
+ :param drive: drive that holds the container
+ :param part: partition the container is in
+ :param account: account name
+ :param container: container name
+ :returns: DiskDir object
+ """
+ return DiskDir(self.root, account, container, self.logger)
+
+
+def app_factory(global_conf, **local_conf):
+ """paste.deploy app factory for creating WSGI container server apps."""
+ conf = global_conf.copy()
+ conf.update(local_conf)
+ return ContainerController(conf)
diff --git a/swift/1.4.8/gluster/swift/obj/__init__.py b/swift/1.4.8/gluster/swift/obj/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/swift/1.4.8/gluster/swift/obj/__init__.py
diff --git a/swift/1.4.8/gluster/swift/obj/server.py b/swift/1.4.8/gluster/swift/obj/server.py
new file mode 100644
index 00000000000..43cdd8890d2
--- /dev/null
+++ b/swift/1.4.8/gluster/swift/obj/server.py
@@ -0,0 +1,33 @@
+# Copyright (c) 2012 Red Hat, Inc.
+#
+# 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.
+
+""" Object Server for Gluster Swift UFO """
+
+# Simply importing this monkey patches the constraint handling to fit our
+# needs
+import gluster.swift.common.constraints
+
+from swift.obj import server
+from gluster.swift.common.DiskFile import Gluster_DiskFile
+
+# Monkey patch the object server module to use Gluster's DiskFile definition
+server.DiskFile = Gluster_DiskFile
+
+
+def app_factory(global_conf, **local_conf):
+ """paste.deploy app factory for creating WSGI object server apps"""
+ conf = global_conf.copy()
+ conf.update(local_conf)
+ return server.ObjectController(conf)
diff --git a/swift/1.4.8/gluster/swift/proxy/__init__.py b/swift/1.4.8/gluster/swift/proxy/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/swift/1.4.8/gluster/swift/proxy/__init__.py
diff --git a/swift/1.4.8/gluster/swift/proxy/server.py b/swift/1.4.8/gluster/swift/proxy/server.py
new file mode 100644
index 00000000000..792a97df9a2
--- /dev/null
+++ b/swift/1.4.8/gluster/swift/proxy/server.py
@@ -0,0 +1,27 @@
+# Copyright (c) 2012 Red Hat, Inc.
+#
+# 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.
+
+
+# Simply importing this monkey patches the constraint handling to fit our
+# needs
+import gluster.swift.common.constraints
+
+from swift.proxy import server
+
+def app_factory(global_conf, **local_conf):
+ """paste.deploy app factory for creating WSGI proxy apps."""
+ conf = global_conf.copy()
+ conf.update(local_conf)
+ return server.Application(conf)
diff --git a/swift/1.4.8/plugins/conf/fs.conf-gluster b/swift/1.4.8/plugins/conf/fs.conf-gluster
deleted file mode 100644
index 0bd21babff4..00000000000
--- a/swift/1.4.8/plugins/conf/fs.conf-gluster
+++ /dev/null
@@ -1,8 +0,0 @@
-[DEFAULT]
-auth_account = auth
-#ip of the fs server.
-mount_ip = localhost
-#fs server need not be local, remote server can also be used,
-#set remote_cluster=yes for using remote server.
-remote_cluster = no
-object_only = no
diff --git a/swift/1.4.8/setup.py b/swift/1.4.8/setup.py
new file mode 100644
index 00000000000..a48310282d9
--- /dev/null
+++ b/swift/1.4.8/setup.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+# Copyright (c) 2012 Red Hat, Inc.
+#
+# 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.
+
+from setuptools import setup, find_packages
+
+from gluster.swift import __canonical_version__ as version
+
+
+name = 'gluster_swift_ufo'
+
+
+setup(
+ name=name,
+ version=version,
+ description='Gluster Swift/UFO',
+ license='Apache License (2.0)',
+ author='Red Hat, Inc.',
+ author_email='gluster-users@gluster.org',
+ url='https://gluster.org/',
+ packages=find_packages(exclude=['test', 'bin']),
+ test_suite='nose.collector',
+ classifiers=[
+ 'Development Status :: 4 - Beta',
+ 'License :: OSI Approved :: Apache Software License',
+ 'Operating System :: POSIX :: Linux',
+ 'Programming Language :: Python :: 2.6',
+ 'Environment :: No Input/Output (Daemon)',
+ ],
+ install_requires=[], # removed for better compat
+ scripts=[
+ 'bin/gluster-swift-gen-builders',
+ ],
+ entry_points={
+ 'paste.app_factory': [
+ 'proxy=gluster.swift.proxy.server:app_factory',
+ 'object=gluster.swift.obj.server:app_factory',
+ 'container=gluster.swift.container.server:app_factory',
+ 'account=gluster.swift.account.server:app_factory',
+ ],
+ 'paste.filter_factory': [
+ 'gluster=gluster.swift.common.middleware.gluster:filter_factory',
+ ],
+ },
+ )
diff --git a/swift/1.4.8/swift.diff b/swift/1.4.8/swift.diff
deleted file mode 100644
index 59bbbe26279..00000000000
--- a/swift/1.4.8/swift.diff
+++ /dev/null
@@ -1,174 +0,0 @@
-diff --git a/setup.py b/setup.py
-index d195d34..ef625ff 100644
---- a/setup.py
-+++ b/setup.py
-@@ -1,5 +1,6 @@
- #!/usr/bin/python
- # Copyright (c) 2010-2012 OpenStack, LLC.
-+# Copyright (c) 2012 Red Hat, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
-@@ -94,6 +95,7 @@ setup(
- 'tempurl=swift.common.middleware.tempurl:filter_factory',
- 'formpost=swift.common.middleware.formpost:filter_factory',
- 'name_check=swift.common.middleware.name_check:filter_factory',
-+ 'gluster=swift.plugins.middleware.gluster:filter_factory',
- ],
- },
- )
-diff --git a/swift/account/server.py b/swift/account/server.py
-index 800b3c0..eaf9e0d 100644
---- a/swift/account/server.py
-+++ b/swift/account/server.py
-@@ -1,4 +1,5 @@
- # Copyright (c) 2010-2012 OpenStack, LLC.
-+# Copyright (c) 2012 Red Hat, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
-@@ -29,6 +30,10 @@ from webob.exc import HTTPAccepted, HTTPBadRequest, \
- HTTPPreconditionFailed, HTTPConflict
- import simplejson
-
-+from swift.plugins.utils import Gluster_enabled
-+if Gluster_enabled():
-+ from swift.plugins.DiskDir import DiskAccount
-+
- from swift.common.db import AccountBroker
- from swift.common.utils import get_logger, get_param, hash_path, \
- normalize_timestamp, split_path, storage_directory
-@@ -54,6 +59,8 @@ class AccountController(object):
- conf.get('auto_create_account_prefix') or '.'
-
- def _get_account_broker(self, drive, part, account):
-+ if Gluster_enabled():
-+ return DiskAccount(self.root, account, self.logger)
- hsh = hash_path(account)
- db_dir = storage_directory(DATADIR, part, hsh)
- db_path = os.path.join(self.root, drive, db_dir, hsh + '.db')
-diff --git a/swift/container/server.py b/swift/container/server.py
-index 8a18cfd..3da0f95 100644
---- a/swift/container/server.py
-+++ b/swift/container/server.py
-@@ -1,4 +1,5 @@
- # Copyright (c) 2010-2012 OpenStack, LLC.
-+# Copyright (c) 2012 Red Hat, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
-@@ -29,6 +30,10 @@ from webob.exc import HTTPAccepted, HTTPBadRequest, HTTPConflict, \
- HTTPCreated, HTTPInternalServerError, HTTPNoContent, \
- HTTPNotFound, HTTPPreconditionFailed, HTTPMethodNotAllowed
-
-+from swift.plugins.utils import Gluster_enabled
-+if Gluster_enabled():
-+ from swift.plugins.DiskDir import DiskDir
-+
- from swift.common.db import ContainerBroker
- from swift.common.utils import get_logger, get_param, hash_path, \
- normalize_timestamp, storage_directory, split_path, validate_sync_to
-@@ -73,6 +78,8 @@ class ContainerController(object):
- :param container: container name
- :returns: ContainerBroker object
- """
-+ if Gluster_enabled():
-+ return DiskDir(self.root, account, container, self.logger)
- hsh = hash_path(account, container)
- db_dir = storage_directory(DATADIR, part, hsh)
- db_path = os.path.join(self.root, drive, db_dir, hsh + '.db')
-diff --git a/swift/obj/server.py b/swift/obj/server.py
-index 9cca16b..448ea5c 100644
---- a/swift/obj/server.py
-+++ b/swift/obj/server.py
-@@ -1,4 +1,5 @@
- # Copyright (c) 2010-2012 OpenStack, LLC.
-+# Copyright (c) 2012 Red Hat, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
-@@ -35,6 +36,8 @@ from webob.exc import HTTPAccepted, HTTPBadRequest, HTTPCreated, \
- from xattr import getxattr, setxattr
- from eventlet import sleep, Timeout, tpool
-
-+from swift.plugins.utils import Gluster_enabled
-+
- from swift.common.utils import mkdirs, normalize_timestamp, \
- storage_directory, hash_path, renamer, fallocate, \
- split_path, drop_buffer_cache, get_logger, write_pickle
-@@ -340,6 +343,10 @@ class DiskFile(object):
- raise DiskFileNotExist('Data File does not exist.')
-
-
-+if Gluster_enabled():
-+ from swift.plugins.DiskFile import Gluster_DiskFile
-+
-+
- class ObjectController(object):
- """Implements the WSGI application for the Swift Object Server."""
-
-@@ -378,6 +385,15 @@ class ObjectController(object):
- self.expiring_objects_container_divisor = \
- int(conf.get('expiring_objects_container_divisor') or 86400)
-
-+ def get_DiskFile_obj(self, path, device, partition, account, container, obj,
-+ logger, keep_data_fp=False, disk_chunk_size=65536):
-+ if Gluster_enabled():
-+ return Gluster_DiskFile(path, device, partition, account, container,
-+ obj, logger, keep_data_fp, disk_chunk_size)
-+ else:
-+ return DiskFile(path, device, partition, account, container,
-+ obj, logger, keep_data_fp, disk_chunk_size)
-+
- def async_update(self, op, account, container, obj, host, partition,
- contdevice, headers_out, objdevice):
- """
-@@ -493,7 +509,7 @@ class ObjectController(object):
- content_type='text/plain')
- if self.mount_check and not check_mount(self.devices, device):
- return Response(status='507 %s is not mounted' % device)
-- file = DiskFile(self.devices, device, partition, account, container,
-+ file = self.get_DiskFile_obj(self.devices, device, partition, account, container,
- obj, self.logger, disk_chunk_size=self.disk_chunk_size)
-
- if 'X-Delete-At' in file.metadata and \
-@@ -548,7 +564,7 @@ class ObjectController(object):
- if new_delete_at and new_delete_at < time.time():
- return HTTPBadRequest(body='X-Delete-At in past', request=request,
- content_type='text/plain')
-- file = DiskFile(self.devices, device, partition, account, container,
-+ file = self.get_DiskFile_obj(self.devices, device, partition, account, container,
- obj, self.logger, disk_chunk_size=self.disk_chunk_size)
- orig_timestamp = file.metadata.get('X-Timestamp')
- upload_expiration = time.time() + self.max_upload_time
-@@ -626,9 +642,9 @@ class ObjectController(object):
- content_type='text/plain')
- if self.mount_check and not check_mount(self.devices, device):
- return Response(status='507 %s is not mounted' % device)
-- file = DiskFile(self.devices, device, partition, account, container,
-- obj, self.logger, keep_data_fp=True,
-- disk_chunk_size=self.disk_chunk_size)
-+ file = self.get_DiskFile_obj(self.devices, device, partition, account, container,
-+ obj, self.logger, keep_data_fp=True,
-+ disk_chunk_size=self.disk_chunk_size)
- if file.is_deleted() or ('X-Delete-At' in file.metadata and
- int(file.metadata['X-Delete-At']) <= time.time()):
- if request.headers.get('if-match') == '*':
-@@ -702,7 +718,7 @@ class ObjectController(object):
- return resp
- if self.mount_check and not check_mount(self.devices, device):
- return Response(status='507 %s is not mounted' % device)
-- file = DiskFile(self.devices, device, partition, account, container,
-+ file = self.get_DiskFile_obj(self.devices, device, partition, account, container,
- obj, self.logger, disk_chunk_size=self.disk_chunk_size)
- if file.is_deleted() or ('X-Delete-At' in file.metadata and
- int(file.metadata['X-Delete-At']) <= time.time()):
-@@ -744,7 +760,7 @@ class ObjectController(object):
- if self.mount_check and not check_mount(self.devices, device):
- return Response(status='507 %s is not mounted' % device)
- response_class = HTTPNoContent
-- file = DiskFile(self.devices, device, partition, account, container,
-+ file = self.get_DiskFile_obj(self.devices, device, partition, account, container,
- obj, self.logger, disk_chunk_size=self.disk_chunk_size)
- if 'x-if-delete-at' in request.headers and \
- int(request.headers['x-if-delete-at']) != \
diff --git a/swift/1.4.8/test/unit/common/__init__.py b/swift/1.4.8/test/unit/common/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/swift/1.4.8/test/unit/common/__init__.py
diff --git a/swift/1.4.8/test/unit/plugins/data/account_tree.tar.bz2 b/swift/1.4.8/test/unit/common/data/account_tree.tar.bz2
index cb23e4dd71b..cb23e4dd71b 100644
--- a/swift/1.4.8/test/unit/plugins/data/account_tree.tar.bz2
+++ b/swift/1.4.8/test/unit/common/data/account_tree.tar.bz2
Binary files differ
diff --git a/swift/1.4.8/test/unit/plugins/data/container_tree.tar.bz2 b/swift/1.4.8/test/unit/common/data/container_tree.tar.bz2
index b4a14928570..b4a14928570 100644
--- a/swift/1.4.8/test/unit/plugins/data/container_tree.tar.bz2
+++ b/swift/1.4.8/test/unit/common/data/container_tree.tar.bz2
Binary files differ
diff --git a/swift/1.4.8/test/unit/plugins/test_utils.py b/swift/1.4.8/test/unit/common/test_utils.py
index 92c7ff00571..ec66324a052 100644
--- a/swift/1.4.8/test/unit/plugins/test_utils.py
+++ b/swift/1.4.8/test/unit/common/test_utils.py
@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-""" Tests for plugins.utils """
+""" Tests for common.utils """
import os
import unittest
@@ -26,7 +26,7 @@ import tarfile
import shutil
from collections import defaultdict
from swift.common.utils import normalize_timestamp
-from swift.plugins import utils
+from gluster.swift.common import utils
#
# Somewhat hacky way of emulating the operation of xattr calls. They are made
@@ -119,7 +119,7 @@ class SimMemcache(object):
class TestUtils(unittest.TestCase):
- """ Tests for plugins.utils """
+ """ Tests for common.utils """
def setUp(self):
_initxattr()
@@ -753,7 +753,7 @@ class TestUtils(unittest.TestCase):
def test_get_container_details_from_fs(self):
td = tempfile.mkdtemp()
- tf = tarfile.open("plugins/data/account_tree.tar.bz2", "r:bz2")
+ tf = tarfile.open("common/data/account_tree.tar.bz2", "r:bz2")
orig_cwd = os.getcwd()
os.chdir(td)
tf.extractall()
@@ -776,7 +776,7 @@ class TestUtils(unittest.TestCase):
def test_get_account_details_from_fs(self):
td = tempfile.mkdtemp()
- tf = tarfile.open("plugins/data/container_tree.tar.bz2", "r:bz2")
+ tf = tarfile.open("common/data/container_tree.tar.bz2", "r:bz2")
orig_cwd = os.getcwd()
os.chdir(td)
tf.extractall()