summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/common-code-to-base-config1
-rw-r--r--src/leap/common/config/baseconfig.py25
2 files changed, 25 insertions, 1 deletions
diff --git a/changes/common-code-to-base-config b/changes/common-code-to-base-config
new file mode 100644
index 0000000..d4e7fc1
--- /dev/null
+++ b/changes/common-code-to-base-config
@@ -0,0 +1 @@
+ o Handle schemas and api versions in base class. Related to #3310.
diff --git a/src/leap/common/config/baseconfig.py b/src/leap/common/config/baseconfig.py
index 7bf08dd..ba87df9 100644
--- a/src/leap/common/config/baseconfig.py
+++ b/src/leap/common/config/baseconfig.py
@@ -61,13 +61,25 @@ class BaseConfig:
def __init__(self):
self._data = {}
self._config_checker = None
+ self._api_version = None
@abstractmethod
+ def _get_schema(self):
+ """
+ Returns the schema corresponding to the version given.
+
+ :rtype: dict or None if the version is not supported.
+ """
+ pass
+
def _get_spec(self):
"""
Returns the spec object for the specific configuration.
"""
- return None
+ leap_assert(self._api_version is not None,
+ "You should set the API version.")
+
+ return self._get_schema()
def _safe_get_value(self, key):
"""
@@ -79,6 +91,17 @@ class BaseConfig:
leap_assert(self._config_checker, "Load the config first")
return self._config_checker.config.get(key, None)
+ def set_api_version(self, version):
+ """
+ Sets the supported api version.
+
+ :param api_version: the version of the api supported by the provider.
+ :type api_version: str
+ """
+ self._api_version = version
+ leap_assert(self._get_schema(self._api_version) is not None,
+ "Version %s is not supported." % (version, ))
+
def get_path_prefix(self):
"""
Returns the platform dependant path prefixer