From 2883a7522d12028d3ea5e83059ee51e29d1dde1d Mon Sep 17 00:00:00 2001 From: Mohammad Banikazemi Date: Mon, 9 May 2016 15:06:51 -0400 Subject: [PATCH] Adding support for two new libnetwork methods In Docker 1.11 support for the two newly added libnetwork methods is not required. However, not having these supported result in errors that may be confusing to users. These two methods are to make support for exported and published ports on a per container basis as discussed here: https://github.com/docker/libnetwork/issues/992 It is proposed that by Docker version 1.12 support for these methods become mandatory. Support for exposed port will be added in a separate patchset. Support for publishing port may be added later on when needed support in Neutron is available. Change-Id: Idf69a094eda2141cfa25b79d3095010871e1c9e8 --- kuryr/controllers.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/kuryr/controllers.py b/kuryr/controllers.py index 72dc8c64..bcc71b35 100644 --- a/kuryr/controllers.py +++ b/kuryr/controllers.py @@ -905,6 +905,44 @@ def network_driver_leave(): return flask.jsonify(const.SCHEMA['SUCCESS']) +@app.route('/NetworkDriver.ProgramExternalConnectivity', methods=['POST']) +def network_driver_program_external_connectivity(): + """Peovides external connectivity fora given container. + + Performs the necessary programming to allow the external connectivity + dictated by the specified options + + See the following link for more details about the spec: + https://github.com/docker/libnetwork/blob/master/driverapi/driverapi.go + """ + json_data = flask.request.get_json(force=True) + app.logger.debug("Received JSON data {0} for" + " /NetworkDriver.ProgramExternalConnectivity" + .format(json_data)) + # TODO(namix): Add support for exposed ports + # TODO(namix): Add support for published ports + return flask.jsonify(const.SCHEMA['SUCCESS']) + + +@app.route('/NetworkDriver.RevokeExternalConnectivity', methods=['POST']) +def network_driver_revoke_external_connectivity(): + """Removes external connectivity for a given container. + + Performs the necessary programming to remove the external connectivity + of a container + + See the following link for more details about the spec: + https://github.com/docker/libnetwork/blob/master/driverapi/driverapi.go + """ + json_data = flask.request.get_json(force=True) + app.logger.debug("Received JSON data {0} for" + " /NetworkDriver.RevokeExternalConnectivity" + .format(json_data)) + # TODO(namix): Add support for removal of exposed ports + # TODO(namix): Add support for removal of published ports + return flask.jsonify(const.SCHEMA['SUCCESS']) + + @app.route('/IpamDriver.GetCapabilities', methods=['POST']) def ipam_get_capabilities(): """Provides the IPAM driver capabilities.