Remove template engine abstraction layer

There is too small chanse to switch template engine in this project. In
this case there is no need to maintain abstraction layer under template
engine API.

Switch to direct calls to jinja2 API.

Change-Id: I200770b74b7bcbff28948155de994bb8bbf9f966
This commit is contained in:
Dmitry Bogun 2016-12-12 13:46:45 +02:00 committed by Andrii Ostapenko
parent 66bcb8a146
commit afc4b47fbc
5 changed files with 46 additions and 60 deletions

View File

@ -15,15 +15,11 @@
import logging
import uuid
import os
import libvirt
import jinja2
from oslo_config import cfg
from ramdisk_func_test import conf
import utils
CONF = conf.CONF
@ -35,16 +31,14 @@ CONF.register_opts([
LOG = logging.getLogger(__name__)
ABS_PATH = os.path.dirname(os.path.abspath(__file__))
class LibvirtBase(object):
"""Generic wrapper for libvirt domain objects."""
libvirt = libvirt.open(CONF.qemu_url)
def __init__(self, templ_engine):
def __init__(self, jinja_env):
super(LibvirtBase, self).__init__()
self.templ_engine = templ_engine
self.jinja_env = jinja_env
# Initialized in child classes
self.name = None
self.domain = None
@ -79,22 +73,3 @@ class LibvirtBase(object):
LOG.warning("Error during domain '{0}' call:\n{1}".format(
call, err.message
))
class TemplateEngine(object):
def __init__(self, node_templates):
super(TemplateEngine, self).__init__()
loader = jinja2.FileSystemLoader([
node_templates,
os.path.join(ABS_PATH, "templates")
])
self._jinja = jinja2.Environment(loader=loader)
# Custom template callbacks
self._jinja.globals['empty_disk'] = utils.create_empty_disk
self._jinja.globals['disk_from_base'] = utils.create_disk_from_base
self._jinja.globals['get_rand_mac'] = utils.get_random_mac
def render_template(self, template_name, **kwargs):
template = self._jinja.get_template(template_name)
return template.render(**kwargs)

View File

@ -22,13 +22,15 @@ import logging
import time
import sh
import jinja2
import pkg_resources
from oslo_config import cfg
import ramdisk_func_test
from ramdisk_func_test import conf
from ramdisk_func_test import network
from ramdisk_func_test import node
from ramdisk_func_test import utils
from ramdisk_func_test.base import TemplateEngine
from ramdisk_func_test.network import Network
from ramdisk_func_test.node import Node
CONF = conf.CONF
@ -65,22 +67,35 @@ LOG = logging.getLogger(__name__)
class Environment(object):
_loaded_config = object() # to fail comparison with None
def __init__(self, node_templates, config=None):
node = None
network = None
webserver = None
rsync_dir = None
image_mount_point = None
def __init__(self, template_path, config=None):
super(Environment, self).__init__()
self.templ_eng = TemplateEngine(node_templates)
self.node = None
self.network = None
self.webserver = None
self.tenant_images_dir = None
self.rsync_dir = None
self.image_mount_point = None
self._load_config(config)
self.jinja_env = self._init_jinja2(template_path)
@staticmethod
def _init_jinja2(path):
path = path[:]
path.append(pkg_resources.resource_filename(
ramdisk_func_test.__name__, 'templates'))
loader = jinja2.FileSystemLoader(path)
jinja_env = jinja2.Environment(loader=loader)
# Custom template callbacks
jinja_env.globals['empty_disk'] = utils.create_empty_disk
jinja_env.globals['disk_from_base'] = utils.create_disk_from_base
jinja_env.globals['get_rand_mac'] = utils.get_random_mac
return jinja_env
def setupclass(self):
"""Global setup - single for all tests"""
self.network = Network(self.templ_eng)
self.network = network.Network(self.jinja_env)
self.network.start()
self.tenant_images_dir = CONF.tenant_images_dir
@ -92,10 +107,8 @@ class Environment(object):
def setup(self, node_template, deploy_config):
"""Per-test setup"""
ssh_key_path = os.path.join(CONF.image_build_dir, CONF.ramdisk_key)
self.node = Node(self.templ_eng,
node_template,
self.network.name,
ssh_key_path)
self.node = node.Node(
self.jinja_env, node_template, self.network.name, ssh_key_path)
self.add_pxe_config_for_current_node()
self.network.add_node(self.node)
@ -136,8 +149,8 @@ class Environment(object):
tftp_root = self.network.tftp_root
pxe_config = self.templ_eng.render_template(
'bareon_config.template',
template = self.jinja_env.get_template('bareon_config.template')
pxe_config = template.render(
kernel=CONF.kernel,
ramdisk=CONF.ramdisk,
deployment_id=self.node.name,

View File

@ -20,9 +20,9 @@ import libvirt
from oslo_config import cfg
from ramdisk_func_test import base
from ramdisk_func_test import conf
from ramdisk_func_test import utils
from ramdisk_func_test.base import LibvirtBase
CONF = conf.CONF
@ -42,9 +42,9 @@ CONF.import_opt('ramdisk_func_test_workdir', 'ramdisk_func_test.utils')
LOG = logging.getLogger(__name__)
class Network(LibvirtBase):
def __init__(self, templ_engine):
super(Network, self).__init__(templ_engine)
class Network(base.LibvirtBase):
def __init__(self, jinja_env):
super(Network, self).__init__(jinja_env)
self.name = self._generate_name("net")
head_octets = CONF.libvirt_net_head_octets
@ -57,8 +57,7 @@ class Network(LibvirtBase):
'tftp_root')
utils.ensure_tree(self.tftp_root)
xml = self.templ_engine.render_template(
'network.xml',
xml = self.jinja_env.get_template('network.xml').render(
name=self.name,
bridge=self._generate_name("br"),
address=self.address,

View File

@ -23,9 +23,9 @@ from lxml import etree
from oslo_config import cfg
from ramdisk_func_test import base
from ramdisk_func_test import conf
from ramdisk_func_test import utils
from ramdisk_func_test.base import LibvirtBase
CONF = conf.CONF
@ -43,10 +43,9 @@ CONF.import_opt('ramdisk_func_test_workdir', 'ramdisk_func_test.utils')
LOG = logging.getLogger(__name__)
class Node(LibvirtBase):
def __init__(self, templ_engine, template, network, key):
super(Node, self).__init__(templ_engine)
class Node(base.LibvirtBase):
def __init__(self, jinja_env, template, network, key):
super(Node, self).__init__(jinja_env)
self.name = self._generate_name('node')
self.workdir = os.path.join(CONF.ramdisk_func_test_workdir, self.name)
@ -57,8 +56,7 @@ class Node(LibvirtBase):
self.ssh_key = key
self.console_log = os.path.join(self.workdir, "console.log")
xml = self.templ_engine.render_template(
template,
xml = self.jinja_env.get_template(template).render(
mac_addr=self.mac,
network_name=network,
node_name=self.name,

View File

@ -39,6 +39,7 @@ setup(
'lxml>=2.3'
],
package_data={
'ramdisk_func_test': ['templates/*'],
'ramdisk_func_test.webserver': ['data/*']
},
url='',