Cudo Compute
To use this client install cudoctl and run ./cudoctl init follow the steps to enter your API key and choose your project.
Then when you call cudo_api in python it will grab your API key from the yaml file created by cudoctl.
pip install cudo-compute
To use the api key and project set in cudoctl command line tool:
vm_api = cudo_api.virtual_machines()
vms = vm_api.list_vms(cudo_api.project_id())
If you don't want to use the automatic key you can supply your own, but you must also supply the project id manually too.
from cudo_compute import cudo_api
api_key = "s8dhap8dha8a98a9e88ewe90w9e"
project = "my-project"
vm_api = cudo_api.virtual_machines(api_key)
vms = vm_api.list_vms(project_id)
More examples of various api calls can be found in examples.
Documentation for API Endpoints
How to create each API, methods are below:
from cudo_compute import cudo_api
key_api = cudo_api.api_keys()
billing_api = cudo_api.billing()
dc_api = cudo_api.data_centers()
disk_api = cudo_api.disks()
mt_api = cudo_api.machine_types()
net_api = cudo_api.networks()
store_api = cudo_api.object_storage()
perm_api = cudo_api.permissions
projects_api = cudo_api.projects()
ssh_api = cudo_api.ssh_keys()
search_api = cudo_api.search()
vm_api = cudo_api.virtual_machines()
def_api = cudo_api.default()
All URIs are relative to https://rest.compute.cudo.org
| Class | Method | HTTP request | Description |
|---|---|---|---|
| APIKeysApi | delete_api_key | DELETE /v1/api-keys/{name} | Delete |
| APIKeysApi | generate_api_key | POST /v1/api-keys | Generate |
| APIKeysApi | list_api_keys | GET /v1/api-keys | List |
| BillingApi | create_billing_account | POST /v1/billing-accounts | Create a billing account |
| BillingApi | create_billing_account_credit_payment | POST /v1/billing-accounts/{id}/credit | Add credit to billing account |
| BillingApi | delete_billing_account | DELETE /v1/billing-accounts/{id} | Delete billing account |
| BillingApi | get_billing_account | GET /v1/billing-accounts/{id} | Get a billing account |
| BillingApi | get_billing_account_details | GET /v1/billing-accounts/{id}/details | Get billing account details |
| BillingApi | get_billing_account_payment_methods | GET /v1/billing-accounts/{id}/payment-methods | Get payment methods |
| BillingApi | get_billing_account_setup_intent | GET /v1/billing-accounts/{id}/setup-intent | Get setup intent |
| BillingApi | get_billing_account_spend_details | GET /v1/billing-accounts/{billingAccountId}/spend/details | Get spend details |
| BillingApi | list_billing_account_credit_balance_transactions | GET /v1/billing-accounts/{id}/credit-balance-transactions | List credit balance transactions on a billing account |
| BillingApi | list_billing_account_invoices | GET /v1/billing-accounts/invoices | List invoices |
| BillingApi | list_billing_account_transactions | GET /v1/billing-accounts/{id}/transactions | List transactions on a billing account |
| BillingApi | list_billing_accounts | GET /v1/billing-accounts | List billing accounts |
| BillingApi | list_outstanding_invoices | GET /v1/billing-accounts/invoices/outstanding | Get outstanding invoices |
| BillingApi | remove_billing_account_payment_method | DELETE /v1/billing-accounts/{id}/payment-methods/{paymentMethodId} | Remove payment method |
| BillingApi | set_billing_account_default_payment_method | POST /v1/billing-accounts/{id}/payment-methods/{paymentMethodId}/set-default | Set default payment method |
| BillingApi | update_billing_account | PATCH /v1/billing-accounts/{billingAccount.id} | Update billing account |
| DataCentersApi | count_hosts | GET /v1/data-centers/{dataCenterId}/host-count | Get host count |
| DataCentersApi | create_data_center | POST /v1/data-centers | Create data center |
| DataCentersApi | delete_data_center | DELETE /v1/data-centers/{id} | Delete data center |
| DataCentersApi | get_data_center | GET /v1/data-centers/{id} | Get data center |
| DataCentersApi | get_data_center_live_utilization | GET /v1/data-centers/{id}/live-utilization | Get live utilization |
| DataCentersApi | get_data_center_revenue_by_resource | GET /v1/data-centers/{id}/revenue-by-resource | Get revenue by resource |
| DataCentersApi | get_data_center_revenue_time_series | GET /v1/data-centers/{id}/revenue | Get revenue time series |
| DataCentersApi | list_clusters | GET /v1/data-centers/{dataCenterId}/clusters | List clusters |
| DataCentersApi | list_data_centers | GET /v1/data-centers | List data centers |
| DataCentersApi | list_hosts | GET /v1/data-centers/{dataCenterId}/hosts | List hosts |
| DataCentersApi | update_data_center | PATCH /v1/data-centers/{dataCenter.id} | Update data center |
| DisksApi | attach_storage_disk | PATCH /v1/projects/{projectId}/disk/{id}/attach | Attach storage disk to VM |
| DisksApi | create_disk_snapshot | POST /v1/projects/{projectId}/disks/{id}/snapshots | Create Disk Snapshot |
| DisksApi | create_storage_disk | POST /v1/projects/{projectId}/disks | Create storage disk |
| DisksApi | delete_disk_snapshot | DELETE /v1/projects/{projectId}/disks/{id}/snapshots | Delete Disk Snapshots |
| DisksApi | delete_storage_disk | DELETE /v1/projects/{projectId}/disks/{id} | Delete storage disk |
| DisksApi | detach_storage_disk | PUT /v1/projects/{projectId}/disk/{id}/detach | Detach storage disk from VM |
| DisksApi | get_disk | GET /v1/projects/{projectId}/disks/{id} | List disks |
| DisksApi | list_disk_snapshots | GET /v1/projects/{projectId}/disks/{id}/snapshots | List Disk Snapshots |
| DisksApi | list_disks | GET /v1/projects/{projectId}/disks | List disks |
| DisksApi | revert_disk | POST /v1/projects/{projectId}/disks/{id}/revert | Revert Disk to Snapshot |
| MachineTypesApi | get_machine_type | GET /v1/data-centers/{dataCenterId}/machine-types/{machineType} | Get a machine type in a data center |
| MachineTypesApi | get_machine_type_live_utilization | GET /v1/data-centers/{dataCenterId}/machine-types/{machineType}/live-utilization | Get the utilization for a machine type in a data center |
| MachineTypesApi | list_machine_types | GET /v1/data-centers/{dataCenterId}/machine-types | List machine types for a data center |
| NetworksApi | create_network | POST /v1/projects/{projectId}/networks | Create network |
| NetworksApi | create_security_group | POST /v1/projects/{securityGroup.projectId}/networks/security-groups | Create security group |
| NetworksApi | delete_network | DELETE /v1/projects/{projectId}/networks/{id} | Delete network |
| NetworksApi | delete_security_group | DELETE /v1/projects/{projectId}/networks/security-groups/{id} | Delete security group |
| NetworksApi | get_network | GET /v1/projects/{projectId}/networks/{id} | Get network |
| NetworksApi | get_security_group | GET /v1/projects/{projectId}/networks/security-groups/{id} | Get a security group |
| NetworksApi | list_networks | GET /v1/projects/{projectId}/networks | List networks |
| NetworksApi | list_security_groups | GET /v1/projects/{projectId}/networks/security-groups | List security groups |
| NetworksApi | start_network | POST /v1/projects/{projectId}/networks/{id}/start | Start network |
| NetworksApi | stop_network | POST /v1/projects/{projectId}/networks/{id}/stop | Stop network |
| NetworksApi | update_security_group | PATCH /v1/projects/{securityGroup.projectId}/networks/security-groups/{securityGroup.id} | Update security group |
| ObjectStorageApi | activate | POST /v1/projects/{projectId}/object-storage/activate/{dataCenterId} | Allow the use of S3 compatible storage in a project |
| ObjectStorageApi | create_object_storage_user | POST /v1/projects/{projectId}/object-storage/users/{dataCenterId} | Create user that stores keys for storage buckets |
| ObjectStorageApi | delete_object_storage_key | DELETE /v1/projects/{projectId}/object-storage/users/{dataCenterId}/{id}/keys/{accessKey} | Delete object storage user key |
| ObjectStorageApi | delete_object_storage_user | DELETE /v1/projects/{projectId}/object-storage/users/{dataCenterId}/{id} | Delete object storage user |
| ObjectStorageApi | generate_object_storage_key | POST /v1/projects/{projectId}/object-storage/users/{dataCenterId}/{id} | Generate access key for storage buckets |
| ObjectStorageApi | get_object_storage_bucket | GET /v1/projects/{projectId}/object-storage/buckets/{dataCenterId}/{id} | Get details for a bucket |
| ObjectStorageApi | get_object_storage_session_key | GET /v1/projects/{projectId}/object-storage/session-key/{dataCenterId} | Generate temporary key for storage bucket access |
| ObjectStorageApi | get_object_storage_user | GET /v1/projects/{projectId}/object-storage/users/{dataCenterId}/{userId} | Get details about an object storage user |
| ObjectStorageApi | list_object_storage_buckets | GET /v1/projects/{projectId}/object-storage/buckets | List buckets |
| ObjectStorageApi | list_object_storage_users | GET /v1/projects/{projectId}/object-storage/users | List storage users |
| PermissionsApi | add_billing_account_user_permission | POST /v1/billing-accounts/{billingAccountId}/add-user-permission | Add billing account user |
| PermissionsApi | add_data_center_user_permission | POST /v1/data-centers/{dataCenterId}/add-user-permission | Add data center user |
| PermissionsApi | add_project_user_permission | POST /v1/projects/{projectId}/add-user-permission | Add project user |
| PermissionsApi | list_user_permissions | GET /v1/auth/permissions | List |
| PermissionsApi | remove_billing_account_user_permission | POST /v1/billing-accounts/{billingAccountId}/remove-user-permission | Remove billing account user |
| PermissionsApi | remove_data_center_user_permission | POST /v1/data-centers/{dataCenterId}/remove-user-permission | Remove data center user |
| PermissionsApi | remove_project_user_permission | POST /v1/projects/{projectId}/remove-user-permission | Remove project user |
| ProjectsApi | create_project | POST /v1/projects | Create |
| ProjectsApi | delete_project | DELETE /v1/projects/{id} | Delete |
| ProjectsApi | get_project | GET /v1/projects/{id} | Get |
| ProjectsApi | list_project_ssh_keys | GET /v1/project/{projectId}/ssh-keys | List SSH keys |
| ProjectsApi | list_projects | GET /v1/projects | List |
| ProjectsApi | update_project | PATCH /v1/projects/{project.id} | Update |
| SSHKeysApi | create_ssh_key | POST /v1/ssh-keys | Create |
| SSHKeysApi | delete_ssh_key | DELETE /v1/ssh-keys/{id} | Delete |
| SSHKeysApi | get_ssh_key | GET /v1/ssh-keys/{id} | Get |
| SSHKeysApi | list_ssh_keys | GET /v1/ssh-keys | List |
| SearchApi | list_regions | GET /v1/regions | Regions |
| UserApi | create_identity_verification_session | GET /v1/auth/create-identity-verification-session | Get identity verification session |
| UserApi | delete_user | DELETE /v1/auth | Delete |
| UserApi | get | GET /v1/auth | Get |
| VirtualMachinesApi | attach_security_group | PATCH /v1/projects/{projectId}/vm/{id}/security-group/attach | Attach security group to VM |
| VirtualMachinesApi | connect_vm | GET /v1/projects/{projectId}/vms/{id}/connect | Connect via VNC |
| VirtualMachinesApi | count_vms | GET /v1/projects/{projectId}/count-vms | Count |
| VirtualMachinesApi | create_private_vm_image | POST /v1/projects/{projectId}/images | Create private VM image |
| VirtualMachinesApi | create_vm | POST /v1/projects/{projectId}/vm | Create virtual machine |
| VirtualMachinesApi | delete_private_vm_image | DELETE /v1/projects/{projectId}/images/{id} | Delete private VM image |
| VirtualMachinesApi | detach_security_group | PATCH /v1/projects/{projectId}/vm/{id}/security-group/detach | Attach security group to VM |
| VirtualMachinesApi | get_private_vm_image | GET /v1/projects/{projectId}/images/{id} | Get private VM image |
| VirtualMachinesApi | get_vm | GET /v1/projects/{projectId}/vms/{id} | Get |
| VirtualMachinesApi | list_private_vm_images | GET /v1/projects/{projectId}/images | List private VM images |
| VirtualMachinesApi | list_public_vm_images | GET /v1/vms/public-images | List public VM images |
| VirtualMachinesApi | list_vm_data_centers | GET /v1/vms/data-centers | List data centers |
| VirtualMachinesApi | list_vm_disks | GET /v1/projects/{projectId}/vms/{id}/disks | List disks attached to VM |
| VirtualMachinesApi | list_vm_gpu_models | GET /v1/vms/gpu-models | List GPU models |
| VirtualMachinesApi | list_vm_machine_types2 | GET /v1/vms/machine-types-2 | List machine types v2 |
| VirtualMachinesApi | list_vms | GET /v1/projects/{projectId}/vms | List |
| VirtualMachinesApi | monitor_vm | GET /v1/projects/{projectId}/vms/{id}/monitor | Monitor |
| VirtualMachinesApi | reboot_vm | POST /v1/projects/{projectId}/vms/{id}/reboot | Reboot |
| VirtualMachinesApi | resize_vm | POST /v1/projects/{projectId}/vms/{id}/resize | Resize vCPU and memory of VM |
| VirtualMachinesApi | resize_vm_disk | PATCH /v1/projects/{projectId}/vms/{id}/disks | Resize a VM's disk |
| VirtualMachinesApi | start_vm | POST /v1/projects/{projectId}/vms/{id}/start | Start |
| VirtualMachinesApi | stop_vm | POST /v1/projects/{projectId}/vms/{id}/stop | Stop |
| VirtualMachinesApi | terminate_vm | POST /v1/projects/{projectId}/vms/{id}/terminate | Terminate |
| VirtualMachinesApi | update_private_vm_image | POST /v1/projects/{projectId}/images/{id} | Update private VM image |
| VirtualMachinesApi | update_vm_metadata | POST /v1/projects/{projectId}/vm/{id}/metadata | Update VM metadata |
| DefaultApi | get_data_center_commitment_schedule | GET /v1/data-centers/{dataCenterId}/commitment-schedule | |
| DefaultApi | get_data_center_commitment_time_series | GET /v1/data-centers/{dataCenterId}/commitment-time-series | |
| DefaultApi | list_billing_account_projects | GET /v1/billing-accounts/{id}/projects | |
| DefaultApi | list_data_center_machine_type_prices | GET /v1/data-centers/{dataCenterId}/machine-type-prices | |
| DefaultApi | list_vm_machine_types | GET /v1/vms/machine-types | |
| DefaultApi | search_resources | GET /v1/resources/search | |
| DefaultApi | track | POST /v1/auth/track | |
| DefaultApi | update_vm_expire_time | POST /v1/projects/{projectId}/vm/{id}/expire-time | |
| DefaultApi | update_vm_password | POST /v1/projects/{projectId}/vm/{id}/password |
Documentation For Models
- ActivateBody
- AddBillingAccountUserPermissionBody
- AddDataCenterUserPermissionBody
- AddProjectUserPermissionBody
- ApiKey
- AttachSecurityGroupResponse
- AttachStorageDiskResponse
- BillingAccount
- BillingAccountPaymentMethod
- BillingAccountPaymentMethods
- BillingAccountProject
- BillingAccountResult
- BillingAccountSetupIntent
- BillingAccountSpendRow
- BillingAccountState
- BillingAddress
- Charge
- Cluster
- CommitmentTerm
- ConnectVMResponse
- CountHostsResponse
- CountVMsResponse
- CpuTopology
- CreateBillingAccountCreditPaymentResponse
- CreateBillingAccountRequest
- CreateDiskSnapshotBody
- CreateDiskSnapshotResponse
- CreateNetworkBody
- CreateNetworkResponse
- CreateObjectStorageUserBody
- CreatePrivateVMImageResponse
- CreateSecurityGroupResponse
- CreateStorageDiskBody
- CreateStorageDiskResponse
- CreateVMBody
- CreateVMRequestNIC
- CreateVMResponse
- CreditBalanceRecharge
- CreditBalanceTransaction
- DataCenterCommitment
- DataCenterCommitmentInterval
- DataCenterMachineType
- DataCenterRevenueResource
- DataCenterTimeRevenue
- Decimal
- DeleteDiskSnapshotResponse
- DeleteNetworkResponse
- DeletePrivateVMImageResponse
- DeleteSecurityGroupResponse
- DeleteStorageDiskResponse
- DetachSecurityGroupResponse
- DetachStorageDiskResponse
- Disk
- DiskResult
- DiskState
- DiskStorageClass
- DiskStoragePriceHr
- DiskType
- GenerateApiKeyRequest
- GetBillingAccountDetailsResponse
- GetBillingAccountSpendDetailsResponse
- GetDataCenterCommitmentScheduleResponse
- GetDataCenterCommitmentTimeSeriesRequestInterval
- GetDataCenterCommitmentTimeSeriesResponse
- GetDataCenterLiveUtilizationResponse
- GetDataCenterRevenueByResourceResponse
- GetDataCenterRevenueTimeSeriesRequestInterval
- GetDataCenterRevenueTimeSeriesResponse
- GetDiskResponse
- GetMachineTypeLiveUtilizationResponse
- GetMachineTypeResponse
- GetNetworkResponse
- GetObjectStorageSessionKeyResponse
- GetPrivateVMImageResponse
- GetResponse
- GetSecurityGroupResponse
- GetVMResponse
- GpuModel
- Host
- IdentityVerificationSession
- Image
- ImageResult
- Invoice
- LastPaymentError
- ListApiKeysResponse
- ListBillingAccountCreditBalanceTransactionsResponse
- ListBillingAccountInvoicesResponse
- ListBillingAccountProjectsResponse
- ListBillingAccountTransactionsResponse
- ListBillingAccountsResponse
- ListClustersResponse
- ListDataCenterMachineTypePricesResponse
- ListDataCenterMachineTypePricesResponseMachineTypePrice
- ListDataCentersResponse
- ListDiskSnapshotsResponse
- ListDisksResponse
- ListHostsResponse
- ListMachineTypesResponse
- ListNetworksResponse
- ListObjectStorageBucketsResponse
- ListObjectStorageUsersResponse
- ListOutstandingInvoicesResponse
- ListPrivateVMImagesResponse
- ListProjectSshKeysResponse
- ListProjectsResponse
- ListPublicVMImagesResponse
- ListRegionsResponse
- ListSecurityGroupsResponse
- ListSshKeysResponse
- ListUserPermissionsResponse
- ListVMDataCentersResponse
- ListVMDisksResponse
- ListVMGpuModelsResponse
- ListVMMachineTypes2Response
- ListVMMachineTypes2ResponseVMMachineType
- ListVMMachineTypesResponse
- ListVMMachineTypesResponseVMMachineType
- ListVMsResponse
- MonitorVMResponse
- Network
- NetworkPriceHr
- NetworkResult
- NetworkState
- ObjectStorageBucket
- ObjectStorageKey
- ObjectStorageUser
- Package
- PaymentIntent
- PaymentMethodCard
- PaymentMethodPaypal
- PaymentTerms
- Point
- PrivateImage
- Profile
- Project
- ProjectResult
- ProtobufAny
- RebootVMResponse
- Region
- RegionDataCenter
- RemoveBillingAccountPaymentMethodResponse
- RemoveBillingAccountUserPermissionBody
- RemoveDataCenterUserPermissionBody
- RemoveProjectUserPermissionBody
- ResizeVMDiskResponse
- ResizeVMResponse
- Result
- RevertDiskResponse
- Role
- Rule
- RuleProtocol
- RuleRuleType
- SearchResourcesResponse
- SecurityGroup
- SecurityGroup1
- SecurityGroupRule
- SecurityGroupRuleProtocol
- SecurityGroupRuleRuleType
- SetBillingAccountDefaultPaymentMethodResponse
- Snapshot
- SshKey
- SshKeySource
- StartNetworkResponse
- StartVMResponse
- Status
- StopNetworkResponse
- StopVMResponse
- StripeCustomer
- SyncResponse
- Task
- TaxId
- TerminateVMResponse
- TrackRequest
- Transaction
- Unit
- UpdateBillingAccountBody
- UpdateBillingAccountBodyBillingAccount
- UpdateDataCenterBody
- UpdateDataCenterBodyDataCenter
- UpdateHostResponse
- UpdateImageResponse
- UpdateNetResponse
- UpdatePrivateVMImageResponse
- UpdateProjectBody
- UpdateProjectBodyProject
- UpdateSecurityGroupResponse
- UpdateVMExpireTimeBody
- UpdateVMExpireTimeResponse
- UpdateVMMetadataBody
- UpdateVMMetadataResponse
- UpdateVMPasswordBody
- UpdateVMPasswordResponse
- UpdateVMResponse
- UserPermission
- V1DataCenter
- V1VRouterSize
- VM
- VMDataCenter
- VMDataCenterStorageClass
- VMDataCenterVRouterSize
- VMMachineTypeMachineTypePrice
- VMMonitoringItem
- VMNIC
- VMPrice
- VirtualMachineResult
- VmState
Advanced Users / Development
The code is generated by swagger codegen cli.
Most code is generated in github actions see .github/workflows the generated code is put into a /src/cudo_compute directory The code gets modified and the helpers get copied in from /helpers.
./codegen.sh generates docs directory with source code and documentation.
If you wish to customise how the API key or project is selected see the code in the helpers directory.
Install the latest test version:
pip install --upgrade --index-url https://test.pypi.org/simple/ cudo-compute
Metadata
Release files for cudo-compute 0.3.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cudo_compute-0.3.6.tar.gz | 460.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cudo_compute-0.3.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 841.0 kB
Release files / cudo_compute-0.3.6.tar.gz
| Download URL | cudo_compute-0.3.6.tar.gz |
|---|---|
| Size | 460.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0cff29d873f0b0686a16e77e92871cdb261623a2aaab0a983f7b318420520bc9
|
|
BLAKE2b-256 checksum How to use checksums |
b94581d232fef5a46e506aaa1f660ea8236dd886233eccc8fc26227b50417adc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.0.1 CPython/3.12.8
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 8, 2025.
Transparency logRelease files / cudo_compute-0.3.6-py3-none-any.whl
| Download URL | cudo_compute-0.3.6-py3-none-any.whl |
|---|---|
| Size | 380.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1b72a8f09333106fe9c350d0b35171dce2b339752036f64c38096f4e20d6b5d1
|
|
BLAKE2b-256 checksum How to use checksums |
8a06fc198cc9bc0170fcc07344c04af5de3a70a67b30aa040120f06415e76c65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.0.1 CPython/3.12.8
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 8, 2025.
Transparency log