コード例 #1
0
ファイル: engine.py プロジェクト: sergmelikyan/murano
    def execute(self):
        token, tenant_id = self.environment.token, self.environment.tenant_id
        with package_loader.ApiPackageLoader(token, tenant_id) as pkg_loader:
            class_loader = package_class_loader.PackageClassLoader(pkg_loader)
            system_objects.register(class_loader, pkg_loader)

            exc = executor.MuranoDslExecutor(class_loader, self.environment)
            obj = exc.load(self.model)

            try:
                # Skip execution of action in case of no action is provided.
                # Model will be just loaded, cleaned-up and unloaded.
                # Most of the time this is used for deletion of environments.
                if self.action:
                    self._invoke(exc)
            except Exception as e:
                if isinstance(e, dsl_exception.MuranoPlException):
                    LOG.error('\n' + e.format(prefix='  '))
                else:
                    LOG.exception(e)
                reporter = status_reporter.StatusReporter()
                reporter.initialize(obj)
                reporter.report_error(obj, str(e))

            return results_serializer.serialize(obj, exc)
コード例 #2
0
ファイル: engine.py プロジェクト: lexplua/murano
 def __init__(self, task, reporter=None):
     if reporter is None:
         reporter = status_reporter.StatusReporter(task['id'])
     self._action = task['action']
     self._session = execution_session.ExecutionSession()
     self._session.token = task['token']
     self._session.project_id = task['tenant_id']
     self._reporter = reporter
     self._model_policy_enforcer = enforcer.ModelPolicyEnforcer(
         self._session)
コード例 #3
0
ファイル: engine.py プロジェクト: toby82/murano
    def __init__(self, task, reporter=None):
        if reporter is None:
            reporter = status_reporter.StatusReporter(task['id'])
        self._action = task.get('action')
        self._model = task['model']
        self._session = execution_session.ExecutionSession()
        self._session.token = task['token']
        self._session.project_id = task['tenant_id']
        self._session.system_attributes = self._model.get('SystemData', {})
        self._reporter = reporter

        self._model_policy_enforcer = enforcer.ModelPolicyEnforcer(
            self._session)
コード例 #4
0
ファイル: engine.py プロジェクト: NikolayStarodubtsev/murano
    def __init__(self, task, reporter=None):
        if reporter is None:
            reporter = status_reporter.StatusReporter(task['id'])
        self._action = task.get('action')
        self._model = task['model']
        self._environment = environment.Environment()
        self._environment.token = task['token']
        self._environment.tenant_id = task['tenant_id']
        self._environment.system_attributes = self._model.get('SystemData', {})
        self._reporter = reporter

        self._model_policy_enforcer = enforcer.ModelPolicyEnforcer(
            self._environment)
コード例 #5
0
 def _log_exception(e, root, method_name):
     if isinstance(e, dsl_exception.MuranoPlException):
         LOG.error('\n' + e.format(prefix='  '))
         exception_traceback = e.format()
     else:
         exception_traceback = traceback.format_exc()
         LOG.exception(
             _LE("Exception %(exc)s occurred"
                 " during invocation of %(method)s"),
             {'exc': e, 'method': method_name})
     if root is not None:
         reporter = status_reporter.StatusReporter()
         reporter.initialize(root)
         reporter.report_error(root, str(e))
     return exception_traceback
コード例 #6
0
    def call_static_action(cls, context, task):
        s_task = token_sanitizer.TokenSanitizer().sanitize(task)
        LOG.info('Starting execution of static action: '
                 '{task_desc}'.format(task_desc=jsonutils.dumps(s_task)))

        result = None
        reporter = status_reporter.StatusReporter(task['id'])

        try:
            task_executor = StaticActionExecutor(task, reporter)
            result = task_executor.execute()
            return result
        finally:
            LOG.info('Finished execution of static action: '
                     '{task_desc}'.format(task_desc=jsonutils.dumps(result)))
コード例 #7
0
    def execute(task):
        s_task = token_sanitizer.TokenSanitizer().sanitize(task)
        LOG.info('Starting processing task: {task_desc}'.format(
            task_desc=jsonutils.dumps(s_task)))

        result = None
        reporter = status_reporter.StatusReporter(task['id'])

        try:
            task_executor = TaskExecutor(task, reporter)
            result = task_executor.execute()
            return result
        finally:
            LOG.info('Finished processing task: {task_desc}'.format(
                task_desc=jsonutils.dumps(result)))
コード例 #8
0
ファイル: engine.py プロジェクト: sergmelikyan/murano
    def handle_task(context, task):
        s_task = token_sanitizer.TokenSanitizer().sanitize(task)
        LOG.info(
            _('Starting processing task: {task_desc}').format(
                task_desc=anyjson.dumps(s_task)))

        result = task['model']
        try:
            task_executor = TaskExecutor(task)
            result = task_executor.execute()
        except Exception as e:
            LOG.exception('Error during task execution for tenant %s',
                          task['tenant_id'])
            msg_env = Environment(task['id'])
            reporter = status_reporter.StatusReporter()
            reporter.initialize(msg_env)
            reporter.report_error(msg_env, str(e))
        finally:
            rpc.api().process_result(result, task['id'])