---
# 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 imagebuilder's local 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 rcord-lite chart
rcord_synchronizerImage: "xosproject/rcord-synchronizer: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"
