Resource: cloud.instances (InstancesResource)¶
list(max_results=None, offset=0, sort=None, direction=None, phrase=None, name=None, status=None, cloud_id=None, group_id=None, labels=None, **filters) -> list[Instance]¶
- Endpoint:
GET /api/instances - Parameters:
- Shared list args (see API Reference)
name: exact name filterstatus: status filtercloud_id: mapped to queryzoneIdgroup_id: mapped to querysiteIdlabels: list mapped to comma-delimited querylabels
- Returns:
list[Instance] - Raises: common API exceptions
get(instance_id: int) -> Instance¶
- Endpoint:
GET /api/instances/{instance_id} - Parameters:
instance_id: instance numeric ID
- Returns:
Instance - Raises: common API exceptions
get_by_name(name: str) -> Instance¶
- Endpoint sequence:
GET /api/instances?name=<name>&max=1
- Parameters:
name: instance name
- Returns:
Instance - Raises:
- common API exceptions
NotFoundErrorwhen no instance matches
create(name: str, *, cloud: str, type: str, group: str, layout: int, plan: int, resource_pool_id: str | int, description=None, environment=None, labels=None, tags=None, copies=1, layout_size=1, availability_zone=None, security_group="default", os_external_network_id=None, create_user=True, workflow_id=None, shutdown_days=None, expire_days=None, create_backup=None, security_groups=None, ports=None, volumes=None, network_interfaces=None, options=None) -> Instance¶
- Endpoint sequence:
GET /api/groups?name=<group>&max=1(resolve group name togroup_id)POST /api/instances
- Parameters:
- Required core fields:
name: new instance namecloud: cloud/zone name (example:MTNNG_CLOUD_AZ_1)type: instance type code (example:MTN-CS10)group: group/site name (resolved to ID)layout: layout IDplan: service plan IDresource_pool_id: resource pool code ("pool-214") or numeric ID (214); both normalize to the code. Discover withlist_resource_pools()/get_resource_pool()
- Optional metadata:
description,environment,labels,tags
- Optional sizing/provisioning:
copies,layout_size
- Optional MTN/OpenStack-specific provisioning:
availability_zone,security_group,os_external_network_id,create_user
- Optional automation:
workflow_id,shutdown_days,expire_days,create_backup
- Optional networking/storage details:
security_groups,ports,volumes,network_interfaces,options
- Required core fields:
- Returns:
Instance - Raises:
- common API exceptions
NotFoundErrorwhengroupcannot be resolved
provision(name: str, *, type: str, group: str, plan: str | int, resource_pool=None, cloud=None, availability_zone=None, security_group="default", wait=True, timeout=600, dry_run=False, **create_kwargs) -> Instance | dict¶
Guided wrapper over create() that resolves IDs from names.
- Endpoint sequence:
GET /api/groups?name=<group>(resolve group →cloud_ids)GET /api/instance-types?code=<type>(resolvelayoutviadefault_layout_id)GET /api/instances/service-plans(resolveplanname → ID, unlessplanis an int)GET /api/options/zonePools(resolve/auto-selectresource_pool, unless given as int)POST /api/instances, then pollsGET /api/instances/{id}whenwait=True
- Parameters:
type: instance type code; itsdefault_layout_idbecomeslayoutgroup: group name; also used ascloudunlesscloudis givenplan: plan name (resolved against the live list) or numeric IDresource_pool: pool name, code, or numeric ID. If omitted, the group's single pool is used; if it has several, aValidationErrorlists themcloud: cloud/zone name; defaults togroupwait: block until running (defaultTrue)timeout: max seconds to wait whenwait=Truedry_run: return the resolved config dict instead of creating**create_kwargs: forwarded tocreate()(labels, tags, volumes, network_interfaces, ports, …)
- Returns: the created
Instance(running ifwait=True), or a configdictwhendry_run=True - Raises:
NotFoundErrorwhen the group or instance type can't be resolvedValidationErrorwhen the plan or resource pool can't be resolved
update(instance_id: int, name=None, description=None, labels=None) -> Instance¶
- Endpoint:
PUT /api/instances/{instance_id} - Parameters:
instance_id: target instance IDname: replacement namedescription: replacement descriptionlabels: replacement labels list
- Returns:
Instance - Raises: common API exceptions
delete(instance_id: int, preserve_volumes=False, force=False) -> bool¶
- Endpoint:
DELETE /api/instances/{instance_id} - Parameters:
instance_id: target instance IDpreserve_volumes: adds querypreserveVolumes=onforce: adds queryforce=on
- Returns:
Trueon successful deletion request - Raises: common API exceptions
start(instance_id: int) -> Instance¶
- Endpoint sequence:
PUT /api/instances/{instance_id}/startGET /api/instances/{instance_id}
- Returns: refreshed
Instance - Raises: common API exceptions
stop(instance_id: int) -> Instance¶
- Endpoint sequence:
PUT /api/instances/{instance_id}/stopGET /api/instances/{instance_id}
- Returns: refreshed
Instance - Raises: common API exceptions
restart(instance_id: int) -> Instance¶
- Endpoint sequence:
PUT /api/instances/{instance_id}/restartGET /api/instances/{instance_id}
- Returns: refreshed
Instance - Raises: common API exceptions
suspend(instance_id: int) -> Instance¶
- Endpoint sequence:
PUT /api/instances/{instance_id}/suspendGET /api/instances/{instance_id}
- Returns: refreshed
Instance - Raises: common API exceptions
resize(instance_id: int, plan_id: int) -> Instance¶
- Endpoint sequence:
PUT /api/instances/{instance_id}/resizeGET /api/instances/{instance_id}
- Parameters:
plan_id: new service plan ID
- Returns: resized
Instance - Raises: common API exceptions
wait_for_status(instance_id: int, target_status: str, timeout: int = 300, poll_interval: int = 5) -> Instance¶
Client-side polling helper.
- Endpoint sequence:
- repeated
GET /api/instances/{instance_id}until target status or timeout
- repeated
- Parameters:
target_status: desired status string (running,stopped, etc.)timeout: max wait in secondspoll_interval: sleep interval between polls
- Returns:
Instanceonce target status matches - Raises:
- common API exceptions from internal
get TimeoutErrorwhen timeout is exceededRuntimeErrorif instance entersfailedstate
- common API exceptions from internal
wait_until_running(instance_id: int, timeout: int = 300) -> Instance¶
- Endpoint behavior: same as
wait_for_status(..., target_status="running") - Returns:
Instance - Raises: same as
wait_for_status
wait_until_stopped(instance_id: int, timeout: int = 300) -> Instance¶
- Endpoint behavior: same as
wait_for_status(..., target_status="stopped") - Returns:
Instance - Raises: same as
wait_for_status
get_console(instance_id: int) -> dict[str, Any]¶
- Endpoint:
GET /api/instances/{instance_id}/console - Returns: raw console payload (
url, credentials, metadata) - Raises: common API exceptions
get_history(instance_id: int, max_results: int | None = None) -> list[dict[str, Any]]¶
- Endpoint:
GET /api/instances/{instance_id}/history - Parameters:
max_results: maps to querymax
- Returns: list from response key
processes - Raises: common API exceptions
Snapshot management¶
list_snapshots(instance_id: int) -> list[Snapshot]¶
- Endpoint:
GET /api/instances/{instance_id}/snapshots - Returns:
list[Snapshot] - Raises: common API exceptions
create_snapshot(instance_id: int, name: str, *, description=None) -> Snapshot¶
- Endpoint:
POST /api/instances/{instance_id}/snapshots - Parameters:
name: snapshot namedescription: optional description
- Returns:
Snapshot - Raises: common API exceptions
revert_snapshot(instance_id: int, snapshot_id: int) -> bool¶
- Endpoint:
PUT /api/instances/{instance_id}/revert-snapshot/{snapshot_id} - The instance should be stopped before reverting
- Returns:
Truewhen revert is initiated - Raises: common API exceptions
delete_snapshot(instance_id: int, snapshot_id: int) -> bool¶
- Endpoint:
DELETE /api/instances/{instance_id}/snapshots/{snapshot_id} - Returns:
Trueon success - Raises: common API exceptions
Provisioning discovery¶
These helpers resolve the IDs and codes required by create() using permission-safe endpoints (the admin-level clouds/plans endpoints are restricted on most accounts).
list_resource_pools(group=None, *, cloud_id=None, group_id=None, provision_type_code="openstack") -> list[ResourcePool]¶
- Endpoint:
GET /api/options/zonePools?cloudId={cloud_id}&groupId={group_id} - A resource pool is where an instance is hosted; its
codeis theresource_pool_idforcreate() - Parameters:
group: group name or ID — when given,cloud_idandgroup_idare resolved from it automatically (the group embeds its cloud/zone IDs)cloud_id/group_id: explicit IDs, required ifgroupis not givenprovision_type_code: provisioning type, defaults to"openstack"
- Returns:
list[ResourcePool](group-header rows are filtered out) - Raises:
ValueErrorif neithergroupnor bothcloud_id/group_idare provided, or the group has no associated cloud
get_resource_pool(name: str, *, group=None, cloud_id=None, group_id=None, provision_type_code="openstack") -> ResourcePool¶
- Fetches a single pool by display name or code (e.g.
"pool-214") - Same resolution rules as
list_resource_pools - Returns:
ResourcePool - Raises:
NotFoundErrorif no pool matchesname
list_service_plans(zone_id=None, layout_id=None, group_id=None) -> list[dict[str, Any]]¶
- Endpoint:
GET /api/instances/service-plans?zoneId={zone_id}&layoutId={layout_id}&siteId={group_id} - Returns available service plans (CPU/memory/storage tiers) scoped to the provisioning context
layout_idis required by the API; useinstance_type.default_layout_id- Returns: list of plan dicts from response key
plans
ResourcePool model fields: id (numeric), code (alias of API value, e.g. "pool-214"), name, external_id (OpenStack pool ID), is_default.