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)
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)
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)
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)
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
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)))
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)))
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'])