#########
#  ============LICENSE_START====================================================
#  org.onap.aaf
#  ===========================================================================
#  Copyright (c) 2017 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====================================================
#
cadi_protocols=TLSv1.1,TLSv1.2

################################
# Locator info
#
# Sample versions for 
#   1) no container
#   2) Docker
#   3) Helm (Kubernetes and Helm)
#   4) OOM (Kubernetes with OOM)
################################
aaf_locator_ns=AAF_NS
aaf_locator_name=%NS.%N
aaf_locator_name.docker=%CNS.%NS.%N
aaf_locator_name.helm=%CNS.%NS.%N
aaf_locator_name.oom=%CNS.%NS.%N
aaf_locator_fqdn.docker=aaf-%N
aaf_locator_fqdn.helm=aaf-%N.%CNS
aaf_locator_fqdn.oom=aaf-%N.%CNS

################################
# AAF URLs 
################################
aaf_locate_url=https://localhost:8095
aaf_url=https://AAF_LOCATE_URL/%CNS.%AAF_NS.service:2.1
aaf_oauth2_introspect_url=https://AAF_LOCATE_URL/%CNS.%AAF_NS.oauth:2.1/introspect
aaf_oauth2_token_url=https://AAF_LOCATE_URL/%CNS.%AAF_NS.oauth:2.1/token
cm_url=https://AAF_LOCATE_URL/%CNS.%AAF_NS.cm:2.1
gui_url=https://AAF_LOCATE_URL/%CNS.%AAF_NS.gui.2.1
fs_url=https://AAF_LOCATE_URL/%CNS.%AAF_NS.fs.2.1

