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

# Default values for horizon.
# This is a YAML-formatted file.
# Declare name/value pairs to be passed into your templates.
# name: value

---
images:
  tags:
    db_init: docker.io/openstackhelm/heat:stein-ubuntu_bionic
    horizon_db_sync: docker.io/openstackhelm/horizon:stein-ubuntu_bionic
    db_drop: docker.io/openstackhelm/heat:stein-ubuntu_bionic
    horizon: docker.io/openstackhelm/horizon:stein-ubuntu_bionic
    test: docker.io/openstackhelm/osh-selenium:latest-ubuntu_bionic
    dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0
    image_repo_sync: docker.io/docker:17.07.0
  pull_policy: "IfNotPresent"
  local_registry:
    active: false
    exclude:
      - dep_check
      - image_repo_sync

release_group: null

labels:
  dashboard:
    node_selector_key: openstack-control-plane
    node_selector_value: enabled
  job:
    node_selector_key: openstack-control-plane
    node_selector_value: enabled
  test:
    node_selector_key: openstack-control-plane
    node_selector_value: enabled

network:
  dashboard:
    ingress:
      public: true
      classes:
        namespace: "nginx"
        cluster: "nginx-cluster"
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /
  external_policy_local: false
  node_port:
    enabled: false
    port: 31000

conf:
  software:
    apache2:
      binary: apache2
      start_parameters: -DFOREGROUND
      site_dir: /etc/apache2/sites-available
      conf_dir: /etc/apache2/conf-available
      mods_dir: /etc/apache2/mods-available
      a2enmod:
        - headers
        - rewrite
      a2dismod:
        - status
  horizon:
    branding:
      logo:
      logo_splash:
      favicon:
    apache: |
      <IfVersion < 2.4>
      Listen 0.0.0.0:{{ tuple "dashboard" "internal" "web" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
      </IfVersion>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
      LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy

      SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
      CustomLog /dev/stdout combined env=!forwarded
      CustomLog /dev/stdout proxy env=forwarded

      <VirtualHost *:{{ tuple "dashboard" "internal" "web" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}>
          WSGIScriptReloading On
          WSGIDaemonProcess horizon-http processes=5 threads=1 user=horizon group=horizon display-name=%{GROUP} python-path=/var/lib/kolla/venv/lib/python2.7/site-packages
          WSGIProcessGroup horizon-http
          WSGIScriptAlias / /var/www/cgi-bin/horizon/django.wsgi
          WSGIPassAuthorization On
          RewriteEngine on
          RewriteCond %{REQUEST_METHOD} !^(POST|PUT|GET|DELETE|PATCH)
          RewriteRule .* - [F]

          <Location "/">
              Require all granted
          </Location>

          Alias /static /var/www/html/horizon
          <Location "/static">
              SetHandler static
          </Location>

          <IfVersion >= 2.4>
            ErrorLogFormat "%{cu}t %M"
          </IfVersion>
          ErrorLog /dev/stdout
          TransferLog /dev/stdout

          SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
          CustomLog /dev/stdout combined env=!forwarded
          CustomLog /dev/stdout proxy env=forwarded
      </Virtualhost>
    security: |
      #
      # Disable access to the entire file system except for the directories that
      # are explicitly allowed later.
      #
      # This currently breaks the configurations that come with some web application
      # Debian packages.
      #
      #<Directory />
      #   AllowOverride None
      #   Require all denied
      #</Directory>

      # Changing the following options will not really affect the security of the
      # server, but might make attacks slightly more difficult in some cases.

      #
      # ServerTokens
      # This directive configures what you return as the Server HTTP response
      # Header. The default is 'Full' which sends information about the OS-Type
      # and compiled in modules.
      # Set to one of:  Full | OS | Minimal | Minor | Major | Prod
      # where Full conveys the most information, and Prod the least.
      ServerTokens Prod

      #
      # Optionally add a line containing the server version and virtual host
      # name to server-generated pages (internal error documents, FTP directory
      # listings, mod_status and mod_info output etc., but not CGI generated
      # documents or custom error documents).
      # Set to "EMail" to also include a mailto: link to the ServerAdmin.
      # Set to one of:  On | Off | EMail
      ServerSignature Off

      #
      # Allow TRACE method
      #
      # Set to "extended" to also reflect the request body (only for testing and
      # diagnostic purposes).
      #
      # Set to one of:  On | Off | extended
      TraceEnable Off

      #
      # Forbid access to version control directories
      #
      # If you use version control systems in your document root, you should
      # probably deny access to their directories. For example, for subversion:
      #
      #<DirectoryMatch "/\.svn">
      #   Require all denied
      #</DirectoryMatch>

      #Security-Settings
      # Setting this header will prevent MSIE from interpreting files as something
      # else than declared by the content type in the HTTP headers.
      # Requires mod_headers to be enabled.
      #
      Header set X-Content-Type-Options: "nosniff"
      Header set X-Permitted-Cross-Domain-Policies: "none"
      # Setting this header will prevent other sites from embedding pages from this
      # site as frames. This defends against clickjacking attacks.
      # Requires mod_headers to be enabled.
      #
    local_settings_d: {}
      ## For example, _50_monasca_ui_settings.py
      # _50_monasca_ui_settings: |
      #   from django.conf import settings
      #   # Grafana button titles/file names (global across all projects):
      #   GRAFANA_LINKS = []
      #   DASHBOARDS = getattr(settings, 'GRAFANA_LINKS', GRAFANA_LINKS)

    local_settings:
      config:
        # Use "True" and "False" as Titlecase strings with quotes, boolean
        # values will not work
        horizon_secret_key: 9aee62c0-5253-4a86-b189-e0fb71fa503c
        debug: "False"
        use_ssl: "False"
        endpoint_type: "internalURL"
        keystone_multidomain_support: "True"
        keystone_default_domain: Default
        disable_password_reveal: "True"
        show_openrc_file: "True"
        csrf_cookie_secure: "False"
        csrf_cookie_httponly: "False"
        enforce_password_check: "True"
        # Set enable_pwd_validator to true to enforce password validator settings.
        enable_pwd_validator: false
        pwd_validator_regex: '(?=.*[a-zA-Z])(?=.*\d).{8,}|(?=.*\d)(?=.*\W).{8,}|(?=.*\W)(?=.*[a-zA-Z]).{8,}'
        pwd_validator_help_text: '_("Your password must be at least eight (8) characters in length and must include characters from at least two (2) of these groupings: alpha, numeric, and special characters.")'
        session_cookie_secure: "False"
        session_cookie_httponly: "False"
        secure_proxy_ssl_header: false
        password_autocomplete: "False"
        disallow_iframe_embed: "False"
        allowed_hosts:
          - '*'
        horizon_images_upload_mode: 'legacy'
        openstack_cinder_features:
          enable_backup: "True"
        openstack_neutron_network:
          enable_router: "True"
          enable_quotas: "True"
          enable_ipv6: "True"
          enable_distributed_router: "False"
          enable_ha_router: "False"
          enable_lb: "True"
          enable_firewall: "True"
          enable_vpn: "True"
          enable_fip_topology_check: "True"
        openstack_enable_password_retrieve: "False"
        auth:
          sso:
            enabled: False
            initial_choice: "credentials"
          idp_mapping:
            - name: "acme_oidc"
              label: "Acme Corporation - OpenID Connect"
              idp: "myidp1"
              protocol: "oidc"
            - name: "acme_saml2"
              label: "Acme Corporation - SAML2"
              idp: "myidp2"
              protocol: "saml2"
        log_level: "DEBUG"
        # Pass any settings to the end of local_settings.py
        raw: {}
        openstack_api_versions:
          container_infra: "1.10"
      template: |
        import os

        from django.utils.translation import ugettext_lazy as _

        from openstack_dashboard import exceptions

        DEBUG = {{ .Values.conf.horizon.local_settings.config.debug }}
        TEMPLATE_DEBUG = DEBUG

        COMPRESS_OFFLINE = True
        COMPRESS_CSS_HASHING_METHOD = "hash"

        # WEBROOT is the location relative to Webserver root
        # should end with a slash.
        WEBROOT = '/'
        # LOGIN_URL = WEBROOT + 'auth/login/'
        # LOGOUT_URL = WEBROOT + 'auth/logout/'
        #
        # LOGIN_REDIRECT_URL can be used as an alternative for
        # HORIZON_CONFIG.user_home, if user_home is not set.
        # Do not set it to '/home/', as this will cause circular redirect loop
        # LOGIN_REDIRECT_URL = WEBROOT

        # Required for Django 1.5.
        # If horizon is running in production (DEBUG is False), set this
        # with the list of host/domain names that the application can serve.
        # For more information see:
        # https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts
        ALLOWED_HOSTS = [{{ include "helm-toolkit.utils.joinListWithCommaAndSingleQuotes" .Values.conf.horizon.local_settings.config.allowed_hosts }},'%s' % (os.environ.get("MY_POD_IP"))]

        # Set SSL proxy settings:
        # For Django 1.4+ pass this header from the proxy after terminating the SSL,
        # and don't forget to strip it from the client's request.
        # For more information see:
        # https://docs.djangoproject.com/en/1.4/ref/settings/#secure-proxy-ssl-header
        #SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')
        # https://docs.djangoproject.com/en/1.5/ref/settings/#secure-proxy-ssl-header
        {{- if .Values.conf.horizon.local_settings.config.secure_proxy_ssl_header }}
        SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
        {{- end }}

        # If Horizon is being served through SSL, then uncomment the following two
        # settings to better secure the cookies from security exploits
        USE_SSL = {{ .Values.conf.horizon.local_settings.config.use_ssl }}
        CSRF_COOKIE_SECURE = {{ .Values.conf.horizon.local_settings.config.csrf_cookie_secure }}
        CSRF_COOKIE_HTTPONLY = {{ .Values.conf.horizon.local_settings.config.csrf_cookie_httponly }}
        SESSION_COOKIE_SECURE = {{ .Values.conf.horizon.local_settings.config.session_cookie_secure }}

        SESSION_COOKIE_HTTPONLY = {{ .Values.conf.horizon.local_settings.config.session_cookie_httponly }}

        # Overrides for OpenStack API versions. Use this setting to force the
        # OpenStack dashboard to use a specific API version for a given service API.
        # Versions specified here should be integers or floats, not strings.
        # NOTE: The version should be formatted as it appears in the URL for the
        # service API. For example, The identity service APIs have inconsistent
        # use of the decimal point, so valid options would be 2.0 or 3.
        #OPENSTACK_API_VERSIONS = {
        #    "data-processing": 1.1,
        #    "identity": 3,
        #    "volume": 2,
        #}

        OPENSTACK_API_VERSIONS = {
            "identity": 3,
            "container-infra": "{{ .Values.conf.horizon.local_settings.config.openstack_api_versions.container_infra }}"
        }

        # Set this to True if running on multi-domain model. When this is enabled, it
        # will require user to enter the Domain name in addition to username for login.
        OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = {{ .Values.conf.horizon.local_settings.config.keystone_multidomain_support }}

        # Overrides the default domain used when running on single-domain model
        # with Keystone V3. All entities will be created in the default domain.
        OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = '{{ .Values.conf.horizon.local_settings.config.keystone_default_domain }}'

        # Set Console type:
        # valid options are "AUTO"(default), "VNC", "SPICE", "RDP", "SERIAL" or None
        # Set to None explicitly if you want to deactivate the console.
        #CONSOLE_TYPE = "AUTO"

        # Default OpenStack Dashboard configuration.
        HORIZON_CONFIG = {
            'user_home': 'openstack_dashboard.views.get_user_home',
            'ajax_queue_limit': 10,
            'auto_fade_alerts': {
                'delay': 3000,
                'fade_duration': 1500,
                'types': ['alert-success', 'alert-info']
            },
            'help_url': "http://docs.openstack.org",
            'exceptions': {'recoverable': exceptions.RECOVERABLE,
                           'not_found': exceptions.NOT_FOUND,
                           'unauthorized': exceptions.UNAUTHORIZED},
            'modal_backdrop': 'static',
            'angular_modules': [],
            'js_files': [],
            'js_spec_files': [],
        }

        {{- if .Values.conf.horizon.local_settings.config.enable_pwd_validator }}
        # Specify a regular expression to validate user passwords.
        HORIZON_CONFIG["password_validator"] = {
            "regex": '{{ .Values.conf.horizon.local_settings.config.pwd_validator_regex }}',
            "help_text": {{ .Values.conf.horizon.local_settings.config.pwd_validator_help_text }},
        }
        {{- end }}

        # Disable simplified floating IP address management for deployments with
        # multiple floating IP pools or complex network requirements.
        #HORIZON_CONFIG["simple_ip_management"] = False

        # Turn off browser autocompletion for forms including the login form and
        # the database creation workflow if so desired.
        HORIZON_CONFIG["password_autocomplete"] = '{{ .Values.conf.horizon.local_settings.config.password_autocomplete }}'

        # Setting this to True will disable the reveal button for password fields,
        # including on the login form.
        HORIZON_CONFIG["disable_password_reveal"] = {{ .Values.conf.horizon.local_settings.config.disable_password_reveal }}

        LOCAL_PATH = '/tmp'

        # Set custom secret key:
        # You can either set it to a specific value or you can let horizon generate a
        # default secret key that is unique on this machine, e.i. regardless of the
        # amount of Python WSGI workers (if used behind Apache+mod_wsgi): However,
        # there may be situations where you would want to set this explicitly, e.g.
        # when multiple dashboard instances are distributed on different machines
        # (usually behind a load-balancer). Either you have to make sure that a session
        # gets all requests routed to the same dashboard instance or you set the same
        # SECRET_KEY for all of them.
        SECRET_KEY='{{ .Values.conf.horizon.local_settings.config.horizon_secret_key }}'

        CACHES = {
            'default': {
                'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
                'LOCATION': '{{ tuple "oslo_cache" "internal" "memcache" . | include "helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup" }}',
            }
        }
        DATABASES = {
            'default': {
                # Database configuration here
                'ENGINE': 'django.db.backends.mysql',
                'NAME': '{{ .Values.endpoints.oslo_db.path | base }}',
                'USER': '{{ .Values.endpoints.oslo_db.auth.horizon.username }}',
                'PASSWORD': '{{ .Values.endpoints.oslo_db.auth.horizon.password }}',
                'HOST': '{{ tuple "oslo_db" "internal" . | include "helm-toolkit.endpoints.hostname_fqdn_endpoint_lookup" }}',
                'default-character-set': 'utf8',
                {{- if .Values.manifests.certificates }}
                'OPTIONS':{
                    'ssl': {
                        'ca': '/etc/mysql/certs/ca.crt',
                        'cert': '/etc/mysql/certs/tls.crt',
                        'key': '/etc/mysql/certs/tls.key'
                    }
                },
                {{- end }}
                'PORT': '{{ tuple "oslo_db" "internal" "mysql" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}'
            }
        }
        SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'

        # Send email to the console by default
        EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
        # Or send them to /dev/null
        #EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend'

        # Configure these for your outgoing email host
        #EMAIL_HOST = 'smtp.my-company.com'
        #EMAIL_PORT = 25\\
        #EMAIL_HOST_USER = 'djangomail'
        #EMAIL_HOST_PASSWORD = 'top-secret!'

        # For multiple regions uncomment this configuration, and add (endpoint, title).
        #AVAILABLE_REGIONS = [
        #    ('http://cluster1.example.com:5000/v2.0', 'cluster1'),
        #    ('http://cluster2.example.com:5000/v2.0', 'cluster2'),
        #]

        OPENSTACK_KEYSTONE_URL = "{{ tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" }}"
        OPENSTACK_KEYSTONE_DEFAULT_ROLE = "member"

        # This setting specifies the name of the header with remote IP address. If not present,
        # then REMOTE_ADDR header is used. The commom value for this setting is HTTP_X_REAL_IP
        # or HTTP_X_FORWARDED_FORx
        SECURE_PROXY_ADDR_HEADER = 'HTTP_X_FORWARDED_FOR'

        {{- if .Values.conf.horizon.local_settings.config.auth.sso.enabled }}
        # Enables keystone web single-sign-on if set to True.
        WEBSSO_ENABLED = True

        # Determines which authentication choice to show as default.
        WEBSSO_INITIAL_CHOICE = "{{ .Values.conf.horizon.local_settings.config.auth.sso.initial_choice }}"

        # The list of authentication mechanisms
        # which include keystone federation protocols.
        # Current supported protocol IDs are 'saml2' and 'oidc'
        # which represent SAML 2.0, OpenID Connect respectively.
        # Do not remove the mandatory credentials mechanism.
        WEBSSO_CHOICES = (
            ("credentials", _("Keystone Credentials")),
          {{- range $i, $sso := .Values.conf.horizon.local_settings.config.auth.idp_mapping }}
            ({{ $sso.name | quote }}, {{ $sso.label | quote }}),
          {{- end }}
        )

        WEBSSO_IDP_MAPPING = {
          {{- range $i, $sso := .Values.conf.horizon.local_settings.config.auth.idp_mapping }}
            {{ $sso.name | quote}}: ({{ $sso.idp | quote }}, {{ $sso.protocol | quote }}),
          {{- end }}
        }

        {{- end }}

        # Disable SSL certificate checks (useful for self-signed certificates):
        #OPENSTACK_SSL_NO_VERIFY = True

        {{- if .Values.manifests.certificates }}
        # The CA certificate to use to verify SSL connections
        OPENSTACK_SSL_CACERT = '/etc/openstack-dashboard/certs/ca.crt'
        {{- end }}

        # The OPENSTACK_KEYSTONE_BACKEND settings can be used to identify the
        # capabilities of the auth backend for Keystone.
        # If Keystone has been configured to use LDAP as the auth backend then set
        # can_edit_user to False and name to 'ldap'.
        #
        # TODO(tres): Remove these once Keystone has an API to identify auth backend.
        OPENSTACK_KEYSTONE_BACKEND = {
            'name': 'native',
            'can_edit_user': True,
            'can_edit_group': True,
            'can_edit_project': True,
            'can_edit_domain': True,
            'can_edit_role': True,
        }

        # Setting this to True, will add a new "Retrieve Password" action on instance,
        # allowing Admin session password retrieval/decryption.
        OPENSTACK_ENABLE_PASSWORD_RETRIEVE = {{ .Values.conf.horizon.local_settings.config.openstack_enable_password_retrieve }}
        # Controls whether the keystone openrc file is accessible from the user menu and the api access panel.
        SHOW_OPENRC_FILE = {{ .Values.conf.horizon.local_settings.config.show_openrc_file }}
        # The Launch Instance user experience has been significantly enhanced.
        # You can choose whether to enable the new launch instance experience,
        # the legacy experience, or both. The legacy experience will be removed
        # in a future release, but is available as a temporary backup setting to ensure
        # compatibility with existing deployments. Further development will not be
        # done on the legacy experience. Please report any problems with the new
        # experience via the StoryBoard tracking system.
        #
        # Toggle LAUNCH_INSTANCE_LEGACY_ENABLED and LAUNCH_INSTANCE_NG_ENABLED to
        # determine the experience to enable.  Set them both to true to enable
        # both.
        #LAUNCH_INSTANCE_LEGACY_ENABLED = True
        #LAUNCH_INSTANCE_NG_ENABLED = False

        # The Xen Hypervisor has the ability to set the mount point for volumes
        # attached to instances (other Hypervisors currently do not). Setting
        # can_set_mount_point to True will add the option to set the mount point
        # from the UI.
        OPENSTACK_HYPERVISOR_FEATURES = {
            'can_set_mount_point': False,
            'can_set_password': False,
        }

        # The OPENSTACK_CINDER_FEATURES settings can be used to enable optional
        # services provided by cinder that is not exposed by its extension API.
        OPENSTACK_CINDER_FEATURES = {
            'enable_backup': {{ .Values.conf.horizon.local_settings.config.openstack_cinder_features.enable_backup }},
        }

        # The OPENSTACK_NEUTRON_NETWORK settings can be used to enable optional
        # services provided by neutron. Options currently available are load
        # balancer service, security groups, quotas, VPN service.
        OPENSTACK_NEUTRON_NETWORK = {
            'enable_router': {{ .Values.conf.horizon.local_settings.config.openstack_neutron_network.enable_router }},
            'enable_quotas': {{ .Values.conf.horizon.local_settings.config.openstack_neutron_network.enable_quotas }},
            'enable_ipv6': {{ .Values.conf.horizon.local_settings.config.openstack_neutron_network.enable_ipv6 }},
            'enable_distributed_router': {{ .Values.conf.horizon.local_settings.config.openstack_neutron_network.enable_distributed_router }},
            'enable_ha_router': {{ .Values.conf.horizon.local_settings.config.openstack_neutron_network.enable_ha_router }},
            'enable_lb': {{ .Values.conf.horizon.local_settings.config.openstack_neutron_network.enable_lb }},
            'enable_firewall': {{ .Values.conf.horizon.local_settings.config.openstack_neutron_network.enable_firewall }},
            'enable_vpn': {{ .Values.conf.horizon.local_settings.config.openstack_neutron_network.enable_vpn }},
            'enable_fip_topology_check': {{ .Values.conf.horizon.local_settings.config.openstack_neutron_network.enable_fip_topology_check }},

            # The profile_support option is used to detect if an external router can be
            # configured via the dashboard. When using specific plugins the
            # profile_support can be turned on if needed.
            'profile_support': None,
            #'profile_support': 'cisco',

            # Set which provider network types are supported. Only the network types
            # in this list will be available to choose from when creating a network.
            # Network types include local, flat, vlan, gre, and vxlan.
            'supported_provider_types': ['*'],

            # Set which VNIC types are supported for port binding. Only the VNIC
            # types in this list will be available to choose from when creating a
            # port.
            # VNIC types include 'normal', 'macvtap' and 'direct'.
            'supported_vnic_types': ['*']
        }

        # The OPENSTACK_IMAGE_BACKEND settings can be used to customize features
        # in the OpenStack Dashboard related to the Image service, such as the list
        # of supported image formats.
        #OPENSTACK_IMAGE_BACKEND = {
        #    'image_formats': [
        #        ('', _('Select format')),
        #        ('aki', _('AKI - Amazon Kernel Image')),
        #        ('ami', _('AMI - Amazon Machine Image')),
        #        ('ari', _('ARI - Amazon Ramdisk Image')),
        #        ('docker', _('Docker')),
        #        ('iso', _('ISO - Optical Disk Image')),
        #        ('ova', _('OVA - Open Virtual Appliance')),
        #        ('qcow2', _('QCOW2 - QEMU Emulator')),
        #        ('raw', _('Raw')),
        #        ('vdi', _('VDI - Virtual Disk Image')),
        #        ('vhd', ('VHD - Virtual Hard Disk')),
        #        ('vmdk', _('VMDK - Virtual Machine Disk')),
        #    ]
        #}

        # The IMAGE_CUSTOM_PROPERTY_TITLES settings is used to customize the titles for
        # image custom property attributes that appear on image detail pages.
        IMAGE_CUSTOM_PROPERTY_TITLES = {
            "architecture": _("Architecture"),
            "kernel_id": _("Kernel ID"),
            "ramdisk_id": _("Ramdisk ID"),
            "image_state": _("Euca2ools state"),
            "project_id": _("Project ID"),
            "image_type": _("Image Type"),
        }

        # The IMAGE_RESERVED_CUSTOM_PROPERTIES setting is used to specify which image
        # custom properties should not be displayed in the Image Custom Properties
        # table.
        IMAGE_RESERVED_CUSTOM_PROPERTIES = []

        # Set to 'legacy' or 'direct' to allow users to upload images to glance via
        # Horizon server. When enabled, a file form field will appear on the create
        # image form. If set to 'off', there will be no file form field on the create
        # image form. See documentation for deployment considerations.
        HORIZON_IMAGES_UPLOAD_MODE = '{{ .Values.conf.horizon.local_settings.config.horizon_images_upload_mode }}'

        # OPENSTACK_ENDPOINT_TYPE specifies the endpoint type to use for the endpoints
        # in the Keystone service catalog. Use this setting when Horizon is running
        # external to the OpenStack environment. The default is 'publicURL'.
        OPENSTACK_ENDPOINT_TYPE = "{{ .Values.conf.horizon.local_settings.config.endpoint_type }}"

        # SECONDARY_ENDPOINT_TYPE specifies the fallback endpoint type to use in the
        # case that OPENSTACK_ENDPOINT_TYPE is not present in the endpoints
        # in the Keystone service catalog. Use this setting when Horizon is running
        # external to the OpenStack environment. The default is None.  This
        # value should differ from OPENSTACK_ENDPOINT_TYPE if used.
        SECONDARY_ENDPOINT_TYPE = "publicURL"

        # The number of objects (Swift containers/objects or images) to display
        # on a single page before providing a paging element (a "more" link)
        # to paginate results.
        API_RESULT_LIMIT = 1000
        API_RESULT_PAGE_SIZE = 20

        # The size of chunk in bytes for downloading objects from Swift
        SWIFT_FILE_TRANSFER_CHUNK_SIZE = 512 * 1024

        # Specify a maximum number of items to display in a dropdown.
        DROPDOWN_MAX_ITEMS = 30

        # The timezone of the server. This should correspond with the timezone
        # of your entire OpenStack installation, and hopefully be in UTC.
        TIME_ZONE = "UTC"

        # When launching an instance, the menu of available flavors is
        # sorted by RAM usage, ascending. If you would like a different sort order,
        # you can provide another flavor attribute as sorting key. Alternatively, you
        # can provide a custom callback method to use for sorting. You can also provide
        # a flag for reverse sort. For more info, see
        # http://docs.python.org/2/library/functions.html#sorted
        #CREATE_INSTANCE_FLAVOR_SORT = {
        #    'key': 'name',
        #     # or
        #    'key': my_awesome_callback_method,
        #    'reverse': False,
        #}

        # Set this to True to display an 'Admin Password' field on the Change Password
        # form to verify that it is indeed the admin logged-in who wants to change
        # the password.
        ENFORCE_PASSWORD_CHECK = {{ .Values.conf.horizon.local_settings.config.enforce_password_check }}

        # Modules that provide /auth routes that can be used to handle different types
        # of user authentication. Add auth plugins that require extra route handling to
        # this list.
        #AUTHENTICATION_URLS = [
        #    'openstack_auth.urls',
        #]

        # The Horizon Policy Enforcement engine uses these values to load per service
        # policy rule files. The content of these files should match the files the
        # OpenStack services are using to determine role based access control in the
        # target installation.

        # Path to directory containing policy.yaml files
        POLICY_FILES_PATH = '/etc/openstack-dashboard'
        # Map of local copy of service policy files
        #POLICY_FILES = {
        #    'identity': 'keystone_policy.yaml',
        #    'compute': 'nova_policy.yaml',
        #    'volume': 'cinder_policy.yaml',
        #    'image': 'glance_policy.yaml',
        #    'orchestration': 'heat_policy.yaml',
        #    'network': 'neutron_policy.yaml',
        #    'telemetry': 'ceilometer_policy.yaml',
        #}

        # Trove user and database extension support. By default support for
        # creating users and databases on database instances is turned on.
        # To disable these extensions set the permission here to something
        # unusable such as ["!"].
        # TROVE_ADD_USER_PERMS = []
        # TROVE_ADD_DATABASE_PERMS = []

        # Change this patch to the appropriate static directory containing
        # two files: _variables.scss and _styles.scss
        #CUSTOM_THEME_PATH = 'static/themes/default'

        LOGGING = {
            'version': 1,
            # When set to True this will disable all logging except
            # for loggers specified in this configuration dictionary. Note that
            # if nothing is specified here and disable_existing_loggers is True,
            # django.db.backends will still log unless it is disabled explicitly.
            'disable_existing_loggers': False,
            'handlers': {
                'null': {
                    'level': 'DEBUG',
                    'class': 'logging.NullHandler',
                },
                'console': {
                    # Set the level to "DEBUG" for verbose output logging.
                    'level': 'INFO',
                    'class': 'logging.StreamHandler',
                },
            },
            'loggers': {
                # Logging from django.db.backends is VERY verbose, send to null
                # by default.
                'django.db.backends': {
                    'handlers': ['null'],
                    'propagate': False,
                },
                'requests': {
                    'handlers': ['null'],
                    'propagate': False,
                },
                'horizon': {
                    'handlers': ['console'],
                    'level': '{{ .Values.conf.horizon.local_settings.config.log_level }}',
                    'propagate': False,
                },
                'openstack_dashboard': {
                    'handlers': ['console'],
                    'level': '{{ .Values.conf.horizon.local_settings.config.log_level }}',
                    'propagate': False,
                },
                'novaclient': {
                    'handlers': ['console'],
                    'level': '{{ .Values.conf.horizon.local_settings.config.log_level }}',
                    'propagate': False,
                },
                'cinderclient': {
                    'handlers': ['console'],
                    'level': '{{ .Values.conf.horizon.local_settings.config.log_level }}',
                    'propagate': False,
                },
                'glanceclient': {
                    'handlers': ['console'],
                    'level': '{{ .Values.conf.horizon.local_settings.config.log_level }}',
                    'propagate': False,
                },
                'glanceclient': {
                    'handlers': ['console'],
                    'level': '{{ .Values.conf.horizon.local_settings.config.log_level }}',
                    'propagate': False,
                },
                'neutronclient': {
                    'handlers': ['console'],
                    'level': '{{ .Values.conf.horizon.local_settings.config.log_level }}',
                    'propagate': False,
                },
                'heatclient': {
                    'handlers': ['console'],
                    'level': '{{ .Values.conf.horizon.local_settings.config.log_level }}',
                    'propagate': False,
                },
                'ceilometerclient': {
                    'handlers': ['console'],
                    'level': '{{ .Values.conf.horizon.local_settings.config.log_level }}',
                    'propagate': False,
                },
                'troveclient': {
                    'handlers': ['console'],
                    'level': '{{ .Values.conf.horizon.local_settings.config.log_level }}',
                    'propagate': False,
                },
                'swiftclient': {
                    'handlers': ['console'],
                    'level': '{{ .Values.conf.horizon.local_settings.config.log_level }}',
                    'propagate': False,
                },
                'openstack_auth': {
                    'handlers': ['console'],
                    'level': '{{ .Values.conf.horizon.local_settings.config.log_level }}',
                    'propagate': False,
                },
                'nose.plugins.manager': {
                    'handlers': ['console'],
                    'level': '{{ .Values.conf.horizon.local_settings.config.log_level }}',
                    'propagate': False,
                },
                'django': {
                    'handlers': ['console'],
                    'level': '{{ .Values.conf.horizon.local_settings.config.log_level }}',
                    'propagate': False,
                },
                'iso8601': {
                    'handlers': ['null'],
                    'propagate': False,
                },
                'scss': {
                    'handlers': ['null'],
                    'propagate': False,
                },
            }
        }

        # 'direction' should not be specified for all_tcp/udp/icmp.
        # It is specified in the form.
        SECURITY_GROUP_RULES = {
            'all_tcp': {
                'name': _('All TCP'),
                'ip_protocol': 'tcp',
                'from_port': '1',
                'to_port': '65535',
            },
            'all_udp': {
                'name': _('All UDP'),
                'ip_protocol': 'udp',
                'from_port': '1',
                'to_port': '65535',
            },
            'all_icmp': {
                'name': _('All ICMP'),
                'ip_protocol': 'icmp',
                'from_port': '-1',
                'to_port': '-1',
            },
            'ssh': {
                'name': 'SSH',
                'ip_protocol': 'tcp',
                'from_port': '22',
                'to_port': '22',
            },
            'smtp': {
                'name': 'SMTP',
                'ip_protocol': 'tcp',
                'from_port': '25',
                'to_port': '25',
            },
            'dns': {
                'name': 'DNS',
                'ip_protocol': 'tcp',
                'from_port': '53',
                'to_port': '53',
            },
            'http': {
                'name': 'HTTP',
                'ip_protocol': 'tcp',
                'from_port': '80',
                'to_port': '80',
            },
            'pop3': {
                'name': 'POP3',
                'ip_protocol': 'tcp',
                'from_port': '110',
                'to_port': '110',
            },
            'imap': {
                'name': 'IMAP',
                'ip_protocol': 'tcp',
                'from_port': '143',
                'to_port': '143',
            },
            'ldap': {
                'name': 'LDAP',
                'ip_protocol': 'tcp',
                'from_port': '389',
                'to_port': '389',
            },
            'https': {
                'name': 'HTTPS',
                'ip_protocol': 'tcp',
                'from_port': '443',
                'to_port': '443',
            },
            'smtps': {
                'name': 'SMTPS',
                'ip_protocol': 'tcp',
                'from_port': '465',
                'to_port': '465',
            },
            'imaps': {
                'name': 'IMAPS',
                'ip_protocol': 'tcp',
                'from_port': '993',
                'to_port': '993',
            },
            'pop3s': {
                'name': 'POP3S',
                'ip_protocol': 'tcp',
                'from_port': '995',
                'to_port': '995',
            },
            'ms_sql': {
                'name': 'MS SQL',
                'ip_protocol': 'tcp',
                'from_port': '1433',
                'to_port': '1433',
            },
            'mysql': {
                'name': 'MYSQL',
                'ip_protocol': 'tcp',
                'from_port': '3306',
                'to_port': '3306',
            },
            'rdp': {
                'name': 'RDP',
                'ip_protocol': 'tcp',
                'from_port': '3389',
                'to_port': '3389',
            },
        }

        # Deprecation Notice:
        #
        # The setting FLAVOR_EXTRA_KEYS has been deprecated.
        # Please load extra spec metadata into the Glance Metadata Definition Catalog.
        #
        # The sample quota definitions can be found in:
        # <glance_source>/etc/metadefs/compute-quota.json
        #
        # The metadata definition catalog supports CLI and API:
        #  $glance --os-image-api-version 2 help md-namespace-import
        #  $glance-manage db_load_metadefs <directory_with_definition_files>
        #
        # See Metadata Definitions on: https://docs.openstack.org/glance/latest/

        # Indicate to the Sahara data processing service whether or not
        # automatic floating IP allocation is in effect.  If it is not
        # in effect, the user will be prompted to choose a floating IP
        # pool for use in their cluster.  False by default.  You would want
        # to set this to True if you were running Nova Networking with
        # auto_assign_floating_ip = True.
        #SAHARA_AUTO_IP_ALLOCATION_ENABLED = False

        # The hash algorithm to use for authentication tokens. This must
        # match the hash algorithm that the identity server and the
        # auth_token middleware are using. Allowed values are the
        # algorithms supported by Python's hashlib library.
        #OPENSTACK_TOKEN_HASH_ALGORITHM = 'md5'

        # AngularJS requires some settings to be made available to
        # the client side. Some settings are required by in-tree / built-in horizon
        # features. These settings must be added to REST_API_REQUIRED_SETTINGS in the
        # form of ['SETTING_1','SETTING_2'], etc.
        #
        # You may remove settings from this list for security purposes, but do so at
        # the risk of breaking a built-in horizon feature. These settings are required
        # for horizon to function properly. Only remove them if you know what you
        # are doing. These settings may in the future be moved to be defined within
        # the enabled panel configuration.
        # You should not add settings to this list for out of tree extensions.
        # See: https://wiki.openstack.org/wiki/Horizon/RESTAPI
        REST_API_REQUIRED_SETTINGS = ['OPENSTACK_HYPERVISOR_FEATURES',
                                      'LAUNCH_INSTANCE_DEFAULTS',
                                      'OPENSTACK_IMAGE_FORMATS']

        # Additional settings can be made available to the client side for
        # extensibility by specifying them in REST_API_ADDITIONAL_SETTINGS
        # !! Please use extreme caution as the settings are transferred via HTTP/S
        # and are not encrypted on the browser. This is an experimental API and
        # may be deprecated in the future without notice.
        #REST_API_ADDITIONAL_SETTINGS = []

        # DISALLOW_IFRAME_EMBED can be used to prevent Horizon from being embedded
        # within an iframe. Legacy browsers are still vulnerable to a Cross-Frame
        # Scripting (XFS) vulnerability, so this option allows extra security hardening
        # where iframes are not used in deployment. Default setting is True.
        # For more information see:
        # http://tinyurl.com/anticlickjack
        DISALLOW_IFRAME_EMBED = {{ .Values.conf.horizon.local_settings.config.disallow_iframe_embed }}

        STATIC_ROOT = '/var/www/html/horizon'

        {{- range $option, $value := .Values.conf.horizon.local_settings.config.raw }}
        {{ $option }} = {{ toJson $value }}
        {{- end }}
    policy:
      ceilometer:
        context_is_admin: 'role:admin'
        context_is_owner: 'user_id:%(target.user_id)s'
        context_is_project: 'project_id:%(target.project_id)s'
        segregation: 'rule:context_is_admin'
      heat:
        'actions:action': 'rule:deny_stack_user'
        'build_info:build_info': 'rule:deny_stack_user'
        'cloudformation:CancelUpdateStack': 'rule:deny_stack_user'
        'cloudformation:CreateStack': 'rule:deny_stack_user'
        'cloudformation:DeleteStack': 'rule:deny_stack_user'
        'cloudformation:DescribeStackEvents': 'rule:deny_stack_user'
        'cloudformation:DescribeStackResource': ''
        'cloudformation:DescribeStackResources': 'rule:deny_stack_user'
        'cloudformation:DescribeStacks': 'rule:deny_stack_user'
        'cloudformation:EstimateTemplateCost': 'rule:deny_stack_user'
        'cloudformation:GetTemplate': 'rule:deny_stack_user'
        'cloudformation:ListStackResources': 'rule:deny_stack_user'
        'cloudformation:ListStacks': 'rule:deny_stack_user'
        'cloudformation:UpdateStack': 'rule:deny_stack_user'
        'cloudformation:ValidateTemplate': 'rule:deny_stack_user'
        'cloudwatch:DeleteAlarms': 'rule:deny_stack_user'
        'cloudwatch:DescribeAlarmHistory': 'rule:deny_stack_user'
        'cloudwatch:DescribeAlarms': 'rule:deny_stack_user'
        'cloudwatch:DescribeAlarmsForMetric': 'rule:deny_stack_user'
        'cloudwatch:DisableAlarmActions': 'rule:deny_stack_user'
        'cloudwatch:EnableAlarmActions': 'rule:deny_stack_user'
        'cloudwatch:GetMetricStatistics': 'rule:deny_stack_user'
        'cloudwatch:ListMetrics': 'rule:deny_stack_user'
        'cloudwatch:PutMetricAlarm': 'rule:deny_stack_user'
        'cloudwatch:PutMetricData': ''
        'cloudwatch:SetAlarmState': 'rule:deny_stack_user'
        context_is_admin: 'role:admin'
        deny_everybody: '!'
        deny_stack_user: 'not role:heat_stack_user'
        'events:index': 'rule:deny_stack_user'
        'events:show': 'rule:deny_stack_user'
        'resource:index': 'rule:deny_stack_user'
        'resource:mark_unhealthy': 'rule:deny_stack_user'
        'resource:metadata': ''
        'resource:show': 'rule:deny_stack_user'
        'resource:signal': ''
        'resource_types:OS::Cinder::EncryptedVolumeType': 'rule:context_is_admin'
        'resource_types:OS::Cinder::VolumeType': 'rule:context_is_admin'
        'resource_types:OS::Manila::ShareType': 'rule:context_is_admin'
        'resource_types:OS::Neutron::QoSBandwidthLimitRule': 'rule:context_is_admin'
        'resource_types:OS::Neutron::QoSPolicy': 'rule:context_is_admin'
        'resource_types:OS::Nova::Flavor': 'rule:context_is_admin'
        'resource_types:OS::Nova::HostAggregate': 'rule:context_is_admin'
        'service:index': 'rule:context_is_admin'
        'software_configs:create': 'rule:deny_stack_user'
        'software_configs:delete': 'rule:deny_stack_user'
        'software_configs:global_index': 'rule:deny_everybody'
        'software_configs:index': 'rule:deny_stack_user'
        'software_configs:show': 'rule:deny_stack_user'
        'software_deployments:create': 'rule:deny_stack_user'
        'software_deployments:delete': 'rule:deny_stack_user'
        'software_deployments:index': 'rule:deny_stack_user'
        'software_deployments:metadata': ''
        'software_deployments:show': 'rule:deny_stack_user'
        'software_deployments:update': 'rule:deny_stack_user'
        'stacks:abandon': 'rule:deny_stack_user'
        'stacks:create': 'rule:deny_stack_user'
        'stacks:delete': 'rule:deny_stack_user'
        'stacks:delete_snapshot': 'rule:deny_stack_user'
        'stacks:detail': 'rule:deny_stack_user'
        'stacks:environment': 'rule:deny_stack_user'
        'stacks:export': 'rule:deny_stack_user'
        'stacks:generate_template': 'rule:deny_stack_user'
        'stacks:global_index': 'rule:deny_everybody'
        'stacks:index': 'rule:deny_stack_user'
        'stacks:list_outputs': 'rule:deny_stack_user'
        'stacks:list_resource_types': 'rule:deny_stack_user'
        'stacks:list_snapshots': 'rule:deny_stack_user'
        'stacks:list_template_functions': 'rule:deny_stack_user'
        'stacks:list_template_versions': 'rule:deny_stack_user'
        'stacks:lookup': ''
        'stacks:preview': 'rule:deny_stack_user'
        'stacks:preview_update': 'rule:deny_stack_user'
        'stacks:preview_update_patch': 'rule:deny_stack_user'
        'stacks:resource_schema': 'rule:deny_stack_user'
        'stacks:restore_snapshot': 'rule:deny_stack_user'
        'stacks:show': 'rule:deny_stack_user'
        'stacks:show_output': 'rule:deny_stack_user'
        'stacks:show_snapshot': 'rule:deny_stack_user'
        'stacks:snapshot': 'rule:deny_stack_user'
        'stacks:template': 'rule:deny_stack_user'
        'stacks:update': 'rule:deny_stack_user'
        'stacks:update_patch': 'rule:deny_stack_user'
        'stacks:validate_template': 'rule:deny_stack_user'
    # list of panels to enable for horizon
    # this requires that the panels are already installed in the horizon image, if they are not
    # nothing will be added
    # the name of the panel should be the name of the dir where the panel is installed
    # for example heat_dashboard, cloudkittydashboard or neutron_taas_dashboard
    extra_panels:
      - heat_dashboard
      - neutron_taas_dashboard

dependencies:
  dynamic:
    common:
      local_image_registry:
        jobs:
          - horizon-image-repo-sync
        services:
          - endpoint: node
            service: local_image_registry
  static:
    dashboard:
      jobs:
        - horizon-db-sync
      services:
        - endpoint: internal
          service: oslo_cache
        - endpoint: internal
          service: oslo_db
        - endpoint: internal
          service: identity
    db_drop:
      services:
        - endpoint: internal
          service: oslo_db
    db_init:
      services:
        - endpoint: internal
          service: oslo_db
    db_sync:
      jobs:
        - horizon-db-init
      services:
        - endpoint: internal
          service: oslo_db
    image_repo_sync:
      services:
        - endpoint: internal
          service: local_image_registry
    tests:
      services:
        - endpoint: internal
          service: dashboard

pod:
  security_context:
    horizon:
      pod:
        runAsUser: 42424
      container:
        horizon:
          readOnlyRootFilesystem: false
          allowPrivilegeEscalation: false
          runAsUser: 0
    db_sync:
      pod:
        runAsUser: 42424
      container:
        horizon_db_sync:
          readOnlyRootFilesystem: false
          allowPrivilegeEscalation: false
          runAsUser: 0
    test:
      pod:
        runAsUser: 42424
      container:
        horizon_test:
          readOnlyRootFilesystem: true
          allowPrivilegeEscalation: false
  affinity:
    anti:
      type:
        default: preferredDuringSchedulingIgnoredDuringExecution
      topologyKey:
        default: kubernetes.io/hostname
      weight:
        default: 10
  tolerations:
    horizon:
      enabled: false
      tolerations:
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: NoSchedule
  mounts:
    horizon_db_init:
      init_container: null
      horizon_db_init:
        volumeMounts:
        volumes:
    horizon_db_sync:
      init_container: null
      horizon_db_sync:
        volumeMounts:
        volumes:
    horizon:
      init_container: null
      horizon:
        volumeMounts:
        volumes:
    horizon_tests:
      init_container: null
      horizon_tests:
        volumeMounts:
        volumes:
  replicas:
    server: 1
  lifecycle:
    upgrades:
      deployments:
        revision_history: 3
        pod_replacement_strategy: RollingUpdate
        rolling_update:
          max_unavailable: 1
          max_surge: 3
    disruption_budget:
      horizon:
        min_available: 0
    termination_grace_period:
      horizon:
        timeout: 30
  resources:
    enabled: false
    server:
      requests:
        memory: "128Mi"
        cpu: "100m"
      limits:
        memory: "1024Mi"
        cpu: "2000m"
    jobs:
      db_init:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      db_sync:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      db_drop:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      image_repo_sync:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      tests:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"

# Names of secrets used by bootstrap and environmental checks
secrets:
  identity:
    admin: horizon-keystone-admin
  oslo_db:
    admin: horizon-db-admin
    horizon: horizon-db-user
  tls:
    dashboard:
      dashboard:
        public: horizon-tls-public
        internal: horizon-tls-web
  oci_image_registry:
    horizon: horizon-oci-image-registry

tls:
  identity: false

# typically overridden by environmental
# values, but should include all endpoints
# required by this chart
endpoints:
  cluster_domain_suffix: cluster.local
  local_image_registry:
    name: docker-registry
    namespace: docker-registry
    hosts:
      default: localhost
      internal: docker-registry
      node: localhost
    host_fqdn_override:
      default: null
    port:
      registry:
        node: 5000
  oci_image_registry:
    name: oci-image-registry
    namespace: oci-image-registry
    auth:
      enabled: false
      horizon:
        username: horizon
        password: password
    hosts:
      default: localhost
    host_fqdn_override:
      default: null
    port:
      registry:
        default: null
  identity:
    name: keystone
    auth:
      admin:
        region_name: RegionOne
        username: admin
        password: password
        project_name: admin
        user_domain_name: default
        project_domain_name: default
    hosts:
      default: keystone
      internal: keystone-api
    host_fqdn_override:
      default: null
    path:
      default: /v3
    scheme:
      default: http
    port:
      api:
        default: 80
        internal: 5000
  oslo_cache:
    hosts:
      default: memcached
    host_fqdn_override:
      default: null
    port:
      memcache:
        default: 11211
  dashboard:
    name: horizon
    hosts:
      default: horizon-int
      public: horizon
    host_fqdn_override:
      default: null
      # NOTE(portdirect): this chart supports TLS for fqdn over-ridden public
      # endpoints using the following format:
      # public:
      #   host: null
      #   tls:
      #     crt: null
      #     key: null
    path:
      default: null
    scheme:
      default: http
    port:
      web:
        default: 80
  oslo_db:
    auth:
      admin:
        username: root
        password: password
        secret:
          tls:
            internal: mariadb-tls-direct
      horizon:
        username: horizon
        password: password
    hosts:
      default: mariadb
    host_fqdn_override:
      default: null
    path: /horizon
    scheme: mysql+pymysql
    port:
      mysql:
        default: 3306
  # NOTE(tp6510): these endpoints allow for things like DNS lookups and ingress
  # They are using to enable the Egress K8s network policy.
  kube_dns:
    namespace: kube-system
    name: kubernetes-dns
    hosts:
      default: kube-dns
    host_fqdn_override:
      default: null
    path:
      default: null
    scheme: http
    port:
      dns:
        default: 53
        protocol: UDP
  ingress:
    namespace: null
    name: ingress
    hosts:
      default: ingress
    port:
      ingress:
        default: 80

network_policy:
  horizon:
    ingress:
      - {}
    egress:
      - {}

# NOTE(helm_hook): helm_hook might break for helm2 binary.
# set helm3_hook: false when using the helm2 binary.
helm3_hook: true

manifests:
  certificates: false
  configmap_bin: true
  configmap_etc: true
  configmap_logo: false
  deployment: true
  ingress_api: true
  job_db_init: true
  job_db_sync: true
  job_db_drop: false
  job_image_repo_sync: true
  pdb: true
  pod_helm_test: true
  network_policy: false
  secret_db: true
  secret_ingress_tls: true
  secret_keystone: true
  secret_registry: true
  service_ingress: true
  service: true
...
