---

# Copyright 2020-present Open Networking Foundation
#
# 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.
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-onos-configs-loader
data:
  loader.sh: >
    set -euo pipefail

    # a POST to a non ready netcfg return 207 in case of failure, while a GET returns 404,
    # check the apps key is ready to accept data before sending them
    
    until curl --fail -sSL --user {{ .Values.onos.username }}:{{ .Values.onos.password }} -X GET -H 'Accept: application/json' "http://{{ .Release.Name }}-onos-classic-hs:8181/onos/v1/network/configuration/apps";
    do
      echo -e "Waiting for netcfg to be active";
      sleep 5;
    done

    echo -e "Loading netcfg into ONOS\n";
    curl --fail -sSL --user {{ .Values.onos.username }}:{{ .Values.onos.password }} -X POST "http://{{ .Release.Name }}-onos-classic-hs:8181/onos/v1/network/configuration/" -H Content-type:application/json -d @/opt/configs/netcfg.json;

    echo -e "Loading component configs into ONOS\n";
    CFGS=$(ls /opt/configs | grep -v netcfg.json);
    for CFG in ${CFGS};
    do
      echo -e "Check that component $CFG is active";
      until curl --fail -sSL --user {{ .Values.onos.username }}:{{ .Values.onos.password }} -X GET "http://{{ .Release.Name }}-onos-classic-hs:8181/onos/v1/configuration/$CFG";
      do
        echo -e "Waiting for $CFG to be active";
        sleep 5;
      done
      echo -e "Loading $CFG config";
      curl --fail -sSL --user {{ .Values.onos.username }}:{{ .Values.onos.password }} -X POST "http://{{ .Release.Name }}-onos-classic-hs:8181/onos/v1/configuration/$CFG" -H Content-type:application/json -d @/opt/configs/$CFG;
    done
