SDK API Documentation
This documentation is auto-generated from the SDK source code docstrings.
CudoComputeSDK
SDK for interacting with the Cudo Compute REST API.
This SDK provides methods to manage virtual machines, data centers,
machine types, images, networks, and other cloud resources on Cudo Compute.
Authentication is done via bearer token (API key).
API Base URL: https://rest.compute.cudo.org
Projects
list_projects(self, page_token: Optional[str] = None, page_size: Optional[int] = None) -> List[cudo_compute_sdk.schema.Project]
List projects accessible by the current user.
Parameters:
- page_token: Page token for pagination
- page_size: Results per page
Returns:
List of Project model instances
get_project(self, project_id: str) -> cudo_compute_sdk.schema.Project
Get details of a specific project.
Parameters:
- project_id: Project ID
Returns:
Project model instance
create_project(self, project_data: Dict[str, Any]) -> cudo_compute_sdk.schema.Project
Create a new project.
Parameters:
- project_data: Project configuration
Returns:
Created Project model instance
delete_project(self, project_id: str) -> None
Delete a project.
Parameters:
- project_id: Project ID to delete
Returns:
None
Virtual Machines
list_vms(self, project_id: str, network_id: Optional[str] = None) -> List[cudo_compute_sdk.schema.VM]
List all virtual machines in a project.
Parameters:
- project_id: Project ID to list VMs from
- network_id: Optional network ID to filter VMs
Returns:
List of VM model instances
get_vm(self, project_id: str, vm_id: str) -> cudo_compute_sdk.schema.VM
Get details of a specific virtual machine.
Parameters:
- project_id: Project ID
- vm_id: Virtual machine ID
Returns:
VM model instance with pricing information
create_vm(self, project_id: str, vm_id: str, data_center_id: str, machine_type: str, boot_disk_image_id: str, vcpus: int, memory_gib: int, gpus: int = 0, boot_disk_size_gib: Optional[int] = None, password: Optional[str] = None, ssh_key_source: Optional[str] = None, custom_ssh_keys: Optional[List[str]] = None, start_script: Optional[str] = None, metadata: Optional[Dict[str, str]] = None, security_group_ids: Optional[List[str]] = None, storage_disk_ids: Optional[List[str]] = None, commitment_term: Optional[str] = None, expire_time: Optional[str] = None, ttl: Optional[str] = None, nics: Optional[List[Dict[str, Any]]] = None, validate_only: bool = False) -> cudo_compute_sdk.schema.VM
Create and start a new virtual machine.
Parameters:
- project_id: Project ID to create VM in
- vm_id: Unique identifier for the VM
- data_center_id: Data center to create VM in
- machine_type: Machine type to use (e.g., 'standard', 'performance')
- boot_disk_image_id: Boot disk image ID (public or private image)
- vcpus: Number of vCPUs (must meet machine type requirements)
- memory_gib: Memory in GiB (must meet machine type requirements)
- gpus: Number of GPUs (default: 0)
- boot_disk_size_gib: Boot disk size in GiB (if not set, uses image default)
- password: Root/admin password (for Windows VMs or custom Linux setup)
- ssh_key_source: SSH key source - 'SSH_KEY_SOURCE_PROJECT', 'SSH_KEY_SOURCE_USER', or 'SSH_KEY_SOURCE_NONE'
- custom_ssh_keys: List of custom SSH public keys to add
- start_script: Startup script/cloud-init to run on first boot
- metadata: VM metadata key-value pairs
- security_group_ids: List of security group IDs (ignored if nics provided)
- storage_disk_ids: List of storage disk IDs to attach
- commitment_term: Commitment term ('COMMITMENT_TERM_NONE', 'COMMITMENT_TERM_1_MONTH', etc.)
- expire_time: Expiration time in ISO 8601 format
- ttl: Time to live duration string
- nics: List of network interface configurations with assignPublicIp, networkId, securityGroupIds
- validate_only: Only validate request without creating (default: False)
Returns:
Created VM model instance
Example:
>>> vm = await sdk.create_vm(
... project_id="my-project",
... vm_id="my-vm-001",
... data_center_id="gb-bournemouth-1",
... machine_type="standard",
... boot_disk_image_id="ubuntu-2204-lts",
... vcpus=2,
... memory_gib=4,
... gpus=0,
... ssh_key_source="SSH_KEY_SOURCE_USER"
... )
start_vm(self, project_id: str, vm_id: str) -> None
Start a stopped virtual machine.
Parameters:
- project_id: Project ID
- vm_id: Virtual machine ID
Returns:
None
stop_vm(self, project_id: str, vm_id: str) -> None
Stop a running virtual machine. The VM can be started again later.
Parameters:
- project_id: Project ID
- vm_id: Virtual machine ID
Returns:
None
terminate_vm(self, project_id: str, vm_id: str) -> None
Permanently delete a virtual machine. All data on the VM's boot disk will be lost. Attached storage disks will be detached but not deleted.
Parameters:
- project_id: Project ID
- vm_id: Virtual machine ID to delete
Returns:
None
Data Centers
get_data_center(self, data_center_id: str) -> cudo_compute_sdk.schema.VMDataCenter
Get details of a specific data center. Note: This is a helper method that filters list_vm_data_centers results.
Parameters:
- data_center_id: Data center ID
Returns:
VMDataCenter model instance
Images
Networks
list_networks(self, project_id: str, page_number: Optional[int] = None, page_size: Optional[int] = None) -> List[cudo_compute_sdk.schema.Network]
List all virtual networks in a project.
Parameters:
- project_id: Project ID
- page_number: Page number for pagination
- page_size: Results per page
Returns:
List of Network model instances
create_network(self, project_id: str, network_id: str, data_center_id: str, ip_range: str) -> cudo_compute_sdk.schema.Network
Create a new virtual network.
Parameters:
- project_id: Project ID
- network_id: Unique network ID
- data_center_id: Data center ID
- ip_range: IP range for the network (CIDR notation)
Returns:
Created Network model instance
delete_network(self, project_id: str, network_id: str) -> None
Delete a virtual network.
Parameters:
- project_id: Project ID
- network_id: Network ID to delete
Returns:
None
Security Groups
list_security_groups(self, project_id: str, data_center_id: Optional[str] = None, page_number: Optional[int] = None, page_size: Optional[int] = None) -> List[cudo_compute_sdk.schema.SecurityGroup]
List security groups in a project.
Parameters:
- project_id: Project ID
- data_center_id: Optional data center filter
- page_number: Page number for pagination
- page_size: Results per page
Returns:
List of SecurityGroup model instances
create_security_group(self, project_id: str, security_group_id: str, data_center_id: str, description: Optional[str] = None, rules: Optional[List[Dict[str, Any]]] = None) -> cudo_compute_sdk.schema.SecurityGroup
Create a new security group.
Parameters:
- project_id: Project ID
- security_group_id: Unique security group identifier
- data_center_id: Data center ID where the security group will be created
- description: Optional security group description
- rules: Optional list of security rules
Returns:
Created SecurityGroup model instance
create_security_group_rule(self, project_id: str, security_group_id: str, protocol: str, rule_type: str, ip_range_cidr: str, ports: Optional[str] = None, icmp_type: Optional[str] = None) -> cudo_compute_sdk.schema.SecurityGroup
Create a new rule in a security group.
Parameters:
- project_id: Project ID
- security_group_id: Security group ID
- protocol: Protocol (PROTOCOL_TCP, PROTOCOL_UDP, PROTOCOL_ICMP, etc.)
- rule_type: Rule type (RULE_TYPE_INBOUND, RULE_TYPE_OUTBOUND)
- ip_range_cidr: IP range in CIDR format
- ports: Port range (e.g., "80", "80-443")
- icmp_type: ICMP type (for ICMP protocol)
Returns:
Updated SecurityGroup with new rule
delete_security_group(self, project_id: str, security_group_id: str) -> None
Delete a security group.
Parameters:
- project_id: Project ID
- security_group_id: Security group ID to delete
Returns:
None
SSH Keys
list_ssh_keys(self, page_number: Optional[int] = None, page_size: Optional[int] = None) -> List[cudo_compute_sdk.schema.SSHKey]
List SSH keys of the current user.
Parameters:
- page_number: Page number for pagination
- page_size: Results per page
Returns:
List of SSHKey model instances
create_ssh_key(self, public_key: str) -> cudo_compute_sdk.schema.SSHKey
Create an SSH key for accessing machines.
Parameters:
- public_key: SSH public key
Returns:
Created SSHKey model instance
delete_ssh_key(self, ssh_key_id: str) -> None
Delete an SSH key.
Parameters:
- ssh_key_id: SSH key ID to delete
Returns:
None
Storage
list_disks(self, project_id: str, page_number: Optional[int] = None, page_size: Optional[int] = None, data_center_id: Optional[str] = None) -> List[cudo_compute_sdk.schema.Disk]
List disks in a project.
Parameters:
- project_id: Project ID
- page_number: Page number for pagination
- page_size: Results per page
- data_center_id: Optional data center filter
Returns:
List of Disk model instances
create_disk(self, project_id: str, disk_id: str, data_center_id: str, size_gib: int, disk_type: Optional[str] = None) -> cudo_compute_sdk.schema.Disk
Create a new virtual machine disk.
Parameters:
- project_id: Project ID
- disk_id: Unique disk ID
- data_center_id: Data center ID
- size_gib: Disk size in GiB
- disk_type: Optional disk type
Returns:
Created Disk model instance
delete_disk(self, project_id: str, disk_id: str) -> None
Delete a virtual machine disk. The disk must be detached from any VMs first.
Parameters:
- project_id: Project ID
- disk_id: Disk ID to delete
Returns:
None