forked from splitio/split-synchronizer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathentrypoint.sh
More file actions
216 lines (174 loc) · 8.74 KB
/
entrypoint.sh
File metadata and controls
216 lines (174 loc) · 8.74 KB
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
#!/bin/bash
# Environment vars:
#
# Common vars:
# - SPLIT_SYNC_API_KEY Split service API-KEY grabbed from webconsole
# - SPLIT_SYNC_SPLITS_REFRESH_RATE Refresh rate of splits fetcher
# - SPLIT_SYNC_SEGMENTS_REFRESH_RATE Refresh rate of segments fetcher
# - SPLIT_SYNC_IMPRESSIONS_REFRESH_RATE Refresh rate of impressions recorder
# - SPLIT_SYNC_EVENTS_REFRESH_RATE Refresh rate of events recorder
# - SPLIT_SYNC_METRICS_REFRESH_RATE Refresh rate of metrics recorder
# - SPLIT_SYNC_HTTP_TIMEOUT Timeout specifies a time limit for requests
# - SPLIT_SYNC_LOG_DEBUG Enable debug mode: Set as 'on'
# - SPLIT_SYNC_LOG_VERBOSE Enable verbose mode: Set as 'on'
# - SPLIT_SYNC_LOG_STDOUT Enable standard output: Set as 'on'
# - SPLIT_SYNC_LOG_FILE Set the log file
# - SPLIT_SYNC_LOG_FILE_MAX_SIZE Max file log size in bytes
# - SPLIT_SYNC_LOG_BACKUP_COUNT Number of last log files to keep in filesystem
# - SPLIT_SYNC_LOG_SLACK_CHANNEL Set the Slack channel or user
# - SPLIT_SYNC_LOG_SLACK_WEBHOOK Set the Slack webhook url
#
# - SPLIT_SYNC_ADVANCED_PARAMETERS Set custom parameters that are not configured via provided Env vars.
# Sample:
# SPLIT_SYNC_ADVANCED_PARAMETERS="-redis-read-timeout=20 -redis-max-retries=10"
# - SPLIT_SYNC_IMPRESSION_LISTENER_ENDPOINT Custom user HTTP Endpoint where impressions will be posted.
#
# Proxy vars:
# - SPLIT_SYNC_PROXY Enables the proxy mode: Set as 'on'
# - SPLIT_SYNC_PROXY_SDK_APIKEYS List of custom API-KEYs for your SDKs (Comma separated string)
# - SPLIT_SYNC_PROXY_ADMIN_USER HTTP basic auth username for admin endpoints
# - SPLIT_SYNC_PROXY_ADMIN_PASS HTTP basic auth password for admin endpoints
# - SPLIT_SYNC_PROXY_DASHBOARD_TITLE Title to be shown in admin dashboard
# - SPLIT_SYNC_PROXY_IMPRESSIONS_MAX_SIZE Max size, in bytes, to send impressions in proxy mode
# - SPLIT_SYNC_PROXY_EVENTS_MAX_SIZE Max size, in bytes, to send events in proxy mode
#
# Producer vars:
# - SPLIT_SYNC_REDIS_HOST Redis server hostname
# - SPLIT_SYNC_REDIS_PORT Redis Server port
# - SPLIT_SYNC_REDIS_DB Redis DB number
# - SPLIT_SYNC_REDIS_PASS Redis password
# - SPLIT_SYNC_REDIS_PREFIX Redis key prefix
# - SPLIT_SYNC_IMPRESSIONS_PER_POST Number of impressions to send in a POST request
# - SPLIT_SYNC_IMPRESSIONS_THREADS Number of impressions recorder threads
# - SPLIT_SYNC_ADMIN_USER HTTP basic auth username for admin endpoints
# - SPLIT_SYNC_ADMIN_PASS HTTP basic auth password for admin endpoints
# - SPLIT_SYNC_DASHBOARD_TITLE Title to be shown in admin dashboard
# - SPLIT_SYNC_EVENTS_PER_POST Number of events to send in a POST request
# - SPLIT_SYNC_EVENTS_THREADS Number of events recorder threads
# - SPLIT_SYNC_REDIS_SENTINEL_REPLICATION Flag to signal that redis sentinel replication will be used
# - SPLIT_SYNC_REDIS_SENTINEL_MASTER Name of the master node of sentinel cluster
# - SPLIT_SYNC_REDIS_SENTINEL_ADDRESSES Comma-separated list of <HOST:PORT> addresses of redis sentinels
# COMMON PARAMETERS
PARAMETERS="-api-key=${SPLIT_SYNC_API_KEY}"
if [ ! -z ${SPLIT_SYNC_SPLITS_REFRESH_RATE+x} ]; then
PARAMETERS="${PARAMETERS} -split-refresh-rate=${SPLIT_SYNC_SPLITS_REFRESH_RATE}"
fi
if [ ! -z ${SPLIT_SYNC_SEGMENTS_REFRESH_RATE+x} ]; then
PARAMETERS="${PARAMETERS} -segment-refresh-rate=${SPLIT_SYNC_SEGMENTS_REFRESH_RATE}"
fi
if [ ! -z ${SPLIT_SYNC_IMPRESSIONS_REFRESH_RATE+x} ]; then
PARAMETERS="${PARAMETERS} -impressions-post-rate=${SPLIT_SYNC_IMPRESSIONS_REFRESH_RATE}"
fi
if [ ! -z ${SPLIT_SYNC_EVENTS_REFRESH_RATE+x} ]; then
PARAMETERS="${PARAMETERS} -events-push-rate=${SPLIT_SYNC_EVENTS_REFRESH_RATE}"
fi
if [ ! -z ${SPLIT_SYNC_METRICS_REFRESH_RATE+x} ]; then
PARAMETERS="${PARAMETERS} -metrics-post-rate=${SPLIT_SYNC_METRICS_REFRESH_RATE}"
fi
if [ ! -z ${SPLIT_SYNC_HTTP_TIMEOUT+x} ]; then
PARAMETERS="${PARAMETERS} -http-timeout=${SPLIT_SYNC_HTTP_TIMEOUT}"
fi
if [ "$SPLIT_SYNC_LOG_DEBUG" = "on" ]; then
PARAMETERS="${PARAMETERS} -log-debug"
fi
if [ "$SPLIT_SYNC_LOG_VERBOSE" = "on" ]; then
PARAMETERS="${PARAMETERS} -log-verbose"
fi
if [ "$SPLIT_SYNC_LOG_STDOUT" = "on" ]; then
PARAMETERS="${PARAMETERS} -log-stdout"
fi
if [ ! -z ${SPLIT_SYNC_LOG_FILE+x} ]; then
PARAMETERS="${PARAMETERS} -log-file=${SPLIT_SYNC_LOG_FILE}"
fi
if [ ! -z ${SPLIT_SYNC_LOG_FILE_MAX_SIZE+x} ]; then
PARAMETERS="${PARAMETERS} -log-file-max-size=${SPLIT_SYNC_LOG_FILE_MAX_SIZE}"
fi
if [ ! -z ${SPLIT_SYNC_LOG_BACKUP_COUNT+x} ]; then
PARAMETERS="${PARAMETERS} -log-file-backup-count=${SPLIT_SYNC_LOG_BACKUP_COUNT}"
fi
if [ ! -z ${SPLIT_SYNC_LOG_SLACK_CHANNEL+x} ]; then
PARAMETERS="${PARAMETERS} -log-slack-channel=${SPLIT_SYNC_LOG_SLACK_CHANNEL}"
fi
if [ ! -z ${SPLIT_SYNC_LOG_SLACK_WEBHOOK+x} ]; then
PARAMETERS="${PARAMETERS} -log-slack-webhook-url=${SPLIT_SYNC_LOG_SLACK_WEBHOOK}"
fi
if [ ! -z ${SPLIT_SYNC_IMPRESSION_LISTENER_ENDPOINT+x} ]; then
PARAMETERS="${PARAMETERS} -impression-listener-endpoint=${SPLIT_SYNC_IMPRESSION_LISTENER_ENDPOINT}"
fi
# PROXY MODE ON
if [ "$SPLIT_SYNC_PROXY" = "on" ];
then
echo "Running in PROXY mode"
PARAMETERS="${PARAMETERS} -proxy"
if [ ! -z ${SPLIT_SYNC_PROXY_SDK_APIKEYS+x} ]; then
PARAMETERS="${PARAMETERS} -proxy-apikeys=${SPLIT_SYNC_PROXY_SDK_APIKEYS}"
fi
if [ ! -z ${SPLIT_SYNC_PROXY_ADMIN_USER+x} ]; then
PARAMETERS="${PARAMETERS} -proxy-admin-username=${SPLIT_SYNC_PROXY_ADMIN_USER}"
fi
if [ ! -z ${SPLIT_SYNC_PROXY_ADMIN_PASS+x} ]; then
PARAMETERS="${PARAMETERS} -proxy-admin-password=${SPLIT_SYNC_PROXY_ADMIN_PASS}"
fi
if [ ! -z ${SPLIT_SYNC_PROXY_DASHBOARD_TITLE+x} ]; then
PARAMETERS="${PARAMETERS} -proxy-dashboard-title=${SPLIT_SYNC_PROXY_DASHBOARD_TITLE}"
fi
if [ ! -z ${SPLIT_SYNC_PROXY_IMPRESSIONS_MAX_SIZE+x} ]; then
PARAMETERS="${PARAMETERS} -proxy-impressions-max-size=${SPLIT_SYNC_PROXY_IMPRESSIONS_MAX_SIZE}"
fi
if [ ! -z ${SPLIT_SYNC_PROXY_EVENTS_MAX_SIZE+x} ]; then
PARAMETERS="${PARAMETERS} -proxy-events-max-size=${SPLIT_SYNC_PROXY_EVENTS_MAX_SIZE}"
fi
#PRODUCER MODE ON
else
echo "Running in PRODUCER mode"
if [ ! -z ${SPLIT_SYNC_REDIS_HOST+x} ]; then
PARAMETERS="${PARAMETERS} -redis-host=${SPLIT_SYNC_REDIS_HOST}"
fi
if [ ! -z ${SPLIT_SYNC_REDIS_PORT+x} ]; then
PARAMETERS="${PARAMETERS} -redis-port=${SPLIT_SYNC_REDIS_PORT}"
fi
if [ ! -z ${SPLIT_SYNC_REDIS_DB+x} ]; then
PARAMETERS="${PARAMETERS} -redis-db=${SPLIT_SYNC_REDIS_DB}"
fi
if [ ! -z ${SPLIT_SYNC_REDIS_PASS+x} ]; then
PARAMETERS="${PARAMETERS} -redis-pass=${SPLIT_SYNC_REDIS_PASS}"
fi
if [ ! -z ${SPLIT_SYNC_REDIS_PREFIX+x} ]; then
PARAMETERS="${PARAMETERS} -redis-prefix=${SPLIT_SYNC_REDIS_PREFIX}"
fi
# redis sentinel config
if [ "$SPLIT_SYNC_REDIS_SENTINEL_REPLICATION" = "on" ]; then
PARAMETERS="${PARAMETERS} -redis-sentinel-replication"
if [ ! -z ${SPLIT_SYNC_REDIS_SENTINEL_MASTER+x} ]; then
PARAMETERS="${PARAMETERS} -redis-sentinel-master=${SPLIT_SYNC_REDIS_SENTINEL_MASTER}"
fi
if [ ! -z ${SPLIT_SYNC_REDIS_SENTINEL_ADDRESSES+x} ]; then
PARAMETERS="${PARAMETERS} -redis-sentinel-addresses=${SPLIT_SYNC_REDIS_SENTINEL_ADDRESSES}"
fi
fi
if [ ! -z ${SPLIT_SYNC_IMPRESSIONS_PER_POST+x} ]; then
PARAMETERS="${PARAMETERS} -impressions-per-post=${SPLIT_SYNC_IMPRESSIONS_PER_POST}"
fi
if [ ! -z ${SPLIT_SYNC_IMPRESSIONS_THREADS+x} ]; then
PARAMETERS="${PARAMETERS} -impressions-recorder-threads=${SPLIT_SYNC_IMPRESSIONS_THREADS}"
fi
if [ ! -z ${SPLIT_SYNC_ADMIN_USER+x} ]; then
PARAMETERS="${PARAMETERS} -sync-admin-username=${SPLIT_SYNC_ADMIN_USER}"
fi
if [ ! -z ${SPLIT_SYNC_ADMIN_PASS+x} ]; then
PARAMETERS="${PARAMETERS} -sync-admin-password=${SPLIT_SYNC_ADMIN_PASS}"
fi
if [ ! -z ${SPLIT_SYNC_DASHBOARD_TITLE+x} ]; then
PARAMETERS="${PARAMETERS} -sync-dashboard-title=${SPLIT_SYNC_DASHBOARD_TITLE}"
fi
if [ ! -z ${SPLIT_SYNC_EVENTS_PER_POST+x} ]; then
PARAMETERS="${PARAMETERS} -events-consumer-read-size=${SPLIT_SYNC_EVENTS_PER_POST}"
fi
if [ ! -z ${SPLIT_SYNC_EVENTS_THREADS+x} ]; then
PARAMETERS="${PARAMETERS} -events-consumer-threads=${SPLIT_SYNC_EVENTS_THREADS}"
fi
fi
if [ ! -z ${SPLIT_SYNC_ADVANCED_PARAMETERS+x} ]; then
PARAMETERS="${PARAMETERS} ${SPLIT_SYNC_ADVANCED_PARAMETERS}"
fi
exec split-sync ${PARAMETERS}