API Explorer
API Explorer
Introduction
What's New
Appliance Management
Application Data Management
Asset Management
Asset Metadata
Authentication and Authorization
Cloud Disaster Recovery
Compliance
Copy Management
Credentials Management
Discovery
File Level Restore
Installation
Inventory Source Management
Kubernetes Data Management
Licenses Management
Location Management
Log Management
Monitoring
Protection Policies
Recovery and Reuse Management
Remote Service
Search Clusters
Secrets Manager
Server Disaster Recovery
Storage Management
Telemetry Setting
Upgrade
User Security Management
Virtual Machine Data Management
Whitelist Management

Discover new assets

This tutorial describes how to retrieve the latest asset information. To get the assets, you start a discovery process. The following APIs are used:

POST /api/v2/discovery
GET /api/v2/activities/{id}

Discovery levels

Use the discovery level to specify discovery targets with a discovery request. When processing a discovery request, lower level discovery by default includes all its upper level discovery.

Level Level Value SMIS Sever (Storage) vCenter DDMC / PowerProtect DD Application
1 ManagementInterface SMIS details DDMC or PowerProtect DD details
2 Device, HOST (Application) VMAX under SMIS PowerProtect DD under DDMC / System level PowerProtect DD Host Level
3 ProtectableData, APPSERVER (Application) StorageGroups MTrees Instance Level
4 DataCopies SnapVX Full discovery Copies

Discovery process

Discovery can run on three types of resources:

  1. Inventory Source (index_management_interface) - used for VMware vCenter discovery
  2. Host (index_host) - used for application hosts like SQL or Oracle
  3. Storage System (index_storage_array) - used for Data Domain and other storage array systems

Request discovery

To request a discovery, use start value (resources) and discovery levels as shown in the following example. Before requesting the discovery, get the sources as the start value.

In this example, vCenter is the discovery resource. Get the UUID of vCenter by using GET /api/v2/inventory-sources.

POST /api/v2/discoveries

Post body:

{
    "start": "/inventory-sources/ebdf2d37-9dc9-40fd-bd63-02b554bfd973",
    "level": "DataCopies"
}

Sample responses:

{
  "id": "ca17fad5-f1a7-477b-8b6f-e1213490a297",
  "start": "/inventory-sources/ebdf2d37-9dc9-40fd-bd63-02b554bfd973",
  "level": "DataCopies",
  "name": "Discovery for inventory source Test vCenter",
  "description": "Discovery for inventory source VCENTER",
  "schedule": {
    "enabled": false,
    "startHour": 2,
    "startMinute": 0
  },
  "taskId": "cafe66f6-8ab0-4df7-be50-ce01d97d9383"
}

Track activities

Within the taskId (task is one type of activity) that is returned in the response of the discovery request, you get the activity details.

GET /api/v2/activities/cafe66f6-8ab0-4df7-be50-ce01d97d9383

With the response below, you can check progress, state, and result to ensure the task finishes.

{
  "id": "cafe66f6-8ab0-4df7-be50-ce01d97d9383",
  "name": "Discovering VM inventory on vCenter Test vCenter",
  "category": "DISCOVER",
  "classType": "JOB",
  "source": {
    "type": "DATA_MANAGER"
  },
  "createTime": "2019-12-06T06:40:06.452Z",
  "updateTime": "2019-12-06T06:41:19.919Z",
  "startTime": "2019-12-06T06:40:07.509Z",
  "endTime": "2019-12-06T06:41:19.822Z",
  "duration": 72313,
  "progress": 100,
  "state": "COMPLETED",
  "result": {
    "status": "OK_WITH_ERRORS",
    "summaries": [
      "Task cafe66f6-8ab0-4df7-be50-ce01d97d9383 for VM discovery job ca17fad5-f1a7-477b-8b6f-e1213490a297 partial success. Interface ID: ebdf2d37-9dc9-40fd-bd63-02b554bfd973. Error cause: Discovery Job Error: Fail to save some discovered VMs, hosts, and clusters.",
      "Discovery Type: VCENTER  Resource Type: ESX_CLUSTER  Sub-Type: none  Total Assets: 1  New Assets: 0",
      "Discovery Type: VCENTER  Resource Type: ESX_HOST  Sub-Type: none  Total Assets: 1  New Assets: 0",
      "Discovery Type: VCENTER  Resource Type: VIRTUALMACHINE  Sub-Type: VIRTUALMACHINE  Total Assets: 646  New Assets: 0"
    ]
  },
  "hasLogs": false,
  "hasChildren": false,
  "actions": {
    "cancelable": false,
    "retryable": false
  }
}