mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
For input methods which use nbdkit, we can cheaply add
nbdkit-rate-filter to control input-side network bandwidth. These
options control that filter. We can choose to set the bandwidth
statically and optionally change it dynamically:
--bandwidth 10M
# static bandwidth of 10 Mbps, no dynamic adjustment possible
--bandwidth 5M --bandwidth-file /tmp/bw
# initial static bandwidth of 5 Mbps, adjustable by writing to /tmp/bw
--bandwidth-file /tmp/bw
# no initial bandwidth cap, can be added later by writing to /tmp/bw
It only makes sense to control the input side since virt-v2v writes a
lot less data than it reads.
45 lines
2.0 KiB
OCaml
45 lines
2.0 KiB
OCaml
(* virt-v2v
|
|
* Copyright (C) 2009-2019 Red Hat Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*)
|
|
|
|
(** Parse libvirt XML into a {!Types.source} structure. *)
|
|
|
|
type parsed_disk = {
|
|
p_source_disk : Types.source_disk; (** Source disk. *)
|
|
p_source : parsed_source; (** <source dev|file attribute> *)
|
|
}
|
|
and parsed_source =
|
|
| P_source_dev of string (** <source dev> *)
|
|
| P_source_file of string (** <source file> *)
|
|
| P_dont_rewrite (** s_qemu_uri is already set. *)
|
|
|
|
val parse_libvirt_domain : ?bandwidth:Types.bandwidth -> Libvirt.rw Libvirt.Connect.t -> string -> Types.source * parsed_disk list * string
|
|
(** [parse_libvirt_domain conn dom] loads the XML of the domain [dom]
|
|
from the libvirt connection [conn].
|
|
The result is a tuple with a {!Types.source} structure, a list of
|
|
source disks, and the XML of the guest.
|
|
|
|
{b Note} the [source.s_disks] field is an empty list. The caller
|
|
must map over the parsed disks and update the [source.s_disks] field. *)
|
|
|
|
val parse_libvirt_xml : ?bandwidth:Types.bandwidth -> ?conn:Libvirt.rw Libvirt.Connect.t -> string -> Types.source * parsed_disk list
|
|
(** Take libvirt XML and parse it into a {!Types.source} structure and a
|
|
list of source disks.
|
|
|
|
{b Note} the [source.s_disks] field is an empty list. The caller
|
|
must map over the parsed disks and update the [source.s_disks] field. *)
|