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:
parent
66bcb8a146
commit
afc4b47fbc
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue