def allocate_ip_for_subnet(self, subnet_id, mac, port_id):
        """Allocates an IP from the specified subnet and creates a port"""
        # Get an available IP and mark it as used before someone else does
        # If there's no IP, , log it and return an error
        # If we successfully get an IP, create a port with the specified MAC and device data
        # If port creation fails, deallocate the IP
        subnet = self.get_subnet(subnet_id)
        ip, mask, port_id = self.a10_allocate_ip_from_dhcp_range(subnet, "vlan", mac, port_id)
        return ip, mask, port_id
Allocates an IP from the specified subnet and creates a port