# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# Sample configuration file for CloudStack agent

# MANDATORY: The GUID to identify the agent with.
# Generated with "uuidgen"
guid=

# The java class which the agent loads to execute.
resource=com.cloud.hypervisor.kvm.resource.LibvirtComputingResource

# The number of threads running in the agent.
workers=5

# The IP address of the management server.
host=localhost

# The time interval (in seconds) after which agent will check if the connected host
# is the preferred host (the first host in the comma-separated list is the preferred
# one). After that interval, if the agent is connected to one of the secondary/backup hosts,
# it will attempt to reconnect to the preferred host.
# The timer task is scheduled after the	 agent connects to a management server.
# On connection, it receives admin configured
# cluster-level 'indirect.agent.lb.check.interval' setting that will be used by
# the agent as the preferred host check interval, however, if the following setting
# is defined it will override the received value. The value 0 and lb algorithm 'shuffle'
# disables this background task.
#host.lb.check.interval=

# The port that the management server is listening on.
port=8250

# The cluster which the agent belongs to.
cluster=default

# The pod which the agent belongs to.
pod=default

# The zone which the agent belongs to.
zone=default

# The public NIC device.
# If this is commented, it will be autodetected on service startup.
#public.network.device=cloudbr0

# The private NIC device.
# If this is commented, it will be autodetected on service startup.
#private.network.device=cloudbr1

# The guest NIC device.
# If this is commented, the value of the private NIC device will be used.
#guest.network.device=

# Local storage path. Multiple values can be entered and separated by commas.
#local.storage.path=/var/lib/libvirt/images/

# Directory where Qemu sockets are placed.
# These sockets are for the Qemu Guest Agent and SSVM provisioning.
# Make sure that AppArmor or SELinux allow libvirt to write there.
#qemu.sockets.path=/var/lib/libvirt/qemu

# MANDATORY: The UUID for the local storage pool. Multiple values can be entered and separated by commas.
# Generated with "uuidgen".
local.storage.uuid=

# Location for KVM virtual router scripts.
# The path defined in this property is relative to the directory "/usr/share/cloudstack-common/".
domr.scripts.dir=scripts/network/domr/kvm

# The timeout (in ms) for time-consuming operations, such as create/copy a snapshot.
#cmds.timeout=7200

# This parameter sets the VM migration speed.
# By default, it will try to guess the speed of the guest network and consume all possible bandwidth.
# The default value is -1, which means that the agent will use all possible bandwidth.
# When entering a value, make sure to enter it in megabytes per second.
#vm.migrate.speed=-1

# Sets target downtime (in ms) at end of livemigration, the 'hiccup' for final copy.
# Higher numbers make livemigration easier, lower numbers may cause migration to never complete.
# Less than 1 means hypervisor default (20ms).
#vm.migrate.downtime=-1

# Busy VMs may never finish migrating, depending on environment.
# Therefore, if configured, this option will pause the VM after the time entered (in ms) to force the migration to finish.
# Less than 1 means disabled.
#vm.migrate.pauseafter=-1

# Time (in seconds) to wait for VM migraton to finish. Less than 1 means disabled.
# If the VM migration is not finished in the time, the VM job will be cancelled by libvirt.
# It will be configured by cloudstack management server when cloudstack agent connects.
# please change the global setting 'migratewait' if needed (migratewait default value: 3600).
#vm.migrate.wait=-1

# ---------------- AGENT HOOKS -----------------
# Agent hooks is the way to override default agent behavior to extend the functionality without excessive coding
# for a custom deployment.
# There are 3 arguments needed for the hook to be called: the base directory (defined in agent.hooks.basedir),
# the name of the script that is located in the base directory (defined in agent.hooks.*.script)
# and the method that is going to be called on the script (defined in agent.hooks.*.method).
# These properties are detailed below.
# Hooks are implemented in Groovy and must be implemented in a way
# that keeps default CS behavior if something goes wrong.

# All hooks are located in a special directory defined in 'agent.hooks.basedir'.
# agent.hooks.basedir=/etc/cloudstack/agent/hooks

# Every hook has two major attributes - script name, specified in 'agent.hooks.*.script' and method name
# specified in 'agent.hooks.*.method'.

# Libvirt XML transformer hook does XML-to-XML transformation, which allows the provider to modify
# VM XML specification before is sent to libvirt.
# The provider can use this to add/remove/modify some sort of attributes in Libvirt XML domain specification.
#agent.hooks.libvirt_vm_xml_transformer.script=libvirt-vm-xml-transformer.groovy
#agent.hooks.libvirt_vm_xml_transformer.method=transform

# The hook is called right after libvirt successfully launched the VM.
#agent.hooks.libvirt_vm_on_start.script=libvirt-vm-state-change.groovy
#agent.hooks.libvirt_vm_on_start.method=onStart

# The hook is called right after libvirt successfully stopped the VM.
#agent.hooks.libvirt_vm_on_stop.script=libvirt-vm-state-change.groovy
#agent.hooks.libvirt_vm_on_stop.method=onStop
# ---------------- END AGENT HOOKS ---------------

# Sets the type of bridge used on the hypervisor. This defines what commands the resource
# will use to setup networking.
# Possible Values: native | openvswitch
#network.bridge.type=native

# Sets the driver used to plug and unplug NICs from the bridges.
# A sensible default value will be selected based on the network.bridge.type but can
# be overridden here.
# Also used to enable direct networking in libvirt (see properties below).
# Default value when network.bridge.type as native = com.cloud.hypervisor.kvm.resource.BridgeVifDriver
# Default value when network.bridge.type as openvswitch = com.cloud.hypervisor.kvm.resource.OvsVifDriver
#libvirt.vif.driver=

# Settings to enable direct networking in libvirt.
# Should not be used on hosts that run system VMs.
# Possible values for mode: private | bridge | vepa
#libvirt.vif.driver=com.cloud.hypervisor.kvm.resource.DirectVifDriver
#network.direct.source.mode=private
#network.direct.device=eth0

# Sets DPDK Support on OpenVswitch.
#openvswitch.dpdk.enabled=false
#openvswitch.dpdk.ovs.path=

# Sets the hypervisor type.
# Possible values: kvm | lxc
hypervisor.type=kvm

# This parameter specifies a directory on the host local storage for temporary storing direct download templates.
#direct.download.temporary.download.location=/var/lib/libvirt/images

# This parameter specifies a directory on the host local storage for creating and hosting the config drives.
#host.cache.location=/var/cache/cloud

# Sets the rolling maintenance hook scripts directory.
# Default is null, however, can be used as /etc/cloudstack/agent/hooks.d
#rolling.maintenance.hooks.dir=

# Disables the rolling maintenance service execution.
#rolling.maintenance.service.executor.disabled=false

# Sets the hypervisor URI. If null (default), the value defaults according the hypervisor.type:
# For KVM: qemu:///system
# For LXC: lxc:///
#hypervisor.uri=

# Setting to enable the CPU model to KVM guest globally.
# Possible values: custom | host-model | host-passthrough
# - custom: user customs the CPU model, which is specified by property guest.cpu.model.
# - host-model: identifies the named CPU model which most closely matches the host,
# and then requests additional CPU flags to complete the match. This should give
# close to maximum functionality/performance, which maintains good
# reliability/compatibility if the guest is migrated to another host with slightly different host CPUs.
# - host-passthrough: tells KVM to passthrough the host CPU with no modifications.
# It is different from host-model because instead of just matching feature flags,
# every last detail of the host CPU is matched. This gives absolutely best performance,
# and can be important to some apps which check low level CPU details,
# but it comes at a cost with migration. The guest can only be migrated to
# an exactly matching host CPU.
# If null (default), libvirt defaults to custom
#guest.cpu.mode=

# Custom CPU model. This param is only valid if guest.cpu.mode=custom.
# Possible values:"Conroe" | "Penryn" | "Nehalem" | "Westmere" | "pentiumpro" etc.
# Run virsh capabilities for more details.
#guest.cpu.model=

# This param will set the CPU architecture for the domain to override what
# the management server would send.
# In case of arm64 (aarch64), this will change the machine type to 'virt' and
# adds a SCSI and a USB controller in the domain xml.
# Possible values: x86_64 | aarch64 | s390x
# If null (default), defaults to the VM's OS architecture
#guest.cpu.arch=

# Specifies required CPU features for end-user and system VMs.
# These features must be present on the host CPU for VM deployment.
# Multiple features should be separated by whitespace (e.g.: vmx vme).
#guest.cpu.features=

# Disables memory ballooning on VM guests for overcommit.
# By default overcommit feature enables balloon and sets currentMemory to a minimum value.
#vm.memballoon.disable=false

# The time interval (in seconds) at which the balloon driver will get memory stats updates.
# This is equivalent to Libvirt's --period parameter when using the dommemstat command.
# vm.memballoon.stats.period=0

# Set to true to check disk activity on VM's disks before starting a VM. This only applies
# to QCOW2 files, and ensures that there is no other running instance accessing
# the file before starting. It works by checking the modified time against the current time,
# so care must be taken to ensure that the cluster's time is synchronized, otherwise VMs may fail to start.
#vm.diskactivity.checkenabled=false

# Timeout (in seconds) for giving up on waiting for VM's disk files to become inactive.
# Hitting this timeout will result in failure to start VM.
# Value must be > 0.
#vm.diskactivity.checktimeout_s=120

# This is the length of time (in ms) that the disk needs to be inactive in order to pass the check.
# This means current time minus time of disk file needs to be greater than this number.
# It also has the side effect of setting the minimum threshold between a stop and start of
# a given VM.
#vm.diskactivity.inactivetime_ms=30000

# Some newer linux kernels are incapable of reliably migrating VMs with KVMclock.
# This is a workaround for the bug, admin can set this to true per-host.
#kvmclock.disable=false

# This enables the VirtIO Random Number Generator (RNG) device for guests.
#vm.rng.enable=false

# The model of VirtIO Random Number Generator (RNG) to present to the Guest.
# Currently only 'random' is supported.
#vm.rng.model=random

# Local Random Number Device Generator to use for VirtIO RNG for Guests.
# This is usually /dev/random, but it might be different per platform.
#vm.rng.path=/dev/random

# The amount of bytes the Guest may request/obtain from the RNG in the period
# specified in the property vm.rng.rate.period.
#vm.rng.rate.bytes=2048

# The number of milliseconds in which the guest is allowed to obtain the bytes
# specified  in the property vm.rng.rate.bytes.
#vm.rng.rate.period=1000

# Timeout value for aggregation commands to be sent to the virtual router (in seconds).
#router.aggregation.command.each.timeout=

# Allows virtually increase the amount of RAM (in MB) available on the host.
# This property can be useful if the host uses  Zswap, KSM features and other memory compressing technologies.
# For example: if the host has 2GB of RAM and this property is set to 2048, the amount of RAM of the host will be read as 4GB.
#host.overcommit.mem.mb=0

# How much host memory (in MB) to reserve for non-allocation.
# A useful parameter if a node uses some other software that requires memory,
# or in case that OOM Killer kicks in.
# If this parameter is used, property host.overcommit.mem.mb must be set to 0.
#host.reserved.mem.mb=1024

# Number of CPU cores to subtract from advertised available cores.
# These are reserved for system activity, or otherwise share host CPU resources with
# CloudStack VM allocation.
# host.reserved.cpu.count = 0

# The model of Watchdog timer to present to the Guest.
# For all models refer to the libvirt documentation.
# PLEASE NOTE: to disable the watchdogs definitions, use value: none
#vm.watchdog.model=i6300esb

# Action to take when the Guest/Instance is no longer notifying the Watchdog timer.
# For all actions refer to the libvirt documentation.
# Possible values: none | reset | poweroff
#vm.watchdog.action=none

# Automatically clean up iSCSI sessions not attached to any VM.
# Should be enabled for users using managed storage (for example solidfire).
# Should be disabled for users with unmanaged iSCSI connections on their hosts.
iscsi.session.cleanup.enabled=false

# The heartbeat update timeout (in ms).
# Depending on the use case, this timeout might need increasing/decreasing.
#heartbeat.update.timeout=60000

# The timeout (in seconds) to retrieve the target's domain id when migrating a VM with KVM.
#vm.migrate.domain.retrieve.timeout=10

# This parameter specifies if the host must be rebooted when something goes wrong with the heartbeat.
#reboot.host.and.alert.management.on.heartbeat.timeout=true

# Enables manually setting CPU's topology on KVM's VM.
#enable.manually.setting.cpu.topology.on.kvm.vm=true

# Manually sets the host CPU MHz, in cases where CPU scaling support detects the value is wrong.
#host.cpu.manual.speed.mhz=0

# Defines the location for Hypervisor scripts.
# The path defined in this property is relative.
# To locate the script, ACS first tries to concatenate
# the property path with "/usr/share/cloudstack-agent/lib/".
# If it fails, it will test each folder of the path,
# decreasing one by one, until it reaches root.
# If the script is not found, ACS will repeat the same
# steps concatenating the property path with "/usr/share/cloudstack-common/".
# The path defined in this property is relative
# to the directory "/usr/share/cloudstack-common/".
#hypervisor.scripts.dir=scripts/vm/hypervisor

# Defines the location for KVM scripts.
# The path defined in this property is relative.
# To locate the script, ACS first tries to concatenate
# the property path with "/usr/share/cloudstack-agent/lib/".
# If it fails, it will test each folder of the path,
# decreasing one by one, until it reaches root.
# If the script is not found, ACS will repeat the same
# steps concatenating the property path with "/usr/share/cloudstack-common/".
# The path defined in this property is relative
# to the directory "/usr/share/cloudstack-common/".
#kvm.scripts.dir=scripts/vm/hypervisor/kvm

# Specifies start MAC address for private IP range.
#private.macaddr.start=00:16:3e:77:e2:a0

# Specifies start IP address for private IP range.
#private.ipaddr.start=192.168.166.128

# Defines Local Bridge Name.
#private.bridge.name=

# Defines private network name.
#private.network.name=

# Defines the location for network scripts.
# The path defined in this property is relative.
# To locate the script, ACS first tries to concatenate
# the property path with "/usr/share/cloudstack-agent/lib/".
# If it fails, it will test each folder of the path,
# decreasing one by one, until it reaches root.
# If the script is not found, ACS will repeat the same
# steps concatenating the property path with "/usr/share/cloudstack-common/".
# The path defined in this property is relative
# to the directory "/usr/share/cloudstack-common/".
#network.scripts.dir=scripts/vm/network/vnet

# Defines the location for storage scripts.
# The path defined in this property is relative.
# To locate the script, ACS first tries to concatenate
# the property path with "/usr/share/cloudstack-agent/lib/".
# If it fails, it will test each folder of the path,
# decreasing one by one, until it reaches root.
# If the script is not found, ACS will repeat the same
# steps concatenating the property path with "/usr/share/cloudstack-common/".
# The path defined in this property is relative
# to the directory "/usr/share/cloudstack-common/".
#storage.scripts.dir=scripts/storage/qcow2

# Time (in seconds) to wait for the VM to shutdown gracefully.
# If the time is exceeded shutdown will be forced.
#stop.script.timeout=120

# Time (in seconds) to wait for scripts to complete.
# This is currently used only while checking if the host supports UEFI.
#agent.script.timeout=60

# Definition of VMs video model type.
#vm.video.hardware=

# Definition of VMs video, specifies the amount of RAM in kibibytes (blocks of 1024 bytes).
#vm.video.ram=0

# System VM ISO path.
#systemvm.iso.path=

# If set to "true", allows override of the properties: private.macaddr.start, private.ipaddr.start, private.ipaddr.end.
#developer=false

# Can only be used if property developer = true. This property is used to define the link local bridge name and private network name.
#instance=

# Shows the path to the base directory in which NFS servers are going to be mounted.
#mount.path=/mnt

# Port listened by the console proxy.
#consoleproxy.httpListenPort=443

#ping.retries=5

# The number of iothreads. There should be only 1 or 2 IOThreads per VM CPU (default is 1). The recommended number of iothreads is 1
# iothreads=1

# The path of an executable file/script for host health check for CloudStack to Auto Disable/Enable the host
# depending on the return value of the file/script
# agent.health.check.script.path=

# Time interval (in milliseconds) between KVM heartbeats.
# kvm.heartbeat.update.frequency=60000

# Number of maximum tries to KVM heartbeats.
# kvm.heartbeat.update.max.tries=5

# Time amount (in milliseconds) for the KVM heartbeat retry sleep.
# kvm.heartbeat.update.retry.sleep=10000

# Timeout (in milliseconds) of the KVM heartbeat checker.
# kvm.heartbeat.checker.timeout=360000

# Instance Conversion from Vmware to KVM through virt-v2v. Enable verbose mode
# virtv2v.verbose.enabled=false

# If set to "true", the agent will register for libvirt domain events, allowing for immediate updates on crashed or
# unexpectedly stopped. Experimental, requires agent restart.
# libvirt.events.enabled=false

# Implicit host tags managed by agent.properties
# host.tags=

# Timeout(in seconds) for SSL handshake when agent connects to server. When no value is set then default value of 30s
# will be used
#ssl.handshake.timeout=

# Wait(in seconds) during agent reconnections. When no value is set then default value of 5s will be used
#backoff.seconds=

# Timeout (in seconds) to wait for the snapshot reversion to complete.
# revert.snapshot.timeout=10800

# Timeout (in seconds) to wait for the incremental snapshot to complete.
# incremental.snapshot.timeout=10800

# If set to true, creates VMs as full clones of their templates on KVM hypervisor. Creates as linked clones otherwise.
# create.full.clone=false

# Instance conversion TMPDIR env var
#convert.instance.env.tmpdir=

# Instance conversion VIRT_V2V_TMPDIR env var
#convert.instance.env.virtv2v.tmpdir=

# Time, in seconds, to wait before retrying to rebase during the incremental snapshot process.
# incremental.snapshot.retry.rebase.wait=60

# Path to the VDDK library directory for VMware to KVM conversion via VDDK,
# passed to virt-v2v as -io vddk-libdir=<path>
#vddk.lib.dir=

# Ordered VDDK transport preference for VMware to KVM conversion via VDDK, passed as
# -io vddk-transports=<value> to virt-v2v. Example: nbd:nbdssl
#vddk.transports=

# Optional vCenter SHA1 thumbprint for VMware to KVM conversion via VDDK, passed as
# -io vddk-thumbprint=<value>. If unset, CloudStack computes it on the KVM host via openssl.
#vddk.thumbprint=
