diff --git a/leapp/actors/__init__.py b/leapp/actors/__init__.py index 9d83bf105..f11448bfb 100644 --- a/leapp/actors/__init__.py +++ b/leapp/actors/__init__.py @@ -470,6 +470,8 @@ def get_actor_metadata(actor): _get_attribute(actor, 'dialogs', _is_dialog_tuple, required=False, default_value=()), _get_attribute(actor, 'description', _is_type(string_types), required=False, default_value=actor.__doc__ or 'There has been no description provided for this actor.'), + _get_attribute(actor, 'configuration', _is_type(string_types), required=False, + default_value=actor.__doc__ or 'There has been no description provided for this actor.') _get_attribute(actor, 'apis', _is_api_tuple, required=False, default_value=()) ]) diff --git a/leapp/models/fields/__init__.py b/leapp/models/fields/__init__.py index 5e24be44d..c2a8071a8 100644 --- a/leapp/models/fields/__init__.py +++ b/leapp/models/fields/__init__.py @@ -2,6 +2,12 @@ import copy import datetime import json +try: + # Python 3 + from collections.abc import Sequence +except ImportError: + # Python 2.7 + from collections import Sequence import six @@ -185,16 +191,17 @@ def _validate_builtin_value(self, value, name): self._validate(value=value, name=name, expected_type=self._builtin_type) def _validate(self, value, name, expected_type): - if not isinstance(expected_type, tuple): + if not isinstance(expected_type, Sequence): expected_type = (expected_type,) + if value is None and self._nullable: return - if not any(isinstance(value, t) for t in expected_type): + + if not isinstance(value, expected_type): names = ', '.join(['{}'.format(t.__name__) for t in expected_type]) raise ModelViolationError("Fields {} is of type: {} expected: {}".format(name, type(value).__name__, names)) - class Boolean(BuiltinField): """ Boolean field diff --git a/leapp/repository/actor_definition.py b/leapp/repository/actor_definition.py index 2b5df1ab9..53bc361c2 100644 --- a/leapp/repository/actor_definition.py +++ b/leapp/repository/actor_definition.py @@ -278,6 +278,13 @@ def description(self): """ return self.discover()['description'] + @property + def configuration(self): + """ + :return: Actor configurations + """ + return self.discover()['configuration'] + @contextlib.contextmanager def injected_context(self): """