Skip to content

Latest commit

 

History

History
59 lines (46 loc) · 2.07 KB

File metadata and controls

59 lines (46 loc) · 2.07 KB

Instance Actions

import os
import time
from datacrunch import DataCrunchClient
from datacrunch.exceptions import APIException


# Get client secret from environment variable
CLIENT_SECRET = os.environ['DATACRUNCH_CLIENT_SECRET']
CLIENT_ID = 'Ibk5bdxV64lKAWOqYnvSi'  # Replace with your client ID

# Create datcrunch client
datacrunch = DataCrunchClient(CLIENT_ID, CLIENT_SECRET)

# Get all SSH keys
ssh_keys = datacrunch.ssh_keys.get()
ssh_keys_ids = list(map(lambda ssh_key: ssh_key.id, ssh_keys))

# Create a new 1V100.6V instance
instance = datacrunch.instances.create(instance_type='1V100.6V',
                                    image='ubuntu-24.04-cuda-12.8-open-docker',
                                    ssh_key_ids=ssh_keys_ids,
                                    hostname='example',
                                    description='example instance')

print(instance.id)

# Try to shutdown instance right away,
# encounter an error (because it's still provisioning)
try:
    datacrunch.instances.action(instance.id, datacrunch.actions.SHUTDOWN)
except APIException as exception:
    print(exception)  # we were too eager...

# Wait until instance is running (check every 30sec), only then shut it down
while(instance.status != datacrunch.instance_status.RUNNING):
    time.sleep(30)
    instance = datacrunch.instances.get_by_id(instance.id)

# Shutdown!
try:
    datacrunch.instances.action(instance.id, datacrunch.actions.SHUTDOWN)
except APIException as exception:
    print(exception)  # no exception this time

# Wait until instance is offline (check every 30sec), only then hibernate
while(instance.status != datacrunch.instance_status.OFFLINE):
    time.sleep(30)
    instance = datacrunch.instances.get_by_id(instance.id)

# Hibernate the instance
try:
    datacrunch.instances.action(instance.id, datacrunch.actions.HIBERNATE)
except APIException as exception:
    print(exception)