Systems
Systems
#340420
Description
Resource
/systems
Supported Operations
Table: Systems Supported Operations
Operation |
HTTP Method |
Input |
Output |
Description |
Get Collection |
GET /systems |
Query String Parameter Options: |
Collection of Response elements |
Used to return configuration and attribute information of systems (of supported type) that are being tracked under recent data collection activity. Example: Getting a Collection of VMware Systems using Attribute Filters |
Get Individual Systems |
GET /systems/<id> |
Path Parameter:
|
Response elements |
Used to return configuration and attribute information for a system specified by id. The system returned is being tracked under recent data collection activity and must be one of the supported system type. |
Get System's Instance Type Details |
GET /systems/<id>/analysis-details |
Path Parameter:
|
ResponseJSON structure for each supplied system ID. |
Used to provide instance type details of the specified system as well as details of the optimal instance for this workload. Additional targets are listed based on the optional spend and effort tolerance parameters. |
Get Report PDF |
GET /systems/<id>/analysis-report |
Path Parameter:
|
Used to obtain the Impact Analysis and Recommendation Report (also known as the Application Owner report). See Viewing the Impact Analysis and Recommendation Report (Help Topic ID 380450) for details on the content of the report. Use Accept : application/octet-stream in the request header to download the PDF file. Example: Downloading an Impact Analysis and Recommendation Report |
|
Modify System Attributes |
PUT /systems/<id>/attributes |
Path Parameter:
array of attributes |
Response elements with attributes modified |
Used to modify the values of a system’s attributes. If attribute name corresponds to an existing set attribute in the system, then the attribute's value will be updated to value. If attribute name is not set in the system, then the [name,value] tuple will be added to the system's attribute array. For multi-value attributes (i.e. "Multiple Values" property is enabled for the attribute), a PUT request for that attribute will append the new [name,value] pair to the attribute array, if that attribute [name,value] pair does not exist. To overwrite a multi-value attribute value, you will first need to delete the existing attribute value. |
Delete System Attributes |
DELETE /systems/<id>/attributes |
Path Parameter:
array of attributes or
|
Response elements with attributes deleted |
Used to delete attributes from an individual system given the attribute ID-value [id,value] pair or attribute [id]. If the attribute [id,value] pair is provided, the attribute will be deleted only if the attribute [id] and corresponding [value] matched the one found in the system. For multi-value attributes (i.e. "Multiple Values" property is enabled for the attribute), a DELETE request with only attribute [id] provided will delete all the values with that attribute ID; a DELETE request with [id,value] pair provided will delete only the attribute ID entry with that specific value. |
Table: Systems Path Parameters
Parameter Name |
Type |
Description |
string |
The Densify unique referenced ID of the system. |
Table: Systems Request Body Parameters (Array of [id, name, value] attributes)
Parameter Name |
Type |
Description |
string |
The unique ID for the attribute in Densify. System attributes are properties set by a data collection from a vendor platform or by Densify for control analytics. The system's attributes array contains attribute elements, stored as an [id, name, value] triple in the system's attributes array. |
|
string |
The name of the attribute corresponding to the id and value attribute tuple. |
|
string |
The value of the attribute corresponding to the id and name attribute tuple. |
The following query string parameter options are available to the /systems resource:
You can order the returned collection by name or by memory size using the sort_by option. See Sort By for an overview of the Sort By option.
Supported Sort By elements for the /systems resource are described below:
- memory
- total_physical_cpus
- cores_per_cpu
The size element is a representation of the following properties to sort by, in priority order:
This implies that if two systems have the same total memory, the total_physical_cpus count is considered next in the sort logic; and if the physical CPU count is the same, the next property to consider for sorting is the cores_per_cpu count. By default, the returned sort_by=size collection is ordered in ascending (asc) order. Specify desc for descending order. For example:
GET /systems/?sort_by=size,desc
Systems with any "_Unknown_" values are sorted at the end of the collection independent of the specified sort order.
The returned collection is sorted by the system's name element in ascending alphabetical order. Specify desc for descending alphabetical order.
If you specify the Paging option, the returned collection will be sorted by name in ascending order automatically. For example, the following two requests will return the same result (i.e. page two of the collection in ascending name order):
GET /systems/?page=1
GET /systems/?sort_by=name&page=1
By default, all the attributes with set values for each system in the collection are returned (which is the attributes_mode=On option). You can suppress the attributes of the returned collection by using the attributes_mode=Off option. For instance, if you want to return a collection of AWS systems without displaying their attributes, specify the following request:
GET /systems/?platform=aws&attributes_mode=Off
When you filter by attribute in your request, the attributes_mode=Off is disabled and all the set attributes are returned regardless if you provide the attribute_mode=Off option. For instance, if you provide the following request, the set attributes for the returned collection are displayed:
GET /systems/?attribute_name_value=Department,Finance&attributes_mode=Off
By default, all the attributes with set values for each system in the collection are returned. You can choose to return only specific attribute categories of the requested collection by using the setdisplay_category option. For instance, if you want to return a collection of AWS systems, but only display Business and Transformation attributes with set values, specify the following request:
GET /systems/?platform=aws&setdisplay_category=Business,Transformation
The /systems endpoint supports the following elements as filters for returning a subset of the collection:
-
attributes **
-
platform *
These filters are also denoted by "F" in the Filter column of the Systems Response schema table. Refer to Filters for a complete description of the Filters feature.
Element filters denoted with * support multiple values input. You can provide a list of values, separated by a comma between values, to logically OR a list of possible values for an element. For example, the following request will return all systems from AWS, Azure, or GCP:
GET /systems/?platform=aws,azure,gcp
Refer to Filters for a description of the Multiple Values filtering.
System attributes filtering extends the standard multiple values filtering support (denoted by **) with multiple attribute name, ID, and value combinations. See Attribute Filters - Multiple Values Support for further details.
Note: When filtering with values which include spaces or "+", use URL encoding . See Filters for details on special character support.
Attribute Filters - Multiple Values Support
Systems attributes supports the following filtering features:
-
A single value for attribute_name_like element filter—A collection of systems is returned with attribute names containing the sub-string provided. You can use the '%' character to match zero or more characters. For example, the request below returns systems with attribute values set for attribute names containing the sub-string "east":
GET /systems/?attribute_name_like=east
-
Multiple attribute IDs for element filter attribute_id—The list of provided attribute IDs are matched to the system's set attributes and results are logically OR'ed to produce the returned collection. For example, the request below returns systems with set values for attribute IDs attr_5, attr_6, or attr_7:
GET /systems/?attribute_id=attr_5,attr_6,attr_7
-
Multiple attribute names for element filter attribute_name—The list of provided attribute names are matched to the system's set attributes and results are logically OR'ed to produce the returned collection. For example, the request below returns systems with set values for attribute names Department or Resource Group:
GET /systems/?attribute_name=Department,Resource+Group
-
Multiple attribute ID-value criteria for the element filter attribute_id_value—Existing systems which match all of the provided attribute ID-value pairs (separated by semicolon) are returned. The format of this attribute ID-value criteria filter request is as follows:
GET /systems/?attribute_id_value=<attr1_id,attr1_value;attr2_id,attr2_value;attr3_id,attr3_value,...>
The results of matching attribute ID-value pairs are logically AND'ed to produce the returned collection. For example, the systems returned for the request below have
-
attr_Application = "General" AND
-
CLD.BUSINESS.UNIT = "Support" AND
-
attr_OperationalEnvironment = "Production"
GET /systems/?attribute_id_value=attr_Application,General;CLD.BUSINESS.UNIT,Support;attr_OperationalEnvironment,Production
-
-
Multiple attribute name-value criteria for the element filter attribute_name_value—Existing systems which match all of the provided attribute name-value pairs (separated by semicolon) are returned. The format of this attribute name-value criteria filter request is below:
GET /systems/?attribute_name_value=<attr1_name,attr1_value;attr2_name,attr2_value;attr3_name,attr3_value,...>
The results of matching attribute name-value pairs are logically AND'ed to produce the returned collection. For example, the systems returned for the request below have "debian-8-jessie" as their License model AND "Disk-AB21" as their disk name:
GET /systems/?attribute_name_value=License+model,debian-8-jessie;Disk+Name,Disk-AB21
Note: When you use attributes for filtering a collection, the attributes_mode=Off feature is disabled. See Attributes On/Off Mode for details.
The following is a complete list of possible response elements that are returned for the /systems resource. If the response element does not apply to the system returned, then the element is not displayed in the results.
Table: Systems Response Schema
Element |
Type |
Mod |
Filter/Sort |
Description |
strings |
|
F by S by name |
See ID, Name and Self Reference (id, name, href). To filter systems with names that contain a given input string, use ?name_like="<substring>" in your collection request. The '%' character can be used to match zero or more characters. Example: Getting a Collection of Azure Systems with Name "*test*" |
|
strings |
|
F |
The unique system ID assigned by the cloud provider. To search for a system with a particular cloud provider ID, use ?resource_id=<cloud_id> in your request. Example: Getting Public Cloud Attributes for an Individual System |
|
[id, name, value] |
M |
F by
|
System attributes are properties set by an audit from a vendor platform or by Densify for control analytics. On a GET request, only those attributes that have values are returned. To hide the set attributes, use the attributes_mode=Off option. See Attributes On/Off Mode for details. To only return set attributes in specific categories, use the setdisplay_category option. See Attribute Display Categories for details. To filter based on attributes, you must use one of the following element options — in each case, system data will be returned only if the attributes selected have values assigned to them:
Refer to Attribute Filters - Multiple Values Support for a description of how to use these attribute filters. Note that when you use attributes to filter the collection, the attributes_mode=Off feature is disabled. Example: Getting a Collection of VMware Systems using Attribute Filters Example: Getting Public Cloud Attributes for an Individual System |
|
children |
string |
|
The number of other systems that are considered "children" of the current system. For a host system (i.e. "type": "host"), this is the number of VMs the host system has (e.g. "children": "10"). For AWS ASGs (i.e. "type" : "asg"), this is the number of active EC2 instances that belong to the group. For other type of systems where this element does not apply, children is not returned. This element is returned for host and ASG systems only when the details=true option is in the request URI. See Collection Details. |
|
[id, name, platform_category, href, icon] |
|
F by
|
If the system is associated with a Control Environment, the environment details are returned: To filter based on Control Environment, you must use one of the following elements:
|
|
cores_per_cpu |
string |
|
Tertiary sort key for sort_by=size |
Cores per CPU for computing systems. |
cpu_benchmarks |
[name, score_type, value] |
|
|
The default CPU benchmark for applicable systems.
|
cpu_model |
string |
|
|
The CPU architecture model of the compute system. |
cpu_speed |
string |
|
|
The normalized CPU speed (MHz) of the compute system. |
entity_role_name |
string |
|
|
The entity role name that Densify assigns to the system (e.g. "VMWARE_VM") based on their platform and system role. |
entity_type |
string |
|
|
The entity type that Densify assigns to the system (e.g. "VMware ESX Guest") based on their platform and system type. |
hostId |
string |
|
|
An ID of the system provided from the data collection audit for the purpose of resolving duplication conflicts. |
I/O_benchmarks |
[name, score_type, value] |
|
The list of all available I/O benchmarks.
|
|
[id, name, href] |
|
F by infrastructure_group |
If the system is associated with an Infrastructure Group (cluster), the group details are returned:
When filtering based on Infrastructure Group, you must use the element infrastructure_group with the group name specified. |
|
ip_address |
string |
|
|
Primary IP address of the system. |
mac_address |
string |
|
|
MAC address of the system provided by the data collection audit. |
manufacturer |
string |
|
For host type systems, the manufacturer of the host is returned (e.g. "Dell", "IBM"). For cloud systems, the vendor platform is returned (e.g. "GCP") or "CONTAINERS" is returned for container type systems. This element is returned only when the details=true option is in the request URI. See Collection Details. |
|
memory |
string |
|
S by size |
The normalized total memory (MB) for the system. |
os |
string |
|
|
Operating System name of the host or VM instance. This element is returned only when the details=true option is in the request URI. See Collection Details |
os_patch_level |
string |
|
|
Operating System patch level of the host or VM instance. |
os_version |
string |
|
|
Operating System version of the host or VM instance. |
parent |
string |
|
Logical parent of the current system. For a host system (i.e. "type": "HOST"), this does not apply (i.e. "parent": "N/A"). For a VM, this is the name of the parent host system (e.g. "parent": "esx-host-221"). |
|
string |
|
F |
The platform of the system. Use this element to filter systems from the various supported platforms:
For example, use platform=azure to return a collection of Azure cloud systems. See Example: Getting a Collection of Azure Systems with Name "*test*". |
|
platform_model |
string |
|
|
For host systems, the host system model is returned. For cloud instance systems, the instance type is returned. |
serial_number |
string |
|
|
The serial number of the system from the vendor. |
size |
hidden element |
|
S by size |
This element is used to sort a collection by size. See Sorting for details. |
total_logical_cpus |
string |
|
The total number of logical CPUs for the system. |
|
total_physical_cpus |
string |
|
Secondary sort key for sort_by=size |
The total number of physical CPUs for the system. |
threads_per_core |
string |
|
The threads per core for the system. |
|
string |
|
F |
The type of system. The supported types of systems for the /systems resource include:
|
Note: IBM Power systems returned by the /systems endpoint are the ones created in Densify from the HMC 8 data collection method. Refer to Data Collection for IBM PowerVM Systems for HMC 8 (Help Topic ID 220170) for details.
Examples
Example: Getting a Collection of Azure Systems with Name "*test*"
The following example shows you how to retrieve a collection of systems from the Azure cloud platform with a name containing "test".

Request:
GET /systems/?platform=azure&name_like=test
Response:
[
{
"id": "5da2be9c-3915-46df-a127-387e837a0697",
"name": "esx-test-274",
"href": "/systems/5da2be9c-3915-46df-a127-387e837a0697",
"resource_id": "esx-test-274",
"type": "classic_vm",
"platform_model": "standard_a0",
"platform": "AZURE",
"total_physical_cpus": "1",
"cores_per_cpu": "1",
"memory": "768",
"infrastructure_group": {
"id": "c55e12ae-d568-427b-997d-1d5c54065a2d",
"name": "eastus-test-vm",
"href": "/infrastructure-groups/c55e12ae-d568-427b-997d-1d5c54065a2d"
},
"control_environment": {
"id": "da70ab94-cea1-4a8a-83d7-c26a675ce650",
"name": "cc377154-9605-4cb0-8b41-1b39e1c4ac0f",
"platform_category": "External Cloud",
"href": "/control-environments/da70ab94-cea1-4a8a-83d7-c26a675ce650",
"icon": "/control-environments/da70ab94-cea1-4a8a-83d7-c26a675ce650/icon"
},
"attributes": [
{
"id": "attr_azure_resource_group",
"name": "Resource Group",
"value": "test-vm"
},
{
"id": "attr_azure_tenant_id",
"name": "Tenant ID",
"value": "6c9190a7-bca6-4fcd-b35e-36378aadc695"
},
// ... *SNIP* ... additional attributes not displayed ... *SNIP* ...
]
},
{
"id": "0e580bbb-9c21-49ff-b3df-729e80e26558",
"name": "TestVMTestSub",
"href": "/systems/0e580bbb-9c21-49ff-b3df-729e80e26558",
"resource_id": "TestVMTestSub",
"type": "arm_vm",
"platform_model": "basic_a0",
"platform": "AZURE",
"total_physical_cpus": "1",
"cores_per_cpu": "1",
"memory": "768",
"infrastructure_group": {
"id": "30030e26-f5f3-431c-9d21-79e499ec763b",
"name": "eastus+testresourcegroup",
"href": "/infrastructure-groups/30030e26-f5f3-431c-9d21-79e499ec763b"
},
"control_environment": {
// ... *SNIP* ... control_environment elements ... *SNIP* ...
},
"attributes": [
{
"id": "attr_2",
"name": "Department",
"value": "IT"
},
{
"id": "attr_azure_resource_group",
"name": "Resource Group",
"value": "testresourcegroup"
},
// ... *SNIP* ... additional attributes not displayed ... *SNIP* ...
]
},
// ... *SNIP* ... additional Azure systems not displayed ... *SNIP* ...
]
Example: Getting a Collection of Sorted GCP Systems, Displaying One Page
This example shows you how to retrieve a collection of GCP systems, sorted by memory size in ascending order and only displaying the second page (note that page=0 is the first page).

Request:
GET /systems/?platform=gcp&sort_by=size&page=1&page_size=1
Example: Getting a Filtered Collection of Systems
This example shows you how to retrieve a collection of systems filtered by platform and cluster.

Request:
GET /systems/?platform=aws&infrastucture_group=us-east-1b&platform_category=External+Cloud
Response:
[
{
"id": "007c3e76-9d76-45ec-b8b6-16fcc493121e",
"name": "007c3e76-9d76-45ec-b8b6-16fcc493121e",
"href": "/systems/007c3e76-9d76-45ec-b8b6-16fcc493121e",
"resource_id": "i-036ddcaa03393444b",
"type": "vm",
"platform_model": "c4.2xlarge",
"platform": "AWS",
"total_physical_cpus": "8",
"cores_per_cpu": "1",
"memory": "16512",
"infrastructure_group": {
"id": "7393175f-cb71-4a1c-9f17-55a94a98f752",
"name": "us-east-1b",
"href": "/infrastructure-groups/7393175f-cb71-4a1c-9f17-55a94a98f752"
},
"control_environment": {
"id": "d96431b4-99f3-43c0-98d6-609a4b80f0dd",
"name": "us-east-manual",
"platform_category": "External Cloud",
"href": "/control-environments/d96431b4-99f3-43c0-98d6-609a4b80f0dd",
"icon": "/control-environments/d96431b4-99f3-43c0-98d6-609a4b80f0dd/icon"
},
"attributes": [
{
"id": "attr_BasePerformanceCINT2006Rate",
"name": "Base Performance CINT2006Rate",
"value": "0.021513293"
},
// ... *SNIP* ... additional attributes not displayed ... *SNIP* ...
]
},
// ... *SNIP* ... additional filtered AWS systems not displayed ... *SNIP* ...
]
Example: Getting a Collection of VMware Systems using Attribute Filters
This example shows you how to retrieve a collection of systems with platform "VMware" using attribute name-value pairs as filters.

Request:
GET /systems/?platform=vmware&attribute_name_value=Virtual+Domain,L2-Production-Supp;Virtual+Cluster,us-central-3b
Example: Getting an Individual Host System
This example shows you how to retrieve an individual host system by ID.

Request:
GET /systems/0a098816-7120-4c67-a897-c227f8c2d750
Response:
{
"id": "0a098816-7120-4c67-a897-c227f8c2d750",
"name": "esx-host-274",
"href": /existing-systems/0a098816-7120-4c67-a897-c227f8c2d750,
"resource_id": "ba-5fdd-228",
"type": "HOST",
"os": "VMware",
"os_version": "ESX Server 4.0.0"",
"os_patch_level": "N/A",
"manufacturer": "HP",
"platform_model": "ProLiant DL585 G6",
"platform": "VMWARE,
"serial_number": "N/A",
"hostId": "N/A",
"entity_type": "VMWare ESX Host",
"parent": "N/A",
"children": "13",
"entity_role_name": "VMWARE_HOST",
"cpu_model": "AMD Opteron 8435",
"total_logical_cpus": "12",
"total_physical_cpus": "2",
"cores_per_cpu": "6",
"threads_per_core": "1",
"cpu_speed": "2600",
"memory": "98304",
"ip_address": "192.163.117.108",
"mac_address": "BC:20:65:17:39:89",
"cpu_benchmarks": [
{
"name": "CINT2006 Rate",
"score_type": "cint2006rate",
"value": 160
}
],
"I/O_benchmarks": [
{
"name": "Maximum Disk Throughput (bytes/s)",
"score_type": "disk",
"value": 250000000
},
{
"name": "Maximum Network Throughput (bytes/s)",
"score_type": "net",
"value": 150000000
},
],
"infrastructure_group": {
"id": "94edf69b-08ca-41e6-ba2c-3d6be186ca60",
"name": "Prod_BIPS-01",
"href": "/infrastructure-groups/94edf69b-08ca-41e6-ba2c-3d6be186ca60"
},
"control_environment": {
"id": "26092815-9d17-4e6a-abbd-f5b05a853bff",
"name": "Boston",
"platform_category": "Internal Virtual",
"href": "/control-environments/26092815-9d17-4e6a-abbd-f5b05a853bff",
"icon": "/control-environments/26092815-9d17-4e6a-abbd-f5b05a853bff/icon"
}
}
Example: Getting an Individual Guest System
This example shows you how to retrieve an individual guest system by name.

Request:
GET /systems/?name=win-vm-2319&details=true
Response:
{
"id": "002922ea-48dc-4c74-9bd1-a718d6afbe05",
"name": "win-vm-2319",
"href": /existing-systems/002922ea-48dc-4c74-9bd1-a718d6afbe05,
"resource_id": "bc-a922-823",
"type": "GUEST",
"os": "Windows",
"os_version": "Server 2012",
"os_patch_level": "N/A",
"manufacturer": "VMware",
"platform_model": "N/A",
"platform": "VMWARE,
"serial_number": "4221413de2b2b78da3c678ad5d1a46c5",
"hostId": "N/A",
"entity_type": "VMWare ESX Guest",
"parent": "esx-host-221",
"children": "N/A",
"entity_role_name": "VMWARE_VM",
"cpu_model": "N/A",
"total_logical_cpus": "1",
"total_physical_cpus": "1",
"cores_per_cpu": "1",
"threads_per_core": "1",
"cpu_speed": "2666",
"memory": "98304",
"ip_address": "192.163.116.37",
"mac_address": "BC:20:D4:8A:0C:97",
"cpu_benchmarks": [
{
"name": "CINT2006 Rate",
"score_type": "cint2006rate",
"value": 27.1933
}
],
"I/O_benchmarks": [
{
"name": "Maximum Disk Throughput (bytes/s)",
"score_type": "disk",
"value": -1
},
{
"name": "Maximum Network Throughput (bytes/s)",
"score_type": "net",
"value": -1
},
],
"infrastructure_group": {
"id": "8a0c1b4e-85bd-422b-ac83-dfdf360619b4",
"name": "Production Apps1",
"href": "/infrastructure-groups/8a0c1b4e-85bd-422b-ac83-dfdf360619b4"
},
"control_environment": {
"id": "0a32351d-7a82-43c6-959a-abbc8700ad15",
"name": "New York",
"platform_category": "Internal Virtual",
"href": "/control-environments/0a32351d-7a82-43c6-959a-abbc8700ad15",
"icon": "/control-environments/0a32351d-7a82-43c6-959a-abbc8700ad15/icon"
}
}
Example: Downloading an Impact Analysis and Recommendation Report
The following example shows you how to download a PDF version of the Impact Analysis and Recommendation Report for your public cloud (AWS, Azure, GCP) or private cloud (VMware, IBM PowerVM) instances. The report is available after the Densify analysis generates the right-sizing recommendations and rdb-populate has run to completion.
Note: HTTPS needs to be enabled to download the Impact Analysis and Recommendation Report PDF.
You need to save the file (Save Response) and then open it in a PDF reader.
You must disable the default Accept key value "*/" for Headers.
Example: Modifying a System’s Attributes
The following example shows you how to modify system attributes.

Request:
PUT /systems/0060ed45-6f83-4d74-9ff6-7a359e206428/attributes
[
{"name": "Observed Uptime", "value": "0.33"},
{"name": "Cost", "value": "17"}
]
Response:
[
// ... *SNIP* of other elements ...
"attributes": [
// ... *SNIP* of other attributes ...
{
"id": "attr_ObservedUptime",
"name": "Observed Uptime",
"value": "0.33"
},
{
"id": "attr_Cost",
"name": "Cost",
"value": "17"
},
// ... *SNIP* of other attributes ...
]
// ... *SNIP* of other elements ...
Example: Deleting a System’s Attributes
The following example shows you how to delete a system's attr_3 attribute if it has value "0.3", and remove set values of attr_10 and attr_11.

Request:
DELETE /systems/0060ed45-6f83-4d74-9ff6-7a359e206428/attributes
[
{"id": "attr_3", "value": "0.3"},
{"id": "attr_10"},
{"id": "attr_11"}
]
Example: Getting Public Cloud Attributes for an Individual System
The following example shows you how request information for a system based on the cloud provider's system ID (resource_id) and only show Public Cloud category attributes with set values.

Request:
GET /systems/?resource_id=i-00bc69701199bd58&setdisplay_category=Public+Cloud