-
Notifications
You must be signed in to change notification settings - Fork 4
/
config.ts
116 lines (106 loc) · 6.36 KB
/
config.ts
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
let defaultConfig;
try {
defaultConfig = require('../config.json');
} catch (Error) {
console.error(Error);
defaultConfig = {};
}
/**
* Decode json
*/
function jsonParse(name: string, value) {
if (process.env[name]) {
return JSON.parse(process.env[name]);
}
return value;
}
/**
* Comma separated string to array
*/
function split(name: string, value) {
if (process.env[name]) {
return process.env[name].split(',');
}
return value;
}
/**
* Parse env string
*/
function stringParse(name: string, value) {
if (process.env[name]) {
if (process.env[name] == '') {
return null;
}
return process.env[name];
}
return value;
}
const config = {
log: {
level: process.env.LOG_LEVEL || defaultConfig.log.level,
},
cleanup: jsonParse('CLEANUP', defaultConfig.cleanup),
icinga: {
address: process.env.ICINGA_ADDRESS || defaultConfig.icinga.address,
port: process.env.ICINGA_PORT || defaultConfig.icinga.port,
apiUser: process.env.ICINGA_API_USERNAME || defaultConfig.icinga.apiUser,
apiPassword: process.env.ICINGA_API_PASSWORD || defaultConfig.icinga.apiPassword,
},
kubernetes: {
nodes: {
discover: jsonParse('KUBERNETES_NODES_DISCOVER', defaultConfig.kubernetes.nodes.discover),
hostDefinition: jsonParse('KUBERNETES_NODES_HOST_DEFINITION', defaultConfig.kubernetes.nodes.hostDefinition),
hostTemplates: jsonParse('KUBERNETES_NODES_HOST_TEMPLATES', defaultConfig.kubernetes.nodes.hostTemplates),
},
ingresses: {
discover: jsonParse('KUBERNETES_INGRESSES_DISCOVER', defaultConfig.kubernetes.ingresses.discover),
hostName: stringParse('KUBERNETES_INGRESSES_HOSTNAME', defaultConfig.kubernetes.ingresses.hostName),
applyServices: jsonParse('KUBERNETES_INGRESSES_APPLYSERVICES', defaultConfig.kubernetes.ingresses.applyServices),
serviceDefinition: jsonParse('KUBERNETES_INGRESSES_SERVICE_DEFINITION', defaultConfig.kubernetes.ingresses.serviceDefinition),
hostDefinition: jsonParse('KUBERNETES_INGRESSES_HOST_DEFINITION', defaultConfig.kubernetes.ingresses.hostDefinition),
serviceTemplates: split('KUBERNETES_INGRESSES_SERVICE_TEMPLATES', defaultConfig.kubernetes.ingresses.serviceTemplates),
hostTemplates: split('KUBERNETES_INGRESSES_HOST_TEMPLATES', defaultConfig.kubernetes.ingresses.hostTemplates),
attachToNodes: jsonParse('KUBERNETES_INGRESSES_ATTACHTONODES', defaultConfig.kubernetes.ingresses.attachToNodes),
},
volumes: {
discover: jsonParse('KUBERNETES_VOLUMES_DISCOVER', defaultConfig.kubernetes.volumes.discover),
hostName: stringParse('KUBERNETES_VOLUMES_HOSTNAME', defaultConfig.kubernetes.volumes.hostName),
applyServices: jsonParse('KUBERNETES_VOLUMES_APPLYSERVICES', defaultConfig.kubernetes.volumes.applyServices),
serviceDefinition: jsonParse('KUBERNETES_VOLUMES_SERVICE_DEFINITION', defaultConfig.kubernetes.volumes.serviceDefinition),
hostDefinition: jsonParse('KUBERNETES_VOLUMES_HOST_DEFINITION', defaultConfig.kubernetes.volumes.hostDefinition),
serviceTemplates: split('KUBERNETES_VOLUMES_SERVICE_TEMPLATES', defaultConfig.kubernetes.volumes.serviceTemplates),
hostTemplates: split('KUBERNETES_VOLUMES_HOST_TEMPLATES', defaultConfig.kubernetes.volumes.hostTemplates),
attachToNodes: jsonParse('KUBERNETES_VOLUMES_ATTACHTONODES', defaultConfig.kubernetes.volumes.attachToNodes),
},
services: {
ClusterIP: {
discover: jsonParse('KUBERNETES_SERVICES_CLUSTERIP_DISCOVER', defaultConfig.kubernetes.services.ClusterIP.discover),
hostName: stringParse('KUBERNETES_SERVICES_CLUSTERIP_HOSTNAME', defaultConfig.kubernetes.services.ClusterIP.hostName),
applyServices: jsonParse('KUBERNETES_SERVICES_CLUSTERIP_APPLYSERVICES', defaultConfig.kubernetes.services.ClusterIP.applyServices),
serviceDefinition: jsonParse('KUBERNETES_SERVICES_CLUSTERIP_SERVICE_DEFINITION', defaultConfig.kubernetes.services.ClusterIP.serviceDefinition),
hostDefinition: jsonParse('KUBERNETES_SERVICES_CLUSTERIP_HOST_DEFINITION', defaultConfig.kubernetes.services.ClusterIP.hostDefinition),
serviceTemplates: split('KUBERNETES_SERVICES_CLUSTERIP_SERVICE_TEMPLATES', defaultConfig.kubernetes.services.ClusterIP.serviceTemplates),
hostTemplates: split('KUBERNETES_SERVICES_CLUSTERIP_HOST_TEMPLATES', defaultConfig.kubernetes.services.ClusterIP.hostTemplates),
},
NodePort: {
discover: jsonParse('KUBERNETES_SERVICES_NODEPORT_DISCOVER', defaultConfig.kubernetes.services.NodePort.discover),
hostName: jsonParse('KUBERNETES_SERVICES_NODEPORT_HOSTNAME', defaultConfig.kubernetes.services.NodePort.hostName),
applyServices: jsonParse('KUBERNETES_SERVICES_NODEPORT_APPLYSERVICES', defaultConfig.kubernetes.services.NodePort.applyServices),
serviceDefinition: jsonParse('KUBERNETES_SERVICES_NODEPORT_SERVICE_DEFINITION', defaultConfig.kubernetes.services.NodePort.serviceDefinition),
hostDefinition: jsonParse('KUBERNETES_SERVICES_NODEPORT_HOST_DEFINITION', defaultConfig.kubernetes.services.NodePort.hostDefinition),
serviceTemplates: split('KUBERNETES_SERVICES_NODEPORT_SERVICE_TEMPLATES', defaultConfig.kubernetes.services.NodePort.serviceTemplates),
hostTemplates: split('KUBERNETES_SERVICES_NODEPORT_HOST_TEMPLATES', defaultConfig.kubernetes.services.NodePort.hostTemplates),
},
LoadBalancer: {
discover: jsonParse('KUBERNETES_SERVICES_LOADBALANCER_DISCOVER', defaultConfig.kubernetes.services.LoadBalancer.discover),
hostName: stringParse('KUBERNETES_SERVICES_LOADBALANCER_HOSTNAME', defaultConfig.kubernetes.services.LoadBalancer.hostName),
applyServices: jsonParse('KUBERNETES_SERVICES_LOADBALANCER_APPLYSERVICES', defaultConfig.kubernetes.services.LoadBalancer.applyServices),
serviceDefinition: jsonParse('KUBERNETES_SERVICES_LOADBALANCER_SERVICE_DEFINITION', defaultConfig.kubernetes.services.LoadBalancer.serviceDefinition),
hostDefinition: jsonParse('KUBERNETES_SERVICES_LOADBALANCER_HOST_DEFINITION', defaultConfig.kubernetes.services.LoadBalancer.hostDefinition),
serviceTemplates: split('KUBERNETES_SERVICES_LOADBALANCER_SERVICE_TEMPLATES', defaultConfig.kubernetes.services.LoadBalancer.serviceTemplates),
hostTemplates: split('KUBERNETES_SERVICES_LOADBALANCER_HOST_TEMPLATES', defaultConfig.kubernetes.services.LoadBalancer.hostTemplates),
},
},
},
};
export default config;