from docker_plugin_api.Plugin import Blueprint import flask from .IpamDriverData import * from docker_plugin_api.IpamDriverEntities import * app = Blueprint('IpamDriver', __name__) @app.route('/IpamDriver.GetCapabilities', methods=['POST']) def GetCapabilities(): return { 'RequiresMACAddress': True, 'RequiresRequestReplay': True, } @app.route('/IpamDriver.GetDefaultAddressSpaces', methods=['POST']) def GetDefaultAddressSpaces(): return { 'LocalDefaultAddressSpace': 'local', 'GlobalDefaultAddressSpace': 'global', } @app.route('/IpamDriver.RequestPool', methods=['POST']) def RequestPool(): request = RequestPoolEntity(**flask.request.get_json(force=True)) full_id, pool = create_pool(request) return { 'PoolID': full_id, 'Pool': str(pool), 'Data': {}, } @app.route('/IpamDriver.ReleasePool', methods=['POST']) def ReleasePool(): request = ReleasePoolEntity(**flask.request.get_json(force=True)) remove_pool(request.PoolID) return {} @app.route('/IpamDriver.RequestAddress', methods=['POST']) def RequestAddress(): request = RequestAddressEntity(**flask.request.get_json(force=True)) space, pool = get_space_pool(request.PoolID) address = pool.allocate(request.Address) return { 'Address': address, 'Data': {}, } @app.route('/IpamDriver.ReleaseAddress', methods=['POST']) def ReleaseAddress(): request = ReleaseAddressEntity(**flask.request.get_json(force=True)) space, pool = get_space_pool(request.PoolID) pool.deallocate(request.Address) return {} __all__ = ['app']