  An Infrastructure as a Service (IaaS) cloud provider is committed to each
tenant by a service level agreement (SLA) which indicates the terms of
commitment, e.g. the level of availability of the IaaS cloud service.The
different resources providing this IaaS cloud service may need to be upgraded
several times throughout their life-cycle; and these upgrades may affect the
service delivered by the IaaS layer. This may violate the SLAs towards the
tenants and result in penalty as they impact the tenant services relying on the
IaaS.Therefore, it is important to handle upgrades properly with respect to the
SLAs.The upgrade of IaaS cloud systems inherits all the challenges of clustered
systems and faces other, cloud specific challenges, such as size and dynamicity
due to elasticity.In this paper, we propose a novel approach to automatically
upgrade an IaaS cloud system under SLA constraints such as availability and
elasticity.In this approach, the upgrade methods and actions appropriate for
each upgrade request are identified, scheduled, and applied automatically in an
iterative manner based on the vendors descriptions of the infrastructure
components, the tenant SLAs, and the status of the system. The proposed
approach allows new upgrade requests during ongoing upgrades, which makes it
suitable for continuous delivery.In addition, it also handles failures of
upgrade actions through localized retry and undo operations automatically.
