Bug Reference

Branch

master, 4.6

Introduction

CloudStack administrator may want to disable a storage pool from being used for provisioning of volumes. Virtual machines with volumes on a disabled storage pool  will continue to run. However, no new volumes will get placed on the disabled storage pool. This may be needed for variety of reasons; for example to guarantee certain iops for volumes on a storage.

Purpose

This document describes the specification and design of the feature

References

NA

Document History

AuthorCommentsDate
DevdeepInitial Draft16th March 2015

Glossary

Feature Specification

CloudStack administrator can disable a storage pool from being used for provisioning of new volumes. Currently if you put a primary storage pool in maintenance mode, the user vms on it are stopped and system and router vms are stopped and restarted with the volumes on another storage pool. If a administrator wants to keep the virtual machines with volumes on storage pool running an make sure no new volumes are provisioned on it, it is currently not possible. This feature will allow the administrator to do that.

The behavior of a disabled storage pool will be as follows.

Unsupported scenarios

NA

Open Items

Their are currently no open items/issues. Another approach was considered for disabling a storage pool. A cloudstack administrator could add a tag 'disabled' to the storage pool. The storage pool allocators would not pick up a pool with the 'disabled' tag for provisioning of volume. However, this approach was dropped as cloudstack would still report the pool to be up/enabled and administrator would have to look up the tags to make sure whether the pool was actually enabled or not. Instead, it was decided to take implement 'Disabled' as a separate state of the storage pool.

Test Guidelines 
Supportability 
Impact on upgrades

Their is no impact on upgrades. The state of the storage pool will be maintained on upgrades from prior version of cloudstack to this one.

Interoperability and compatability

The decision whether a primary storage pool should be picked for provisioning a volume are made at the orchestration layer. The feature is independent of the hypervisor and the changes made for this will be available to all hypervisor types and all types of storage pools.

Logging

If a storage pool is disabled and it isn't considered volume allocation, a INFO message will be logged that clearly states the pool was skipped as it was disabled.

User communities

Only a CloudStack root administrator can disable or enable a storage pool for provisioning.

Architecture and Design description

Alternate design considered

An alternate design was considered where a cloudstack administrator could add a reserve tag 'disabled' to the storage pool. The storage pool allocators would not pick up a pool with the 'disabled' tag for provisioning of volume. However, this approach was dropped as 

Storage pool state machine updates 
Impact on virtual machine operations 
Components affected 
Database changes

There are no database changes for this feature. A new state, 'Disabled',  for the primary storage pool has been introduced. The status field in the storage_pool table in the database will hold the state information for the primary storage pool.

Web Services APIs

  1. updateStoragePool - This is an existing api which is used to update the tags on a storage pool. This api will be updated with an optional parameter 'enabled' to enable or disable a storage pool. Following are the details of the new optional parameter.

    Parameter
    Type
    Optional/Required
    Comment
    enabledBooleanOptionalOptional parameter to enable or disable a storage pool. If the parameter isn't given, no action is taken and the pool continues to be whatever state it is in.

UI Flow

If a CloudStack administrator wants to disable a primary storage pool for provisioning of new volumes, she can follow the workflow as follows

Note: UI screenshots will be updated here once it is available.

IP Clearance

Their are no dependencies on external libraries for this feature. IP Clearance isn't required.

Usage Impact

No new entities are being created for which usage will have to be calculated. Behavior of an existing entity; primary storage pool; is being updated to disable it for provisioning of new volumes. The usage of it will get reported as before and this feature will not have any usage impact.