'Start network allocation asynchronously.  Return an instance
of NetworkInfoAsyncWrapper that can be used to retrieve the
allocated networks when the operation has finished.'

def _allocate_network(self, context, instance, requested_networks, macs, security_groups, dhcp_options):

    instance.vm_state = vm_states.BUILDING
    instance.task_state = task_states.NETWORKING
    instance.save(expected_task_state=[None])
    self._update_resource_tracker(context, instance)
    is_vpn = False
    return network_model.NetworkInfoAsyncWrapper(self._allocate_network_async, context, instance, requested_networks, macs, security_groups, is_vpn, dhcp_options)
