]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/diskprediction_local: raise if Predictor cannot be initialized
authorKefu Chai <kchai@redhat.com>
Sat, 20 Feb 2021 06:08:34 +0000 (14:08 +0800)
committerKefu Chai <kchai@redhat.com>
Sat, 20 Feb 2021 06:51:26 +0000 (14:51 +0800)
simpler this way.

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/pybind/mgr/diskprediction_local/module.py
src/pybind/mgr/diskprediction_local/predictor.py

index 31b1ccf925e35d5c824a477dc10d8b290fa77e09..a51e2d412169147b7da605871f7897380fec5b0c 100644 (file)
@@ -141,9 +141,10 @@ class Module(MgrModule):
         if obj_predictor is None:
             self.log.error('invalid value received for MODULE_OPTIONS.predictor_model')
             return predicted_result
-        ret = obj_predictor.initialize("{}/models/{}".format(get_diskfailurepredictor_path(), self.predictor_model))
-        if ret is not None:
-            self.log.error('Error initializing predictor')
+        try:
+            obj_predictor.initialize("{}/models/{}".format(get_diskfailurepredictor_path(), self.predictor_model))
+        except Exception as e:
+            self.log.error('Error initializing predictor: %s', e)
             return predicted_result
 
         if len(health_data) >= 6:
index e2b7fc4e720c0be0664ae5996b62ad64e09dcacf..daf57aafa5f838df09a73d4c573cec6f7649a488 100644 (file)
@@ -96,20 +96,19 @@ class RHDiskFailurePredictor(Predictor):
         # read config file as json, if it exists
         config_path = os.path.join(model_dirpath, self.CONFIG_FILE)
         if not os.path.isfile(config_path):
-            return "Missing config file: " + config_path
-        else:
-            with open(config_path) as f_conf:
-                self.model_context = json.load(f_conf)
+            raise Exception("Missing config file: " + config_path)
+        with open(config_path) as f_conf:
+            self.model_context = json.load(f_conf)
 
         # ensure all manufacturers whose context is defined in config file
         # have models and scalers saved inside model_dirpath
         for manufacturer in self.model_context:
             scaler_path = os.path.join(model_dirpath, manufacturer + "_scaler.pkl")
             if not os.path.isfile(scaler_path):
-                return "Missing scaler file: {}".format(scaler_path)
+                raise Exception(f"Missing scaler file: {scaler_path}")
             model_path = os.path.join(model_dirpath, manufacturer + "_predictor.pkl")
             if not os.path.isfile(model_path):
-                return "Missing model file: {}".format(model_path)
+                raise Exception(f"Missing model file: {model_path}")
 
         self.model_dirpath = model_dirpath
 
@@ -277,16 +276,15 @@ class PSDiskFailurePredictor(Predictor):
 
         config_path = os.path.join(model_dirpath, self.CONFIG_FILE)
         if not os.path.isfile(config_path):
-            return "Missing config file: " + config_path
-        else:
-            with open(config_path) as f_conf:
-                self.model_context = json.load(f_conf)
+            raise Exception(f"Missing config file: {config_path}")
+        with open(config_path) as f_conf:
+            self.model_context = json.load(f_conf)
 
         for model_name in self.model_context:
             model_path = os.path.join(model_dirpath, model_name)
 
             if not os.path.isfile(model_path):
-                return "Missing model file: " + model_path
+                raise Exception(f"Missing model file: {model_path}")
 
         self.model_dirpath = model_dirpath