aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jonas Gunz <himself@jonasgunz.de> 2020-12-11 01:08:37 +0100
committerGravatar Jonas Gunz <himself@jonasgunz.de> 2020-12-11 01:08:37 +0100
commit75204dcd93a06699669e51f6e34487aacbcde6a7 (patch)
tree9baca3c9b86c3d8563ef67fd87245447707e9243
parent17bd5b60a6d1445d208c1486c5b937c7f7881154 (diff)
downloadpython-phpipam-75204dcd93a06699669e51f6e34487aacbcde6a7.tar.gz
error handling, doc
-rwxr-xr-xphpipam/__init__.py21
-rwxr-xr-xphpipam/backend.py20
-rwxr-xr-xphpipam/resources.py9
3 files changed, 28 insertions, 22 deletions
diff --git a/phpipam/__init__.py b/phpipam/__init__.py
index 89d8280..caf217e 100755
--- a/phpipam/__init__.py
+++ b/phpipam/__init__.py
@@ -4,12 +4,31 @@ from .resources import phpipamResource
class phpipam:
"""
phpIPAM API Implementation
- ReadOnly because I don't need the writing bit
+
+ Attributes
+ ----------
+ sections
+ subnets
+ addresses
+ devices
https://phpipam.net/api-documentation/
"""
def __init__(self, api_url, app_id, api_user, api_password):
+ """
+ Parameters
+ ----------
+ api_url : str
+ URL of phpIPAM instance. Example: https://phpipam.example.com/
+ app_id : str
+ AppID configrued in API settings
+ api_user : str
+ username, leave empty to use static token authentification
+ api_password : str
+ password or static authentification token
+ """
+
self._backend = phpipamBackend(api_url, app_id, api_user, api_password)
def __getattr__(self, item):
diff --git a/phpipam/backend.py b/phpipam/backend.py
index 81af316..64dfcb0 100755
--- a/phpipam/backend.py
+++ b/phpipam/backend.py
@@ -14,24 +14,6 @@ class apiObjectNotFoundException(Exception):
class phpipamBackend:
def __init__(self, api_url, app_id, api_user, api_password):
- """
- Parameters
- ----------
- api_url : str
- URL of the phpIPAM instance. Example: https://phpipam.example.com/
- app_id : str
- AppID set in phpIPAM API settings
- api_user : str
- username, leave blank to use static token-authentication
- api_password : str
- user password or static auth token
-
- Raises
- ------
- apiConnectionException
- if the connection/authentification fails
- """
-
self.api_url = api_url.strip('/') + '/api/' + app_id
self.api_user = api_user
self.api_password = api_password
@@ -62,8 +44,6 @@ class phpipamBackend:
return expiration < datetime.datetime.now()
def request ( self, method, url, data = {} ):
- """Wrapper for _req for checking result and only returning data"""
-
if self._isTokenExpired():
self._getApiToken()
diff --git a/phpipam/resources.py b/phpipam/resources.py
index 597560a..5879b14 100755
--- a/phpipam/resources.py
+++ b/phpipam/resources.py
@@ -29,6 +29,9 @@ class invalidResourceException(Exception):
class invalidResourceOperationException(Exception):
pass
+class invalidResourceOperationArgumentException(Exception):
+ pass
+
class phpipamResourceFunction:
def __init__(self, backend, resource, function):
if not function in resource_types[resource]:
@@ -37,14 +40,18 @@ class phpipamResourceFunction:
self._backend = backend
self._resource = resource
self._function = resource_types[resource][function]
+ self._name = function
def __call__(self, **kwargs):
if 'data' in kwargs:
data = kwargs['data']
else:
data = {}
+ try:
+ return self._backend.request( self._function['method'], self._function['request'].format(**kwargs), data=data )
+ except KeyError as e:
+ raise invalidResourceOperationArgumentException( f'{self._resource}.{self._name}: Missing arguments: {e.args}' )
- return self._backend.request( self._function['method'], self._function['request'].format(**kwargs), data=data )
class phpipamResource:
def __init__(self, backend, resource):