-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
49 lines (39 loc) · 2.06 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/env python3
import asyncio
from configuration.settings import Settings
from reporting.shellReporter import ShellReporter
from reporting.zabbixReporter import ZabbixReporter
from statsSend.teamCity.teamCityStatisticsSender import TeamCityStatisticsSender
from statsSend.jenkins.jenkinsStatisticsSender import JenkinsStatisticsSender
from statsSend.octopusDeploy.octopusDeployStatisticsSender import OctopusDeployStatisticsSender
from statsSend.urbanCodeDeploy.urbanCodeDeployStatisticsSender import UrbanCodeDeployStatisticsSender
class Main:
reporter_factories = {
(lambda x: not x.is_enabled('Zabbix')): (lambda x: ShellReporter()),
(lambda x: x.is_enabled('Zabbix')): (lambda x: ZabbixReporter(x.section('Zabbix')))
}
stats_sender_factories = {
(lambda x: x.is_enabled('TeamCity')): (lambda x, reporter: TeamCityStatisticsSender(x.section('TeamCity'), reporter)),
(lambda x: x.is_enabled('Jenkins')): (lambda x, reporter: JenkinsStatisticsSender(x.section('Jenkins'), reporter)),
(lambda x: x.is_enabled('OctopusDeploy')): (lambda x, reporter: OctopusDeployStatisticsSender(x.section('OctopusDeploy'), reporter)),
(lambda x: x.is_enabled('UrbanCodeDeploy')): (lambda x, reporter: UrbanCodeDeployStatisticsSender(x.section('UrbanCodeDeploy'), reporter))
}
def __init__(self):
self.settings = Settings()
self._create_stats_senders()
def send_stats(self):
for sender in self.statisticsSenders:
loop = asyncio.new_event_loop()
loop.run_until_complete(sender.send())
loop.close()
def _create_stats_senders(self):
self.statisticsSenders = []
reporter = self._create_reporter()
for key, value in self.stats_sender_factories.items():
if key(self.settings):
self.statisticsSenders.append(value(self.settings, reporter))
def _create_reporter(self):
for key, value in self.reporter_factories.items():
if key(self.settings):
return value(self.settings)
Main().send_stats()