summaryrefslogtreecommitdiff
path: root/src/leap/services/eip
diff options
context:
space:
mode:
authorTomás Touceda <chiiph@leap.se>2013-06-11 14:45:32 -0300
committerTomás Touceda <chiiph@leap.se>2013-06-11 14:45:32 -0300
commit10a90ca6cc52c41fbd8987007b8f12317a3d8b8b (patch)
treedeb51349513d040d2fdbdfcf07205f1f3d0c994d /src/leap/services/eip
parent86add779c3e5f869b4bffbb482a4659db30e2cbc (diff)
parent364d31999dbc488b5f99d81a0480c67ef248a515 (diff)
Merge remote-tracking branch 'ivan/feature/2774_check-provider-api-version_rev1' into develop
Diffstat (limited to 'src/leap/services/eip')
-rw-r--r--src/leap/services/eip/providerbootstrapper.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/leap/services/eip/providerbootstrapper.py b/src/leap/services/eip/providerbootstrapper.py
index 1339e086..e099eee7 100644
--- a/src/leap/services/eip/providerbootstrapper.py
+++ b/src/leap/services/eip/providerbootstrapper.py
@@ -32,10 +32,19 @@ from leap.common.check import leap_assert, leap_assert_type
from leap.config.providerconfig import ProviderConfig
from leap.util.request_helpers import get_content
from leap.services.abstractbootstrapper import AbstractBootstrapper
+from leap.provider.supportedapis import SupportedAPIs
+
logger = logging.getLogger(__name__)
+class UnsupportedProviderAPI(Exception):
+ """
+ Raised when attempting to use a provider with an incompatible API.
+ """
+ pass
+
+
class ProviderBootstrapper(AbstractBootstrapper):
"""
Given a provider URL performs a series of checks and emits signals
@@ -142,6 +151,18 @@ class ProviderBootstrapper(AbstractBootstrapper):
self._domain,
"provider.json"])
+ api_version = provider_config.get_api_version()
+ if SupportedAPIs.supports(api_version):
+ logger.debug("Provider definition has been modified")
+ else:
+ api_supported = ', '.join(self._supported_api_versions)
+ error = ('Unsupported provider API version. '
+ 'Supported versions are: {}. '
+ 'Found: {}.').format(api_supported, api_version)
+
+ logger.error(error)
+ raise UnsupportedProviderAPI(error)
+
def run_provider_select_checks(self, domain, download_if_needed=False):
"""
Populates the check queue.