# Copyright (c) 2022 VEXXHOST, Inc.
#
# 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.

__neutron_helm_values:
  endpoints: "{{ openstack_helm_endpoints }}"
  images:
    tags: "{{ atmosphere_images | vexxhost.atmosphere.openstack_helm_image_tags('neutron') }}"
  network:
    backend:
      - "{{ atmosphere_network_backend }}"
  pod:
    replicas:
      server: 3
      rpc_server: 3
    sidecars:
      neutron_policy_server: true
  conf:
    neutron:
      DEFAULT:
        api_workers: 8
        dhcp_agents_per_network: 3
        log_config_append: null
        rpc_workers: 8
        service_plugins: qos,router,segments,trunk,vpnaas
        external_dns_driver: "{{ _neutron_external_dns_driver | default(omit) }}"
      cors:
        allowed_origin: "*"
      database:
        connection_recycle_time: 10
        max_pool_size: 1
      designate:
        url: http://designate-api.openstack.svc.cluster.local:9001/v2
        auth_url: http://keystone-api.openstack.svc.cluster.local:5000
        region_name: "{{ openstack_helm_endpoints_neutron_region_name }}"
        username: "neutron-{{ openstack_helm_endpoints_neutron_region_name }}"
        password: "{{ openstack_helm_endpoints_neutron_keystone_password }}"
      nova:
        live_migration_events: true
      placement:
        region_name: "{{ openstack_helm_endpoints_neutron_region_name }}"
        username: "neutron-{{ openstack_helm_endpoints_neutron_region_name }}"
        password: "{{ openstack_helm_endpoints_neutron_keystone_password }}"
      oslo_messaging_notifications:
        driver: noop
      service_providers:
        service_provider: VPN:strongswan:neutron_vpnaas.services.vpn.service_drivers.ipsec.IPsecVPNDriver:default
    dhcp_agent:
      DEFAULT:
        dnsmasq_dns_servers: "{{ neutron_coredns_cluster_ip | default('10.96.0.20') }}"
        enable_isolated_metadata: true
    l3_agent:
      AGENT:
        extensions: vpnaas
      vpnagent:
        vpn_device_driver: neutron_vpnaas.services.vpn.device_drivers.strongswan_ipsec.StrongSwanDriver
    metadata_agent:
      DEFAULT:
        nova_metadata_port: 8775
        metadata_proxy_shared_secret: "{{ openstack_helm_endpoints['compute_metadata']['secret'] }}"
    plugins:
      ml2_conf:
        ml2:
          extension_drivers: dns_domain_ports,port_security,qos
          type_drivers: flat,gre,vlan,vxlan
        ml2_type_gre:
          tunnel_id_ranges: 1:1000
        ml2_type_vlan:
          network_vlan_ranges: external:1:4094
  manifests:
    ingress_server: false
    service_ingress_server: false

__neutron_ovn_helm_values:
  conf:
    neutron:
      DEFAULT:
        service_plugins: qos,ovn-router,segments,trunk,log
      ovn:
        ovn_emit_need_to_frag: true
    ovn_metadata_agent:
      DEFAULT:
        metadata_proxy_shared_secret: "{{ openstack_helm_endpoints['compute_metadata']['secret'] }}"
    plugins:
      ml2_conf:
        agent:
          extensions: "log"
        ml2:
          type_drivers: flat,vlan,geneve
          tenant_network_types: geneve
  manifests:
    daemonset_dhcp_agent: false
    daemonset_l3_agent: false
    daemonset_metadata_agent: false
    daemonset_ovn_metadata_agent: true
    daemonset_ovs_agent: false
    deployment_rpc_server: false

__neutron_policy_server_helm_values:
  conf:
    policy:
      delete_port: "((rule:admin_only) or (rule:service_api) or role:member and rule:network_owner or role:member and project_id:%(project_id)s) and http://neutron-server:9697/port-delete"
      update_port:mac_address: "((rule:admin_only) or (rule:service_api)) and http://neutron-server:9697/port-update"
      update_port:fixed_ips: "((rule:admin_only) or (rule:service_api) or role:member and rule:network_owner) and http://neutron-server:9697/port-update"
