3333from typing import Dict , Type , Callable
3434
3535from powerapi .actor import Actor
36+ from powerapi .database import MongoDB , CsvDB , OpenTSDB , SocketDB , PrometheusDB , VirtioFSDB , FileDB
3637from powerapi .database .influxdb2 import InfluxDB2
3738from powerapi .exception import PowerAPIException , ModelNameAlreadyUsed , DatabaseNameDoesNotExist , ModelNameDoesNotExist , \
38- DatabaseNameAlreadyUsed , ProcessorTypeDoesNotExist , ProcessorTypeAlreadyUsed , MonitorTypeDoesNotExist
39+ DatabaseNameAlreadyUsed , ProcessorTypeDoesNotExist , ProcessorTypeAlreadyUsed
3940from powerapi .filter import Filter
40- from powerapi .processor .pre .k8s .k8s_monitor import K8sMonitorAgent
41- from powerapi .processor .pre .k8s .k8s_pre_processor_actor import K8sPreProcessorActor , TIME_INTERVAL_DEFAULT_VALUE , \
42- TIMEOUT_QUERY_DEFAULT_VALUE
41+ from powerapi .processor .pre .k8s import K8sPreProcessorActor
4342from powerapi .processor .pre .libvirt .libvirt_pre_processor_actor import LibvirtPreProcessorActor
4443from powerapi .processor .processor_actor import ProcessorActor
45- from powerapi .report import HWPCReport , PowerReport , ControlReport , ProcfsReport , Report , FormulaReport
46- from powerapi .database import MongoDB , CsvDB , OpenTSDB , SocketDB , PrometheusDB , \
47- VirtioFSDB , FileDB
4844from powerapi .puller import PullerActor
4945from powerapi .pusher import PusherActor
46+ from powerapi .report import HWPCReport , PowerReport , ControlReport , ProcfsReport , Report , FormulaReport
5047
5148COMPONENT_TYPE_KEY = 'type'
5249COMPONENT_MODEL_KEY = 'model'
5956ACTOR_NAME_KEY = 'actor_name'
6057TARGET_ACTORS_KEY = 'target_actors'
6158REGEXP_KEY = 'regexp'
62- K8S_API_MODE_KEY = 'k8s-api-mode'
63- TIME_INTERVAL_KEY = 'time-interval'
64- TIMEOUT_QUERY_KEY = 'timeout-query'
59+
6560PULLER_NAME_KEY = 'puller'
6661PUSHER_NAME_KEY = 'pusher'
67- API_KEY_KEY = 'api-key'
68- HOST_KEY = 'host'
62+
63+ K8S_API_MODE_KEY = 'api-mode'
64+ K8S_API_KEY_KEY = 'api-key'
65+ K8S_API_HOST_KEY = 'api-host'
6966
7067LISTENER_ACTOR_KEY = 'listener_actor'
7168
7269GENERAL_CONF_STREAM_MODE_KEY = 'stream'
7370GENERAL_CONF_VERBOSE_KEY = 'verbose'
7471
75- MONITOR_NAME_SUFFIX = '_monitor'
76- MONITOR_KEY = 'monitor'
77- K8S_COMPONENT_TYPE_VALUE = 'k8s'
78-
7972
8073class Generator :
8174 """
@@ -332,39 +325,48 @@ def _gen_actor(self, component_config: dict, main_config: dict, component_name:
332325
333326class PreProcessorGenerator (ProcessorGenerator ):
334327 """
335- Generator that initialises the pre-processor from config
328+ Generator that initialises the pre-processor from config.
336329 """
337330
338331 def __init__ (self ):
339- ProcessorGenerator .__init__ (self , 'pre-processor' , self ._get_default_processor_factories ())
332+ super () .__init__ ('pre-processor' , self ._get_default_processor_factories ())
340333
341334 @staticmethod
342- def _get_default_processor_factories () -> Dict [str , Callable [[Dict ], ProcessorActor ]]:
335+ def _libvirt_pre_processor_factory (processor_config : dict ) -> LibvirtPreProcessorActor :
336+ """
337+ Libvirt pre-processor actor factory.
338+ :param processor_config: Pre-Processor configuration
339+ :return: Configured Libvirt pre-processor actor
340+ """
341+ name = processor_config [ACTOR_NAME_KEY ]
342+ uri = processor_config [COMPONENT_URI_KEY ]
343+ regexp = processor_config [REGEXP_KEY ]
344+ target_actors_name = [processor_config [PULLER_NAME_KEY ]]
345+ level_logger = logging .DEBUG if processor_config [GENERAL_CONF_VERBOSE_KEY ] else logging .INFO
346+ return LibvirtPreProcessorActor (name , uri , regexp , [], target_actors_name , level_logger )
347+
348+ @staticmethod
349+ def _k8s_pre_processor_factory (processor_config : Dict ) -> K8sPreProcessorActor :
350+ """
351+ Kubernetes pre-processor actor factory.
352+ :param processor_config: Pre-Processor configuration
353+ :return: Configured Kubernetes pre-processor actor
354+ """
355+ name = processor_config [ACTOR_NAME_KEY ]
356+ api_mode = processor_config .get (K8S_API_MODE_KEY , 'manual' ) # use manual mode by default
357+ api_host = processor_config .get (K8S_API_HOST_KEY , None )
358+ api_key = processor_config .get (K8S_API_KEY_KEY , None )
359+ target_actors_name = [processor_config [PULLER_NAME_KEY ]]
360+ level_logger = logging .DEBUG if processor_config [GENERAL_CONF_VERBOSE_KEY ] else logging .INFO
361+ return K8sPreProcessorActor (name , [], target_actors_name , api_mode , api_host , api_key , level_logger )
362+
363+ def _get_default_processor_factories (self ) -> Dict [str , Callable [[Dict ], ProcessorActor ]]:
364+ """
365+ Return the default pre-processors factory.
366+ """
343367 return {
344- 'libvirt' : lambda processor_config : LibvirtPreProcessorActor (name = processor_config [ACTOR_NAME_KEY ],
345- uri = processor_config [COMPONENT_URI_KEY ],
346- regexp = processor_config [REGEXP_KEY ],
347- target_actors_names = [processor_config
348- [PULLER_NAME_KEY ]]),
349- 'k8s' : lambda processor_config : K8sPreProcessorActor (name = processor_config [ACTOR_NAME_KEY ],
350- ks8_api_mode = None if
351- K8S_API_MODE_KEY not in processor_config else
352- processor_config [K8S_API_MODE_KEY ],
353- time_interval = TIME_INTERVAL_DEFAULT_VALUE if
354- TIME_INTERVAL_KEY not in processor_config else
355- processor_config [TIME_INTERVAL_KEY ],
356- timeout_query = TIMEOUT_QUERY_DEFAULT_VALUE if
357- TIMEOUT_QUERY_KEY not in processor_config
358- else processor_config [TIMEOUT_QUERY_KEY ],
359- api_key = None if API_KEY_KEY not in processor_config
360- else processor_config [API_KEY_KEY ],
361- host = None if HOST_KEY not in processor_config
362- else processor_config [HOST_KEY ],
363- level_logger = logging .DEBUG if
364- processor_config [GENERAL_CONF_VERBOSE_KEY ] else
365- logging .INFO ,
366- target_actors_names = [processor_config [PULLER_NAME_KEY ]]
367- )
368+ 'libvirt' : self ._libvirt_pre_processor_factory ,
369+ 'k8s' : self ._k8s_pre_processor_factory ,
368370 }
369371
370372
@@ -379,48 +381,3 @@ def __init__(self):
379381 @staticmethod
380382 def _get_default_processor_factories () -> Dict [str , Callable [[Dict ], ProcessorActor ]]:
381383 return {}
382-
383-
384- class MonitorGenerator (Generator ):
385- """
386- Generator that initialises the monitor by using a K8sPreProcessorActor
387- """
388-
389- def __init__ (self ):
390- Generator .__init__ (self , component_group_name = MONITOR_KEY )
391-
392- self .monitor_factory = {
393- K8S_COMPONENT_TYPE_VALUE : lambda monitor_config : K8sMonitorAgent (
394- name = monitor_config [ACTOR_NAME_KEY ],
395- concerned_actor_state = monitor_config [LISTENER_ACTOR_KEY ].state ,
396- level_logger = monitor_config [LISTENER_ACTOR_KEY ].logger .getEffectiveLevel ()
397- )
398-
399- }
400-
401- def _gen_actor (self , component_config : dict , main_config : dict , component_name : str ):
402-
403- monitor_actor_type = component_config [COMPONENT_TYPE_KEY ]
404-
405- if monitor_actor_type not in self .monitor_factory :
406- raise MonitorTypeDoesNotExist (monitor_type = monitor_actor_type )
407-
408- component_config [ACTOR_NAME_KEY ] = component_name + MONITOR_NAME_SUFFIX
409- return self .monitor_factory [monitor_actor_type ](component_config )
410-
411- def generate_from_processors (self , processors : dict ) -> dict :
412- """
413- Generates monitors associated with the given processors
414- :param dict processors: Dictionary with the processors for the generation
415- """
416-
417- monitors_config = {MONITOR_KEY : {}}
418-
419- for processor_name , processor in processors .items ():
420-
421- if isinstance (processor , K8sPreProcessorActor ):
422- monitors_config [MONITOR_KEY ][processor_name + MONITOR_NAME_SUFFIX ] = {
423- COMPONENT_TYPE_KEY : K8S_COMPONENT_TYPE_VALUE ,
424- LISTENER_ACTOR_KEY : processor }
425-
426- return self .generate (main_config = monitors_config )
0 commit comments