Skip to content
Snippets Groups Projects
Verified Commit 648537cf authored by drebs's avatar drebs
Browse files

[refactor] move blobs state to its own submodule

parent 6022c68e
Branches
Tags
1 merge request!174Refactor blobs server
...@@ -14,19 +14,25 @@ ...@@ -14,19 +14,25 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
""" """
Blobs Server implementation. Blobs Server implementation.
""" """
from .fs_backend import FilesystemBlobsBackend from .fs_backend import FilesystemBlobsBackend
from .resource import BlobsResource from .resource import BlobsResource
from .state import BlobsServerState
from .errors import BlobExists from .errors import BlobExists
from .errors import ImproperlyConfiguredException
from .errors import QuotaExceeded from .errors import QuotaExceeded
from .errors import ImproperlyConfiguredException
__all__ = ['BlobsResource', 'BlobExists', 'QuotaExceeded'] __all__ = [
'FilesystemBlobsBackend',
'BlobsResource',
'BlobsServerState',
'BlobExists',
'QuotaExceeded',
'ImproperlyConfiguredException',
]
if __name__ == '__main__': if __name__ == '__main__':
...@@ -40,39 +46,16 @@ if __name__ == '__main__': ...@@ -40,39 +46,16 @@ if __name__ == '__main__':
from twisted.web.server import Site from twisted.web.server import Site
from twisted.internet import reactor from twisted.internet import reactor
# parse command line arguments
import argparse import argparse
# parse command line
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('--port', default=9000, type=int) parser.add_argument('--port', default=9000, type=int)
parser.add_argument('--path', default='/tmp/blobs/user') parser.add_argument('--path', default='/tmp/blobs/user')
args = parser.parse_args() args = parser.parse_args()
# run the server
root = BlobsResource("filesystem", args.path) root = BlobsResource("filesystem", args.path)
# I picture somethink like
# BlobsResource(backend="filesystem", backend_opts={'path': '/tmp/blobs'})
factory = Site(root) factory = Site(root)
reactor.listenTCP(args.port, factory) reactor.listenTCP(args.port, factory)
reactor.run() reactor.run()
class BlobsServerState(object):
"""
Given a backend name, it gives a instance of IBlobsBackend
"""
# Allowed backend classes are defined here
handlers = {"filesystem": FilesystemBlobsBackend}
def __init__(self, backend, **backend_kwargs):
if backend not in self.handlers:
raise ImproperlyConfiguredException("No such backend: %s", backend)
self.backend = self.handlers[backend](**backend_kwargs)
def open_database(self, user_id):
"""
That method is just for compatibility with CouchServerState, so
IncomingAPI can change backends.
"""
# TODO: deprecate/refactor it as it's here for compatibility.
return self.backend
# -*- coding: utf-8 -*-
# _blobs/state.py
# Copyright (C) 2017 LEAP
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
Get handlers that implement IBlobsBackend given a backend name.
"""
from .errors import ImproperlyConfiguredException
from .fs_backend import FilesystemBlobsBackend
class BlobsServerState(object):
"""
Given a backend name, it gives a instance of IBlobsBackend
"""
# Allowed backend classes are defined here
handlers = {"filesystem": FilesystemBlobsBackend}
def __init__(self, backend, **backend_kwargs):
if backend not in self.handlers:
raise ImproperlyConfiguredException("No such backend: %s", backend)
self.backend = self.handlers[backend](**backend_kwargs)
def open_database(self, user_id):
"""
That method is just for compatibility with CouchServerState, so
IncomingAPI can change backends.
"""
# TODO: deprecate/refactor it as it's here for compatibility.
return self.backend
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment