
Awhile ago I created a video showing how you could easily save lots of money by saving dollars on the EC2 costs by using hibernate. Nutanix Clusters is the only on-prem vendor offering this for customers that want to lift and shift to the public cloud or use the public cloud for DR. I want to share the code snippet and how to create an API user in the Clusters portal.
You can first get familiar with hibernate here:
To create an API user to make the call:
- Go to the Clusters portal
- Under Organization go to users

- Create an API user

You can limit the scope of the user to a single cluster.
Once you have a API user you can use the below script to make an API call or add a script to a VM.
#!/usr/local/bin/python
import hashlib
import hmac
import time
import requests
import base64
# Client credentials
#client_id from the user from the clusters portal
client_id = "*********.img.cloud-internal.nutanix.com"
#client_secret password from the user on the clusters portal
client_secret = "vvvvvvvf5ff3a3aemmmhhhh1c302"
cluster_id ="1115ac9d-c768-5c71-8e8e-5fzz7b535ec9"
# Create signature
timestamp = int(time.time())
to_sign = "%s%s" % (timestamp, client_id)
signature = hmac.new(client_secret, to_sign, hashlib.sha256).hexdigest()
#stage_domain = "https://api-gateway-staging.staging.frame.nutanix.com/"
prod_domain = "https://cpanel-backend.cloud.nutanix.com/api/rest/v1"
domain = prod_domain
# Prepare http request headers
headers = { "X-Frame-ClientId": client_id, "X-Frame-Timestamp": str(timestamp), "X-Frame-Signature": signature }
hibernate_req = requests.post(domain + "/clusters/" + cluster_id + "/hibernate" , headers=headers)
client_id and client_secret are going to come from the above step of creating an API user.
Once you have that sorted we can create a playbook in Prism Central.

You can hibernate based off an event/alert or just pick a time that you want it to run. In my example I placed the script on a VM and then call the script.

Hopefully this gets your wheels turning and you can come up with your own creative solutions.