---
# 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
image:
  tag: 'candidate'

# in xos-core chart and other charts with multiple images
images:
  xos_core:
    tag: 'candidate'
  xos_chameleon:
    tag: 'candidate'
  xos_tosca:
    tag: 'candidate'
  xos_api_tester:
    tag: 'candidate'
  tosca_loader:
    tag: 'candidate'

# in xos-gui sub-chart required by xos-core chart
xos-gui:
  images:
    xos_gui:
      tag: 'candidate'
    xos_ws:
      tag: 'candidate'

# in RCORD service chart
addressmanager:
  image:
    tag: 'candidate'
att-workflow-driver:
  image:
    tag: 'candidate'
fabric:
  image:
    tag: 'candidate'
fabric-crossconnect:
  image:
    tag: 'candidate'
onos-service:
  image:
    tag: 'candidate'
volt:
  image:
    tag: 'candidate'
vsg-hw:
  image:
    tag: 'candidate'
vrouter:
  image:
    tag: 'candidate'
rcord:
  image:
    tag: 'candidate'

# in BASE-OPENSTACK chart
openstack:
  image:
    tag: 'candidate'

vtn-service:
  image:
    tag: 'candidate'

# in MCORD
vmme:
  image:
    tag: 'candidate'
vspgwc:
  image:
    tag: 'candidate'
vspgwu:
  image:
    tag: 'candidate'
vhss:
  image:
    tag: 'candidate'
hssdb:
  image:
    tag: 'candidate'
internetemulator:
  image:
    tag: 'candidate'
sdncontroller:
  image:
    tag: 'candidate'
epc-service:
  image:
    tag: 'candidate'
k8spcservice:
  image:
    tag: 'candidate'
mcord-subscriber:
  image:
    tag: 'candidate'
progran:
  image:
    tag: 'candidate'

# others
kubernetes:
  image:
    tag: 'candidate'
exampleservice:
  image:
    tag: 'candidate'
simpleexampleservice:
  image:
    tag: 'candidate'

