diff --git a/setup.cfg b/setup.cfg index 2a1b3724d..abcde304d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -35,6 +35,7 @@ console_scripts = zaqar-bench = zaqar.bench.conductor:main zaqar-server = zaqar.cmd.server:run marconi-server = zaqar.cmd.server:run + zaqar-gc = zaqar.cmd.gc:run zaqar.queues.data.storage = # NOTE(flaper87): sqlite points to sqla for backwards compatibility diff --git a/zaqar/cmd/gc.py b/zaqar/cmd/gc.py new file mode 100644 index 000000000..669d8661a --- /dev/null +++ b/zaqar/cmd/gc.py @@ -0,0 +1,37 @@ +# 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 oslo.config import cfg + +from zaqar.common import cli +from zaqar.openstack.common import log +from zaqar.queues import bootstrap + +LOG = log.getLogger(__name__) + + +# In this first approach it's the responsibility of the operator +# to call the garbage collector manually. Using crontab or a similar +# tool is advised. +@cli.runnable +def run(): + # TODO(kgriffs): For now, we have to use the global config + # to pick up common options from openstack.common.log, since + # that module uses the global CONF instance exclusively. + conf = cfg.CONF + conf(project='zaqar', prog='zaqar-gc') + + server = bootstrap.Bootstrap(conf) + + LOG.debug(u'Calling the garbage collector') + server.storage.gc()