import logging
from importlib import import_module
import attr
from ..factory import target_factory
from .common import Driver
[docs]@target_factory.reg_driver
@attr.s(eq=False)
class XenaDriver(Driver):
"""
Xena Driver
"""
bindings = {"xena_manager": "XenaManager"}
[docs] def __attrs_post_init__(self):
super().__attrs_post_init__()
self._xena_app = import_module('xenavalkyrie.xena_app')
self._tgn_utils = import_module('trafficgenerator.tgn_utils')
self._logger = logging.getLogger("{}".format(self))
self._xm = None
[docs] def on_activate(self):
self._xm = self._xena_app.init_xena(self._tgn_utils.ApiType.socket, self._logger, 'labgrid')
self._xm.session.add_chassis(self.xena_manager.hostname)
[docs] def on_deactivate(self):
if self._xm:
self._xm.session.disconnect()
self._xm = None
[docs] @Driver.check_active
def get_session(self):
return self._xm.session