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.12.3.tar.gz (50.6 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.12.3-py3-none-any.whl (60.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for solidserverrest-2.12.3.tar.gz
Algorithm Hash digest
SHA256 ccfacec629ac9432544f50c227ca795674c1e229da2d86ff219d035d544d5ead
MD5 1ee769b389e8421d801acc60f45fa057
BLAKE2b-256 758f45b27dfca67338b2515ce2eaeeb648558b969634dd0d836387a8043ecbda

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for solidserverrest-2.12.3-py3-none-any.whl
Algorithm Hash digest
SHA256 63308373a97be94a3deef6085f01397ac5d9874be895abc0fada0c9e15af4b5e
MD5 98bef14527657e57cb7937d94aa5eb71
BLAKE2b-256 c1ba9aaa8b1efff88dac65eae7a586e47188f57da97018080eab78b7724d0f85

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