### List Providers Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This example shows the structure of the response when listing all available cloud service providers and their supported types. ```javascript { "providers": { "openstack": { "types": [ 4, 8, 16, 32, 64, 128, 256, 512, 4096, 16384, 32768, 65536, 131072, 262144, 524288, 1048576 ] }, "oracle_vm": { "types": [ 4, 8, 16, 32, 64, 128, 512, 4096, 16384, 32768, 65536, 131072, 262144 ] }, "opc": { "types": [ 4, 8, 16, 32, 64, 128, 256, 512, 4096, 16384, 65536, 131072, 262144 ] }, "vmware_vsphere": { "types": [ 8, 16, 32, 1024, 4096, 65536, 131072 ] }, "azure": { "types": [ 4, 8, 16, 32, 64, 128, 256, 512, 4096, 16384, 32768, 65536, 131072, 262144 ] }, "aws": { "types": [ 4, 8, 16, 32, 64, 128, 256, 512, 4096, 16384, 32768, 65536, 131072, 262144 ] }, "hyper-v": { "types": [ 8, 16, 32, 4096, 65536 ] }, "oci": { "types": [ 4, 16, 32, 64, 128, 256, 512, 16384, 32768, 262144 ] }, "scvmm": { "types": [ 4, 16, 64, 128 ] } } } ``` -------------------------------- ### Paginated API Request Example Source: https://github.com/cloudbase/coriolis/blob/master/README.rst Example demonstrating how to retrieve a limited number of records with specific sorting and starting from a marker. This is useful for fetching large datasets efficiently. ```HTTP GET http://server:7667/v1/transfers?marker=a7061715-e56c-470c-a6ac-80bb02f1f198&limit=2&sort_key=id&sort_dir=asc ``` -------------------------------- ### Resource Response Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This is an example of a response object for a resource, detailing its creation, update, deletion timestamps, and associated IDs. It includes connection information for both direct access and backup writers, as well as provider-specific properties. ```json { "created_at": "2021-01-29T11:49:38.000000", "updated_at": "2021-01-29T12:02:23.000000", "deleted_at": null, "deleted": "0", "id": "ecb4d684-9339-4ad1-9116-96ddb11d5bb6", "user_id": "bdb2d792fc0c48818ef4b1b1240fbb69", "project_id": "f801306887294bf0b98ffc05601f22db", "pool_id": "540a29df-94e4-4a65-bf3b-40ea18929c40", "allocation_status": "HEALTHCHECKING", "allocated_action": null, "power_status": "POWERED_ON", "last_used_at": "2021-01-29T11:51:05.000000", "connection_info": { "ip": "10.107.5.65", "port": 22, "username": "cloudbase", "password": null, "pkey": "***" }, "backup_writer_connection_info": { "backend": "ssh_backup_writer", "connection_details": { "ip": "10.107.5.65", "port": 22, "username": "cloudbase", "password": null, "pkey": "***" } }, "provider_properties": { "instance_id": "13971ab6-f523-4290-958f-6f5d8edf180f", "keypair_name": "coriolispool540a29dfmachineecb4d68493394ad1911696ddb112fe9eb68keypair", "port_id": "14c2c8b8-a0c2-481a-8687-b0fbbd62e436", "data_transfer_mechanism": "SSH", "secgroup_id": "5750cecb-2354-413e-87ae-14dc50eb2459", "floating_ip_id": "9f3a3ab2-42d6-4d8a-8f26-71f8bd380ae6", "pool_identifier": "540a29df-94e4-4a65-bf3b-40ea18929c40", "minion_identifier": "ecb4d684-9339-4ad1-9116-96ddb11d5bb6", "pool_shared_resources": {}, "pool_os_type": "linux" } } ``` -------------------------------- ### Example Instance List on Openstack Endpoint Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This example shows the structure of a response when listing instances for an Openstack endpoint. It includes details such as CPU, memory, OS type, and instance ID. ```javascript { "instances": [ { "num_cpu": 1, "num_cores_per_socket": 1, "memory_mb": 2048, "nested_virtualization": false, "name": "ubuntu-xenial", "id": "3ba07383-6726-4bf8-82d5-d5ce871519bc", "flavor_name": "m1.small", "os_type": "linux", "firmware_type": "BIOS", "secure_boot": false }, { "num_cpu": 4, "num_cores_per_socket": 1, "memory_mb": 2048, "nested_virtualization": false, "name": "windows", "id": "e93f6d38-9240-4dec-b738-61ca225aba6a", "flavor_name": "windows2012", "os_type": "windows", "firmware_type": "EFI", "secure_boot": false } ] } ``` -------------------------------- ### Example VM Inventory CSV Response Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This example shows the values returned by the VMWare provider for VM inventory. It includes fields like vm_id, vm_name, firmware, and power_state. ```default vm_id,vm_name,firmware,num_cpu,memory_mb,nested_virtualization,dynamic_memory_enabled,secure_boot,os_type,guest_id,disks,nics,hostname,parent_vapp,host,power_state 4cb7e5e1-d3c4-4b0a-8742-f2b1b3d9a1c2,web-server-01,efi,4,8192,False,True,False,linux,ubuntu64Guest,150GB,Network adapter 1|00:50:56:aa:bb:cc|VM Network|10.0.0.10,web-server-01,,esxi-host-01.example.com,poweredOn 9fa23b11-7e2a-4c10-a3f8-0d1e2f3c4a5b,db-server-01,bios,8,16384,False,False,False,windows,windows9Server64Guest,300GB,Network adapter 1|00:50:56:aa:cc:dd|VM Network|10.0.0.20,db-server-01,db-vapp,esxi-host-02.example.com,poweredOn ``` -------------------------------- ### Example Get Endpoint Storage Response Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This JSON object shows the response when listing storage backends available for a specific endpoint. It details the ID and name of each storage backend. ```javascript { "storage": { "storage_backends": [ { "id": "486bf200-f4b0-4e3b-a0f3-6e7603203624", "name": "lvmdriver-1" } ] } } ``` -------------------------------- ### Event Log Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This is an example of an event log entry, showing its creation timestamp, ID, associated pool ID, severity level, and a descriptive message. ```json { "created_at": "2021-01-29T12:02:23.000000", "updated_at": null, "deleted_at": null, "deleted": "0", "id": "cde729b2-b1c6-41d7-907c-7cc39bc5ed7a", "pool_id": "540a29df-94e4-4a65-bf3b-40ea18929c40", "level": "INFO", "index": 26, "message": "Begun minion pool refreshing process" } ``` -------------------------------- ### Example Destination Minion Pool Options List on OpenStack Endpoint Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This example shows the structure of the response when listing possible minion pool options for a destination endpoint on OpenStack. It details parameters like network, flavor, and image choices. ```javascript { "destination_minion_pool_options": [ { "name": "migr_network", "values": [ "ext-net", "admin-net" ], "config_default": null }, { "name": "migr_fip_pool_name", "values": [ { "name": "external-network-private/external-private", "id": "56471574-bbe8-4739-a103-1918198ca73d/8101d1a8-1e3e-423e-827d-6d7a5b6ba7be" }, { "name": "ext-net/ext-subnet", "id": "b2f0b98e-03a1-4f13-92aa-ece55f34ebf8/038a72ea-1413-493b-82da-4c75a9077fbf" } ], "config_default": null }, { "name": "migr_image", "values": [ { "id": "c729f7b4-bac7-473f-a6e2-827dc01486f4", "name": "focal", "os_type": "unknown" }, { "id": "d58f4bdf-bc45-4851-88e8-3cffc19a733a", "name": "CentOS8", "os_type": "linux" }, { "id": "64df7925-fc27-4fce-80ed-63d85918064f", "name": "WS2016", "os_type": "windows" } ], "config_default": null }, { "name": "migr_flavor_name", "values": [ "m1.small", "m1.medium" ], "config_default": "m1.small" }, { "name": "migr_worker_volume_type", "values": [ "coriolis-tier", "__DEFAULT__" ], "config_default": null } ] } ``` -------------------------------- ### Paginated Transfers Example Source: https://github.com/cloudbase/coriolis/blob/master/README.rst Demonstrates how to paginate through transfer resources using marker, limit, sort_key, and sort_dir parameters. ```APIDOC ## GET /v1/transfers ### Description Retrieves a paginated list of transfers. Supports sorting and filtering using pagination parameters. ### Method GET ### Endpoint http://server:7667/v1/transfers ### Query Parameters - **sort_key** (string) - Optional - Sort key, repeatable. `created_at` and `id` are used by default. - **sort_dir** (string) - Optional - Sort direction, repeatable. `asc` or `desc` (default). - **marker** (string) - Optional - The last seen ID, omitted from the results. - **limit** (integer) - Optional - The maximum number of records to retrieve. ### Request Example GET http://server:7667/v1/transfers?marker=a7061715-e56c-470c-a6ac-80bb02f1f198&limit=2&sort_key=id&sort_dir=asc ``` -------------------------------- ### Region Show Response Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This is an example of a successful response when retrieving details for a specific region. It includes timestamps, IDs, names, and associated services and endpoints. ```javascript { "region": { "created_at": "2021-01-28T16:22:34.000000", "updated_at": null, "deleted_at": null, "deleted": "0", "id": "5e31066c-3512-4e8d-9e68-0a5de3d35c5f", "name": "Public", "description": "Default Coriolis Region created by coriolis-docker.", "enabled": true, "mapped_services": [ "15194e7e-8d91-406a-a02c-8032ff1fe623" ], "mapped_endpoints": [] } } ``` -------------------------------- ### Example Response with Events Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This JSON structure shows an example response containing a list of events related to minion pools, including creation and update timestamps, IDs, and messages. ```json { "events": [ { "created_at": "2021-01-29T11:55:55.000000", "updated_at": null, "deleted_at": null, "deleted": "0", "id": "618beb44-91a3-458b-a0da-ee19638447df", "pool_id": "be74a17c-5476-4cf8-93f7-dd58c700de70", "level": "INFO", "index": 0, "message": "Successfully added minion pool to the DB" }, { "created_at": "2021-01-29T14:46:25.000000", "updated_at": null, "deleted_at": null, "deleted": "0", "id": "080cd191-dc2f-4cbc-81b4-5b9d073bf953", "pool_id": "be74a17c-5476-4cf8-93f7-dd58c700de70", "level": "INFO", "index": 1, "message": "Successfully updated minion pool properties" } ], "progress_updates": [] } } ``` -------------------------------- ### Region Create Request Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This is an example of a request body used to create a new region. It includes the region's name, an optional description, and its enabled status. ```javascript { "region": { "name": "region1", "description": "First test region.", "enabled": true } } ``` -------------------------------- ### Deployment Show Response Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This JSON object represents a typical response when showing a deployment's details. It includes creation timestamps, associated project and user IDs, and detailed destination environment configurations such as network and storage mappings, keypair names, and image maps. ```javascript { "deployment": { "created_at": "2019-07-10T07:24:09.000000", "updated_at": "2019-07-10T08:39:05.000000", "deleted_at": null, "deleted": "0", "base_id": "1e31443d-5eb1-403f-9f15-c67a2c372bc3", "user_id": "7cf9b4745d514517b3eae440438136bc", "project_id": "ffc16db2011e41f28152897c279b6bcc", "destination_environment": { "migr_flavor_name": "m1.small", "storage_mappings": { "lvmdriver-1": "lvm-1" }, "keypair_name": "new-key", "delete_disks_on_vm_termination": false, "migr_image_map": { "linux": "ubuntu-xenial-img", "windows": "63d8f1a4-3192-4edc-b113-0d099b4bc458" }, "migr_network": "provider-net", "port_reuse_policy": "keep_mac", "set_dhcp": true, "network_map": { "private": "provider-net" } }, "type": "deployment", "instances": [ "windows" ], "reservation_id": null, "notes": "", "origin_endpoint_id": "b59051a2-bbf3-4fb7-a1eb-539db55339dc", "destination_endpoint_id": "6258fa20-5d1f-44fa-ae12-c94122263fa3", "transfer_result": { "windows": { "num_cpu": 1, "num_cores_per_socket": 1, "memory_mb": 1024, "nested_virtualization": false, "name": "windows-instance", "id": "00ea28b8-4760-4890-bd79-227b7327a209", "flavor_name": "ds1G", "os_type": "linux", "firmware_type": "BIOS", "secure_boot": false, "devices": { "nics": [ { "name": "8ea26385-04e5-418b-9ca7-e36c36d6c69b", "id": "8ea26385-04e5-418b-9ca7-e36c36d6c69b", "mac_address": "00:50:56:9c:23:b6", "ip_addresses": [ "10.0.0.34" ], "network_id": "0e83bf34-9cc7-4580-9189-a9d9c3c7abb8", "network_name": "private" } ], "disks": [ { "format": "raw", "guest_device": "/dev/vda", "size_bytes": 1073741824, ``` -------------------------------- ### Get System Diagnostics Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md Retrieves comprehensive diagnostic information about the Coriolis appliance, including OS details, network configuration, licensing status, and installed packages. ```APIDOC ## GET /diagnostics ### Description Retrieves detailed diagnostic information about the Coriolis appliance. ### Method GET ### Endpoint /diagnostics ### Parameters This endpoint does not accept any path or query parameters. ### Request Body This endpoint does not accept a request body. ### Response #### Success Response (200) - **diagnostics** (array) - Array of diagnostics objects. - **application** (string) - Name of the Coriolis service. - **os_info** (array) - The Coriolis appliance’s host OS information. - **hostname** (string) - The hostname of the Coriolis service container. - **ip_addresses** (object) - IP addresses of all the interfaces attached to the Coriolis appliance. - **licensing_status** (object) - The licensing status of the Coriolis appliance. - **packages** (array) - The list of PIP packages installed on the Coriolis service container. - **licences** (object) - The list of licenses installed on the Coriolis appliance. - **reservations** (object) - Optional. The list of reservations made by the Coriolis appliance. #### Response Example ```json { "diagnostics": [ { "application": "coriolis-conductor", "packages": [ "alembic==1.5.2", "amqp==5.0.5", "argparse==1.4.0" ], "os_info": [ "NAME=\"Ubuntu\"", "VERSION=\"18.04.5 LTS (Bionic Beaver)\"" ], "hostname": "coriolis-conductor", "ip_addresses": [ { "eth0": { "ipv4": [ { "addr": "10.107.9.8", "netmask": "255.255.254.0", "broadcast": "10.107.9.255" } ] } } ], "licensing_status": { "appliance_id": "123e4567-e89b-12d3-a456-426614176000", "earliest_licence_expiry_time": "2024-09-07T13:09:21Z", "latest_licence_expiry_time": "2024-09-07T13:09:21Z", "current_performed_migrations": 0, "current_performed_replicas": 0, "lifetime_performed_migrations": 2, "lifetime_performed_replicas": 1, "current_available_migrations": 10, "current_available_replicas": 10, "lifetime_available_migrations": 10, "lifetime_available_replicas": 10 }, "licences": [ { "id": "e7b8a9f0-4d3b-4a6a-8c1d-2f8e4d9a9b1f", "appliance_id": "123e4567-e89b-12d3-a456-476614174000", "issue_date": "2024-09-03T09:53:44Z", "licence_version": "v2", "migrations": 10, "replicas": 10, "period_start": "2024-09-03T09:54:21Z", "period_duration": 20 } ] } ] } ``` ``` -------------------------------- ### Reservation and Application Data Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This snippet shows a sample JSON response structure containing reservation details and application information, including package versions and OS details. ```json { "period_end": "2024-09-07T13:09:21Z", "application_date": "2024-09-03T09:53:56Z" } ], "reservations": [] }, { "application": "coriolis-replica-cron", "packages": [ "alembic==1.5.2", "amqp==5.0.5", "argparse==1.4.0", // ... ], "os_info": [ "NAME=\"Ubuntu\"", "VERSION=\"18.04.5 LTS (Bionic Beaver)\"", "ID=ubuntu", "ID_LIKE=debian", "PRETTY_NAME=\"Ubuntu 18.04.5 LTS\"", "VERSION_ID=\"18.04\"", "HOME_URL=\"https://www.ubuntu.com/"", "SUPPORT_URL=\"https://help.ubuntu.com/"", "BUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/"", "PRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"", "VERSION_CODENAME=bionic", "UBUNTU_CODENAME=bionic", "" ], "hostname": "coriolis-replica-cron", "ip_addresses": [ { "eth0": { "ipv4": [ { "addr": "10.107.9.8", "netmask": "255.255.254.0", "broadcast": "10.107.9.255" } ], "ipv6": [ { "addr": "fe80::250:56ff:feb9:73a%eth0", "netmask": "ffff:ffff:ffff:ffff::/64" } ] } }, { "docker0": { "ipv4": [ { "addr": "172.17.0.1", "netmask": "255.255.0.0", "broadcast": "172.17.255.255" } ], "ipv6": [ { "addr": "fe80::42:61ff:fe79:de6f%docker0", "netmask": "ffff:ffff:ffff:ffff::/64" } ] } } ] } // ... ] } ``` -------------------------------- ### Minion Pool Event Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This JSON object represents an event log for a minion pool, indicating the start of the deallocation process. It includes timestamps, IDs, and the event message. ```json { "created_at": "2021-01-29T12:03:56.000000", "updated_at": null, "deleted_at": null, "deleted": "0", "id": "6048989e-f49c-4562-967d-764ae5f9bd69", "pool_id": "540a29df-94e4-4a65-bf3b-40ea18929c40", "level": "INFO", "index": 29, "message": "Begun minion pool deallocation process" } ``` -------------------------------- ### Instance Show Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md Provides detailed information about a specific virtual machine instance, including its configuration, resources, and associated devices. ```APIDOC ## GET /instance/{id} ### Description Retrieves detailed information about a virtual machine instance. ### Method GET ### Endpoint /instance/{id} ### Parameters #### Path Parameters - **id** (uuid) - Required - The unique identifier of the virtual machine. ### Response #### Success Response (200) - **instance** (object) - Object containing information about the requested instance. - **name** (string) - The unique identifier of a virtual machine. - **id** (uuid) - The id of the instance. - **os_type** (string) - The OS type of an instance. - **memory_mb** (integer) - The memory of the instance in MB. - **num_cpu** (string) - The numbers of CPUs of an instance. - **num_cores_per_socket** (integer) - Optional - Number of cores per socket used by the instance. - **nested_virtualization** (boolean) - Optional - Whether the instance is run on a nested virtualization environment. - **flavor_name** (string) - Name or ID of the flavor used by the instance. - **devices** (object) - Object containing information about instance devices like NICs, disks, etc. - **firmware_type** (string) - Optional - The type of firmware of the VM. - **secure_boot** (boolean) - Optional - Whether the machine has UEFI Secure Boot enabled or not. ### Request Example ```json { "instance": { "num_cpu": 1, "num_cores_per_socket": 1, "memory_mb": 2048, "nested_virtualization": false, "name": "ubuntu-xenial", "id": "3ba07383-6726-4bf8-82d5-d5ce871519bc", "flavor_name": "m1.small", "devices": { "nics": [ { "name": "025cbc3d-7779-4686-9ca9-8ce0a5895172", "id": "025cbc3d-7779-4686-9ca9-8ce0a5895172", "mac_address": "fa:16:3e:2b:7b:db", "ip_addresses": [ "10.0.0.23" ], "network_id": "1bd79664-8d62-477e-9a12-96595ae1dbe1", "network_name": "private" } ], "disks": [ { "format": "raw", "guest_device": "/dev/sda", "size_bytes": 21474836480, "path": "", "id": "1d4a25a6-70a3-4784-ab89-cf7fc205be2d", "storage_backend_identifier": "lvmdriver-1" } ], "cdroms": [], "serial_ports": [], "floppies": [], "controllers": [] }, "os_type": "linux", "firmware_type": "BIOS", "secure_boot": false } } ``` ``` -------------------------------- ### Example Get Endpoint Networks Response Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This JSON object represents a successful response when retrieving a list of networks associated with an endpoint. It includes network IDs, names, and port security status. ```javascript { "networks": [ { "id": "2734b848-1e4a-4e94-b566-71060d913f80", "name": "shared", "port_security_enabled": true }, { "id": "a57e180a-5626-459e-b59b-bd5491ebef6d", "name": "public", "port_security_enabled": true } ] } ``` -------------------------------- ### Coriolis Diagnostics Response Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This JSON object represents a typical response for diagnostics from the Coriolis service. It includes details about the application, installed packages, operating system information, network interfaces, and licensing status. Use this as a reference for understanding the data returned by the API. ```javascript { "diagnostics": [ { "application": "coriolis-conductor", "packages": [ "alembic==1.5.2", "amqp==5.0.5", "argparse==1.4.0", // ... ], "os_info": [ "NAME=\"Ubuntu\"", "VERSION=\"18.04.5 LTS (Bionic Beaver)"", "ID=ubuntu", "ID_LIKE=debian", "PRETTY_NAME=\"Ubuntu 18.04.5 LTS\"", "VERSION_ID=\"18.04\"", "HOME_URL=\"https://www.ubuntu.com/"", "SUPPORT_URL=\"https://help.ubuntu.com/"", "BUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/"", "PRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"", "VERSION_CODENAME=bionic", "UBUNTU_CODENAME=bionic", "" ], "hostname": "coriolis-conductor", "ip_addresses": [ { "eth0": { "ipv4": [ { "addr": "10.107.9.8", "netmask": "255.255.254.0", "broadcast": "10.107.9.255" } ], "ipv6": [ { "addr": "fe80::250:56ff:feb9:73a%eth0", "netmask": "ffff:ffff:ffff:ffff::/64" } ] } }, { "docker0": { "ipv4": [ { "addr": "172.17.0.1", "netmask": "255.255.0.0", "broadcast": "172.17.255.255" } ], "ipv6": [ { "addr": "fe80::42:61ff:fe79:de6f%docker0", "netmask": "ffff:ffff:ffff:ffff::/64" } ] } } ], "licensing_status": { "appliance_id": "123e4567-e89b-12d3-a456-426614176000", "earliest_licence_expiry_time": "2024-09-07T13:09:21Z", "latest_licence_expiry_time": "2024-09-07T13:09:21Z", "current_performed_migrations": 0, "current_performed_replicas": 0, "lifetime_performed_migrations": 2, "lifetime_performed_replicas": 1, "current_available_migrations": 10, "current_available_replicas": 10, "lifetime_available_migrations": 10, "lifetime_available_replicas": 10 }, "licences": [ { "id": "e7b8a9f0-4d3b-4a6a-8c1d-2f8e4d9a9b1f", "appliance_id": "123e4567-e89b-12d3-a456-476614174000", "issue_date": "2024-09-03T09:53:44Z", "licence_version": "v2", "migrations": 10, "replicas": 10, "period_start": "2024-09-03T09:54:21Z", "period_duration": 20 } ] } ] } ``` -------------------------------- ### Example Instance Show Response Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This JSON object represents the detailed information returned for a virtual machine instance, including its configuration, devices, and OS type. It is typically received when querying for a specific instance's details. ```javascript { "instance": { "num_cpu": 1, "num_cores_per_socket": 1, "memory_mb": 2048, "nested_virtualization": false, "name": "ubuntu-xenial", "id": "3ba07383-6726-4bf8-82d5-d5ce871519bc", "flavor_name": "m1.small", "devices": { "nics": [ { "name": "025cbc3d-7779-4686-9ca9-8ce0a5895172", "id": "025cbc3d-7779-4686-9ca9-8ce0a5895172", "mac_address": "fa:16:3e:2b:7b:db", "ip_addresses": [ "10.0.0.23" ], "network_id": "1bd79664-8d62-477e-9a12-96595ae1dbe1", "network_name": "private" } ], "disks": [ { "format": "raw", "guest_device": "/dev/sda", "size_bytes": 21474836480, "path": "", "id": "1d4a25a6-70a3-4784-ab89-cf7fc205be2d", "storage_backend_identifier": "lvmdriver-1" } ], "cdroms": [], "serial_ports": [], "floppies": [], "controllers": [] }, "os_type": "linux", "firmware_type": "BIOS", "secure_boot": false } } ``` -------------------------------- ### Deployment List Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This JSON object represents a detailed deployment list, including environment configurations, network and storage mappings, and instance details. It is used to define and manage cloud deployments. ```javascript { "deployments": [ { "created_at": "2019-08-20T12:32:31.000000", "updated_at": "2019-08-20T12:32:42.000000", "deleted_at": null, "deleted": "0", "base_id": "65bd70e4-c4ab-4f60-9d78-779c0b58c2ab", "user_id": "7cf9b4745d514517b3eae440438136bc", "project_id": "ffc16db2011e41f28152897c279b6bcc", "destination_environment": { "migr_flavor_name": "m1.small", "network_map": { "VM Network": "0e83bf34-9cc7-4580-9189-a9d9c3c7abb8" }, "storage_mappings": { "backend_mappings": [ { "source": "afsan1", "destination": "lvmdriver-1" } ], "disk_mappings": [ { "disk_id": "3000", "destination": "lvmdriver-1" } ] }, "keypair_name": "new-key", "delete_disks_on_vm_termination": false, "migr_image_map": { "linux": "ubuntu-xenial-img", "windows": "63d8f1a4-3192-4edc-b113-0d099b4bc458" }, "migr_network": "provider-net", "port_reuse_policy": "keep_mac", "set_dhcp": true }, "type": "deployment", "executions": [], "instances": [ "CI/openwrt" ], "reservation_id": null, "notes": "", "origin_endpoint_id": "ebe5b6cf-3236-43f7-b7b2-dce477a011a4", "destination_endpoint_id": "575ba652-ff3a-4cb9-ab03-eb6cbeaae2c4", "transfer_result": null, "network_map": { "VM Network": "0e83bf34-9cc7-4580-9189-a9d9c3c7abb8" }, "storage_mappings": { "backend_mappings": [ { "source": "afsan1", "destination": "lvmdriver-1" } ], "disk_mappings": [ { "disk_id": "3000", "destination": "lvmdriver-1" } ] }, "source_environment": {}, "id": "65bd70e4-c4ab-4f60-9d78-779c0b58c2ab", "transfer_id": "0460aa4d-6b16-4c98-bd56-27ee186e4a22" } ] } ``` -------------------------------- ### Minion Pool Refresh Request Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md Example of a request body for refreshing a minion pool. The 'refresh' field should be null. ```javascript { "refresh": null } ``` -------------------------------- ### Get Migration Job Info API Request Source: https://github.com/cloudbase/coriolis/blob/master/README.rst GET request to retrieve specific information about a migration job using its ID. ```http GET http://server:7667/v1/%(project_id)s/migrations/%(migration_id)s ``` -------------------------------- ### Transfer Update Request Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This JSON object represents an example request body for updating a transfer, specifically including network mapping details. ```json { "transfer": { "network_map": { "VM Network": "0a6b9c01-9ff8-4afa-afba-fa2058fe6cd2" } } } ``` -------------------------------- ### Deployment Create From Transfer Request Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This JSON object represents a request to create a deployment from a transfer. It includes details such as cloning disks, specifying a transfer ID, and configuring OS morphing with user scripts. ```json { "deployment": { "clone_disks": true, "force": false, "transfer_id": "0460aa4d-6b16-4c98-bd56-27ee186e4a22", "skip_os_morphing": false, "instance_osmorphing_minion_pool_mappings": { "instance1": "morphing_pool" }, "user_scripts": { "global": { "linux": [ { "phase": "osmorphing_pre_os_mount", "payload": "echo 'unlocking encrypted OS partion'" }, { "phase": "osmorphing_post_os_mount", "payload": "echo 'modifying replica OS filesystem'" } ] } } } } ``` -------------------------------- ### Build API Documentation Source: https://github.com/cloudbase/coriolis/blob/master/README.rst Command to build the API documentation using Sphinx. Ensure you are in the repository root directory before running. ```Shell sphinx-build -W -b html coriolis/api-refs/source $DOCS_PATH ``` -------------------------------- ### Create Transfer Schedule Request Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This JSON object demonstrates the structure for creating a transfer schedule. It includes settings for enabling the schedule, whether to shut down the instance, and the specific schedule times. ```json { "enabled": true, "shutdown_instance": false, "schedule": { "month": 7, "hour": 20, "minute": 30, "dom": 23 } } ``` -------------------------------- ### Service Create Response Example Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/api-refs/source/index.md This JSON object represents a typical response when creating a new service. It includes details about the service's configuration, status, and provider information. ```javascript { "service": { "created_at": "2021-02-01T11:19:44.000000", "updated_at": null, "deleted_at": null, "deleted": "0", "id": "07c3343b-970d-437a-b670-e88e78dab3fc", "host": "coriolis-worker-ONbgH1NV", "binary": "coriolis-worker-test", "topic": "coriolis_worker-test", "enabled": false, "status": "UP", "providers": { "openstack": { "types": [ 4, 8, 16, 32, 64, 128, 256, 512, 4096, 16384, 32768, 65536, 131072, 262144, 524288, 1048576 ] }, "// ...": "// ..." }, "specs": { "application": "coriolis-worker", "packages": [ "adal==1.2.6", "alembic==1.5.2" "// ...": "// ..." ], "os_info": [ "NAME=\"Ubuntu\"", "VERSION=\"18.04.5 LTS (Bionic Beaver)"", "ID=ubuntu", "ID_LIKE=debian", "PRETTY_NAME=\"Ubuntu 18.04.5 LTS\"", "VERSION_ID=\"18.04\"", "HOME_URL=\"https://www.ubuntu.com/\"", "SUPPORT_URL=\"https://help.ubuntu.com/\"", "BUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/\"", "PRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\"", "VERSION_CODENAME=bionic", "UBUNTU_CODENAME=bionic", "" ], "hostname": "coriolis-worker-ONbgH1NV", "ip_addresses": [ { "eth0": { "ipv4": [ { "addr": "10.107.9.58", "netmask": "255.255.254.0", "broadcast": "10.107.9.255" } ], "ipv6": [ { "addr": "fe80::250:56ff:fe89:91f4%eth0", "netmask": "ffff:ffff:ffff:ffff::/64" } ] } } ] } } } ``` -------------------------------- ### Run All Integration Tests Source: https://github.com/cloudbase/coriolis/blob/master/coriolis/tests/integration/README.md Executes all integration tests using tox. 'sudo' is required because tox needs to run as root for the test process to inherit necessary privileges. ```bash sudo tox -e integration ```