Skip to main content

The SOLIDserverRest is a library to drive EfficientIP API

Project description

License

pipeline status

SOLIDserverRest

This 'SOLIDserverRest' allows to easily interact with SOLIDserver's REST API. It allows managing all IPAM objects through CRUD operations.

  • Free software: BSD2 License

This 'SOLIDserverRest' is compatible with SOLIDserver version 7 and ownward.

Install

Install 'SOLIDserverRest' using pip in your virtualenv:

	pip install SOLIDserverRest

Usage

Using the SOLIDserverRest advanced object (recommended)

With basic authentication

All commands and object manipulation are going through a SOLIDserver main object, handling the connection to the manager and pushing API calls. The creation of a SOLIDserver object is done like that:

from SOLIDserverRest import *
from SOLIDserverRest import adv as sdsadv

SDS_HOST = "192.168.254.254"
SDS_LOGIN = "foo"
SDS_PWD = "bar"

sds = sdsadv.SDS(ip_address=SDS_HOST,
                 user=SDS_LOGIN,
                 pwd=SDS_PWD)
try:
    sds.connect()
except SDSError as e:
    logging.error(e)
    exit(1)

print(sds)

With token authentication (SDS release >= 8.4.0)

from SOLIDserverRest import *
from SOLIDserverRest import adv as sdsadv

SDS_HOST = "192.168.254.254"
SDS_TOKEN_ID = "8628f88cbd40df99903d6f385caa0462"
SDS_TOKEN_SEC = "ca8ec3c0f07b380c4723349230901d40a84ba4b4987c12863b66b0b5297ad922"

sds = sdsadv.SDS(ip_address=SDS_HOST)
sds.set_token_creds(keyid=SDS_TOKEN_ID,
                    keysecret=SDS_TOKEN_SEC)
try:
    sds.connect(method="token")
except SDSError as e:
    logging.error(e)
    exit(1)

print(sds)

More examples in the example directory.

Using the SOLIDserverRest object (basic mapping)

The raw API is mapped using the SOLIDserverRest object which handle the connection, prepare the formating and handle some errors. It can be usefull twhen the advanced library is not yet implementing an object that you require in your code.

1. Declare endpoint API point

Set the API endpoint you want to talk with through API. Could use an IP address (v4 or v6) or a host name

  • host = IP address of the SOLIDserver server
con = SOLIDserverRest("fqdn_host.org")

2. Specify connection method

You can use native connection mode using SOLIDserver default method which provide authentication through headers in the requests with information encoded in base64

  • user = user who want to use
  • password = password of the user
	con.use_native_sds(user="apiuser", password="apipwd")

You can also use the basic authentication method for connecting the SOLIDserver.

  • user = user who want to use
  • password = password of the user
	con.use_basicauth_sds(user="apiuser", password="apipwd")

3. Set TLS security

SSL certificate chain is validated by default, to disable it, use the set_ssl_verify method

        con.set_ssl_verify(False)  # True by default
	rest_answer = con.query("method", "parameters")

Otherwise, you have to provide the certificate file:

    con = SOLIDserverRest(SERVER)

If the certificate file is not valide, an exception SDSInitError is raised.

4. Request to SOLIDserver API

You need parameters:

  • method = choose your method in the list below
  • parameters = Python dictionary with parameters you want to use
	rest_answer = con.query("method", "parameters")

5. Analyze answer

  • rest_answer => object name
  • rest_answer.status_code => current http answer code set in the object
  • rest_answer.content => Answer core from SOLIDserver API set in the object

Example:

	print(rest_answer)
	print(rest_answer.status_code)
	print(rest_answer.content)

Methods that could be used

Methods are organized to match the ontology used in SOLIDServer, you will find:

  • Sites - address spaces
  • Subnets (v4 and v6)
  • Pools (v4 and v6)
  • Addresses (v4 and v6)
  • Aliases (v4 and v6)
  • DNS servers, views, zones, RR, acl, key
  • application manager
  • DHCP server, scope, shared net, range, static, group, options
  • device manager
  • VLAN manager
  • Network Object Manager

More information about supported methods in the specific document

Tests

Last set of tests run on 29/Sep/2025 using:

  • SOLIDserver release 8.3.2
  • python libs:
    • requests 2.32.5
    • urllib3 2.5.0
    • idna 3.10
    • PySocks 1.7.1
    • chardet 5.2.0
    • pyOpenSSL 25.3.0
    • packaging 24.2
    • macaddress 2.0.2

coverage results

---------- coverage: platform win32, python 3.11.3-final-0 -----------
Name                                        Stmts   Miss  Cover
---------------------------------------------------------------
SOLIDserverRest\Exception.py                   24      4    83%
SOLIDserverRest\SOLIDserverRest.py            168     20    88%
SOLIDserverRest\__init__.py                     4      0   100%
SOLIDserverRest\adv\__init__.py                16      0   100%
SOLIDserverRest\adv\base.py                   116     19    84%
SOLIDserverRest\adv\class_params.py            97      4    96%
SOLIDserverRest\adv\device.py                  86     72    16%
SOLIDserverRest\adv\device_tools.py           127    113    11%
SOLIDserverRest\adv\devif.py                  121     99    18%
SOLIDserverRest\adv\dns.py                    149     65    56%
SOLIDserverRest\adv\dns_record.py             403    117    71%
SOLIDserverRest\adv\dns_view.py               104     37    64%
SOLIDserverRest\adv\dns_zone.py               143     19    87%
SOLIDserverRest\adv\ipaddress.py              151      5    97%
SOLIDserverRest\adv\network.py                228      8    96%
SOLIDserverRest\adv\nom_folder.py             118      9    92%
SOLIDserverRest\adv\nom_interface.py          317     47    85%
SOLIDserverRest\adv\nom_network_object.py     126     27    79%
SOLIDserverRest\adv\sds.py                    149     10    93%
SOLIDserverRest\adv\space.py                  147     50    66%
SOLIDserverRest\adv\validators.py              28      6    79%
SOLIDserverRest\mapper.py                      24      0   100%
---------------------------------------------------------------
TOTAL                                        2846    731    74%

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

solidserverrest-2.13.1.tar.gz (51.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

solidserverrest-2.13.1-py3-none-any.whl (62.0 kB view details)

Uploaded Python 3

File details

Details for the file solidserverrest-2.13.1.tar.gz.

File metadata

  • Download URL: solidserverrest-2.13.1.tar.gz
  • Upload date:
  • Size: 51.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for solidserverrest-2.13.1.tar.gz
Algorithm Hash digest
SHA256 cdc1480712d04fd4cdef0721d497036eaac0f2b25238fd5fa113e25146dde9e2
MD5 c5b0dfc1fe801f73627405271ed470b6
BLAKE2b-256 4b93fc4e2e1214c2e177c8461249333a8228ea00d6cf9759bd1326bad02e19ba

See more details on using hashes here.

File details

Details for the file solidserverrest-2.13.1-py3-none-any.whl.

File metadata

File hashes

Hashes for solidserverrest-2.13.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2ab14c836cfe1548eca00c9cba927b46a3de2191f07b39509af20e2fa00bdf30
MD5 a85bc304545f808df67121292a88ff08
BLAKE2b-256 d6b0a005c73b80433a4140ba284549019bbb739dd0d7ad395a85b1087f6d05aa

See more details on using hashes here.

Supported by

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