Metadata-Version: 2.1
Name: tcpwave-client
Version: 1.0.0
Summary: Client for interacting with Tcpwave's IPAM
Home-page: https://github.com/TCPWAVE/tims-python-client
Author: Suman Saurabh
Author-email: saurabh.suman@tcpwave.com
License: Apache
Download-URL: https://github.com/TCPWAVE/tims-python-client/archive/master.zip
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
        ```python
        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
        ```python
        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',
                'port': 1234
            }
            create_network()
        ```
        ## List Network
        This snippet shows only the complete payload required for thr API call to work for listing all networks
        ```python
        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',
                        'port': 1234
                    }
                }
                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
        ```python
        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',
                        'port': 1234
                    }
                }
                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
        ```python
        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',
                        'port': 1234
                    },
                    '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
        ```python
        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',
                        'port': 1234
                    },
                    '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.
        ```python
        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',
                        'port': 1234
                    },
                    '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
        ```python
        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',
                        'port': 1234
                    },
                    '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.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
Keywords: tcpwave-client,ipam-client,tcpwave
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Description-Content-Type: text/markdown
