---
# Copyright 2019-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.
apiVersion: "v1"
name: "voltha"
version: "2.4.8"
description: "A Helm chart for Voltha based on K8S resources in Voltha project"
keywords:
  - "onf"
  - "voltha"
home: "https://www.opennetworking.org/voltha"
icon: "https://guide.opencord.org/logos/cord.svg"
sources:
  - "https://github.com/opencord/voltha-go"
  - "https://github.com/opencord/ofagent-go"
maintainers:
  - name: "Open Networking Foundation"
    email: "info@opennetworking.org"
    url: "https://www.opennetworking.org"

# app version applies to multiple components with potentially different
# container image versions
appVersion: "2.4"
