Skip to content

Documentation related to Instance lease feature #492

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added source/_static/images/edit_instance_lease.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 27 additions & 0 deletions source/adminguide/service_offerings.rst
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,33 @@ To create a new compute offering:
- **Disk Offering Strictness**: This flag defines the strictness of the disk offering association
with the compute offering. When set to true, overriding of disk offering is not allowed on deploy instance
and change disk offering is not allowed for the ROOT disk

- **Enable Lease**: When this flag is enabled, compute offering is created with lease related metadata.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When this flag is enabled, Compute Offering is created with 'Instance Lease' feature enabled. In CloudStack, a lease sets a specific time duration after which a chosen lease action action, such as stopping or destroying the instance, will take place. These lease settings are defined in the Compute Offering and are automatically applied to any Instance created using it.

In CloudStack, a lease represents the specific duration for which an instance is allocated.
The user rents these resources for the duration of the lease. Once the lease period expires, instance may be stopped or destroyed.
Lease information is inherited from compute offering and gets associated to Instance.

.. note:: The global configuration ``instance.lease.enabled`` should be configured as true to create compute offering with lease.

``instance.lease.enabled``: Indicates whether Instance Lease feature is enabled or not. Default is **false**
For more information, see `“Setting Global Configuration Parameters”
<../installguide/configuration.html#setting-global-configuration-parameters>`_.

When the flag is enabled

- **Lease Duration (in days)**: Creates a compute offering with Lease duration. Instance created from this compute offering will inherit lease duration by default.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lease Duration (in days): Sets the lease duration. An instance created using this compute offering will inherit the lease duration by default.


- **Lease expiry action**: Denotes lease expiry action, which gets executed upon lease expiry for instances created from compute offering.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lease expiry action: Denotes lease expiry action, which gets executed upon lease expiry for instances created using this compute offering.
Supported values for lease expiry action are as follows:

Suported values for lease expiry action are as follows:

- STOP
- DESTROY

.. image:: /_static/images/compute_offering_dailog_with_lease.png
:width: 400px
:align: center
:alt: Compute offering dialog box


#. Click Add.

Expand Down
140 changes: 140 additions & 0 deletions source/adminguide/virtual_machines.rst
Original file line number Diff line number Diff line change
Expand Up @@ -960,6 +960,146 @@ restoreVirtualMachine call. In this case, the Instance's root disk is
destroyed and recreated, but from the same Template or ISO that was
already in use by the Instance.

Instance Lease
--------------

Cloudstack provides capability to create instance on lease. Lease denotes a set period for which resource is allocated and upon expiry cleanup is performed.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explaination of various behaviour scenarios are missing; for example how the feature will work, what happens when the global is disable (i.e. cancels the leases). I think all the various notes on implementation can be put here for the end-user/operator to understand, incld. expected edge-case behaviours.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are notes included in the docs addressing:

  1. Expiry action execution
  2. Lease cancellation
  3. Delete protection

However, including behaviours as list will provide better clarity. I will update the document.

This feature enables automated cleanup of instances created for specific duration and for specific purpose. This feature gives administrators the ability to automatically reclaim
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CloudStack offers the option to create Instances with a Lease. A Lease defines a set time period after which a selected action, such as stopping or destroying the instance, will be automatically performed. This helps optimize cloud resource usage by automatically freeing up resources that are no longer in use. If a user needs an instance only for a limited time, this feature can be useful. When deploying an instance, users can either choose a Compute Offering that includes the Instance Lease feature or enable it specifically for that instance, setting the number of days after which the instance should be stopped or destroyed once their task is complete.

resources that are no longer needed by expired virtual machines, helping to optimize resource utilization and reduce wastage.


**Configuring lease feature**
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Configuring Instance Lease feature


The cloud administrator can use global configuration variables to control the behavior of Instance Lease.
To set these variables, API or CloudStack UI can be used:

======================================= ========================
Configuration Description
======================================= ========================
instance.lease.enabled Indicates whether to enable the Instance lease featuew, will be applicable only on instances created after lease is enabled. **Default: false**
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

featuew -> feature

instance.lease.scheduler.interval Background task interval in seconds that executes Lease expiry action on eligibile expired instances. Default: 3600.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minor nit - additional blank spaces in the start of the description.

instance.lease.alertscheduler.interval Background task interval in seconds that executes Lease alert for instances about to be expired in next N days. Default: 86400
instance.lease.alert.daysbefore Denotes number of days (N) for alert task. Default: 7 days
======================================= ========================


**Lease Parameters**


**leaseduration**: Lease duration is specified in days. This can take Natural numbers and -1 to disable the lease.

Lease may require to be disabled in following scenarios:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Users can disable the Instance Lease feature during instance deployment by unchecking the 'Enable Lease' option when using a Compute Offering that supports it. For existing instances with a lease already enabled, the lease can be removed by editing the instance and unchecking the 'Enable Lease' option.


- During deployment of instance while using compute offering with lease metadata
- Edit instance with existing lease

**leaseexpiryaction**: There are two expiry action supported:

- STOP: The instance is stopped, and it will be out of lease. The user can restart the instance manually.
- DESTROY: The instance is destroyed when the lease expires.

.. note:: Expiry action is executed at most once on the instance, e.g. STOP action will bring instance in Stoppped state on expiry and instance will be out of lease. User may choose to start it again.


**Using Instance Lease**

Lease information is associated to an Instance and following parameters are used to enable lease for it:

#. leaseduration
#. leaseexpiryaction

Instance remains active for specified leaseduration (in days). Upon lease expiry, configured expiryaction is executed on the instance and
lease is removed from the instance for any further action.

**Notes:**

#. Lease Assignment: A lease can only be assigned to an instance during deployment.
#. Lease Acquisition: Instances without a lease cannot acquire one by switching to a different compute offering or by editing the instance.
#. Lease Inheritance: Instances inherit the lease from a compute offering that contains lease metadata. This lease can be overridden or disabled in the "Advanced Settings".
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lease Inheritance: Instances inherit the lease from a compute offering with 'Instance Lease' feature enabled. This lease can be overridden or disabled in the “Advanced Settings”.

#. Lease Persistence: A lease is always tied to the instance. Modifications to the compute offering do not affect the instance's lease.
#. Non-Lease Compute offering: Instances can have a lease by enabling it in the "Advanced Settings" for non-lease based compute offering too.
#. Lease Duration Management: The lease duration can be extended or reduced for instances before expiry. However, once the lease is disabled, it cannot be re-enabled for that instance.
#. Lease Expiry: Once the lease expires and the associated action is completed, the lease is annulled and cannot be reattached or extended.
#. Feature Disablement: If the lease feature is disabled, the lease associated with instances is canceled. Re-enabling the feature will not automatically reapply the lease to previously grandfathered instances.
#. Delete Protection: The DESTROY lease expiry action is skipped for instances with delete protection enabled.

**Deployment of Instance with lease**

There are 2 ways to deploy instance with lease from UI:

1. Use compute offering which has associated lease metadata for instance
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use compute offering which has 'Instance Lease' feature enabled.


.. image:: /_static/images/deploy_instance_lease_offering.png
:width: 400px
:align: center
:alt: Deploy Instance with lease compute offering dialog box

2. Enable lease under Advance settings during instance Deployment

.. image:: /_static/images/deploy_instance_advanced_lease.png
:width: 400px
:align: center
:alt: Deploy Instance with lease using advance settings


**Using API**

Pass lease parameters in the command to enable lease during instance deployment:

.. code:: bash

cmk deploy virtualmachine name=..... leaseduration=... leaseexpiryaction=...

- Use compute offering with lease

.. code:: bash

cmk deploy virtualmachine name=..... serviceofferingid=lease-compute-offering


**Editing Instance Lease**

The lease duration for an instance can be extended, reduced, or disabled for instances that already have an active lease.
However, it is not possible to enable the lease on an instance after it has already been deployed.

From UI:

.. image:: /_static/images/edit_instance_lease.png
:width: 400px
:align: center
:alt: Edit Instance lease dialog


Using API:

.. code:: bash

cmk update virtualmachine id=fa970d19-8340-455c-a9fb-569205954fdc leaseduration=20 leaseexpiryaction=DESTROY

To disable lease using API:

.. code:: bash

cmk update virtualmachine id=fa970d19-8340-455c-a9fb-569205954fdc leaseduration=-1

.. note:: DESTORY action will ignore instance if deleteprotection is enabled for it.

.. note:: When the feature is disabled, the lease associated with instances is cancelled. Re-enabling the feature will not automatically reapply the lease to previously grandfathered instances.


**Instance Lease Events**

Lease feature generates various events to help in auditing and monitoring:

=================== ========================
Event Type Description
=================== ========================
VM.LEASE.EXPIRED Event is generated at lease expiry
VM.LEASE.DISABLED Denotes if lease is disabled by user/admin
VM.LEASE.CANCELLED When lease is cancelled (feature gets disabled)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

check indentation

VM.LEASE.EXPIRING Expiry intimation event for instance
=================== ========================


Advanced Instance Settings
--------------------------
Expand Down