diff --git a/setup.cfg b/setup.cfg index a9c27939..5c3c405e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -44,8 +44,11 @@ mapping_file = babel.cfg output_file = tricircle/locale/tricircle.pot [entry_points] +console_scripts = + tricircle-db-manage = tricircle.cmd.manage:main + tricircle-api = tricircle.cmd.api:main + tricircle-xjob = tricircle.cmd.xjob:main oslo.config.opts = - tricircle.api = tricircle.api.opts:list_opts tricircle.common = tricircle.common.opts:list_opts tricircle.db = tricircle.db.opts:list_opts diff --git a/tricircle/cmd/__init__.py b/tricircle/cmd/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tricircle/cmd/api.py b/tricircle/cmd/api.py new file mode 100644 index 00000000..06fbc319 --- /dev/null +++ b/tricircle/cmd/api.py @@ -0,0 +1,61 @@ +# Copyright 2015 Huawei Technologies Co., Ltd. +# 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. + +# Much of this module is based on the work of the Ironic team +# see http://git.openstack.org/cgit/openstack/ironic/tree/ironic/cmd/api.py + +import sys + +from oslo_config import cfg +from oslo_log import log as logging +from oslo_service import wsgi + +from tricircle.api import app +from tricircle.common import config +from tricircle.common.i18n import _LI +from tricircle.common.i18n import _LW +from tricircle.common import restapp + + +CONF = cfg.CONF +LOG = logging.getLogger(__name__) + + +def main(): + config.init(app.common_opts, sys.argv[1:]) + application = app.setup_app() + + host = CONF.bind_host + port = CONF.bind_port + workers = CONF.api_workers + + if workers < 1: + LOG.warning(_LW("Wrong worker number, worker = %(workers)s"), workers) + workers = 1 + + LOG.info(_LI("Admin API on http://%(host)s:%(port)s with %(workers)s"), + {'host': host, 'port': port, 'workers': workers}) + + service = wsgi.Server(CONF, 'Tricircle Admin_API', application, host, port) + restapp.serve(service, CONF, workers) + + LOG.info(_LI("Configuration:")) + CONF.log_opt_values(LOG, logging.INFO) + + restapp.wait() + + +if __name__ == '__main__': + main() diff --git a/tricircle/cmd/manage.py b/tricircle/cmd/manage.py new file mode 100644 index 00000000..ba76b745 --- /dev/null +++ b/tricircle/cmd/manage.py @@ -0,0 +1,36 @@ +# Copyright 2015 Huawei Technologies Co., Ltd. +# 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. + + +import sys + +from oslo_config import cfg + +from tricircle.db import core +from tricircle.db import migration_helpers + + +def main(argv=None, config_files=None): + core.initialize() + cfg.CONF(args=argv[2:], + project='tricircle', + default_config_files=config_files) + migration_helpers.find_migrate_repo() + migration_helpers.sync_repo(2) + + +if __name__ == '__main__': + config_file = sys.argv[1] + main(argv=sys.argv, config_files=[config_file]) diff --git a/tricircle/cmd/xjob.py b/tricircle/cmd/xjob.py new file mode 100644 index 00000000..7a76c045 --- /dev/null +++ b/tricircle/cmd/xjob.py @@ -0,0 +1,59 @@ +# Copyright 2015 Huawei Technologies Co., Ltd. +# 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. + +# Much of this module is based on the work of the Ironic team +# see http://git.openstack.org/cgit/openstack/ironic/tree/ironic/cmd/api.py + +import eventlet + +if __name__ == "__main__": + eventlet.monkey_patch() + +import sys + +from oslo_config import cfg +from oslo_log import log as logging + +from tricircle.common import config +from tricircle.common.i18n import _LI, _LW + +from tricircle.xjob import xservice + +CONF = cfg.CONF +LOG = logging.getLogger(__name__) + + +def main(): + config.init(xservice.common_opts, sys.argv[1:]) + + host = CONF.host + workers = CONF.workers + + if workers < 1: + LOG.warning(_LW("Wrong worker number, worker = %(workers)s"), workers) + workers = 1 + + LOG.info(_LI("XJob Server on http://%(host)s with %(workers)s"), + {'host': host, 'workers': workers}) + + xservice.serve(xservice.create_service(), workers) + + LOG.info(_LI("Configuration:")) + CONF.log_opt_values(LOG, logging.INFO) + + xservice.wait() + +if __name__ == '__main__': + main()