Move cfg file creation to driver

Added code to load the file backend as a driver in engine __init__,
and a function in FileBackend to create cfg files.

Also added extra field in engine.cfg to specify what kind of backend
to use.

Change-Id: I6d3f24d4f676c72c94afff2c4c7f54a35cf1d4b1
This commit is contained in:
pran1990 2014-05-30 20:51:37 -07:00 committed by Pranesh Pandurangan
parent 0f5954359c
commit d4fcac48f1
4 changed files with 27 additions and 8 deletions

View File

@ -102,8 +102,6 @@ def start_engine(args):
}
}
utils.write_yaml(cfg, engine_cfg)
# create cfg files
utils.create_files([cfg_data['audit_cfg'], cfg_data['repair_cfg']])
LOG.info('Added %s to engine cfg', args.name)
entropy_engine = Engine(args.name, **cfg_data)
entropy_engine.run()

View File

@ -11,13 +11,21 @@
# 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 os
from entropy.backends import base
from entropy import utils
class FileBackend(base.Backend):
"""A directory based backend."""
def __init__(self, conf):
super(FileBackend, self).__init(conf)
self.path = os.path.abspath(conf['path'])
super(FileBackend, self).__init__(conf)
self.setup()
def setup(self):
utils.create_files([self._conf['audit_cfg'], self._conf['repair_cfg']])
def open(self):
pass
def close(self):
pass

View File

@ -27,6 +27,7 @@ from kombu import Exchange
from kombu import Queue
import pause
import six
from stevedore import driver
from entropy import exceptions
from entropy import utils
@ -40,6 +41,7 @@ class Engine(object):
Engine.set_logger(**cfg_data)
# constants
# TODO(praneshp): Hardcode for now, could/should be cmdline input
self._engine_cfg_data = cfg_data
self.max_workers = 8
self.audit_type = 'audit'
self.repair_type = 'repair'
@ -52,6 +54,8 @@ class Engine(object):
self.serializer_schedule = cfg_data['serializer_schedule']
self.engine_timeout = cfg_data['engine_timeout']
# TODO(praneshp): Assuming cfg files are in 1 dir. Change later
self._backend = cfg_data['backend']
self._backend_driver = self.get_backend()
self.cfg_dir = os.path.dirname(self.audit_cfg)
self.log_file = cfg_data['log_file']
self.executor = cf.ThreadPoolExecutor(max_workers=self.max_workers)
@ -73,6 +77,15 @@ class Engine(object):
LOG.addHandler(log_to_file)
LOG.propagate = False
def get_backend(self):
backend = driver.DriverManager(
namespace='entropy.backend',
name=self._backend,
invoke_on_load=True,
invoke_args=(self._engine_cfg_data,),
)
return backend.driver
def run(self):
LOG.info('Starting Scheduler for %s', self.name)
self.start_scheduler()
@ -189,7 +202,7 @@ class Engine(object):
try:
pause.until(execution_time)
LOG.info("Time: %s, Starting %s", execution_time, audit_list)
audits = utils.load_yaml(self.audit_cfg)
audits = self._backend_driver.get_audits()
audit_futures = []
for audit in audit_list:
audit_name = audit['name']

View File

@ -5,4 +5,4 @@ test:
log_format: "%(filename)s %(lineno)s %(message)s"
serializer_schedule: "*/2 * * * *"
engine_timeout: "25"
backend: EntropyFileBackend
backend: file