###
# ============LICENSE_START=======================================================
# ONAP CLAMP
# ================================================================================
# Copyright (C) 2018 AT&T Intellectual Property. All rights
#                             reserved.
# ================================================================================
# 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.
# ============LICENSE_END============================================
# ===================================================================
#
###

FROM  docker.elastic.co/kibana/kibana-oss:6.6.2

MAINTAINER "The Onap Team"
LABEL Description="Kibana image with saved objects loading"
USER root
RUN yum install -y python-requests && yum clean all

# You can share volume on this folder to restore
# a default kibana configuration. Each subfolder will
# be considered as a saved-object folder generated by,
# the backup.py script bundled with the image.
# Structure example :
# saved-objects/
# └── default
#     ├── config
#     │   └── config-6.1.3.json
#     ├── dashboard
#     │   └── dashboard-e6a82230-c190-11e8-a550-27f2e3138fee.json
#     ├── index-pattern
#     │   └── index-pattern-3ecb1c70-c190-11e8-a550-27f2e3138fee.json
#     ├── search
#     │   └── search-abdd0440-c190-11e8-a550-27f2e3138fee.json
#     └── visualization
#         ├── visualization-cb896270-c190-11e8-a550-27f2e3138fee.json
#         └── visualization-d837b120-c190-11e8-a550-27f2e3138fee.json

RUN mkdir /saved-objects/ && chown kibana:kibana /saved-objects/

USER kibana

ADD saved-objects /saved-objects
ADD startup.sh /usr/local/bin/startup.sh
ADD restore.py /usr/local/bin/restore.py
ADD backup.py /usr/local/bin/backup.py
CMD /usr/local/bin/startup.sh
