def _get_action_instance(self): try: actions_cls = action_loader.register_plugin(Action, self._file_path) except Exception as e: tb_msg = traceback.format_exc() msg = ('Failed to load action class from file "%s" (action file most likely doesn\'t ' 'exist or contains invalid syntax): %s' % (self._file_path, str(e))) msg += '\n\n' + tb_msg exc_cls = type(e) raise exc_cls(msg) action_cls = actions_cls[0] if actions_cls and len(actions_cls) > 0 else None if not action_cls: raise Exception('File "%s" has no action class or the file doesn\'t exist.' % (self._file_path)) # Retrieve name of the action class # Note - we need to either use cls.__name_ or inspect.getmro(cls)[0].__name__ to # retrieve a correct name self._class_name = action_cls.__name__ action_service = ActionService(action_wrapper=self) action_instance = get_action_class_instance(action_cls=action_cls, config=self._config, action_service=action_service) return action_instance
def _get_action_instance(self): try: actions_cls = action_loader.register_plugin(Action, self._file_path) except Exception as e: tb_msg = traceback.format_exc() msg = ('Failed to load action class from file "%s" (action file most likely doesn\'t ' 'exist or contains invalid syntax): %s' % (self._file_path, str(e))) msg += '\n\n' + tb_msg exc_cls = type(e) raise exc_cls(msg) action_cls = actions_cls[0] if actions_cls and len(actions_cls) > 0 else None if not action_cls: raise Exception('File "%s" has no action class or the file doesn\'t exist.' % (self._file_path)) self._class_name = action_cls.__class__.__name__ config_loader = ContentPackConfigLoader(pack_name=self._pack, user=self._user) config = config_loader.get_config() if config: LOG.info('Found config for action "%s"' % (self._file_path)) else: LOG.info('No config found for action "%s"' % (self._file_path)) config = None action_service = ActionService(action_wrapper=self) action_instance = get_action_class_instance(action_cls=action_cls, config=config, action_service=action_service) return action_instance
def _get_action_instance(self): actions_cls = action_loader.register_plugin(Action, self._file_path) action_cls = actions_cls[0] if actions_cls and len( actions_cls) > 0 else None if not action_cls: raise Exception( 'File "%s" has no action or the file doesn\'t exist.' % (self._file_path)) self._class_name = action_cls.__class__.__name__ config_loader = ContentPackConfigLoader(pack_name=self._pack, user=self._user) config = config_loader.get_config() if config: LOG.info('Found config for action "%s"' % (self._file_path)) else: LOG.info('No config found for action "%s"' % (self._file_path)) config = None action_service = ActionService(action_wrapper=self) action_instance = get_action_class_instance( action_cls=action_cls, config=config, action_service=action_service) return action_instance
def test_action_class_instantiation_action_service_argument(self): class Action1(Action): # Constructor not overriden so no issue here pass def run(self): pass class Action2(Action): # Constructor overriden, but takes action_service argument def __init__(self, config, action_service=None): super(Action2, self).__init__(config=config, action_service=action_service) def run(self): pass class Action3(Action): # Constructor overriden, but doesn't take to action service def __init__(self, config): super(Action3, self).__init__(config=config) def run(self): pass config = {'a': 1, 'b': 2} action_service = 'ActionService!' action1 = get_action_class_instance(action_cls=Action1, config=config, action_service=action_service) self.assertEqual(action1.config, config) self.assertEqual(action1.action_service, action_service) action2 = get_action_class_instance(action_cls=Action2, config=config, action_service=action_service) self.assertEqual(action2.config, config) self.assertEqual(action2.action_service, action_service) action3 = get_action_class_instance(action_cls=Action3, config=config, action_service=action_service) self.assertEqual(action3.config, config) self.assertEqual(action3.action_service, action_service)
def get_action_instance(self, config=None): """ Retrieve instance of the action class. """ # pylint: disable=not-callable instance = get_action_class_instance(action_cls=self.action_cls, config=config, action_service=self.action_service) return instance
def get_action_instance(self, config=None): """ Retrieve instance of the action class. """ # pylint: disable=not-callable instance = get_action_class_instance( action_cls=self.action_cls, config=config, action_service=self.action_service) return instance
def _get_action_instance(self): actions_cls = action_loader.register_plugin(Action, self._file_path) action_cls = actions_cls[0] if actions_cls and len(actions_cls) > 0 else None if not action_cls: raise Exception('File "%s" has no action or the file doesn\'t exist.' % (self._file_path)) config_loader = ContentPackConfigLoader(pack_name=self._pack, user=self._user) config = config_loader.get_config() if config: LOG.info('Found config for action "%s"' % (self._file_path)) else: LOG.info('No config found for action "%s"' % (self._file_path)) config = None action_service = ActionService(action_wrapper=self) action_instance = get_action_class_instance(action_cls=action_cls, config=config, action_service=action_service) return action_instance
def _get_action_instance(self): try: actions_cls = action_loader.register_plugin( Action, self._file_path) except Exception as e: tb_msg = traceback.format_exc() msg = ( 'Failed to load action class from file "%s" (action file most likely doesn\'t ' 'exist or contains invalid syntax): %s' % (self._file_path, str(e))) msg += '\n\n' + tb_msg exc_cls = type(e) raise exc_cls(msg) action_cls = actions_cls[0] if actions_cls and len( actions_cls) > 0 else None if not action_cls: raise Exception( 'File "%s" has no action class or the file doesn\'t exist.' % (self._file_path)) self._class_name = action_cls.__class__.__name__ config_loader = ContentPackConfigLoader(pack_name=self._pack, user=self._user) config = config_loader.get_config() if config: LOG.info('Found config for action "%s"' % (self._file_path)) else: LOG.info('No config found for action "%s"' % (self._file_path)) config = None action_service = ActionService(action_wrapper=self) action_instance = get_action_class_instance( action_cls=action_cls, config=config, action_service=action_service) return action_instance