diff --git a/buildman/enterprise_builder.py b/buildman/builder.py similarity index 51% rename from buildman/enterprise_builder.py rename to buildman/builder.py index 88ea62b2d..efd7b10cc 100644 --- a/buildman/enterprise_builder.py +++ b/buildman/builder.py @@ -1,4 +1,3 @@ -import argparse import logging from app import app, userfiles as user_files, build_logs, dockerfile_build_queue @@ -8,13 +7,23 @@ from buildman.server import BuilderServer LOGGER = logging.getLogger(__name__) -if __name__ == '__main__': - logging.basicConfig(level=logging.DEBUG) +BUILD_MANAGERS = { + 'enterprise': EnterpriseManager +} - parser = argparse.ArgumentParser() - parser.add_argument('--host', type=str, default='127.0.0.1', help='Host IP.') - args = parser.parse_args() +def run_build_manager(): + build_manager_config = app.config.get('BUILD_MANAGER') + if build_manager_config is None: + return + + manager_klass = BUILD_MANAGERS.get(build_manager_config[0]) + if manager_klass is None: + return server = BuilderServer(app.config['SERVER_HOSTNAME'], dockerfile_build_queue, build_logs, - user_files, EnterpriseManager) - server.run(args.host) + user_files, manager_klass) + server.run('0.0.0.0') + +if __name__ == '__main__': + logging.basicConfig(level=logging.DEBUG) + run_build_manager() diff --git a/buildman/component/__init__.py b/buildman/component/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/buildman/basecomponent.py b/buildman/component/basecomponent.py similarity index 100% rename from buildman/basecomponent.py rename to buildman/component/basecomponent.py diff --git a/buildman/buildcomponent.py b/buildman/component/buildcomponent.py similarity index 98% rename from buildman/buildcomponent.py rename to buildman/component/buildcomponent.py index 9b29ad5b6..12e6b280b 100644 --- a/buildman/buildcomponent.py +++ b/buildman/component/buildcomponent.py @@ -8,11 +8,11 @@ import re from autobahn.wamp.exception import ApplicationError from trollius.coroutines import From -from buildman.basecomponent import BaseComponent -from buildman.buildpack import BuildPackage, BuildPackageException -from buildman.buildstatus import StatusHandler from buildman.server import BuildJobResult -from buildman.workererror import WorkerError +from buildman.component.basecomponent import BaseComponent +from buildman.jobutil.buildpack import BuildPackage, BuildPackageException +from buildman.jobutil.buildstatus import StatusHandler +from buildman.jobutil.workererror import WorkerError from data.database import BUILD_PHASE diff --git a/buildman/jobutil/__init__.py b/buildman/jobutil/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/buildman/buildjob.py b/buildman/jobutil/buildjob.py similarity index 100% rename from buildman/buildjob.py rename to buildman/jobutil/buildjob.py diff --git a/buildman/buildpack.py b/buildman/jobutil/buildpack.py similarity index 100% rename from buildman/buildpack.py rename to buildman/jobutil/buildpack.py diff --git a/buildman/buildstatus.py b/buildman/jobutil/buildstatus.py similarity index 100% rename from buildman/buildstatus.py rename to buildman/jobutil/buildstatus.py diff --git a/buildman/workererror.py b/buildman/jobutil/workererror.py similarity index 100% rename from buildman/workererror.py rename to buildman/jobutil/workererror.py diff --git a/buildman/manager/enterprise.py b/buildman/manager/enterprise.py index 9abe5f3c0..741781078 100644 --- a/buildman/manager/enterprise.py +++ b/buildman/manager/enterprise.py @@ -1,9 +1,9 @@ import logging import uuid +from buildman.component.basecomponent import BaseComponent +from buildman.component.buildcomponent import BuildComponent from buildman.manager.basemanager import BaseManager -from buildman.basecomponent import BaseComponent -from buildman.buildcomponent import BuildComponent from trollius.coroutines import From diff --git a/buildman/server.py b/buildman/server.py index fd5d4f409..f83d71a81 100644 --- a/buildman/server.py +++ b/buildman/server.py @@ -11,7 +11,7 @@ from threading import Event from trollius.coroutines import From from datetime import datetime, timedelta -from buildman.buildjob import BuildJob, BuildJobLoadException +from buildman.jobutil.buildjob import BuildJob, BuildJobLoadException from data.queue import WorkQueue LOGGER = logging.getLogger(__name__) @@ -21,6 +21,9 @@ TIMEOUT_PERIOD_MINUTES = 20 JOB_TIMEOUT_SECONDS = 300 MINIMUM_JOB_EXTENSION = timedelta(minutes=2) +WEBSOCKET_PORT = 8080 +CONTROLLER_PORT = 8181 + class BuildJobResult(object): """ Build job result enum """ INCOMPLETE = 'incomplete' @@ -166,8 +169,8 @@ class BuilderServer(object): transport_factory.setProtocolOptions(failByDrop=True) # Initialize the controller server and the WAMP server - create_wsgi_server(self._controller_app, loop=loop, host=host, port=8181) - yield From(loop.create_server(transport_factory, host, 8080)) + create_wsgi_server(self._controller_app, loop=loop, host=host, port=CONTROLLER_PORT) + yield From(loop.create_server(transport_factory, host, WEBSOCKET_PORT)) # Initialize the work queue checker. yield From(self._work_checker()) diff --git a/config.py b/config.py index ddb6b54f7..b7e1ca531 100644 --- a/config.py +++ b/config.py @@ -49,9 +49,9 @@ class DefaultConfig(object): REGISTRY_TITLE = 'Quay.io' REGISTRY_TITLE_SHORT = 'Quay.io' CONTACT_INFO = [ - 'mailto:support@quay.io', - 'irc://chat.freenode.net:6665/quayio', - 'tel:+1-888-930-3475', + 'mailto:support@quay.io', + 'irc://chat.freenode.net:6665/quayio', + 'tel:+1-888-930-3475', 'https://twitter.com/quayio', ] @@ -160,6 +160,8 @@ class DefaultConfig(object): # Feature Flag: Whether users can be created (by non-super users). FEATURE_USER_CREATION = True + BUILD_MANAGER = ('enterprise', {}) + DISTRIBUTED_STORAGE_CONFIG = { 'local_eu': ['LocalStorage', {'storage_path': 'test/data/registry/eu'}], 'local_us': ['LocalStorage', {'storage_path': 'test/data/registry/us'}],