---
# Copyright 2018-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.

# Set all image tags to "candidate" to use locally built images

# in xos-core chart
xos_coreImage: 'xosproject/xos-core:candidate'
xos_chameleonImage: 'xosproject/chameleon:candidate'
xos_toscaImage: 'xosproject/xos-tosca:candidate'
xos_api_testerImage: 'xosproject/xos-api-tester:candidate'
tosca_loaderImage: 'xosproject/tosca-loader:candidate'

# in xos-gui sub-chart required by xos-core chart
xos-gui:
  xos_guiImage: 'xosproject/xos-gui:candidate'
  xos_wsImage: 'xosproject/xos-ws:candidate'

# in RCORD service chart
addressmanager:
  addressmanager_synchronizerImage: 'xosproject/addressmanager-synchronizer:candidate'
fabric:
  fabric_synchronizerImage: 'xosproject/fabric-synchronizer:candidate'
fabric-crossconnect:
  fabric_crossconnect_synchronizerImage: 'xosproject/fabric-crossconnect-synchronizer:candidate'
onos-service:
  onos_synchronizerImage: 'xosproject/onos-synchronizer:candidate'
volt:
  volt_synchronizerImage: 'xosproject/volt-synchronizer:candidate'
vsg-hw:
  vsg_hw_synchronizerImage: 'xosproject/vsg-hw-synchronizer:candidate'
vrouter:
  vrouter_synchronizerImage: 'xosproject/vrouter-synchronizer:candidate'
rcord:
  rcord_synchronizerImage: 'xosproject/rcord-synchronizer:candidate'

# in BASE-OPENSTACK chart
openstack:
  openstack_synchronizerImage: 'xosproject/openstack-synchronizer:candidate'
vtn-service:
  vtn_synchronizerImage: 'xosproject/vtn-synchronizer:candidate'

# in MCORD
vmme:
  synchronizerImage: "xosproject/vmme-synchronizer:candidate"
vspgwc:
  synchronizerImage: "xosproject/vspgwc-synchronizer:candidate"
vspgwu:
  synchronizerImage: "xosproject/vspgwu-synchronizer:candidate"
vhss:
  synchronizerImage: "xosproject/vhss-synchronizer:candidate"
hssdb:
  synchronizerImage: "xosproject/hssdb-synchronizer:candidate"
internetemulator:
  synchronizerImage: "xosproject/internetemulator-synchronizer:candidate"
sdncontroller:
  synchronizerImage: "xosproject/sdncontroller-synchronizer:candidate"
epc-service:
  synchronizerImage: "xosproject/vepc-synchronizer:candidate"
mcord-subscriber:
  synchronizerImage: "xosproject/mcord-synchronizer:candidate"
progran:
  synchronizerImage: "xosproject/progran-synchronizer:candidate"

# others  
kubernetes:
  kubernetes_synchronizerImage: 'xosproject/kubernetes-synchronizer:candidate'
exampleservice:
  exampleservice_synchronizerImage: 'xosproject/exampleservice-synchronizer:candidate'
simpleexampleservice:
  simpleexampleservice_synchronizerImage: 'xosproject/simpleexampleservice-synchronizer:candidate'

hippieOSS_synchronizerImage: 'xosproject/hippie-oss-synchronizer:candidate'

