From e169ed03967fc8552c9300467bd99013ad7391df Mon Sep 17 00:00:00 2001
From: Ivan Alejandro <ivanalejandro0@gmail.com>
Date: Tue, 6 Aug 2013 11:55:44 -0300
Subject: Check if schema exists before load a config.

Related to #3310.
---
 src/leap/common/config/baseconfig.py | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

(limited to 'src')

diff --git a/src/leap/common/config/baseconfig.py b/src/leap/common/config/baseconfig.py
index 699d734..7bf08dd 100644
--- a/src/leap/common/config/baseconfig.py
+++ b/src/leap/common/config/baseconfig.py
@@ -26,7 +26,7 @@ import os
 
 from abc import ABCMeta, abstractmethod
 
-from leap.common.check import leap_assert
+from leap.common.check import leap_assert, leap_check
 from leap.common.files import mkdir_p
 from leap.common.config.pluggableconfig import PluggableConfig
 from leap.common.config.prefixers import get_platform_prefixer
@@ -34,6 +34,12 @@ from leap.common.config.prefixers import get_platform_prefixer
 logger = logging.getLogger(__name__)
 
 
+class NonExistingSchema(Exception):
+    """
+    Raised if the schema needed to verify the config is None.
+    """
+
+
 class BaseConfig:
     """
     Abstract base class for any JSON based configuration.
@@ -112,6 +118,7 @@ class BaseConfig:
     def load(self, path="", data=None, mtime=None, relative=True):
         """
         Loads the configuration from disk.
+        It may raise NonExistingSchema exception.
 
         :param path: if relative=True, this is a relative path
                      to configuration. The absolute path
@@ -131,8 +138,12 @@ class BaseConfig:
         else:
             config_path = path
 
+        schema = self._get_spec()
+        leap_check(schema is not None,
+                   "There is no schema to use.", NonExistingSchema)
+
         self._config_checker = PluggableConfig(format="json")
-        self._config_checker.options = copy.deepcopy(self._get_spec())
+        self._config_checker.options = copy.deepcopy(schema)
 
         try:
             if data is None:
-- 
cgit v1.2.3