Support active-standby mode in openstacknetworking app

Change-Id: I155e1a082078e5c1b7e8a35275dfd517c787ade7
diff --git a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingSnatIcmpHandlerTest.java b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingSnatIcmpHandlerTest.java
index e4846ad..7dbbed1 100644
--- a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingSnatIcmpHandlerTest.java
+++ b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingSnatIcmpHandlerTest.java
@@ -18,6 +18,7 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
 import com.google.common.util.concurrent.MoreExecutors;
+import org.apache.commons.io.IOUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -60,6 +61,7 @@
 import org.openstack4j.openstack.networking.domain.NeutronRouter;
 import org.openstack4j.openstack.networking.domain.NeutronSubnet;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -73,6 +75,7 @@
 import static org.onlab.packet.ICMP.TYPE_ECHO_REPLY;
 import static org.onlab.packet.ICMP.TYPE_ECHO_REQUEST;
 import static org.onosproject.net.NetTestTools.connectPoint;
+import static org.onosproject.openstacknetworking.api.Constants.REST_UTF8;
 
 public class OpenstackRoutingSnatIcmpHandlerTest {
     private OpenstackRoutingSnatIcmpHandler icmpHandler;
@@ -108,7 +111,7 @@
      * Initial setup for this unit test.
      */
     @Before
-    public void setUp() {
+    public void setUp() throws IOException {
 
         icmpHandler = new OpenstackRoutingSnatIcmpHandler();
 
@@ -432,24 +435,27 @@
     }
 
 
-    private void createPort() {
+    private void createPort() throws IOException {
         InputStream portJsonStream1 = OpenstackRoutingSnatIcmpHandlerTest.class
                 .getResourceAsStream("openstack-port-1.json");
-        port1 = (Port) OpenstackNetworkingUtil.jsonToModelEntity(portJsonStream1, NeutronPort.class);
+        port1 = (Port) OpenstackNetworkingUtil.jsonToModelEntity(
+                IOUtils.toString(portJsonStream1, REST_UTF8), NeutronPort.class);
 
         InputStream portJsonStream2 = OpenstackRoutingSnatIcmpHandlerTest.class
                 .getResourceAsStream("openstack-port-external.json");
-        externalPort = (Port) OpenstackNetworkingUtil.jsonToModelEntity(portJsonStream2, NeutronPort.class);
+        externalPort = (Port) OpenstackNetworkingUtil.jsonToModelEntity(
+                IOUtils.toString(portJsonStream2, REST_UTF8), NeutronPort.class);
 
         portMap.put(port1.getId(), port1);
         portMap.put(externalPort.getId(), externalPort);
 
     }
 
-    private void createSubnet() {
+    private void createSubnet() throws IOException {
         InputStream subnetJsonStream1 = OpenstackRoutingSnatIcmpHandlerTest.class
                 .getResourceAsStream("openstack-subnet-1.json");
-        subnet1 = (Subnet) OpenstackNetworkingUtil.jsonToModelEntity(subnetJsonStream1, NeutronSubnet.class);
+        subnet1 = (Subnet) OpenstackNetworkingUtil.jsonToModelEntity(
+                IOUtils.toString(subnetJsonStream1, REST_UTF8), NeutronSubnet.class);
     }
 
     private void createRouterInterfaceMap() {
@@ -461,11 +467,12 @@
         osRouterInterfaceMap.put(routerInterface1.getPortId(), routerInterface1);
     }
 
-    private void createRouterMap() {
+    private void createRouterMap() throws IOException {
         InputStream routerStream1 = OpenstackRoutingSnatIcmpHandlerTest.class
                 .getResourceAsStream("openstack-router-1.json");
         router1 = (Router)
-                OpenstackNetworkingUtil.jsonToModelEntity(routerStream1, NeutronRouter.class);
+                OpenstackNetworkingUtil.jsonToModelEntity(
+                        IOUtils.toString(routerStream1, REST_UTF8), NeutronRouter.class);
         osRouterMap.put(router1.getId(), router1);
 
     }
diff --git a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtilTest.java b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtilTest.java
index c6e403a..e5635e5 100644
--- a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtilTest.java
+++ b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtilTest.java
@@ -47,6 +47,7 @@
 import org.onosproject.openstacknetworking.impl.TestRouterInterface;
 import org.onosproject.openstacknetworking.web.OpenstackFloatingIpWebResourceTest;
 import org.onosproject.openstacknetworking.web.OpenstackNetworkWebResourceTest;
+import org.onosproject.openstacknode.api.DefaultKeystoneConfig;
 import org.onosproject.openstacknode.api.DefaultOpenstackAuth;
 import org.onosproject.openstacknode.api.DefaultOpenstackNode;
 import org.onosproject.openstacknode.api.KeystoneConfig;
@@ -54,7 +55,6 @@
 import org.onosproject.openstacknode.api.OpenstackAuth;
 import org.onosproject.openstacknode.api.OpenstackNode;
 import org.onosproject.openstacknode.api.OpenstackNodeTest;
-import org.onosproject.openstacknode.api.DefaultKeystoneConfig;
 import org.openstack4j.model.network.NetFloatingIP;
 import org.openstack4j.model.network.Network;
 import org.openstack4j.model.network.Port;
@@ -75,6 +75,7 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.onosproject.net.AnnotationKeys.PORT_NAME;
+import static org.onosproject.openstacknetworking.api.Constants.REST_UTF8;
 import static org.onosproject.openstacknetworking.api.Constants.UNSUPPORTED_VENDOR;
 import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.addRouterIface;
 import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.associatedFloatingIp;
@@ -109,7 +110,7 @@
     private OpenstackNode openstackControlNodeV3;
 
     @Before
-    public void setUp() {
+    public void setUp() throws IOException {
 
         instancePort1 = DefaultInstancePort.builder()
                 .networkId("net-id-1")
@@ -151,11 +152,14 @@
                 .getResourceAsStream("openstack-floatingip3.json");
 
         floatingIp1 = (NetFloatingIP)
-                jsonToModelEntity(floatingIpjsonStream1, NeutronFloatingIP.class);
+                jsonToModelEntity(IOUtils.toString(floatingIpjsonStream1, REST_UTF8),
+                        NeutronFloatingIP.class);
         floatingIp2 = (NetFloatingIP)
-                jsonToModelEntity(floatingIpjsonStream2, NeutronFloatingIP.class);
+                jsonToModelEntity(IOUtils.toString(floatingIpjsonStream2, REST_UTF8),
+                        NeutronFloatingIP.class);
         floatingIp3 = (NetFloatingIP)
-                jsonToModelEntity(floatingIpjsonStream3, NeutronFloatingIP.class);
+                jsonToModelEntity(IOUtils.toString(floatingIpjsonStream3, REST_UTF8),
+                        NeutronFloatingIP.class);
 
         InputStream portJsonStream = OpenstackNetworkWebResourceTest.class
                 .getResourceAsStream("openstack-port.json");
@@ -168,14 +172,18 @@
                 .getResourceAsStream("openstack-port-sriov3.json");
 
         openstackPort = (Port)
-                jsonToModelEntity(portJsonStream, NeutronPort.class);
+                jsonToModelEntity(
+                        IOUtils.toString(portJsonStream, REST_UTF8), NeutronPort.class);
 
         openstackSriovPort1 = (Port)
-                jsonToModelEntity(sriovPortJsonStream1, NeutronPort.class);
+                jsonToModelEntity(IOUtils.toString(sriovPortJsonStream1, REST_UTF8),
+                        NeutronPort.class);
         openstackSriovPort2 = (Port)
-                jsonToModelEntity(sriovPortJsonStream2, NeutronPort.class);
+                jsonToModelEntity(IOUtils.toString(sriovPortJsonStream2, REST_UTF8),
+                        NeutronPort.class);
         openstackSriovPort3 = (Port)
-                jsonToModelEntity(sriovPortJsonStream3, NeutronPort.class);
+                jsonToModelEntity(IOUtils.toString(sriovPortJsonStream3, REST_UTF8),
+                        NeutronPort.class);
     }
 
     @After
@@ -191,7 +199,7 @@
                 modelEntityToJson(floatingIp1, NeutronFloatingIP.class);
         InputStream is = IOUtils.toInputStream(floatingIpNode.toString(), StandardCharsets.UTF_8.name());
         NetFloatingIP floatingIp2 = (NetFloatingIP)
-                jsonToModelEntity(is, NeutronFloatingIP.class);
+                jsonToModelEntity(IOUtils.toString(is, REST_UTF8), NeutronFloatingIP.class);
         new EqualsTester().addEqualityGroup(floatingIp1, floatingIp2).testEquals();
     }
 
diff --git a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackFloatingIpWebResourceTest.java b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackFloatingIpWebResourceTest.java
index e786784..f5890e5 100644
--- a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackFloatingIpWebResourceTest.java
+++ b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackFloatingIpWebResourceTest.java
@@ -20,6 +20,7 @@
 import org.junit.Test;
 import org.onlab.osgi.ServiceDirectory;
 import org.onlab.osgi.TestServiceDirectory;
+import org.onosproject.openstacknetworking.api.OpenstackHaService;
 import org.onosproject.openstacknetworking.api.OpenstackRouterAdminService;
 import org.onosproject.rest.resources.ResourceTest;
 
@@ -32,6 +33,7 @@
 import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.anyString;
 import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
@@ -45,6 +47,7 @@
 
     final OpenstackRouterAdminService mockOpenstackRouterAdminService =
             createMock(OpenstackRouterAdminService.class);
+    final OpenstackHaService mockOpenstackHaService = createMock(OpenstackHaService.class);
     private static final String PATH = "floatingips";
 
     /**
@@ -62,9 +65,9 @@
         ServiceDirectory testDirectory =
                 new TestServiceDirectory()
                         .add(OpenstackRouterAdminService.class,
-                                mockOpenstackRouterAdminService);
+                                mockOpenstackRouterAdminService)
+                        .add(OpenstackHaService.class, mockOpenstackHaService);
         setServiceDirectory(testDirectory);
-
     }
 
     /**
@@ -74,6 +77,8 @@
     public void testCreateFloatingIpWithCreationOperation() {
         mockOpenstackRouterAdminService.createFloatingIp(anyObject());
         replay(mockOpenstackRouterAdminService);
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
 
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackFloatingIpWebResourceTest.class
@@ -93,6 +98,8 @@
      */
     @Test
     public void testCreateFloatingIpWithIncorrectInput() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackFloatingIpWebResourceTest.class
                 .getResourceAsStream("dummy.json");
@@ -109,6 +116,8 @@
      */
     @Test
     public void testCreateFloatingIpWithDuplicatedIp() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackRouterAdminService.createFloatingIp(anyObject());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackRouterAdminService);
@@ -131,6 +140,8 @@
      */
     @Test
     public void testUpdateFloatingIpWithUpdatingOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackRouterAdminService.updateFloatingIp(anyObject());
         replay(mockOpenstackRouterAdminService);
 
@@ -153,6 +164,8 @@
      */
     @Test
     public void testUpdateFloatingIpWithIncorrectInput() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackFloatingIpWebResourceTest.class
                 .getResourceAsStream("dummy.json");
@@ -170,6 +183,8 @@
      */
     @Test
     public void testUpdateFloatingIpWithNonexistId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackRouterAdminService.updateFloatingIp(anyObject());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackRouterAdminService);
@@ -193,6 +208,8 @@
      */
     @Test
     public void testDeleteFloatingIpWithDeletionOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackRouterAdminService.removeFloatingIp(anyString());
         replay(mockOpenstackRouterAdminService);
 
@@ -213,6 +230,8 @@
      */
     @Test
     public void testDeleteFloatingIpWithNonexistId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackRouterAdminService.removeFloatingIp(anyString());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackRouterAdminService);
diff --git a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackNetworkWebResourceTest.java b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackNetworkWebResourceTest.java
index bbac93b..ecafc14 100644
--- a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackNetworkWebResourceTest.java
+++ b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackNetworkWebResourceTest.java
@@ -20,6 +20,7 @@
 import org.junit.Test;
 import org.onlab.osgi.ServiceDirectory;
 import org.onlab.osgi.TestServiceDirectory;
+import org.onosproject.openstacknetworking.api.OpenstackHaService;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkAdminService;
 import org.onosproject.rest.resources.ResourceTest;
 
@@ -32,6 +33,7 @@
 import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.anyString;
 import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
@@ -45,6 +47,7 @@
 
     final OpenstackNetworkAdminService mockOpenstackNetworkAdminService =
             createMock(OpenstackNetworkAdminService.class);
+    final OpenstackHaService mockOpenstackHaService = createMock(OpenstackHaService.class);
     private static final String PATH = "networks";
 
     /**
@@ -62,7 +65,8 @@
         ServiceDirectory testDirectory =
                 new TestServiceDirectory()
                         .add(OpenstackNetworkAdminService.class,
-                                mockOpenstackNetworkAdminService);
+                                mockOpenstackNetworkAdminService)
+                        .add(OpenstackHaService.class, mockOpenstackHaService);
         setServiceDirectory(testDirectory);
     }
 
@@ -73,6 +77,8 @@
     public void testCreateNetworkWithCreationOperation() {
         mockOpenstackNetworkAdminService.createNetwork(anyObject());
         replay(mockOpenstackNetworkAdminService);
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
 
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackNetworkWebResourceTest.class
@@ -92,6 +98,9 @@
      */
     @Test
     public void testCreateNetworkWithIncorrectInput() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
+
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackNetworkWebResourceTest.class
                 .getResourceAsStream("dummy.json");
@@ -111,6 +120,8 @@
         mockOpenstackNetworkAdminService.createNetwork(anyObject());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackNetworkAdminService);
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
 
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackNetworkWebResourceTest.class
@@ -132,6 +143,8 @@
     public void testUpdateNetworkWithUpdatingOperation() {
         mockOpenstackNetworkAdminService.updateNetwork(anyObject());
         replay(mockOpenstackNetworkAdminService);
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
 
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackNetworkWebResourceTest.class
@@ -152,6 +165,9 @@
      */
     @Test
     public void testUpdateNetworkWithIncorrectInput() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
+
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackNetworkWebResourceTest.class
                 .getResourceAsStream("dummy.json");
@@ -169,6 +185,8 @@
      */
     @Test
     public void testUpdateNetworkWithNonexistId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackNetworkAdminService.updateNetwork(anyObject());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackNetworkAdminService);
@@ -192,6 +210,8 @@
      */
     @Test
     public void testDeleteNetworkWithDeletionOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackNetworkAdminService.removeNetwork(anyString());
         replay(mockOpenstackNetworkAdminService);
 
@@ -212,6 +232,8 @@
      */
     @Test
     public void testDeleteNetworkWithNonexistId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackNetworkAdminService.removeNetwork(anyString());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackNetworkAdminService);
diff --git a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackPortWebResourceTest.java b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackPortWebResourceTest.java
index 7d7a603..ad0867a 100644
--- a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackPortWebResourceTest.java
+++ b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackPortWebResourceTest.java
@@ -20,6 +20,7 @@
 import org.junit.Test;
 import org.onlab.osgi.ServiceDirectory;
 import org.onlab.osgi.TestServiceDirectory;
+import org.onosproject.openstacknetworking.api.OpenstackHaService;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkAdminService;
 import org.onosproject.openstacknode.api.OpenstackNodeService;
 import org.onosproject.rest.resources.ResourceTest;
@@ -33,6 +34,7 @@
 import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.anyString;
 import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
@@ -48,6 +50,8 @@
             createMock(OpenstackNetworkAdminService.class);
     final OpenstackNodeService mockOpenstackNodeService =
             createMock(OpenstackNodeService.class);
+    final OpenstackHaService mockOpenstackHaService = createMock(OpenstackHaService.class);
+
     private static final String PATH = "ports";
 
     /**
@@ -64,7 +68,8 @@
     public void setUpTest() {
         ServiceDirectory testDirectory = new TestServiceDirectory()
                 .add(OpenstackNetworkAdminService.class, mockOpenstackNetworkAdminService)
-                .add(OpenstackNodeService.class, mockOpenstackNodeService);
+                .add(OpenstackNodeService.class, mockOpenstackNodeService)
+                .add(OpenstackHaService.class, mockOpenstackHaService);
         setServiceDirectory(testDirectory);
 
     }
@@ -76,6 +81,8 @@
     public void testCreatePortWithCreationOperation() {
         mockOpenstackNetworkAdminService.createPort(anyObject());
         replay(mockOpenstackNetworkAdminService);
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
 
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackNetworkWebResourceTest.class
@@ -95,6 +102,9 @@
      */
     @Test
     public void testCreatePortWithIncorrectInput() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
+
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackPortWebResourceTest.class
                 .getResourceAsStream("dummy.json");
@@ -111,6 +121,8 @@
      */
     @Test
     public void testCreatePortWithDuplicatedId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackNetworkAdminService.createPort(anyObject());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackNetworkAdminService);
@@ -133,6 +145,8 @@
      */
     @Test
     public void testUpdatePortWithUpdatingOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackNetworkAdminService.updatePort(anyObject());
         replay(mockOpenstackNetworkAdminService);
 
@@ -155,6 +169,9 @@
      */
     @Test
     public void testUpdatePortWithIncorrectInput() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
+
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackNetworkWebResourceTest.class
                 .getResourceAsStream("dummy.json");
@@ -172,6 +189,9 @@
      */
     @Test
     public void testUpdatePortWithNonexistId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
+
         mockOpenstackNetworkAdminService.updatePort(anyObject());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackNetworkAdminService);
@@ -195,6 +215,9 @@
      */
     @Test
     public void testDeletePortWithDeletionOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
+
         mockOpenstackNetworkAdminService.removePort(anyString());
         replay(mockOpenstackNetworkAdminService);
 
@@ -215,6 +238,9 @@
      */
     @Test
     public void testDeletePortWithNonexistId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
+
         mockOpenstackNetworkAdminService.removePort(anyString());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackNetworkAdminService);
diff --git a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackRouterWebResourceTest.java b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackRouterWebResourceTest.java
index d0a24b3..3763e48 100644
--- a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackRouterWebResourceTest.java
+++ b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackRouterWebResourceTest.java
@@ -20,6 +20,7 @@
 import org.junit.Test;
 import org.onlab.osgi.ServiceDirectory;
 import org.onlab.osgi.TestServiceDirectory;
+import org.onosproject.openstacknetworking.api.OpenstackHaService;
 import org.onosproject.openstacknetworking.api.OpenstackRouterAdminService;
 import org.onosproject.rest.resources.ResourceTest;
 
@@ -32,6 +33,7 @@
 import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.anyString;
 import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
@@ -45,6 +47,7 @@
 
     final OpenstackRouterAdminService mockOpenstackRouterAdminService =
             createMock(OpenstackRouterAdminService.class);
+    final OpenstackHaService mockOpenstackHaService = createMock(OpenstackHaService.class);
     private static final String PATH = "routers";
 
     /**
@@ -62,7 +65,8 @@
         ServiceDirectory testDirectory =
                 new TestServiceDirectory()
                         .add(OpenstackRouterAdminService.class,
-                                mockOpenstackRouterAdminService);
+                                mockOpenstackRouterAdminService)
+                        .add(OpenstackHaService.class, mockOpenstackHaService);
         setServiceDirectory(testDirectory);
     }
 
@@ -73,6 +77,8 @@
     public void testCreateRouterWithCreationOperation() {
         mockOpenstackRouterAdminService.createRouter(anyObject());
         replay(mockOpenstackRouterAdminService);
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
 
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackRouterWebResourceTest.class
@@ -92,6 +98,9 @@
      */
     @Test
     public void testCreateRouterWithIncorrectInput() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
+
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackRouterWebResourceTest.class
                 .getResourceAsStream("dummy.json");
@@ -108,6 +117,8 @@
      */
     @Test
     public void testCreateRouterWithDuplicatedId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackRouterAdminService.createRouter(anyObject());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackRouterAdminService);
@@ -130,6 +141,8 @@
      */
     @Test
     public void testUpdateRouterWithUpdatingOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackRouterAdminService.updateRouter(anyObject());
         replay(mockOpenstackRouterAdminService);
 
@@ -152,6 +165,9 @@
      */
     @Test
     public void testUpdateRouterWithIncorrectInput() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
+
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackRouterWebResourceTest.class
                 .getResourceAsStream("dummy.json");
@@ -169,6 +185,8 @@
      */
     @Test
     public void testUpdateRouterWithNonexistId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackRouterAdminService.updateRouter(anyObject());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackRouterAdminService);
@@ -192,6 +210,8 @@
      */
     @Test
     public void testDeleteRouterWithDeletionOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackRouterAdminService.removeRouter(anyString());
         replay(mockOpenstackRouterAdminService);
 
@@ -212,6 +232,8 @@
      */
     @Test
     public void testDeleteRouterWithNonexistId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackRouterAdminService.removeRouter(anyString());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackRouterAdminService);
@@ -233,6 +255,8 @@
      */
     @Test
     public void testAddRouterInterfaceWithAdditionOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackRouterAdminService.addRouterInterface(anyObject());
         replay(mockOpenstackRouterAdminService);
 
@@ -255,6 +279,8 @@
      */
     @Test
     public void testAddRouterInterfaceWithNonexistId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackRouterAdminService.addRouterInterface(anyObject());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackRouterAdminService);
@@ -278,6 +304,8 @@
      */
     @Test
     public void testDeleteRouterInterfaceWithDeletionOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackRouterAdminService.removeRouterInterface(anyString());
         replay(mockOpenstackRouterAdminService);
 
@@ -300,6 +328,8 @@
      */
     @Test
     public void testDeleteRouterInterfaceWithNonexistId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackRouterAdminService.removeRouterInterface(anyString());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackRouterAdminService);
diff --git a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackSecurityGroupRuleWebResourceTest.java b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackSecurityGroupRuleWebResourceTest.java
index 4ffafc1..57caf0b 100644
--- a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackSecurityGroupRuleWebResourceTest.java
+++ b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackSecurityGroupRuleWebResourceTest.java
@@ -20,6 +20,7 @@
 import org.junit.Test;
 import org.onlab.osgi.ServiceDirectory;
 import org.onlab.osgi.TestServiceDirectory;
+import org.onosproject.openstacknetworking.api.OpenstackHaService;
 import org.onosproject.openstacknetworking.api.OpenstackSecurityGroupAdminService;
 import org.onosproject.rest.resources.ResourceTest;
 
@@ -32,6 +33,7 @@
 import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.anyString;
 import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
@@ -45,6 +47,7 @@
 
     final OpenstackSecurityGroupAdminService mockOpenstackSecurityGroupAdminService =
             createMock(OpenstackSecurityGroupAdminService.class);
+    final OpenstackHaService mockOpenstackHaService = createMock(OpenstackHaService.class);
     private static final String PATH = "security-group-rules";
 
     /**
@@ -62,7 +65,8 @@
         ServiceDirectory testDirectory =
                 new TestServiceDirectory()
                         .add(OpenstackSecurityGroupAdminService.class,
-                                mockOpenstackSecurityGroupAdminService);
+                                mockOpenstackSecurityGroupAdminService)
+                        .add(OpenstackHaService.class, mockOpenstackHaService);
         setServiceDirectory(testDirectory);
     }
 
@@ -71,6 +75,8 @@
      */
     @Test
     public void testCreateSecurityGroupRulesWithCreationOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackSecurityGroupAdminService.createSecurityGroupRule(anyObject());
         replay(mockOpenstackSecurityGroupAdminService);
 
@@ -92,6 +98,9 @@
      */
     @Test
     public void testCreateSecurityGroupRulesWithIncorrectInput() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
+
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackSecurityGroupRuleWebResourceTest.class
                 .getResourceAsStream("dummy.json");
@@ -108,6 +117,8 @@
      */
     @Test
     public void testCreateSecurityGroupRulesWithDuplicatedId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackSecurityGroupAdminService.createSecurityGroupRule(anyObject());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackSecurityGroupAdminService);
@@ -130,6 +141,8 @@
      */
     @Test
     public void testDeleteSecurityGroupRuleWithDeletionOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackSecurityGroupAdminService.removeSecurityGroupRule(anyString());
         replay(mockOpenstackSecurityGroupAdminService);
 
@@ -150,6 +163,8 @@
      */
     @Test
     public void testDeleteSecurityGroupRuleWithNonexistId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackSecurityGroupAdminService.removeSecurityGroupRule(anyString());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackSecurityGroupAdminService);
diff --git a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackSecurityGroupWebResourceTest.java b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackSecurityGroupWebResourceTest.java
index 49f85b4..d8b7844 100644
--- a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackSecurityGroupWebResourceTest.java
+++ b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackSecurityGroupWebResourceTest.java
@@ -20,6 +20,7 @@
 import org.junit.Test;
 import org.onlab.osgi.ServiceDirectory;
 import org.onlab.osgi.TestServiceDirectory;
+import org.onosproject.openstacknetworking.api.OpenstackHaService;
 import org.onosproject.openstacknetworking.api.OpenstackSecurityGroupAdminService;
 import org.onosproject.rest.resources.ResourceTest;
 
@@ -32,6 +33,7 @@
 import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.anyString;
 import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
@@ -45,6 +47,7 @@
 
     final OpenstackSecurityGroupAdminService mockOpenstackSecurityGroupAdminService =
             createMock(OpenstackSecurityGroupAdminService.class);
+    final OpenstackHaService mockOpenstackHaService = createMock(OpenstackHaService.class);
     private static final String PATH = "security-groups";
 
     /**
@@ -62,7 +65,8 @@
         ServiceDirectory testDirectory =
                 new TestServiceDirectory()
                         .add(OpenstackSecurityGroupAdminService.class,
-                                mockOpenstackSecurityGroupAdminService);
+                                mockOpenstackSecurityGroupAdminService)
+                        .add(OpenstackHaService.class, mockOpenstackHaService);
         setServiceDirectory(testDirectory);
     }
 
@@ -73,6 +77,8 @@
     public void testCreateSecurityGroupWithCreationOperation() {
         mockOpenstackSecurityGroupAdminService.createSecurityGroup(anyObject());
         replay(mockOpenstackSecurityGroupAdminService);
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
 
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackSecurityGroupWebResourceTest.class
@@ -92,6 +98,9 @@
      */
     @Test
     public void testCreateSecurityGroupWithIncorrectInput() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
+
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackSecurityGroupWebResourceTest.class
                 .getResourceAsStream("dummy.json");
@@ -108,6 +117,8 @@
      */
     @Test
     public void testCreateSecurityGroupWithDuplicatedId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackSecurityGroupAdminService.createSecurityGroup(anyObject());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackSecurityGroupAdminService);
@@ -130,6 +141,9 @@
      */
     @Test
     public void testUpdateSecurityGroupWithUpdatingOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
+
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackSecurityGroupWebResourceTest.class
                 .getResourceAsStream("openstack-security-group.json");
@@ -147,6 +161,8 @@
      */
     @Test
     public void testDeleteSecurityGroupWithDeletionOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackSecurityGroupAdminService.removeSecurityGroup(anyString());
         replay(mockOpenstackSecurityGroupAdminService);
 
@@ -167,6 +183,8 @@
      */
     @Test
     public void testDeleteSecurityGroupWithNonexistId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackSecurityGroupAdminService.removeSecurityGroup(anyString());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackSecurityGroupAdminService);
diff --git a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackSubnetWebResourceTest.java b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackSubnetWebResourceTest.java
index 1dabccb..cd9a39d 100644
--- a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackSubnetWebResourceTest.java
+++ b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/web/OpenstackSubnetWebResourceTest.java
@@ -20,6 +20,7 @@
 import org.junit.Test;
 import org.onlab.osgi.ServiceDirectory;
 import org.onlab.osgi.TestServiceDirectory;
+import org.onosproject.openstacknetworking.api.OpenstackHaService;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkAdminService;
 import org.onosproject.rest.resources.ResourceTest;
 
@@ -32,6 +33,7 @@
 import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.anyString;
 import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
@@ -45,6 +47,7 @@
 
     final OpenstackNetworkAdminService mockOpenstackNetworkAdminService =
             createMock(OpenstackNetworkAdminService.class);
+    final OpenstackHaService mockOpenstackHaService = createMock(OpenstackHaService.class);
     private static final String PATH = "subnets";
 
     /**
@@ -62,7 +65,8 @@
         ServiceDirectory testDirectory =
                 new TestServiceDirectory()
                         .add(OpenstackNetworkAdminService.class,
-                                mockOpenstackNetworkAdminService);
+                                mockOpenstackNetworkAdminService)
+                        .add(OpenstackHaService.class, mockOpenstackHaService);
         setServiceDirectory(testDirectory);
 
     }
@@ -72,6 +76,8 @@
      */
     @Test
     public void testCreateSubnetWithCreationOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackNetworkAdminService.createSubnet(anyObject());
         replay(mockOpenstackNetworkAdminService);
 
@@ -93,6 +99,8 @@
      */
     @Test
     public void testCreateSubnetWithIncorrectInput() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackSubnetWebResourceTest.class
                 .getResourceAsStream("dummy.json");
@@ -109,6 +117,8 @@
      */
     @Test
     public void testCreateSubnetWithDuplicatedId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackNetworkAdminService.createSubnet(anyObject());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackNetworkAdminService);
@@ -131,6 +141,8 @@
      */
     @Test
     public void testUpdateSubnetWithUpdatingOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackNetworkAdminService.updateSubnet(anyObject());
         replay(mockOpenstackNetworkAdminService);
 
@@ -153,6 +165,9 @@
      */
     @Test
     public void testUpdateSubnetWithIncorrectInput() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
+
         final WebTarget wt = target();
         InputStream jsonStream = OpenstackSubnetWebResourceTest.class
                 .getResourceAsStream("dummy.json");
@@ -170,6 +185,8 @@
      */
     @Test
     public void testUpdateSubnetWithNonexistId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackNetworkAdminService.updateSubnet(anyObject());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackNetworkAdminService);
@@ -193,6 +210,8 @@
      */
     @Test
     public void testDeleteSubnetWithDeletionOperation() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackNetworkAdminService.removeSubnet(anyString());
         replay(mockOpenstackNetworkAdminService);
 
@@ -213,6 +232,8 @@
      */
     @Test
     public void testDeleteSubnetWithNonexistId() {
+        expect(mockOpenstackHaService.isActive()).andReturn(true).anyTimes();
+        replay(mockOpenstackHaService);
         mockOpenstackNetworkAdminService.removeSubnet(anyString());
         expectLastCall().andThrow(new IllegalArgumentException());
         replay(mockOpenstackNetworkAdminService);