From 34db67e348a8b21677abd5fda7e26d9b097dcf2e Mon Sep 17 00:00:00 2001 From: Rob Hoes Date: Fri, 6 Oct 2023 17:36:59 +0100 Subject: [PATCH] Add some more documents from xapi-project.github.io Signed-off-by: Rob Hoes --- doc/content/toolstack/features/DR/dr.png | Bin 0 -> 37742 bytes doc/content/toolstack/features/DR/index.md | 29 + .../toolstack/features/HA/HA.configure.msc | 11 + .../toolstack/features/HA/HA.configure.svg | 11 + .../features/HA/HA.disable.clean.msc | 6 + .../features/HA/HA.disable.clean.svg | 7 + .../features/HA/HA.disable.unclean.msc | 5 + .../features/HA/HA.disable.unclean.svg | 6 + .../toolstack/features/HA/HA.shutdown.msc | 8 + .../toolstack/features/HA/HA.shutdown.svg | 8 + .../toolstack/features/HA/HA.start.msc | 12 + .../toolstack/features/HA/HA.start.svg | 13 + doc/content/toolstack/features/HA/ha.png | Bin 0 -> 50021 bytes doc/content/toolstack/features/HA/index.md | 849 ++++++++++++++++++ doc/content/toolstack/features/VGPU/index.md | 190 ++++ .../toolstack/features/VGPU/vgpu-arch.png | Bin 0 -> 18038 bytes .../features/VGPU/vgpu-datamodel.png | Bin 0 -> 19940 bytes .../toolstack/features/VGPU/vgx-configs.png | Bin 0 -> 50018 bytes doc/content/toolstack/features/XSM/index.md | 24 + doc/content/toolstack/features/XSM/xsm.png | Bin 0 -> 58039 bytes doc/content/toolstack/features/_index.md | 7 + .../features/snapshots/coalesce1.graffle | Bin 0 -> 3341 bytes .../features/snapshots/coalesce1.png | Bin 0 -> 37136 bytes .../features/snapshots/coalesce2.graffle | Bin 0 -> 3297 bytes .../features/snapshots/coalesce2.png | Bin 0 -> 37038 bytes .../features/snapshots/coalesce3.graffle | Bin 0 -> 2805 bytes .../features/snapshots/coalesce3.png | Bin 0 -> 30523 bytes .../toolstack/features/snapshots/index.md | 168 ++++ .../features/snapshots/lun-trees.graffle | Bin 0 -> 3659 bytes .../features/snapshots/lun-trees.png | Bin 0 -> 49515 bytes .../toolstack/features/snapshots/luns.graffle | Bin 0 -> 3555 bytes .../toolstack/features/snapshots/luns.png | Bin 0 -> 45841 bytes .../features/snapshots/vhd-trees.graffle | Bin 0 -> 3401 bytes .../features/snapshots/vhd-trees.png | Bin 0 -> 47002 bytes .../features/snapshots/vm-snapshot.graffle | Bin 0 -> 2382 bytes .../features/snapshots/vm-snapshot.png | Bin 0 -> 40967 bytes .../toolstack/features/snapshots/vm.graffle | Bin 0 -> 2382 bytes .../toolstack/features/snapshots/vm.png | Bin 0 -> 16325 bytes doc/content/xapi/_index.md | 117 +++ doc/content/xapi/guides/_index.md | 7 + doc/content/xapi/guides/howtos/_index.md | 3 + .../xapi/guides/howtos/add-api-extension.md | 79 ++ doc/content/xapi/guides/howtos/add-class.md | 452 ++++++++++ doc/content/xapi/guides/howtos/add-field.md | 156 ++++ .../xapi/guides/howtos/add-function.md | 303 +++++++ doc/content/xapi/memory/index.md | 66 ++ doc/content/xapi/memory/overhead.svg | 249 +++++ doc/content/xapi/memory/shadow.svg | 246 +++++ doc/content/xapi/xapi.png | Bin 0 -> 88685 bytes doc/content/xcp-networkd/_index.md | 119 +++ 50 files changed, 3151 insertions(+) create mode 100644 doc/content/toolstack/features/DR/dr.png create mode 100644 doc/content/toolstack/features/DR/index.md create mode 100644 doc/content/toolstack/features/HA/HA.configure.msc create mode 100644 doc/content/toolstack/features/HA/HA.configure.svg create mode 100644 doc/content/toolstack/features/HA/HA.disable.clean.msc create mode 100644 doc/content/toolstack/features/HA/HA.disable.clean.svg create mode 100644 doc/content/toolstack/features/HA/HA.disable.unclean.msc create mode 100644 doc/content/toolstack/features/HA/HA.disable.unclean.svg create mode 100644 doc/content/toolstack/features/HA/HA.shutdown.msc create mode 100644 doc/content/toolstack/features/HA/HA.shutdown.svg create mode 100644 doc/content/toolstack/features/HA/HA.start.msc create mode 100644 doc/content/toolstack/features/HA/HA.start.svg create mode 100644 doc/content/toolstack/features/HA/ha.png create mode 100644 doc/content/toolstack/features/HA/index.md create mode 100644 doc/content/toolstack/features/VGPU/index.md create mode 100644 doc/content/toolstack/features/VGPU/vgpu-arch.png create mode 100644 doc/content/toolstack/features/VGPU/vgpu-datamodel.png create mode 100644 doc/content/toolstack/features/VGPU/vgx-configs.png create mode 100644 doc/content/toolstack/features/XSM/index.md create mode 100644 doc/content/toolstack/features/XSM/xsm.png create mode 100644 doc/content/toolstack/features/_index.md create mode 100644 doc/content/toolstack/features/snapshots/coalesce1.graffle create mode 100644 doc/content/toolstack/features/snapshots/coalesce1.png create mode 100644 doc/content/toolstack/features/snapshots/coalesce2.graffle create mode 100644 doc/content/toolstack/features/snapshots/coalesce2.png create mode 100644 doc/content/toolstack/features/snapshots/coalesce3.graffle create mode 100644 doc/content/toolstack/features/snapshots/coalesce3.png create mode 100644 doc/content/toolstack/features/snapshots/index.md create mode 100644 doc/content/toolstack/features/snapshots/lun-trees.graffle create mode 100644 doc/content/toolstack/features/snapshots/lun-trees.png create mode 100644 doc/content/toolstack/features/snapshots/luns.graffle create mode 100644 doc/content/toolstack/features/snapshots/luns.png create mode 100644 doc/content/toolstack/features/snapshots/vhd-trees.graffle create mode 100644 doc/content/toolstack/features/snapshots/vhd-trees.png create mode 100644 doc/content/toolstack/features/snapshots/vm-snapshot.graffle create mode 100644 doc/content/toolstack/features/snapshots/vm-snapshot.png create mode 100644 doc/content/toolstack/features/snapshots/vm.graffle create mode 100644 doc/content/toolstack/features/snapshots/vm.png create mode 100644 doc/content/xapi/_index.md create mode 100644 doc/content/xapi/guides/_index.md create mode 100644 doc/content/xapi/guides/howtos/_index.md create mode 100644 doc/content/xapi/guides/howtos/add-api-extension.md create mode 100644 doc/content/xapi/guides/howtos/add-class.md create mode 100644 doc/content/xapi/guides/howtos/add-field.md create mode 100644 doc/content/xapi/guides/howtos/add-function.md create mode 100644 doc/content/xapi/memory/index.md create mode 100644 doc/content/xapi/memory/overhead.svg create mode 100644 doc/content/xapi/memory/shadow.svg create mode 100644 doc/content/xapi/xapi.png create mode 100644 doc/content/xcp-networkd/_index.md diff --git a/doc/content/toolstack/features/DR/dr.png b/doc/content/toolstack/features/DR/dr.png new file mode 100644 index 0000000000000000000000000000000000000000..6c91120965af75bd7fce9303d7b0a01a4637c8f6 GIT binary patch literal 37742 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 literal 0 HcmV?d00001 diff --git a/doc/content/toolstack/features/DR/index.md b/doc/content/toolstack/features/DR/index.md new file mode 100644 index 00000000000..a958cb9f27a --- /dev/null +++ b/doc/content/toolstack/features/DR/index.md @@ -0,0 +1,29 @@ ++++ +title = "Disaster Recovery" ++++ + +The [HA](../HA/HA.html) feature will restart VMs after hosts have failed, but what +happens if a whole site (e.g. datacenter) is lost? A disaster recovery +configuration is shown in the following diagram: + +![Disaster recovery maintaining a secondary site](dr.png) + +We rely on the storage array's built-in mirroring to replicate (synchronously +or asynchronously: the admin's choice) between the primary and the secondary +site. When DR is enabled the VM disk data and VM metadata are written to the +storage server and mirrored. The secondary site contains the other side +of the data mirror and a set of hosts, which may be powered off. + +In normal operation, the DR feature allows a "dry-run" recovery where a host +on the secondary site checks that it can indeed see all the VM disk data +and metadata. This should be done regularly, so that admins are familiar with +the process. + +After a disaster, the admin breaks the mirror on the secondary site and triggers +a remote power-on of the offline hosts (either using an out-of-band tool or + the built-in host power-on feature of xapi). The pool master on the secondary +site can connect to the storage and extract all the VM metadata. Finally the +VMs can all be restarted. + +When the primary site is fully recovered, the mirror can be re-synchronised +and the VMs can be moved back. diff --git a/doc/content/toolstack/features/HA/HA.configure.msc b/doc/content/toolstack/features/HA/HA.configure.msc new file mode 100644 index 00000000000..43eafd7ff98 --- /dev/null +++ b/doc/content/toolstack/features/HA/HA.configure.msc @@ -0,0 +1,11 @@ +participant slave1 +Note over master: Host.enable_ha\nchoose an SR\nfind or create VDIs\nattach VDIs\nwrite xhad.conf\nha_set_pool_state init +master->slave1: Host.preconfigure_ha +Note over slave1: attach VDIs\nwrite xhad.conf\n +master->slave2: Host.preconfigure_ha +Note over slave2: attach VDIs\nwrite xhad.conf\n +master->slave1: Host.ha_join_liveset +master->slave2: Host.ha_join_liveset +Note over master: ha_propose_master +slave1-->master: wait for master +slave2-->master: wait for master diff --git a/doc/content/toolstack/features/HA/HA.configure.svg b/doc/content/toolstack/features/HA/HA.configure.svg new file mode 100644 index 00000000000..f00fc1e4b6b --- /dev/null +++ b/doc/content/toolstack/features/HA/HA.configure.svg @@ -0,0 +1,11 @@ +participant slave1 +Note over master: Host.enable_ha\nchoose an SR\nfind or create VDIs\nattach VDIs\nwrite xhad.conf\nha_set_pool_state init +master->slave1: Host.preconfigure_ha +Note over slave1: attach VDIs\nwrite xhad.conf\n +master->slave2: Host.preconfigure_ha +Note over slave2: attach VDIs\nwrite xhad.conf\n +master->slave1: Host.ha_join_liveset +master->slave2: Host.ha_join_liveset +Note over master: ha_propose_master +slave1-->master: wait for master +slave2-->master: wait for masterCreated with Raphaƫl 2.1.0 \ No newline at end of file diff --git a/doc/content/toolstack/features/HA/HA.disable.clean.msc b/doc/content/toolstack/features/HA/HA.disable.clean.msc new file mode 100644 index 00000000000..290ea23e3f9 --- /dev/null +++ b/doc/content/toolstack/features/HA/HA.disable.clean.msc @@ -0,0 +1,6 @@ +Master Xapi->Master Xhad: ha_set_pool_state Invalid +Master Xhad->Master Xapi: OK +Note over Slave Xhad: heartbeat thread notices\ninvalid state and disarms +Slave Xapi-->Slave Xhad: ha_query_liveset +Slave Xhad-->Slave Xapi: Invalid +Note over Slave Xapi: disable HA, cleanup diff --git a/doc/content/toolstack/features/HA/HA.disable.clean.svg b/doc/content/toolstack/features/HA/HA.disable.clean.svg new file mode 100644 index 00000000000..6d47269df2a --- /dev/null +++ b/doc/content/toolstack/features/HA/HA.disable.clean.svg @@ -0,0 +1,7 @@ +Master Xapi->Master Xhad: ha_set_pool_state Invalid +Master Xhad->Master Xapi: OK +Note over Slave Xhad: heartbeat thread notices\ninvalid state and disarms +Slave Xapi-->Slave Xhad: ha_query_liveset +Slave Xhad-->Slave Xapi: Invalid +Note over Slave Xapi: disable HA, cleanup +Created with Raphaƫl 2.1.0 \ No newline at end of file diff --git a/doc/content/toolstack/features/HA/HA.disable.unclean.msc b/doc/content/toolstack/features/HA/HA.disable.unclean.msc new file mode 100644 index 00000000000..3e5881329bc --- /dev/null +++ b/doc/content/toolstack/features/HA/HA.disable.unclean.msc @@ -0,0 +1,5 @@ +Note over Xapi: disable HA recovery\nlogic; user has manual\ncontrol +Xapi->Xhad: ha_disarm_fencing +Xhad->Xapi: OK +Xapi->Xhad: ha_stop_daemon +Xhad->Xapi: OK diff --git a/doc/content/toolstack/features/HA/HA.disable.unclean.svg b/doc/content/toolstack/features/HA/HA.disable.unclean.svg new file mode 100644 index 00000000000..1312851148a --- /dev/null +++ b/doc/content/toolstack/features/HA/HA.disable.unclean.svg @@ -0,0 +1,6 @@ +Note over Xapi: disable HA recovery\nlogic; user has manual\ncontrol +Xapi->Xhad: ha_disarm_fencing +Xhad->Xapi: OK +Xapi->Xhad: ha_stop_daemon +Xhad->Xapi: OK +Created with Raphaƫl 2.1.0 \ No newline at end of file diff --git a/doc/content/toolstack/features/HA/HA.shutdown.msc b/doc/content/toolstack/features/HA/HA.shutdown.msc new file mode 100644 index 00000000000..1b34d3316b5 --- /dev/null +++ b/doc/content/toolstack/features/HA/HA.shutdown.msc @@ -0,0 +1,8 @@ +Note over Xapi: all VMs shutdown\nall VDIs unlocked +Xapi->Xhad: ha_disarm_fencing +Xhad->Xapi: OK +Xapi->Xhad: ha_stop_daemon +Xhad->Xapi: OK +Note over Xhad: daemon exits +Xapi->Statefile: ha_set_excluded +Note over Statefile: host will not be included\nin liveset calculations until\nafter reboot diff --git a/doc/content/toolstack/features/HA/HA.shutdown.svg b/doc/content/toolstack/features/HA/HA.shutdown.svg new file mode 100644 index 00000000000..a751cbb8a79 --- /dev/null +++ b/doc/content/toolstack/features/HA/HA.shutdown.svg @@ -0,0 +1,8 @@ +Note over Xapi: all VMs shutdown\nall VDIs unlocked +Xapi->Xhad: ha_disarm_fencing +Xhad->Xapi: OK +Xapi->Xhad: ha_stop_daemon +Xhad->Xapi: OK +Note over Xhad: daemon exits +Xapi->Statefile: ha_set_excluded +Note over Statefile: host will not be included\nin liveset calculations until\nafter rebootCreated with Raphaƫl 2.1.0 \ No newline at end of file diff --git a/doc/content/toolstack/features/HA/HA.start.msc b/doc/content/toolstack/features/HA/HA.start.msc new file mode 100644 index 00000000000..a73c28139bb --- /dev/null +++ b/doc/content/toolstack/features/HA/HA.start.msc @@ -0,0 +1,12 @@ +Xapi->Xhad: ha_start_daemon +Note over Xhad: Starts talking to other hosts\nto form or join the liveset +Xapi-->Xhad: ha_query_liveset +Xhad-->Xapi: Starting +Note over Xhad: liveset joined and\nexcluded flag cleared +Xhad->Xapi: OK +Xapi-->Xhad: ha_query_liveset +Xhad-->Xapi: Online +Note over Xapi: If starting HA and am a master\n already or if responding to a failure\nwhere the master may have failed. +Xapi->Xhad: ha_propose_master +Note over Xhad: at most one host can be a master +Xhad->Xapi: TRUE/FALSE diff --git a/doc/content/toolstack/features/HA/HA.start.svg b/doc/content/toolstack/features/HA/HA.start.svg new file mode 100644 index 00000000000..68292c4a4af --- /dev/null +++ b/doc/content/toolstack/features/HA/HA.start.svg @@ -0,0 +1,13 @@ +Xapi->Xhad: ha_start_daemon +Note over Xhad: Starts talking to other hosts\nto form or join the liveset +Xapi-->Xhad: ha_query_liveset +Xhad-->Xapi: Starting +Note over Xhad: liveset joined and\nexcluded flag cleared +Xhad->Xapi: OK +Xapi-->Xhad: ha_query_liveset +Xhad-->Xapi: Online +Note over Xapi: If starting HA and am a master\n already or if responding to a failure\nwhere the master may have failed. +Xapi->Xhad: ha_propose_master +Note over Xhad: at most one host can be a master +Xhad->Xapi: TRUE/FALSE +Created with Raphaƫl 2.1.0 \ No newline at end of file diff --git a/doc/content/toolstack/features/HA/ha.png b/doc/content/toolstack/features/HA/ha.png new file mode 100644 index 0000000000000000000000000000000000000000..c7661ca506871dc0b466daac1646603ab3fdacee GIT binary patch literal 50021 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 hfk}v=sg + + + + + xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + 694 + + + + xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + xxx.xxx.xxx.xx1 + + + + xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + xxx.xxx.xxx.xx2 + + + + xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + xxx.xxx.xxx.xx3 + + + + + 4 + 30 + 4 + 30 + 30 + 45 + 90 + 90 + 60 + 10 + 1 + 30 + 30 + + + + + + + xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx2 + xapi1 + bond0 + /dev/statefiledevicename + + + + +``` + +The fields have the following meaning: + +- GenerationUUID: a UUID generated each time HA is reconfigured. This allows + xhad to tell an old host which failed; had been removed from the + configuration; repaired and then restarted that the world has changed + while it was away. +- UDPport: the port number to use for network heartbeats. It's important + to allow this traffic through the firewall and to make sure the same + port number is free on all hosts (beware of portmap services occasionally + binding to it). +- HostID: a UUID identifying a host in the pool. We would normally use + xapi's notion of a host uuid. +- IPaddress: any IP address on the remote host. We would normally use + xapi's notion of a management network. +- HeartbeatTimeout: if a heartbeat packet is not received for this many + seconds, then xhad considers the heartbeat to have failed. This is + the user-supplied "HA timeout" value, represented below as `T`. + `T` must be bigger than 10; we would normally use 60s. +- StateFileTimeout: if a storage update is not seen for a host for this + many seconds, then xhad considers the storage heartbeat to have failed. + We would normally use the same value as the HeartbeatTimeout `T`. +- HeartbeatInterval: interval between heartbeat packets sent. We would + normally use a value `2 <= t <= 6`, derived from the user-supplied + HA timeout via `t = (T + 10) / 10` +- StateFileInterval: interval betwen storage updates (also known as + "statefile updates"). This would normally be set to the same value as + HeartbeatInterval. +- HeartbeatWatchdogTimeout: If the host does not send a heartbeat for this + amount of time then the host self-fences via the Xen watchdog. We normally + set this to `T`. +- StateFileWatchdogTimeout: If the host does not update the statefile for + this amount of time then the host self-fences via the Xen watchdog. We + normally set this to `T+15`. +- BootJoinTimeout: When the host is booting and joining the liveset (i.e. + the cluster), consider the join a failure if it takes longer than this + amount of time. We would normally set this to `T+60`. +- EnableJoinTimeout: When the host is enabling HA for the first time, + consider the enable a failure if it takes longer than this amount of time. + We would normally set this to `T+60`. +- XapiHealthCheckInterval: Interval between "health checks" where we run + a script to check whether Xapi is responding or not. +- XapiHealthCheckTimeout: Number of seconds to wait before assuming that + Xapi has deadlocked during a "health check". +- XapiRestartAttempts: Number of Xapi restarts to attempt before concluding + Xapi has permanently failed. +- XapiRestartTimeout: Number of seconds to wait for a Xapi restart to + complete before concluding it has failed. +- XapiLicenseCheckTimeout: Number of seconds to wait for a Xapi license + check to complete before concluding that xhad should terminate. + +In addition to the config file, Xhad exposes a simple control API which +is exposed as scripts: + +- `ha_set_pool_state (Init | Invalid)`: sets the global pool state to "Init" (before starting + HA) or "Invalid" (causing all other daemons who can see the statefile to + shutdown) +- `ha_start_daemon`: if the pool state is "Init" then the daemon will + attempt to contact other daemons and enable HA. If the pool state is + "Active" then the host will attempt to join the existing liveset. +- `ha_query_liveset`: returns the current state of the cluster. +- `ha_propose_master`: returns whether the current node has been + elected pool master. +- `ha_stop_daemon`: shuts down the xhad on the local host. Note this + will not disarm the Xen watchdog by itself. +- `ha_disarm_fencing`: disables fencing on the local host. +- `ha_set_excluded`: when a host is being shutdown cleanly, record the + fact that the VMs have all been shutdown so that this host can be ignored + in future cluster membership calculations. + +Fencing +------- + +Xhad continuously monitors whether the host should remain alive, or if +it should self-fence. There are two "survival rules" which will keep a host +alive; if neither rule applies (or if xhad crashes or deadlocks) then the +host will fence. The rules are: + +1. Xapi is running; the storage heartbeats are visible; this host is a + member of the "best" partition (as seen through the storage heartbeats) +2. Xapi is running; the storage is inaccessible; all hosts which should + be running (i.e. not those "excluded" by being cleanly shutdown) are + online and have also lost storage access (as seen through the network + heartbeats). + +where the "best" partition is the largest one if that is unique, or if there +are multiple partitions of the same size then the one containing the lowest +host uuid is considered best. + +The first survival rule is the "normal" case. The second rule exists only +to prevent the storage from becoming a single point of failure: all hosts +can remain alive until the storage is repaired. Note that if a host has +failed and has not yet been repaired, then the storage becomes a single +point of failure for the degraded pool. HA removes single point of failures, +but multiple failures can still cause problems. It is important to fix +failures properly after HA has worked around them. + + +xapi +==== + +[Xapi](https://github.com/xapi-project/xen-api) is responsible for + +- exposing an interface for setting HA policy +- creating VDIs (disks) on shared storage for heartbeating and storing + the pool database +- arranging for these disks to be attached on host boot, before the "SRmaster" + is online +- configuring and managing the `xhad` heartbeating daemon + +The HA policy APIs include + +- methods to determine whether a VM is *agile* i.e. can be restarted in + principle on any host after a failure +- planning for a user-specified number of host failures and enforcing + access control +- restarting failed *protected* VMs in policy order + +The HA policy settings are stored in the Pool database which is written +(synchronously) +to a VDI in the same SR that's being used for heartbeating. This ensures +that the database can be recovered after a host fails and the VMs are +recovered. + +Xapi stores 2 settings in its local database: + +- *ha_disable_failover_actions*: this is set to false when we want nodes + to be able to recover VMs -- this is the normal case. It is set to true + during the HA disable process to prevent a split-brain forming while + HA is only partially enabled. +- *ha_armed*: this is set to true to tell Xapi to start `Xhad` during + host startup and wait to join the liveset. + +Disks on shared storage +----------------------- + +The regular disk APIs for creating, destroying, attaching, detaching (etc) +disks need the `SRmaster` (usually but not always the Pool master) to be +online to allow the disks to be locked. The `SRmaster` cannot be brought +online until the host has joined the liveset. Therefore we have a +cyclic dependency: joining the liveset needs the statefile disk to be attached +but attaching a disk requires being a member of the liveset already. + +The dependency is broken by adding an explicit "unlocked" attach storage +API called `VDI_ATTACH_FROM_CONFIG`. Xapi uses the `VDI_GENERATE_CONFIG` API +during the HA enable operation and stores away the result. When the system +boots the `VDI_ATTACH_FROM_CONFIG` is able to attach the disk without the +SRmaster. + +The role of Host.enabled +------------------------ + +The `Host.enabled` flag is used to mean, "this host is ready to start VMs and +should be included in failure planning". +The VM restart planner assumes for simplicity that all *protected* VMs can +be started anywhere; therefore all involved networks and storage must be +*properly shared*. +If a host with an unplugged `PBD` were to become enabled then the corresponding +`SR` would cease to be *properly shared*, all the VMs would cease to be +*agile* and the VM restart logic would fail. + +To ensure the VM restart logic always works, great care is taken to make +sure that Hosts may only become enabled when their networks and storage are +properly configured. This is achieved by: + +- when the master boots and initialises its database it sets all Hosts to + dead and disabled and then signals the HA background thread + ([signal_database_state_valid](https://github.com/xapi-project/xen-api/blob/0bbd4f5ac5fe46f9e982e5d5587ac56ed8427295/ocaml/xapi/xapi_ha.ml#L627)) + to wake up from sleep and + start processing liveset information (and potentially setting hosts to live) +- when a slave calls + [Pool.hello](https://github.com/xapi-project/xen-api/blob/0bbd4f5ac5fe46f9e982e5d5587ac56ed8427295/ocaml/xapi/xapi_pool.ml#L1019) + (i.e. after the slave has rebooted), + the master sets it to disabled, allowing it a grace period to plug in its + storage; +- when a host (master or slave) successfully plugs in its networking and + storage it calls + [consider_enabling_host](https://github.com/xapi-project/xen-api/blob/0bbd4f5ac5fe46f9e982e5d5587ac56ed8427295/ocaml/xapi/xapi_host_helpers.ml#L193) + which checks that the + preconditions are met and then sets the host to enabled; and +- when a slave notices its database connection to the master restart + (i.e. after the master `xapi` has just restarted) it calls + `consider_enabling_host}` + +The steady-state +---------------- + +When HA is enabled and all hosts are running normally then each calls +`ha_query_liveset` every 10s. + +Slaves check to see if the host they believe is the master is alive and has +the master lock. If another node has become master then the slave will +rewrite its `pool.conf` and restart. If no node is the master then the +slave will call +[on_master_failure](https://github.com/xapi-project/xen-api/blob/0bbd4f5ac5fe46f9e982e5d5587ac56ed8427295/ocaml/xapi/xapi_ha.ml#L129), +proposing itself and, if it is rejected, +checking the liveset to see which node acquired the lock. + +The master monitors the liveset and updates the `Host_metrics.live` flag +of every host to reflect the liveset value. For every host which is not in +the liveset (i.e. has fenced) it enumerates all resident VMs and marks them +as `Halted`. For each protected VM which is not running, the master computes +a VM restart plan and attempts to execute it. If the plan fails then a +best-effort `VM.start` call is attempted. Finally an alert is generated if +the VM could not be restarted. + +Note that XenAPI heartbeats are still sent when HA is enabled, even though +they are not used to drive the values of the `Host_metrics.live` field. +Note further that, when a host is being shutdown, the host is immediately +marked as dead and its host reference is added to a list used to prevent the +`Host_metrics.live` being accidentally reset back to live again by the +asynchronous liveset query. The Host reference is removed from the list when +the host restarts and calls `Pool.hello`. + +Planning and overcommit +----------------------- + +The VM failover planning code is sub-divided into two pieces, stored in +separate files: + +- [binpack.ml](https://github.com/xapi-project/xen-api/blob/0bbd4f5ac5fe46f9e982e5d5587ac56ed8427295/ocaml/xapi/binpack.ml): contains two algorithms for packing items of different sizes + (i.e. VMs) into bins of different sizes (i.e. Hosts); and +- [xapi_ha_vm_failover.ml](https://github.com/xapi-project/xen-api/blob/0bbd4f5ac5fe46f9e982e5d5587ac56ed8427295/ocaml/xapi/xapi_ha_vm_failover.ml): interfaces between the Pool database and the + binpacker; also performs counterfactual reasoning for overcommit protection. + +The input to the binpacking algorithms are configuration values which +represent an abstract view of the Pool: + +```ocaml +type ('a, 'b) configuration = { + hosts: ('a * int64) list; (** a list of live hosts and free memory *) + vms: ('b * int64) list; (** a list of VMs and their memory requirements *) + placement: ('b * 'a) list; (** current VM locations *) + total_hosts: int; (** total number of hosts in the pool 'n' *) + num_failures: int; (** number of failures to tolerate 'r' *) +} +``` +Note that: + +- the memory required by the VMs listed in `placement` has already been + substracted from the total memory of the hosts; it doesn't need to be + subtracted again. +- the free memory of each host has already had per-host miscellaneous + overheads subtracted from it, including that used by unprotected VMs, + which do not appear in the VM list. +- the total number of hosts in the pool (`total_hosts`) is a constant for + any particular invocation of HA. +- the number of failures to tolerate (`num_failures`) is the user-settable + value from the XenAPI `Pool.ha_host_failures_to_tolerate`. + + +There are two algorithms which satisfy the interface: + +```ocaml +sig + plan_always_possible: ('a, 'b) configuration -> bool; + get_specific_plan: ('a, 'b) configuration -> 'b list -> ('b * 'a) list +end +``` + +The function `get_specific_plan` takes a configuration and a list of Hosts +which have failed. It returns a VM restart plan represented as a VM to Host +association list. This is the function called by the +background HA VM restart thread on the master. + +The function `plan_always_possible` returns true if every sequence of Host +failures of length +`num_failures` (irrespective of whether all hosts failed at once, or in +multiple separate episodes) +would result in calls to `get_specific_plan` which would allow all protected +VMs to be restarted. +This function is heavily used by the overcommit protection logic as well as code in XenCenter which aims to +maximise failover capacity using the counterfactual reasoning APIs: + +```ocaml +Pool.ha_compute_max_host_failures_to_tolerate +Pool.ha_compute_hypothetical_max_host_failures_to_tolerate +``` + +There are two binpacking algorithms: the more detailed but expensive +algorithmm is used for smaller/less +complicated pool configurations while the less detailed, cheaper algorithm +is used for the rest. The +choice between algorithms is based only on `total_hosts` (`n`) and +`num_failures` (`r`). +Note that the choice of algorithm will only change if the number of Pool +hosts is varied (requiring HA to be disabled and then enabled) or if the +user requests a new `num_failures` target to plan for. + +The expensive algorithm uses an exchaustive search with a +"biggest-fit-decreasing" strategy that +takes the biggest VMs first and allocates them to the biggest remaining Host. +The implementation keeps the VMs and Hosts as sorted lists throughout. +There are a number of transformations to the input configuration which are +guaranteed to preserve the existence of a VM to host allocation (even if +the actual allocation is different). These transformations which are safe +are: + +- VMs may be removed from the list +- VMs may have their memory requirements reduced +- Hosts may be added +- Hosts may have additional memory added. + +The cheaper algorithm is used for larger Pools where the state space to +search is too large. It uses the same "biggest-fit-decreasing" strategy +with the following simplifying approximations: + +- every VM that fails is as big as the biggest +- the number of VMs which fail due to a single Host failure is always the + maximum possible (even if these are all very small VMs) +- the largest and most capable Hosts fail + +An informal argument that these approximations are safe is as follows: +if the maximum *number* of VMs fail, each of which is size of the largest +and we can find a restart plan using only the smaller hosts then any real +failure: + +- can never result in the failure of more VMs; +- can never result in the failure of bigger VMs; and +- can never result in less host capacity remaining. + +Therefore we can take this *almost-certainly-worse-than-worst-case* failure +plan and: + +- replace the remaining hosts in the worst case plan with the real remaining + hosts, which will be the same size or larger; and +- replace the failed VMs in the worst case plan with the real failed VMs, + which will be fewer or the same in number and smaller or the same in size. + +Note that this strategy will perform best when each host has the same number +of VMs on it and when all VMs are approximately the same size. If one very big +VM exists and a lot of smaller VMs then it will probably fail to find a plan. +It is more tolerant of differing amounts of free host memory. + +Overcommit protection +--------------------- + +Overcommit protection blocks operations which would prevent the Pool being +able to restart *protected* VMs after host failure. +The Pool may become unable to restart protected VMs in two general ways: +(i) by running out of resource i.e. host memory; and (ii) by altering host +configuration in such a way that VMs cannot be started (or the planner +thinks that VMs cannot be started). + +API calls which would change the amount of host memory currently in use +(`VM.start`, `VM.resume`, `VM.migrate` etc) +have been modified to call the planning functions supplying special +"configuration change" parameters. +Configuration change values represent the proposed operation and have type + +```ocaml +type configuration_change = { + (** existing VMs which are leaving *) + old_vms_leaving: (API.ref_host * (API.ref_VM * API.vM_t)) list; + (** existing VMs which are arriving *) + old_vms_arriving: (API.ref_host * (API.ref_VM * API.vM_t)) list; + (** hosts to pretend to disable *) + hosts_to_disable: API.ref_host list; + (** new number of failures to consider *) + num_failures: int option; + (** new VMs to restart *) + new_vms_to_protect: API.ref_VM list; +} +``` + +A VM migration will be represented by saying the VM is "leaving" one host and +"arriving" at another. A VM start or resume will be represented by saying the +VM is "arriving" on a host. + + +Note that no attempt is made to integrate the overcommit protection with the +general `VM.start` host chooser as this would be quite expensive. + +Note that the overcommit protection calls are written as `asserts` called +within the message forwarder in the master, holding the main forwarding lock. + +API calls which would change the system configuration in such a way as to +prevent the HA restart planner being able to guarantee to restart protected +VMs are also blocked. These calls include: + +- `VBD.create`: where the disk is not in a *properly shared* SR +- `VBD.insert`: where the CDROM is local to a host +- `VIF.create`: where the network is not *properly shared* +- `PIF.unplug`: when the network would cease to be *properly shared* +- `PBD.unplug`: when the storage would cease to be *properly shared* +- `Host.enable`: when some network or storage would cease to be + *properly shared* (e.g. if this host had a broken storage configuration) + + +xen +=== + +The Xen hypervisor has per-domain watchdog counters which, when enabled, +decrement as time passes and can be reset from a hypercall from the domain. +If the domain fails to make the hypercall and the timer reaches zero then +the domain is immediately shutdown with reason reboot. We configure Xen +to reboot the host when domain 0 enters this state. + +High-level operations +===================== + + +Enabling HA +----------- + +Before HA can be enabled the admin must take care to configure the +environment properly. In particular: + +- NIC bonds should be available for network heartbeats; +- multipath should be configured for the storage heartbeats; +- all hosts should be online and fully-booted. + +The XenAPI client can request a specific shared SR to be used for +storage heartbeats, otherwise Xapi will use the Pool's default SR. +Xapi will use `VDI_GENERATE_CONFIG` to ensure the disk will be attached +automatically on system boot before the liveset has been joined. + +Note that extra effort is made to re-use any existing heartbeat VDIS +so that + +- if HA is disabled with some hosts offline, when they are rebooted they + stand a higher chance of seeing a well-formed statefile with an explicit + *invalid* state. If the VDIs were destroyed on HA disable then hosts which + boot up later would fail to attach the disk and it would be harder to + distinguish between a temporary storage failure and a permanent HA disable. +- the heartbeat SR can be created on expensive low-latency high-reliability + storage and made as small as possible (to minimise infrastructure cost), + safe in the knowledge that if HA enables successfully once, it won't run + out of space and fail to enable in the future. + +The Xapi-to-Xapi communication looks as follows: + +![Configuring HA around the Pool](HA.configure.svg) + +The Xapi Pool master calls `Host.ha_join_liveset` on all hosts in the +pool simultaneously. Each host +runs the `ha_start_daemon` script +which starts Xhad. Each Xhad starts exchanging heartbeats over the network +and storage defined in the `xhad.conf`. + +Joining a liveset +----------------- + +![Starting up a host](HA.start.svg) + +The Xhad instances exchange heartbeats and decide which hosts are in +the "liveset" and which have been fenced. + +After joining the liveset, each host clears +the "excluded" flag which would have +been set if the host had been shutdown cleanly before -- this is only +needed when a host is shutdown cleanly and then restarted. + +Xapi periodically queries the state of xhad via the `ha_query_liveset` +command. The state will be `Starting` until the liveset is fully +formed at which point the state will be `Online`. + +When the `ha_start_daemon` script returns then Xapi will decide +whether to stand for master election or not. Initially when HA is being +enabled and there is a master already, this node will be expected to +stand unopposed. Later when HA notices that the master host has been +fenced, all remaining hosts will stand for election and one of them will +be chosen. + +Shutting down a host +-------------------- + +![Shutting down a host](HA.shutdown.svg) + +When a host is to be shutdown cleanly, it can be safely "excluded" +from the pool such that a future failure of the storage heartbeat will +not cause all pool hosts to self-fence (see survival rule 2 above). +When a host is "excluded" all other hosts know that the host does not +consider itself a master and has no resources locked i.e. no VMs are +running on it. An excluded host will never allow itself to form part +of a "split brain". + +Once a host has given up its master role and shutdown any VMs, it is safe +to disable fencing with `ha_disarm_fencing` and stop xhad with +`ha_stop_daemon`. Once the daemon has been stopped the "excluded" +bit can be set in the statefile via `ha_set_excluded` and the +host safely rebooted. + +Restarting a host +----------------- + +When a host restarts after a failure Xapi notices that *ha_armed* is +set in the local database. Xapi + +- runs the `attach-static-vdis` script to attach the statefile and + database VDIs. This can fail if the storage is inaccessible; Xapi will + retry until it succeeds. +- runs the ha_start_daemon to join the liveset, or determine that HA + has been cleanly disabled (via setting the state to *Invalid*). + +In the special case where Xhad fails to access the statefile and the +host used to be a slave then Xapi will try to contact the previous master +and find out + +- who the new master is; +- whether HA is enabled on the Pool or not. + +If Xapi can confirm that HA was disabled then it will disarm itself and +join the new master. Otherwise it will keep waiting for the statefile +to recover. + +In the special case where the statefile has been destroyed and cannot +be recovered, there is an emergency HA disable API the admin can use to +assert that HA really has been disabled, and it's not simply a connectivity +problem. Obviously this API should only be used if the admin is totally +sure that HA has been disabled. + +Disabling HA +------------ + +There are 2 methods of disabling HA: one for the "normal" case when the +statefile is available; and the other for the "emergency" case when the +statefile has failed and can't be recovered. + +Disabling HA cleanly +-------------------- + +![Disabling HA cleanly](HA.disable.clean.svg) + +HA can be shutdown cleanly when the statefile is working i.e. when hosts +are alive because of survival rule 1. First the master Xapi tells the local +Xhad to mark the pool state as "invalid" using `ha_set_pool_state`. +Every xhad instance will notice this state change the next time it performs +a storage heartbeat. The Xhad instances will shutdown and Xapi will notice +that HA has been disabled the next time it attempts to query the liveset. + +If a host loses access to the statefile (or if none of the hosts have +access to the statefile) then HA can be disabled uncleanly. + +Disabling HA uncleanly +---------------------- + +The Xapi master first calls `Host.ha_disable_failover_actions` on each host +which sets `ha_disable_failover_decisions` in the lcoal database. This +prevents the node rebooting, gaining statefile access, acquiring the +master lock and restarting VMs when other hosts have disabled their +fencing (i.e. a "split brain"). + +![Disabling HA uncleanly](HA.disable.unclean.svg) + +Once the master is sure that no host will suddenly start recovering VMs +it is safe to call `Host.ha_disarm_fencing` which runs the script +`ha_disarm_fencing` and then shuts down the Xhad with `ha_stop_daemon`. + +Add a host to the pool +---------------------- + +We assume that adding a host to the pool is an operation the admin will +perform manually, so it is acceptable to disable HA for the duration +and to re-enable it afterwards. If a failure happens during this operation +then the admin will take care of it by hand. diff --git a/doc/content/toolstack/features/VGPU/index.md b/doc/content/toolstack/features/VGPU/index.md new file mode 100644 index 00000000000..83c5ea41fac --- /dev/null +++ b/doc/content/toolstack/features/VGPU/index.md @@ -0,0 +1,190 @@ ++++ +title = "vGPU" ++++ + +XenServer has supported passthrough for GPU devices since XenServer 6.0. Since +the advent of NVIDIA's vGPU-capable GRID K1/K2 cards it has been possible to +carve up a GPU into smaller pieces yielding a more scalable solution to +boosting graphics performance within virtual machines. + +The K1 has four GK104 GPUs and the K2 two GK107 GPUs. Each of these will be exposed through Xapi so a host with a single K1 card will have access to four independent PGPUs. + +Each of the GPUs can then be subdivided into vGPUs. For each type of PGPU, +there are a few options of vGPU type which consume different amounts of the +PGPU. For example, K1 and K2 cards can currently be configured in the following +ways: + +![Possible VGX configurations](vgx-configs.png) + +Note, this diagram is not to scale, the PGPU resource required by each +vGPU type is as follows: + +| vGPU type | PGPU kind | vGPUs / PGPU | +| --------- | --------- | ------------ | +| k100 | GK104 | 8 | +| k140Q | GK104 | 4 | +| k200 | GK107 | 8 | +| k240Q | GK107 | 4 | +| k260Q | GK107 | 2 | + +Currently each physical GPU (PGPU) only supports *homogeneous vGPU +configurations* but different configurations are supported on different PGPUs +across a single K1/K2 card. This means that, for example, a host with a K1 card +can run 64 VMs with k100 vGPUs (8 per PGPU). + +## XenServer's vGPU architecture +A new display type has been added to the device model: + +```udiff +@@ -4519,6 +4522,7 @@ static const QEMUOption qemu_options[] = + + /* Xen tree options: */ + { "std-vga", 0, QEMU_OPTION_std_vga }, ++ { "vgpu", 0, QEMU_OPTION_vgpu }, + { "videoram", HAS_ARG, QEMU_OPTION_videoram }, + { "d", HAS_ARG, QEMU_OPTION_domid }, /* deprecated; for xend compatibility */ + { "domid", HAS_ARG, QEMU_OPTION_domid }, +``` + +With this in place, `qemu` can now be started using a new option that will +enable it to communicate with a new display emulator, `vgpu` to expose the +graphics device to the guest. The `vgpu` binary is responsible for handling the +VGX-capable GPU and, once it has been successfully passed through, the in-guest +drivers can be installed in the same way as when it detects new hardware. + +The diagram below shows the relevant parts of the architecture for this +project. + +![XenServer's vGPU architecture](vgpu-arch.png) + +### Relevant code +* In Xenopsd: [Xenops_server_xen][1] is where +Xenopsd gets the vGPU information from the values passed from Xapi; +* In Xenopsd: [Device.__start][2] is where the `vgpu` process is started, if +necessary, before Qemu. + +## Xapi's API and data model + +A lot of work has gone into the toolstack to handle the creation and management +of VMs with vGPUs. We revised our data model, introducing a semantic link +between `VGPU` and `PGPU` objects to help with utilisation tracking; we +maintained the `GPU_group` concept as a pool-wide abstraction of PGPUs +available for VMs; and we added **`VGPU_types`** which are configurations for +`VGPU` objects. + +![Xapi's vGPU datamodel](vgpu-datamodel.png) + +**Aside:** The VGPU type in Xapi's data model predates this feature and was +synonymous with GPU-passthrough. A VGPU is simply a display device assigned to +a VM which may be a vGPU (this feature) or a whole GPU (a VGPU of type +_passthrough_). + +**`VGPU_types`** can be enabled/disabled on a **per-PGPU basis** allowing for +reservation of particular PGPUs for certain workloads. VGPUs are allocated on +PGPUs within their GPU group in either a _depth-first_ or _breadth-first_ +manner, which is configurable on a per-group basis. + +**`VGPU_types`** are created by xapi at startup depending on the available +hardware and config files present in dom0. They exist in the pool database, and +a primary key is used to avoid duplication. In XenServer 6.x the tuple of +`(vendor_name, model_name)` was used as the primary key, however this was not +ideal as these values are subject to change. XenServer 7.0 switched to a +[new primary key]({{site.baseurl}}/xapi/futures/vgpu-type-identifiers.html) +generated from static metadata, falling back to the old method for backwards +compatibility. + +A **`VGPU_type`** will be garbage collected when there is no VGPU of that type +and there is no hardware which supports that type. On VM import, all VGPUs and +VGPU_types will be created if necessary - if this results in the creation of a +new VGPU_type then the VM will not be usable until the required hardware and +drivers are installed. + +### Relevant code +* In Xapi: [Xapi_vgpu_type][3] contains the type definitions and parsing logic +for vGPUs; +* In Xapi: [Xapi_pgpu_helpers][4] defines the functions used to allocate vGPUs +on PGPUs. + +## Xapi <-> Xenopsd interface + +In XenServer 6.x, all VGPU config was added to the VM's `platform` field at +startup, and this information was used by xenopsd to start the display emulator. +See the relevant code [here][5]. + +In XenServer 7.0, to facilitate support of VGPU on Intel hardware in parallel +with the existing NVIDIA support, VGPUs were made first-class objects in the +xapi-xenopsd interface. The interface is described +[here]({{site.baseurl}}/features/futures/gpu-support-evolution.html). + +## VM startup + +On the pool master: + +* Assuming no WLB, all VM.start tasks pass through + [Xapi_vm_helpers.choose_host_for_vm_no_wlb][6]. If the VM has a vGPU, the list + of all hosts in the pool is split into a list of lists, where the first list + is the most optimal in terms of the GPU group's allocation mode and the PGPU + availability on each host. +* Each list of hosts in turn is passed to [Xapi_vm_placement.select_host][7], + which checks storage, network and memory availability, until a suitable host + is found. +* Once a host has been chosen, [allocate_vm_to_host][8] will set the + `VM.scheduled_to_be_resident_on` and `VGPU.scheduled_to_be_resident_on` + fields. + +The task is then ready to be forwarded to the host on which the VM will start: + +* If the VM has a VGPU, the startup task is wrapped in + [Xapi_gpumon.with_gpumon_stopped][9]. This makes sure that the NVIDIA driver + is not in use so can be loaded or unloaded from physical GPUs as required. +* The VM metadata, including VGPU metadata, is passed to xenopsd. The creation + of the VGPU metadata is done by [vgpus_of_vm][10]. Note that at this point + passthrough VGPUs are represented by the PCI device type, and metadata is + generated by [pcis_of_vm][11]. +* As part of starting up the VM, xenopsd should report a [VGPU event][12] or a + [PCI event][13], which xapi will use to indicate that the xapi VGPU object can + be marked as `currently_attached`. + +## Usage + +To create a VGPU of a given type you can use `vgpu-create`: + +```bash +$ xe vgpu-create vm-uuid=... gpu-group-uuid=... vgpu-type-uuid=... +``` + +To see a list of VGPU types available for use on your XenServer, run the +following command. Note: these will only be populated if you have installed the +relevant NVIDIA RPMs and if there is hardware installed on that host supported +each type. Using `params=all` will display more information such as the maximum +number of heads supported by that VGPU type and which PGPUs have this type +enabled and supported. + +```bash +$ xe vgpu-type-list [params=all] +``` + +To access the new and relevant parameters on a PGPU (i.e. +`supported_VGPU_types`, `enabled_VGPU_types`, `resident_VGPUs`) you can use +`pgpu-param-get` with `param-name=supported-vgpu-types` +`param-name=enabled-vgpu-types` and `param-name=resident-vgpus` respectively. +Or, alternatively, you can use the following command to list all the parameters +for the PGPU. You can get the types supported or enabled for a given PGPU: + +```bash +$ xe pgpu-list uuid=... params=all +``` + +[1]: https://github.com/xapi-project/xenopsd/blob/8d06778db2/xc/xenops_server_xen.ml#L1107-L1113 +[2]: https://github.com/xapi-project/xenopsd/blob/8d06778db2/xc/device.ml#L1696-L1708 +[3]: https://github.com/xapi-project/xen-api/blob/8a71a4aaaa/ocaml/xapi/xapi_vgpu_type.ml +[4]: https://github.com/xapi-project/xen-api/blob/8a71a4aaaa/ocaml/xapi/xapi_pgpu_helpers.mli +[5]: https://github.com/xenserver/xen-api/blob/50bce20546/ocaml/xapi/vgpuops.ml#L149-L165 +[6]: https://github.com/xapi-project/xen-api/blob/8a71a4aaaa/ocaml/xapi/xapi_vm_helpers.ml#L618-L651 +[7]: https://github.com/xapi-project/xen-api/blob/8a71a4aaaa/ocaml/xapi/xapi_vm_placement.ml#L81-L97 +[8]: https://github.com/xapi-project/xen-api/blob/8a71a4aaaa/ocaml/xapi/message_forwarding.ml#L811-L828 +[9]: https://github.com/xapi-project/xen-api/blob/8a71a4aaaa/ocaml/xapi/xapi_vm.ml#L214-L220 +[10]: https://github.com/xapi-project/xen-api/blob/8a71a4aaaa/ocaml/xapi/xapi_xenops.ml#L698-L733 +[11]: https://github.com/xapi-project/xen-api/blob/8a71a4aaaa/ocaml/xapi/xapi_xenops.ml#L598-618 +[12]: https://github.com/xapi-project/xen-api/blob/8a71a4aaaa/ocaml/xapi/xapi_xenops.ml#L1841-L1854 +[13]: https://github.com/xapi-project/xen-api/blob/8a71a4aaaa/ocaml/xapi/xapi_xenops.ml#L1777-L1801 diff --git a/doc/content/toolstack/features/VGPU/vgpu-arch.png b/doc/content/toolstack/features/VGPU/vgpu-arch.png new file mode 100644 index 0000000000000000000000000000000000000000..b83a8ae2be615d860bf1d0184962dfc107f7b7b8 GIT binary patch literal 18038 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
QQml;k#xfxR_9GxVxv*Uw(FNoz>P{+p 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 literal 0 HcmV?d00001 diff --git a/doc/content/toolstack/features/VGPU/vgx-configs.png b/doc/content/toolstack/features/VGPU/vgx-configs.png new file mode 100644 index 0000000000000000000000000000000000000000..4defcdb6218004ed8f38645d1ed12c55565f60d3 GIT binary patch literal 50018 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 z -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 X|Ga_W<*h)xfuyT#pjD({6Y~E6hCfrn literal 0 HcmV?d00001 diff --git a/doc/content/toolstack/features/XSM/index.md b/doc/content/toolstack/features/XSM/index.md new file mode 100644 index 00000000000..0fee8622539 --- /dev/null +++ b/doc/content/toolstack/features/XSM/index.md @@ -0,0 +1,24 @@ ++++ +title = "Xapi Storage Migration" ++++ + +The Xapi Storage Migration (XSM) also known as "Storage Motion" allows + +- a running VM to be migrated within a pool, between different hosts + and different storage simultaneously; +- a running VM to be migrated to another pool; +- a disk attached to a running VM to be moved to another SR. + +The following diagram shows how XSM works at a high level: + +![Xapi Storage Migration](xsm.png) + +The slowest part of a storage migration is migrating the storage, since virtual +disks can be very large. Xapi starts by taking a snapshot and copying that to +the destination as a background task. Before the datapath connecting the VM +to the disk is re-established, xapi tells `tapdisk` to start mirroring all +writes to a remote `tapdisk` over NBD. From this point on all VM disk writes +are written to both the old and the new disk. +When the background snapshot copy is complete, xapi can migrate the VM memory +across. Once the VM memory image has been received, the destination VM is +complete and the original can be safely destroyed. diff --git a/doc/content/toolstack/features/XSM/xsm.png b/doc/content/toolstack/features/XSM/xsm.png new file mode 100644 index 0000000000000000000000000000000000000000..580a7342fcb0a68b88b9b3b5bb026a9dd8793ed9 GIT binary patch literal 58039 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 YFfckWFty|9_W%F@07*qoM6N<$f`i4J=Kufz literal 0 HcmV?d00001 diff --git a/doc/content/toolstack/features/_index.md b/doc/content/toolstack/features/_index.md new file mode 100644 index 00000000000..4ebf11cc3c3 --- /dev/null +++ b/doc/content/toolstack/features/_index.md @@ -0,0 +1,7 @@ ++++ +title = "Features" +weight = 50 ++++ + +{{% children %}} + diff --git a/doc/content/toolstack/features/snapshots/coalesce1.graffle b/doc/content/toolstack/features/snapshots/coalesce1.graffle new file mode 100644 index 0000000000000000000000000000000000000000..a854bea1354dfd9bae65ea47e0a3ce362017c88e GIT binary patch literal 3341 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
    F!dxkyJVq1QC$#?vMuQl9EO`{<;0WbI!f@ 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 literal 0 HcmV?d00001 diff --git a/doc/content/toolstack/features/snapshots/coalesce2.graffle b/doc/content/toolstack/features/snapshots/coalesce2.graffle new file mode 100644 index 0000000000000000000000000000000000000000..0543ecd9851cd1fe32d3a8dc38c105a453961a7c GIT binary patch literal 3297 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 literal 0 HcmV?d00001 diff --git a/doc/content/toolstack/features/snapshots/coalesce2.png b/doc/content/toolstack/features/snapshots/coalesce2.png new file mode 100644 index 0000000000000000000000000000000000000000..458b7138ff9ff9c0456067a2ac9e1f78a99db8b2 GIT binary patch literal 37038 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 HGim?;9XNRd literal 0 HcmV?d00001 diff --git a/doc/content/toolstack/features/snapshots/coalesce3.png b/doc/content/toolstack/features/snapshots/coalesce3.png new file mode 100644 index 0000000000000000000000000000000000000000..e3da83ae517b8fa2b98e23230bf601125264baae GIT binary patch literal 30523 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 literal 0 HcmV?d00001 diff --git a/doc/content/toolstack/features/snapshots/index.md b/doc/content/toolstack/features/snapshots/index.md new file mode 100644 index 00000000000..789f35fa1f6 --- /dev/null +++ b/doc/content/toolstack/features/snapshots/index.md @@ -0,0 +1,168 @@ ++++ +title = "Snapshots" ++++ + +Snapshots represent the state of a VM, or a disk (VDI) at a point in time. They can be used for: + +- backups (hourly, daily, weekly etc) +- experiments (take snapshot, try something, revert back again) +- golden images (install OS, get it just right, clone it 1000s of times) + +Read more about [the Snapshot APIs](../../xen-api/snapshots.html). + +Disk snapshots +============== + +Disks are represented in the XenAPI as VDI objects. Disk snapshots are represented +as VDI objects with the flag `is_a_snapshot` set to true. Snapshots are always +considered read-only, and should only be used for backup or cloning into new +disks. Disk snapshots have a lifetime independent of the disk they are a snapshot +of i.e. if someone deletes the original disk, the snapshots remain. This contrasts +with some storage arrays in which snapshots are "second class" objects which are +automatically deleted when the original disk is deleted. + +Disks are implemented in Xapi via "Storage Manager" (SM) plugins. The SM plugins +conform to an api (the SMAPI) which has operations including + +- vdi_create: make a fresh disk, full of zeroes +- vdi_snapshot: create a snapshot of a disk + + +File-based vhd implementation +============================= + +The existing "EXT" and "NFS" file-based Xapi SM plugins store disk data in +trees of .vhd files as in the following diagram: + +![Relationship between VDIs and vhd files](vhd-trees.png) + +From the XenAPI point of view, we have one current VDI and a set of snapshots, +each taken at a different point in time. These VDIs correspond to leaf vhds in +a tree stored on disk, where the non-leaf nodes contain all the shared blocks. + +The vhd files are always thinly-provisioned which means they only allocate new +blocks on an as-needed basis. The snapshot leaf vhd files only contain vhd +metadata and therefore are very small (a few KiB). The parent nodes containing +the shared blocks only contain the shared blocks. The current leaf initially +contains only the vhd metadata and therefore is very small (a few KiB) and will +only grow when the VM writes blocks. + +File-based vhd implementations are a good choice if a "gold image" snapshot +is going to be cloned lots of times. + +Block-based vhd implementation +============================== + +The existing "LVM", "LVMoISCSI" and "LVMoHBA" block-based Xapi SM plugins store +disk data in trees of .vhd files contained within LVM logical volumes: + +![Relationship between VDIs and LVs containing vhd data](lun-trees.png) + +Non-snapshot VDIs are always stored full size (a.k.a. thickly-provisioned). +When parent nodes are created they are automatically shrunk to the minimum size +needed to store the shared blocks. The LVs corresponding with snapshot VDIs +only contain vhd metadata and by default consume 8MiB. Note: this is different +to VDI.clones which are stored full size. + +Block-based vhd implementations are not a good choice if a "gold image" snapshot +is going to be cloned lots of times, since each clone will be stored full size. + +Hypothetical LUN implementation +=============================== + +A hypothetical Xapi SM plugin could use LUNs on an iSCSI storage array +as VDIs, and the array's custom control interface to implement the "snapshot" +operation: + +![Relationship between VDIs and LUNs on a hypothetical storage target](luns.png) + +From the XenAPI point of view, we have one current VDI and a set of snapshots, +each taken at a different point in time. These VDIs correspond to LUNs on the +same iSCSI target, and internally within the target these LUNs are comprised of +blocks from a large shared copy-on-write pool with support for dedup. + +Reverting disk snapshots +======================== + +There is no current way to revert in-place a disk to a snapshot, but it is +possible to create a writable disk by "cloning" a snapshot. + +VM snapshots +============ + +Let's say we have a VM, "VM1" that has 2 disks. Concentrating only +on the VM, VBDs and VDIs, we have the following structure: + +![VM objects](vm.png) + +When we take a snapshot, we first ask the storage backends to snapshot +all of the VDIs associated with the VM, producing new VDI objects. +Then we copy all of the metadata, producing a new 'snapshot' VM +object, complete with its own VBDs copied from the original, but now +pointing at the snapshot VDIs. We also copy the VIFs and VGPUs +but for now we will ignore those. + +This process leads to a set of objects that look like this: + +![VM and snapshot objects](vm-snapshot.png) + +We have fields that help navigate the new objects: ```VM.snapshot_of```, +and ```VDI.snapshot_of```. These, like you would expect, point to the +relevant other objects. + +Deleting VM snapshots +===================== + +When a snapshot is deleted Xapi calls the SM API `vdi_delete`. The Xapi SM +plugins which use vhd format data do not reclaim space immediately; instead +they mark the corresponding vhd leaf node as "hidden" and, at some point later, +run a garbage collector process. + +The garbage collector will first determine whether a "coalesce" should happen i.e. +whether any parent nodes have only one child i.e. the "shared" blocks are only +"shared" with one other node. In the following example the snapshot delete leaves +such a parent node and the coalesce process copies blocks from the redundant +parent's only child into the parent: + +![We coalesce parent blocks into grand parent nodes](coalesce1.png) + +Note that if the vhd data is being stored in LVM, then the parent node will +have had to be expanded to full size to accommodate the writes. Unfortunately +this means the act of reclaiming space actually consumes space itself, which +means it is important to never completely run out of space in such an SR. + +Once the blocks have been copied, we can now cut one of the parents out of the +tree by relinking its children into their grandparent: + +![Relink children into grand parent](coalesce2.png) + +Finally the garbage collector can remove unused vhd files / LVM LVs: + +![Clean up](coalesce3.png) + +Reverting VM snapshots +====================== + +The XenAPI call `VM.revert` overwrites the VM metadata with the snapshot VM +metadata, deletes the current VDIs and replaces them with clones of the +snapshot VDIs. Note there is no "vdi_revert" in the SMAPI. + +Revert implementation details +----------------------------- + +This is the process by which we revert a VM to a snapshot. The +first thing to notice is that there is some logic that is called +from [message_forwarding.ml](https://github.com/xapi-project/xen-api/blob/ce6d3f276f0a56ef57ebcf10f45b0f478fd70322/ocaml/xapi/message_forwarding.ml#L1528), +which uses some low-level database magic to turn the current VM +record into one that looks like the snapshot object. We then go +to the rest of the implementation in [xapi_vm_snapshot.ml](https://github.com/xapi-project/xen-api/blob/ce6d3f276f0a56ef57ebcf10f45b0f478fd70322/ocaml/xapi/xapi_vm_snapshot.ml#L403). +First, +we shut down the VM if it is currently running. Then, we revert +all of the [VBDs, VIFs and VGPUs](https://github.com/xapi-project/xen-api/blob/ce6d3f276f0a56ef57ebcf10f45b0f478fd70322/ocaml/xapi/xapi_vm_snapshot.ml#L270). +To revert the VBDs, we need to deal with the VDIs underneath them. +In order to create space, the first thing we do is [delete all of +the VDIs](https://github.com/xapi-project/xen-api/blob/ce6d3f276f0a56ef57ebcf10f45b0f478fd70322/ocaml/xapi/xapi_vm_snapshot.ml#L287) currently attached via VBDs to the VM. +We then _clone_ the disks from the snapshot. Note that there is +no SMAPI operation 'revert' currently - we simply clone from +the snapshot VDI. It's important to note that cloning +creates a _new_ VDI object: this is not the one we started with gone. diff --git a/doc/content/toolstack/features/snapshots/lun-trees.graffle b/doc/content/toolstack/features/snapshots/lun-trees.graffle new file mode 100644 index 0000000000000000000000000000000000000000..01403f9aede8edda700c24edc02db6a689a32ceb GIT binary patch literal 3659 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 literal 0 HcmV?d00001 diff --git a/doc/content/toolstack/features/snapshots/lun-trees.png b/doc/content/toolstack/features/snapshots/lun-trees.png new file mode 100644 index 0000000000000000000000000000000000000000..0e22963864ae8c5d6e6049cfcd7709566d306c1e GIT binary patch literal 49515 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 literal 0 HcmV?d00001 diff --git a/doc/content/toolstack/features/snapshots/vhd-trees.graffle b/doc/content/toolstack/features/snapshots/vhd-trees.graffle new file mode 100644 index 0000000000000000000000000000000000000000..f62ebce4eb53e502eddd31d833ea40c2f43bc678 GIT binary patch literal 3401 zcmV-P4Yu+hiwFP!000030PUSySKCMufS-q7q2*;ChKRnm#E{G(KoVw2U}8dca(vDl zA-6#jS#l&9!sO(?Z?$}pEy>t8W-;UD0c5NCqEda;)vao=`|H^7v@q+I+UXz1QuAYJ2N+^$!?FKvS(1hZe^`a zXr^ELM0eoZR^VqZHh$XutZrZI`B`wSj=fuz97Qelb$45T3nzmpQFrew3}uLT=EO(p&fUk;4+DOUHb%%UMF6=9V)TAJrEg_#@w|D z^qvsnGCn4;yFIMA--BKj@3sEwrP-+EEa|E3;rW-I|5>*fwV<``Rp5`r2A4h%(-P_M z+^84dzM(A(ec!UaIY?|-oQm(?Cwi;p_d_qO7Hz~~P_$Vpa&%D04^>LWwc8hKWVfLz zB!@ljpM)yo&&AoX)BW=YiFZ?UtLWIflkx6=K1Yfe9u)_D4W{Z-9Czk0hkY-)_R^Ci zxC{zI7^*VYGstSCPiioyqNmIq#@ z%3UD{^JfS@Lym>%4#PXdv3^GIQ|XiZ54`K3Wi|Xb%gQAVg0vfYw+-J5E6oCO z@MHNM>$x>LE?4j>2-Vqbw^G;xJ1@)T)^!m3y^e~qGJhj2l8PD!R+(xSQN!z`nU%;G zLxW=1b|gcXVk#Xh83jTRvR%YEava1c!2k@vgNd_cQ8dX;9Xtg+S6)}u;WN}ycBZ~& z)pCCvHfp59_@*lQUZug`swzFkW}!t%C+MuhvjSi{2*YvyiqrLgP9t;-(INU*UTgf4 zmRfhott_YR@k3p(boWYqm^@pUTrE*G;eD?9aIU zeTw((U-?I{_^PQ+Dt63c&x(7a`7EiUrS6rFhE{>?xy4 z45|jzg;5RTemvXUc;4IymDjeeuUZxuh>E<9dK7wH$L6lX2z9x12$KltWdz%taz+s+ zLQ={|PA_IpeW1mLUPJGq^jgD#HhmOOIpelN8RiHR%3Xmufa+k|aa<{oD=`u-W%+cH zJatZy;nZ-t5T{LnY|6e0AH^SV|<4 z1T!kuim+D@MX2HF{~v3oUY4mOGITxyoeRx6@iOVe4!2z_IT0L&KlqwXUtF#}P{Izg z2}}!wWE5e{BsX+Ec{&%LbCyH1p>3u?HkS81;tAP83dUVd2$l#@mx)@yjJp_YKX4au z7ig*O0%rZL10%E^odv>-PhF&{d6I>Rv^jSXXYhq^nPa?#@fP!Y3ku_l>o`(UA|&UI zG~VJaZ{aN9Ex7wQlk2)?V6#dacd^#)!Vq7XPLM^2UpQA~kq1e4m#%sNL;M;OKmDPs zA$~x-ScG`_I60+tr48|hc$1HMAL98U#EZwtN3APeTF~dj5Wm*Mn{3os#Ir?+=Z}+( zT35RCkbqP32yd;4H_528h^LDX&mJckwNjc@*7-R#WBfW3zsyurftU@$3kS1fh!7Y} zwk#?f8*J32%n|UNOZsm#5>Nd_3*5ZX$fTk!mWp}=W|Oo%U+v`YT!=6JQvPGTae=rt z1b+|^GKX;vvp~R-5nCsEaYC4j8SfJdOh0vE&5Ml;u?rI0>4r+bB`|-r(N6!BMsd>d zvVID=$q=7E6ka$(4ohSs=}78gAqaP+tc@xYz1U12+#KTI7^xvRqmMz{_s941}N1p{7JM(fP^XJ{Q}^%!C`=}@ZI?({Tkm9;Ma z5n3k>wadC(Wvz>UhSrI&rQUZ!2*EQHu?=4?!(nX8Pi+1Vlsa zx>3swwGXiIn4x7x$g{XJ8;{ovTC+FkA)ux1GV_LKW&Rpy*9=;-h4&#g?bD^cZhi)K zX3zebK|6gMG0^@9v~p?r`g3I58*0~WsHICxy06Q@spcxI%oB22o0p&~s@A_BBz{*E1oFpZ{0Px^nO9_mT!w_2`4?v9pEY|>PlAl*O1R&=AFZcd4PHmW7P{bJg<}P*0 zA%M=DTpa_z#sHQa1J+Ces{3VD#{iHqfQO$1Oojl|b;!yX0C9~0Jp3ep5B}q5@!Hqb zF#yLHz&r*}tnTIYy-tGG_(JTcz0ui5*Yly@qt^P%s>F6C?{BfnnwNa*{S_y*#Yc;1 zlYJfBulOd_r3&%-J=}fi$m^zO@f`BS)#q2$3tB2Yj{VPSRIv6&jY*#eX>d^($CPIB z1<6zIQjLtDe$B9N#vKsc2mUgZ%pv|CrMhQv1MYp%i_yAef6danRY}qEXcf1FyuR>R zyNCOd@4QY8J$W-0u8N<+$9cEkp9kt@rsy=Ig&xGcY`WR*MM1~QRK+MtJEZklA6!BF zHi!;_G%J}nc1kv#%QjTkOT3A9mJi=pj!N=j-p#}4GKi{uX~kKkGm-MLSg$-EtLQSj zsx&}Q|A)8^B9stTYA`QDRstx&ZOZ(@VhFhfklMjgFi;usB{^dS=Zk>FudQ>6hqu zNtSm*zmTOL?(O+ma6M17mlxK-gBSVgo@GBo!Iz#YW;1tO{fAT?Mp=;DrS|iA1J92^ z1oN2bW5Iqe(f`sk*JL$ruL;`^zjnO{VEePL;-V8{Y?_AtbKP0bwKT!pBp5D)tApTFaDwR-Wt zC)vCFdoA#SY=|Rl9IWhY|GhW3R1onkzl4LGqqBvJ3%I{9x8R>M|6kwz?>T?ZSAFT= z>HucJ*~(nb-qpexTG{Z zMEsrQKi`6B7Dg9j`|pwoqgSkQ&Lbg-BFRaLJ@Z7~`3RlEoV@LAwRruUF`I!FPyS$9 z9Jh+*%gIZrM~r$eN6oA*ziSX!6g|^pNZL(dp-rSoieph=U=fcz&lo;;>+#)lITdip z5O|Vt=q0o__x_3Hs|=_84Zq=2pJCHv`3^}G8qxp#ypmjk3l^tLzD0t@{r4w;E-r&q zHUJ`tMJ~u-GhLQsHJ;zcv*<&uUvHmeH(MuHq@I^+`@KrN#pl)MpKld%?dKbvXH3I! zAO7bi0l^Tg)x_ptF5Scpw4KFPI4#&)4em)~uR=5*1&mDJ@MNBTC~BgKEC{Vp32#Pvuf)UF>bkY~YD!s~R8 zMYH%>Jbk*SIL4^w1Bp1QeWvmzD#I`CNyvBZ%C`8Nugv#s|MzV<&{X4k0y-6LXad}P zu!YYu71ITE^<}oF%QIYMcx-22&0fcEjs34R^OZk7mWn1+YP`Sj-NE-VWm4EY6gqs=4#ckg-U=D$aS9(IVzV#9sZoE&%|16c;X5I6gISvBW6#QH%1`w)?#Ijz#!1uh^EXZ@)o+^t_d**z$ z96n$kD@2Da2oEr%$NqaV_%9x{D2A0;+Pi^Hh~MQdPmxY#wvo@XMpr9s@1VAG-;1Mo ztxtNN^{_GM|GYE|Sp9ydmMS zPs7ETEY=*S%&W7TO)hEqq+j3P7I^14IrlXQ_gnf5AN7{2-vb8cojG{LMKsw3L9HR7^_~5to`RTLcZT$sgH+Lv9vo^ zz}!{Ewbf1=G2zoGe(gxEl%t88hwxft%&&G%<;lT}TYQ38ge#wD%z!kHg;&bY`Z)htXxkxJ86lC79Z^9Px2=g$!alZ^Gb*F0 znzBxwBQX03C%dx+nph5Wf6X&66E_ov`6J?9MeF(DMvC9{MW3O^{F?RtJxmgs_phIQ38);RY>mIDbQ>JA z5H4M%UgY{{{P!TwV%PIPJCWYkj|xr;WgIUn&3pUrU<+pMZ!R={IokQIp|8j&Z*KNe z>OU4F6(F4ZISw9@fhLKUvwW>zYn^nTTu>)pC8MnSvAf1&{kqa;g{orvLalbQPrp}~ z2KyXOYC9iv6Ad7C9gAKK8k=-0Vq>$~EHu4x?ts!ue(OvCo92dAltTUX4U6|WD>Aye z$9dI}AWd8ZF{Z=9w6XsumOPv+{W{xG{Q&W_WHw_X)`le%F~xDu$ZRfhN+WvYTf9uz z@%~Je|3ZM;yQ3l_WvGp2FC^mLo5X)+c3-~mU0=m zY0l*Ttt1~*HE#W9y9YVd5-o>yg?b_ho)7K6og)D@8g}JUd^nn?S`0}OL0%Z-KkjkK z9~?WU@q81I(p?y6Cuwzkact2ZgzEJ{-Q{)pzaWgm1w4Y-Bd6HYX>7BJ`^b_-7P=^E z{QfsSQR;WX{+$&FOo^m{^3*>3nnrq%Va}>@6E0%w`&kI{3opwf`8|f4qTrVXGKk z&I=s|c}!@_-)smH2{uQZ^sIz0W;QW*r^Nqe5XJyrHkfmae9JPfyYL}hl)6OFztM}q z!01ENPE;uvrLi#yr8X%E1*!f_ADjnRntyD0ftL(Ns&@l}yvvj2hkp(I7I>uN#dls+ zG6XrJ;jgo~_#YWj{=MiP;-Z+G0&g)668|#>`PC<8|NQGd!U*?f&a>ADaw4&*rL0y; z-zEGpnl^nfyk>5r7HgL7m%lsZ)KUeXEQtMC-?(dVsM645*gH}irh6~=t7xZ zyogXAsLB-!zRQV-_8^RXyILkX-JPWu@Yq9Sd7G8@TZc~n*+3j4Sc>;lyUSi6ZqosO z{}z#5c7$TA6=e90i68B^-V#QnR#^=}%<*lb`0q3hP-<6lV2S=vKc#IOmN=19<;pI1D|oGbe4s z3U5R_&vH0j{gWQ|tBsEy5OE6-z4P)D4e%FzCFL!T5vi#6-e;Mp2TXJcbV_eAA3a4Y zqZIMeVK#0t@H*b2Ez$b)c75=J0?2aKzy9H#XBLs~K6&viPAx}T4y4ebW?X4+1@^-+AJLsX89y!2E}y!J z<=1;S_^2x?GGANZ2kLq6x+`^4;`Kk6OWB*L+hf>1H&T-lz)i;h4^-DgaHB+>mM zo$<$$O$Mf3)#Z~;VFqc5yuIG{x41akbY6+1&!1RLV$!x&m}RM-qf$s_9<@NE&FBOS zaq6#{7&%a+6NOJ^%u%*aB5-091d2!7$kWw;88}vYQW2UZxL*& z5a4$(={rto;)p@s*TsuUr=27Hy2gRBi-Fl@ljbb7qxI;!WyWO3I=pj}@-5b|60(%PdhoHfvzz4>l!&N)q%ah6R zLpY18b<|0Uv0r?n+qU&>7pr088Lqz8F*MnVS-E57iKEA3x4k*tmdiZ>P$Xe}no}0D z;A^1)j(fn=qJUF0fUe}e=!y6Potlttw$_`A5_2#h5uD$n%7oQ znQ2?UcLQo$>JX^?;y!?twx<)6K#2r>+GR`;%Vn^E3Feb2}jjAY9_r3Ovdj~8H)2Tz z(#DgW@6`D8%857Em%aTxHvc?KCL%ywiM81a&ya9wK%)y(=@VQa71x%VV|i;|sbgKs zMu=&bUqy0->5$$VV08BocMYAj|Dx3JSmds((O+j>0c~&~tS(s*dy3blm7!ysSOmH4 z1f{P2a!wK>)AdUc)Nq)c4g`5hE2g%hC>{XCWMrX+_$rLQymZ9Z7{m2Fe*Tf-jEOhr=SD zQv(jQjb7#b97s{QeZZupDE)@iY9siI*#1KE?lw*Zw#Ze5FIl!be5w7!ZHK^Z`&0do z>C^p1Hn!HQsxk^UQl~E5u`G#um;65m5R53ucS!{aeut0M(A zTMQ8TlKHkz)zc~@*X;KqZ+#6JPMfy-zTWlYAg9}%|Ds)ST!Q=arGMcgREWq5_J{3X zw;(ySwV%eo!6myht#0T>7~!$iB?nr{r0YnQ{11caLY}{mB(R$^q3!#S$SWgVug)s`33~d1;Qp1yj0cOM-EM<#`nrcLT-f4 zmV(vFJI!XREEM$P!ZG~NKI1F%wzr5Fz;lFVK4NBL`!A8DI@<5eeZC;MAY_%LJj3N2 znv1<@y4?HXjw{XnVS5R;(fkqQ^7eZ1_WLOjn~}j(nW4>MY@JwFj(r96_P}Cge}&{C zs)ANOTP-k{<(htQUoPZ=ujgyLRp&00v)?an| zXB}EUNtxt&R^jmCu%C^k^Sc!FiJMac`mr`%~@eMr(wH^iTibZ z;|?O$+NmDmADAoiSA-FK{ETJ#y~ax8lApP4{obAape006=1VsG)Ijyy_1W!owWZ3n z`M062J9x0b5P%rbh4i()e`-6E$wCkz6NPQVgCBz5!pz=$UjZHAR4z4R$%T%N%3SiK zS)s;XXCx_It$Eayb?TR}@U{{jGExl32V|hJv$teOC;0Z!1g0HIyf1z4W`T;VxIyN< zQ^`@l^3j^%q_X$uVRxa1Bz978<{2>dx!d)OHy)B2EbUSH~+eLte$w@uvN=M)z{2*@UR3EH9*wG6=t6t^^ zxSr9jzm&u%nhg0DoiE5H#nKgVv&R7=y?><%7yq2m5))C6@W`G z7Df!aItG4CefogNDKc74e%KtR2EhftU-$u(g46CtO>Szq5>~Nxd71fW5L3(HTe-7# z;}R_vySBiAM}9To_7_1jBPv42&p4$TQ+eVyHWE~XM~9&?*pa!C{ffDy3E@E#aZ4q1 z0k`kq)KUftwg;z2<0`WPqclNi7{(Rcl=-)nUKA9L%U_0R)Ugg}RFKSSyifNyZKjy7 zFF;hbBD&vTTB=)3SA=pP7R=F=oT(FW@+&8HD_{|mge#LlDT?Mvg6Ii;KxSuh!%PiC z8hZ5yWT`-w}HgYJ;Xj!AQy0L-xuP*B4~VsL2ni>v?N1MVKfJhqZN>h$9H|wV?#Fwc;jbPar-4W-(in zB?XI}hIfLFL7g&Xb~M1&IuSk6@o5$mz|6*SZG0%VSBJ3%pn3@UlqP|nKeIhilw|mT-sk#6Is*) z#Hi7Ix0ucJ+|$2=Q*8<{ETo*BL`y9VI=|tzJaW446!pCg zRF0`s&dp{YblG_UBzB}VOq{}^UpI3O|L#5SHZ2Ddz1mPbGoG=NZw<&!%^cBuK4*@X zelY?+f(|&LcWFv7+GpMqY@eTRm6W?a%-ZeXvkgHB)8WN90UZwR?#*c(i}kO>`>(f% z@u4(|qPh|+$LxB>J_n(-KIhH~c6`=F-Kx;V;g}&j)siiiWAk=(3KA$$scQ z>AXks#YkPEMVC57GITLEW-E9^JsDZSw~gM7;z>flBD8RSF0rxDz@`*|%r~5ZFkh9J zSv7&8W&_eI!hS9B;l}-z%TfUH>RFE#3fF@K+?PT)Iw`A7osd=Gv%YS_ZFV$kRpPsm zbNDMVMn;b3j6@U)N+SB!UyOZALsEu{U$h)u%d_jro9OkYzGMtEV;soNgCrQvt)&>3 z9WolrD};tsBhYHYje8V6nTHIx)`qXvlBNJI`lbnvjqnnZDIJhmHCyX}U?>~nqV z=wk^2y!>l+bP>nq356Vn%{NQZ=Do zt$V`g*mIcmqHD*c|5`jl|BJhw_%L=0w(8v;R5_^9Ant13ioU+}-9hoz5r<>y$61`a zJv5GSKW@_?=r0KU@y~|+Z_JArvHd+b2fS0Fh~26b2=bK2p6mKi#udXfr|L+}kOU`6 z!w8*tp9Z;(WQuu~BJXk*@<8!nmi& zs(+$+Rj3(FYKQ!qqQ-iv+Y5l^yMnv{>|qgNK`_ldlc}Zl;A8Kr9Oi^6R3ZbD*4}nR zqSIZbM_e*2;S+|=mi8=JRzVl%*zM{LUEu&ttx~Q1;aggTZ;UKe!+aa03c6amE~8k8 zyr&2?E!D6_us_?5u~qZZnOQ8VvXfT~{sCf&5ns+ccafMnShd%DYUJ`g=-{3$+(1%( zwKukYqTla}h&6ICIX-uZMYKW8JxMlos$rD|Sa&RqMQHuW-n^@3>JXO0SXENT2faJj&1>$bwxF; zZqoVi?bmW>JRw%zw3$ampItV#R2?iceCztMeQ6R5;pU51`+-$EkyY^T1axAs) zCGe<$OrzMsgBTrY=Z+?LvqMbU3Fn4ZXcbk=y`P_@@W->ife%Z5P!g$(xPQ&Qih0U- zmT88}*pO|{%pN8nksD&=ns;F9fz`lZ;`HFmv{rB|jn73=*T`j#eEYmFUah&k5x3zf z1Bab)hfbRi5-Tbltw#Q5`Y|R{E1JiGL1-j(_{juDPs=4!*!dEJxF@jwc2OAxoA~1mBstc#K4@>0qZ# zc{AZIp*Aod@#m?+soH3o<0{Oh9kJMFZ5=6uH>q$w&8fZ!yF2*IqTMbi6wl$>gqpjH z(Nf)KlmXL@VkASHX3JYNJ@@=R$ETCQF<)z>zkENs#ks*K3(!$IMWi>UjtsqbV$W<8 z-&4manN1v}W`k6M37RXj1YGJ=w3CT$*E&swAZ>Nh6D=8PRd3HIS5`rl(o-C|<-Wwo z(1eNzvv^EGz4tm(7=+9t7^dQ#jO{44c!ZCZv9nN<7Ol%fB#&h2+kc}+b4aq)34}!i z)na4ha(=8}AU5Mr7a5hNL3^c>G-{+HkQ7@;SYS|!M>Hftv!ObZl( zJnp%Z&7B0v!Iv!16(rQ_Db_5>mbQTortEMa;4YMO3JURl5gCoPa?Y#bPNsxQNR?Vl zs*%PY%sX%bYLX`;N!!JcU)ou)y_yt*uhgU&b${pteT}g`Z_u$j7L# z)dXMxCThWM*i&kXpF69L1_#T2y3l%dPAH-W;e79CoPCixs$Ql(8fJj3t8YGPeHPCRBs zH*iTR2o_4*eP-Zu(9PJ398UYlJksiN1R@rDSU9~YDYnI>mXUG_R$-lea#cd=)865$ z^1~MI@66JeWPfq$I1*$uKHKLUj!U9}*o>ub`e-0^;l_-mHfY^<6qv;CP_Dmdgf1r~ zv*_m+IDuXbJ;3P3ZZa#f9}duWz)W2TLSn>4Dtx(^{YGO5t@E0e1W?CMD#*pp7QD7U zd7WSir$o}}pe%Qy+fa9KwrfA2#GpJ|s*iMUdw{ar=IYtxib(%`UVg!cnl``(9UXf<(sAOXuzfT*i* zlkqR^FZ&uvG8%n6N6Mn=GROP}VN1g0$u9l_arsMCv#k3NWB$!Km*L3+=H=Py>|F|YTJwI$IaF}K*(6RGWkrR5{sg8jh z+hV4Mza_;7cjywQdmu00D+SVZtGVn+Yfn4m5VjJ0=&=N|M1;6x@rc~-i|z7gbeX)> zx@;_S#?YBgDyp;h;)1=iegxV0tPiB)vYAO&zdSS;ldE_p!CNwU@uMm_)DAu`WiYNv zG3L63)_lrd+J!CDZjKir-L|8MyZ0Q^(nk?@IXJ3M7sUuKCrhZ82wC_mdvh=wIvpMw zIxkX@H&lv1N5H-+b3;_3No0r(X=zi1>kEaBAif4t zlbAXA^ZCc`)-Ga^e01T_xY)FKH`S{|g3S4FU#qd)$Xou8;X=QQiBUOqFNs$grcCc6A{B+Rtj{(E10x|lerqI)?!CJXv8GmkG+F4i!G>c~R zQoKIAEz^+HRYvr&M!&)Zp+Aw4TO-wiL4OKVQj5?trML^E{>~{!0&yWN6;h!(IC!j3DI$p1poz^qg}G(u>LBRNOgoR$*5(^2~g4J z=}20h<{MO93`%sSNnTAjk_Y{r3tJK8R(LDP9oeK-Jg|h`*V9eKJX*#Tv^+YJ(Y{e+ z?;U-&r#@9i#S82=X@ti_y=Ux;&hYsiS@vkTVos4D*M98y)%S>mok}`-i=Y?fD%R4 z>0$xl@IAwkf*PL02Yi6Mq;yMQ9iR&&h6FK4V`Az3>7%vXqQTM+?ds?03eudTOnPZ| z>VoHe#m95y5^{~2y)O8v(oF7s9D!ZU@NF)KQzUyV`fBfcg*aDq=e(!u-IJOjgBAe- z5=u#d9O&t1r}p`7WbnDER%bbkg?b#obPu4ekt66Ck$`9 z;|$PL()z9vqWI^jJPu{%B|#WJUKhC}jN~KuB!_n6`LAC@+1N~##!r3H-!{yym{o7} zyLOJjf65|CEM-fg-sI^tPhtBwPPRk(&P)#Zfe~oSlz9xG?`yy0o2kXn4=@X7usw*H zFJ0otO-FE|W=t`h)J>tcApK0p8C*U$Ml_rdu%~-=LmjA$uD?+!^F8geT5M^yovEO_ zs+-xL?EEH)!icM?q9uQNKsVsE`kJQ{&~~QODf$C@IBaLwOU$~Xrg~mKx-%H~@f17o znJ^JHDX$45he?qgD+?_r3oRBitt<;|ekrKqYntke2)8b^-Y|bU1dDfWr$iAUn{Y%lNcarSHhJE8E zo#E3x4YMh6@`PtgUJ8+H*H4Xv*2xcxugE_EuE&JB*l!kEv!lx2)b$fLzZ;EciCJo8 z8o8ZTBo*vDiiTMX8z<)Mi&&W4L?&)_l7HOJ7pvujX@VA=!mhEy22@D3<2zv5WE_u3 zVC!0cP`F0dQW3eX8A_II?ynV#z1M?!+;Xv1l8l#|j2D;ugFreZN3zguElGQ;j&a%H zHM!7_3t(Zc?8-~gmiOh(o416EDR>FfX)TndGq#tK z6tlBs!w3)8VVUlh{Rim|fO5r=nt(55rA+R#VTV$LHU`=*8ve^A^YEP^30p>{cZ8h0 zS^{jkhK;V3<*P_RqAaeJQcNM)Kgh@RzPNw-h~0r|r;ee1#CLVp>0KL~`tjar5jXOQ zH|ZRpaA^S)Y}aKuh|5Um| zXN1O0gGsPLSeHaXRh*vn3+W8`T%+3hrn1v7`z_VcYJ@g}_5k*}AcZiVJu;0=Fo~qV z&w^TrwG}n*)V{leXbXHBLJ7nWi#|Mn6jj;Io-QK|BX#Bc$d%5(evrHVITi3{e6c0B zLWztD{Tr5M1oh9d@KVbfw;o^LLD>*T-2`A}nH0NZqntD|n{HKCT2&&g?(J7~jHw-$ z11w&P@^qy92{d*Fzu$8~f=U#x2@Cdf;+M}eaozzYOS-zy>72_ht9hegq>RvfNy{(P z@h16i->022A;k+VuRs&&X%>db4x8Q*j+E?4W5+uJJS{3k%JP5y*iT+y?V)* z(y;3|Bz0YmhkiG$Xj{vl#69Kugd(L`_ zb!qVqt2H{JAG?Hy95wpOWbhvUYNE7d7t;+blCi*AEUb)=#?b6{-`OLG7cWrj;k3R3l=^ES4%S^!f44sbo!+sk9Y=o*D$%oBJ;!io39A_2^3 zPgWx1gQ3>C+u+^4duC9}Hf-0!`F`@rKh_l)_{kzE!6^6GNM%ds(tO=!R~tnB$A z5!K+bKGhpuJSSP>P*rt?eifuNfqK?X)l%b3Intr`IsBy-e6~9_ND`kVH}b8SFrI8M zQuj+A&zi&@%PvyD3}tiW*8EuFBHc#3{Jb!H(-0k%-aw}S`T29%)5(t_0ov7zdc z{uNa4yx*Cht&5P*(-dPIF2Ws3UfT$0uzdigJ6^_cYrn@c(Cf6YuQaCqSj`qjDyeq`!JsGP z3oRJSQu?FS#AXyEWL{vJ4k2xt;A&RP5H?h0CF~BR(+TAukI0GQt!L0y zx{P+lgborOz6;`_BR7hX3UHD&ALVm>ZFYnc?I}Z$cYt=#NC7pe<;r)L=)RjDdO(ZK z5xVK5IH3IDDT~bMfd%$*+?z`REmQN!+TTKn0D;-m+$@wl&sr~JDqk?MCg;$gJc6x% zTSSmWD<-7mtpgKHzL?QSvb2SfM#v%sV)H~uj)hbB6@ChIOb9@di0XxmFB4-Z?tgG! zc|b)Rj|{VQA~Szo7eaRhlcfn2xr69byUX#e#yoMJf76H~*QO(;bT<*X9Zi8TU5G|; zKb)>BraR_AxLOkeAw3%w+jiJQKf9d8L*cauqB1JK|&`go0tOU0D`KVOe85ey^ABr<5;~cG*NW zMN1Z1MhJmTJxzpZEtT<;5X~dt-=>5=IQj>OSZ@q{MD?peD?zP9v!U&Ja^;CH_gF8m zFtqYVf1~GtnUEA##)K@hNq0yIvXAicNx*?-bS8wuf}co^J>ROFGe&Y{2Ec9>SY^>&j%#_7UtJ-R<|B4Vds3)ExPrP_mwL3f zYdT!>Bys}(2No%HS3I6qBYElE(~|khDq${4W;}6{_qmcEu|9{KEMaHmh<|_Qv#uGb zx{bgVO4>&~t|&>9@s{}&sE&&%P?LYhPn@p!kuurjz6d)-TMW@Wk=IGJ-qk+R(3L)J zmJiXFZ`1u1EXS)gr7%yV@l@PynRnr_cd5P1SJ9uEQwq&yNmtbaW4H7X&69OHNgGjK#*k)l@h|XiD}Gm$ zk0Ihpv23XnkUIVlaJh9VR7P0ed83I1%eScxk{BnkG6A-{lgNVBM66;bty)H>EA&?dFwYtDGUXc~KvYhN3^_ExkGe~I3uE>@MWewfXSK$uNO2#tdJ>=KrU>SG2I zH>C`?#ZBv|bW8i;D*@9CdR0hrBxaW-0)M_q!23!h^;xTRS$)j;#oRw{N#^1-|k-|B` zB9tPmRG9I^(wby7a^m+k`0yfR0tm-ELp(o1{zJ0#RYodNm<&R)bL%YbMlitU%+Ijf z%W=gCON1z2FiPY1q-gc1s-a^rxU;m&YsO^hnZ!N&9#L>l3_auV4(r=OHZAoec9$j4 zaK3B*^}A^}_`nb0jOd18F$Q6Jvxr5AN>bIJ<}Ya|RaBUIbLsqKH;m!6AI<-*@hSLp zjSfjIiUOiz8|X-nmSW~E-}h1AhCWaCZZZ4hO z;R3~luiRtHpQp^lEhQ2w7*~3C(%V6=qfl9L4M*GC|^)Q82crb zEJ3S1DS$|XNMo02pBkASFm3qdo|ss?+6^Yc&>Iri7bGJf4)pyfufq%$jI0@7mhX89x7b>2NcbSPBDI8T1u}#|X!`ZKimqUnVC;Bjs;bDqy-3IPquMGQWJp>zFw% zRW0~;{dqw#`ua{pN)A3;opcP4#bwI7ZdRh%3=Z+TlAUlA0G<_v^;#R$vqfGz%~uQF z`*NT|tHDY?^?K3o^3y`=IS5`O?KS3WYutDdl3=lApLxE4tRNV*!x4Of%1Gl)+}0Cu zSrXy$fa+(kjp;rwdVd_GRaVPC^`wwl&Nd4&2(L2Vaap}BfmAqCnC4VCXGB8Y(gOAt zGsil8;4SV_qEH585x=cWXa;Xki32^tdf({tN)*#kl=q^*UD>n`P<;#l zy5N?VQ0ZSG!V(VP&PgzP{?tGj&sQ23IDDS%4VqsB6TLr~k$0fYe%D?_`t@bis4@(g zv(aXYmduW3e@RVW?}ID9Ii6Uspk@3FJp$#B{1^9K&asJT)<#(z*ITe3hGl)liXfHd zxKEx=dgk;wTZ6*W$c|!H*p?B42nRAr!SzzL##ZpJ_9PC5yl0UCV|X#3gv24#99L&Q z|G1aJ-$yzXz5Q9f;=^{rBpEWdXVP2u#c3W=BpW#6$)M*B-Vr7Q&=o}NA%`Jx;M+O4@T3}-8Sn+7m4Pz;QTM$n#fVNIZs0ce z?IrdD&9=rCL@VJd6ekB2ogfZy9;jsmI4x=i)foQ}ECYstyCAPiLnqF*FxjdR3g_nS#%QaB6R6Xy*^Ch$Ea+7Rg-vq6qA3VgTtNajupj#QVxNZcg@+BYv9&WFa zK0E`gtu`VAL4+gb)i^X{sqZ9&tpUIRP@fz2r1VHY>d%kSd;Vm!psDN*;ht*NhP$_F zN@ejX@%T{$8wN6=J!LZx%^dF;;~1lH5T?R+mT#eDVm_htXrgGsE@YI!;`orc=FWSNxiKx!g1omX0^{GPT_QMHbm4`f%9AXc8bQ}xV zAakr|?IWM`c`o_qU2VApVS%|&b}Xy0ub#ovXiFGS??eEpZ$7l*Z-FfvM_U=wS)!Q` z_l(m; z!D*IulrRa`8$0j=bmbGb8s>?lyW-PVCT$!&1hW_)AY#JiJ@@q;CE(^xALVdj^BXG6eJ2fD=el;!T0Db zEfNNHg-PciZ2gJlP@=$Ig9KZDrmWLVR&Y6mdq+ohl4Q48)u*=XJixR56)H_+;3)Pd zlZr?YCgL-oiBkebUv0%DI7P_j3#WQxQENT<90cMr)V^}VFLg(o<1(zxN9wV!b3Ia{ z<0KF&A*SK^m)u(8o&A_hjQG%8@iv8w=%S<8(>Rd3Fv!kRJqmDcK54%^TaDe0V|7{o z*7x9sZhl$(CAki~f+}Td)YS?oOD+dGouQ+iC*Lh)hTnBOusx5$kwmbkpAg1VhQ9cn z%uK%oLK|~$-#RLSBNcFWcC*avU`W^Ukd>lIK|^#S0K3eZ1Yb2)d`Lw79zuUctyBrBNOqAJb=2mmnG8>*)_L10qK zpj3e4Aa`MQDYMUr-8;bOyc0@4n*>5sKOiI&1lOgo8uEXieJ_HFf)=&_fDADPh8^mR zvb-bEY@W<&tjHMy8b&tKUV^)!^)p}w>zp<%ttoK+y9WTfx=Xu6SYO+(-NSWY(d8G=em%ZEL!mjaudn zL03s=!#vr{^ja!BFr+DV*dn&eCBE9@j&N0&O!kIeEI6AV$3fdLMogmlJ zxJqKwkp5z6A|M+>i82p#j)rWu5@;0w_$HLYG&O2(Ay-H382)1b)O@BtpjBp2RDTl^(N0CXBZuvT9zWjn>X6jif<7|ly9NwL zAtsD4{QBE;scud$&P`qe_Hqk6O+0M{d;BoM0^MH?ZSp11Dv>-)kCkat$%sC<=-;MU zq5)D8daJvo%zp5@wrz)*Um~N_cv7X+w(e@)rt}R<-Ntfw|H2CVMTg?CWnM(H1Vwpw zw}%L$j?|+65y~q@=~45G#Pz|3YAw*d_-A_pV>XbWQ=6dHm&+ZYYws=74{V648;xJF zNMn-zR}{0v3K}h622%386Or8ST!0-_%OKTu2`EXPHS`NM?sXBPs?KRG*m>=%ItWr? zG*)>$@QF2X(w3b}$g~07iU{37b1(W%{el-$CJpD}t}Q`Mrl^9|dIsv0ED8+{GjO2o zBn~G}kx@X+Tdi#Z*i-uV+EkXFzK}~0t&36{XZhb~1i@$ohPl{jFDS9Ba@&hlvw{}T zCk!OM^#g#%h&W*k$LWT97OZeApD%@caPKl=Ov)kqaxe}sCc2);&r~>PK=?nG^vFZ>Iyoyoz3tPYai$cmcZ%1&Z&f(5lE& zabOhDAKs=-!V+^FjKWq&9f1G&f#-KcA&Xb+FwgLbhiZ=FNL1Ewo$a?a7UVAX2 z_{B)@1HziOE#OGypVro^z}q-bjEHjXLJ;~Zy~Lpmk&Nt#fWP`G8ac2-jqTHv(M9ii;YF zbZ6}Bj}ZGU1ZWH}1KTA)UVe&prWr$G_FuUc>=nxW%S0edI$%TYqC9r_?S0G1=k7<8 z6Gkh!2?UvWzVbYFKb|We{uRQ(u#hj}dXT#YMxkf(+Wq_2(ZW?jM$jl?%slCgF;$Xw z{`C#%ik=V6Zf}qZc0QW-y#=Xc2O2~z1_ilbzmpu&f)KF<@&eDcinL+@K2D%Pz<~7r zHy~k<9iPR#qee#->7m5jEnd7N`k`GA8_X(=sq$a*!TEsXD{FqZtO@Qw167S#zY88e zr+DQRCYrh77A2j-D^j_XaJgOj5N8eo;kiK4(FO#%@FV)`SG9M1)#NmOzy%`s4!w($p%|$?A0k zsxI|xNvJm|+vlHnMW9!sVm(4x zugtp)VKD*1Y2tH`!`D`vgAHpjRjRA^?Pzaa|3{tOhiJU+m#j2zK1R^Xi<~Xpc?c>< zgi=fY8R(!gS@b84YE2sZolC`1_Wa(hU!2mKR{qG}2RaGVV9R@yzGi0lXD-1IDm>M3 zDMhd(!ZeORa-{$zE^*x)OU9#5#^ZGI{_L|`aSE_+ z?S!u2ol_#WSNJSU!vcz;zN7pGRMFIdCOF{N0c0y~^hu(@ls5o+jNiA_Cup=sQJM|Z z8U(cL7J$7br?OleEAk4o4s$_-{M~j3TQ(evtVR<{i>JxbIaahV&lNm!477k>0Y&;+ zs!dsZC$k%js*+7%4d6f94lFOZ?YkGr$0Ee4YFXr)K_(P++aD0m%3hxoUd z)iiGQxKi^Fnom&@fE*~@F#;69FSKpZ*I#Zfwk>+!ko^X7Jb?>OGfiOwVno*#D101i zYzdPS0)EdXA!K@lEP6Ek8C)CPT#NILotP*dZ~7AG3v}@uVx`-nGaijzbR5#e$pO#s z;%(jV)^G1L?(a3{Sk#gF`x2lTrQt8Wqz&2Rgb^B3np{zJx=fqD~*#60Kt+7rmR z$%t|amjO+5Oyd-=<_Y5wx-wBMkUR|*FT=IW*{?S?e%9U`@6KvplC2N#5BU*Q#H~00 zIfWnjiQw++*}-ZpPBXj%!_cM|fcE(r_zyzcYx#B95k8tm0eJjAJaa$1ui_|Z?u+Hd zBIi5R!v=OhK(qZb&1DGpL9#455$le%p%{}v=!>@i-`dJNoylz*oB+w(=G^CM1Gh;{ zdoBF0ReTl{Urj9w$Y7!vMR#y?A<&=P$PlI0qcH_Thr2!`l&Q~b6{ok+^-#gq%0mRQ zIl`PJFM#3;>{*i59GLlovLFqhBwNhGqDf(!`Xcmf$NQk(OaN+mi|4$0b+$$I6oaxB z$i)zh(TZIFNA=){n5`(yI{c`S0}3g|iUkCDA`b8oKn|a~eOQHy^>w(9>3SAu!?E_C zf$bD?Uj~RypM!kmVG)yT65>}FpwzvW1-M0%$scuFLJ2=))E_jCYiy(eWjYV!fkCJ) zi2Y5oM2GC5CDQQSELjOC>4K3u1SwBm=HqSsXz}&VFUC+50{b>$;e)USSr6~ZcMhls zXS(+uUpu-FbBu&1L+(m<^atj@?2~B_og2fFQ4>U8puqz8QD!V3w>RdW)DAy$3oN=9 zM4&aGNGtdR01Wv54_og6&2|63k0a%cY$1Cl8CfCOdn;r|R#qsI6(KXTvRBzzWk+WA z&X&Cuk-gXd@#_A3KHvLy&i@?e+#UDZ`?a30=ksx0kL$Xgq!Xfr6j;N3t^)`0Hgvzi z7K}oKD_FMGG;0MTbI-1gyM5ld2~iSPCuObA&rYq^(V|y%F&V_44`Ga}u&iG4x6GCa zCPuvPR^s;_6H%oUHj=zhW6*8n+ywTg|L4=Nk@HqdP(I9}4pU$)LPx3`v|v3(k`4W& zp0=7GuVMC6cCf?CamEyer>TLNFYakqR5a;uA9#BeK_R>|T(}`id*^w6DCI3B1EnH# zUnna|8S`~BF6w{^bkHsB4eDsu%Fq@0dO`41{B=HWkov&vWI344H&7d%LK(_WX#kuN zI-K(X`ur%*aubOiJFSKWPEk42S47smW!iB^AHCfETYx`?fL_?J8PweLnbT0j~#7|*?w;CNxtKp zm>^)6z)q(QuR)|Y;zCKzxLR0TO`6RYow})UUU>atkpkZvZcp6zQgGSkytTGzX1b+T z_pJNU{7YyotdT)M=mWDJ=5>*13iQuS%PRSTl}>IsFG27122vaG2!_4*&(ejoM;Yu}KuRqEaBM6xY>bm0Qb`etttZxH$bgQQ(GpAC^0(DX3APj0Q!H*^tc`yenHL1ds*WrDAc@!A89ft(A@q5S*h^K@ zXN$^RS=20Zb!&#}z`5LhU*|#Q>7C>$j}xR%WucxVbnkPuS~S~wh$>p%=(h?$QsFl> zr0b8t*mk#2f=$yPs^t&oXJkgLXTS)|5po(%{ermQH+a#5@HxWSwDaTk*qZsDe6@x} zevAf9D#xrfe3`8En1r4i&@eKka2QqVs)_CnV*Uwwe=+1;q3AC#Hl~?{wA8)2{g)(k z!t6gU?=UpbBY~-q8iVjd+@EBqN0MG_wOg;xV0Qkh{F%c3U1a-mvlaE8nvqed)f@Vc zFF>Ynv2~eQx06Vd)MrCE`UVROY{hJ$slP!MpP*cIzQ~Tt;#1A!eUY7zrZ5O`fdk_d z{mcxUt*j7X)W0bwA4wX-s$eEvbV{Bb-|y8vgyc>xPQ3WAQ9AItzR zckvT-kS4B)2UwqQ$m+k5BLOSkn8ir8fIwJ4>)2eTP;$Y@Wa)EdHrlkAX(A zwMp=Y-{7_h3&zmq&ma7(mGd@bDj9srjTf4kmsVw&0Px&05T8JLl$Vgz4a82_BtovmORhjqHT8G~h#z+R45{&>imHBkOrN7F>VY8Ti zf9|~K2@mBIR+G0USjEkuv>D6Zuiow%Fw=!-s5SDhQ09onAf|Pwer(7?z?;Zp8uaOJ zy*D%FlU$2<02SyzLoK(oi*l{-sza4qNzb&NnHW2&Trf)|#=Pu15zDTlc0Tm+p7hFa zLFdJreY7a@@2w>1srSuhDYK?cZu#3@I#Y_ep4z+&NfFrvxf@r)Vj(AiXwDf%v{o9phOwr;QgT-37M#ml1}Lh{t#};p zF^ob6;?p;=t2aH)3w5#6sI)b*su?0_VQDT_2 zgc5OtOG;6s!e1(ZEvzKV)5~5#;Pt(YfJ{>Cf&Cq}zpBbeiA&f|I>cTTo@z%=H)0%? zy+jT9>!u^svKKSr8cvsw*c+dZk3MbJ=COJBA8}u#L>BT_15KV<@27QAkIP=tdG5Ty ze|`>w?1#Epk!kbJT-J-jtJe4xA>K%!z*`gL%uMA+?gT8xTsDsHK7H@pgL+DQZyl`NQDB+rKpg7t z)mDf7IAz{^s+hw$?Rc5QG-JVogJbw>VWOlSL58LzP$dh{8T|!?Q7G33p#jemVgN^q zz)bq&6`Z^MU5j{_-hHmku=2e2$;jmIjo`bZj&T)|T@r}8^8H}kUdKGSCf8kY?>`YK zPhLsL>5PiQJng=|3OXB^)lM)Ka{yk5h4=tvuIde`WO7{Pjle>Fs6*bu`qK%;zSG1x zw6#}6T5fW+%I+>99=(x~0t0fd_T7D;9pAvT*Z+z2=D4X~L+XXPmSuj|lPU2XK9nc_ ze0;D@-Rpae;d$%-ph_WC`gGr&;!duCwfDRhN}s$Qj>P3?W-BEM*dgIkNA3tK3b_tP z4h??Tj^Hk~d8$`tbKebG6i(4^!dT&dG5xsGnt?=U2tWHp4-Ktb*&@eBhdV;Wm{XBbHnAbrRHTid#(0%O3wEs;CjQ zee@>{L!!KP#oFsmwv@xg>TPh)K}|hC{j+hpzW4whdmBV?EKIsgBUw66Us zQVo~^dva#cty^(5Q=lvHW`Gg+k!i*zRVn!YAM zblk7s*Xsc7ZS9U2cOt&nO&w!TmV?Ga#A3GCWUCCVoJDA!4WA;yGG_yrml7MV)N_Sm z!FajKLdef!GefD&CPv;k`B8=TZr%xEHfK(@Yw_!lT zYaX;GT?25s?4!)Jr1#Kntl!^-mo~kx z&vN$O$zBaET}0ZPYZ7-Dk{H~H#ECijda9MYLIv8^7vp?d5Sk68dO5_{8t} zMOgYM??zExN9tFFFz;xr9K@QH;Pu7UsL0emQ{RE@<-OyiBkvNp2+KMG@w+jqzXPc3 zd$WzfKIVB2nRJaM%li-!HaHSpIIw;n?a6Oo0>2FI1wZ#H>+QHbJC~ho^dC&8 z8)C1DAap>cOeQGTT=Z;aqcdf)ci}I_N1on=Ix!CnpnH{0J-1uGp6-pW?dOytD77f+ z?ia+O9&2`#Pi6!264Ymrw=rNbE**@}Rqoz1|J2V>pxDe-Hb~%r`#$||RUe7t6KbHq zkjP^v4!xSuDwogNeTCtsMFbpggRkW`-Mp73lQ!zKkO*2rL#V`VpQx(?yI?(9oH;{D zY@~i?jsF{IrDCDGsSPX&Uhc1ru(g&atG?8RZtGT;I{j2Tgdy3@`P7)i8W$%=uOtg8 zQJ%XME-{`0DY18(7N$S*0Eu4C^x3G{uNj!aoSCx^50FyX1jCI{foG`N@;j};iDV>< zW23E~>W{;siywCY>6ih!K5UmkbH8cU6CLU1CV}2z5aoj+M;W-(m{myneJzN z0ML04v9cjk$mVzUCU(tYj6o@`kN({Zooyz5k{22DLbESl6W&({%E8&c&?Iv|Boi|= zt@krDl;w?Ecf_7Y>KB^_*Jh~)oV-&okSgAW07rTPAQi7+C8zP8j>vFVEz+9~y6_iLw;jx(4(M)vU_5b`Ik@o4zF z8;0+kAzf>9Q71>E8OH%j`v<#nPO|*rQ+=D(>kqPslZK)2w_sz>uKiRlPKzXn>9OcGn?|n0-tB}ljRpXOjTEMeLvZTIe3{jy7yK#?^!}?M8xmYU5|4# zZj`6WzT~XU(IB?tuII|CD=Ri;SiQ-w!Xpiw$G*)Z2GNuumdu1fsyKNZWcU1!15K6a zMhFe34Ud7kll6}-o|eDC*Iy|!M!Z~GEsQm7JUBBJnf5Ms%kuWDy0^(%vmajBh@s^tYRMm<4GyX;W zrd-$qTx9II#!Hw!jj5iHE>DI#O^8|eaRXV7&z647k=IUi)X3iyl1Z8e0!6#9lWGnx zPgQVr!|u%tu)Jw+k8U4CF`CF{Lo-{ELz(UQ=VM5w+7V(*z&<%CVxoCeTsQM_G06id*0S-W%>3k-;skx@xhPi{ zT?zQE!EnG~aaukYfvQP%Y7pduo}0ul5>L8ahyFs7>11n=WG(T`&!q|0mzOmY@_t^@ z*M%NO5q)iTI1p-akC1&(`0@GgVO571pJnqVrtq>h9&NYk7z%VVHc#LxpQ)@Q+J999 zge1mx_k)D#MZbjxvK~NURZ|uOW-ee1@iSax03@#i?25ZZMsZ=X5gA|b%#O!-eSMy1 zlR!<-Y+l31<{fzz^Q77IASthOk^#h>5%GaiNeQ^#g{4G? z=e1AnGnP})LPi)q-J;S(4y{2ocV4SrdOh%;vhx!-^x2ha7c0rf{y zsNb-4nNIx+$=pCV&|nZz`RDn4j`wia&@m=D&y0gm(vCCrJ|7i|@J!B5nyy?Sycy{o zf{8SG&HTUW%7&*A#qK0J)V4njcj#wAi@mO!%*P#S$i?-qJK`ZR>oz>vI;E(-7iF*FtE> z7mah}1~ZFNRIfpUaG8%()>x0b0(}thOy@MtI6Vt=FLk3&lK_x}ChHuz?)1rb0!zZT zSCPs!*uFsR16DGNXO~SL9stvo0Ue(nXI~beXDj5q^Hv{7clyFzPGak0$jtp@NXywYgLDW3s<^F`;-|;I1c^lc~gFWH3H~EW(+l=q3Ax(&bJq`FeO&$v^K96|p1z9;7JK zr0MZnZ`4``w;U7dv}u7FUH3*JzcnMOH7a-q)C-*~v4(Ghb9J#`O1S{nOyf;4$S8Jx z;$-YH3FB(UEi?y?4ydo=-Ym^vU0yLm z*sn{_fOiNbF;K+tVSTbzHnPGgI(f;*PWp4zA7RkTm>)uD)=(cV#Q$LF97n7f7cEP} zTm7IQ&>sM`kUYID<}#FhJHyF6&fTMLi)%c4_F^*MNbC_+Y_?D#scXEJJ=7zVSigTk zI=}*4fJ;F*J$Y#K-e3L@BIzIrPT)Hd*z9uw3#XjW;_pfM_?>@2vUiWjS!)TCRDd!n zL(D82lDFJf{vif0aH2g-pUFdf^UQPV;*=jtfZyEVZ8;BNC*`&#ha|N;HROg(2CvAm)SQ4ZfTKD{33Gbbc!M zgGOa|UIPk$cHDL%t5O2{t4t#iXpBA3`1{cLSw?AYKIi zI|>1#v}b^NG!Qjy2l>Dsp@0Ki)&C~FY(f3&molum+7>}T`>t^P8Gy7ME!BSoz0}sv zym}7QKkB(f0|xf$91*9i?Q|TE8D{ulpN7b_1Ns!;OdslRfCeT8A`IK0M10RAV9a6v z@e2eLjp29~UYkL42}F|1S`QM1o~F@;Fhz)Hz_l@h3aF=V5J_V1fe?zCOe1Kk@RrZr zl4k-LVn01vCm0PjU*Zk-1M=ou?C0K%=#_{|J%j*s>-);_=39bu+Xo0%?Gp9`o}ita z(6QAIn`8k{T;KZwNYliwY(R7ap9vN8BIhnlG;#YiWB8(Kqadce_;{+)$ub`B?gZpa z9=*aU!bI>cr|)Yr&fNJEh9q1WM$DgY)_dKgH7(^5aQ!mdwzfEmtc^OuLOK=fL zN)k|Lw~~Yqt0+*R#*q-GKUE-LF#l0#;@(Oav}nbqe_Z}}l##IRjRvDiZx&*yok_%b zsf9A*=9QvZY?%xAt(%H78=R8^$&$Zx{4}h86sC#=TycR`%GcyClh3K_`>@5nJ_$kK zI?@?Yisj;jG4c-7s%MEzm9clv+9#L8CSYBW`%?v{%WUf#zm=Gr2K`y2z$q zJ?oYC+sML7%ktr*kXQ+Dw_jsSW>aL(XRk1QL_Qbp5#8LQVN4n`_WZj>43@I$Hv>Q| zuHhmbj8(U4oUiStC_D#hsI;J z*~iln7c8EZMRE83B%Td$j~b}WY$|#XzEv>bd5_(1%}J?Hzr#Iu`c*LTdCbw~L*rI- zp&JZ|^M+{-8zKj{VdbK@BffJ_Z-j$IiGziMbNAJVJ~U?rTOA<)Xc)$+>HW_}lN#b( z9Je}&Z{56U9_~H1Gytwa4vVP5sKvnq5x3$p=zj;{{it-xM&f3agY}fJa&Rn4S*%Uf z+%YvufgJx0e4mpQT((SpNHMXSqA9;uggJ#oWjvjWSr;wue%`fzl27&p1E%BNv5S(J z_+Ii;KV<5t-&*W+23vh3N^s|*hje0wU(xe0RGI6naQTXKgU!nOmuGrT*fe}i%T>S( zm8lz5_>V<(>kzj+!iX!ECwz8djA)|E=ot3WS}&uW5j@PYK$lZ*S-z+X$8G}eqW@2|&u@+}N!KDQ~mei9XPuZy&=nC7FrfATJmPZTDb z7$M;eMLm{XV<9>fTPB7qI@52Ggr=S1L39TW*WS_hawor9TcTG0_LJ%K;)PVogqc=K zPMC8Qk3R<(w@Tf})<{#iYwT)3y=(bxJFqA`jv{HW1nBf1tmxXApa_b42q^-jr5v>ElJOo9~z+}Hvv zian*h>h`~X_vD`=IUBZF(c${~D@}_Qed=8x=EFl73N9IAA4v?ay~5{wQ0N@IlTZpt zpubL3w*eCV;sX2wjQTVTj{a{u6x2f|x2S=?GkS)`W8<}XEreLp_Bx#@=^wO?b)Fo? zUTqaks?LJSt075AO2OQU8C2=MiG-LLVSA< zK{@N5tB|3Y(x7f$9nX3P`(Ym|SyxsSvG^U2R&6*T3Jf-Ejfof2p8H5dgRBoogh&(AcW2SgK$)`wM?MqyI8@%qYn zkXmH^kZ|c^+IJEH#PtM^<|EcJKD!F+4Slzxgpl^L7p5nc;t{;Zau|$kxEdUnC4{b> zIQknCkda9Y&NN=YR{N>*z&ZM1qL7Lu(;my5UxOfuM{4LsN5(-q$AP4j*0no!uh{6C zIGQo&ba9G)pwroJ_&D=6o4r+dpyq^IKvJdlZ5JKAnc+pzM_dyfLgClJm?v^*COtD% z;dD*2PlHc~b?WvkVfpmEg|=})K)nBSOlL0y(^qYV8xvE393!h?_7z2K@1;e?0}%{0 zrt7su4JKvG+6#&M%fs)xP75#3DdP+b*=Omh5a*1j+CM3fIEL1Aq=IJJ(zn-MSL9e% zoIe|Hc${;Kd95)$dbp8}YcH*E@VMce?Ni&ZkjS<=5+)ge9m*-Dy zp_(b@;@}k4|#F% zZ)eL?<>`-*FA@Yj#j(eW2W!d3X1bJCaBGj+#S;3KYz0VA4NeK&C!+$yZJ3~2;FFAZ zMx+A&{gHvTALSLioB#U-Lgo5GXZPCm<5GO_mcq+4HvqtUTF^<$C$)|$eE`OGbd0|| z1W+3T#twrsiaF$;oOe(M!Vd_jI3W&o{sEl!|9Q|GerLK^Qd*n{@)28?rBh&uJq5+vOg0kOv z?(Co6tJ?{Gs&LBtb`=X)Vd%^LdhE)Ak6zb$2~L5#detl`Fe$dgSAsBQARnz;E>eP) z7?>u4*%F)o9t=4G5srq~#sA$)_=g*k$E?2TQRVobi`glPm^u@uh#Ka@x4tWvaC(^+ zl%|*5c1B(P?|a%X5bf4C`aVKo8?)FO9zNM+U!BC6{lCv8 z<<4GT-ubcbkUdCBhh0m)d}D?yc^F>BRI}&tSONwI0s8T;wwD*l=6HSRMY6e=%r}`M zcR_~MeZ*jT0nqM0-(Boq572J`7XS8`rHrBQ$1AuOt@Wkb6aV={aj*nL!e@e5z%`1>dC_QzaN3{iSD@pi723ffLa%z zx$ij~LKIOZ@ERJqT5MNE-JcD9w2&dKn;%H6UEpVfDC2WLw1=%HmV8 z>sSEZlBh*o?}AK}71CQeI_&G9uyF+QL$jTMt1;+y_^n~{j)~)muE^=`2EFn+>?G%5 zz1lw?V5odEqw_pP9cMW~3B03feA4>{Bq~z`lL}u62p4rx`p~1!Snn>UYB+WrwTQ(& z+v4q$N{HRj6Z|_&z4I`S_SV?{LP6*vAs|b15+?-ud&h{22E%q5a{t-DV??at!pNyt zEc3H@XAes3{B<8HG}vE-LmNq7K{Rr2h*^{r001pC5{Q?UWcQOfIpsV4{QmwX+&vN* zCM!sev3K|nE*ts+efRyZ;&EBYP=Jb^LHl>742pN_PKvBlBstD=4KX{8Jb4K@hr3Tf zI*V+B(ANsgb_@i&Y17Tq6|N5D#nyLd7n>{EiTZm;SmlD_uPaed9oZxR$=L+Wq#XTY z>FklGcxI&5W7J}a?yvN5JockKf1zi(f?DR+C; zk0b*&w)zT<=dF;+q~E*H?H^n_f?m}{d-RXrbwj_A*)ziFMnlTMJp(nsiT1HPo=4A+ zOs7ZBkR0-XxfvdpKZcc%v{P2^--fg)k$tZm5i28TG*~m0V~1N|3x~qakXuGH!p{&R zCC-trKw9+%X~E6Hq;$HzeqcH?oPQ7hmAs$x0X!z@EM8p&7!!qbZUN`r0HtUtBK3uE z=7+}W3or_al)C;|3uY8C#7{O}k);r3A}Z54QpO@+zmF)i8BiQSaY)wtJ`tlefCT-} z7*Lml(4$J=A`OLI{!m9>IKknG4q09W#j3Sr9~fmgMV@Hhu>0n@+0on(1&-!Go zd?h5}&2;m_=wDrzyo$(P|J=be1Gry?!riryxijN|bMNv?S=1P4$J&u_;==>1G^`1b zXgIv*!-D;aM$&FhEY85)j0NN&5O{NaNXM8Hv_&cQBqxk`SWy>E4C=f*zj*@I3cO4u zpn`ZZA(vk8{-V2o8wMYWGf0NoRclKXJZamJ#*i{~@&@SvW6`-qIX(#kP7wMJG>N70AJi@t}F+sX>dd?;NXP zdtTI#R3%6P5?my)&NWKOvF&N%{sdOgiF;Key|}O66%7oB8k_zm7@aR`eErTYh~PM^ zy*_qzv%>M5d|~VhcgdubJ&DE-KUXeMD(iJ{?E2fj2dCTbhhs%iEQ4a%n0c8p30~*Z z=Vv;`I=&DLe}SbuA6~o(4Ge|%>mYJEefbN7%3q=$77da=5BK;~y``j#ebJLEx|~_# z54;-BJYcUU^O3OQv$~pX?~=5(Vb`@AkDA~;zWpI6EeM^oB(Cq4CC@C*jkrd>)R`4c zoqL2OjISSRcfBTR_QuxX!A>WN&%cZHxFUNV)pO;rwR&s@ncP(ng zoO^OcA0={bH8F5)CyckfD>)dmg*~A_iaXEyxvZpIWVD!9U2JX4R&ZWev2y+EZ>}nF zAlwdWM;PUe60f?2S<9p>DB3J2ni>X%jSl5&zS{GV;RI-V+U}goKtm&}Q{)@J3bKn8 zdlgV$OmyWOTYh|qzGL2fX13kp#hRk)f;e@WMeG9sE~X0sz+YBGXU5;0LjUafX+W+h zL`n|?>vV42&W1y_R_P$PZu{isP_xHZD<4qQ#Xq3Z2fhDb+EebDrCDF3u^o zzoaNN=J$`X*-#t)v5Qg8hjDk>;}!*l?i6ztH4%3cKS~c1aI_MZHoYAs@M<{F@lVN4 zl8TkqJ8VlLb%o^f3rQU1BKW>mjk=6WE?4kNEm9VmDN8h3-X(AmuID<*;ReQxkf^gmC++LD%nvsy{cIy?A#QRj{P@7gUpK>;?tY}}Y5OB? z|2SSaDpgW8v8N_d1e?!^Kn3-dEf|aPVazX{N`-4v$_vb8O)pr+)e^DHHgMMYEvq*U zIcH>=?}TfUar8!}*~uCl1FI8vTV>2^VK9n}ZHNRzN&Lf|Ggo~5h3(hoX&mthcZ}Q1`xk2VMpmEIEDb#+z1GI6 zy!&Irv>2_Zb>h|jM{v9Gz2G1fdtXh)pqiFiO-T691&I@RKOucfwaQsk$Du-apZK{y zVO4|HYJ7um^QVE*5HnRx;)P4&ib=+WIWp2%Je({?m%e|%=2Vg7GYB#^snPgcM9>`m zb}x{C&R)M!%5>yzqL8LZo_<_mBPYu&s+TF`n?y78 z>OWO@r*>PyceryL{cG89m|vjgVc#_-?_K|#Y+^cAY~ z$ed~Jab(^LY>rvfi;?pPlo#~FRJ~y-(z$uSW$3ONBB@*+l7&lP-=Hs<&p<%<3v``& z2P}^-zWVu$n`h=Kv2rnkmX_nH>+5u)mh_`A!Kp%v$0BQ+UoEj?E%r*6qcqic-s*6y zYFb^Wl3iCZH(HCV)3~rh!h-IEC(_K&Z^gGsz276B8Z!73%BeAVoH!rysb5e6ynpjR zO1JEp5}&aZ2djF@<1r;EkusSTP|Q#XKl{iz`Vv~!WNheECQ@1^FGG{_TYv5k^3yb~T{Af0ysO zh*=W}D+~2IdKvw%KP{<0G z>fQTAl@vQ`%~y`4xEJgDu)6gN_nWq9Idv-RRi>VtL+#HK#^m>rj9CA1=?e}?LBYcf z`K64eK!w|y$~`)oE$trN@=B>rw04{5jl^PRO}KTci2^Ln3{v{UhPg>H-jQsWJUuoY zUte@3ns=>?CvsLEFtyTEC}lD;s0M`OYMrmhqZWwJiTXu)+;Q7OJH$G1_VPPhZRxKX z{A&I1sN=On=CmeJf3aFNB{_yH5g`L74y3Nq-(40bwr&}G>s-u5r>oc!^TKRUyOQwZ zjz>p7A3nq5JEL0b2aYDG&;7yRa=n{UDDOHyJ$X5c>+I}k>&w@>G;Y-dkNsTG-f?t9 zyjXQgx_=lM;zuIM+4UYz`yAziL+>rRsKj2N<&!e#4|fh7-CE%SF<#QCQFZvM#pR=L zk*U_szV#~GIP-g64F)ql?MasR#1tv>b33om({l~MfIaQ)Z5Wd*`x`pA#5>v{Rn;VXu=q#**v z_I)}Q`GRhTgS9{cKYivwlhvaS){_Lnru$oGk)`HzUV6f~=nQv(2ne$T zSj1=!FPi;fHj9~_S#6V})?k6p6^D8AXN;yy7b~?A-^e}9&w__jt=N)ZTQmBWonYO% z{E}5uenYl~s7o6|U`2zA z3y8e6_W>2NjoFViK(RB8N5TE!+X@0acXt5=3+jH3N_-(S0Y>@qR~BsFGjrIb5-za} z5n&+fGIB#M`(V+!*3-P$_{Qnm0z9b&rsYE0n?DeE^Z1Q`LE0P9y&sJUm5|y0$SS-d z32M)}aqH~liTsitn|&PvyIcFPTktp!uv$!`gbnw#^_r2rdH7221!E}u22twL5|o}~ zzrza#5529pQn>`^FSgtac-`^OyN}%YVkWerc!+{f?bO}tQTm1E8@xm@=LQgd#BB?% z$mKETB$Rm-$POgVfN$(x)Ib2>4<{(=oe>F!2ebqXq9|HuZbj-rM`9BEwL=nND_>dg ztev~%Rl~0R=HV#eqPv-Bo}csH&>kyKC?h)YNL6rhFttnsw&Iv@?Bx7Orff?pE&D3C4dX%73%}rPC?RsFT#UhAV^AJ~M2z&s%BOI*z5@1}hK=h+ zPv_~*xgC9DxFfGB;L2=+gRsP6ty^Hc%dYlt2`S^ALHnhsT>F9ZeRJdMG z;R1|B0?opwsy{1dkW?{FK|y71x3$nNXNBw}v=3@(3OyX>LirllG$=GG1!lcrK|fb8 zVGdvNLyBu2)$A*zhgiPy9{zhsS@pSbFXpLW4E?j!q3}t&F-#uI2p5H85bavZoI!h< zKXK5UD$)(L4U4Wl))oNvsls$xHPa}`9>uV3BFxys#%CDEI${Dr=+!{M+-c)n!UC?U ztgJauxsC2wucW|tgt@2!-e?l`ys+s!%4~Za=Kji*g`t-j^8|M= zRNJCGBGuUiw;HGLdABh6{&>acJqi{WHGg-I5Xx%&X2iYOBG$;=df`^~W*Mv7n-ML! z6oqCBbJ$zwa~p~7Kd4CEo>ASE@w0!(Z#-%t?yZE1gRysQR^_9QLRuo|=wjV8Y|nMT zljxzn6x)#w!H_&#_ySL9)QJnizl?`gUm6(O=n>iURF_Dq;6P{^pb*4|NfXyI$3hzG9mN5%1EC<5_R-2N20#v?g@uyeOFdQEH!p&B2pftx-K54lN!G>mcbX1a(UROSgiZTPA)C7l8e#@Q7oLOj&VUtxd@+IMYJm z7hJQwOph(wyu5C}qe{4ShHEYehr zd%J7-7s>o7_yjcG7`G5LsF;u^s2Dk|aX-M`ulxdzSk^pUT0`!z>nheuLFFN{V{x%! z_bwKWSOn80>OEF08Xb7qgpY=HOHNTnQma`DgZRBbrZm5uZEh?(W-)Ce@9(Y6Vx<kLjRI2zDN`NXV{RRxvQ!^@?2_Oxfw8tOGAX^S(0I(L zy%$e5QoTz^rVjk-8AY_&6#Ys`OSN?VQ))@{5Y?-Z5V)XNDR0HR-NXr$kqV+`ODbC2 z!Pi*INhaeh^&m7@-!a3y?4ck<^`@a;e8fr}RwdJY@U&F4(t335{+S$Km1B^3c|1Oy zul|_B+O|JK@ei1E`1rgZYD-jsY(0Ei4HWHR79L06Vxm55G@}F(+JSx?MZd?aLb5hL zgqV>9#^gWN^NP$Ca+B1L(rRh`X-C`miBeY4w1h!+Dzx&U#xhJ=5 zD?0m0@L*Pdb1$0fin4ehc1?-*(UNm_DSgV0xqj_1>8H5ZnlID&e9R8G6mH`U6_-ET zRZrAhySbGy&{0!hzTo1(yZ&5VpzFfK9a>qV#z*^`#o5)|SKLQEG)M|c`<1j~j}}@( zuaX?6@=h~4R?N*1Oz3L$qZu$rhQz`Jrtk+c*a?jpWlQ(*Su99G3IKVPT} zRph6Jx-b_XrTBfni+A&w8^1>eZ(~!JX}%Z2tQ6UP0WDGe=4LBg&-JXEbGuD!v2TXCXYAzHSxBn!$=qpNCY=m^$;AR zSN6v-or?|rudWn78(}VE@-nmwil!_V#KK~dvjDKgy6g!(S1+VkGc}2_i>Ql+0 z_ePJ4nyJ-PcUk!39?G43H{bFbBwD}1`Z?pBR>Ezm&amgPZVUUd*HUHWG`ob5z>1|e z!p<@Zzw1*&Gzi;{=z?L*GgNNTm~tJm%^Fs5nRL(sDloHk(my z$@RK;t3sTJe&&mm__8x0#xha;RUC)YERN*t^-K%f*OBEMDK@JA4=RztB;CuAsn>e& z|NPbhfPy?m4-S=`rT{zWv%yI4&RaRoipX?pK)SMP?$ zFNFCAHj~34mP`{^GX8boTynr{E6Itubfd6?Zk|_Y_tl4hNvPU?BnirV*T(T#dMvG% z!;?z~g?~bz_hW^`!1pO+|C_m>D7U(X(H|*5A|c9!`M(k!ouO9*u+IPAXBjiPF}c4- zSc(Q%3@^@4Mu)ncT^tEteJ!nj$0_p-j!zaNJym}eWA;y8x<+1tA_A6lueLI83EHUv z{Wz?!d#ET90I{9HpT_>*lOTo5kYmue`2RpOM*wd6YR~wlo)4SpK6)T#q~0F4NoOtB zq)FW$s*=$}h=E5BN4r$t$NB&K-4+u)p7kM*Ho<=(&)*A!&q|G<34LYx_jTU&g6r&z zc>2hr&HZvG48st%t9-}XT~QBTODE(kM{!GixQ#1i$)^>kK zszA$%F{)GmZesb~<&Q7_bt0g_CF)PALnAi+*Z3(2^F~?QewV=8f4@r+1K*~j&O5w8 zz%4JWL)}lUS}xPg3CHVR8&rPsudmX=g74RE6|o}y*Cn-aVlZY@Cc9(*>&f}7NJ#jV z3NNKzlYjHi_s2r~^Md+Kmsi@<{S&H{m^}>0_s?d0iE7h}z>9M}bR}RmQ$D2}RJ%>o z*65+Hb~0E_`0*lU219|rUO$EZ-?8@>I!2nnz2Xz8B>wkXQs!OXRmQClR#c5T+5P;| z`5x)59FmxRB~_8_m!MqF6dPVRijIl!dGw$~sS_(JI;C|ulIV8yBN>UO3YJYWEK>Bg zsI~xpTfQ+&w}ZxUEvYfTKR4{Z=vp7vXY_kMs;LusI2JYiHsvpVHNS|?IcjNfjV173 zuYe6Qb|{mD@C^QSoAo3m{P@}V*lz!Q^jBr!Xnev&#L6gU!bm)8jL_;wCH61jAg&QN zCM}1LJ1=Cpou0FXO+8JrMQZ+8JQ3NraQ<0gSL6Og<1TjU%HM}uUTvPRfG4}|~<_-+R%v77b`mi857d%=B> zt_xIg-lG4%Vd$eT{oy*p1G}=J3Fx2x0g9kDZEFHNW6&ml4v@M$WS!tDZxa%d^9P)1 zF3{hrCK>?DH%#NU@a8Fv#cL)sqDesfG;|nB{~jPz7`rVDlVI|hfV~peYR`^rzw}Ds zHdheRqWUYrv{|M1D4vCD8UQhZM<|WyU>nCj@GnOYCnvlq09SA8e$;=NgGe$^8>xmw ztzi3%$$t14K>BoV!bu(1sHgY^FOsy0f5GXGU<|bF7s(7B^SA)}A*g+;_Wa*CvitVW zB>Pu*0#67;HY8r01EhKeCi56GLkMwjfujG*IBcUi2_-7+$RS{?iK158-!ZzT*i79Z z+ARgu>h|1mTj6W~)fgW~<#%vWWD#Ypnb+^Nv=CEP1CaO&sG(&0bhSk)8K{G9=U=_w zTE0TN?JJ;S`tal1UJYYCLia>JQx<2QaIlcS$R0MP+xK6yEkWuS+FhPlFm z?B1AbU>0^ug(|`CwZ#jRA)x=a&9d88cLhhyN%o-}CaW>d-}vwf-%(xcFrx}8)=4Op z9_#DGlpwnNyfer)s)W-XNQSM;?V(XFn0DK`pE*!YFtS}5|8|qY41C8Q*hzQ^Hk(|5 z_Wf^UXKXtOUBqWvaxRmHYtpiGC9SQ5;g$f|iliSx>S7%(9X1qQrr@q$19)u@c{46x zDovifw260`U)*uS9=g`$Tnxhu@3Ypq)sp}9{@xux9k3j@zjG0L{V36{+zJx^0P1~6 zdqp57RJ&&$F3OsYa1dO|kE*kHw-Th;k6@_g+XL6|_WsI(=xCV8XlSQv7O-V+1W5{u zVY~@$g=_YK(0NXH%4=xs6!?yG*fLSx$d=O0kz$&4z8jxWow{HZ9%IRo5tCjve(}K? zb~*^jM>-Pk#6YZ&JT&pupZ!V=?CFhgK?{M6Jn`7~jn4&AvQyk|d>YZ6e%egd#{Du{ zMQ@z|NFB4xMR-%APw;YY{(WR+40k^V44!{0vN(h^*!U9S5o8NMrfx^kUBwjogbRZ& zKT)2?X4;ADZ#M1wb$3Ho?+=Wt=g>rspfmDVE1QI&Pi_pa=247gJXJwHtM8*KB?e_t zr1p0!^l+pSmu?|x79L5l8uuDaDb#m!YW20QN9c!ev7=wYr@iYihF62M?;0x&xOjfg zHAJSMNES@eKz`*CHa$OyreP*yV3w&i3!FKjyW~4Lvwknj7SRUqJ`1gD@gLt(zC^~clcLzk63R= znCL%>w^$){vnw=!jZ!Beu+nC+n?~8n62u_|0|XgYkB6Vs^>mBh?B98?dOP}WB~cuJ zc5ZwF{uyb9oLEq}-4ZiCQJ6@^YQLd59^1AFe;Ob1D;#)4_s4VrtEg8J#0bt zFJDR}xZV7SU)2|FzE8ZB+NlEAjBjpE7xv*MR3KcW>4$6M2QWjui;a;_4-VtVsWiiG zs?>dPucN{9cmB-#rM(BeNnHOPl4U4ijHbP5znlFMCQV!S??->*(>Pe0|ej*gYoo!j(bwd5d*ytA+N2GTFqb9JVcd)i=gQU&=R% z_wUFIS&zKa&0D`!@rE_24Ofk(ij38^@lgHSQ@bEx zdVNhTiQ>!TL{V=fYco-W8wtj5tQV0#L2>)~m|HS1m7UX=mb+lV;jZW3!Iz8YQ^!qz-kP~WJf@;@F^FVE(V~66QS2EIa`>E? ztl4`f5dHf{WY)>bsfcekHMc9cJurm#XU>Nlj@A51vs6*j4AbcjIrMg#PdLXns_lbo zamP8TFTGc)y#({ai~r6K{&mU^pc_Gtx#cG@MBMMF)&Toe(~|TrJkMTSElC*v#9!Iw z{<6z?*do95gv&I$)xl=&hzcC8H@V@gt*)}vA{^6t)a}hs3x*0^R7!KUMYEK?U#!UOldm9|bIC`X+Cic7Wn7dU6kLXP<3F%3P#C zXv7~J9}d6)3I2NdyjOd~jvosGXYqAF?M^|5oc7u5M&LHsc${Drae>#c@)%So9n;oV zb_yXpuL?-y9vY~SK0%bxABcBw2AP@jmC*bxY45lx*oumbOR1@J>mW}ao}3K{6s2QH zUvg=8jn9vCj$fU?A5=mgBR{uQKl~faDKGv&ALa=JdA%Ed_zG_VreWQ1``k~eG5rKW zGiduTi&nwz^sNQ3q(gd!mp!c3_XUTQE-N&Z5?{|FfMXQwn%<#q*|F+`TGqR5;iPNyRK7bo1WtFMSj^k+gB#EiS3#c+ zK=|{bqmbNKz9jdji4enH)cL6}<8)(%1 zM9VJvIBlr^Ybc^eAf~Ymkc3{|Y5e7+v-3+=B+^FS99Da^^U&#=7h1N-6Tg7n z@J1j*1(svzs8NM$5Nw$8ZCdQeGmSxX&g`LQ8BVRoulSyC_!fyc3C1&+o`}DQ3(Soo z`wE`0Nt?SEx4K=Z6S|LcWqK7{Y~7-D-vS)cVO3(@Px<|CT z7WxFuh<6pR@hTiMOu2ZhKhPMx8&jr5c3^!f;S_U7P_dXO(q=>I6VoMW;frV11d-69 zpHPmxfwsPJgz!@91Bbm;+(v0Jebus)Hf1@I_rt-+AH5E-GA0tX&ljZ>l{<%Ylwa}8cP&79iR9Z|?al1R%%4#8U(;%|}UaTbiU1UP`g6CzBo*d6r zr1V2|W=8=GNTt|)31Ld@VHhX(95e8UvAf$eJ5hHGLepLKtfMsFe0^3*lMev_orkay zBr0S*J#ZST_gi&%{2kV?aw!BCxBl`2-3CN5c5?IJIffvPqc0~v3_4JCdh4U0WJ6yE z3MuQwe)%ou{99jze!hNx*gJ<;v~DDN-AF=he3&ULfo&$X1mx)8GYNywk;H+;bG2cO z9Gpfq_J}IO&G7+|=MbT|rh)tG;u4p5aRaYlu5a2Ux0E*V^Ofgi;4NZEi58dhc|fU& zifA#-ZsAg8j#4NZyv;BM$l9I#2#}=z&4#ULyk=xL5>Huo#|gX%0Tf)G;W80(G?J5U zl~)rcq4!Tt(z+wP=7N(B-(%@0M#WXALc3VVTlh@=J-^^y*7wVtzr18qU6p_&yi6EL zZ(ekC@&b%ptSoJS?U|dA8cCO?F8cAAW54T$E7etX*DlGT78zu_vIOJtv`A%78s`NR ze;eVkbt45e@vf_-ZTz~gRlxVI-n+ueKFRP(ZCsD|N=}p((MJ6w4}rtE5MZLGr|-Ao z1}ROfW<1O>Fjb{DCk%D}o}&-Q^?OZ(?>8Zd=_kCZ^@tMfABpQu&~@Q4B*Z>NIrGez zb!G;TZEq?0%sAFXFU81P3-7}d%_iK%NRIbXaN>%N(2d>_S$2f2o3(S~l@~2<;Ezv1 zX=1NE5i~5aHQ+sVBSwZ$F`ky5Sq$EH|G?#Z&t}RRZPSs@`N+1V+)>dTeb3QLNNLsQ z%zhL$4|yQ^mAS-M2Y!8DpB!!YD8o#0=Ho&Bs8mt9puRuEj+ffXAS{K{6W*#~Rq+m= zlPxDKMsdS0#ikLRAAA67vM@ul-rk-)+k7PRT=lTw22`5e+ut=L`BH*`1M)ed8a_=V zeG^6zwAV}vG%5x+R~{A*CZHNX*<}5EJn~J#XWm1|N$`aoD!BaqcV)`RHZ?NP?ejUo zJBueo7TEa6!uj2cvQyJ?d64N~MXoZ|dh5=4W<@K90>|6Sew^oEY=OJTQ6LN3{`9aI3t2uG*#Q z;P`E_I-N5Na0L#q~POLPG53IUYU>Ct3j1 zA^r#gz*q)s&P-!!XCvdX_PhT;ggQY<6C+bDnYX+|q*lIZ1omf_nuNbTiA zV|(@X-nY5shx*b&NoB8RCU9x?$MUf{kWqJ;n#~W+JyYG_gA~ppBpo+hZ>w}eHe&6PUv?=H>gu?`>`C$OtRD#sB^cyZT;GXLFflfIF!hcU zDBt1gQ;6ZYRg(TXNS1+;4KLK9La$&)p?a(gS+AR95}O>t9deRA5e3llAG2IWuZ(YD zzEw&vl3)bilzCXXxIbSC9e^TV>8GaT3~0g^09vlfi*cPDBk3()jSCKa)4@>pc|uPE z#w+-WtiHNq3Ni8P=-H4N?!rcjYv>Y)N_tgWmlCk%BNH28e)lN{@`YjE$#7IMoS}uE zJowFUodz8~!ZLUP+$lr9{k{ysaKeYcTM80u-AueD_z*E(}Q^gn-f_!1GYKOuY4 zkB_NpW_)CxQEvc&_NeeqYOWClOu9?Gh8FL$HO_H9koE&h*W2dZlX)@ej)4(_QO78Z zFJBn}fck7}{@mpT)~AX$nxircaE9ZS)VzR(pm<>X~p<@&_xZwbJkzpOc)Ba zR1K0<3?7x2O6tknu&0@u=n(h)iP z2e+Z(R?|Z`vi2s4sM}zNW;L5DrzFqVo%bwGf95l`>xS;hgP*4AL}oWENe! zO*N`WHSnD05{>dwAF2M zBt|I7NGIJDWQ^{|`OJA~GYuVKT?XOl>kilDDNmD~4TmRt3~S0Zeu-#ZNc(x9q0ekB z6YA`4cwo+J0E+cQ#u~4Hn36sHgu&Qz`2$fiBg!T11g)QqSajl!;?-ujSQ{8aT5K4 zFs@FL%l3E8P&Rc&X_-u=)oEmxIR?EymQS#eU}E5=x^FxsL^aZ&tSMr58ldiztTv~XyKPgsKijxeCp>Dted3@_-kE~DnSwzWknqVTq7pH^~|{6_p2 zYBCJNqgKJa8p1VoAs4)`23}`LnPabM3&sj%SuhR~)J)eYBixX3E-~mHi$qi-REoWH z7Z{8Q*MLX}<0ngr^qieinNlkvsD$e>!WSy`6F&7?;P0drW8{m817E3hk!UV)Z36^$ z>ZUEuu$cc4yRH}K-x$%m0nVMJMxujjZkJ_LOe@CSDcfIZxr)F86xM(GhK)o55ps0( z^U3p%lcC8OA{UiUpb0so%1bmd;SFaqD2Uxe`AWGW9(&UT+2GH?5F|RA_+r1UR<_qZ zq95Om_?~q+Cz_dy)scBQw1np6>W)-lcVOTua*H!}jx_u7CvB`SLtVJXfs=3R9oOyO zTN{wDPkRaDzX7vbR!3jtzpZcWi9`l@K?MDUgV|a@Ko}3Vf4Ib06`M`1g6yGZrd`Ir zjGA&?c2mqfADYY_nmO|I&!c*#<}uHd;jPzFBRWt_0?Z;2Mpz1q#iE~*t*fU?z=>54 zRrHL%qRr1jPlMv=BAdOedvo;Xv%dVY>HPx@(z_H#P)vAog@|M2U$ULnABUs&FZac9 zDW|kw#5*cP+Nh@E;zVBTtbJJQ)k%)A9yiVYz!Ck>(PSlm;!urhOjw zFJvxNz`!LonI3f<-83y38s6avUc2#l3*fidV742D`yPPNP5%k!C$g8Z(KPHf zytU7{tOuJV8{JUI81-7$^19RGQQNqJHAIQ!w($eOGrAGHi0th-IyK?ki||I>R7Ht? z2a?~M2Qw2%eeMMFFxD6zuIp9T`}f{U?6mx*SuB0$RiN1tMBz;pcPGU&MbOmo)fxbS zilD335yuivM2VSyOIewMRx18F;I5MwGJzaDtGA0Dn3G8K@yygveex&}EO|<_#|7NvZI6JE0{__&7{6O>RAs{qwZdyaLbXu$AeN8cz znh3mVKHR4Vz@>m(xqxz`>uk7!9OR~$EvqqPUExGYQd}19)h4+k1CiFel$x~dNI4nQ zH4t)xw+_566PGhr=!bN~dX1mxTHZ?{>TU@+;rUooBvr+FoLeMEg-2H)Y7|eX{#l(`$blYY3OGS$xgpq zPtAS*@$>!BG#AtOHmikstogQ7j68#sThoKP$XRIV*>udIuZi%%&81PEk=z4(v0g~h z39SSa_vb4$PphrM?6=-EzS-t9*(^=*43R?HE)@lTsRb$hdLY=!M!&d$)KPWf<@auN zZ4D>g2Tv9aLu#)CI^>X&(|AIuS&ee$lYVnf7>*}<{FOxNh%UZxQWg%OB#1BR>Az?$ z8!Mz|!nGJj#IWtOYKGHeGSM(G^QPBkN55t;>ukVzJTd*}bTJqD7WwS;!BM z2^Drkc}UwThD+uK*4?uuPm@2hatl0J#ZOxo3%`Xwe`L90Jw%aY$0OR-B*(ZtwGz5W z8gpmedTaItzNMY0CD8;A5A$=!Z}@yXmc^%3c-CC_=EnSD?Dv)LkUxl{eJ@niF-vt3 zzD#c2(xkP_Dc@~Qr-D#bizIeE=+v<>`#a?NZNw?NJd7VOL_YknB2S0dc0z&CZ~Z7B zCNgQeB4g8nLhPa~uYrcNdJQ7pz54%h`N%L71oF>Yc380YHqq28VSmBclv8On) zZQ{!0EAG%dmKalcM5%R7PUYG_4}LdIGS%tohcxg0sblMw6^bS!zGUclt|IB<62qKX zjW!f^8Qxs)I((w!%?-+BcK&!q(@+d@PVh^fRmVIAtziQ781nd$n@)R8YNDEkDm)lEa{+M`C+}ur=Npt4Q-+)6ySqeq3xyW1iF{Oe zz#=X#R`mIf0FGmzCXJqB2zy2-#@ev2Ng~Uvs%)-+OBeG)I#4OI)cR-F)OKofJ5}HH zPkHDJYh0wYEn6_C0WG6;JVA?$JBIXj_e8~0W{Jji(#_i1J1Mh02@B&c$Jgzk(p>i{ z=gVkGqNO|^D*jPghugb@?_q7<1A7FL^xI)46a87T7Y)~x_uq=%*1{E}!MAP7lpFc^G)rPc_a`DN9j}o_ErblHg*=i_D?~!tCxAvtRiw!Wd zI!8F)pq}4xEf5`W<7#cR_-tK*<;^ToCJHsYdcW-HZlOZ=4!)KMQc?D8{HW7cbmlPq zqF7EUZBOGd3&U-^WHIs0KBv~JUD2M=r1LnQ`A*`EA4R}CJbh8Qy*KU0&@@Luouvzpjiu`z)$m2TT zN!2vsW}1R?B`dTdza*tGln9V~`P{FSq=hH~(39~JL!myzb=ag?yYUDpmXX{r}0 zG9PCzuxMDIZ{<+$;73!Gy3mQ8q%vuvo$@XB$S&&oU|CDp+%9~ONm=mheIOcZ_i`nQ z24~akhyF4ro8qhCh|ZtW$=C8@3{QX~q=K$~0BE}YoFQ~^6FKWzCWT@O6|?{ShLx1D zHYRs#?RfGX@CjGF^Z1qiGA20^CMvXQZ+7l-3^u>wWXu#j5i|bX(0_w@}(S3 zuYzHmjJ3iv3ke2+0NVV|c0nirVm*a8sfuUKo->xCPlN=Dm?}?KCyYunxtKtY8amVo zO?i@+NuWIawOA-5lud(3&KS=rU+MPIP&V|DCVgLQNIy2b;&Ypt++%Q!4swHEcmsI& zgmsG#Zx#hJNszV)*aYQ>Z;F$h%@>!U-*HNnTOOl~DsR~+KW>_QRbDb)Np&>Hz5Fq5#mq{#QUuh;m=4Rgf7G?_IuQ0M z;4OZH+5=+-;EKOWioJT{k(Y2VZzo;WU_O2N@qP3k#*f}9ykZVIi`?;R6O%h?&=|UZ z>agQ{Z~G6)38%u2_Qb^cpLAiVpBd2G4vYhof;rYpGrp)fT+?3k91~fA%Mb&Pu*`xuy&jS8y&G@@?xB@?FvO$eMPyf+j5!DuG#S``afJBOA{&m^c!@Gl^Wo*SlJboo5q=56)_X{ zj6%N&_0R{&ds;`A(EEL+XOBM5WPmB6APZqomd6LiyzxZ!r469;Y=F8kO5=UdI90?z#G+K8HOWgY}W~9|L-rAVBU6P2N^30eCN{ zEpEk5VBmz1|IrNGaFD>xB&nQ@h8sFI?V8U6@BEEP7*pjbR$Uv$$VDKJ7n1Q6j#&MMc zV8iaNx`9=`MoQ`+{Cxe|tC|=o^SQ@rnZH166W<~8e;+ZX@U4;5i<3{~`dYODP-NpX zb9n8|umklEuBn$;y*fy596^=2?zQny*TMM^$hxZE08iPoJif`hPl!*p=hWfaz_%ku z_@lXYMX&zFyI;@hVeK*WG6<83I40ZRA-Z$%e_|jxu0n(nB6Ea>39o!89(r zQ+#(-VCbolAb)z;`Sp_ljv{Y>U7iBt>HIEqo+9-Ie^e&XHUDvYQ}&e{XhG;iMn2J< zltjp7AlB-Ud43&i8DP6P7XX8?>!IIrZ2$0eukS2GP*nJMD$ef zGgY}zaQmk01mCPj&d6y9>Cf-F72b4+K$NpSoeys5x{ z2f|h3Oh6InVc|di)hEm8v$qAEs3>U|m9+KtGJ787#@Eu%D!tAfZ#&yz%FyqCe zC6%qjY4k3bYu$aY#u1N`iT29LfJAi1o$F--r)8 zIt&or$xhY^Bz~n zGKHH=45JTVn8D)DPf7A#)&DwZCVKW1+4ao|few>9rxFbZjVQGIqDTWqyB(qJI?Muh}g!PjXPq_jGXKon05cl_B zOiE2n%Mmbn=HozQezgkQx9={T4n?eU-=ajrqG`;{2;(Za^s#E!E35ZKbx0vx;veY5 z-$cwmQc$)$P^$*uFvqx}Sq>%D(!8s9{$p#Na0i0@ZE*tMz(+c{wb|Oy;g-tGvjvQ_ zl=@r12oJu6d=5Vy`sUF83{Plo*gC#=8e;eiE|Qtm@Iovw{^oWT_9yhx6L< z_cgb?+K0G1hgOI%k+ezBU6oyZZtGu+1eF{>;^ad6SI(HDKmJw+E{x=9Q4;bR?A?31 zy7Cs+>#N3dYO-ZdEBv)DcTm9vUVWh1naWP~GUmJX{00Jv14o%}`*veq>tJ{}O!Auk zh`P&yj@hHfY@xd*Rk7Ye8MpVunQ6BSnhFc>mvJBB7Ytr|OgjX!1P?c>vhU^yRK1C^ z`30ia6l}Y$yM-x6YuF)ysuy9-GdR2BBkI}I=ipj6#hW`NaaTiCWv*TcLUu!dFNo0V zbu>UB%)UI1Jss$o7V#@zP@jCcjs&4;?nZqj68ts!CqD<;nUBIBuI> zdzH|Ipd|hgxc*Ie{Y%Zn;{9J=xL9Ks`Rx@;pQwD2ZVIqe?XouoU1oLyw+pL7fiO%@ z{*>)V$=&O6Ln-rO|3@f_EjB9?r)RHLeUi>R#T*Kq%jG4z;#c+myS@_M2;bWkUvFCl zAQwwYA~MOGhB|4QA8-gE6w@V_3)dREr{x4?*5sw8eT^(cU)(ec99Eg=$EBgYpov~g zPLI&GW&XsniqJ|Jqn`Ysr|AI$6+NL%EE98oNB-hvcIGTA@nXKYvfD8IC+jM)_EZd) zckG=#T;xE~NoG3^T48}SPd!Kn7mm{axoWf`m5ApMnfx~1ZbQH-fnn18MErOr6M=Ga zbn(Oj)v*WA;Mvm_OU`*}0^G`-&mD(bj~A>%0? ztA)VT^ajF6*Vc3W(=S>RA*kY7e}|mxRfWx1mLS3B9od|!d24EU0+Y6Z{lTJKLCsu0 zE1^|S)#}3usZ}rvNu+LtP9QEJ!P}-3=MSKKKUc1Q+IlI@{#w|i`|C@0F*RmWeb9u= zvhQiQ6)LJIZ?dTQ`qS1jvERn0fH@VdOEX(%woiyqEFV(^ypH{oxJevqSJ&8O7G21uLd{$3%3ZB1CN;Ucc8!2TQTRJ^Nsx% zPZZ^@RJ|S}c;|14OFS$q+O#g581|>iM|#hC^2Ey)%;t99{Occ&c!PR;m*40oyCqUk zD3hVmRm}>EPv^v;GV^t)F;xcJqJ2_ofnI2rBvQkFN-Dx|3eCo+?(e7sNiWReE3ar| zo{3E$7x(@9)5LiJpDo*#u);f5;zfqeQDrsw@6a4k#%k}D-KoEIoCGp|A)m!JN==LN zrBVQqruAPuk%Ta;TZ`Jh|9($@k)1Iq3DtoyZDqm5e>d5GZT#&}?kxvypLzp8?tcL9 z88Q53m&{{{%Ky)uCZh%(=JxdS1OMMJM~nKclx0_*yTh)iLj->`FX^e4V zBU~>SyxlzSzI$zL{=T!Z{jb)^UiahazB2Z`C{|9-cMscp%I51vqd6Y?ywPZNTgvHS zyVF&`Mx(KRys2ys<9Ph0(YU#}QJF-kju=T`)Hn^rn1}J*AsBlN6;wBNH=&u-dd?mA z*7cltXXDlOHNV?wInZa3t&Q0N6QAMkJoZ8v78vntTG=dc(|UZj@i zl~@=udGcyIibJ^M9q>>Uqre-4Vlq}w;Ou?K`hA}p+l?tCgT~ZW33yKkv2~h3Y&T|> zQx7JwXu5w*qIlkN98P#+R=&%eYuRGpLTlrp=geW#OP|6dBAS)Wz4-PGZ7Jw}OZjFY zV@si$aetrlR^s=37L}`ZgzqidEL3T?7Wi40l5Fp$uugpE^96F|aasr_#r2{zQ=FE! zLUyxoYvI`ON!A_c&v{48&K4(W4@Ufx5TiB1VUGo0SacG418)%sv#v~fGJ7MF8p5B9 zf~M~cf|7k)wx6IoW9EQ~IX>jf-_an7l9L$}KFF|av6vTKAqdmg2){;_f{iyAy@8W| zBls(MCyj`(Sii--c&^fML>w1uw7h8Sv%8MN{8F<(IrvkYk@8lVpBD|h^L*aD8<#3G zi1Q*giLRD#CLu!>quJ3^j;ls92|lVd~VR7NYu=LQGvH zwvBA0*%T3M5=kCvLJ7@Nr;0lZ@(kISSFvZ-NpY9o#^rh+_d6A6U)+?TXFT%0@(Q#F z;&#v%%Zb%V>MeMcgq`f>Y5Zk5RigXi#^|~Do+1yu-~mc!?JNw*(9ar5v8N*P;!Hry zJw>W+n5L~EY+}pANY~7a>uKdP5hv`)Mq;)}RB*j;y?Na#T}CuyZuXXB0oB^IOuVu! zSF7Ul*e+gRA^HkF4kA0_gD~l$vXBOJkGk)~_uhiGyoKO1P{TdxoC z7+?9lKI-)Y501`|g%OXDa=`sBJci--m{0g`_keYTFG2wS)(g2yDD4eG&I5UJ|CHT+QE^%!swFR8d2vnync&wKPm@ z%hIG&X)0V3PyxY}njl!UR4tP#^juO!A1hTBh8t&EmIXtJg>9{ts#>akX{o}Ps#t?) zhd$74%`)vR1%rNJ(}sx^(QV5_rj-&ShZBu zQuX&p)zJ@8Dnd-T*0V6tHKM^q(p0H5QzH~OKoN+SQ7hFlrLvw&sq{xHm7!@A;*eOj zt|M&JN>wY>KVPYqXo;lMawS>Gc8RFCne)ys#LUwK;(#;v(X?Md!fMemDn#d0z*pIx zo9_i?f>*=3Y7}<+G@Yn0C&fgwElO-e?+d;0P-Q|4)ikj|2_e{kk-{#<#=?!CUsdEC zY=&XZfw_H@H$RnnK48vW4&G;el>Bt@Dmxw&M0m*t`9gh|=dbI@LlOsO9vzZ+SxDBT zo&LyUKZUgPsid{2ii-PQYm>IBa!uM_kF=yF?F!ObPa&=ToFnZj-Ysfl+fsExu}uwI z1Dpx0#aL4{i(16M7+Ju3y=Lt{owcZD?e}1<_MAg)&Dxr^Yfk^3_M@g@6B}!YQXRvT zj=Z+Rr9TS~e1Gw#p*ZF^{>g06{kWuN!F(D5ra{C)^)>J6o5*idS<@qNYc za=}A+5&mg*%vfXZ@+n*3mLa#m2}VFA%S6*_>zBC z`Oy@tnuxwI3KF}f;7g|9kDiEP6RF6wOwGoIL8xt-TS|FH;@762Ra5ZgQt;^eFtCtq z_CEC7Y%u4O$Yg0DIcXZrM71VR#u;HWuc1nu%Wn#WUW&2 zS>ZXT6dkZ})D>&s^Z8%zC!WirL*ZO=x0scbi|P#e!i&7Cat2hPnPgk=lnr>aM($U8 z1i(EIz?g??!2jTU+!gsetoiO?x^pNK9ix@`Px8W7J(7|lkJ+d~YLaFYT!x>*$8{fJ zyYTqUO6ann1rNj|ULLm1z#C<<yJ}txV?FOt7s&Oefe52j;Teb7-@t z&`<&ICvNTsgX|-4GhbX0mz)V?a-Q7(J>4-pOIr_f+h{}B$xH)8Cq zh0hZRT)bY!h%$kW*dXBXWAG6$qBGT^XyyUqBkd+@>kc!?4J&#wQe zeIT0ppSypyJNv`t@Z=m(e0BN3cLsa#**!VOpN3Zl7k(4U_x5SGOFn%5ba{-L?aTdU z=QCj5-TF6s?;m#mkoV*Nr+cKHJY>HjRDOnTdB37tPGLS8=4QMVPM4odp8v|I!`hnK z`Db=2T9M&<#$~oY|4BP)Rs5WJgW-1#pspBy5A%8LPj19Xz@_#qnTMQl=AH!p-D*)f z6F2K-$^&$*H2GxQ=z4KkKhs?P+{7iVF@ohp;)cvRPp5n7n2QKSAQPy{UG+jhr0b@-HGR=7r>%#`B<mQ^*BEZtXpPH^!p;Y~n8l^b!E> z&=p%%eCfH_>DPR~Mimzitn2vf>VQjn7gtHNIOUp-?Pq+DQ?KmXIdJ-R4o$wDgI4rG z_SF@$scNAW3Atdfh>a?xpyFwd3Ua)vuwM05R)|WXu{b8LYuVZOA1g`(!9_*@0G= literal 0 HcmV?d00001 diff --git a/doc/content/toolstack/features/snapshots/vm-snapshot.png b/doc/content/toolstack/features/snapshots/vm-snapshot.png new file mode 100644 index 0000000000000000000000000000000000000000..4b193fc830cd21abfd5ad38a54c4bc9a73740100 GIT binary patch literal 40967 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 literal 0 HcmV?d00001 diff --git a/doc/content/toolstack/features/snapshots/vm.graffle b/doc/content/toolstack/features/snapshots/vm.graffle new file mode 100644 index 0000000000000000000000000000000000000000..e8a47a6f88385e9ecaaa6f8752214903e7a288c1 GIT binary patch literal 2382 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 AGXMYp literal 0 HcmV?d00001 diff --git a/doc/content/toolstack/features/snapshots/vm.png b/doc/content/toolstack/features/snapshots/vm.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c4f89837f5ed823565724fbfbf48777c1c8f88 GIT binary patch literal 16325 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 GqW%YQi(1M6 literal 0 HcmV?d00001 diff --git a/doc/content/xapi/_index.md b/doc/content/xapi/_index.md new file mode 100644 index 00000000000..4e185809f9f --- /dev/null +++ b/doc/content/xapi/_index.md @@ -0,0 +1,117 @@ ++++ +title = "Xapi" +weight = 20 ++++ + +Xapi is the [xapi-project](http://github.com/xapi-project) host and cluster manager. + +Xapi is responsible for: + +- providing a stable interface (the XenAPI) +- allowing one client to manage multiple hosts +- hosting the "xe" CLI +- authenticating users and applying role-based access control +- locking resources (in particular disks) +- allowing storage to be managed through plugins +- planning and coping with host failures ("High Availability") +- storing VM and host configuration +- generating alerts +- managing software patching + +## Principles + +1. The XenAPI interface must remain backwards compatible, allowing older + clients to continue working +2. Xapi delegates all Xenstore/libxc/libxl access to Xenopsd, so Xapi could + be run in an unprivileged helper domain +3. Xapi delegates the low-level storage manipulation to SM plugins. +4. Xapi delegates setting up host networking to xcp-networkd. +5. Xapi delegates monitoring performance counters to xcp-rrdd. + +## Overview + +The following diagram shows the internals of Xapi: + +![Internals of xapi](xapi.png) + +The top of the diagram shows the XenAPI clients: XenCenter, XenOrchestra, +OpenStack and CloudStack using XenAPI and HTTP GET/PUT over ports 80 and 443 to +talk to xapi. These XenAPI (JSON-RPC or XML-RPC over HTTP POST) and HTTP +GET/PUT are always authenticated using either PAM (by default using the local +passwd and group files) or through Active Directory. + +The APIs are classified into categories: + +- coordinator-only: these are the majority of current APIs. The coordinator + should be called and relied upon to forward the call to the right place with + the right locks held. +- normally-local: these are performance special cases + such as disk import/export and console connection which are sent directly to + hosts which have the most efficient access to the data. +- emergency: these deal with scenarios where the coordinator is offline + +If the incoming API call should be resent to the coordinator than a XenAPI +`HOST_IS_SLAVE` error message containing the coordinator's IP is sent to the +client. + +Once past the initial checks, API calls enter the "message forwarding" layer which + +- locks resources (via the `current_operations` mechanism) +- decides which host should execute the request. + +If the request should run locally then a direct function call is used; +otherwise the message forwarding code makes a synchronous API call to a +specific other host. Note: Xapi currently employs a "thread per request" model +which causes one full POSIX thread to be created for every request. Even when a +request is forwarded the full thread persists, blocking for the result to +become available. + +If the XenAPI call is a VM lifecycle operation then it is converted into a +Xenopsd API call and forwarded over a Unix domain socket. Xapi and Xenopsd have +similar notions of cancellable asynchronous "tasks", so the current Xapi task +(all operations run in the context of a task) is bound to the Xenopsd task, so +cancellation is passed through and progress updates are received. + +If the XenAPI call is a storage operation then the "storage access" layer + +- verifies that the storage objects are in the correct state (SR + attached/detached; VDI attached/activated read-only/read-write) +- invokes the relevant operation in the Storage Manager API (SMAPI) v2 + interface; +- depending on the type of SR: + - uses the SMAPIv2 to SMAPIv1 converter to generate the necessary command-line + to talk to the SMAPIv1 plugin (EXT, NFS, LVM etc) and to execute it + - uses the SMAPIv2 to SMAPIv3 converter daemon xapi-storage-script to + exectute the necessary SMAPIv3 command (GFS2) +- persists the state of the storage objects (including the result of a + `VDI.attach` call) to persistent storage + +Internally the SMAPIv1 plugins use privileged access to the Xapi database to +directly set fields (e.g. VDI.virtual_size) that would be considered read/only +to other clients. The SMAPIv1 plugins also rely on Xapi for + +- knowledge of all hosts which may access the storage +- locking of disks within the resource pool +- safely executing code on other hosts via the "Xapi plugin" mechanism + +The Xapi database contains Host and VM metadata and is shared pool-wide. The +coordinator keeps a copy in memory, and all other nodes remote queries to the +coordinator. The database associates each object with a generation count which +is used to implement the XenAPI `event.next` and `event.from` APIs. The +database is routinely asynchronously flushed to disk in XML format. If the +"redo-log" is enabled then all database writes are made synchronously as deltas +to a shared block device. Without the redo-log, recent updates may be lost if +Xapi is killed before a flush. + +High-Availability refers to planning for host failure, monitoring host liveness +and then following-through on the plans. Xapi defers to an external host +liveness monitor called `xhad`. When `xhad` confirms that a host has failed -- +and has been isolated from the storage -- then Xapi will restart any VMs which +have failed and which have been marked as "protected" by HA. Xapi can also +impose admission control to prevent the pool becoming too overloaded to cope +with `n` arbitrary host failures. + +The `xe` CLI is implemented in terms of the XenAPI, but for efficiency the +implementation is linked directly into Xapi. The `xe` program remotes its +command-line to Xapi, and Xapi sends back a series of simple commands (prompt +for input; print line; fetch file; exit etc). diff --git a/doc/content/xapi/guides/_index.md b/doc/content/xapi/guides/_index.md new file mode 100644 index 00000000000..146d051f266 --- /dev/null +++ b/doc/content/xapi/guides/_index.md @@ -0,0 +1,7 @@ ++++ +title = "Guides" +weight = 1000 ++++ +Helpful guides for xapi developers. + +{{% children depth="3" sort="Weight" %}} diff --git a/doc/content/xapi/guides/howtos/_index.md b/doc/content/xapi/guides/howtos/_index.md new file mode 100644 index 00000000000..6f5b5b01e3f --- /dev/null +++ b/doc/content/xapi/guides/howtos/_index.md @@ -0,0 +1,3 @@ ++++ +title = "How to add...." ++++ \ No newline at end of file diff --git a/doc/content/xapi/guides/howtos/add-api-extension.md b/doc/content/xapi/guides/howtos/add-api-extension.md new file mode 100644 index 00000000000..487c4997642 --- /dev/null +++ b/doc/content/xapi/guides/howtos/add-api-extension.md @@ -0,0 +1,79 @@ ++++ +title = "Adding a XenAPI extension" ++++ + +A XenAPI extension is a new RPC which is implemented as a separate executable +(i.e. it is not part of `xapi`) +but which still benefits from `xapi` parameter type-checking, multi-language +stub generation, documentation generation, authentication etc. +An extension can be backported to previous versions by simply adding the +implementation, without having to recompile `xapi` itself. + +A XenAPI extension is in two parts: + +1. a declaration in the [xapi datamodel](https://github.com/xapi-project/xen-api/blob/07056d661bbf58b652e1da59d9adf67a778a5626/ocaml/idl/datamodel.ml#L5608). +This must use the `~forward_to:(Extension "filename")` parameter. The filename must be unique, and +should be the same as the XenAPI call name. +2. an implementation executable in the dom0 filesystem with path `/etc/xapi.d/extensions/filename` + +To define an extension +---------------------- + +First write the declaration in the datamodel. The act of specifying the +types and writing the documentation will help clarify the intended meaning +of the call. + +Second create a prototype of your implementation and put an executable file +in `/etc/xapi.d/extensions/filename`. The calling convention is: + +- the file must be executable +- `xapi` will parse the XMLRPC call arguments received over the network and check the `session_id` is + valid +- `xapi` will execute the named executable +- the XMLRPC call arguments will be sent to the executable on `stdin` and + `stdin` will be closed afterwards +- the executable will run and print an XMLRPC response on `stdout` +- `xapi` will read the response and return it to the client. + +See the [basic example](https://github.com/xapi-project/xen-api/blob/07056d661bbf58b652e1da59d9adf67a778a5626/scripts/extensions/Test.test). + +Second make a [pull request](https://github.com/xapi-project/xen-api/pulls) +containing only the datamodel definitions (it is not necessary to include the +prototype too). +This will attract review comments which will help you improve your API further. +Once the pull request is merged, then the API call name and extension are officially +yours and you may use them on any xapi version which supports the extension mechanism. + +Packaging your extension +------------------------ + +Your extension `/etc/xapi.d/extensions/filename` (and dependencies) should be +packaged for your target distribution (for XenServer dom0 this would be a CentOS +RPM). Once the package is unpacked on the target machine, the extension should +be immediately callable via the XenAPI, provided the `xapi` version supports +the extension mechanism. Note the `xapi` version does not need to know about +the specific extension in advance: it will always look in `/etc/xapi.d/extensions/` for +all RPC calls whose name it does not recognise. + +Limitations +----------- + +On type-checking + +- if the `xapi` version is new enough to know about your specific extension: + `xapi` will type-check the call arguments for you +- if the `xapi` version is too old to know about your specific extension: + the extension will still be callable but the arguments will not be type-checked. + +On access control + +- if the `xapi` version is new enough to know about your specific extension: + you can declare that a user must have a particular role (e.g. 'VM admin') +- if the `xapi` version is too old to know about your specific extension: + the extension will still be callable but the client must have the 'Pool admin' role. + +Since a `xapi` which knows about your specific extension is stricter than an older +`xapi`, it's a good idea to develop against the new `xapi` and then test older +`xapi` versions later. + + diff --git a/doc/content/xapi/guides/howtos/add-class.md b/doc/content/xapi/guides/howtos/add-class.md new file mode 100644 index 00000000000..9e4680059da --- /dev/null +++ b/doc/content/xapi/guides/howtos/add-class.md @@ -0,0 +1,452 @@ ++++ +title = "Adding a Class to the API" ++++ + +This document describes how to add a new class to the data model that +defines the Xen Server API. It complements two other documents that +describe how to extend an existing class: + +* [Adding a Field]({{< ref add-field.md >}}) +* [Adding a Function]({{< ref add-function.md >}}) + +As a running example, we will use the addition of a class that is part +of the design for the PVS Direct feature. PVS Direct introduces +proxies that serve VMs with disk images. This class was added via commit +[CP-16939] to Xen API. + +## Example: PVS_server + +In the world of Xen Server, each important concept like a virtual +machine, interface, or users is represented by a class in the data model. +A class defines methods and instance variables. At runtime, all class +instances are held in an in-memory database. For example, part of [PVS +Direct] is a class `PVS_server`, representing a resource that provides +block-level data for virtual machines. The design document defines it to +have the following important properties: + +### Fields + +* `(string set) addresses` (RO/constructor) IPv4 addresses of the + server. + +* `(int) first_port` (RO/constructor) First UDP port accepted by the + server. + +* `(int) last_port` (RO/constructor) Last UDP port accepted by the + server. + +* `(PVS_farm ref) farm` (RO/constructor) Link to the farm that this + server is included in. A PVS_server object must always have a valid + farm reference; the PVS_server will be automatically GCā€™ed by xapi + if the associated PVS_farm object is removed. + +* `(string) uuid (R0/runtime)` Unique identifier/object reference. + Allocated by the server. + +### Methods (or Functions) + +* `(PVS_server ref) introduce (string set addresses, int first_port, + int last_port, PVS_farm ref farm)` Introduce a new PVS server into + the farm. Allowed at any time, even when proxies are in use. The + proxies will be updated automatically. + +* `(void) forget (PVS_server ref self)` Remove a PVS server from the + farm. Allowed at any time, even when proxies are in use. The + proxies will be updated automatically. + + +### Implementation Overview + +The implementation of a class is distributed over several files: + +* `ocaml/idl/datamodel.ml` -- central class definition +* `ocaml/idl/datamodel_types.ml` -- definition of releases +* `ocaml/xapi/cli_frontend.ml` -- declaration of CLI operations +* `ocaml/xapi/cli_operations.ml` -- implementation of CLI operations +* `ocaml/xapi/records.ml` -- getters and setters +* `ocaml/xapi/OMakefile` -- refers to `xapi_pvs_farm.ml` +* `ocaml/xapi/api_server.ml` -- refers to `xapi_pvs_farm.ml` +* `ocaml/xapi/message_forwarding.ml` +* `ocaml/xapi/xapi_pvs_farm.ml` -- implementation of methods, new file + +### Data Model + +The data model `ocaml/idl/datamodel.ml` defines the class. To keep the +name space tidy, most helper functions are grouped into an internal +module: + + (* datamodel.ml *) + + let schema_minor_vsn = 103 (* line 21 -- increment this *) + let _pvs_farm = "PVS_farm" (* line 153 *) + + module PVS_farm = struct (* line 8658 *) + let lifecycle = [Prototyped, rel_dundee_plus, ""] + + let introduce = call + ~name:"introduce" + ~doc:"Introduce new PVS farm" + ~result:(Ref _pvs_farm, "the new PVS farm") + ~params: + [ String,"name","name of the PVS farm" + ] + ~lifecycle + ~allowed_roles:_R_POOL_OP + () + + let forget = call + ~name:"forget" + ~doc:"Remove a farm's meta data" + ~params: + [ Ref _pvs_farm, "self", "this PVS farm" + ] + ~errs:[ + Api_errors.pvs_farm_contains_running_proxies; + Api_errors.pvs_farm_contains_servers; + ] + ~lifecycle + ~allowed_roles:_R_POOL_OP + () + + + let set_name = call + ~name:"set_name" + ~doc:"Update the name of the PVS farm" + ~params: + [ Ref _pvs_farm, "self", "this PVS farm" + ; String, "value", "name to be used" + ] + ~lifecycle + ~allowed_roles:_R_POOL_OP + () + + let add_cache_storage = call + ~name:"add_cache_storage" + ~doc:"Add a cache SR for the proxies on the farm" + ~params: + [ Ref _pvs_farm, "self", "this PVS farm" + ; Ref _sr, "value", "SR to be used" + ] + ~lifecycle + ~allowed_roles:_R_POOL_OP + () + + let remove_cache_storage = call + ~name:"remove_cache_storage" + ~doc:"Remove a cache SR for the proxies on the farm" + ~params: + [ Ref _pvs_farm, "self", "this PVS farm" + ; Ref _sr, "value", "SR to be removed" + ] + ~lifecycle + ~allowed_roles:_R_POOL_OP + () + + let obj = + let null_str = Some (VString "") in + let null_set = Some (VSet []) in + create_obj (* <---- creates class *) + ~name: _pvs_farm + ~descr:"machines serving blocks of data for provisioning VMs" + ~doccomments:[] + ~gen_constructor_destructor:false + ~gen_events:true + ~in_db:true + ~lifecycle + ~persist:PersistEverything + ~in_oss_since:None + ~messages_default_allowed_roles:_R_POOL_OP + ~contents: + [ uid _pvs_farm ~lifecycle + + ; field ~qualifier:StaticRO ~lifecycle + ~ty:String "name" ~default_value:null_str + "Name of the PVS farm. Must match name configured in PVS" + + ; field ~qualifier:DynamicRO ~lifecycle + ~ty:(Set (Ref _sr)) "cache_storage" ~default_value:null_set + ~ignore_foreign_key:true + "The SR used by PVS proxy for the cache" + + ; field ~qualifier:DynamicRO ~lifecycle + ~ty:(Set (Ref _pvs_server)) "servers" + "The set of PVS servers in the farm" + + + ; field ~qualifier:DynamicRO ~lifecycle + ~ty:(Set (Ref _pvs_proxy)) "proxies" + "The set of proxies associated with the farm" + ] + ~messages: + [ introduce + ; forget + ; set_name + ; add_cache_storage + ; remove_cache_storage + ] + () + end + let pvs_farm = PVS_farm.obj + +The class is defined by a call to `create_obj` and it defines the +fields and messages (methods) belonging to the class. Each field has a +name, a type, and some meta information. Likewise, each message +(or method) is created by `call` that describes its parameters. + +The `PVS_farm` has additional getter and setter methods for accessing +its fields. These are not declared here as part of the messages +but are automatically generated. + +To make sure the new class is actually used, it is important to enter it +into two lists: + + (* datamodel.ml *) + let all_system = (* line 8917 *) + [ + ... + vgpu_type; + pvs_farm; + ... + ] + + let expose_get_all_messages_for = [ (* line 9097 *) + ... + _pvs_farm; + _pvs_server; + _pvs_proxy; + +When a field refers to another object that itself refers back to it, +these two need to be entered into the `all_relations` list. For example, +`_pvs_server` refers to a `_pvs_farm` value via `"farm"`, which, in +turn, refers to the `_pvs_server` value via its `"servers"` field. + + let all_relations = + [ + (* ... *) + (_sr, "introduced_by"), (_dr_task, "introduced_SRs"); + (_pvs_server, "farm"), (_pvs_farm, "servers"); + (_pvs_proxy, "farm"), (_pvs_farm, "proxies"); + ] + + +## CLI Conventions + +The CLI provides access to objects from the command line. The following +conventions exist for naming fields: + +* A field in the data model uses an underscore (`_`) but a hyphen (`-`) + in the CLI: what is `cache_storage` in the data model becomes + `cache-storage` in the CLI. + +* When a field contains a reference or multiple, like `proxies`, it + becomes `proxy-uuids` in the CLI because references are always + referred to by their UUID. + +## CLI Getters and Setters + +All fields can be read from the CLI and some fields can also be set via +the CLI. These getters and setters are mostly generated automatically +and need to be connected to the CLI through a function in +`ocaml/xapi/records.ml`. Note that field names here use the +naming convention for the CLI: + + (* ocaml/xapi/records.ml *) + let pvs_farm_record rpc session_id pvs_farm = + let _ref = ref pvs_farm in + let empty_record = + ToGet (fun () -> Client.PVS_farm.get_record rpc session_id !_ref) in + let record = ref empty_record in + let x () = lzy_get record in + { setref = (fun r -> _ref := r ; record := empty_record) + ; setrefrec = (fun (a,b) -> _ref := a; record := Got b) + ; record = x + ; getref = (fun () -> !_ref) + ; fields= + [ make_field ~name:"uuid" + ~get:(fun () -> (x ()).API.pVS_farm_uuid) () + ; make_field ~name:"name" + ~get:(fun () -> (x ()).API.pVS_farm_name) + ~set:(fun name -> + Client.PVS_farm.set_name rpc session_id !_ref name) () + ; make_field ~name:"cache-storage" + ~get:(fun () -> (x ()).API.pVS_farm_cache_storage + |> List.map get_uuid_from_ref |> String.concat "; ") + ~add_to_set:(fun sr_uuid -> + let sr = Client.SR.get_by_uuid rpc session_id sr_uuid in + Client.PVS_farm.add_cache_storage rpc session_id !_ref sr) + ~remove_from_set:(fun sr_uuid -> + let sr = Client.SR.get_by_uuid rpc session_id sr_uuid in + Client.PVS_farm.remove_cache_storage rpc session_id !_ref sr) + () + ; make_field ~name:"server-uuids" + ~get:(fun () -> (x ()).API.pVS_farm_servers + |> List.map get_uuid_from_ref |> String.concat "; ") + ~get_set:(fun () -> (x ()).API.pVS_farm_servers + |> List.map get_uuid_from_ref) + () + ; make_field ~name:"proxy-uuids" + ~get:(fun () -> (x ()).API.pVS_farm_proxies + |> List.map get_uuid_from_ref |> String.concat "; ") + ~get_set:(fun () -> (x ()).API.pVS_farm_proxies + |> List.map get_uuid_from_ref) + () + ] + } + +## CLI Interface to Methods + +Methods accessible from the CLI are declared in +`ocaml/xapi/cli_frontend.ml`. Each declaration refers to the real +implementation of the method, like `Cli_operations.PVS_far.introduce`: + + (* cli_frontend.ml *) + let rec cmdtable_data : (string*cmd_spec) list = + (* ... *) + "pvs-farm-introduce", + { + reqd=["name"]; + optn=[]; + help="Introduce new PVS farm"; + implementation=No_fd Cli_operations.PVS_farm.introduce; + flags=[]; + }; + "pvs-farm-forget", + { + reqd=["uuid"]; + optn=[]; + help="Forget a PVS farm"; + implementation=No_fd Cli_operations.PVS_farm.forget; + flags=[]; + }; + +## CLI Implementation of Methods + +Each CLI operation that is not a getter or setter has an implementation +in `cli_operations.ml` which is implemented in terms of the real +implementation: + + (* cli_operations.ml *) + module PVS_farm = struct + let introduce printer rpc session_id params = + let name = List.assoc "name" params in + let ref = Client.PVS_farm.introduce ~rpc ~session_id ~name in + let uuid = Client.PVS_farm.get_uuid rpc session_id ref in + printer (Cli_printer.PList [uuid]) + + let forget printer rpc session_id params = + let uuid = List.assoc "uuid" params in + let ref = Client.PVS_farm.get_by_uuid ~rpc ~session_id ~uuid in + Client.PVS_farm.forget rpc session_id ref + end + +Fields that should show up in the CLI interface by default are declared +in the `gen_cmds` value: + + (* cli_operations.ml *) + let gen_cmds rpc session_id = + let mk = make_param_funs in + List.concat + [ (*...*) + ; Client.Pool.(mk get_all get_all_records_where + get_by_uuid pool_record "pool" [] + ["uuid";"name-label";"name-description";"master" + ;"default-SR"] rpc session_id) + ; Client.PVS_farm.(mk get_all get_all_records_where + get_by_uuid pvs_farm_record "pvs-farm" [] + ["uuid";"name";"cache-storage";"server-uuids"] rpc session_id) + + +## Error messages + +Error messages used by an implementation are introduced in two files: + + (* ocaml/xapi-consts/api_errors.ml *) + let pvs_farm_contains_running_proxies = "PVS_FARM_CONTAINS_RUNNING_PROXIES" + let pvs_farm_contains_servers = "PVS_FARM_CONTAINS_SERVERS" + let pvs_farm_sr_already_added = "PVS_FARM_SR_ALREADY_ADDED" + let pvs_farm_sr_is_in_use = "PVS_FARM_SR_IS_IN_USE" + let sr_not_in_pvs_farm = "SR_NOT_IN_PVS_FARM" + let pvs_farm_cant_set_name = "PVS_FARM_CANT_SET_NAME" + + (* ocaml/idl/datamodel.ml *) + (* PVS errors *) + error Api_errors.pvs_farm_contains_running_proxies ["proxies"] + ~doc:"The PVS farm contains running proxies and cannot be forgotten." (); + + error Api_errors.pvs_farm_contains_servers ["servers"] + ~doc:"The PVS farm contains servers and cannot be forgotten." + (); + + error Api_errors.pvs_farm_sr_already_added ["farm"; "SR"] + ~doc:"Trying to add a cache SR that is already associated with the farm" + (); + + error Api_errors.sr_not_in_pvs_farm ["farm"; "SR"] + ~doc:"The SR is not associated with the farm." + (); + + error Api_errors.pvs_farm_sr_is_in_use ["farm"; "SR"] + ~doc:"The SR is in use by the farm and cannot be removed." + (); + + error Api_errors.pvs_farm_cant_set_name ["farm"] + ~doc:"The name of the farm can't be set while proxies are active." + () + +## Method Implementation + +The implementation of methods lives in a module in `ocaml/xapi`: + + (* ocaml/xapi/api_server.ml *) + module PVS_farm = Xapi_pvs_farm + +The file below is typically a new file and needs to be added to +`ocaml/xapi/OMakefile`. + + (* ocaml/xapi/xapi_pvs_farm.ml *) + module D = Debug.Make(struct let name = "xapi_pvs_farm" end) + module E = Api_errors + + let api_error msg xs = raise (E.Server_error (msg, xs)) + + let introduce ~__context ~name = + let pvs_farm = Ref.make () in + let uuid = Uuid.to_string (Uuid.make_uuid ()) in + Db.PVS_farm.create ~__context + ~ref:pvs_farm ~uuid ~name ~cache_storage:[]; + pvs_farm + + (* ... *) + + +Messages received on a slave host may or may not be executed there. In +the simple case, each methods executes locally: + + (* ocaml/xapi/message_forwarding.ml *) + module PVS_farm = struct + let introduce ~__context ~name = + info "PVS_farm.introduce %s" name; + Local.PVS_farm.introduce ~__context ~name + + let forget ~__context ~self = + info "PVS_farm.forget"; + Local.PVS_farm.forget ~__context ~self + + let set_name ~__context ~self ~value = + info "PVS_farm.set_name %s" value; + Local.PVS_farm.set_name ~__context ~self ~value + + let add_cache_storage ~__context ~self ~value = + info "PVS_farm.add_cache_storage"; + Local.PVS_farm.add_cache_storage ~__context ~self ~value + + let remove_cache_storage ~__context ~self ~value = + info "PVS_farm.remove_cache_storage"; + Local.PVS_farm.remove_cache_storage ~__context ~self ~value + end + + + +[CP-16939]: https://github.com/xenserver/xen-api/commit/78fe558dad19458a89519fe196069317d57eac58 +[Adding a Field]: add-field.html +[Adding a Function]: add-function.html diff --git a/doc/content/xapi/guides/howtos/add-field.md b/doc/content/xapi/guides/howtos/add-field.md new file mode 100644 index 00000000000..f8f69c5c43a --- /dev/null +++ b/doc/content/xapi/guides/howtos/add-field.md @@ -0,0 +1,156 @@ ++++ +title = "Adding a field to the API" ++++ +This page describes how to add a field to XenAPI. A field is a parameter of a class that can be used in functions and read from the API. + +Bumping the database schema version +----------------------------------- +Whenever a field is added to or removed from the API, its schema version needs +to be increased. XAPI needs this fundamental procedure in order to be able to +detect that an automatic database upgrade is necessary or to find out that the +new schema is incompatible with the existing database. If the schema version is +not bumped, XAPI will start failing in unpredictable ways. Note that bumping +the version is not necessary when adding functions, only when adding fields. + +The current version number is kept at the top of the file +`ocaml/idl/datamodel_common.ml` in the variables `schema_major_vsn` and +`schema_minor_vsn`, of which only the latter should be incremented (the major +version only exists for historical reasons). When moving to a new XenServer +release, also update the variable `last_release_schema_minor_vsn` to the schema +version of the last release. To keep track of the schema versions of recent +XenServer releases, the file contains variables for these, such as +`miami_release_schema_minor_vsn`. After starting a new version of Xapi on an +existing server, the database is automatically upgraded if the schema version +of the existing database matches the value of `last_release_schema_*_vsn` in the +new Xapi. + +As an example, the patch below shows how the schema version was bumped when the +new API fields used for ActiveDirectory integration were added: + + --- a/ocaml/idl/datamodel.ml Tue Nov 11 16:17:48 2008 +0000 + +++ b/ocaml/idl/datamodel.ml Tue Nov 11 15:53:29 2008 +0000 + @@ -15,17 +15,20 @@ open Datamodel_types + open Datamodel_types + + (* IMPORTANT: Please bump schema vsn if you change/add/remove a _field_. + You do not have to dump vsn if you change/add/remove a message *) + + let schema_major_vsn = 5 + -let schema_minor_vsn = 55 + +let schema_minor_vsn = 56 + + (* Historical schema versions just in case this is useful later *) + let rio_schema_major_vsn = 5 + let rio_schema_minor_vsn = 19 + + +let miami_release_schema_major_vsn = 5 + +let miami_release_schema_minor_vsn = 35 + + + (* the schema vsn of the last release: used to determine whether we can + upgrade or not.. *) + let last_release_schema_major_vsn = 5 + -let last_release_schema_minor_vsn = 35 + +let last_release_schema_minor_vsn = 55 + +### Setting the schema hash + +In the `ocaml/idl/schematest.ml` there is the `last_known_schema_hash` This needs to be updated to be the next hash after the schema version was bumped. Get the new hash by running `make test` and you will receive the correct hash in the error message. + +Adding the new field to some existing class +------------------------------------------- + +### ocaml/idl/datamodel.ml + +Add a new "field" line to the class in the file `ocaml/idl/datamodel.ml` or `ocaml/idl/datamodel_[class].ml`. The new field might require +a suitable default value. This default value is used in case the user does not +provide a value for the field. + +A field has a number of parameters: + +- The lifecycle parameter, which shows how the field has evolved over time. +- The qualifier parameter, which controls access to the field. The following + values are possible: + +| Value | Meaning | +| --------- | --------------------------------------------- | +| StaticRO | Field is set statically at install-time. | +| DynamicRO | Field is computed dynamically at run time. | +| RW | Field is read/write. | + +- The ty parameter for the type of the field. +- The default_value parameter. +- The name of the field. +- A documentation string. + +Example of a field in the pool class: + + field ~lifecycle:[Published, rel_orlando, "Controls whether HA is enabled"] + ~qualifier:DynamicRO ~ty:Bool + ~default_value:(Some (VBool false)) "ha_enabled" "true if HA is enabled on the pool, false otherwise"; + +See datamodel_types.ml for information about other parameters. + +## Changing Constructors + +Adding a field would change the constructors for the class ā€“ functions +Db.*.create ā€“ and therefore, any references to these in the code need to be +updated. In the example, the argument ~ha_enabled:false should be added to any +call to Db.Pool.create. + +Examples of where these calls can be found is in `ocaml/tests/common/test_common.ml` and `ocaml/xapi/xapi_[class].ml`. + +### CLI Records + +If you want this field to show up in the CLI (which you probably do), you will +also need to modify the Records module, in the file +`ocaml/xapi-cli-server/records.ml`. Find the record function for the class which +you have modified, add a new entry to the fields list using make_field. This type can be found in the same file. + +The only required parameters are name and get (and unit, of course ). +If your field is a map or set, then you will need to pass in get_{map,set}, and +optionally set_{map,set}, if it is a RW field. The hidden parameter is useful +if you don't want this field to show up in a *_params_list call. As an example, +here is a field that we've just added to the SM class: + + make_field ~name:"versioned-capabilities" + ~get:(fun () -> Record_util.s2sm_to_string "; " (x ()).API.sM_versioned_capabilities) + ~get_map:(fun () -> (x ()).API.sM_versioned_capabilities) + ~hidden:true (); + +Testing +------- +The new fields can be tested by copying the newly compiled xapi binary to a +test box. After the new xapi service is started, the file +*/var/log/xensource.log* in the test box should contain a few lines reporting the +successful upgrade of the metadata schema in the test box: + + [...|xapi] Db has schema major_vsn=5, minor_vsn=57 (current is 5 58) (last is 5 57) + [...|xapi] Database schema version is that of last release: attempting upgrade + [...|sql] attempting to restore database from /var/xapi/state.db + [...|sql] finished parsing xml + [...|sql] writing db as xml to file '/var/xapi/state.db'. + [...|xapi] Database upgrade complete, restarting to use new db + +Making this field accessible as a CLI attribute +----------------------------------------------- +XenAPI functions to get and set the value of the new field are generated +automatically. It requires some extra work, however, to enable such operations +in the CLI. + +The CLI has commands such as host-param-list and host-param-get. To make a new +field accessible by these commands, the file `xapi-cli-server/records.ml` needs to +be edited. For the pool.ha-enabled field, the pool_record function in this file +contains the following (note the convention to replace underscores by hyphens +in the CLI): + + let pool_record rpc session_id pool = + ... + [ + ... + make_field ~name:"ha-enabled" ~get:(fun () -> string_of_bool (x ()).API.pool_ha_enabled) (); + ... + ]} + +NB: the ~get parameter must return a string so include a relevant function to convert the type of the field into a string i.e. `string_of_bool` + +See `xapi-cli-server/records.ml` for examples of handling field types other than Bool. diff --git a/doc/content/xapi/guides/howtos/add-function.md b/doc/content/xapi/guides/howtos/add-function.md new file mode 100644 index 00000000000..07ef3cebfd4 --- /dev/null +++ b/doc/content/xapi/guides/howtos/add-function.md @@ -0,0 +1,303 @@ ++++ +title = "Adding a function to the API" ++++ +This page describes how to add a function to XenAPI. + +Add message to API +------------------ +The file `idl/datamodel.ml` is a description of the API, from which the +marshalling and handler code is generated. + +In this file, the `create_obj` function is used to define a class which may +contain fields and support operations (known as "messages"). For example, the +identifier host is defined using create_obj to encapsulate the operations which +can be performed on a host. + +In order to add a function to the API, we need to add a message to an existing +class. This entails adding a function in `idl/datamodel.ml` or one of the other datamodel files to describe the new +message and adding it to the class's list of messages. In this example, we are adding to `idl/datamodel_host.ml`. + +The function to describe the new message will look something like the following: + + let host_price_of = call ~flags:[`Session] + ~name:"price_of" + ~in_oss_since:None + ~in_product_since:rel_orlando + ~params:[(Ref _host, "host", "The host containing the price information"); + (String, "item", "The item whose price is queried")] + ~result:(Float, "The price of the item") + ~doc:"Returns the price of a named item." + ~allowed_roles:_R_POOL_OP + () + +By convention, the name of the function is formed from the name of the class +and the name of the message: host and price_of, in the example. An entry for +host_price_of is added to the messages of the host class: + + let host = + create_obj ... + ~messages: [... + host_price_of; + ] + ... + +The parameters passed to call are all optional (except ~name and ~in_product_since). + +- The ~flags parameter is used to set conditions for the use of the message. + For example, `Session is used to indicate that the call must be made in the + presence of an existing session. + +- The value of the ~in_product_since parameter is a string taken from + `idl/datamodel_types.ml` indicates the XenServer release in which this + message was first introduced. + +- The ~params parameter describes a list of the formal parameters of the message. + Each parameter is described by a triple. The first component of the triple is + the type (from type ty in `idl/datamodel_types.ml`); the second is the name + of the parameter, and the third is a human-readable description of the parameter. + The first triple in the list is conventionally the instance of the class on + which the message will operate. In the example, this is a reference to the host. + +- Similarly, the ~result describes the message's return type, although this is + permitted to merely be a single value rather than a list of values. If no + ~result is specified, the default is unit. + +- The ~doc parameter describes what the message is doing. + +- The bool ~hide_from_docs parameter prevents the message from being included in the documentation when generated. + +- The bool ~pool_internal parameter is used to indicate if the message should be callable by external systems or only internal hosts. + +- The ~errs parameter is a list of possible exceptions that the message can raise. + +- The parameter ~lifecycle takes in an array of (Status, version, doc) to indicate the lifecycle of the message type. This takes over from ~in_oss_since which indicated the release that the message type was introduced. NOTE: Leave this parameter empty, it will be populated on build. + +- The ~allowed_roles parameter is used for access control (see below). + + +Compiling `xen-api.(hg|git)` will cause the code corresponding to this message +to be generated and output in `ocaml/xapi/server.ml`. In the example above, a +section handling an incoming call host.price_of appeared in `ocaml/xapi/server.ml`. +However, after this was generated, the rest of the build failed because this +call expects a price_of function in the Host object. + +Expected values in parameter ~in_product_since +---------------------------------------------- + +In the example above, the value of the parameter ~in_product_since informs that +the message host_price_of was added during the rel_orlando release cycle. If a +new release cycle is required, then it needs to be added in the file +`idl/datamodel_types.ml`. The patch below shows how the new rel_george release +identifier was added. Any class, message, etc. added during the rel_george +release cycle should contain ~in_product_since:rel_george entries. +(obs: the release and upgrade infrastructure can handle only one new +`rel_*` identifier -- in this case, rel_george -- in each release) + + --- a/ocaml/idl/datamodel_types.ml Tue Nov 11 15:17:48 2008 +0000 + +++ b/ocaml/idl/datamodel_types.ml Tue Nov 11 15:53:29 2008 +0000 + @@ -27,14 +27,13 @@ + (* useful constants for product vsn tracking *) + let oss_since_303 = Some "3.0.3" + +let rel_george = "george" + let rel_orlando = "orlando" + let rel_orlando_update_1 = "orlando-update-1" + let rel_symc = "symc" + let rel_miami = "miami" + let rel_rio = "rio" + -let release_order = [engp:rel_rio; rel_miami; rel_symc; rel_orlando; rel_orlando_update_1] + +let release_order = [engp:rel_rio; rel_miami; rel_symc; rel_orlando; rel_orlando_update_1; rel_george] + +Update expose_get_all_messages_for list +--------------------------------------- + +If you are adding a new class, do not forget to add your new class \_name to +the expose_get_all_messages_for list, at the bottom of datamodel.ml, in +order to have automatically generated get_all and get_all_records functions +attached to it. + +Update the RBAC field containing the roles expected to use the new API call +--------------------------------------------------------------------------- + +After the RBAC integration, Xapi provides by default a set of static roles +associated to the most common subject tasks. + +The api calls associated with each role are defined by a new `~allowed_roles` +parameter in each api call, which specifies the list of static roles that +should be able to execute the call. The possible roles for this list is one of +the following names, defined in `datamodel.ml`: + +- role_pool_admin +- role_pool_operator +- role_vm_power_admin +- role_vm_admin +- role_vm_operator +- role_read_only + +So, for instance, + + ~allowed_roles:[role_pool_admin,role_pool_operator] (* this is not the recommended usage, see example below *) + +would be a valid list (though it is not the recommended way of using +allowed_roles, see below), meaning that subjects belonging to either +role_pool_admin or role_pool_operator can execute the api call. + +The RBAC requirements define a policy where the roles in the list above are +supposed to be totally-ordered by the set of api-calls associated with each of +them. That means that any api-call allowed to role_pool_operator should also be +in role_pool_admin; any api-call allowed to role_vm_power_admin should also be +in role_pool_operator and also in role_pool_admin; and so on. Datamodel.ml +provides shortcuts for expressing these totally-ordered set of roles policy +associated with each api-call: + +- \_R_POOL_ADMIN, equivalent to [role_pool_admin] +- \_R_POOL_OP, equivalent to [role_pool_admin,role_pool_operator] +- \_R_VM_POWER_ADMIN, equivalent to [role_pool_admin,role_pool_operator,role_vm_power_admin] +- \_R_VM_ADMIN, equivalent to [role_pool_admin,role_pool_operator,role_vm_power_admin,role_vm_admin] +- \_R_VM_OP, equivalent to [role_pool_admin,role_pool_operator,role_vm_power_admin,role_vm_admin,role_vm_op] +- \_R_READ_ONLY, equivalent to [role_pool_admin,role_pool_operator,role_vm_power_admin,role_vm_admin,role_vm_op,role_read_only] + +The `~allowed_roles` parameter should use one of the shortcuts in the list above, +instead of directly using a list of roles, because the shortcuts above make sure +that the roles in the list are in a total order regarding the api-calls +permission sets. Creating an api-call with e.g. +allowed_roles:[role_pool_admin,role_vm_admin] would be wrong, because that +would mean that a pool_operator cannot execute the api-call that a vm_admin can, +breaking the total-order policy expected in the RBAC 1.0 implementation. +In the future, this requirement might be relaxed. + +So, the example above should instead be used as: + + ~allowed_roles:_R_POOL_OP (* recommended usage via pre-defined totally-ordered role lists *) + +and so on. + +How to determine the correct role of a new api-call: +---------------------------------------------------- + +- if only xapi should execute the api-call, ie. it is an internal call: _R_POOL_ADMIN +- if it is related to subject, role, external-authentication: _R_POOL_ADMIN +- if it is related to accessing Dom0 (via console, ssh, whatever): _R_POOL_ADMIN +- if it is related to the pool object: R_POOL_OP +- if it is related to the host object, licenses, backups, physical devices: _R_POOL_OP +- if it is related to managing VM memory, snapshot/checkpoint, migration: _R_VM_POWER_ADMIN +- if it is related to creating, destroying, cloning, importing/exporting VMs: _R_VM_ADMIN +- if it is related to starting, stopping, pausing etc VMs or otherwise accessing/manipulating VMs: _R_VM_OP +- if it is related to being able to login, manipulate own tasks and read values only: _R_READ_ONLY + +Update message forwarding +------------------------- + +The "message forwarding" layer describes the policy of whether an incoming API +call should be forwarded to another host (such as another member of the pool) +or processed on the host which receives the call. This policy may be +non-trivial to describe and so cannot be auto-generated from the data model. + +In `xapi/message_forwarding.ml`, add a function to the relevant module to +describe this policy. In the running example, we add the following function to +the Host module: + + let price_of ~__context ~host ~item = + info "Host.price_of for item %s" item; + let local_fn = Local.Host.price_of ~host ~item in + do_op_on ~local_fn ~__context ~host + (fun session_id rpc -> Client.Host.price_of ~rpc ~session_id ~host ~item) + +After the ~__context parameter, the parameters of this new function should +match the parameters we specified for the message. In this case, that is the +host and the item to query the price of. + +The do_op_on function takes a function to execute locally and a function to +execute remotely and performs one of these operations depending on whether the +given host is the local host. + +The local function references Local.Host.price_of, which is a function we will +write in the next step. + +Implement the function +---------------------- + +Now we write the function to perform the logic behind the new API call. +For a host-based call, this will reside in `xapi/xapi_host.ml`. For other +classes, other files with similar names are used. + +We add the following function to `xapi/xapi_host.ml`: + + let price_of ~__context ~host ~item = + if item = "fish" then 3.14 else 0.00 + +We also need to add the function to the interface `xapi/xapi_host.mli`: + + val price_of : + __context:Context.t -> host:API.ref_host -> item:string -> float + +Congratulations, you've added a function to the API! + +Add the operation to the CLI +---------------------------- + +Edit `xapi-cli-server/cli_frontend.ml`. Add a block to the definition of cmdtable_data as +in the following example: + + "host-price-of", + { + reqd=["host-uuid"; "item"]; + optn=[]; + help="Find out the price of an item on a certain host."; + implementation= No_fd Cli_operations.host_price_of; + flags=[]; + }; + +Include here the following: + +- The names of required (*reqd*) and optional (*optn*) parameters. +- A description to be displayed when calling *xe help \* in the help field. +- The *implementation* should use *With_fd* if any communication with the + client is necessary (for example, showing the user a warning, sending the + contents of a file, etc.) Otherwise, *No_fd* can be used as above. +- The *flags* field can be used to set special options: + + - *Vm_selectors*: adds a "vm" parameter for the name of a VM (rather than a UUID) + - *Host_selectors*: adds a "host" parameter for the name of a host (rather than a UUID) + - *Standard*: includes the command in the list of common commands displayed by *xe help* + - *Neverforward:* + - *Hidden:* + - *Deprecated of string list:* + +Now we must implement `Cli_operations.host_price_of`. This is done in +`xapi-cli-server/cli_operations.ml`. This function typically extracts the parameters and +forwards them to the internal implementation of the function. Other arbitrary +code is permitted. For example: + + let host_price_of printer rpc session_id params = + let host = Client.Host.get_by_uuid rpc session_id (List.assoc "host-uuid" params) in + let item = List.assoc "item" params in + let price = string_of_float (Client.Host.price_of ~rpc ~session_id ~host ~item) in + printer (Cli_printer.PList [price]) + +Tab Completion in the CLI +------------------------- + +The CLI features tab completion for many of its commands' parameters. +Tab completion is implemented in the file `ocaml/xe-cli/bash-completion`, which +is installed on the host as `/etc/bash_completion.d/cli`, and is done on a +parameter-name rather than on a command-name basis. The main portion of the +bash-completion file is a case statement that contains a section for each of +the parameters that benefit from completion. There is also an entry that +catches all parameter names ending at -uuid, and performs an automatic lookup +of suitable UUIDs. The host-uuid parameter of our new host-price-of command +therefore automatically gains completion capabilities. + +Executing the CLI operation +--------------------------- + +Recompile `xapi` with the changes described above and install it on a test machine. + +Execute the following command to see if the function exists: + + xe help host-price-of + +Invoke the function itself with the following command: + + xe host-price-of host-uuid= item=fish + +and you should find out the price of fish. diff --git a/doc/content/xapi/memory/index.md b/doc/content/xapi/memory/index.md new file mode 100644 index 00000000000..c36f8b953ba --- /dev/null +++ b/doc/content/xapi/memory/index.md @@ -0,0 +1,66 @@ ++++ +title = "Host memory accounting" +menuTitle = "Memory" ++++ + +Memory is used for many things: + +- the hypervisor code: this is the Xen executable itself +- the hypervisor heap: this is needed for per-domain structures and per-vCPU + structures +- the crash kernel: this is needed to collect information after a host crash +- domain RAM: this is the memory the VM believes it has +- shadow memory: for HVM guests running on hosts without hardware assisted + paging (HAP) Xen uses shadow to optimise page table updates. For all guests + shadow is used during live migration for tracking the memory transfer. +- video RAM for the virtual graphics card + +Some of these are constants (e.g. hypervisor code) while some depend on the VM +configuration (e.g. domain RAM). Xapi calls the constants "host overhead" and +the variables due to VM configuration as "VM overhead". There is no low-level +API to query this information, therefore xapi will sample the host overheads +at system boot time and model the per-VM overheads. + +Host overhead +------------- + +The host overhead is not managed by xapi, instead it is sampled. After the host +boots and before any VMs start, xapi asks Xen how much memory the host has in +total, and how much memory is currently free. Xapi subtracts the free from the +total and stores this as the host overhead. + +VM overhead +------------ + +The inputs to the model are + +- `VM.memory_static_max`: the maximum amount of RAM the domain will be able to use +- `VM.HVM_shadow_multiplier`: allows the shadow memory to be increased +- `VM.VCPUs_max`: the maximum number of vCPUs the domain will be able to use + +First the shadow memory is calculated, in MiB + +![Shadow memory in MiB](shadow.svg) + +Second the VM overhead is calculated, in MiB + +![Memory overhead in MiB](overhead.svg) + +Memory required to start a VM +----------------------------- + +If ballooning is disabled, the memory required to start a VM is the same as the VM +overhead above. + +If ballooning is enabled then the memory calculation above is modified to use the +`VM.memory_dynamic_max` rather than the `VM.memory_static_max`. + +Memory required to migrate a VM +------------------------------- + +If ballooning is disabled, the memory required to receive a migrating VM is the same +as the VM overhead above. + +If ballooning is enabled, then the VM will first be ballooned down to `VM.memory_dynamic_min` +and then it will be migrated across. If the VM fails to balloon all the way down, then +correspondingly more memory will be required on the receiving side. diff --git a/doc/content/xapi/memory/overhead.svg b/doc/content/xapi/memory/overhead.svg new file mode 100644 index 00000000000..c0979ebf9fc --- /dev/null +++ b/doc/content/xapi/memory/overhead.svg @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/content/xapi/memory/shadow.svg b/doc/content/xapi/memory/shadow.svg new file mode 100644 index 00000000000..ba7fcf23859 --- /dev/null +++ b/doc/content/xapi/memory/shadow.svg @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/content/xapi/xapi.png b/doc/content/xapi/xapi.png new file mode 100644 index 0000000000000000000000000000000000000000..5041f7c0ac71018a1d183e3bb1cad12addce8d25 GIT binary patch literal 88685 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 literal 0 HcmV?d00001 diff --git a/doc/content/xcp-networkd/_index.md b/doc/content/xcp-networkd/_index.md new file mode 100644 index 00000000000..e3f389795cd --- /dev/null +++ b/doc/content/xcp-networkd/_index.md @@ -0,0 +1,119 @@ ++++ +title = "Networkd" +weight = 40 ++++ + +The `xcp-networkd` daemon (hereafter simply called "networkd") is a component in the xapi toolstack that is responsible for configuring network interfaces and virtual switches (bridges) on a host. + +The code is in `ocaml/networkd`. + + +Principles +---------- + +1. **Distro-agnostic**. Networkd is meant to work on at least CentOS/RHEL as well a Debian/Ubuntu based distros. It therefore should not use any network configuration features specific to those distros. + +2. **Stateless**. By default, networkd should not maintain any state. If you ask networkd anything about a network interface or bridge, or any other network sub-system property, it will always query the underlying system (e.g. an IP address), rather than returning any cached state. However, if you want networkd to configure networking at host boot time, the you can ask it to remember your configuration you have set for any interface or bridge you choose. + +3. **Idempotent**. It should be possible to call any networkd function multiple times without breaking things. For example, calling a function to set an IP address on an interface twice in a row should have the same outcome as calling it just once. + +4. **Do no harm**. Networkd should only configure what you ask it to configure. This means that it can co-exist with other network managers. + + +Usage +----- + +Networkd is a daemon that is typically started at host-boot time. In the same way as the other daemons in the xapi toolstack, it is controlled by RPC requests. It typically receives requests from the xapi daemon, on behalf of which it configures host networking. + +Networkd's RCP API is fully described by the [network_interface.ml](https://github.com/xapi-project/xen-api/blob/master/ocaml/xapi-idl/network/network_interface.ml) file. The API has two main namespaces: `Interface` and `Bridge`, which are implemented in two modules in [network_server.ml](https://github.com/xapi-project/xen-api/blob/master/ocaml/networkd/bin/network_server.ml). + +In line with other xapi daemons, all API functions take an argument of type `debug_info` (a string) as their first argument. The debug string appears in any log lines that are produced as a side effort of calling the function. + +Network Interface API +--------------------- + +The Interface API has functions to query and configure properties of Linux network devices, such as IP addresses, and bringing them up or down. Most Interface functions take a `name` string as a reference to a network interface as their second argument, which is expected to be the name of the Linux network device. There is also a special function, called `Interface.make_config`, that is able to configure a number of interfaces at once. It takes an argument called `config` of type `(iface * interface_config_t) list`, where `iface` is an interface name, and `interface_config_t` is a compound type containing the full configuration for an interface (as far as networkd is able to configure them), currently defined as follows: + +``` +type interface_config_t = { + ipv4_conf: ipv4; + ipv4_gateway: Unix.inet_addr option; + ipv6_conf: ipv6; + ipv6_gateway: Unix.inet_addr option; + ipv4_routes: (Unix.inet_addr * int * Unix.inet_addr) list; + dns: Unix.inet_addr list * string list; + mtu: int; + ethtool_settings: (string * string) list; + ethtool_offload: (string * string) list; + persistent_i: bool; +} +``` + +When the function returns, it should have completely configured the interface, and have brought it up. The idempotency principle applies to this function, which means that it can be used to successively modify interface properties; any property that has not changed will effectively be ignored. In fact, `Interface.make_config` is the main function that xapi uses to configure interfaces, e.g. as a result of a `PIF.plug` or a `PIF.reconfigure_ip` call. + +Also note the `persistent` property in the interface config. When an interface is made "persistent", this means that any configuration that is set on it is remembered by networkd, and the interface config is written to disk. When networkd is started, it will read the persistent config and call `Interface.make_config` on it in order to apply it (see Startup below). + +_The full networkd API should be documented separately somewhere on this site._ + +Bridge API +---------- + +The Bridge API functions are all about the management of virtual switches, also known as "bridges". The shape of the Bridge API roughly follows that of the Open vSwitch in that it treats a bridge as a collection of "ports", where a port can contain one or more "interfaces". + +NIC bonding and VLANs are all configured on the Bridge level. There are functions for creating and destroying bridges, adding and removing ports, and configuring bonds and VLANs. Like interfaces, bridges and ports are addressed by name in the Bridge functions. Analogous to the Interface function with the same name, there is a `Bridge.make_config` function, and bridges can be made `persistent`. + +``` +type port_config_t = { + interfaces: iface list; + bond_properties: (string * string) list; + bond_mac: string option; +} +type bridge_config_t = { + ports: (port * port_config_t) list; + vlan: (bridge * int) option; + bridge_mac: string option; + other_config: (string * string) list; + persistent_b: bool; +} +``` + +Backends +-------- + +Networkd currently has two different backends: the "Linux bridge" backend and the "Open vSwitch" backend. The former is the "classic" backend based on the bridge module that is available in the Linux kernel, plus additional standard Linux functionality for NIC bonding and VLANs. The latter backend is newer and uses the [Open vSwitch (OVS)](http://www.openvswitch.org) for bridging as well as other functionality. Which backend is currently in use is defined by the file `/etc/xensource/network.conf`, which is read by networkd when it starts. The choice of backend (currently) only affects the Bridge API: every function in it has a separate implementation for each backend. + +Low-level Interfaces +-------------------- + +Networkd uses standard networking commands and interfaces that are available in most modern Linux distros, rather than relying on any distro-specific network tools (see the distro-agnostic principle). These are tools such as `ip` (iproute2), `dhclient` and `brctl`, as well as the `sysfs` files system, and `netlink` sockets. To control the OVS, the `ovs-*` command line tools are used. All low-level functions are called from [network_utils.ml](https://github.com/xapi-project/xen-api/blob/master/ocaml/networkd/lib/network_utils.ml). + +Configuration on Startup +------------------------ + +Networkd, periodically as well as on shutdown, writes the current configuration of all bridges and interfaces (see above) in a JSON format to a file called `networkd.db` (currently in `/var/lib/xcp`). The contents of the file are completely described by the following type: + +``` +type config_t = { + interface_config: (iface * interface_config_t) list; + bridge_config: (bridge * bridge_config_t) list; + gateway_interface: iface option; + dns_interface: iface option; +} +``` + +The `gateway_interface` and `dns_interface` in the config are global host-level options to define from which interfaces the default gateway and DNS configuration is taken. This is especially important when multiple interfaces are configured by DHCP. + +When networkd starts up, it first reads `network.conf` to determine the network backend. It subsequently attempts to parse `networkd.db`, and tries to call `Bridge.make_config` and `Interface.make_config` on it, with a special options to only apply the config for `persistent` bridges and interfaces, as well as bridges related to those (for example, if a VLAN bridge is configured, then also its parent bridge must be configured). + +Networkd also supports upgrades from older versions of XenServer that used a network configuration script called `interface-configure`. If `networkd.db` is not found on startup, then networkd attempts to call this tool (via the `/etc/init.d/management-interface` script) in order to set up networking at boot time. This is normally followed immediately by a call from xapi instructing networkd to take over. + +Finally, if no network config (old or new) is found on disk at all, networkd looks for a XenServer "firstboot" data file, which is written by XenServer's host installer, and tries to apply it to set up the management interface. + +Monitoring +---------- + +Besides the ability to configure bridges and network interfaces, networkd has facilities for monitoring interfaces and bonds. When networkd starts, a monitor thread is started, which does several things (see [network_monitor_thread.ml](https://github.com/xapi-project/xen-api/blob/master/ocaml/networkd/bin/network_monitor_thread.ml)): + +* Every 5 seconds, it gathers send/receive counters and link state of all network interfaces. It then writes these stats to a shared-memory file, to be picked up by other components such as `xcp-rrdd` and `xapi` (see documentation about "xenostats" elsewhere). +* It monitors NIC bonds, and sends alerts through xapi in case of link state changes within a bond. +* It uses `ip monitor address` to watch for an IP address changes, and if so, it calls xapi (`Host.signal_networking_change`) for it to update the IP addresses of the PIFs in its database that were configured by DHCP.