
Change-Id: I06a6e9db737608d97b2a71b6abc4386ce699d8f7 Signed-off-by: az7961 <az7961@att.com>
117 lines
3.2 KiB
Smarty
117 lines
3.2 KiB
Smarty
#!/bin/bash
|
|
{{/*
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/}}
|
|
set -ex
|
|
set -o noglob
|
|
|
|
create_data_view() {
|
|
local index_name=$1
|
|
curl -u "${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD}" \
|
|
--max-time 30 \
|
|
-X POST "${KIBANA_ENDPOINT}/api/data_views/data_view" \
|
|
-H "kbn-xsrf: true" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"data_view\": {
|
|
\"title\": \"${index_name}-*\",
|
|
\"timeFieldName\": \"@timestamp\"
|
|
}
|
|
}"
|
|
}
|
|
|
|
data_view_exists() {
|
|
local index_name=$1
|
|
local response=$(curl -s -u "${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD}" \
|
|
--max-time 30 \
|
|
-X GET "${KIBANA_ENDPOINT}/api/data_views" \
|
|
-H "kbn-xsrf: true" \
|
|
-H "Content-Type: application/json")
|
|
|
|
if echo "$response" | grep -Fq "\"title\":\"${index_name}-*\""; then
|
|
return 0
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
set_default_data_view() {
|
|
local view_id=$1
|
|
curl -u "${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD}" \
|
|
--max-time 30 \
|
|
-X POST "${KIBANA_ENDPOINT}/api/data_views/default" \
|
|
-H "kbn-xsrf: true" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"data_view_id\": \"${view_id}\",
|
|
\"force\": true
|
|
}"
|
|
}
|
|
|
|
find_and_set_python() {
|
|
pythons="python3 python python2"
|
|
for p in ${pythons[@]}; do
|
|
python=$(which ${p})
|
|
if [[ $? -eq 0 ]]; then
|
|
echo found python: ${python}
|
|
break
|
|
fi
|
|
done
|
|
}
|
|
|
|
get_view_id() {
|
|
local index_name=$1
|
|
local response=$(curl -s -u "${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD}" \
|
|
--max-time 30 \
|
|
-X GET "${KIBANA_ENDPOINT}/api/data_views" \
|
|
-H "kbn-xsrf: true" \
|
|
-H "Content-Type: application/json" |
|
|
$python -c "import sys,json; j=json.load(sys.stdin); t=[x['id'] for x in j['data_view'] if x['title'] == '${index_name}-*']; print(t[0] if len(t) else '')"
|
|
)
|
|
echo $response
|
|
}
|
|
|
|
# Create data views
|
|
{{- range $objectType, $indices := .Values.conf.create_kibana_indexes.indexes }}
|
|
{{- range $indices }}
|
|
if ! data_view_exists "{{ . }}"; then
|
|
create_data_view "{{ . }}"
|
|
for t in 30 60 120 180; do
|
|
if data_view_exists "{{ . }}"; then
|
|
echo "Data view '{{ . }}-*' exists"
|
|
break
|
|
fi
|
|
sleep $t
|
|
echo "Retrying creation of data view '{{ . }}-*' ..."
|
|
create_data_view "{{ . }}"
|
|
done
|
|
if ! data_view_exists "{{ . }}"; then
|
|
echo "Giving up"
|
|
return 1
|
|
fi
|
|
else
|
|
echo "Data view '{{ . }}-*' exists"
|
|
fi
|
|
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
# Lookup default view id. The new Kibana view API requires the id
|
|
# instead of simply the name like the previous index API did.
|
|
find_and_set_python
|
|
|
|
default_index="{{ .Values.conf.create_kibana_indexes.default_index }}"
|
|
default_index_id=$(get_view_id $default_index)
|
|
|
|
set_default_data_view "$default_index_id"
|
|
echo "Default data view set to '${default_index}'."
|