This changes the way that IPAM decides which subnets to use when
assigning IPs to newly created ports. If the port has a defined
device_owner, this is used to filter available subnets to choose
from only those with a matching service_type or no service_type
at all.
If the given network has no service subnets, then the existing
behaviour is used.
A new IPAM exception is introduced to handle the following scenarios:
1. A port is created with a device_owner and only non-matching service
subnets exist.
2. A port is created without a device owner, and no subnets exist
without a service_type.
With this patch, service subnets are now usable.
Implements: blueprint service-subnets
APIImpact: subnet-create and subnet-update with service_types
DocImpact: IPs assigned to new ports will now come from a service subnet
matching the port device_owner, if one exists.
Closes-Bug: 1544768
Change-Id: If3dd94a46bdee24c13d1f17c4f2e69af0cb8af63