Managing Data Sources

You can manage data sources using APIs. Data sources can be added, updated, deleted, enabled, or disabled using APIs.

Data Sources URL Prefix

/data-sources/

Data sources are grouped on the basis of the data source type. URL Prefix corresponding to data sources types are listed in this table.

Table 1. Data Source Type to URL Prefix

Data Source Type

URL Prefix

VCenterDataSource

/data-sources/vcenters

NSXVManagerDataSource

/data-sources/nsxv-managers

NSXTManagerDataSource

/data-sources/nsxt-managers

CiscoSwitchDataSource

/data-sources/cisco-switches

CiscoSwitchDataSource

/data-sources/cisco-aci

AristaSwitchDataSource

/data-sources/arista-switches

DellSwitchDataSource

/data-sources/dell-switches

BrocadeSwitchDataSource

/data-sources/brocade-switches

JuniperSwitchDataSource

/data-sources/juniper-switches

UCSManagerDataSource

/data-sources/ucs-managers

HPOneViewDataSource

/data-sources/hpov-managers

HPVCManagerDataSource

/data-sources/hpvc-managers

CheckpointFirewallDataSource

/data-sources/checkpoint-firewalls

PanFirewallDataSource

/data-sources/panorama-firewalls

KubernetesDataSource

/data-sources/kubernetes-clusters

PolicyManagerDataSource

/data-sources/vmc-nsxmanagers

PKSDataSource

/data-sources/pks

ServiceNowDataSource

/data-sources/servicenow-instances

      
    

List Data Sources

Prerequisites

  • Get the data source URL for the data source type. For more information, see Table 3-1: DataSourceType to URL Prefix.

Procedure

  • Make a GET request to the URL corresponding to the data source type.

	Request
		GET https://operations-for-networks.example.com/api/ni/data-sources/vcenters
	Response Body
{
    "results": [
        {
            "entity_id": "10000:902:627340223",
            "entity_type": "VCenterDataSource"
        },
        {
            "entity_id": "10000:902:993642840",
            "entity_type": "VCenterDataSource"
        },
        {
            "entity_id": "10000:902:738162743",
            "entity_type": "VCenterDataSource"
        },
        {
            "entity_id": "10000:902:627340998",
            "entity_type": "VCenterDataSource"
        },
        {
            "entity_id": "10000:902:390269772",
            "entity_type": "VCenterDataSource"
        }
    ],
    "total_count": 5
}	

Fetch Data Source Details

Prerequisites

  • Get the data source URL for the data source type. For more information, see Table 3-1: DataSourceType to URL Prefix.

  • Get entity ID using the list command.

Procedure

  • Make a GET request for the specific data source entity ID.

    For example:

	Request
		GET https://operations-for-networks.example.com/api/ni/data-sources/vcenters/10000:902:627340223
	Repsonse Body
		{
			"entity_id": "10000:902:993642895",
			"entity_type": "VCenterDataSource",
			"ip": "10.197.17.68",
			"proxy_id": "10000:901:1586035958",
 			"nickname": "aa",
			"enabled": true,
 			"notes": "ecmp lab aa",
 			"credentials": {
				"username": "[email protected]",
 				"password": ""
			}
		}

Update Data Source Credentials

Prerequisites

  • Get the data source URL for the data source type. For more information, see Table 3-1: DataSourceType to URL Prefix.

  • Get entity ID using the list command.

Procedure

  • Make a GET request for the specific data source entity ID.

  • Make a PUT request with request body after changing the credentials in the response retrieved in step 1.

    For example:

	Request
		PUT https://operations-for-networks.example.com/api/ni/data-sources/vcenters/10000:902:627340223
	Request Body
		{
			"entity_id": "10000:902:993642895",
			"entity_type": "VCenterDataSource",
			"ip": "10.197.17.68",
			"proxy_id": "10000:901:1586035958",
 			"nickname": "aa",
			"enabled": true,
 			"notes": "ecmp lab aa",
 			"credentials": {
				"username": "newuser",
 				"password": "newpassword"
			}
		}
	Response Body
		{
			"entity_id": "10000:902:993642895",
			"entity_type": "VCenterDataSource",
			"ip": "10.197.17.68",
			"proxy_id": "10000:901:1586035958",
 			"nickname": "aa",
			"enabled": true,
 			"notes": "ecmp lab aa",
 			"credentials": {
				"username": "newuser",
 				"password": ""
			}
		}

Enable a Data Source

Prerequisites

  • Get the data source URL for the data source type. For more information, see Table 3-1: DataSourceType to URL Prefix.

  • Get entity_id from the list command.

Procedure

  • To enable a data source, make a POST request.

    For example:

	Request
		POST 
		https://operations-for-networks.example.com/api/ni/data-sources/vcenters/10000:902:627340223/enable
	Repsonse
		200 OK

Disable a Data Source

Prerequisites

  • Get the data source URL for the data source type. For more information, see Table 3-1: DataSourceType to URL Prefix.

  • Get entity_id from the list command.

Procedure

  • To disable a data source, make a POST request.

    For example:

	Request
		POST 
		https://operations-for-networks.example.com/api/ni/data-sources/vcenters/10000:902:627340223/disable
	Repsonse
		200 OK

Add a Data Source

Prerequisites

  • Get the data source URL for the data source type. For more information, see Table 3-1: DataSourceType to URL Prefix.

  • You must have IP Address or the FQDN of the data source and its credentials.

Procedure

  • Get the proxy id for adding data sources using the infra/nodes APIs.

  • Make a POST request conforming to the API specification. For example, to add a vCenter data source:

Request 
      GET 	

Request
		POST https://operations-for-networks.example.com/api/ni/data-sources/vcenters/
	Request Body
	{
		"ip": "10.197.17.68",
		"fqdn": "",
		"proxy_id": "10000:901:1586035958",
		"nickname": "aa",
		"enabled": true,
		"notes": "ecmp lab aa",
		"credentials":
		{
			"username": "[email protected]",
			"password": "password"}
	}
	
	Response Body
	{
		"entity_id": "10000:902:993642895",
		"entity_type": "VCenterDataSource",
		"ip": "10.197.17.68",
 		"proxy_id": "10000:901:1586035958",
 		"nickname": "aa",
 		"enabled": true,
 		"notes": "ecmp lab aa",
 		"credentials": {
			"username": "[email protected]",
			"password": ""
		}
	}

Delete a Data Source

Prerequisites

  • Get the data source URL for the data source type. For more information, see Table 3-1: DataSourceType to URL Prefix.

  • Get entity_id from the list command.

Procedure

  • Make a DELETE request for the specific entity_id.

	Request DELETE https://operations-for-networks.example.com/api/ni/data-sources/vcenters/10000:902:627340223/
	Response
	   204 No Content

Configure SNMP on a Switch Data Source

Prerequisites

  • Get the switch data source URL for the data source type. For more information, see Table 3-1: DataSourceType to URL Prefix.

  • Get entity_id from the list command.

Procedure

  • Make a PUT request conforming to the API specification.

	Request PUT 
	https://operations-for-networks.example.com/api/ni/data-sources/cisco-switches/10000:903:627340223
	Request Body
	{
    		"snmp_enabled": true,
    		"snmp_version": "v3",
    		"config_snmp_3": {
        		"username": "nilesh",
        		"authentication_type": "SHA",
        		"authentication_password": "authentication_password",
        		"privacy_type": "NO_PRIV"
    	}
	
	Response Body
	{
    		"snmp_enabled": true,
    		"snmp_version": "v3",
    		"config_snmp_3": {
        		"username": "nilesh",
        		"authentication_type": "SHA",
        		"privacy_type": "NO_PRIV"
    	}

Bulk Edit Data Sources

Description

  • This endpoint allows users to submit a request for bulk operations on data sources. Bulk operations enable users to perform multiple operations simultaneously, streamlining the process and improving efficiency.

  • Users can perform enable, disable, edit and delete opertaions on data sources in bulk using this API.

Prerequisites

  • Get entity_id of data sources from the list command.

Procedure

  • Make a POST request conforming to the API specification.

  • Response provides a unique request_id, which serves as an identifier to track the progress of the operation. To monitor the status of the bulk operation, you can utilize the Get Bulk Operation Details API by passing the received request_id as a parameter.

Request POST
	https://operations-for-networks.example.com/api/ni/data-sources/bulk
1. Request Body for bulk ENABLE
{
  "action_type": "ENABLE",
  "data_sources": [
    {
      "entity_id": "10071:907:4230117030541228376"
    },
    {
      "entity_id": "10071:907:8650548508942367585"
    }
  ]
}
         
Response Body         
{
   "request_id": "195d283e-30ff-4eef-865b-629851eff7"
}

2. Request Body for bulk DISABLE
{
  "action_type": "DISABLE",
  "data_sources": [
    {
      "entity_id": "10071:907:4230117030541228376"
    },
    {
      "entity_id": "10071:907:8650548508942367585"
    }
  ]
}

Response Body         
{
   "request_id": "195d283e-30ff-4eef-865b-629851effbb7"
}

3. Request body for bulk UPDATE
a) Bulk update username and password
{
  "action_type": "UPDATE",
  "data_sources": [
    {
      "entity_id": "10071:907:4230117030541228376",
      "fields": [
        {
          "key": "USER",
          "value": "username"
        },
        {
          "key": "PWD",
          "value": "pwd"
        }
      ]
    },
    {
      "entity_id": "10071:907:8650548508942367585",
      "fields": [
        {
          "key": "USER",
          "value": "username"
        },
        {
          "key": "PWD",
          "value": "pwd"
        }
      ]
    }
  ]
}
Note: fields of datasources should be same
Response body
{
    "request_id": "993f42b1-010b-4811-8873-6bb3bebb90d7"
}
b) Request body to bulk update SNMP credentials
{
  "action_type": "UPDATE",
  "data_sources": [
    {
      "entity_id": "10071:907:4230117030541228376",
      "fields": [
        {
          "key": "snmp_metric_enabled",
          "value": "true"
        },
        {
          "key": "snmp_version",
          "value": "_2c"
        },
        {
          "key": "snmp_community",
          "value": "community_string"
        }
      ]
    }
  ]
}

c) Other fields which can be used in bulk update
 * snmp_version, allowed values are _2c or _3
 * snmp_username
 * context_name
 * authentication_type, allowed values are MD5 or SHA
 * authentication_password
 * privacy_type, allowed values are DES, AES128, AES192, AES256, _3DES
 * privacy_password
 * configPollingInterval
 * configPollingIntervalType 
 * notes

4. Request body for bulk DELETE
{
  "action_type": "DELETE",
  "data_sources": [
    {
      "entity_id": "10071:907:4230117030541228376"
    },
    {
      "entity_id": "10071:907:8650548508942367585"
    }
  ]
}
Response body
{
    "request_id": "993f42b1-010b-4811-8873-6bb0d7"
}

Get Bulk Operation Details

Description

This endpoint allows users to retrieve details of a specific bulk operation by providing the request_id. The request_id is a unique identifier assigned to each submitted bulk operation request. The request_id is received when user submits a bulk enable, disable, update or delete operation on datasources.

Procedure

  • Make a GET request conforming to the API specification.

Request 
	GET https://operations-for-networks.example.com/api/ni/data-sources/bulk/view-details/31094378-2261-4046-b02d-7a7851a88c99
Response
{
  "total_count": 2,
  "success_count": 2,
  "failed_count": 0,
  "successful_data_sources": [
    "GENERICSWITCH_DELLOS10_10.79.221.185",
    "GENERICSWITCH_DELLOS10_10.79.221.183"
  ],
  "failed_data_sources": []
}