# 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
        rpc_response_timeout: 600
        service_plugins: qos,router,segments,trunk,vpnaas
        external_dns_driver: "{{ _neutron_external_dns_driver | default(omit) }}"
      cors:
        allowed_origin: "*"
      database:
        connection_recycle_time: 600
        max_overflow: 50
        max_pool_size: 5
        pool_timeout: 30
      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:
        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-vpnaas
      ovn:
        ovn_emit_need_to_frag: true
      service_providers:
        service_provider: VPN:strongswan:neutron_vpnaas.services.vpn.service_drivers.ovn_ipsec.IPsecOvnVPNDriver:default
    ovn_metadata_agent:
      DEFAULT:
        metadata_proxy_shared_secret: "{{ openstack_helm_endpoints['compute_metadata']['secret'] }}"
    ovn_vpn_agent:
      AGENT:
        extensions: vpnaas
      vpnagent:
        vpn_device_driver: neutron_vpnaas.services.vpn.device_drivers.ovn_ipsec.OvnStrongSwanDriver
    neutron_vpnaas:
      service_providers:
        service_provider: VPN:strongswan:neutron_vpnaas.services.vpn.service_drivers.ovn_ipsec.IPsecOvnVPNDriver:default
    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_ovn_vpn_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) or role:manager and project_id:%(project_id)s) and http://neutron-server:9697/port-update"
      update_port:fixed_ips: "((rule:admin_only) or (rule:service_api) or role:manager and project_id:%(project_id)s or role:member and rule:network_owner) and http://neutron-server:9697/port-update"
      update_port:allowed_address_pairs: "((rule:admin_only) or (role:member and rule:network_owner) or role:manager and project_id:%(project_id)s) or (role:member and project_id:%(project_id)s and http://neutron-server:9697/address-pair )"
      update_port:allowed_address_pairs:ip_address: "((rule:admin_only) or (role:member and rule:network_owner) or role:manager and project_id:%(project_id)s) or (role:member and project_id:%(project_id)s)"
      update_port:allowed_address_pairs:mac_address: "((rule:admin_only) or (role:member and rule:network_owner) or role:manager and project_id:%(project_id)s) or (role:member and project_id:%(project_id)s)"
