Workload Placement Endpoints (BETA)

Summary

These are the API endpoint to Cloudability Workload Placement Feature which is documented on our knowledge base. The endpoint provides much flexibility to further find a well priced option for a compute workload. Your starting point should generally be a workload with somewhat well known resource requirements. You can use the /search and /list endpoints to look from our database of known cloud and OEM vendor instance types to find one that matches the workload you are migrating. Once you have found an appropriate instance, you can then use that instance to request placement and pricing options from all of the supported cloud vendors.
For example you might know that the web application you are standing up for 6 hours of testing will get by with the equivalent of 1* m4.large. To specify the base line instance characteristics your workload requires you can chose either an instance type you are familiar with or the underlying instance attributes such as CPU cores or memory. With such details the Workplace Placement endpoint will return you a full set of placement options which meet the performance characteristics of the workload including ones that could provide surprisingly high price advantages in specific placements that wouldn't have been necessarily obvious.

Endpoint Particulars

endpoint: prediction/workload/instance/search/{vendor}

Supported vendor values

  • 'aws', 'azure', 'gcp' and 'oem'

The instance database can be searched by the attributes specified as url parameters.

Supported search attributes

  • region - for example 'us-east-1'
  • os - Operating system
  • instanceMinCpuCount - numerical value of the number of CPU cores required
  • instanceMinMemoryGB - numerical value representing GB of Memory(RAM)
  • instanceType - for example 'r4.2xlarge' or 'PowerEdge 1950'

Example Request - Search for an OEM instance type

curl 'https://api.cloudability.com/v3/prediction/workload/instance/search/OEM?instanceMinCpuCount=12&instanceType=Dell+PowerEdge' \
 \
    -u '[auth_token]:'

Example Request - Search for a Cloud Vendor instance type

curl 'https://api.cloudability.com/v3/prediction/workload/instance/search/AWS?instanceMinCpuCount=12&instanceType=m4' -u '[auth_token]:'

Example Response

Below is a very shortened example response. The fewer attributes you specify, the more responses you will generally get in the result.

{
    "result": [
        {
            "instanceType": "m5.12xlarge",
            "id": "10057",
            "vendor": "AWS",
            "processorId": "GenuineIntel Family 6 Model 85 Stepping 4",
            "processorName": "Intel(R) Xeon(R)",
            "instanceMinCpuCount": 48,
            "instanceMinMemoryGb": 206
        },
        {
            "instanceType": "m5.4xlarge",
            "id": "10081",
            "vendor": "AWS",
            "processorId": "GenuineIntel Family 6 Model 85 Stepping 4",
            "processorName": "Intel(R) Xeon(R)",
            "instanceMinCpuCount": 16,
            "instanceMinMemoryGb": 69
        },
        {
            "instanceType": "m5.24xlarge",
            "id": "10399",
            "vendor": "AWS",
            "processorId": "GenuineIntel Family 6 Model 85 Stepping 4",
            "processorName": "Intel(R) Xeon(R)",
            "instanceMinCpuCount": 96,
            "instanceMinMemoryGb": 412
        }
    ]
}

endpoint: prediction/workload/instance/list/{vendor}

Supported vendor values

  • 'aws', 'azure', 'gcp' and 'oem'

Example Request

curl 'https://api.cloudability.com/v3/prediction/workload/instance/list' -u '[auth_token]:'

Example Response

{
    "result": [
        {
            "instanceType": "m5.12xlarge",
            "id": "10057",
            "vendor": "AWS",
            "processorId": "GenuineIntel Family 6 Model 85 Stepping 4",
            "processorName": "Intel(R) Xeon(R)",
            "instanceMinCpuCount": 48,
            "instanceMinMemoryGb": 206
        },
        {
            "instanceType": "m5.4xlarge",
            "id": "10081",
            "vendor": "AWS",
            "processorId": "GenuineIntel Family 6 Model 85 Stepping 4",
            "processorName": "Intel(R) Xeon(R)",
            "instanceMinCpuCount": 16,
            "instanceMinMemoryGb": 69
        },
        {
            "instanceType": "m5.24xlarge",
            "id": "10399",
            "vendor": "AWS",
            "processorId": "GenuineIntel Family 6 Model 85 Stepping 4",
            "processorName": "Intel(R) Xeon(R)",
            "instanceMinCpuCount": 96,
            "instanceMinMemoryGb": 412
        },
        ....
    ]
}

endpoint: prediction/workload/placement/{id}/{vendor}

  • id: An instance ID retrieved from /search or /list endpoints
  • vendor: 'aws', 'azure' or 'gcp'

The results can be further constrained by setting additional attributes as request parameters such as

  • region - for example 'us-east-1'
  • os - Operating system
  • instanceMinCpuCount - numerical value of the number of CPU cores required
  • instanceMinMemoryGB - numerical value representing GB of Memory(RAM)
curl 'https://api.cloudability.com/v3/prediction/workload/placement/7097/aws' -u '[auth_token]:'

Example Response

{
    "result": [
        {
            "cpu": 64,
            "instance_type": "i3.16xlarge",
            "memory": 524,
            "notes": "",
            "os": "Linux",
            "price_on_demand": 5.792,
            "price_one_year_commit": 3.965,
            "price_one_year_full_commit": 32320,
            "price_one_year_partial_commit": 1.882,
            "price_per_unit": 5.792,
            "price_private_on_demand": -1,
            "price_private_one_year_full_commit": -1,
            "price_private_one_year_partial_commit": -1,
            "price_private_three_year_full_commit": -1,
            "price_private_three_year_partial_commit": -1,
            "price_spot": -1,
            "price_sustained_use_100": 5.792,
            "price_sustained_use_25": 5.792,
            "price_sustained_use_50": 5.792,
            "price_sustained_use_75": 5.792,
            "price_three_year_commit": 2.834,
            "price_three_year_full_commit": 64386,
            "price_three_year_partial_commit": 1.303,
            "processor_cores": 32,
            "processor_cpus": 2,
            "processor_threads": 64,
            "region": "eu-west-2",
            "score_mean": 68164.1764705882,
            "score_p_50": 68272.5,
            "score_p_75": 68633.75,
            "score_p_90": 69021.2,
            "target_score": 56691
        },
        {
            "cpu": 64,
            "instance_type": "i3.16xlarge",
            "memory": 524,
            "notes": "",
            "os": "Linux",
            "price_on_demand": 5.664,
            "price_one_year_commit": 3.898,
            "price_one_year_full_commit": -1,
            "price_one_year_partial_commit": 1.841,
            "price_per_unit": 5.664,
            "price_private_on_demand": -1,
            "price_private_one_year_full_commit": -1,
            "price_private_one_year_partial_commit": -1,
            "price_private_three_year_full_commit": -1,
            "price_private_three_year_partial_commit": -1,
            "price_spot": -1,
            "price_sustained_use_100": 5.664,
            "price_sustained_use_25": 5.664,
            "price_sustained_use_50": 5.664,
            "price_sustained_use_75": 5.664,
            "price_three_year_commit": 2.765,
            "price_three_year_full_commit": 62964,
            "price_three_year_partial_commit": 1.274,
            "processor_cores": 32,
            "processor_cpus": 2,
            "processor_threads": 64,
            "region": "ap-south-1",
            "score_mean": 68164.1764705882,
            "score_p_50": 68272.5,
            "score_p_75": 68633.75,
            "score_p_90": 69021.2,
            "target_score": 56691
        },
        ....
        ]
}