32
32
import logging
33
33
34
34
from functools import reduce
35
+ from powerapi .exception import PowerAPIException
35
36
from powerapi .cli .parser import MainParser , ComponentSubParser
36
37
from powerapi .cli .parser import store_true
37
38
from powerapi .cli .parser import BadValueException , MissingValueException
@@ -186,6 +187,20 @@ def _gen_actor(self, component_name, component_config, main_config):
186
187
raise NotImplementedError ()
187
188
188
189
190
+ class ModelNameAlreadyUsed (PowerAPIException ):
191
+ """
192
+ Exception raised when attempting to add to a DBActorGenerator a model factory with a name already bound to another
193
+ model factory in the DBActorGenerator
194
+ """
195
+
196
+
197
+ class ModelNameAlreadyUsed (PowerAPIException ):
198
+ """
199
+ Exception raised when attempting to add to a DBActorGenerator a database factory with a name already bound to another
200
+ database factory in the DBActorGenerator
201
+ """
202
+
203
+
189
204
class DBActorGenerator (Generator ):
190
205
191
206
def __init__ (self , component_group_name ):
@@ -203,6 +218,16 @@ def __init__(self, component_group_name):
203
218
'opentsdb' : lambda db_config : OpenTSDB (db_config ['uri' ], db_config ['port' ], db_config ['metric_name' ]),
204
219
}
205
220
221
+ def add_model_factory (self , model_name , model_factory ):
222
+ if model_name in self .model_factory :
223
+ raise ModelNameAlreadyUsed ()
224
+ self .model_factory [model_name ] = model_factory
225
+
226
+ def add_db_factory (self , db_name , db_factory ):
227
+ if db_name in self .model_factory :
228
+ raise ModelNameAlreadyUsed ()
229
+ self .model_factory [db_name ] = db_factory
230
+
206
231
def _generate_db (self , db_name , db_config , main_config ):
207
232
return self .db_factory [db_name ](db_config )
208
233
0 commit comments