try:
for t in self._elements:
await t.execute()
- rets = await asyncio.gather(*[t.get_future()
+ rets = await asyncio.gather(*[t.get_future()
for t in self._elements])
# The result value is the "union" of all result values
print('we need to cancel tasks not executed...')
self.get_future().set_exception(e)
-Task, EmptyTask = SchedulingAlgebra(BaseTask, ConcurrentMixin,
+Task, EmptyTask = SchedulingAlgebra(BaseTask, ConcurrentMixin,
CompositionMixin, SequentialMixin)
def task(fn):
try:
rv = fut.result()
if self._parse is None and rv.return_value != 0:
- raise Exception('Bash command failed', self.get_full_cmd(), rv)
+ raise Exception('Bash command failed on node {}'.format(self._node.name), self.get_full_cmd(), rv)
if self._post:
self._post()
if self._parse:
#XXX VPP
if hasattr(self.src_node, 'vpp') and not self.src_node.vpp is None:
- vpp_src = VPPInterface(parent = self.src,
+ vpp_src = VPPInterface(parent = self._src,
vpp = self.src_node.vpp,
- ip_address = Reference(self.src, 'ip_address'),
- device_name = 'vpp' + self.src.device_name)
+ ip_address = Reference(self._src, 'ip_address'),
+ device_name = 'vpp' + self._src.device_name)
manager.commit_resource(vpp_src)
if hasattr(self.dst_node, 'vpp') and not self.dst_node.vpp is None:
- vpp_dst = VPPInterface(parent = self.dst,
+ vpp_dst = VPPInterface(parent = self._dst,
vpp = self.dst_node.vpp,
- ip_address = Reference(self.dst, 'ip_address'),
- device_name = 'vpp' + self.dst.device_name)
+ ip_address = Reference(self._dst, 'ip_address'),
+ device_name = 'vpp' + self._dst.device_name)
manager.commit_resource(vpp_dst)
#--------------------------------------------------------------------------
from vicn.core.exception import ResourceNotFound
from vicn.core.requirement import Requirement
from vicn.core.resource_mgr import wait_resource_task
-from vicn.core.task import task, inline_task, BashTask
+from vicn.core.task import task, inline_task, BashTask, EmptyTask
from vicn.resource.linux.net_device import NetDevice
from vicn.resource.node import Node
from vicn.resource.vpp.scripts import APPARMOR_VPP_PROFILE
"""
Make sure vpp_host is instanciated before starting the container.
"""
- wait_vpp_host = wait_resource_task(self.node.vpp_host)
+ wait_vpp_host = EmptyTask()
+ if 'vpp' in self.profiles:
+ wait_vpp_host = wait_resource_task(self.node.vpp_host)
create = self._create_container()
start = self.__method_start__()
return wait_vpp_host > (create > start)