# ============LICENSE_START=======================================================
# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
# Copyright (c) 2020-2021 J. F. Lucas.  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 cloudifyplatform/community-cloudify-manager-aio:5.1.2

ENV PLUGIN_REPO {{ ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_plugins_releases }}

# Install openssh-clients to ssh-keygen, used by the sshkeyshare plugin
RUN yum install -y openssh-clients

RUN mkdir scripts
COPY scripts/* scripts/

# Load plugins and set up TLS configuration
  RUN chmod +x scripts/*.sh \
  && scripts/get-plugins.sh ${PLUGIN_REPO} \
  && /scripts/configure-tls.sh

# Create mount point for CM config file
RUN mkdir -p /opt/onap && chown cfyuser:cfyuser /opt/onap

# Install jq (used for cleanup--parsing output of CM API call)
RUN curl -Ss -L -f "https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64"  > /bin/jq \
&& chmod +x /bin/jq

CMD ["/scripts/start-persistent.sh"]
