I can't for the life of me get external connectivity working, openstack itself works i just cant get external connectivity working, 

I can see ovs has created br-ex with bond1 attached.
ovs-vsctl get open . external_ids:ovn-bridge-mapping shows: "physnst1:br-ex"

I have tried creating the network with both:

openstack network create  --share --external --provider-physical-network physnet1 --provider-network-type vlan --provider-segment 233 public
openstack network create  --share --external --provider-physical-network physnet1 --provider-network-type flat publicnet-flat

Only errors i can see is in the neutron container when i try and either create an instance on said network or attach a fip is is:
(similar errors from a vlan type network this is just the error i pulled at the time)

ERROR neutron.plugins.ml2.managers [req-de7f1cb8-ac8e-4dd6-ad2a-e14afdb152b5 req-c6a2aaff-ccf9-4ef3-9ef
7-1a8e4c7a1e41 9c27de6bdc4449abbbbcd5e5c4951bb9 2fced1ff77f5428eb2b63879bdd608cc - - default default] Failed to bind port 03cc1708-d4a2-4b11-bca2-40ebe0acff60 on host 02 for vnic_type normal using segments [{'id': '2ef64682-b5ff-472b-935d-a3c2b615d70f', 'network_type': 'flat', 'physical_network': 'physnet1', 'segmentation_id': None, 'network_id': '52b4f4e9-47f3-431b-8c45-ec8cc17f561d'}]

 WARNING neutron.scheduler.dhcp_agent_scheduler [None req-aafa81d9-479c-4f56-be6f-54d4ab3b42aa 1b29a
2297a224cdcaaba84e0eac30205 bafabcf2414d4adf98cab165c3f3de12 - - default default] No more DHCP agents            

 WARNING neutron.api.rpc.agentnotifiers.dhcp_rpc_agent_api [None req-aafa81d9-479c-4f56-be6f-54d4ab3
b42aa 1b29a2297a224cdcaaba84e0eac30205 bafabcf2414d4adf98cab165c3f3de12 - - default default] Unable to schedule network 5fa049f5-0ed4-4287-9c63-dd753c853c35: no agents available; will retry on subsequent port and subnet creation events.

I just cant figure out WHY this isn't working..

Below is my config:

#############
### /etc/network/interfaces:
#############

auto bond1
iface bond1 inet manual
    bond-slaves eno2 eno4
    bond-mode 802.3ad
    bond-miimon 100
    bond-downdelay 200
    bond-updelay 200
    bond-lacp-rate 1
    mtu 9000

auto bond1.30
iface bond1.30 inet manual
    vlan-raw-device bond1

## (br-pubv is for my public vip)
auto bond1.232
iface bond1.232 inet manual
    vlan-raw-device bond1

auto br-overlay
iface br-overlay inet static
    bridge_stp off
    bridge_waitport 0
    bridge_fd 0
    bridge_ports bond1.30
    address
auto br-pubv
iface br-pubv inet static
    address
    gateway
    bridge_stp off
    bridge_waitport 0
    bridge_fd 0
    bridge_ports bond1.232


#############
### openstack_user_config.yml:
#############

    - network:
        container_bridge: "br-ex"
        network_interface: "bond1"
        type: "vlan"
        range: "232:332"
        net_name: "physnet1"
        group_binds:
          - neutron_ovn_controller

#############
###  user_variables.yml
#############

neutron_plugin_type: ml2.ovn
neutron_plugin_base:
  - ovn-router
  - qos
  - neutron.services.ovn_l3.plugin.OVNL3RouterPlugin
  - neutron_dynamic_routing.services.bgp.bgp_plugin.BgpPlugin
  - vpnaas
  - metering
  - firewall_v2
neutron_ml2_drivers_type: "vlan,local,geneve,flat"

neutron_provider_networks:
  network_types: "geneve"
  network_geneve_ranges: "1:1000"
  network_vlan_ranges: "physnet1"
  network_mappings: "physnet1:br-ex"
  network_interface_mappings: "br-ex:bond1"

Bond1 is a trunk port (no native vlan), that has access to both overlay vlan and the 232:332 vlan range which both work when setting either network as a bridge on bond1 so connectivity is there.

I have network-northd/gateway_hosts defined as well as:

neutron_neutron_conf_overrides:
  ovn:
    enable_distributed_floating_ip: True

openstack_host_specific_kernel_modules:
  - name: "openvswitch"
    pattern: "CONFIG_OPENVSWITCH"

This should by all accounts just work, but for some reason for me it's not, what steps have i missed?