Skip to main content

Client for interacting with Tcpwave's IPAM

Project description


TCPWave's IPAM Client


Python client for communication with Tcpwave's IPAM.

Pre-requisites ############## Basic Authentication is not supported. Only certificates based authentication is supported. So client must have a proper certificate and these certificates must be added to IPAM.\

Certificate files required:

  • client certificate.
  • client key.

Supported Operations #################### Following operations are supported:

  • Create/list/detail/delete Network
  • Create/list/detail/delete Subnet
  • Fetches Next Available IP in the Subnet
  • Create/delete IP Object

Installing library ################## Run below command from python virtual environment::

pip install tcpwave-client

Sample Examples ###############

Create Network


Below is a complete program showing the use of this library.
This example shows how to create network in IPAM using this library::

from client.networks import NetworkManager
from client.exceptions import APICallFailedException
import json

def create_network():
    """
    Create test network
    :return:
    """
    try:
        nw_create_payload = {
            'network_address': '153.168.0.0/16',
            'name': 'Test Network 3',
            'organization_name': 'Tcpwave',
            'provider': provider
        }
        rsp = NetworkManager.create_network(network=json.dumps(nw_create_payload))
        print(str(rsp))
    except APICallFailedException as ex:
        print(ex.msg)

if __name__ == "__main__":
    provider = {
        'cert': '/path/to/cert/client.crt',
        'key': '/path/to/key/client.key',
        'host': '192.168.0.116'
    }
    create_network()

List Network


This snippet shows only the complete payload required for thr API call to work for listing all networks::

def networks_list():
    """
    List all networks
    :return:
    """
    try:
        list_payload = {
            'provider': {
                'cert': '/path/to/client.crt',
                'key': '/path/to/client.key',
                'host': '192.168.0.116'
            }
        }
        rsp = NetworkManager.list_all_networks(network=json.dumps(list_payload))
        print("Networks Count : " + str(len(rsp)))
        for i in range(0, len(rsp)):
            print(str(rsp[i]))
    except APICallFailedException as ex:
        print(ex.msg)

Delete Network


This example shows the deletion of a network::

def test_network_delete():
    """
    Deletes given network
    :return:
    """
    try:
        nw_create_payload = {
            'address': '153.168.0.0/16',
            'organization_name': 'Tcpwave',
            'provider': {
                'cert': '/path/to/client.crt',
                'key': '/path/to/client.key',
                'host': '192.168.0.116'
            }
        }
        rsp = NetworkManager.delete_network(network=json.dumps(nw_create_payload))
        print(str(rsp))
    except APICallFailedException as ex:
        print(ex.msg)

Create Subnet


This example shows creation of a subnet::

def subnet_create():
    """
    Creates test subnet
    :return:
    """
    try:
        subnet_payload = {
            'provider': {
                'cert': '/path/to/client.crt',
                'key': '/path/to/client.key',
                'host': '192.168.0.116'
            },
            'organization_name': 'Tcpwave',
            'name': 'Test Subnet 1',
            'router_address': '153.168.0.1',
            'network_address': '153.168.0.0/16',
            'primary_domain': 'test.tcpwave.com'
        }
        rsp = NetworkManager.create_subnet(subnet=json.dumps(subnet_payload))
        print(str(rsp))
    except APICallFailedException as ex:
        print(ex.msg)

Next Free IP


This fetch the next free IP::

def next_available_ip():
    """
    Fetches next available ip
    :return:
    """
    try:
        subnet_payload = {
            'provider': {
                'cert': '/path/to/client.crt',
                'key': '/path/to/client.key',
                'host': '192.168.0.116'
            },
            'organization_name': 'Tcpwave',
            'subnet_address': '153.168.0.0/16'
        }
        rsp = NetworkManager.get_next_available_ip(subnet=json.dumps(subnet_payload))
        print('Next available IP : ', str(rsp))
        return str(rsp)
    except APICallFailedException as ex:
        print(ex.msg)

Creates IP Object


This example shows creating an object.::

def create_object():
    """
    Creates IP Object
    :return:
    """
    try:
        ip_payload = {
            'provider': {
                'cert': '/path/to/client.crt',
                'key': '/path/to/client.key',
                'host': '192.168.0.116'
            },
            'organization_name': 'Tcpwave',
            'subnet_address': '153.168.0.0/16',
            'ip_address': '153.168.0.5',
            'name': 'tst obj  1',
            'domain_name': 'test.tcpwave.com'

        }
        rsp = NetworkManager.create_ip(ip_payload=json.dumps(ip_payload))
        print(str(rsp))
    except APICallFailedException as ex:
        print(ex.msg)

Deletes Object


This example shows deletion of an object::

def delete_object(ip):
    """
    Releases the ip
    :return:
    """
    try:
        ip_payload = {
            'provider': {
                'cert': '/path/to/client.crt',
                'key': '/path/to/client.key',
                'host': '192.168.0.116'
            },
            'organization_name': 'Tcpwave',
            'ip_address': ip
        }
        rsp = NetworkManager.release_ip(ip_payload=json.dumps(ip_payload))
        print(str(rsp))
    except APICallFailedException as ex:
        print(ex.msg)

1.0.2 (2020-04-15)

  • packaging restructure
  • imports reordering for bug fix

1.0.1 (2020-04-15)

  • Updated README.rst with usage examples

1.0.0 (2020-04-15)

  • code cleanup

0.0.1 (2020-04-15)

  • Added connector to send API requests to Tcpwave's IPAM
  • First release on PyPI.
  • Supports operation as follows:
    • Create/list/detail/delete Network
    • Create/list/detail/delete Subnet
    • Fetches Next Available IP in the Subnet
    • Create/delete IP Object

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tcpwave-client-1.0.2.tar.gz (13.1 kB view hashes)

Uploaded Source

Built Distribution

tcpwave_client-1.0.2-py3.7.egg (14.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page