---
# 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'

# 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 service charts
addressmanager:
  addressmanager_synchronizerImage: 'xosproject/addressmanager-synchronizer:candidate'
fabric:
  fabric_synchronizerImage: 'xosproject/fabric-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'
kubernetes:
  kubernetes_synchronizerImage: 'xosproject/kubernetes-synchronizer:candidate'
rcord:
  rcord_synchronizerImage: 'xosproject/rcord-synchronizer:candidate'
simpleexampleservice:
  simpleexampleservice_synchronizerImage: 'xosproject/simpleexampleservice-synchronizer:candidate'
hippieOSS:
  hippieOSS_synchronizerImage: 'xosproject/hippie-oss-synchronizer:candidate'
openstack:
  openstack_synchronizerImage: 'xosproject/openstack-synchronizer:candidate'

