aboutsummaryrefslogtreecommitdiff
path: root/phpipam/resources.py
diff options
context:
space:
mode:
authorGravatar Jonas Gunz <himself@jonasgunz.de> 2021-01-13 21:31:30 +0100
committerGravatar Jonas Gunz <himself@jonasgunz.de> 2021-01-13 21:31:30 +0100
commit874f62e0ab04cdb72814b60cd20ab4459fa9b4a5 (patch)
treea1f368485d8ac425c574f85339b78254192781d1 /phpipam/resources.py
parent15ef268d0c588ab3b23e27c2e746e341f2a63ad1 (diff)
downloadpython-phpipam-874f62e0ab04cdb72814b60cd20ab4459fa9b4a5.tar.gz
rename package to phpipam-api
Diffstat (limited to 'phpipam/resources.py')
-rwxr-xr-xphpipam/resources.py134
1 files changed, 0 insertions, 134 deletions
diff --git a/phpipam/resources.py b/phpipam/resources.py
deleted file mode 100755
index 8f44c17..0000000
--- a/phpipam/resources.py
+++ /dev/null
@@ -1,134 +0,0 @@
-#
-# phpipam/resources.py
-# (c) 2021 Jonas Gunz <himself@jonasgunz.de>
-# License: MIT
-#
-from .backend import PhpipamBackend
-
-# Custom functions are defined here
-resource_types = {
- 'sections' : {
- 'getSubnets':{
- 'method':'GET',
- 'request':'/sections/{section_id}/subnets',
- }
- },
- 'subnets' : {
- 'search':{
- 'method':'GET',
- 'request':'/subnets/search/{search}'
- },
- 'getIP':{
- 'method':'GET',
- 'request':'/subnets/{subnet_id}/addresses/{ip}/'
- },
- 'getAddresses':{
- 'method':'GET',
- 'request':'/subnets/{subnet_id}/addresses/'
- },
- },
- 'addresses' : {
- 'getByIP':{
- 'method':'GET',
- 'request':'/addresses/{ip}/{subnet_id}/'
- },
- 'getByTag':{
- 'method':'GET',
- 'request':'/addresses/tags/{tag_id}/addresses/'
- },
- 'search':{
- 'method':'GET',
- 'request':'/addresses/search/{ip}/'
- },
- 'getFirstFree':{
- 'method':'GET',
- 'request':'/addresses/first_free/{subnet_id}/'
- },
- 'getTags':{
- 'method':'GET',
- 'request':'/addresses/tags/'
- },
- 'getTag':{
- 'method':'GET',
- 'request':'/addresses/tags/{tag_id}/'
- },
- 'createFirstFree':{
- 'method':'POST',
- 'request':'/addresses/first_free/{subnet_id}/'
- }
- },
- 'vlan':{},
- 'l2domains':{},
- 'vrf':{},
- 'devices' : {
- 'getAddresses':{
- 'method':'GET',
- 'request':'/devices/{device_id}/addresses/'
- },
- 'getSubnets':{
- 'method':'GET',
- 'request':'/devices/{device_id}/subnets/'
- }
- },
- 'prefix':{},
-}
-
-class InvalidResourceException(Exception):
- pass
-
-class InvalidResourceOperationException(Exception):
- pass
-
-class InvalidResourceOperationArgumentException(Exception):
- pass
-
-class PhpipamResourceFunction:
- def __init__(self, backend, resource, function):
- if not function in resource_types[resource]:
- raise InvalidResourceOperationException(f'Operation {function} is not defined for {resource}.')
-
- 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}' )
-
-
-class PhpipamResource:
- def __init__(self, backend, resource):
- if not resource in resource_types:
- raise InvalidResourceException(f'Invalid resource "{resource}"')
-
- self._type = resource
- self._backend = backend
-
- def __getattr__(self, attr):
- return PhpipamResourceFunction(self._backend, self._type, attr)
-
- # Functions every ObjectType shares
-
- def get(self):
- """List of all objects"""
- return self._backend.request('GET', f'/{self._type}')
-
- def byID(self, object_id):
- """object identified by object_id : str"""
- return self._backend.request('GET', f'/{self._type}/{object_id}')
-
- def create(self, data):
- return self._backend.request('POST', f'/{self._type}/{object_id}', data=data)
-
- def edit(self, data):
- return self._backend.request('PATCH', f'/{self._type}/{object_id}', data=data)
-
- def delete(self, object_id):
- return self._backend.request('DELETE', f'/{self._type}/{object_id}')