Resource-specific APIs
This section includes resource specific APIs with examples.
- Restart OS
- Import VM by IDs
- Import VM by Name
- Create snapshots
- Revert to snapshot
- Delete a snapshot
- Revert to current snapshot
- Get snapshots
- Taint a resource from a stack
- Untaint a resource from a stack
- Retrieve and change power states for resources
- Start a virtual machine
- Stop a virtual machine
- Reset virtual machine
- Get the status of a stopping or starting a virtual machine
- Retrieve all IaaS resource settings
- Retrieve a specific IaaS resource settings
- Create IaaS resource settings
- Update IaaS resource settings
- Delete IaaS resource settings
Note: There are three possible statuses for a resource task:
- IN_PROGRESS
- SUCCESS
- FAILED
Restart OS
The API call restarts the OS. It is available only for VMware vSphere virtual machine actions. The option is enabled only when the virtual machine powerstate is ON.
Note: The virtual machineresource.id can be retrieved from the update the state of the template instance API.
curl -k -X POST \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"task_name":"restart"}' \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresources/${CAM_RESOURCE_ID}/tasks?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
POST method.
Body:{ "task_name: "restart" }
Example response:
{
"cloud_resource_id": "421ac557-7793-fdd5-7b83-c3525571abfe",
"task_name": "restart",
"status": "IN_PROGRESS",
"created": "2017-11-13T16:47:58.298Z",
"updated": "2017-11-13T16:47:58.298Z",
"stack_id": "7d55d130-c239-11e7-b95f-c5cc4d245984",
"resource_id": "59ff272d4ba47e0020cb6583",
"resource_name": "vsphere_virtual_machine.vm_1",
"id": "5a09ccbe9fe5890020316467"
}
Import VM by IDs
Imports an existing virtual machine by using the ID. You can view stack instance in the template deployed instances page.
https://${TSA_HOSTNAME}/cam/api/v1/stacks/import?tenantId=${TSA_TENANT_ID}&cloudOE_spaceGuid=${NAMESPACE}
POST method
For example, import a virtual machine's resources that are available in stack "fit-vm17-76":
Body
{
"name": "fit-vm17-76",
"cloudConnectionId": "5a8983938f22883ee775"
"templateId": "5b39493e3984938943eb8b6",
"templateVersionId: "5b39493e3984938943eb8c5",
"idFromProvider": "/Rack-8283_1000167/vm/shared/fit-vm17-76"
}
Where,
nameis the name of the stack.cloudConnectionIdis the ID of the connection where the virtual machine can be found. Use the credentials used in that cloud to find the virtual machine.templateIdis to associate a template to a stack instance server.templateVersionIdis the version of the template. It is an optional parameter.idFromProvideris the id of the virtual machine. The format differs for PowerVC and OpenStack.resourceNameis an optional parameter. If resourceName is set, then you can import from providers other than vSphere and OpenStack. If you do not use this parameter, then the default values are as follows:- openstack_compute_instance_v2.vm_1 for OpenStack instances
- vsphere_virtual_machine.vm_1 for VMWare vSphere instances
Import VM by Name
Imports an existing virtual machine by using the name. You can view the stack instance in the template deployed instances page.
https://${TSA_HOSTNAME}/cam/api/v1/stacks/import?tenantId=${TSA_TENANT_ID}&cloudOE_spaceGuid=${NAMESPACE}
POST method
For example, import a virtual machine resource from stack "fit-vm17-76":
Body
{
"name": "fit-vm17-76",
"cloudConnectionName": "fit3",
"templateName": "Import existing VM with a single disk - VMware vSphere",
"templateVersionName": "1.0",
"idFromProvider": "/Rack-8283_1000167/vm/Shared/fit-vm17-76"
}
Where,
nameis the name of the stack.CloudConnectionNameis the connection name where the virtual machine can be found. Use the credentials used in that cloud to find the virtual machine.templateNameis to associate a template to a stack instance server. It can be VMware vSphere or PowerVC/OpenStack.templateVersionNameis the version of the template. It is an optional parameter.idFromProvideris the id of the virtual machine. The format differs for PowerVC and OpenStack.resourceNameis an optional parameter. If resourceName is set, then you can import from providers other than vSphere and OpenStack. If you do not use this parameter, then the default values are as follows:- openstack_compute_instance_v2.vm_1 for OpenStack instances
- vsphere_virtual_machine.vm_1 for VMWare vSphere instances
Create snapshot
This API creates a virtual machine snapshot for a VMware instance.
Note: The virtual machine resource.id can be retrieved from the update the state of the template instance API.
Sample URL:
curl -k -X POST \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"task_name":"snapshot", "parameters": [ \
{ \
"name": "snapshot_name", \
"value": ${SNAPSHOT_NAME} \
}, \
{ \
"name": "quiesce", \
"value": true || false \
}, \
{ \
"name": "memory", \
"value": true || false \
}, \
{ \
"name": "description", \
"value":${DESCRIPTION} # Optional \
} \
]}' \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresources/${CAM_RESOURCE_ID}/tasks?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
POST method
BODY:
{
"task_name": "snapshot",
"parameters": [
{
"name": "snapshot_name",
"value": "NAME"
},
{
"name": "quiesce",
"value": false
},
{
"name": "memory",
"value": false
},
{
"name": "description",
"value": "DESCRIPTION"
}
]
}
Note:
- The long ID in the URL after
iaasResourcesis the RESOURCE_ID or the ID of the virtual machine. - The description is an optional parameter.
Revert to a snapshot
This API reverts to the selected snapshot.
Note:
- The virtual machine
resource.idcan be retrieved from the update the state of the template instance API. - The
snapshot_idcan be retrieved from the Get snapshots API.
curl -k -X POST \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"task_name":"revertToSnapshot", "parameters": [ \
{ \
"name": "snapshot_id", \
"value": ${SNAPSHOT_ID} \
} \
]}' \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresources/${CAM_RESOURCE_ID}/tasks?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
POST method
Sample BODY:
{
"task_name": "revertToSnapshot",
"parameters": [
{
"name": "snapshot_id",
"value": "snapshot-19477"
}
]
}
Note: The long ID in the URL after iaasResources is the RESOURCE_ID or the ID of the virtual machine.
Delete snapshot
This API deletes the selected snapshot.
Note:
- The virtual machine
resource.idcan be retrieved from the update the state of the template instance API. - The
snapshot_idcan be retrieved from the Get snapshots API.
Sample URL:
curl -k -X POST \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" -d '{"task_name":"deleteSnapshot", "parameters": [ \
{ \
"name": "snapshot_id", \
"value": ${SNAPSHOT_ID} \
} \
]}' "https://${TSA_HOSTNAME}/cam/api/v1/iaasresources/${CAM_RESOURCE_ID}/tasks?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
POST method
Sample BODY:
{
"task_name": "deleteSnapshot",
"parameters": [
{
"name": "snapshot_id",
"value": "snapshot-19477"
}
]
}
Note: The long ID in the URL after iaasResources is the RESOURCE_ID or the ID of the virtual machine.
Revert to current snapshot
This API restores to the parent snapshot of the current state of a virtual machine.
Note: The virtual machine resource.id can be retrieved from the update the state of the template instance API.
curl -k -X POST \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" -d '{"task_name":"revertToCurrent"}' \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresources/${CAM_RESOURCE_ID}/tasks?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
Sample URL:
https://cam-proxy/cam/api/v1/iaasresources/5c47740ef76392001eb4d073/tasks
POST method
BODY:
{
"task_name": "revertToCurrent"
}
Note: The long ID in the URL after iaasResources is the RESOURCE_ID or the ID of the virtual machine.
Get snapshots
This API retrieves a list of snapshots.
Note: The virtual machine resource.id can be retrieved from the update the state of the template instance API.
curl -k -X GET \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Accept: application/json" \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresources/${CAM_RESOURCE_ID}/query/getsnapshots?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
Sample URL:
https://cam-proxy/cam/api/v1/iaasresources/5c47740ef76392001eb4d073/query/getsnapshots
GET method
Note: The long ID in the URL after iaasResources is the RESOURCE_ID or the ID of the virtual machine.
Taint a resource from a stack
Note: The virtual machine resource.id can be retrieved from the update the state of the template instance API.
export CAM_RESOURCE_ID=<resource.id>
Note: The resource.id can be retrieved from Update state of template instance POST /stacks/id/retrieve call.
curl -k -X POST \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Accept: application/json" \
"https://${TSA_HOSTNAME}/cam/api/v1/stacks/${CAM_TEMPLATE_ID}/taint/${CAM_RESOURCE_ID}?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
Example output:
{
"name": "vSphere95",
"created_at": "2018-01-10T18:35:52.140Z",
"templateId": "5a4fe8f98bec4000200dc310",
"namespaceId": "default",
"templateName": "SingleVirtualMachine",
"templateCategory": "userCreated",
"templateProvider": "IBM",
"template_type": "Terraform",
"applied_state_id": "5a565d4d8bec4000200dc32f",
"latest_state_id": "5a56600a8bec4000200dc331",
"cloud_connection_ids": [
"5a3035908bec4000200dc30d"
],
"id": "5a565d088bec4000200dc32c",
"tenantId": "cd3ed377-8167-4078-b486-309b1f237928",
"status": "IN_PROGRESS",
"message": "",
"action": "TAINT",
"stack_id": "1616c4e0-f635-11e7-b2c8-2b0dbae0c060",
"applied_status": "SUCCESS",
"applied_action": "APPLY",
"data": {
"stack_id": "1616c4e0-f635-11e7-b2c8-2b0dbae0c060",
"stack_job_id": "5a56600a035d8000204e8f27",
"stack_job_is_latest": true,
"action": "TAINT",
"status": "IN_PROGRESS",
"tenantId": "cd3ed377-8167-4078-b486-309b1f237928"
}
}
Untaint a resource from a stack
Note: The virtual machine resource.id can be retrieved from the update the state of the template instance API.
curl -k -X POST \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Accept: application/json" \
"https://${TSA_HOSTNAME}/cam/api/v1/stacks/${CAM_TEMPLATE_ID}/untaint/${CAM_RESOURCE_ID}?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
Example output:
{
"name": "vSphere95",
"created_at": "2018-01-10T18:35:52.140Z",
"templateId": "5a4fe8f98bec4000200dc310",
"namespaceId": "default",
"templateName": "SingleVirtualMachine",
"templateCategory": "userCreated",
"templateProvider": "IBM",
"template_type": "Terraform",
"applied_state_id": "5a565d4d8bec4000200dc32f",
"latest_state_id": "5a56618b8bec4000200dc332",
"cloud_connection_ids": [
"5a3035908bec4000200dc30d"
],
"id": "5a565d088bec4000200dc32c",
"tenantId": "cd3ed377-8167-4078-b486-309b1f237928",
"status": "IN_PROGRESS",
"message": "",
"action": "UNTAINT",
"stack_id": "1616c4e0-f635-11e7-b2c8-2b0dbae0c060",
"applied_status": "SUCCESS",
"applied_action": "APPLY",
"data": {
"stack_id": "1616c4e0-f635-11e7-b2c8-2b0dbae0c060",
"stack_job_id": "5a56618b035d8000204e8f28",
"stack_job_is_latest": true,
"action": "UNTAINT",
"status": "IN_PROGRESS",
"tenantId": "cd3ed377-8167-4078-b486-309b1f237928"
}
}
Retrieve and change power states for resources
This API retrieves and changes power states for resources.
Note: The virtual machine resource.id can be retrieved from the update the state of the template instance API.
curl -k -X GET \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Accept: application/json" \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresources/${CAM_RESOURCE_ID}/query/getPowerState?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
GET method
Response: {
"poweredOn": true || false
}
Start a virtual machine
Note: The virtual machine resource.id can be retrieved from the update the state of the template instance API.
curl -k -X POST \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"task_name":"start"}' \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresources/${CAM_RESOURCE_ID}/tasks?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
Example response
{
"cloud_resource_id": "421ac557-7793-fdd5-7b83-c3525571abfe",
"task_name": "start",
"status": "IN_PROGRESS",
"created": "2017-11-13T16:51:37.972Z",
"updated": "2017-11-13T16:51:37.972Z",
"stack_id": "7d55d130-c239-11e7-b95f-c5cc4d245984",
"resource_id": "59ff272d4ba47e0020cb6583",
"resource_name": "vsphere_virtual_machine.vm_1",
"id": "5a09cd999fe5890020316468"
}
Stop a virtual machine
export CAM_RESOURCE_ID=<resource.id>
Note: The virtual machine resource.id can be retrieved from the update the state of the template instance API.
curl -k -X POST \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"task_name":"stop"}' \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresources/${CAM_RESOURCE_ID}/tasks?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
Example response
{
"cloud_resource_id": "421ac557-7793-fdd5-7b83-c3525571abfe",
"task_name": "stop",
"status": "IN_PROGRESS",
"created": "2017-11-13T16:47:58.298Z",
"updated": "2017-11-13T16:47:58.298Z",
"stack_id": "7d55d130-c239-11e7-b95f-c5cc4d245984",
"resource_id": "59ff272d4ba47e0020cb6583",
"resource_name": "vsphere_virtual_machine.vm_1",
"id": "5a09ccbe9fe5890020316467"
}
Reset a virtual machine
You can reset and restart a VMware virtual machine.
Note: The virtual machine resource.id can be retrieved from the update the state of the template instance API.
curl -k -X POST \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"task_name":"reset"}' \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresources/${CAM_RESOURCE_ID}/tasks?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
Example response
{
"cloud_resource_id": "421ac557-7793-fdd5-7b83-c3525571abfe",
"task_name": "reset",
"status": "IN_PROGRESS",
"created": "2017-11-13T16:47:58.298Z",
"updated": "2017-11-13T16:47:58.298Z",
"stack_id": "7d55d130-c239-11e7-b95f-c5cc4d245984",
"resource_id": "59ff272d4ba47e0020cb6583",
"resource_name": "vsphere_virtual_machine.vm_1",
"id": "5a09ccbe9fe5890020316467"
}
Get the status of a stopping or starting a virtual machine
export CAM_IAASTASK_ID=<response.id>
curl -k -X GET \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Accept: application/json" \
-d '{"task_name":"stop"}' \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresources/${CAM_RESOURCE_ID}/tasks/${CAM_IAASTASK_ID}?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
Example response:
{
"cloud_resource_id": "421ac557-7793-fdd5-7b83-c3525571abfe",
"task_name": "stop",
"status": "SUCCESS",
"created": "2017-11-13T16:47:58.298Z",
"updated": "2017-11-13T16:48:03.728Z",
"stack_id": "7d55d130-c239-11e7-b95f-c5cc4d245984",
"resource_id": "59ff272d4ba47e0020cb6583",
"resource_name": "vsphere_virtual_machine.vm_1",
"message": "",
"id": "5a09ccbe9fe5890020316467"
}
Retrieve all IaaS resource settings
This API allows you to get all Terraform resource settings.
curl -k -X GET \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresourcesettings?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
Note: The cloudOE_spaceGuid query parameter is optional and the search results display all IaaS resource settings that ${NAMESPACE} resolves to.
Retrieve a specific IaaS resource settings
This API allows you to show the details about a Terraform resource setting.
curl -k -X GET \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresourcesettings/${IAAS_RESOURCE_SETTINGS_ID}?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
Create IaaS resource settings
This API allows an administrator to hide specific information about the Terraform resource.
curl -k -X POST \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Content-Type: application/json" \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresourcesettings?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}" \
-d '{
"type": "aws_virtual_machine",
"attributes": ["cpu_reservation", "guest_ip_addresses"],
"hidden": true
}'
This example hides two attributes from all the aws_virtual_machine resources. In case you want to hide all the attributes from all the resource types, create an IaaS resource settings with type as __all__.
Request body parameters:
type- the provider resource type (that is, vpshere_virtual_machine). This is not the resource name.attributes- list of attributes to be hidden. This parameter is optional. In case it is omitted, all the attributes for that specific resource type are hidden.hidden- It accepts true or false depending on whether you want to hide or show the attribute.
Note: The cloudOE_spaceGuid query parameter is optional and the IaaS resource setting is created in the namespace that ${NAMESPACE} resolves to.
Update IaaS resource settings
This API allows the cluster administrator and administrator to modify the settings for a Terraform resource type.
curl -k -X PUT \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"type": "aws_virtual_machine"}' \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresourcesettings/${IAAS_RESOURCE_SETTINGS_ID}?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"
Delete IaaS resource settings
This API allows the cluster administrator and administrator to delete settings for a Terraform resource type.
curl -k -X DELETE \
-H "Authorization: Bearer ${TSA_BEARER_TOKEN}" \
"https://${TSA_HOSTNAME}/cam/api/v1/iaasresourcesettings/${IAAS_RESOURCE_SETTINGS_ID}?tenantId=${TSA_TENANT_ID}&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}"