# Copyright 2021 Canonical Ltd.
#
# 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.
#
# For those usages not covered by the Apache License, Version 2.0 please
# contact: legal@canonical.com
#
# To get in touch with the maintainers, please contact:
# osm-charmers@lists.launchpad.net
##

options:
    advertised-hostname:
        description: Advertised hostname
        type: string
        default: "prometheus"
    advertised-port:
        description: Prometheus Port
        type: int
        default: 9090
    web-subpath:
        description: Subpath for accessing Prometheus
        type: string
        default: /
    default-target:
        description: Default target to be added in Prometheus
        type: string
        default: ""
    prometheus-image:
        type: string
        description: OCI image
        default: rocks.canonical.com:443/prom/prometheus:latest
    alpine-image:
        type: string
        description: OCI image
        default: rocks.canonical.com:443/alpine:latest
