blob: f23bf9d7cd0d34db3d5bf00bf6c8b6cdbe8f992d [file] [log] [blame]
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<book>
<xi:include href="Book_Info_Release_Notes_4.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<chapter id="welcome-4.2">
<title>Welcome to &PRODUCT; 4.2.1</title>
<para>Welcome to the 4.2.1 release of &PRODUCT;. This version is the first defect fix release of
&PRODUCT; in the 4.2.<emphasis role="italic">x</emphasis> line.</para>
<para>This document contains information specific to this release of &PRODUCT;, including
upgrade instructions from prior releases, new features added to &PRODUCT;, API changes, and
issues fixed in the release. For installation instructions, please see the <ulink
url="http://cloudstack.apache.org/docs/en-US/Apache_CloudStack/4.2.0/html/Installation_Guide/index.html"
>Installation Guide</ulink>. For usage and administration instructions, please see the
<ulink
url="http://cloudstack.apache.org/docs/en-US/Apache_CloudStack/4.2.0/html/Admin_Guide/index.html"
>&PRODUCT; Administrator's Guide</ulink>. Developers and users who wish to work with the API
will find instruction in the <ulink
url="http://cloudstack.apache.org/docs/en-US/Apache_CloudStack/4.0.1-incubating/html/API_Developers_Guide/index.html"
>&PRODUCT; API Developer's Guide</ulink></para>
<para>If you find any errors or problems in this guide, please see <xref linkend="feedback"/>.
We hope you enjoy working with &PRODUCT;!</para>
</chapter>
<chapter id="supported-os">
<title>Compatibility Matrix</title>
<para>This section describes the operating systems, browsers, and hypervisors that have been
newly tested and certified compatible with &PRODUCT; 4.2.1. Most earlier OS and hypervisor
versions are also still supported for use with 4.2.1 It might work well on other platforms,
but the platforms listed below are the ones that are specifically tested against and are more
likely to be able to help troubleshoot if you run into any issues.</para>
<section id="management-server">
<title>Supported OS Versions for Management Server</title>
<para>This section lists the operating systems that are supported for running &PRODUCT;
Management Server. Note that specific versions of the operating systems are tested, so
compatibility with CentOS 6.3 may not indicate compatibility with CentOS 6.2, 6.1 and so
on.</para>
<itemizedlist>
<listitem>
<para>RHEL versions 5.5, 6.2, 6.3, and 6.4</para>
</listitem>
<listitem>
<para>CentOS versions 6.3, and 6.4</para>
</listitem>
<listitem>
<para>Ubuntu 12.04 LTS</para>
</listitem>
</itemizedlist>
</section>
<section id="supported-hv">
<title>Supported Hypervisor Versions</title>
<para>CloudStack supports three hypervisor families, XenServer with XAPI, KVM, and VMware with
vSphere.</para>
<itemizedlist>
<listitem>
<para>CentOS 6.2 with KVM</para>
</listitem>
<listitem>
<para>Red Hat Enterprise Linux 6.2 with KVM</para>
</listitem>
<listitem>
<para>XenServer 6.0.2 (with Hotfix)</para>
</listitem>
<listitem>
<para>XenServer 6.1</para>
</listitem>
<listitem>
<para>VMware vSphere/vCenter 5.1</para>
</listitem>
<listitem>
<para>Bare metal hosts are supported, which have no hypervisor. These hosts can run the
following operating systems:</para>
<itemizedlist>
<listitem>
<para>RHEL or CentOS, v6.2 or 6.3</para>
<note>
<para>Use libvirt version 0.9.10 for CentOS 6.3</para>
</note>
</listitem>
<listitem>
<para>Fedora 17</para>
</listitem>
<listitem>
<para>Ubuntu 12.04</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
<para>For more information, see the Hypervisor Compatibility Matrix in the &PRODUCT;
Installation Guide.</para>
</section>
<section id="ex-devices">
<title>Supported External Devices</title>
<itemizedlist>
<listitem>
<para>Netscaler VPX and MPX versions 9.3 and 10.e </para>
</listitem>
<listitem>
<para>Netscaler SDX version 9.3</para>
</listitem>
<listitem>
<para>SRX (Model srx100b) versions 10.3 or higher</para>
</listitem>
<listitem>
<para>F5 10.1.0 (Build 3341.1084)</para>
</listitem>
</itemizedlist>
</section>
<section id="browser">
<title>Supported Browsers</title>
<para>The &PRODUCT; Web-based UI should be compatible with any modern browser, but it's
possible that some browsers will not render portions of the UI reliably, depending on their
support of Web standards. For best results, one of the following browsers
recommended:</para>
<itemizedlist>
<listitem>
<para>Internet Explorer versions 8 and 9</para>
</listitem>
<listitem>
<para>Firefox version 10 and beyond</para>
</listitem>
<listitem>
<para>Google Chrome versions 17 and 20.0.1132.47m</para>
</listitem>
<listitem>
<para>Safari 5</para>
</listitem>
</itemizedlist>
</section>
</chapter>
<chapter id="version-4.2">
<title>About This New Release</title>
<section id="whats-new-in-4.2.1">
<title>What's New in 4.2.1</title>
<para>&PRODUCT; 4.2.1 includes the following new features.</para>
<section id="xen64-bit-temp">
<title>Optional XenServer 64-Bit Template Support</title>
<para>&PRODUCT; now provides XenServer 64-bit templates for System VMs. With this support,
you will be able to upgrade virtual routers in a zone. The following parameters have been
introduced for the same purpose:</para>
<itemizedlist>
<listitem>
<para>XenServer: <parameter>router.template.xen</parameter></para>
</listitem>
<listitem>
<para>KVM: <parameter>router.template.kvm</parameter></para>
</listitem>
</itemizedlist>
</section>
<section id="vm-snapshots">
<title>XenServer VM Snapshots</title>
<para>VM Snapshots are now supported on both VMware and XenServer hosts. Previously, they
were suported only on VMware.</para>
<para>In addition to the existing &PRODUCT; ability to snapshot individual VM volumes, you
can now take a VM snapshot to preserve all the VM's data volumes as well as (optionally)
its CPU/memory state. This is useful for quick restore of a VM. For example, you can
snapshot a VM, then make changes such as software upgrades. If anything goes wrong, simply
restore the VM to its previous state using the previously saved VM snapshot. The VM
snapshot includes not only the data volumes, but optionally also whether the VM is running
or turned off (CPU state) and the memory contents. The snapshot is stored in &PRODUCT;'s
primary storage.</para>
<para>VM snapshots can have a parent/child relationship. Each successive snapshot of the
same VM is the child of the snapshot that came before it. Each time you take an additional
snapshot of the same VM, it saves only the differences between the current state of the VM
and the state stored in the most recent previous snapshot. The previous snapshot becomes a
parent, and the new snapshot is its child. It is possible to create a long chain of these
parent/child snapshots, which amount to a "redo" record leading from the current state of
the VM back to the original.</para>
</section>
<section id="ucs-enhancements">
<title>Cisco UCS Enhancements</title>
<para>Several modifications have been made to improve the user experience when working with
Cisco UCS blades and the UCS Manager.</para>
<itemizedlist>
<listitem>
<para>The internal procedure for associating a profile to a blade has been modified.
When a user wants to associate a profile to a blade in &PRODUCT; 4.2.1, the user
chooses a profile template. &PRODUCT; instantiates a profile from that template. In
the previous version, &PRODUCT; would instead create a clone of a profile chosen by
the user.</para>
</listitem>
<listitem>
<para>As a consequence of this change, the user now views a list of profile templates
rather than a list of profiles when associating a blade. </para>
</listitem>
<listitem>
<para>A new mechanism is provided for making &PRODUCT; aware of any changes that are
made manually on the Cisco UCS Manager. For example, at any time, &PRODUCT; users
might directly associate or dissociate blades on the UCS Manager, and &PRODUCT; would
not be aware of these changes. In order to synchronize the state of &PRODUCT; with UCS
Manager, the user can click a new Refresh Blades button in the &PRODUCT; UI. This
button is located in the Blades tab, above the list of associated blades.</para>
</listitem>
<listitem>
<para>To support the UCS enhancements, several changes have been made to the &PRODUCT;
API. See <xref linkend="api-changes"/>.</para>
</listitem>
</itemizedlist>
</section>
<section id="s3-api-upload">
<title>Choose Single-part or Multi-part Upload to Object Storage</title>
<para>&PRODUCT; 4.2.1 supports both multi-part and single-part upload for registering
templates, uploading volumes, and backing up snapshots to object storage in secondary
storage. Previously, only multi-part upload was supported for registering templates and
uploading volumes, and only single-part upload was supported for backing up
snapshots.</para>
<para>The type of upload &PRODUCT; will use depends on the value of the new global
configuration setting s3.singleupload.max.size. You can use this setting to set up three
different upload scenarios:</para>
<itemizedlist>
<listitem>
<para>Choose the upload technique dynamically depending on the size of the object to be
uploaded. Smaller objects will be uploaded as a single unit, and larger objects will
be split into multiple parts for upload. To set the threshold for switching to
multi-part upload, set s3.singleupload.max.size to the desired object size in GB
(default: 5GB).</para>
</listitem>
<listitem>
<para>To use multi-part upload for all objects regardless of size, set
s3.singleupload.max.size to 0.</para>
</listitem>
<listitem>
<para>To use single-part upload for all objects, set s3.singleupload.max.size to
-1.</para>
</listitem>
</itemizedlist>
<para>Multi-part upload is useful to make the transfer of templates and volumes to remote
storage more resilient to network failure and to optimize throughput. Single-part upload
may be preferable when using storage that is local to the data center.</para>
</section>
<section id="centos64">
<title>Management Server Support on CentOS 6.4</title>
<para>&PRODUCT; Management Server is now certified on CentOS 6.4.</para>
</section>
<section id="devide-id-xen">
<title>Device ID Changes for XenServer</title>
<para>In XenServer 6.1 version and above, a new parameter, <code>device_id: 0002</code>, is
introduced for Windows VM with PV drivers. Due to this change, Windows VMs deployed with
PV drivers on XenServer 6.0.2 or earlier hosts are not able to successfully boot after
stopping and starting once the hosts have been upgraded to XenServer version 6.1 or 6.2.
In order to address this issue, a new Global Parameter, <code>xen.pvdriver.version</code>,
is introduced to reflect the default PV driver version that is used when registering
templates as regular users. Default value for this Global parameter on fresh install will
be set to <code>xenserver61</code>, which implies that the new deployments will have only
XenServer 6.1 or XenServer 6.2 hosts. Default value for this Global parameter on upgrades
would be set to <code>xenserver61</code> only if all the hosts in the deployment are
XenServer 6.1 or above. Even if a host is below XenServer 6.1 version, this value will be
set to <code>xenserver56</code>. The administrators are provided with following abilities
with respect to setting or altering PV driver version:</para>
<itemizedlist>
<listitem>
<para>Ability to set the PV driver version 6.1+ option for a template when registering
templates. </para>
<para>Regular and Domain admin users will not have the ability to set the PV driver
version when registering templates. In this case the PV driver version is defaulted to
the Global parameter, <code>xen.pvdriver.version</code>. The PV driver version of the
template is stored in <code>vm_template_details</code>.</para>
</listitem>
<listitem>
<para>Ability to update the PV driver version 6.1 + option for an existing
template.</para>
</listitem>
<listitem>
<para>Ability to update the PV driver version 6.1 + option for a VM when it is in
stopped state.</para>
</listitem>
</itemizedlist>
</section>
<section id="no-sourceNAT-lb">
<title>Acquiring IP Without Enabling SourceNAT Service</title>
<para>The SourceNAT dependency for acquiring IPs has been removed. Therefore, an IP can now
be acquired and LB rules can be created on it without enabling the SourceNAT service in a
network. In both shared and isolated networks, DNS, DHCP and LB services provided by
&PRODUCT; is a valid service combination. In this case gateway is defined externally on
the configured LB device and &PRODUCT; does not provide any NAT service.</para>
</section>
</section>
<section id="issues-fixed-4.2.1">
<title>Issues Fixed in 4.2.1</title>
<para>Apache CloudStack uses <ulink url="https://issues.apache.org/jira/browse/CLOUDSTACK"
>Jira</ulink> to track its issues. All new features and bugs for 4.2.1 have been tracked
in Jira, and have a standard naming convention of "CLOUDSTACK-NNNN" where "NNNN" is the
issue number.</para>
<para>This section includes a summary of known issues were fixed in 4.2.1. Approximately 150
bugs were resolved or closed in the 4.2.1 cycle.</para>
<informaltable>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1.0*" colname="1" colnum="1"/>
<colspec colwidth="6.19*" colname="2" colnum="2"/>
<thead>
<row>
<entry>
<para>Defect</para>
</entry>
<entry>
<para>Description</para>
</entry>
</row>
</thead>
<tbody>
<row>
<entry>
<para>CLOUDSTACK-3237</para>
</entry>
<entry>
<para>[VMware] Migrate volume is failing when snapshots exist for that
volume.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4300</para>
</entry>
<entry>
<para>[KVM] [Upgrade][2.2.14 to 4.2] System VMs are not coming up after
upgrade.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4405</para>
</entry>
<entry>
<para>[Upgrade] Migration failed between existing hosts and new hosts.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4436</para>
</entry>
<entry>
<para>Virtual Router fails to start on RHEL6.2.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4446</para>
</entry>
<entry>
<para>AWSAPI server fails to start due to an error in bean creation.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4464</para>
</entry>
<entry>
<para>[VMware] When deploying 30 parallel VMs, a VM fails to get deployed due to the
"StartCommand failed due to Exception: javax.xml.ws.soap.SOAPFaultException"
error.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4479</para>
</entry>
<entry>
<para>VPC Network Tier creation fails.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4516</para>
</entry>
<entry>
<para>[VMware][Upgrade] MySQLIntegrityConstraintViolationException while performing
any task by using local storage after upgrade from 3.0.7 to 4.2.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4522</para>
</entry>
<entry>
<para>[VMware][Upgrade] Creation of VM from ISO fails. </para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4554</para>
</entry>
<entry>
<para>[VMware][Upgrade from 3.0.6 to 4.2] System VM agent doesn't come up after
adding a zone on an upgraded setup.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4555</para>
</entry>
<entry>
<para>[VMware][Upgrade from 3.0.6 to 4.2] After upgrade the system VMs fail to come
up because the Secondary Storage mount point is pointing to a wrong
location.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4561</para>
</entry>
<entry>
<para>Deploying a VM fails after upgrading to 4.2 from earlier version having a
private zone.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4579</para>
</entry>
<entry>
<para>[KVM] [Upgrade 2.2.14 to 4.2] After upgrade, deploying VMs with existing
templates does not work.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4580</para>
</entry>
<entry>
<para>[KVM] [Upgrade 2.2.14 - 4.2] After upgrade, existing VMs cannot be started
after stopping them.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4618</para>
</entry>
<entry>
<para>Storage refactoring has broken CLVM.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4671</para>
</entry>
<entry>
<para>ListZone API failed with Assertion error if assertion is turned on for
Management Server.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4864</para>
</entry>
<entry>
<para>[VMware] 64-bit system VM template does not exist.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5065</para>
</entry>
<entry>
<para>[KVM] Snapshot doesn't take VM snapshot if the VM is running.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-532</para>
</entry>
<entry>
<para>Cleaning up Storage template corrupts templates.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-732</para>
</entry>
<entry>
<para>[KVM] No Snapshot support.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-1670</para>
</entry>
<entry>
<para>When a VM is part of two networks, the IP address from the first network is
being assigned to eth1.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-1775</para>
</entry>
<entry>
<para>Events related to User/Domain/Account are not generated, instead USER-DISABLE,
DOMAIN-DELETE and ACCOUNT.DISABLE event are generated.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-1819</para>
</entry>
<entry>
<para>In AWS Regions, various issues persist when moving a zone from one region to
another.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-2792</para>
</entry>
<entry>
<para>In a Redundant router, password is reset again after a fail-over.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3010</para>
</entry>
<entry>
<para>[VMware] Router VM deployment fails with a "Message: Invalid configuration for
device '2' error in Shared networks.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3285</para>
</entry>
<entry>
<para>No support for HTTP redirects and HTTPS certificate handling in UCS.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3424</para>
</entry>
<entry>
<para>[IPv6] When a VM is expunged and a new VM is deployed with the same name,
<code>/etc/dhchosts.txt</code> has two entries with the same name.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3583</para>
</entry>
<entry>
<para>Stopping Management Server does not remove PID. </para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3715</para>
</entry>
<entry>
<para>Live Migration of virtual instances operation is getting timed out.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3737</para>
</entry>
<entry>
<para>Uploaded volume is not getting deleted from Secondary storage after attaching
it to guest VM.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3765</para>
</entry>
<entry>
<para>[Packaging] Unable to upgrade 4.2 build on Centos 5.5.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3808</para>
</entry>
<entry>
<para>Attaching a volume does not work when root is at zone-level primary store and
data at cluster-level or host-level store.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3911</para>
</entry>
<entry>
<para>[Portable IP] No mechanism to check while adding a zone-level public range to
check whether the same VLAN exists in portable IP range.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4095</para>
</entry>
<entry>
<para>Region ID appears within the Database Transaction code.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4128</para>
</entry>
<entry>
<para>Starting a System VMs does not check for existence of staging Secondary
Storage in a zone.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4137</para>
</entry>
<entry>
<para>[KVM]After unmanaging a cluster, managing another cluster does not bring hosts
to UP state. </para>
<para>To work around manually restart cloud-agent on KVM hosts.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4190</para>
</entry>
<entry>
<para>Volume is not deleted from staging storage after a successful volume
migration.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4199</para>
</entry>
<entry>
<para>In Redundant Virtual Router,no failover occurs.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4239</para>
</entry>
<entry>
<para>[VMware] Snapshot creation on ESX 4.1 host fails with a
""BackupSnapshotCommand exception: javax.xml.ws.soap.SOAPFaultException"
error.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4327</para>
</entry>
<entry>
<para>SSVM, CPVM and router VMs are running even after storage entered into
maintenance.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4350</para>
</entry>
<entry>
<para>[Performance Testing] Adding hosts take much longer time than
baselines.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4432</para>
</entry>
<entry>
<para>[VMware] Null Pointer exception is thrown during VM deployment.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4433</para>
</entry>
<entry>
<para>[VMware] Registration of template by using the downloaded template URL is
failing.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4434</para>
</entry>
<entry>
<para>[Ubuntu] Direct input ""- _ "", ""? /"", ""keyboard /"" ,""keyboard -"" keys
are not working well for the US keyboard.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4454</para>
</entry>
<entry>
<para>Not able to delete secondary storage when existing snapshots are
deleted.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4455</para>
</entry>
<entry>
<para>Template sync results in private templates being synced to all the secondary
stores.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4458</para>
</entry>
<entry>
<para>[VMware] Failed to create Snapshot on data disk because of backup snapshot
exception.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4465</para>
</entry>
<entry>
<para>Resource count is not decremented for domain if user VM is being destroyed as
a part of account removal.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4485</para>
</entry>
<entry>
<para>[VMware] [3.0.6 to ASF 4.2 Upgrade] System VMs is not created in the cluster
due to invalid path information of the template on the Primary Storage in the
cluster.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4495</para>
</entry>
<entry>
<para>System VM template URL is pointing to old template location in the Upgrade
file.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4499</para>
</entry>
<entry>
<para>[XenServer v 6.1 and 6.2] Hosts initially transition to 'Alert' state and then
to 'Up' after adding a host.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4513</para>
</entry>
<entry>
<para>[VMware] In a new mapping between a datacenter and a zone, when hosts in the
second cluster in data center put in maintenance mode, CPVM and guest VMs that are
migrated failed to come up.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4520</para>
</entry>
<entry>
<para>[VMware][Upgrade] ExtractVolumeCmd fails with NPE while attempting to download
a volume.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4530</para>
</entry>
<entry>
<para>Creating template from a Snapshot fails with having not able to find any
ova/ovf snapshot when multiple secondary storage exist for a zone.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4539</para>
</entry>
<entry>
<para>[VMware] If <parameter>vmware.create.full.clone</parameter> is set to true in
an upgraded setup, default nature of VMs are full clone.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4551</para>
</entry>
<entry>
<para>Migrating the data volume from NFS to local storage does not change the
underlying disk offering.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4573</para>
</entry>
<entry>
<para>Acquiring IP addresses above domain limit is possible in VPC.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4596</para>
</entry>
<entry>
<para>Same IP range is allowed to be defined in different VLANs across public and
portable ranges.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4600</para>
</entry>
<entry>
<para>Registered cross-zone template does not populate template_zone_ref for later
added zones using S3.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4624</para>
</entry>
<entry>
<para>VM Migration fails in Security Group-enabled Advanced Zone with
'CloudRuntimeException: callHostPlugin failed for cmd: network_rules'
error.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4625</para>
</entry>
<entry>
<para>Snapshots and templates cannot be deleted from staging storage after create
template from snapshot on S3.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4674</para>
</entry>
<entry>
<para>[Baremetal]
<filename>/usr/share/cloudstack-common/scripts/util/ipmi.py</filename> script
need to recognize various IPMI version and BMC type of server.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4698</para>
</entry>
<entry>
<para>DHCP-service enabled network cannot expunge VMs.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4704</para>
</entry>
<entry>
<para>Database upgrade bug is caused by the vpc_service_map table.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4707</para>
</entry>
<entry>
<para>The sourcetemplateid field is not getting set for derived templates.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4711</para>
</entry>
<entry>
<para>Premature API response prevents &PRODUCT; from syncing association status in UCS environment.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4717</para>
</entry>
<entry>
<para>Associate IP does not work on shared networks without Source NAT
service.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4725</para>
</entry>
<entry>
<para>KVM agent fails to join if local pool is already registered.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4745</para>
</entry>
<entry>
<para>Exception occurs when trying to apply static NAT rule by using
CreateIpForwardingCmd API.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4746</para>
</entry>
<entry>
<para>Allocation capacity of a cluster during HA.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4750</para>
</entry>
<entry>
<para>The bond.VLAN mapping in iptables forward chain is not created
consistently.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4777</para>
</entry>
<entry>
<para>NullPointerException instead of working KVM HA.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4783</para>
</entry>
<entry>
<para>Unable to see a derived template if the parent template is deleted.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4816</para>
</entry>
<entry>
<para>No configurable option to choose single or multipart upload to S3 object
storage.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4817</para>
</entry>
<entry>
<para>Backup snapshot on XenServer should take global setting
s3.multipart.enabled.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4828</para>
</entry>
<entry>
<para>Removing NIC fails if DHCP was not enabled in the network offering.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4836</para>
</entry>
<entry>
<para>Restart network with cleanup=true does not reprogram remote access VPN users
in the virtual router.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4849</para>
</entry>
<entry>
<para>LXC not working when using non-oss build.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4859</para>
</entry>
<entry>
<para>No global configuration available to disable storage migration during HA. </para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4862</para>
</entry>
<entry>
<para>Admin cannot delete shared network scoped to user account.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4872</para>
</entry>
<entry>
<para>VM provisioned using a registered Windows Server 2012 template will show as
other OS in vCenter.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4888</para>
</entry>
<entry>
<para>Refresh blades on a decommissioned chassis results in NPE in UCS
environment.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4913</para>
</entry>
<entry>
<para>Disabling security group for bridge mode non-security group zone</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4921</para>
</entry>
<entry>
<para>Usage service does not start after reboot.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4946</para>
</entry>
<entry>
<para>[VMware] Restore VM with template ID feature does not work.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4988</para>
</entry>
<entry>
<para>The public templates created in ROOT/a/b domains are not visible in /ROOT/a
domains</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5061</para>
</entry>
<entry>
<para>[VMware] Storage over-provisioning factor is not considered when using thin
provisioning over VMFS datastores.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5066</para>
</entry>
<entry>
<para>Existed remote access VPN is dropped when adding new VPN users.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5076</para>
</entry>
<entry>
<para>[Upgrade] Rebooting VM failed after bridge name change.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5122</para>
</entry>
<entry>
<para>[VMware] System VMs are getting recreated with old template after upgrading to
4.2.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-1236</para>
</entry>
<entry>
<para>Warning while adding XenServer 6.1 host: Unable to create local link
network.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-1749</para>
</entry>
<entry>
<para>Cloud agent service running on Secondary Storage VM and Console Proxy VM is
named as cloud.com service.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-2024</para>
</entry>
<entry>
<para>The cloudstack-setup-management script with https does not work due to
incorrect path and missing keystore file.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-2034</para>
</entry>
<entry>
<para>No alert generated when deleting a primary storage is failed.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-2413</para>
</entry>
<entry>
<para>The Change Compute Offering dialog box for a instance displays the Description
instead of the Name of compute offering.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-2767</para>
</entry>
<entry>
<para>There is no check on input parameters in API for Global settings, zone
settings, and account settings.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-2804</para>
</entry>
<entry>
<para>The getEthByIp function in vpc_func.sh can return the wrong network
interface.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-2918</para>
</entry>
<entry>
<para>In a scaledup environment, hosts fail to come up after Management Server
restart in a clustered setup.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3223</para>
</entry>
<entry>
<para>[VMware] Exception occurred while creating the CPVM in a setup using the
latest SystemVM template.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3508</para>
</entry>
<entry>
<para>NullPointerException observed during the ListVolumeAnswer API call.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3603</para>
</entry>
<entry>
<para>The template_store_ref"" table has Invalid URL References.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3803</para>
</entry>
<entry>
<para>Unable to complete Add zone wizard.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3873</para>
</entry>
<entry>
<para>No error notification is generated when cluster-level Primary storage is added
with wrong path.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4449</para>
</entry>
<entry>
<para>Possibility of /tmp/xapilog filling up the Root disk on XenServer.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4466</para>
</entry>
<entry>
<para>DHCP capability breaks in 4.2.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4482</para>
</entry>
<entry>
<para>The getVMPassword() API call does not return password for VMs that are
deployed with password enabled templates.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4521</para>
</entry>
<entry>
<para>[VMware] [upgrade] Attaching an uploaded volume to a VM throws NPE.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4572</para>
</entry>
<entry>
<para>The findHostsForMigration API does not return correct host list.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4612</para>
</entry>
<entry>
<para>Specified keyboard language is not showing as default in consoleView passed
during deployVM.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4613</para>
</entry>
<entry>
<para>Security group rules issue in hosts.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4627</para>
</entry>
<entry>
<para>HA does not work, nor user VM migrate.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4636</para>
</entry>
<entry>
<para>In a scaled-up setup all VMs in a cluster were stopped or started after
Management Server restart.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4661</para>
</entry>
<entry>
<para>[DB Upgrade] The SecondaryStorage entry in the host table before upgrade is
not marked as removed after migrating them to image_store table.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4716</para>
</entry>
<entry>
<para>[Upgrade] The resource_count table is not updated after upgrade to 4.2</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4755</para>
</entry>
<entry>
<para>Version 4.x does not allow memory upgrade.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4765</para>
</entry>
<entry>
<para>PF rules configure public IP address is not set on the VR when network is up
after GC.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4785</para>
</entry>
<entry>
<para>No support for adding details to a user VM.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4786</para>
</entry>
<entry>
<para>Redundant router has a priority limitation.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4797</para>
</entry>
<entry>
<para>[Documentation] Installation guide for 4.2 instructs users to install
4.1.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4813</para>
</entry>
<entry>
<para>Get ExitValue when running bash commands.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4827</para>
</entry>
<entry>
<para>Build failed on 4.2.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4839</para>
</entry>
<entry>
<para>[Documentation] The section 3.5 in the Install Guide provides wrong list of
.deb packages.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4867</para>
</entry>
<entry>
<para>NullPointerException on agent while remounting primary storage.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4882</para>
</entry>
<entry>
<para>listClusters/pods/zones and listCapacity(dashboard view) API not accounting
for reserved in the used capacity percentage.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4895</para>
</entry>
<entry>
<para>Management Server fails to start because snapshot policy time zones have day
light savings.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4911</para>
</entry>
<entry>
<para>[Mixed Hypervisor] VM status is marked as alive when exit status of ping
command is not available within command timeout.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4923</para>
</entry>
<entry>
<para>Network limits is missing in Accounts details page.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4924</para>
</entry>
<entry>
<para>AcountCleanup: The IP address is not released if the network failed to
delete.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4947</para>
</entry>
<entry>
<para>if apply.allocation.algorithm.to.pods is set to true VM creation fails.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4948</para>
</entry>
<entry>
<para>DeploymentPlanner: Logic to check if cluster can be avoided needs to consider
if VM is using a local storage and shared storage.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4964</para>
</entry>
<entry>
<para>Nexus password is logged in Management Server logs during guest network
implementation with Cisco VNMC provider.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4985</para>
</entry>
<entry>
<para>NPE while deleting old root volumes of a restored VM during storage garbage
collection.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4987</para>
</entry>
<entry>
<para>Adding an Isolated network belonging to an account to a VM belonging to
different account is possible.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4998</para>
</entry>
<entry>
<para>The assignVirtualMachine API has wrong response string, causing Cloudmonkey to
crash.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5018</para>
</entry>
<entry>
<para>Creation of VM using template from snapshot of RBD volume fails.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5029</para>
</entry>
<entry>
<para>The cloud-bugtool is not available release package.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5038</para>
</entry>
<entry>
<para>[Upgrade] Used CPU is getting bumped up when the over provisioning factor is
greater than 1.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5096</para>
</entry>
<entry>
<para>[VMware] Corrupt template is left behind after the copy of a template from
secondary to primary fails.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5140</para>
</entry>
<entry>
<para>A stopped VM cant start after disable threshold has been reached on the
storage pool.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-3100</para>
</entry>
<entry>
<para>Add the displayvmflag to listVirtualMachines API.</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section id="known-issues-4.2.1">
<title>Known Issues in 4.2.1</title>
<para>This section includes a summary of known issues in 4.2.1 </para>
<informaltable>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1.0*" colname="1" colnum="1"/>
<colspec colwidth="5.69*" colname="2" colnum="2"/>
<thead>
<row>
<entry>
<para>Issue ID</para>
</entry>
<entry>
<para>Description</para>
</entry>
</row>
</thead>
<tbody>
<row>
<entry>
<para>CLOUDSTACK-4875</para>
</entry>
<entry>
<para>[VMware] vCenter 5.5 - SYSTEM VM: Unable to create deployment for VM</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5159</para>
</entry>
<entry>
<para>[VMware] Reset SSH keypair randomly fails.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5188</para>
</entry>
<entry>
<para>Password reset of vm on XenServer and VMware does not work on first
reboot.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-2140</para>
</entry>
<entry>
<para>Host is still marked as being in UP state when the host is shutdown and there
are no more hosts in the cluster.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4545</para>
</entry>
<entry>
<para>[VMware] Master template used by linked clones should not be available for
deletion.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4577</para>
</entry>
<entry>
<para>[VMware] Unexpected exception while executing
org.apache.cloudstack.api.command.user.volume.ResizeVolumeCmd
java.lang.NullPointerException.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4587</para>
</entry>
<entry>
<para>VM is failing to deploy on a Legacy zone after adding zone wide primary
storage and moving cluster wide primary storage to maintenance mode.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4594</para>
</entry>
<entry>
<para>[VMware] [Upgrade] Failed to revert VM Snapshot which were created before Live
Storage Migrating the VM to other clusters.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4616</para>
</entry>
<entry>
<para>When system VMs fail to start when host is down, link local IP addresses do
not get released resulting in all the link local IPs being consumed
eventually.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5008</para>
</entry>
<entry>
<para>[VMware] Failed to start the VM after performing Cold Migration of Volume to
Second Zone wide primary Storage.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5014</para>
</entry>
<entry>
<para>[VMware] DeployVM with data disk failed with exception.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5054</para>
</entry>
<entry>
<para>VM migration involving storage migration on vmware fails with the 'The object
has already been deleted or has not been completely created' exception.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5119</para>
</entry>
<entry>
<para>VLAN provisioning broken in F5</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4475</para>
</entry>
<entry>
<para>Attaching an uploaded volume to a VM is always going to first primary storage
added.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4492</para>
</entry>
<entry>
<para>Attaching volume to a VM fails after upgrade if the volume was uploaded before
upgrade. </para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4496</para>
</entry>
<entry>
<para>[VMware] System VMs are failed to start with NPE when host is in maintenance
state.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4504</para>
</entry>
<entry>
<para>VM creation is failing using the Ubuntu ISO with XenServer 6.1 and 6.2</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4536</para>
</entry>
<entry>
<para>Inconsistency in volume store location on secondary storage for uploaded and
extracted volume.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4574</para>
</entry>
<entry>
<para>NPE while executing DestroyVM command.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4593</para>
</entry>
<entry>
<para>[VMware] [Upgrade] Livestorage Migration and VM Snapshot features are not
fully functional after upgrade.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4620</para>
</entry>
<entry>
<para>VM failed to start on the host on which it was running due to not having
enough reserved memory when the host was powered on after being shutdown.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4638</para>
</entry>
<entry>
<para>State information is not synced on Starting VM directly via vCenter.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4639</para>
</entry>
<entry>
<para>Status of VM is not synced properly when host is HA during hypervisor
failure.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4657</para>
</entry>
<entry>
<para>[CEPH] Attaching a volume to an instance that is migrated from one primary to
another primary fails.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4697</para>
</entry>
<entry>
<para>Not able to delete Primary storage when there are no hosts in the
cluster.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4734</para>
</entry>
<entry>
<para>Creating snapshot from ROOT volume fails with the Failed to create snapshot
due to an internal error creating snapshot for volume 14 error message.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4743</para>
</entry>
<entry>
<para>The applyStaticRoutes/createPrivateGatway/deletePrivateGateway APIs read from
the vpc_service_map table instead of relying on hard-coded values.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4789</para>
</entry>
<entry>
<para>Fix ResourceMetaDataManagerTest.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4850</para>
</entry>
<entry>
<para>[UCS] using template instead of cloning profile.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4861</para>
</entry>
<entry>
<para>[VMware] If Guest traffic spans across multiple physical networks, selection
of physical network to implement guest network is not working correctly.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4906</para>
</entry>
<entry>
<para>Add network address to the Marvin dependency list.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-4978</para>
</entry>
<entry>
<para>[VMware] Provisioning VMs from templates fails with the ROOT-249/ROOT-249.vmdk
not found error</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5002</para>
</entry>
<entry>
<para>Destroying VM does not work. VM destroy failed with the Stop i-2-59-VM command
due to invalid object reference. The object may have recently been deleted. </para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5005</para>
</entry>
<entry>
<para>Stopping multiple VMs does not work.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5020</para>
</entry>
<entry>
<para>Recreate system VM fails in a specific scenario during storage
maintenance.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5075</para>
</entry>
<entry>
<para>Various issues with destroying a VM with local storage. VM disk statistics
cannot be updated for a VM.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5090</para>
</entry>
<entry>
<para>Anti-Affinity: VM fails to start on a cluster belonging to a different
pod.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5098</para>
</entry>
<entry>
<para>[VMware] Entries in <code>vmware_data_center</code> and <code>vmware_data_center_zone_map</code> are not
cleaned up when there is a failure to add the cluster.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5118</para>
</entry>
<entry>
<para>Virtual Routers are listed multiple times in the Infrastructure page.</para>
</entry>
</row>
<row>
<entry>
<para>CLOUDSTACK-5123</para>
</entry>
<entry>
<para>[VMware] Memory over-provisioning behaviour.</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
</chapter>
<chapter id="upgrade-instructions">
<title>Upgrade Instructions for 4.2.1</title>
<para>This section contains upgrade instructions from prior versions of CloudStack to Apache
CloudStack 4.2.1. We include instructions on upgrading to Apache CloudStack from pre-Apache
versions of Citrix &PRODUCT; (last version prior to Apache is 3.0.2) and from the releases
made while CloudStack was in the Apache Incubator.</para>
<para>If you run into any issues during upgrades, please feel free to ask questions on
users@cloudstack.apache.org or dev@cloudstack.apache.org.</para>
<section id="upgrade-from-4.2-to-4.2.1">
<title>Upgrade from 4.2.0 to 4.2.1</title>
<para>This section will guide you from &PRODUCT; 4.2 to &PRODUCT; 4.2.1.</para>
<para>Any steps that are hypervisor-specific will be called out with a note.</para>
<para>We recommend reading through this section once or twice before beginning your upgrade
procedure, and working through it on a test system before working on a production
system.</para>
<orderedlist>
<note>
<para>The following upgrade instructions should be performed regardless of hypervisor
type.</para>
</note>
<listitem>
<orderedlist numeration="loweralpha">
<listitem>
<para>While running the existing 4.2.0 system, log in to the UI as root
administrator.</para>
</listitem>
<listitem>
<para>In the left navigation bar, click Templates.</para>
</listitem>
<listitem>
<para>In Select view, click Templates.</para>
</listitem>
<listitem>
<para>Click Register template.</para>
<para>The Register template dialog box is displayed.</para>
</listitem>
<listitem>
<para>In the Register template dialog box, specify the following values (do not change
these):</para>
<informaltable>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*" colname="1" colnum="1"/>
<colspec colwidth="2*" colname="2" colnum="2"/>
<thead>
<row>
<entry><para>Hypervisor</para></entry>
<entry><para>Description</para></entry>
</row>
</thead>
<tbody>
<row>
<entry><para>XenServer</para></entry>
<entry><para>Name: systemvm-xenserver-4.2</para>
<para>Description: systemvm-xenserver-4.2</para>
<para>URL:http://download.cloud.com/templates/4.2/systemvmtemplate-2013-07-12-master-xen.vhd.bz2 </para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: XenServer</para>
<para>Format: VHD</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
<row>
<entry><para>KVM</para></entry>
<entry><para>Name: systemvm-kvm-4.2</para>
<para>Description: systemvm-kvm-4.2</para>
<para>URL:
http://download.cloud.com/templates/4.2/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2</para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: KVM</para>
<para>Format: QCOW2</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
<row>
<entry><para>VMware</para></entry>
<entry><para>Name: systemvm-vmware-4.2</para>
<para>Description: systemvm-vmware-4.2</para>
<para>URL:
http://download.cloud.com/templates/4.2/systemvmtemplate-4.2-vh7.ova</para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: VMware</para>
<para>Format: OVA</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Most users of &PRODUCT; manage the installation and upgrades of &PRODUCT; with one
of Linux's predominant package systems, RPM or APT. This guide assumes you'll be using
RPM and Yum (for Red Hat Enterprise Linux or CentOS), or APT and Debian packages (for
Ubuntu).</para>
</listitem>
<listitem>
<para>Create RPM or Debian packages (as appropriate) and a repository from the 4.2.1
source, or check the Apache CloudStack downloads page at <ulink
url="http://cloudstack.apache.org/downloads.html"
>http://cloudstack.apache.org/downloads.html</ulink> for package repositories supplied
by community members. You will need them for step <xref
linkend="upgrade-deb-packages-4.2.1"/> or step <xref
linkend="upgrade-rpm-packages-4.2.1"/>.</para>
<para>Instructions for creating packages from the &PRODUCT; source are in the <ulink
url="http://cloudstack.apache.org/docs/en-US/index.html">Installation
Guide</ulink>.</para>
</listitem>
<listitem>
<para>Stop your management server or servers. Run this on all management server
hosts:</para>
<programlisting><prompt>#</prompt> service cloudstack-management stop</programlisting>
</listitem>
<listitem>
<para>If you are running a usage server or usage servers, stop those as well:</para>
<programlisting><prompt>#</prompt> service cloudstack-usage stop</programlisting>
</listitem>
<listitem>
<para>Make a backup of your MySQL database. If you run into any issues or need to roll
back the upgrade, this will assist in debugging or restoring your existing environment.
You'll be prompted for your password.</para>
<programlisting><prompt>#</prompt> mysqldump -u root -p cloud &gt; cloudstack-backup.sql</programlisting>
</listitem>
<listitem>
<para>Perform the following to verify the artifacts:</para>
<orderedlist numeration="loweralpha">
<listitem>
<para>(optional) Install GPG keys if needed:</para>
<programlisting>sudo apt-get install gpg</programlisting>
</listitem>
<listitem>
<para>Import the GPG keys stored in the source distribution's KEYS file</para>
<programlisting>gpg --import KEYS</programlisting>
<para>Alternatively, download the signing keys, the IDs found in the KEYS file,
individually by using a keyserver.</para>
<para>For example:</para>
<programlisting>gpg --recv-keys CC56CEA8</programlisting>
</listitem>
<listitem>
<para>Verify signatures and hash files:</para>
<programlisting>#gpg --verify apache-cloudstack-4.2.1-src.tar.bz2.asc
#gpg --print-md MD5 apache-cloudstack-4.2.1-src.tar.bz2 | diff - apache-cloudstack-4.2.1-src.tar.bz2.md5
#gpg --print-md SHA512 apache-cloudstack-4.2.1-src.tar.bz2 | diff - apache-cloudstack-4.2.1-src.tar.bz2.sha</programlisting>
<para>Each of these commands should return no output. Any output from them implies
that there is a difference between the hash you generated locally and the hash that
has been pulled from the server.</para>
</listitem>
<listitem>
<para>Get the commit hash from the VOTE email.</para>
<para>For example: <code>4cd60f3d1683a3445c3248f48ae064fb573db2a1</code>. The value
changes between releases.</para>
</listitem>
<listitem>
<para>Create two new temporary directories:</para>
<programlisting>#mkdir /tmp/cloudstack/git
#mkdir /tmp/cloudstack/tree</programlisting>
</listitem>
<listitem>
<para>Check out the 4.2.1 branch:</para>
<programlisting>#git clone https://git-wip-us.apache.org/repos/asf/cloudstack.git /tmp/cloudstack/git
#cd /tmp/cloudstack/git
#git archive --format=tar --prefix=/tmp/cloudstack/tree/ &lt;commit-hash&gt; | tar Pxf - </programlisting>
</listitem>
<listitem>
<para>Unpack the release artifact:</para>
<programlisting>#cd /tmp/cloudstack
#tar xvfj apache-cloudstack-4.2.1-src.tar.bz2</programlisting>
</listitem>
<listitem>
<para>Compare the contents of the release artifact with the contents pulled from the
repo:</para>
<programlisting>#diff -r /tmp/cloudstack/apache-cloudstack-4.2.1-src /tmp/cloudstack/tree</programlisting>
<para>Ensure that content is the same.</para>
</listitem>
<listitem>
<para>Verify the Code License Headers:</para>
<programlisting>#cd /tmp/cloudstack/apache-cloudstack-4.2.1-src
#mvn --projects='org.apache.cloudstack:cloudstack' org.apache.rat:apache-rat-plugin:0.8:check</programlisting>
<para>The build fails if any non-compliant files are present that are not specifically
excluded from the ASF license header requirement. You can optionally review the
target/rat.txt file after the run completes. Passing the build implies that RAT
certifies that the files are compliant and this test is passed.</para>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>(KVM Only) If primary storage of type local storage is in use, the path for this
storage needs to be verified to ensure it passes new validation. Check local storage by
querying the cloud.storage_pool table: </para>
<programlisting><prompt>#</prompt>mysql -u cloud -p -e "select id,name,path from cloud.storage_pool where pool_type='Filesystem'"</programlisting>
<para>If local storage paths are found to have a trailing forward slash, remove it:
<programlisting><prompt>#</prompt>mysql -u cloud -p -e 'update cloud.storage_pool set path="/var/lib/libvirt/images" where path="/var/lib/libvirt/images/"';</programlisting>
</para>
</listitem>
<listitem id="upgrade-deb-packages-4.2.1">
<para>If you are using Ubuntu, follow this procedure to upgrade your packages. If not,
skip to step <xref linkend="upgrade-rpm-packages-4.2.1"/>.</para>
<note>
<title>Community Packages</title>
<para>This section assumes you're using the community supplied packages for &PRODUCT;.
If you've created your own packages and APT repository, substitute your own URL for
the ones used in these examples.</para>
</note>
<orderedlist id="debsteps-4.2.1" numeration="loweralpha">
<listitem>
<para>The first order of business will be to change the sources list for each system
with &PRODUCT; packages. This means all management servers, and any hosts that have
the KVM agent. (No changes should be necessary for hosts that are running VMware or
Xen.)</para>
<para>Start by opening <filename>/etc/apt/sources.list.d/cloudstack.list</filename> on
any systems that have &PRODUCT; packages installed.</para>
<para>This file should have one line, which contains:</para>
<programlisting language="Bash">deb http://cloudstack.apt-get.eu/ubuntu precise 4.0</programlisting>
<para>We'll change it to point to the new package repository:</para>
<programlisting language="Bash">deb http://cloudstack.apt-get.eu/ubuntu precise 4.2</programlisting>
<para>If you're using your own package repository, change this line to read as
appropriate for your 4.2.1 repository.</para>
</listitem>
<listitem>
<para>Now update your apt package list:</para>
<programlisting language="Bash">$ sudo apt-get update</programlisting>
</listitem>
<listitem id="deb-master-4.2.1">
<para>Now that you have the repository configured, it's time to install the
<filename>cloudstack-management</filename> package. This will pull in any other
dependencies you need.</para>
<programlisting language="Bash">$ sudo apt-get install cloudstack-management</programlisting>
</listitem>
<listitem id="kvm-agent-deb-4.2.1">
<para>You will need to manually install the <filename>cloudstack-agent</filename>
package:</para>
<programlisting language="Bash">$ sudo apt-get install cloudstack-agent</programlisting>
<para>During the installation of <filename>cloudstack-agent</filename>, APT will copy
your <filename>agent.properties</filename>, <filename>log4j-cloud.xml</filename>,
and <filename>environment.properties</filename> from
<filename>/etc/cloud/agent</filename> to
<filename>/etc/cloudstack/agent</filename>.</para>
<para>When prompted whether you wish to keep your configuration, say Yes.</para>
</listitem>
<listitem>
<para>Verify that the file
<filename>/etc/cloudstack/agent/environment.properties</filename> has a line that
reads:</para>
<programlisting language="Bash">paths.script=/usr/share/cloudstack-common</programlisting>
<para>If not, add the line.</para>
</listitem>
<listitem>
<para>Restart the agent:</para>
<programlisting language="Bash">
service cloudstack-agent stop
killall jsvc
service cloudstack-agent start
</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>(VMware only) Additional steps are required for each VMware cluster. These steps
will not affect running guests in the cloud. These steps are required only for clouds
using VMware clusters:</para>
<orderedlist numeration="loweralpha">
<listitem>
<para>Stop the Management Server:</para>
<programlisting>service cloudstack-management stop</programlisting>
</listitem>
<listitem>
<para>Generate the encrypted equivalent of your vCenter password:</para>
<programlisting>java -classpath /usr/share/cloudstack-common/lib/jasypt-1.9.0.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI encrypt.sh input="_your_vCenter_password_" password="`cat /etc/cloudstack/management/key`" verbose=false</programlisting>
<para>Store the output from this step, we need to add this in cluster_details table
and vmware_data_center tables in place of the plain text password</para>
</listitem>
<listitem>
<para>Find the ID of the row of cluster_details table that you have to update:</para>
<programlisting>mysql -u &lt;username&gt; -p&lt;password&gt;</programlisting>
<programlisting>select * from cloud.cluster_details;</programlisting>
</listitem>
<listitem>
<para>Update the plain text password with the encrypted one</para>
<programlisting>update cloud.cluster_details set value = '_ciphertext_from_step_1_' where id = _id_from_step_2_;</programlisting>
</listitem>
<listitem>
<para>Confirm that the table is updated:</para>
<programlisting>select * from cloud.cluster_details; </programlisting>
</listitem>
<listitem>
<para>Find the ID of the correct row of vmware_data_center that you want to
update</para>
<programlisting>select * from cloud.vmware_data_center; </programlisting>
</listitem>
<listitem>
<para>update the plain text password with the encrypted one:</para>
<programlisting>update cloud.vmware_data_center set password = '_ciphertext_from_step_1_' where id = _id_from_step_5_; </programlisting>
</listitem>
<listitem>
<para>Confirm that the table is updated:</para>
<programlisting>select * from cloud.vmware_data_center; </programlisting>
</listitem>
<listitem>
<para>Start the &PRODUCT; Management server </para>
<programlisting>service cloudstack-management start</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>(KVM only) Additional steps are required for each KVM host. These steps will not
affect running guests in the cloud. These steps are required only for clouds using KVM
as hosts and only on the KVM hosts.</para>
<orderedlist numeration="loweralpha">
<listitem>
<para>Configure the CloudStack yum repository as detailed above.</para>
</listitem>
<listitem>
<para>Stop the running agent.</para>
<programlisting># service cloud-agent stop</programlisting>
</listitem>
<listitem>
<para>Update the agent software.</para>
<programlisting># yum update cloudstack-agent</programlisting>
</listitem>
<listitem>
<para>Start the agent.</para>
<programlisting># service cloudstack-agent start</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem id="upgrade-rpm-packages-4.2.1">
<para>If you are using CentOS or RHEL, follow this procedure to upgrade your packages. If
not, skip to step <xref linkend="restart-system-vms-4.2.1"/>.</para>
<note>
<title>Community Packages</title>
<para>This section assumes you're using the community supplied packages for &PRODUCT;.
If you've created your own packages and yum repository, substitute your own URL for
the ones used in these examples.</para>
</note>
<orderedlist id="rpmsteps-4.2.1" numeration="loweralpha">
<listitem>
<para>The first order of business will be to change the yum repository for each system
with &PRODUCT; packages. This means all management servers, and any hosts that have
the KVM agent. </para>
<para>(No changes should be necessary for hosts that are running VMware or
Xen.)</para>
<para>Start by opening <filename>/etc/yum.repos.d/cloudstack.repo</filename> on any
systems that have &PRODUCT; packages installed.</para>
<para>This file should have content similar to the following:</para>
<programlisting language="Bash">
[apache-cloudstack]
name=Apache CloudStack
baseurl=http://cloudstack.apt-get.eu/rhel/4.0/
enabled=1
gpgcheck=0
</programlisting>
<para>If you are using the community provided package repository, change the base url
to http://cloudstack.apt-get.eu/rhel/4.2/</para>
<para>If you're using your own package repository, change this line to read as
appropriate for your 4.2.1 repository.</para>
</listitem>
<listitem id="rpm-master-4.2.1">
<para>Now that you have the repository configured, it's time to install the
<filename>cloudstack-management</filename> package by upgrading the older
<filename>cloudstack-management</filename> package.</para>
<programlisting language="Bash">$ sudo yum upgrade cloudstack-management</programlisting>
</listitem>
<listitem id="kvm-agent-rpm-4.2.1">
<para>For KVM hosts, you will need to upgrade the <filename>cloud-agent</filename>
package, similarly installing the new version as
<filename>cloudstack-agent</filename>.</para>
<programlisting language="Bash">$ sudo yum upgrade cloudstack-agent</programlisting>
</listitem>
<listitem>
<para>Verify that the file
<filename>/etc/cloudstack/agent/environment.properties</filename> has a line that
reads:</para>
<programlisting language="Bash">paths.script=/usr/share/cloudstack-common</programlisting>
<para>If not, add the line.</para>
</listitem>
<listitem>
<para>Restart the agent:</para>
<programlisting language="Bash">
service cloudstack-agent stop
killall jsvc
service cloudstack-agent start
</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem id="restart-mgmt-server-4.2.1">
<para>Now it's time to restart the management server</para>
<programlisting language="Bash"><prompt>#</prompt> service cloudstack-management start</programlisting>
</listitem>
<listitem id="restart-system-vms-4.2.1">
<para>Once you've upgraded the packages on your management servers, you'll need to restart
the system VMs. Ensure that the admin port is set to 8096 by using the
"integration.api.port" global parameter. This port is used by the cloud-sysvmadm script
at the end of the upgrade procedure. For information about how to set this parameter,
see "Setting Global Configuration Parameters" in the Installation Guide. Changing this
parameter will require management server restart. Also make sure port 8096 is open in
your local host firewall to do this. </para>
<para>There is a script that will do this for you, all you need to do is run the script
and supply the IP address for your MySQL instance and your MySQL credentials:</para>
<programlisting language="Bash"><prompt>#</prompt> nohup cloudstack-sysvmadm -d <replaceable>IP address</replaceable> -u cloud -p -a &gt; sysvm.log 2&gt;&amp;1 &amp;</programlisting>
<para>You can monitor the log for progress. The process of restarting the system VMs can
take an hour or more.</para>
<programlisting language="Bash"><prompt>#</prompt> tail -f sysvm.log</programlisting>
<para>The output to <filename>sysvm.log</filename> will look something like this:</para>
<programlisting language="Bash">
Stopping and starting 1 secondary storage vm(s)...
Done stopping and starting secondary storage vm(s)
Stopping and starting 1 console proxy vm(s)...
Done stopping and starting console proxy vm(s).
Stopping and starting 4 running routing vm(s)...
Done restarting router(s).
</programlisting>
</listitem>
<listitem>
<note>
<title>For Xen Hosts: Copy vhd-utils</title>
<para>This step is only for CloudStack installs that are using Xen hosts.</para>
</note>
<para>Copy the file <filename>vhd-utils</filename> to
<filename>/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver</filename>.</para>
</listitem>
</orderedlist>
</section>
<section id="upgrade-from-4.1-to-4.2.1">
<title>Upgrade from 4.1.x to 4.2.1</title>
<para>This section will guide you from &PRODUCT; 4.1.x versions to &PRODUCT; 4.2.1.</para>
<para>Any steps that are hypervisor-specific will be called out with a note.</para>
<para>We recommend reading through this section once or twice before beginning your upgrade
procedure, and working through it on a test system before working on a production
system.</para>
<orderedlist>
<listitem>
<para>Most users of &PRODUCT; manage the installation and upgrades of &PRODUCT; with one
of Linux's predominant package systems, RPM or APT. This guide assumes you'll be using
RPM and Yum (for Red Hat Enterprise Linux or CentOS), or APT and Debian packages (for
Ubuntu).</para>
</listitem>
<listitem>
<note>
<para>The following upgrade instructions should be performed regardless of hypervisor
type.</para>
</note>
<orderedlist numeration="loweralpha">
<listitem>
<para>While running the existing 4.1.x system, log in to the UI as root
administrator.</para>
</listitem>
<listitem>
<para>In the left navigation bar, click Templates.</para>
</listitem>
<listitem>
<para>In Select view, click Templates.</para>
</listitem>
<listitem>
<para>Click Register template.</para>
<para>The Register template dialog box is displayed.</para>
</listitem>
<listitem>
<para>In the Register template dialog box, specify the following values (do not change
these):</para>
<informaltable>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*" colname="1" colnum="1"/>
<colspec colwidth="2*" colname="2" colnum="2"/>
<thead>
<row>
<entry><para>Hypervisor</para></entry>
<entry><para>Description</para></entry>
</row>
</thead>
<tbody>
<row>
<entry><para>XenServer</para></entry>
<entry><para>Name: systemvm-xenserver-4.2</para>
<para>Description: systemvm-xenserver-4.2</para>
<para>URL:http://download.cloud.com/templates/4.2/systemvmtemplate-2013-07-12-master-xen.vhd.bz2 </para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: XenServer</para>
<para>Format: VHD</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
<row>
<entry><para>KVM</para></entry>
<entry><para>Name: systemvm-kvm-4.2</para>
<para>Description: systemvm-kvm-4.2</para>
<para>URL:
http://download.cloud.com/templates/4.2/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2</para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: KVM</para>
<para>Format: QCOW2</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
<row>
<entry><para>VMware</para></entry>
<entry><para>Name: systemvm-vmware-4.2</para>
<para>Description: systemvm-vmware-4.2</para>
<para>URL:
http://download.cloud.com/templates/4.2/systemvmtemplate-4.2-vh7.ova</para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: VMware</para>
<para>Format: OVA</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Create RPM or Debian packages (as appropriate) and a repository from the 4.2.1
source, or check the Apache CloudStack downloads page at <ulink
url="http://cloudstack.apache.org/downloads.html"
>http://cloudstack.apache.org/downloads.html</ulink> for package repositories supplied
by community members. You will need them for step <xref
linkend="upgrade-deb-packages-41to42"/> or step <xref
linkend="upgrade-rpm-packages-41to42"/>.</para>
<para>Instructions for creating packages from the &PRODUCT; source are in the <ulink
url="http://cloudstack.apache.org/docs/en-US/index.html">Installation
Guide</ulink>.</para>
</listitem>
<listitem>
<para>Stop your management server or servers. Run this on all management server
hosts:</para>
<programlisting><prompt>#</prompt> service cloudstack-management stop</programlisting>
</listitem>
<listitem>
<para>If you are running a usage server or usage servers, stop those as well:</para>
<programlisting><prompt>#</prompt> service cloudstack-usage stop</programlisting>
</listitem>
<listitem>
<para>Make a backup of your MySQL database. If you run into any issues or need to roll
back the upgrade, this will assist in debugging or restoring your existing environment.
You'll be prompted for your password.</para>
<programlisting><prompt>#</prompt> mysqldump -u root -p cloud &gt; cloudstack-backup.sql</programlisting>
</listitem>
<listitem>
<para>(KVM Only) If primary storage of type local storage is in use, the path for this
storage needs to be verified to ensure it passes new validation. Check local storage by
querying the cloud.storage_pool table: </para>
<programlisting><prompt>#</prompt>mysql -u cloud -p -e "select id,name,path from cloud.storage_pool where pool_type='Filesystem'"</programlisting>
<para>If local storage paths are found to have a trailing forward slash, remove it:
<programlisting><prompt>#</prompt>mysql -u cloud -p -e 'update cloud.storage_pool set path="/var/lib/libvirt/images" where path="/var/lib/libvirt/images/"';</programlisting>
</para>
</listitem>
<listitem id="upgrade-deb-packages-41to42">
<para>If you are using Ubuntu, follow this procedure to upgrade your packages. If not,
skip to step <xref linkend="upgrade-rpm-packages-41to42"/>.</para>
<note>
<title>Community Packages</title>
<para>This section assumes you're using the community supplied packages for &PRODUCT;.
If you've created your own packages and APT repository, substitute your own URL for
the ones used in these examples.</para>
</note>
<orderedlist id="debsteps-41to42" numeration="loweralpha">
<listitem>
<para>The first order of business will be to change the sources list for each system
with &PRODUCT; packages. This means all management servers, and any hosts that have
the KVM agent. (No changes should be necessary for hosts that are running VMware or
Xen.)</para>
<para>Start by opening <filename>/etc/apt/sources.list.d/cloudstack.list</filename> on
any systems that have &PRODUCT; packages installed.</para>
<para>This file should have one line, which contains:</para>
<programlisting language="Bash">deb http://cloudstack.apt-get.eu/ubuntu precise 4.0</programlisting>
<para>We'll change it to point to the new package repository:</para>
<programlisting language="Bash">deb http://cloudstack.apt-get.eu/ubuntu precise 4.2</programlisting>
<para>If you're using your own package repository, change this line to read as
appropriate for your 4.2.1 repository.</para>
</listitem>
<listitem>
<para>Now update your apt package list:</para>
<programlisting language="Bash">$ sudo apt-get update</programlisting>
</listitem>
<listitem id="deb-master-41to42">
<para>Now that you have the repository configured, it's time to install the
<filename>cloudstack-management</filename> package. This will pull in any other
dependencies you need.</para>
<programlisting language="Bash">$ sudo apt-get install cloudstack-management</programlisting>
</listitem>
<listitem id="kvm-agent-deb-41to42">
<para>You will need to manually install the <filename>cloudstack-agent</filename>
package:</para>
<programlisting language="Bash">$ sudo apt-get install cloudstack-agent</programlisting>
<para>During the installation of <filename>cloudstack-agent</filename>, APT will copy
your <filename>agent.properties</filename>, <filename>log4j-cloud.xml</filename>,
and <filename>environment.properties</filename> from
<filename>/etc/cloud/agent</filename> to
<filename>/etc/cloudstack/agent</filename>.</para>
<para>When prompted whether you wish to keep your configuration, say Yes.</para>
</listitem>
<listitem>
<para>Verify that the file
<filename>/etc/cloudstack/agent/environment.properties</filename> has a line that
reads:</para>
<programlisting language="Bash">paths.script=/usr/share/cloudstack-common</programlisting>
<para>If not, add the line.</para>
</listitem>
<listitem>
<para>Restart the agent:</para>
<programlisting language="Bash">
service cloudstack-agent stop
killall jsvc
service cloudstack-agent start
</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>(VMware only) Additional steps are required for each VMware cluster. These steps
will not affect running guests in the cloud. These steps are required only for clouds
using VMware clusters:</para>
<orderedlist numeration="loweralpha">
<listitem>
<para>Stop the Management Server:</para>
<programlisting>service cloudstack-management stop</programlisting>
</listitem>
<listitem>
<para>Generate the encrypted equivalent of your vCenter password:</para>
<programlisting>java -classpath /usr/share/cloudstack-common/lib/jasypt-1.9.0.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI encrypt.sh input="_your_vCenter_password_" password="`cat /etc/cloudstack/management/key`" verbose=false</programlisting>
<para>Store the output from this step, we need to add this in cluster_details table
and vmware_data_center tables in place of the plain text password</para>
</listitem>
<listitem>
<para>Find the ID of the row of cluster_details table that you have to update:</para>
<programlisting>mysql -u &lt;username&gt; -p&lt;password&gt;</programlisting>
<programlisting>select * from cloud.cluster_details;</programlisting>
</listitem>
<listitem>
<para>Update the plain text password with the encrypted one</para>
<programlisting>update cloud.cluster_details set value = '_ciphertext_from_step_1_' where id = _id_from_step_2_;</programlisting>
</listitem>
<listitem>
<para>Confirm that the table is updated:</para>
<programlisting>select * from cloud.cluster_details; </programlisting>
</listitem>
<listitem>
<para>Find the ID of the correct row of vmware_data_center that you want to
update</para>
<programlisting>select * from cloud.vmware_data_center; </programlisting>
</listitem>
<listitem>
<para>update the plain text password with the encrypted one:</para>
<programlisting>update cloud.vmware_data_center set password = '_ciphertext_from_step_1_' where id = _id_from_step_5_; </programlisting>
</listitem>
<listitem>
<para>Confirm that the table is updated:</para>
<programlisting>select * from cloud.vmware_data_center; </programlisting>
</listitem>
<listitem>
<para>Start the &PRODUCT; Management server </para>
<programlisting>service cloudstack-management start</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>(KVM only) Additional steps are required for each KVM host. These steps will not
affect running guests in the cloud. These steps are required only for clouds using KVM
as hosts and only on the KVM hosts.</para>
<orderedlist numeration="loweralpha">
<listitem>
<para>Configure the CloudStack yum repository as detailed above.</para>
</listitem>
<listitem>
<para>Stop the running agent.</para>
<programlisting># service cloud-agent stop</programlisting>
</listitem>
<listitem>
<para>Update the agent software.</para>
<programlisting># yum update cloudstack-agent</programlisting>
</listitem>
<listitem>
<para>Start the agent.</para>
<programlisting># service cloudstack-agent start</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem id="upgrade-rpm-packages-41to42">
<para>If you are using CentOS or RHEL, follow this procedure to upgrade your packages. If
not, skip to step <xref linkend="restart-system-vms-41to42"/>.</para>
<note>
<title>Community Packages</title>
<para>This section assumes you're using the community supplied packages for &PRODUCT;.
If you've created your own packages and yum repository, substitute your own URL for
the ones used in these examples.</para>
</note>
<orderedlist id="rpmsteps-41to42" numeration="loweralpha">
<listitem>
<para>The first order of business will be to change the yum repository for each system
with &PRODUCT; packages. This means all management servers, and any hosts that have
the KVM agent. </para>
<para>(No changes should be necessary for hosts that are running VMware or
Xen.)</para>
<para>Start by opening <filename>/etc/yum.repos.d/cloudstack.repo</filename> on any
systems that have &PRODUCT; packages installed.</para>
<para>This file should have content similar to the following:</para>
<programlisting language="Bash">
[apache-cloudstack]
name=Apache CloudStack
baseurl=http://cloudstack.apt-get.eu/rhel/4.0/
enabled=1
gpgcheck=0
</programlisting>
<para>If you are using the community provided package repository, change the base url
to http://cloudstack.apt-get.eu/rhel/4.2/</para>
<para>If you're using your own package repository, change this line to read as
appropriate for your 4.2.1 repository.</para>
</listitem>
<listitem id="rpm-master-41to42">
<para>Now that you have the repository configured, it's time to install the
<filename>cloudstack-management</filename> package by upgrading the older
<filename>cloudstack-management</filename> package.</para>
<programlisting language="Bash">$ sudo yum upgrade cloudstack-management</programlisting>
</listitem>
<listitem id="kvm-agent-rpm-41to42">
<para>For KVM hosts, you will need to upgrade the <filename>cloud-agent</filename>
package, similarly installing the new version as
<filename>cloudstack-agent</filename>.</para>
<programlisting language="Bash">$ sudo yum upgrade cloudstack-agent</programlisting>
</listitem>
<listitem>
<para>Verify that the file
<filename>/etc/cloudstack/agent/environment.properties</filename> has a line that
reads:</para>
<programlisting language="Bash">paths.script=/usr/share/cloudstack-common</programlisting>
<para>If not, add the line.</para>
</listitem>
<listitem>
<para>Restart the agent:</para>
<programlisting language="Bash">
service cloudstack-agent stop
killall jsvc
service cloudstack-agent start
</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem id="restart-mgmt-server-41to42">
<para>Now it's time to restart the management server</para>
<programlisting language="Bash"><prompt>#</prompt> service cloudstack-management start</programlisting>
</listitem>
<listitem id="restart-system-vms-41to42">
<para>Once you've upgraded the packages on your management servers, you'll need to restart
the system VMs. Ensure that the admin port is set to 8096 by using the
"integration.api.port" global parameter. This port is used by the cloud-sysvmadm script
at the end of the upgrade procedure. For information about how to set this parameter,
see "Setting Global Configuration Parameters" in the Installation Guide. Changing this
parameter will require management server restart. Also make sure port 8096 is open in
your local host firewall to do this. </para>
<para>There is a script that will do this for you, all you need to do is run the script
and supply the IP address for your MySQL instance and your MySQL credentials:</para>
<programlisting language="Bash"><prompt>#</prompt> nohup cloudstack-sysvmadm -d <replaceable>IP address</replaceable> -u cloud -p -a &gt; sysvm.log 2&gt;&amp;1 &amp;</programlisting>
<para>You can monitor the log for progress. The process of restarting the system VMs can
take an hour or more.</para>
<programlisting language="Bash"><prompt>#</prompt> tail -f sysvm.log</programlisting>
<para>The output to <filename>sysvm.log</filename> will look something like this:</para>
<programlisting language="Bash">
Stopping and starting 1 secondary storage vm(s)...
Done stopping and starting secondary storage vm(s)
Stopping and starting 1 console proxy vm(s)...
Done stopping and starting console proxy vm(s).
Stopping and starting 4 running routing vm(s)...
Done restarting router(s).
</programlisting>
</listitem>
<listitem>
<note>
<title>For Xen Hosts: Copy vhd-utils</title>
<para>This step is only for CloudStack installs that are using Xen hosts.</para>
</note>
<para>Copy the file <filename>vhd-utils</filename> to
<filename>/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver</filename>.</para>
</listitem>
</orderedlist>
</section>
<section id="upgrade-from-4.0-to-4.2.1">
<title>Upgrade from 4.0.x to 4.2.1</title>
<para>This section will guide you from &PRODUCT; 4.0.x versions to &PRODUCT; 4.2.1.</para>
<para>Any steps that are hypervisor-specific will be called out with a note.</para>
<warning>
<title>Package Structure Changes</title>
<para>The package structure for &PRODUCT; has changed significantly since the 4.0.x
releases. If you've compiled your own packages, you'll notice that the package names and
the number of packages has changed. This is <emphasis>not</emphasis> a bug.</para>
<para>However, this <emphasis>does</emphasis> mean that the procedure is not as simple as an
<command>apt-get upgrade</command> or <command>yum update</command>, so please follow
this section carefully.</para>
</warning>
<para>We recommend reading through this section once or twice before beginning your upgrade
procedure, and working through it on a test system before working on a production
system.</para>
<orderedlist>
<listitem>
<para>Most users of &PRODUCT; manage the installation and upgrades of &PRODUCT; with one
of Linux's predominant package systems, RPM or APT. This guide assumes you'll be using
RPM and Yum (for Red Hat Enterprise Linux or CentOS), or APT and Debian packages (for
Ubuntu).</para>
<para>Create RPM or Debian packages (as appropriate) and a repository from the 4.1.0
source, or check the Apache CloudStack downloads page at <ulink
url="http://cloudstack.apache.org/downloads.html"
>http://cloudstack.apache.org/downloads.html</ulink> for package repositories supplied
by community members. You will need them for step <xref
linkend="upgrade-deb-packages-40to41"/> or step <xref
linkend="upgrade-rpm-packages-40to41"/>.</para>
<para>Instructions for creating packages from the &PRODUCT; source are in the <ulink
url="http://cloudstack.apache.org/docs/en-US/index.html">Installation
Guide</ulink>.</para>
</listitem>
<listitem>
<note>
<para>The following upgrade instructions should be performed regardless of hypervisor
type.</para>
</note>
<orderedlist numeration="loweralpha">
<listitem>
<para>While running the existing 4.0.0 system, log in to the UI as root
administrator.</para>
</listitem>
<listitem>
<para>In the left navigation bar, click Templates.</para>
</listitem>
<listitem>
<para>In Select view, click Templates.</para>
</listitem>
<listitem>
<para>Click Register template.</para>
<para>The Register template dialog box is displayed.</para>
</listitem>
<listitem>
<para>In the Register template dialog box, specify the following values (do not change
these):</para>
<informaltable>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*" colname="1" colnum="1"/>
<colspec colwidth="2*" colname="2" colnum="2"/>
<thead>
<row>
<entry><para>Hypervisor</para></entry>
<entry><para>Description</para></entry>
</row>
</thead>
<tbody>
<row>
<entry><para>XenServer</para></entry>
<entry><para>Name: systemvm-xenserver-4.2</para>
<para>Description: systemvm-xenserver-4.2</para>
<para>URL:http://download.cloud.com/templates/4.2/systemvmtemplate-2013-07-12-master-xen.vhd.bz2 </para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: XenServer</para>
<para>Format: VHD</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
<row>
<entry><para>KVM</para></entry>
<entry><para>Name: systemvm-kvm-4.2</para>
<para>Description: systemvm-kvm-4.2</para>
<para>URL:
http://download.cloud.com/templates/4.2/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2</para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: KVM</para>
<para>Format: QCOW2</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
<row>
<entry><para>VMware</para></entry>
<entry><para>Name: systemvm-vmware-4.2</para>
<para>Description: systemvm-vmware-4.2</para>
<para>URL:
http://download.cloud.com/templates/4.2/systemvmtemplate-4.2-vh7.ova</para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: VMware</para>
<para>Format: OVA</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Stop your management server or servers. Run this on all management server
hosts:</para>
<programlisting><prompt>#</prompt> service cloud-management stop</programlisting>
</listitem>
<listitem>
<para>If you are running a usage server or usage servers, stop those as well:</para>
<programlisting><prompt>#</prompt> service cloud-usage stop</programlisting>
</listitem>
<listitem>
<para>Make a backup of your MySQL database. If you run into any issues or need to roll
back the upgrade, this will assist in debugging or restoring your existing environment.
You'll be prompted for your password.</para>
<programlisting><prompt>#</prompt> mysqldump -u root -p cloud &gt; cloudstack-backup.sql</programlisting>
</listitem>
<listitem>
<para>Whether you're upgrading a Red Hat/CentOS based system or Ubuntu based system,
you're going to need to stop the CloudStack management server before proceeding.</para>
<programlisting language="Bash"><prompt>#</prompt> service cloud-management stop</programlisting>
</listitem>
<listitem>
<para>If you have made changes to
<filename>/etc/cloud/management/components.xml</filename>, you'll need to carry these
over manually to the new file,
<filename>/etc/cloudstack/management/componentContext.xml</filename>. This is not done
automatically. (If you're unsure, we recommend making a backup of the original
<filename>components.xml</filename> to be on the safe side.</para>
</listitem>
<listitem>
<para>After upgrading to 4.2.1, API clients are expected to send plain text passwords for
login and user creation, instead of MD5 hash. Incase, api client changes are not
acceptable, following changes are to be made for backward compatibility:</para>
<para>Modify componentsContext.xml, and make PlainTextUserAuthenticator as the default
authenticator (1st entry in the userAuthenticators adapter list is default)</para>
<programlisting language="XML">
&lt;!-- Security adapters --&gt;
&lt;bean id="userAuthenticators" class="com.cloud.utils.component.AdapterList"&gt;
&lt;property name="Adapters"&gt;
&lt;list&gt;
&lt;ref bean="PlainTextUserAuthenticator"/&gt;
&lt;ref bean="MD5UserAuthenticator"/&gt;
&lt;ref bean="LDAPUserAuthenticator"/&gt;
&lt;/list&gt;
&lt;/property&gt;
&lt;/bean&gt;
</programlisting>
<para>PlainTextUserAuthenticator works the same way MD5UserAuthenticator worked prior to
4.2.1.</para>
</listitem>
<listitem id="upgrade-deb-packages-40to41">
<para>If you are using Ubuntu, follow this procedure to upgrade your packages. If not,
skip to step <xref linkend="upgrade-rpm-packages-40to41"/>.</para>
<note>
<title>Community Packages</title>
<para>This section assumes you're using the community supplied packages for &PRODUCT;.
If you've created your own packages and APT repository, substitute your own URL for
the ones used in these examples.</para>
</note>
<orderedlist id="debsteps-40to41">
<listitem>
<para>The first order of business will be to change the sources list for each system
with &PRODUCT; packages. This means all management servers, and any hosts that have
the KVM agent. (No changes should be necessary for hosts that are running VMware or
Xen.)</para>
<para>Start by opening <filename>/etc/apt/sources.list.d/cloudstack.list</filename> on
any systems that have &PRODUCT; packages installed.</para>
<para>This file should have one line, which contains:</para>
<programlisting language="Bash">deb http://cloudstack.apt-get.eu/ubuntu precise 4.0</programlisting>
<para>We'll change it to point to the new package repository:</para>
<programlisting language="Bash">deb http://cloudstack.apt-get.eu/ubuntu precise 4.1</programlisting>
<para>If you're using your own package repository, change this line to read as
appropriate for your 4.1.0 repository.</para>
</listitem>
<listitem>
<para>Now update your apt package list:</para>
<programlisting language="Bash">$ sudo apt-get update</programlisting>
</listitem>
<listitem id="deb-master-40to41">
<para>Now that you have the repository configured, it's time to install the
<filename>cloudstack-management</filename> package. This will pull in any other
dependencies you need.</para>
<programlisting language="Bash">$ sudo apt-get install cloudstack-management</programlisting>
</listitem>
<listitem id="kvm-agent-deb-40to41">
<para>You will need to manually install the <filename>cloudstack-agent</filename>
package:</para>
<programlisting language="Bash">$ sudo apt-get install cloudstack-agent</programlisting>
<para>During the installation of <filename>cloudstack-agent</filename>, APT will copy
your <filename>agent.properties</filename>, <filename>log4j-cloud.xml</filename>,
and <filename>environment.properties</filename> from
<filename>/etc/cloud/agent</filename> to
<filename>/etc/cloudstack/agent</filename>.</para>
<para>When prompted whether you wish to keep your configuration, say Yes.</para>
</listitem>
<listitem>
<para>Verify that the file
<filename>/etc/cloudstack/agent/environment.properties</filename> has a line that
reads:</para>
<programlisting language="Bash">paths.script=/usr/share/cloudstack-common</programlisting>
<para>If not, add the line.</para>
</listitem>
<listitem>
<para>Restart the agent:</para>
<programlisting language="Bash">
service cloud-agent stop
killall jsvc
service cloudstack-agent start
</programlisting>
</listitem>
<listitem>
<para>During the upgrade, <filename>log4j-cloud.xml</filename> was simply copied over,
so the logs will continue to be added to
<filename>/var/log/cloud/agent/agent.log</filename>. There's nothing
<emphasis>wrong</emphasis> with this, but if you prefer to be consistent, you can
change this by copying over the sample configuration file:</para>
<programlisting language="Bash">
cd /etc/cloudstack/agent
mv log4j-cloud.xml.dpkg-dist log4j-cloud.xml
service cloudstack-agent restart
</programlisting>
</listitem>
<listitem>
<para>Once the agent is running, you can uninstall the old cloud-* packages from your
system:</para>
<programlisting language="Bash">sudo dpkg --purge cloud-agent</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem id="upgrade-rpm-packages-40to41">
<para>If you are using CentOS or RHEL, follow this procedure to upgrade your packages. If
not, skip to step <xref linkend="restart-system-vms-40to41"/>.</para>
<note>
<title>Community Packages</title>
<para>This section assumes you're using the community supplied packages for &PRODUCT;.
If you've created your own packages and yum repository, substitute your own URL for
the ones used in these examples.</para>
</note>
<orderedlist id="rpmsteps-40to41">
<listitem>
<para>The first order of business will be to change the yum repository for each system
with &PRODUCT; packages. This means all management servers, and any hosts that have
the KVM agent. (No changes should be necessary for hosts that are running VMware or
Xen.)</para>
<para>Start by opening <filename>/etc/yum.repos.d/cloudstack.repo</filename> on any
systems that have &PRODUCT; packages installed.</para>
<para>This file should have content similar to the following:</para>
<programlisting language="Bash">
[apache-cloudstack]
name=Apache CloudStack
baseurl=http://cloudstack.apt-get.eu/rhel/4.0/
enabled=1
gpgcheck=0
</programlisting>
<para>If you are using the community provided package repository, change the baseurl
to http://cloudstack.apt-get.eu/rhel/4.1/</para>
<para>If you're using your own package repository, change this line to read as
appropriate for your 4.2.1 repository.</para>
</listitem>
<listitem id="rpm-master-40to41">
<para>Now that you have the repository configured, it's time to install the
<filename>cloudstack-management</filename> package by upgrading the older
<filename>cloud-client</filename> package.</para>
<programlisting language="Bash">$ sudo yum upgrade cloud-client</programlisting>
</listitem>
<listitem id="kvm-agent-rpm-40to41">
<para>For KVM hosts, you will need to upgrade the <filename>cloud-agent</filename>
package, similarly installing the new version as
<filename>cloudstack-agent</filename>.</para>
<programlisting language="Bash">$ sudo yum upgrade cloud-agent</programlisting>
<para>During the installation of <filename>cloudstack-agent</filename>, the RPM will
copy your <filename>agent.properties</filename>,
<filename>log4j-cloud.xml</filename>, and
<filename>environment.properties</filename> from
<filename>/etc/cloud/agent</filename> to
<filename>/etc/cloudstack/agent</filename>.</para>
</listitem>
<listitem>
<para>Verify that the file
<filename>/etc/cloudstack/agent/environment.properties</filename> has a line that
reads:</para>
<programlisting language="Bash">paths.script=/usr/share/cloudstack-common</programlisting>
<para>If not, add the line.</para>
</listitem>
<listitem>
<para>Restart the agent:</para>
<programlisting language="Bash">
service cloud-agent stop
killall jsvc
service cloudstack-agent start
</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem id="restart-system-vms-40to41">
<para>Once you've upgraded the packages on your management servers, you'll need to restart
the system VMs. Make sure port 8096 is open in your local host firewall to do
this.</para>
<para>There is a script that will do this for you, all you need to do is run the script
and supply the IP address for your MySQL instance and your MySQL credentials:</para>
<programlisting language="Bash"><prompt>#</prompt> nohup cloudstack-sysvmadm -d <replaceable>IP address</replaceable> -u cloud -p -a &gt; sysvm.log 2&gt;&amp;1 &amp;</programlisting>
<para>You can monitor the log for progress. The process of restarting the system VMs can
take an hour or more.</para>
<programlisting language="Bash"><prompt>#</prompt> tail -f sysvm.log</programlisting>
<para>The output to <filename>sysvm.log</filename> will look something like this:</para>
<programlisting language="Bash">
Stopping and starting 1 secondary storage vm(s)...
Done stopping and starting secondary storage vm(s)
Stopping and starting 1 console proxy vm(s)...
Done stopping and starting console proxy vm(s).
Stopping and starting 4 running routing vm(s)...
Done restarting router(s).
</programlisting>
</listitem>
<listitem>
<note>
<title>For Xen Hosts: Copy vhd-utils</title>
<para>This step is only for CloudStack installs that are using Xen hosts.</para>
</note>
<para>Copy the file <filename>vhd-utils</filename> to
<filename>/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver</filename>.</para>
</listitem>
</orderedlist>
</section>
<section id="upgrade-from-3.0.x-to-4.2.1">
<title>Upgrade from 3.0.x to 4.2.1</title>
<para>This section will guide you from Citrix CloudStack 3.0.x to Apache CloudStack 4.2.1.
Sections that are hypervisor-specific will be called out with a note.</para>
<orderedlist>
<listitem>
<note>
<para>The following upgrade instructions should be performed regardless of hypervisor
type.</para>
</note>
<orderedlist numeration="loweralpha">
<listitem>
<para>While running the existing 3.0.x system, log in to the UI as root
administrator.</para>
</listitem>
<listitem>
<para>In the left navigation bar, click Templates.</para>
</listitem>
<listitem>
<para>In Select view, click Templates.</para>
</listitem>
<listitem>
<para>Click Register template.</para>
<para>The Register template dialog box is displayed.</para>
</listitem>
<listitem>
<para>In the Register template dialog box, specify the following values (do not change
these):</para>
<informaltable>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*" colname="1" colnum="1"/>
<colspec colwidth="2*" colname="2" colnum="2"/>
<thead>
<row>
<entry><para>Hypervisor</para></entry>
<entry><para>Description</para></entry>
</row>
</thead>
<tbody>
<row>
<entry><para>XenServer</para></entry>
<entry><para>Name: systemvm-xenserver-4.2</para>
<para>Description: systemvm-xenserver-4.2</para>
<para>URL:http://download.cloud.com/templates/4.2/systemvmtemplate-2013-07-12-master-xen.vhd.bz2 </para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: XenServer</para>
<para>Format: VHD</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
<row>
<entry><para>KVM</para></entry>
<entry><para>Name: systemvm-kvm-4.2</para>
<para>Description: systemvm-kvm-4.2</para>
<para>URL:
http://download.cloud.com/templates/4.2/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2</para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: KVM</para>
<para>Format: QCOW2</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
<row>
<entry><para>VMware</para></entry>
<entry><para>Name: systemvm-vmware-4.2</para>
<para>Description: systemvm-vmware-4.2</para>
<para>URL:
http://download.cloud.com/templates/4.2/systemvmtemplate-4.2-vh7.ova</para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: VMware</para>
<para>Format: OVA</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
<listitem>
<para>Watch the screen to be sure that the template downloads successfully and enters
the READY state. Do not proceed until this is successful.</para>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>(KVM on RHEL 6.0/6.1 only) If your existing &PRODUCT; deployment includes one or
more clusters of KVM hosts running RHEL 6.0 or RHEL 6.1, perform the following:</para>
<orderedlist numeration="loweralpha">
<listitem>
<para>Ensure that you upgrade the operating system version on those hosts before
upgrading &PRODUCT;</para>
<para>To do that, change the yum repository for each system with &PRODUCT; packages,
that implies that all the Management Servers and any hosts that have the KVM agent.
</para>
</listitem>
<listitem>
<para>Open <filename>/etc/yum.repos.d/cloudstack.repo</filename> on any systems that
have &PRODUCT; packages installed.</para>
</listitem>
<listitem>
<para>Edit as follows:</para>
<programlisting>
[upgrade]
name=rhel63
baseurl=url-of-your-rhel6.3-repo
enabled=1
gpgcheck=0
[apache CloudStack]
name= Apache CloudStack
baseurl= http://cloudstack.apt-get.eu/rhel/4.0/
enabled=1
gpgcheck=0</programlisting>
<para>If you are using the community provided package repository, change the baseurl
to http:// cloudstack.apt-get.eu/rhel/4.2/</para>
<para>If you are using your own package repository, change this line to read as
appropriate for your 4.2.0 repository.</para>
</listitem>
<listitem>
<para>Now that you have the repository configured, upgrade the host operating system
from RHEL 6.0 to 6.3:</para>
<programlisting># yum upgrade</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem id="stopping-usage-servers">
<para>Stop all Usage Servers if running. Run this on all Usage Server hosts.</para>
<programlisting language="Bash"><prompt>#</prompt> service cloud-usage stop</programlisting>
</listitem>
<listitem>
<para>Stop the Management Servers. Run this on all Management Server hosts.</para>
<programlisting language="Bash"><prompt>#</prompt> service cloud-management stop</programlisting>
</listitem>
<listitem>
<para>On the MySQL master, take a backup of the MySQL databases. We recommend performing
this step even in test upgrades. If there is an issue, this will assist with
debugging.</para>
<para>In the following commands, it is assumed that you have set the root password on the
database, which is a CloudStack recommended best practice. Substitute your own MySQL
root password.</para>
<programlisting><prompt>#</prompt> <command>mysqldump</command> -u root -p<replaceable>mysql_password</replaceable> cloud > <filename>cloud-backup.dmp</filename>
<prompt>#</prompt> <command>mysqldump</command> -u root -p<replaceable>mysql_password</replaceable> cloud_usage > <filename>cloud-usage-backup.dmp</filename></programlisting>
</listitem>
<listitem>
<para>Either build RPM/DEB packages as detailed in the Installation Guide, or use one of
the community provided yum/apt repositories to gain access to the &PRODUCT;
binaries.</para>
</listitem>
<listitem id="upgrade-deb-packages-302">
<para>If you are using Ubuntu, follow this procedure to upgrade your packages. If not,
skip to step <xref linkend="upgrade-rpm-packages-302"/>.</para>
<note>
<title>Community Packages</title>
<para>This section assumes you're using the community supplied packages for &PRODUCT;.
If you've created your own packages and APT repository, substitute your own URL for
the ones used in these examples.</para>
</note>
<orderedlist numeration="loweralpha" id="debsteps-302">
<listitem>
<para>The first order of business will be to change the sources list for each system
with &PRODUCT; packages. This means all management servers, and any hosts that have
the KVM agent. (No changes should be necessary for hosts that are running VMware or
Xen.)</para>
<para>Start by opening <filename>/etc/apt/sources.list.d/cloudstack.list</filename> on
any systems that have &PRODUCT; packages installed.</para>
<para>This file should have one line, which contains:</para>
<programlisting language="Bash">deb http://cloudstack.apt-get.eu/ubuntu precise 4.0</programlisting>
<para>We'll change it to point to the new package repository:</para>
<programlisting language="Bash">deb http://cloudstack.apt-get.eu/ubuntu precise 4.2</programlisting>
<para>If you're using your own package repository, change this line to read as
appropriate for your 4.2.1 repository.</para>
</listitem>
<listitem>
<para>Now update your apt package list:</para>
<programlisting language="Bash">$ sudo apt-get update</programlisting>
</listitem>
<listitem id="deb-master-302">
<para>Now that you have the repository configured, it's time to install the
<filename>cloudstack-management</filename> package. This will pull in any other
dependencies you need.</para>
<programlisting language="Bash">$ sudo apt-get install cloudstack-management</programlisting>
</listitem>
<listitem id="kvm-agent-deb-302">
<para>You will need to manually install the <filename>cloudstack-agent</filename>
package:</para>
<programlisting language="Bash">$ sudo apt-get install cloudstack-agent</programlisting>
<para>During the installation of <filename>cloudstack-agent</filename>, APT will copy
your <filename>agent.properties</filename>, <filename>log4j-cloud.xml</filename>,
and <filename>environment.properties</filename> from
<filename>/etc/cloud/agent</filename> to
<filename>/etc/cloudstack/agent</filename>.</para>
<para>When prompted whether you wish to keep your configuration, say Yes.</para>
</listitem>
<listitem>
<para>Verify that the file
<filename>/etc/cloudstack/agent/environment.properties</filename> has a line that
reads:</para>
<programlisting language="Bash">paths.script=/usr/share/cloudstack-common</programlisting>
<para>If not, add the line.</para>
</listitem>
<listitem>
<para>Restart the agent:</para>
<programlisting language="Bash">
service cloud-agent stop
killall jsvc
service cloudstack-agent start
</programlisting>
</listitem>
<listitem>
<para>During the upgrade, <filename>log4j-cloud.xml</filename> was simply copied over,
so the logs will continue to be added to
<filename>/var/log/cloud/agent/agent.log</filename>. There's nothing
<emphasis>wrong</emphasis> with this, but if you prefer to be consistent, you can
change this by copying over the sample configuration file:</para>
<programlisting language="Bash">
cd /etc/cloudstack/agent
mv log4j-cloud.xml.dpkg-dist log4j-cloud.xml
service cloudstack-agent restart
</programlisting>
</listitem>
<listitem>
<para>Once the agent is running, you can uninstall the old cloud-* packages from your
system:</para>
<programlisting language="Bash">sudo dpkg --purge cloud-agent</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem id="upgrade-rpm-packages-302">
<para>If you are using CentOS or RHEL, follow this procedure to upgrade your packages. If
not, skip to step <xref linkend="correct-components-xml-302"/>.</para>
<note>
<title>Community Packages</title>
<para>This section assumes you're using the community supplied packages for &PRODUCT;.
If you've created your own packages and yum repository, substitute your own URL for
the ones used in these examples.</para>
</note>
<orderedlist numeration="loweralpha" id="rpmsteps-302">
<listitem>
<para>The first order of business will be to change the yum repository for each system
with &PRODUCT; packages. This means all management servers, and any hosts that have
the KVM agent. (No changes should be necessary for hosts that are running VMware or
Xen.)</para>
<para>Start by opening <filename>/etc/yum.repos.d/cloudstack.repo</filename> on any
systems that have &PRODUCT; packages installed.</para>
<para>This file should have content similar to the following:</para>
<programlisting language="Bash">
[apache-cloudstack]
name=Apache CloudStack
baseurl=http://cloudstack.apt-get.eu/rhel/4.0/
enabled=1
gpgcheck=0
</programlisting>
<para>If you are using the community provided package repository, change the baseurl
to http://cloudstack.apt-get.eu/rhel/4.2/</para>
<para>If you're using your own package repository, change this line to read as
appropriate for your 4.2.0 repository.</para>
</listitem>
<listitem id="rpm-master-302">
<para>Now that you have the repository configured, it's time to install the
<filename>cloudstack-management</filename> package by upgrading the older
<filename>cloud-client</filename> package.</para>
<programlisting language="Bash">$ sudo yum upgrade cloud-client</programlisting>
</listitem>
<listitem id="kvm-agent-rpm-302">
<para>For KVM hosts, you will need to upgrade the <filename>cloud-agent</filename>
package, similarly installing the new version as
<filename>cloudstack-agent</filename>.</para>
<programlisting language="Bash">$ sudo yum upgrade cloud-agent</programlisting>
<para>During the installation of <filename>cloudstack-agent</filename>, the RPM will
copy your <filename>agent.properties</filename>,
<filename>log4j-cloud.xml</filename>, and
<filename>environment.properties</filename> from
<filename>/etc/cloud/agent</filename> to
<filename>/etc/cloudstack/agent</filename>.</para>
</listitem>
<listitem>
<para>Verify that the file
<filename>/etc/cloudstack/agent/environment.properties</filename> has a line that
reads:</para>
<programlisting language="Bash">paths.script=/usr/share/cloudstack-common</programlisting>
<para>If not, add the line.</para>
</listitem>
<listitem>
<para>Restart the agent:</para>
<programlisting language="Bash">
service cloud-agent stop
killall jsvc
service cloudstack-agent start
</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem id="correct-components-xml-302">
<para>If you have made changes to your copy of
<filename>/etc/cloud/management/components.xml</filename> the changes will be
preserved in the upgrade. However, you need to do the following steps to place these
changes in a new version of the file which is compatible with version 4.2.0.</para>
<orderedlist numeration="loweralpha">
<listitem>
<para>Make a backup copy of <filename>/etc/cloud/management/components.xml</filename>.
For example:</para>
<programlisting># mv /etc/cloud/management/components.xml /etc/cloud/management/components.xml-backup</programlisting>
</listitem>
<listitem>
<para>Copy <filename>/etc/cloud/management/components.xml.rpmnew</filename> to create
a new <filename>/etc/cloud/management/components.xml</filename>:</para>
<programlisting># cp -ap /etc/cloud/management/components.xml.rpmnew /etc/cloud/management/components.xml</programlisting>
</listitem>
<listitem>
<para>Merge your changes from the backup file into the new
<filename>components.xml</filename>.</para>
<programlisting># vi /etc/cloudstack/management/components.xml</programlisting>
</listitem>
</orderedlist>
<note>
<para>If you have more than one management server node, repeat the upgrade steps on each
node.</para>
</note>
</listitem>
<listitem>
<para>After upgrading to 4.2.1, API clients are expected to send plain text passwords for
login and user creation, instead of MD5 hash. Incase, api client changes are not
acceptable, following changes are to be made for backward compatibility:</para>
<para>Modify componentContext.xml, and make PlainTextUserAuthenticator as the default
authenticator (1st entry in the userAuthenticators adapter list is default)</para>
<programlisting language="XML">
&lt;!-- Security adapters --&gt;
&lt;bean id="userAuthenticators" class="com.cloud.utils.component.AdapterList"&gt;
&lt;property name="Adapters"&gt;
&lt;list&gt;
&lt;ref bean="PlainTextUserAuthenticator"/&gt;
&lt;ref bean="MD5UserAuthenticator"/&gt;
&lt;ref bean="LDAPUserAuthenticator"/&gt;
&lt;/list&gt;
&lt;/property&gt;
&lt;/bean&gt;
</programlisting>
<para>PlainTextUserAuthenticator works the same way MD5UserAuthenticator worked prior to
4.2.1</para>
</listitem>
<listitem>
<para>Start the first Management Server. Do not start any other Management Server nodes
yet.</para>
<programlisting language="Bash"><prompt>#</prompt> service cloudstack-management start</programlisting>
<para>Wait until the databases are upgraded. Ensure that the database upgrade is complete.
After confirmation, start the other Management Servers one at a time by running the same
command on each node.</para>
<note>
<para>Failing to restart the Management Server indicates a problem in the upgrade.
Having the Management Server restarted without any issues indicates that the upgrade
is successfully completed.</para>
</note>
</listitem>
<listitem>
<para>Start all Usage Servers (if they were running on your previous version). Perform
this on each Usage Server host.</para>
<para><command># service cloudstack-usage start</command></para>
</listitem>
<listitem>
<para>Additional steps are required for each KVM host. These steps will not affect running
guests in the cloud. These steps are required only for clouds using KVM as hosts and
only on the KVM hosts.</para>
<orderedlist numeration="loweralpha">
<listitem>
<para>Configure a yum or apt repository containing the &PRODUCT; packages as outlined
in the Installation Guide.</para>
</listitem>
<listitem>
<para>Stop the running agent.</para>
<para><command># service cloud-agent stop</command></para>
</listitem>
<listitem>
<para>Update the agent software with one of the following command sets as appropriate
for your environment.</para>
<para><command># yum update cloud-*</command></para>
<para><command># apt-get update</command></para>
<para><command># apt-get upgrade cloud-*</command></para>
</listitem>
<listitem>
<para>Edit <filename>/etc/cloudstack/agent/agent.properties</filename> to change the
resource parameter from
"com.cloud.agent.resource.computing.LibvirtComputingResource" to
"com.cloud.hypervisor.kvm.resource.LibvirtComputingResource".</para>
</listitem>
<listitem>
<para>Upgrade all the existing bridge names to new bridge names by running this
script:</para>
<programlisting> # cloudstack-agent-upgrade</programlisting>
</listitem>
<listitem>
<para> Install a libvirt hook with the following commands:</para>
<programlisting> # mkdir /etc/libvirt/hooks
# cp /usr/share/cloudstack-agent/lib/libvirtqemuhook /etc/libvirt/hooks/qemu
# chmod +x /etc/libvirt/hooks/qemu</programlisting>
</listitem>
<listitem>
<para>Restart libvirtd.</para>
<programlisting># service libvirtd restart</programlisting>
</listitem>
<listitem>
<para>Start the agent.</para>
<programlisting># service cloudstack-agent start</programlisting>
</listitem>
<listitem>
<para>When the Management Server is up and running, log in to the &PRODUCT; UI and
restart the virtual router for proper functioning of all the features.</para>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Log in to the CloudStack UI as administrator, and check the status of the hosts. All
hosts should come to Up state (except those that you know to be offline). You may need
to wait 20 or 30 minutes, depending on the number of hosts.</para>
<note>
<para>Troubleshooting: If login fails, clear your browser cache and reload the
page.</para>
</note>
<para>Do not proceed to the next step until the hosts show in Up state.</para>
</listitem>
<listitem>
<para>If you are upgrading from 3.0.x, perform the following:</para>
<orderedlist numeration="loweralpha">
<listitem>
<para>Ensure that the admin port is set to 8096 by using the "integration.api.port"
global parameter.</para>
<para>This port is used by the cloud-sysvmadm script at the end of the upgrade
procedure. For information about how to set this parameter, see "Setting Global
Configuration Parameters" in the Installation Guide.</para>
</listitem>
<listitem>
<para>Restart the Management Server.</para>
<note>
<para>If you don't want the admin port to remain open, you can set it to null after
the upgrade is done and restart the management server.</para>
</note>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Run the <command>cloudstack-sysvmadm</command> script to stop, then start, all
Secondary Storage VMs, Console Proxy VMs, and virtual routers. Run the script once on
each management server. Substitute your own IP address of the MySQL instance, the MySQL
user to connect as, and the password to use for that user. In addition to those
parameters, provide the <command>-c</command> and <command>-r</command> arguments. For
example:</para>
<para><command># nohup cloudstack-sysvmadm -d 192.168.1.5 -u cloud -p password -c -r >
sysvm.log 2>&amp;1 &amp;</command></para>
<para><command># tail -f sysvm.log</command></para>
<para>This might take up to an hour or more to run, depending on the number of accounts in
the system.</para>
</listitem>
<listitem>
<para>If needed, upgrade all Citrix XenServer hypervisor hosts in your cloud to a version
supported by CloudStack 4.2.1. The supported versions are XenServer 5.6 SP2 and 6.0.2.
Instructions for upgrade can be found in the CloudStack 4.2.1 Installation Guide under
"Upgrading XenServer Versions."</para>
</listitem>
<listitem>
<para>Now apply the XenServer hotfix XS602E003 (and any other needed hotfixes) to
XenServer v6.0.2 hypervisor hosts.</para>
<orderedlist numeration="loweralpha">
<listitem>
<para>Disconnect the XenServer cluster from CloudStack.</para>
<para>In the left navigation bar of the CloudStack UI, select Infrastructure. Under
Clusters, click View All. Select the XenServer cluster and click Actions -
Unmanage.</para>
<para>This may fail if there are hosts not in one of the states Up, Down,
Disconnected, or Alert. You may need to fix that before unmanaging this
cluster.</para>
<para>Wait until the status of the cluster has reached Unmanaged. Use the CloudStack
UI to check on the status. When the cluster is in the unmanaged state, there is no
connection to the hosts in the cluster.</para>
</listitem>
<listitem>
<para>To clean up the VLAN, log in to one XenServer host and run:</para>
<para><command>/opt/xensource/bin/cloud-clean-vlan.sh</command></para>
</listitem>
<listitem>
<para>Now prepare the upgrade by running the following on one XenServer host:</para>
<para><command>/opt/xensource/bin/cloud-prepare-upgrade.sh</command></para>
<para>If you see a message like "can't eject CD", log in to the VM and unmount the CD,
then run this script again.</para>
</listitem>
<listitem>
<para>Upload the hotfix to the XenServer hosts. Always start with the Xen pool master,
then the slaves. Using your favorite file copy utility (e.g. WinSCP), copy the
hotfixes to the host. Place them in a temporary folder such as /tmp. </para>
<para>On the Xen pool master, upload the hotfix with this command:</para>
<para><command>xe patch-upload file-name=XS602E003.xsupdate</command></para>
<para>Make a note of the output from this command, which is a UUID for the hotfix
file. You'll need it in another step later.</para>
<note>
<para>(Optional) If you are applying other hotfixes as well, you can repeat the
commands in this section with the appropriate hotfix number. For example,
XS602E004.xsupdate.</para>
</note>
</listitem>
<listitem>
<para>Manually live migrate all VMs on this host to another host. First, get a list of
the VMs on this host:</para>
<para><command># xe vm-list</command></para>
<para>Then use this command to migrate each VM. Replace the example host name and VM
name with your own:</para>
<para><command># xe vm-migrate live=true host=<replaceable>host-name</replaceable>
vm=<replaceable>VM-name</replaceable></command></para>
<note>
<title>Troubleshooting</title>
<para>If you see a message like "You attempted an operation on a VM which requires
PV drivers to be installed but the drivers were not detected," run:</para>
<para><command>/opt/xensource/bin/make_migratable.sh
b6cf79c8-02ee-050b-922f-49583d9f1a14</command>.</para>
</note>
</listitem>
<listitem>
<para>Apply the hotfix. First, get the UUID of this host:</para>
<programlisting># xe host-list</programlisting>
<para>Then use the following command to apply the hotfix. Replace the example host
UUID with the current host ID, and replace the hotfix UUID with the output from the
patch-upload command you ran on this machine earlier. You can also get the hotfix
UUID by running xe patch-list. </para>
<programlisting><command>xe</command> patch-apply host-uuid=<replaceable>host-uuid</replaceable> uuid=<replaceable>hotfix-uuid</replaceable></programlisting>
</listitem>
<listitem>
<para>Copy the following files from the CloudStack Management Server to the
host.</para>
<informaltable>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*" colname="1" colnum="1"/>
<colspec colwidth="2*" colname="2" colnum="2"/>
<thead>
<row>
<entry><para>Copy from here...</para></entry>
<entry><para>...to here</para></entry>
</row>
</thead>
<tbody>
<row>
<entry><para>/usr/lib64/cloud/common/scripts/vm/hypervisor/xenserver/xenserver60/NFSSR.py</para></entry>
<entry><para>/opt/xensource/sm/NFSSR.py</para></entry>
</row>
<row>
<entry><para>/usr/lib64/cloud/common/scripts/vm/hypervisor/xenserver/setupxenserver.sh</para></entry>
<entry><para>/opt/xensource/bin/setupxenserver.sh</para></entry>
</row>
<row>
<entry><para>/usr/lib64/cloud/common/scripts/vm/hypervisor/xenserver/make_migratable.sh</para></entry>
<entry><para>/opt/xensource/bin/make_migratable.sh</para></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
<listitem>
<para>(Only for hotfixes XS602E005 and XS602E007) You need to apply a new Cloud
Support Pack.</para>
<itemizedlist>
<listitem>
<para>Download the CSP software onto the XenServer host from one of the following
links:</para>
<para>For hotfix XS602E005: <ulink
url="http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E005/56710/xe-phase-2/xenserver-cloud-supp.tgz"
>http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E005/56710/xe-phase-2/xenserver-cloud-supp.tgz</ulink></para>
<para>For hotfix XS602E007: <ulink
url="http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E007/57824/xe-phase-2/xenserver-cloud-supp.tgz"
>http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E007/57824/xe-phase-2/xenserver-cloud-supp.tgz</ulink></para>
</listitem>
<listitem>
<para>Extract the file:</para>
<programlisting># tar xf xenserver-cloud-supp.tgz</programlisting>
</listitem>
<listitem>
<para>Run the following script:</para>
<programlisting># xe-install-supplemental-pack xenserver-cloud-supp.iso</programlisting>
</listitem>
<listitem>
<para>If the XenServer host is part of a zone that uses basic networking, disable
Open vSwitch (OVS):</para>
<programlisting># xe-switch-network-backend bridge</programlisting>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Reboot this XenServer host.</para>
</listitem>
<listitem>
<para>Run the following:</para>
<programlisting>/opt/xensource/bin/setupxenserver.sh</programlisting>
<note>
<para>If the message "mv: cannot stat `/etc/cron.daily/logrotate': No such file or
directory" appears, you can safely ignore it.</para>
</note>
</listitem>
<listitem>
<para>Run the following:</para>
<programlisting>for pbd in `xe pbd-list currently-attached=false| grep ^uuid | awk '{print $NF}'`; do xe pbd-plug uuid=$pbd ; </programlisting>
</listitem>
<listitem>
<para>On each slave host in the Xen pool, repeat these steps, starting from "manually
live migrate VMs."</para>
</listitem>
</orderedlist>
</listitem>
</orderedlist>
<note>
<title>Troubleshooting Tip</title>
<para>If passwords which you know to be valid appear not to work after upgrade, or other UI
issues are seen, try clearing your browser cache and reloading the UI page.</para>
</note>
</section>
<section id="upgrade-from-2.2.x-to-4.2.1">
<title>Upgrade from 2.2.14 to 4.2.1</title>
<orderedlist>
<listitem>
<para>Ensure that you query your IPaddress usage records and process them; for example,
issue invoices for any usage that you have not yet billed users for.</para>
<para>Starting in 3.0.2, the usage record format for IP addresses is the same as the rest
of the usage types. Instead of a single record with the assignment and release dates,
separate records are generated per aggregation period with start and end dates. After
upgrading to 4.2.1, any existing IP address usage records in the old format will no
longer be available.</para>
</listitem>
<listitem>
<para>If you are using version 2.2.0 - 2.2.13, first upgrade to 2.2.14 by using the
instructions in the <ulink
url="http://download.cloud.com/releases/2.2.0/CloudStack2.2.14ReleaseNotes.pdf">2.2.14
Release Notes</ulink>.</para>
<warning>
<title>KVM Hosts</title>
<para>If KVM hypervisor is used in your cloud, be sure you completed the step to insert
a valid username and password into the host_details table on each KVM node as
described in the 2.2.14 Release Notes. This step is critical, as the database will be
encrypted after the upgrade to 4.2.1.</para>
</warning>
</listitem>
<listitem>
<para>While running the 2.2.14 system, log in to the UI as root administrator.</para>
</listitem>
<listitem>
<para>Using the UI, add a new System VM template for each hypervisor type that is used in
your cloud. In each zone, add a system VM template for each hypervisor used in that
zone</para>
<orderedlist>
<listitem>
<para>In the left navigation bar, click Templates.</para>
</listitem>
<listitem>
<para>In Select view, click Templates.</para>
</listitem>
<listitem>
<para>Click Register template.</para>
<para>The Register template dialog box is displayed.</para>
</listitem>
<listitem>
<para>In the Register template dialog box, specify the following values depending on
the hypervisor type (do not change these):</para>
<informaltable>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*" colname="1" colnum="1"/>
<colspec colwidth="2*" colname="2" colnum="2"/>
<thead>
<row>
<entry><para>Hypervisor</para></entry>
<entry><para>Description</para></entry>
</row>
</thead>
<tbody>
<row>
<entry><para>XenServer</para></entry>
<entry><para>Name: systemvm-xenserver-4.2</para>
<para>Description: systemvm-xenserver-4.2</para>
<para>URL:http://download.cloud.com/templates/4.2/systemvmtemplate-2013-07-12-master-xen.vhd.bz2 </para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: XenServer</para>
<para>Format: VHD</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
<row>
<entry><para>KVM</para></entry>
<entry><para>Name: systemvm-kvm-4.2</para>
<para>Description: systemvm-kvm-4.2</para>
<para>URL:
http://download.cloud.com/templates/4.2/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2</para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: KVM</para>
<para>Format: QCOW2</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
<row>
<entry><para>VMware</para></entry>
<entry><para>Name: systemvm-vmware-4.2</para>
<para>Description: systemvm-vmware-4.2</para>
<para>URL:
http://download.cloud.com/templates/4.2/systemvmtemplate-4.2-vh7.ova</para>
<para>Zone: Choose the zone where this hypervisor is used</para>
<para>Hypervisor: VMware</para>
<para>Format: OVA</para>
<para>OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release
number available in the dropdown)</para>
<para>Extractable: no</para>
<para>Password Enabled: no</para>
<para>Public: no</para>
<para>Featured: no</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Watch the screen to be sure that the template downloads successfully and enters the
READY state. Do not proceed until this is successful</para>
</listitem>
<listitem>
<para><emphasis role="bold">WARNING</emphasis>: If you use more than one type of
hypervisor in your cloud, be sure you have repeated these steps to download the system
VM template for each hypervisor type. Otherwise, the upgrade will fail.</para>
</listitem>
<listitem>
<para>(KVM on RHEL 6.0/6.1 only) If your existing &PRODUCT; deployment includes one or
more clusters of KVM hosts running RHEL 6.0 or RHEL 6.1, perform the following:</para>
<orderedlist numeration="loweralpha">
<listitem>
<para>Ensure that you upgrade the operating system version on those hosts before
upgrading &PRODUCT;</para>
<para>To do that, change the yum repository for each system with &PRODUCT; packages,
that implies that all the Management Servers and any hosts that have the KVM agent.
</para>
</listitem>
<listitem>
<para>Open <filename>/etc/yum.repos.d/cloudstack.repo</filename> on any systems that
have &PRODUCT; packages installed.</para>
</listitem>
<listitem>
<para>Edit as follows:</para>
<programlisting>
[upgrade]
name=rhel63
baseurl=url-of-your-rhel6.3-repo
enabled=1
gpgcheck=0
[apache CloudStack]
name= Apache CloudStack
baseurl= http://cloudstack.apt-get.eu/rhel/4.2/
enabled=1
gpgcheck=0</programlisting>
<para>If you are using the community provided package repository, change the baseurl
to http:// cloudstack.apt-get.eu/rhel/4.2/</para>
<para>If you are using your own package repository, change this line to read as
appropriate for your 4.2.0 repository.</para>
</listitem>
<listitem>
<para>Now that you have the repository configured, upgrade the host operating system
from RHEL 6.0 to 6.3:</para>
<programlisting># yum upgrade</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Stop all Usage Servers if running. Run this on all Usage Server hosts.</para>
<programlisting># service cloud-usage stop</programlisting>
</listitem>
<listitem>
<para>Stop the Management Servers. Run this on all Management Server hosts.</para>
<programlisting language="Bash"><prompt>#</prompt> service cloud-management stop</programlisting>
</listitem>
<listitem>
<para>On the MySQL master, take a backup of the MySQL databases. We recommend performing
this step even in test upgrades. If there is an issue, this will assist with
debugging.</para>
<para>In the following commands, it is assumed that you have set the root password on the
database, which is a CloudStack recommended best practice. Substitute your own MySQL
root password.</para>
<programlisting><prompt>#</prompt> <command>mysqldump</command> -u root -p<replaceable>mysql_password</replaceable> cloud > <filename>cloud-backup.dmp</filename>
<prompt>#</prompt> <command>mysqldump</command> -u root -p<replaceable>mysql_password</replaceable> cloud_usage > <filename>cloud-usage-backup.dmp</filename>
</programlisting>
</listitem>
<listitem>
<para> Either build RPM/DEB packages as detailed in the Installation Guide, or use one of
the community provided yum/apt repositories to gain access to the &PRODUCT; binaries.
</para>
</listitem>
<listitem id="upgrade-deb-packages-22">
<para>If you are using Ubuntu, follow this procedure to upgrade your packages. If not,
skip to step <xref linkend="upgrade-rpm-packages-22"/>.</para>
<note>
<title>Community Packages</title>
<para>This section assumes you're using the community supplied packages for &PRODUCT;.
If you've created your own packages and APT repository, substitute your own URL for
the ones used in these examples.</para>
</note>
<orderedlist numeration="loweralpha" id="debsteps-22">
<listitem>
<para>The first order of business will be to change the sources list for each system
with &PRODUCT; packages. This means all management servers, and any hosts that have
the KVM agent. (No changes should be necessary for hosts that are running VMware or
Xen.)</para>
<para>Start by opening <filename>/etc/apt/sources.list.d/cloudstack.list</filename> on
any systems that have &PRODUCT; packages installed.</para>
<para>This file should have one line, which contains:</para>
<programlisting language="Bash">deb http://cloudstack.apt-get.eu/ubuntu precise 4.0</programlisting>
<para>We'll change it to point to the new package repository:</para>
<programlisting language="Bash">deb http://cloudstack.apt-get.eu/ubuntu precise 4.2</programlisting>
<para>If you're using your own package repository, change this line to read as
appropriate for your 4.2.0 repository.</para>
</listitem>
<listitem>
<para>Now update your apt package list:</para>
<programlisting language="Bash">$ sudo apt-get update</programlisting>
</listitem>
<listitem id="deb-master-22">
<para>Now that you have the repository configured, it's time to install the
<filename>cloudstack-management</filename> package. This will pull in any other
dependencies you need.</para>
<programlisting language="Bash">$ sudo apt-get install cloudstack-management</programlisting>
</listitem>
<listitem id="kvm-agent-deb-22">
<para>On KVM hosts, you will need to manually install the
<filename>cloudstack-agent</filename> package:</para>
<programlisting language="Bash">$ sudo apt-get install cloudstack-agent</programlisting>
<para>During the installation of <filename>cloudstack-agent</filename>, APT will copy
your <filename>agent.properties</filename>, <filename>log4j-cloud.xml</filename>,
and <filename>environment.properties</filename> from
<filename>/etc/cloud/agent</filename> to
<filename>/etc/cloudstack/agent</filename>.</para>
<para>When prompted whether you wish to keep your configuration, say Yes.</para>
</listitem>
<listitem>
<para>Verify that the file
<filename>/etc/cloudstack/agent/environment.properties</filename> has a line that
reads:</para>
<programlisting language="Bash">paths.script=/usr/share/cloudstack-common</programlisting>
<para>If not, add the line.</para>
</listitem>
<listitem>
<para>Restart the agent:</para>
<programlisting language="Bash">
service cloud-agent stop
killall jsvc
service cloudstack-agent start
</programlisting>
</listitem>
<listitem>
<para>During the upgrade, <filename>log4j-cloud.xml</filename> was simply copied over,
so the logs will continue to be added to
<filename>/var/log/cloud/agent/agent.log</filename>. There's nothing
<emphasis>wrong</emphasis> with this, but if you prefer to be consistent, you can
change this by copying over the sample configuration file:</para>
<programlisting language="Bash">
cd /etc/cloudstack/agent
mv log4j-cloud.xml.dpkg-dist log4j-cloud.xml
service cloudstack-agent restart
</programlisting>
</listitem>
<listitem>
<para>Once the agent is running, you can uninstall the old cloud-* packages from your
system:</para>
<programlisting language="Bash">sudo dpkg --purge cloud-agent</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem id="upgrade-rpm-packages-22">
<para>If you are using CentOS or RHEL, follow this procedure to upgrade your packages. If
not, skip to step <xref linkend="correct-components-xml-22"/>.</para>
<note>
<title>Community Packages</title>
<para>This section assumes you're using the community supplied packages for &PRODUCT;.
If you've created your own packages and yum repository, substitute your own URL for
the ones used in these examples.</para>
</note>
<orderedlist numeration="loweralpha" id="rpmsteps-22">
<listitem>
<para>The first order of business will be to change the yum repository for each system
with &PRODUCT; packages. This means all management servers, and any hosts that have
the KVM agent. (No changes should be necessary for hosts that are running VMware or
Xen.)</para>
<para>Start by opening <filename>/etc/yum.repos.d/cloudstack.repo</filename> on any
systems that have &PRODUCT; packages installed.</para>
<para>This file should have content similar to the following:</para>
<programlisting language="Bash">
[apache-cloudstack]
name=Apache CloudStack
baseurl=http://cloudstack.apt-get.eu/rhel/4.0/
enabled=1
gpgcheck=0
</programlisting>
<para>If you are using the community provided package repository, change the baseurl
to http://cloudstack.apt-get.eu/rhel/4.2/</para>
<para>If you're using your own package repository, change this line to read as
appropriate for your 4.2.1 repository.</para>
</listitem>
<listitem id="rpm-master-22">
<para>Now that you have the repository configured, it's time to install the
<filename>cloudstack-management</filename> package by upgrading the older
<filename>cloud-client</filename> package.</para>
<programlisting language="Bash">$ sudo yum upgrade cloud-client</programlisting>
</listitem>
<listitem id="kvm-agent-rpm-22">
<para>For KVM hosts, you will need to upgrade the <filename>cloud-agent</filename>
package, similarly installing the new version as
<filename>cloudstack-agent</filename>.</para>
<programlisting language="Bash">$ sudo yum upgrade cloud-agent</programlisting>
<para>During the installation of <filename>cloudstack-agent</filename>, the RPM will
copy your <filename>agent.properties</filename>,
<filename>log4j-cloud.xml</filename>, and
<filename>environment.properties</filename> from
<filename>/etc/cloud/agent</filename> to
<filename>/etc/cloudstack/agent</filename>.</para>
</listitem>
<listitem>
<para>Verify that the file
<filename>/etc/cloudstack/agent/environment.properties</filename> has a line that
reads:</para>
<programlisting language="Bash">paths.script=/usr/share/cloudstack-common</programlisting>
<para>If not, add the line.</para>
</listitem>
<listitem>
<para>Restart the agent:</para>
<programlisting language="Bash">
service cloud-agent stop
killall jsvc
service cloudstack-agent start
</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem id="correct-components-xml-22">
<para>If you have made changes to your existing copy of the file components.xml in your
previous-version CloudStack installation, the changes will be preserved in the upgrade.
However, you need to do the following steps to place these changes in a new version of
the file which is compatible with version 4.0.0-incubating.</para>
<note>
<para>How will you know whether you need to do this? If the upgrade output in the
previous step included a message like the following, then some custom content was
found in your old components.xml, and you need to merge the two files:</para>
</note>
<programlisting>warning: /etc/cloud/management/components.xml created as /etc/cloud/management/components.xml.rpmnew </programlisting>
<orderedlist numeration="loweralpha">
<listitem>
<para>Make a backup copy of your
<filename>/etc/cloud/management/components.xml</filename> file. For
example:</para>
<programlisting><prompt>#</prompt> <command>mv</command> <filename>/etc/cloud/management/components.xml</filename> <filename>/etc/cloud/management/components.xml-backup</filename></programlisting>
</listitem>
<listitem>
<para>Copy <filename>/etc/cloud/management/components.xml.rpmnew</filename> to create
a new <filename>/etc/cloud/management/components.xml</filename>:</para>
<programlisting><prompt>#</prompt> <command>cp</command> -ap <filename>/etc/cloud/management/components.xml.rpmnew</filename> <filename>/etc/cloud/management/components.xml</filename></programlisting>
</listitem>
<listitem>
<para>Merge your changes from the backup file into the new components.xml file.</para>
<programlisting><prompt>#</prompt> <command>vi</command> <filename>/etc/cloudstack/management/components.xml</filename>
</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>After upgrading to 4.2.1, API clients are expected to send plain text passwords for
login and user creation, instead of MD5 hash. If API client changes are not acceptable,
following changes are to be made for backward compatibility:</para>
<para>Modify componentContext.xml, and make PlainTextUserAuthenticator as the default
authenticator (1st entry in the userAuthenticators adapter list is default)</para>
<programlisting language="XML">
&lt;!-- Security adapters --&gt;
&lt;bean id="userAuthenticators" class="com.cloud.utils.component.AdapterList"&gt;
&lt;property name="Adapters"&gt;
&lt;list&gt;
&lt;ref bean="PlainTextUserAuthenticator"/&gt;
&lt;ref bean="MD5UserAuthenticator"/&gt;
&lt;ref bean="LDAPUserAuthenticator"/&gt;
&lt;/list&gt;
&lt;/property&gt;
&lt;/bean&gt;
</programlisting>
<para>PlainTextUserAuthenticator works the same way MD5UserAuthenticator worked prior to
4.2.</para>
</listitem>
<listitem>
<para>If you have made changes to your existing copy of the
<filename>/etc/cloud/management/db.properties</filename> file in your previous-version
CloudStack installation, the changes will be preserved in the upgrade. However, you need
to do the following steps to place these changes in a new version of the file which is
compatible with this version.</para>
<orderedlist numeration="loweralpha">
<listitem>
<para>Make a backup copy of your file
<filename>/etc/cloud/management/db.properties</filename>. For example:</para>
<programlisting><prompt>#</prompt> <command>mv</command> <filename>/etc/cloud/management/db.properties</filename> <filename>/etc/cloud/management/db.properties-backup</filename></programlisting>
</listitem>
<listitem>
<para>Copy <filename>/etc/cloud/management/db.properties.rpmnew</filename> to create a
new <filename>/etc/cloud/management/db.properties</filename>:</para>
<programlisting><prompt>#</prompt> <command>cp</command> -ap <filename>/etc/cloud/management/db.properties.rpmnew</filename> <filename>etc/cloud/management/db.properties</filename></programlisting>
</listitem>
<listitem>
<para>Merge your changes from the backup file into the new db.properties file.</para>
<programlisting><prompt>#</prompt> <command>vi</command> <filename>/etc/cloudstack/management/db.properties</filename></programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>On the management server node, run the following command. It is recommended that you
use the command-line flags to provide your own encryption keys. See Password and Key
Encryption in the Installation Guide.</para>
<programlisting><prompt>#</prompt> <command>cloudstack-setup-encryption</command> -e <replaceable>encryption_type</replaceable> -m <replaceable>management_server_key</replaceable> -k <replaceable>database_key</replaceable></programlisting>
<para>When used without arguments, as in the following example, the default encryption
type and keys will be used:</para>
<itemizedlist>
<listitem>
<para>(Optional) For encryption_type, use file or web to indicate the technique used
to pass in the database encryption password. Default: file.</para>
</listitem>
<listitem>
<para>(Optional) For management_server_key, substitute the default key that is used to
encrypt confidential parameters in the properties file. Default: password. It is
highly recommended that you replace this with a more secure value</para>
</listitem>
<listitem>
<para>(Optional) For database_key, substitute the default key that is used to encrypt
confidential parameters in the CloudStack database. Default: password. It is highly
recommended that you replace this with a more secure value.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Repeat steps 10 - 14 on every management server node. If you provided your own
encryption key in step 14, use the same key on all other management servers.</para>
</listitem>
<listitem>
<para>Start the first Management Server. Do not start any other Management Server nodes
yet.</para>
<programlisting language="Bash"><prompt>#</prompt> service cloudstack-management start</programlisting>
<para>Wait until the databases are upgraded. Ensure that the database upgrade is complete.
You should see a message like "Complete! Done." After confirmation, start the other
Management Servers one at a time by running the same command on each node.</para>
</listitem>
<listitem>
<para>Start all Usage Servers (if they were running on your previous version). Perform
this on each Usage Server host.</para>
<programlisting language="Bash"><prompt>#</prompt> service cloudstack-usage start</programlisting>
</listitem>
<listitem>
<para>(KVM only) Perform the following additional steps on each KVM host. </para>
<para>These steps will not affect running guests in the cloud. These steps are required
only for clouds using KVM as hosts and only on the KVM hosts.</para>
<orderedlist numeration="loweralpha">
<listitem>
<para> Configure your CloudStack package repositories as outlined in the Installation
Guide </para>
</listitem>
<listitem>
<para>Stop the running agent.</para>
<programlisting># service cloud-agent stop</programlisting>
</listitem>
<listitem>
<para>Update the agent software with one of the following command sets as
appropriate.</para>
<programlisting><prompt>#</prompt> <command>yum</command> update cloud-*</programlisting>
<programlisting>
<prompt>#</prompt> <command>apt-get</command> update
<prompt>#</prompt> <command>apt-get</command> upgrade cloud-*
</programlisting>
</listitem>
<listitem>
<para> Copy the contents of the <filename>agent.properties</filename> file to the new
<filename>agent.properties</filename> file by using the following command</para>
<programlisting><command>sed</command> -i 's/com.cloud.agent.resource.computing.LibvirtComputingResource/com.cloud.hypervisor.kvm.resource.LibvirtComputingResource/g' <filename>/etc/cloudstack/agent/agent.properties</filename></programlisting>
</listitem>
<listitem>
<para>Upgrade all the existing bridge names to new bridge names by running this
script:</para>
<programlisting> # cloudstack-agent-upgrade</programlisting>
</listitem>
<listitem>
<para> Install a libvirt hook with the following commands:</para>
<programlisting> # mkdir /etc/libvirt/hooks
# cp /usr/share/cloudstack-agent/lib/libvirtqemuhook /etc/libvirt/hooks/qemu
# chmod +x /etc/libvirt/hooks/qemu</programlisting>
</listitem>
<listitem>
<para>Restart libvirtd.</para>
<programlisting># service libvirtd restart</programlisting>
</listitem>
<listitem>
<para>Start the agent.</para>
<programlisting># service cloudstack-agent start</programlisting>
</listitem>
<listitem>
<para>When the Management Server is up and running, log in to the CloudStack UI and
restart the virtual router for proper functioning of all the features.</para>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Log in to the CloudStack UI as admin, and check the status of the hosts. All hosts
should come to Up state (except those that you know to be offline). You may need to wait
20 or 30 minutes, depending on the number of hosts.</para>
<para>Do not proceed to the next step until the hosts show in the Up state. If the hosts
do not come to the Up state, contact support.</para>
</listitem>
<listitem>
<para>Run the following script to stop, then start, all Secondary Storage VMs, Console
Proxy VMs, and virtual routers.</para>
<orderedlist numeration="loweralpha">
<listitem>
<para>Run the command once on one management server. Substitute your own IP address of
the MySQL instance, the MySQL user to connect as, and the password to use for that
user. In addition to those parameters, provide the "-c" and "-r" arguments. For
example:</para>
<programlisting><prompt>#</prompt> <command>nohup cloudstack-sysvmadm</command> -d <replaceable>192.168.1.5</replaceable> -u cloud -p <replaceable>password</replaceable> -c -r > sysvm.log 2>&amp;1 &amp;
<prompt>#</prompt> <command>tail</command> -f <filename>sysvm.log</filename></programlisting>
<para>This might take up to an hour or more to run, depending on the number of
accounts in the system.</para>
</listitem>
<listitem>
<para>After the script terminates, check the log to verify correct execution:</para>
<programlisting><prompt>#</prompt> <command>tail</command> -f <filename>sysvm.log</filename></programlisting>
<para>The content should be like the following:</para>
<programlisting>
Stopping and starting 1 secondary storage vm(s)...
Done stopping and starting secondary storage vm(s)
Stopping and starting 1 console proxy vm(s)...
Done stopping and starting console proxy vm(s).
Stopping and starting 4 running routing vm(s)...
Done restarting router(s).
</programlisting>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>If you would like additional confirmation that the new system VM templates were
correctly applied when these system VMs were rebooted, SSH into the System VM and check
the version.</para>
<para>Use one of the following techniques, depending on the hypervisor.</para>
<formalpara>
<title>XenServer or KVM:</title>
<para>SSH in by using the link local IP address of the system VM. For example, in the
command below, substitute your own path to the private key used to log in to the
system VM and your own link local IP.</para>
</formalpara>
<para>Run the following commands on the XenServer or KVM host on which the system VM is
present:</para>
<programlisting><prompt>#</prompt> <command>ssh</command> -i <replaceable>private-key-path</replaceable> <replaceable>link-local-ip</replaceable> -p 3922
# cat /etc/cloudstack-release</programlisting>
<para>The output should be like the following:</para>
<programlisting>Cloudstack Release 4.0.0-incubating Mon Oct 9 15:10:04 PST 2012</programlisting>
<formalpara>
<title>ESXi</title>
<para>SSH in using the private IP address of the system VM. For example, in the command
below, substitute your own path to the private key used to log in to the system VM and
your own private IP.</para>
</formalpara>
<para>Run the following commands on the Management Server:</para>
<programlisting><prompt>#</prompt> <command>ssh</command> -i <replaceable>private-key-path</replaceable> <replaceable>private-ip</replaceable> -p 3922
<prompt>#</prompt> <command>cat</command> <filename>/etc/cloudstack-release</filename>
</programlisting>
<para>The output should be like the following:</para>
<programlisting>Cloudstack Release 4.0.0-incubating Mon Oct 9 15:10:04 PST 2012</programlisting>
</listitem>
<listitem>
<para>If needed, upgrade all Citrix XenServer hypervisor hosts in your cloud to a version
supported by CloudStack 4.0.0-incubating. The supported versions are XenServer 5.6 SP2
and 6.0.2. Instructions for upgrade can be found in the CloudStack 4.0.0-incubating
Installation Guide.</para>
</listitem>
<listitem>
<para>Apply the XenServer hotfix XS602E003 (and any other needed hotfixes) to XenServer
v6.0.2 hypervisor hosts.</para>
<orderedlist numeration="loweralpha">
<listitem>
<para>Disconnect the XenServer cluster from CloudStack.</para>
<para>In the left navigation bar of the CloudStack UI, select Infrastructure. Under
Clusters, click View All. Select the XenServer cluster and click Actions -
Unmanage.</para>
<para>This may fail if there are hosts not in one of the states Up, Down,
Disconnected, or Alert. You may need to fix that before unmanaging this
cluster.</para>
<para>Wait until the status of the cluster has reached Unmanaged. Use the CloudStack
UI to check on the status. When the cluster is in the unmanaged state, there is no
connection to the hosts in the cluster.</para>
</listitem>
<listitem>
<para>To clean up the VLAN, log in to one XenServer host and run:</para>
<programlisting>/opt/xensource/bin/cloud-clean-vlan.sh</programlisting>
</listitem>
<listitem>
<para>Prepare the upgrade by running the following on one XenServer host:</para>
<programlisting>/opt/xensource/bin/cloud-prepare-upgrade.sh</programlisting>
<para>If you see a message like "can't eject CD", log in to the VM and umount the CD,
then run this script again.</para>
</listitem>
<listitem>
<para>Upload the hotfix to the XenServer hosts. Always start with the Xen pool master,
then the slaves. Using your favorite file copy utility (e.g. WinSCP), copy the
hotfixes to the host. Place them in a temporary folder such as /root or /tmp. </para>
<para>On the Xen pool master, upload the hotfix with this command:</para>
<programlisting>xe patch-upload file-name=XS602E003.xsupdate</programlisting>
<para>Make a note of the output from this command, which is a UUID for the hotfix
file. You'll need it in another step later.</para>
<note>
<para>(Optional) If you are applying other hotfixes as well, you can repeat the
commands in this section with the appropriate hotfix number. For example,
XS602E004.xsupdate.</para>
</note>
</listitem>
<listitem>
<para>Manually live migrate all VMs on this host to another host. First, get a list of
the VMs on this host:</para>
<programlisting># xe vm-list</programlisting>
<para>Then use this command to migrate each VM. Replace the example host name and VM
name with your own:</para>
<programlisting><prompt>#</prompt> <command>xe</command> vm-migrate live=true host=<replaceable>host-name</replaceable> vm=<replaceable>VM-name</replaceable></programlisting>
<note>
<title>Troubleshooting</title>
<para>If you see a message like "You attempted an operation on a VM which requires
PV drivers to be installed but the drivers were not detected," run:</para>
<para><command>/opt/xensource/bin/make_migratable.sh
b6cf79c8-02ee-050b-922f-49583d9f1a14</command>.</para>
</note>
</listitem>
<listitem>
<para>Apply the hotfix. First, get the UUID of this host:</para>
<para><command># xe host-list</command></para>
<para>Then use the following command to apply the hotfix. Replace the example host
UUID with the current host ID, and replace the hotfix UUID with the output from the
patch-upload command you ran on this machine earlier. You can also get the hotfix
UUID by running xe patch-list. </para>
<para><command>xe patch-apply host-uuid=<replaceable>host-uuid</replaceable>
uuid=<replaceable>hotfix-uuid</replaceable></command></para>
</listitem>
<listitem>
<para>Copy the following files from the CloudStack Management Server to the
host.</para>
<informaltable>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*" colname="1" colnum="1"/>
<colspec colwidth="2*" colname="2" colnum="2"/>
<thead>
<row>
<entry><para>Copy from here...</para></entry>
<entry><para>...to here</para></entry>
</row>
</thead>
<tbody>
<row>
<entry><para><filename>/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/xenserver60/NFSSR.py</filename></para></entry>
<entry><para><filename>/opt/xensource/sm/NFSSR.py</filename></para></entry>
</row>
<row>
<entry><para><filename>/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/setupxenserver.sh</filename></para></entry>
<entry><para><filename>/opt/xensource/bin/setupxenserver.sh</filename></para></entry>
</row>
<row>
<entry><para><filename>/usr/lib64/cloudstack-common/scripts/vm/hypervisor/xenserver/make_migratable.sh</filename></para></entry>
<entry><para><filename>/opt/xensource/bin/make_migratable.sh</filename></para></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
<listitem>
<para>(Only for hotfixes XS602E005 and XS602E007) You need to apply a new Cloud
Support Pack.</para>
<itemizedlist>
<listitem>
<para>Download the CSP software onto the XenServer host from one of the following
links:</para>
<para>For hotfix XS602E005: <ulink
url="http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E005/56710/xe-phase-2/xenserver-cloud-supp.tgz"
>http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E005/56710/xe-phase-2/xenserver-cloud-supp.tgz</ulink></para>
<para>For hotfix XS602E007: <ulink
url="http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E007/57824/xe-phase-2/xenserver-cloud-supp.tgz"
>http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E007/57824/xe-phase-2/xenserver-cloud-supp.tgz</ulink></para>
</listitem>
<listitem>
<para>Extract the file:</para>
<para><command># tar xf xenserver-cloud-supp.tgz</command></para>
</listitem>
<listitem>
<para>Run the following script:</para>
<para><command># xe-install-supplemental-pack
xenserver-cloud-supp.iso</command></para>
</listitem>
<listitem>
<para>If the XenServer host is part of a zone that uses basic networking, disable
Open vSwitch (OVS):</para>
<para><command># xe-switch-network-backend bridge</command></para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Reboot this XenServer host.</para>
</listitem>
<listitem>
<para>Run the following:</para>
<para><command>/opt/xensource/bin/setupxenserver.sh</command></para>
<note>
<para>If the message "mv: cannot stat `/etc/cron.daily/logrotate': No such file or
directory" appears, you can safely ignore it.</para>
</note>
</listitem>
<listitem>
<para>Run the following:</para>
<para><command>for pbd in `xe pbd-list currently-attached=false| grep ^uuid | awk
'{print $NF}'`; do xe pbd-plug uuid=$pbd ; </command>
</para>
</listitem>
<listitem>
<para>On each slave host in the Xen pool, repeat these steps, starting from "manually
live migrate VMs."</para>
</listitem>
</orderedlist>
</listitem>
</orderedlist>
</section>
</chapter>
<chapter id="api-changes">
<title>API Changes from 4.2 to 4.2.1</title>
<para>Due to the <xref linkend="ucs-enhancements"/>, the following API changes have been
introduced:</para>
<itemizedlist>
<listitem>
<para>listUcsProfiles is deprecated.</para>
</listitem>
<listitem>
<para>listUcsTemplates is added. This is to replace listUcsProfiles. Retrieve pre-created
UCS templates from UCS Manager. Typically used when preparing to create a profile from the
template and associate the profile to a selected blade.</para>
</listitem>
<listitem>
<para>instantiateUcsTemplateAndAssocaciateToBlade is added. Associates a profile to a blade,
using a given profile template. First call listUcsTemplates to get the template and
listUcsBlade to get the blade.</para>
</listitem>
<listitem>
<para>refreshUcsBlades is added. Syncs &PRODUCT; with any changes that have been made on the
UCS Manager side.</para>
</listitem>
</itemizedlist>
</chapter>
</book>