--- /dev/null
+/*\r
+ * Copyright IBM Corporation, 2013. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+package org.opendaylight.controller.networkconfig.neutron;\r
+\r
+/**\r
+ * This interface defines the methods a service that wishes to be aware of Neutron Routers needs to implement\r
+ *\r
+ */\r
+\r
+public interface INeutronRouterAware {\r
+\r
+ /**\r
+ * Services provide this interface method to indicate if the specified router can be created\r
+ *\r
+ * @param router\r
+ * instance of proposed new Neutron Router object\r
+ * @return integer\r
+ * the return value is understood to be a HTTP status code. A return value outside of 200 through 299\r
+ * results in the create operation being interrupted and the returned status value reflected in the\r
+ * HTTP response.\r
+ */\r
+ public int canCreateRouter(NeutronRouter router);\r
+\r
+ /**\r
+ * Services provide this interface method for taking action after a router has been created\r
+ *\r
+ * @param router\r
+ * instance of new Neutron Router object\r
+ * @return void\r
+ */\r
+ public void neutronRouterCreated(NeutronRouter router);\r
+\r
+ /**\r
+ * Services provide this interface method to indicate if the specified router can be changed using the specified\r
+ * delta\r
+ *\r
+ * @param delta\r
+ * updates to the router object using patch semantics\r
+ * @param router\r
+ * instance of the Neutron Router object to be updated\r
+ * @return integer\r
+ * the return value is understood to be a HTTP status code. A return value outside of 200 through 299\r
+ * results in the update operation being interrupted and the returned status value reflected in the\r
+ * HTTP response.\r
+ */\r
+ public int canUpdateRouter(NeutronRouter delta, NeutronRouter original);\r
+\r
+ /**\r
+ * Services provide this interface method for taking action after a router has been updated\r
+ *\r
+ * @param router\r
+ * instance of modified Neutron Router object\r
+ * @return void\r
+ */\r
+ public void neutronRouterUpdated(NeutronRouter router);\r
+\r
+ /**\r
+ * Services provide this interface method to indicate if the specified router can be deleted\r
+ *\r
+ * @param router\r
+ * instance of the Neutron Router object to be deleted\r
+ * @return integer\r
+ * the return value is understood to be a HTTP status code. A return value outside of 200 through 299\r
+ * results in the delete operation being interrupted and the returned status value reflected in the\r
+ * HTTP response.\r
+ */\r
+ public int canDeleteRouter(NeutronRouter router);\r
+\r
+ /**\r
+ * Services provide this interface method for taking action after a router has been deleted\r
+ *\r
+ * @param router\r
+ * instance of deleted Router Network object\r
+ * @return void\r
+ */\r
+ public void neutronRouterDeleted(NeutronRouter router);\r
+\r
+ /**\r
+ * Services provide this interface method for taking action after an interface has been added to a router\r
+ *\r
+ * @param router\r
+ * instance of the base Neutron Router object\r
+ * @param routerInterface\r
+ * instance of the NeutronRouter_Interface being attached to the router\r
+ * @return void\r
+ */\r
+ public void neutronRouterInterfaceAttached(NeutronRouter router, NeutronRouter_Interface routerInterface);\r
+\r
+ /**\r
+ * Services provide this interface method for taking action after an interface has been removed from a router\r
+ *\r
+ * @param router\r
+ * instance of the base Neutron Router object\r
+ * @param routerInterface\r
+ * instance of the NeutronRouter_Interface being detached from the router\r
+ * @return void\r
+ */\r
+ public void neutronRouterInterfaceDetached(NeutronRouter router, NeutronRouter_Interface routerInterface);\r
+}\r