Extract web and codec into a separated web pkg in kubevirt-net app

Change-Id: If15fe4391009a09a79e60965d90fac26d5bad7fe
diff --git a/apps/kubevirt-networking/app/BUILD b/apps/kubevirt-networking/app/BUILD
index 76ccbfa..0358e6e 100644
--- a/apps/kubevirt-networking/app/BUILD
+++ b/apps/kubevirt-networking/app/BUILD
@@ -5,7 +5,6 @@
     "//apps/kubevirt-node/api:onos-apps-kubevirt-node-api",
     "//apps/kubevirt-networking/api:onos-apps-kubevirt-networking-api",
     "@commons_net//jar",
-    "@jersey_client//jar",
     "@json//jar",
     "@k8s_client//jar",
     "@k8s_model//jar",
@@ -40,20 +39,13 @@
     "@dns_java//jar",
 ]
 
-TEST_DEPS = TEST_ADAPTERS + TEST_REST + [
+TEST_DEPS = TEST_ADAPTERS + [
     "//core/api:onos-api-tests",
     "//core/common:onos-core-common-tests",
-    "//web/api:onos-rest-tests",
-    "@minimal_json//jar",
 ]
 
 osgi_jar_with_tests(
-    api_description = "REST API for KubeVirt Networking",
-    api_package = "org.onosproject.kubevirtnetworking.web",
-    api_title = "KubeVirt Networking API",
-    api_version = "1.0",
     karaf_command_packages = ["org.onosproject.kubevirtnetworking.cli"],
     test_deps = TEST_DEPS,
-    web_context = "/onos/kubevirtnetworking",
     deps = COMPILE_DEPS,
 )
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtFloatingIpCodec.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtFloatingIpCodec.java
deleted file mode 100644
index fd530a1..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtFloatingIpCodec.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onlab.packet.IpAddress;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtFloatingIp;
-import org.onosproject.kubevirtnetworking.api.KubevirtFloatingIp;
-import org.slf4j.Logger;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.nullIsIllegal;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Kubevirt floating IP codec used for serializing and de-serializing JSON string.
- */
-public final class KubevirtFloatingIpCodec extends JsonCodec<KubevirtFloatingIp> {
-
-    private final Logger log = getLogger(getClass());
-
-    private static final String ID = "id";
-    private static final String ROUTER_NAME = "routerName";
-    private static final String POD_NAME = "podName";
-    private static final String VM_NAME = "vmName";
-    private static final String NETWORK_NAME = "networkName";
-    private static final String FLOATING_IP = "floatingIp";
-    private static final String FIXED_IP = "fixedIp";
-
-    private static final String MISSING_MESSAGE = " is required in KubevirtFloatingIp";
-
-    @Override
-    public ObjectNode encode(KubevirtFloatingIp fip, CodecContext context) {
-        checkNotNull(fip, "Kubevirt floating IP cannot be null");
-
-        ObjectNode result = context.mapper().createObjectNode()
-                .put(ID, fip.id())
-                .put(ROUTER_NAME, fip.routerName())
-                .put(NETWORK_NAME, fip.networkName())
-                .put(FLOATING_IP, fip.floatingIp().toString());
-
-        if (fip.podName() != null) {
-            result.put(POD_NAME, fip.podName());
-        }
-
-        if (fip.vmName() != null) {
-            result.put(VM_NAME, fip.vmName());
-        }
-
-        if (fip.fixedIp() != null) {
-            result.put(FIXED_IP, fip.fixedIp().toString());
-        }
-
-        return result;
-    }
-
-    @Override
-    public KubevirtFloatingIp decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            return null;
-        }
-
-        String id = nullIsIllegal(json.get(ID).asText(), ID + MISSING_MESSAGE);
-        String routerName = nullIsIllegal(json.get(ROUTER_NAME).asText(),
-                ROUTER_NAME + MISSING_MESSAGE);
-        String floatingIp = nullIsIllegal(json.get(FLOATING_IP).asText(),
-                FLOATING_IP + MISSING_MESSAGE);
-        String networkName = nullIsIllegal(json.get(NETWORK_NAME).asText(),
-                NETWORK_NAME + MISSING_MESSAGE);
-
-        KubevirtFloatingIp.Builder builder = DefaultKubevirtFloatingIp.builder()
-                .id(id)
-                .routerName(routerName)
-                .networkName(networkName)
-                .floatingIp(IpAddress.valueOf(floatingIp));
-
-        JsonNode podName = json.get(POD_NAME);
-        if (podName != null) {
-            builder.podName(podName.asText());
-        }
-
-        JsonNode vmName = json.get(VM_NAME);
-        if (vmName != null) {
-            builder.vmName(vmName.asText());
-        }
-
-        JsonNode fixedIp = json.get(FIXED_IP);
-        if (fixedIp != null) {
-            builder.fixedIp(IpAddress.valueOf(fixedIp.asText()));
-        }
-
-        return builder.build();
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtHostRouteCodec.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtHostRouteCodec.java
deleted file mode 100644
index 2d73979..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtHostRouteCodec.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.kubevirtnetworking.api.KubevirtHostRoute;
-import org.slf4j.Logger;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.nullIsIllegal;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Kubevirt host route codec used for serializing and de-serializing JSON string.
- */
-public final class KubevirtHostRouteCodec extends JsonCodec<KubevirtHostRoute> {
-
-    private final Logger log = getLogger(getClass());
-
-    private static final String DESTINATION = "destination";
-    private static final String NEXTHOP = "nexthop";
-
-    private static final String MISSING_MESSAGE = " is required in KubevirtHostRoute";
-
-    @Override
-    public ObjectNode encode(KubevirtHostRoute hostRoute, CodecContext context) {
-        checkNotNull(hostRoute, "Kubernetes network cannot be null");
-
-        ObjectNode result = context.mapper().createObjectNode()
-                .put(DESTINATION, hostRoute.destination().toString());
-
-        if (hostRoute.nexthop() != null) {
-            result.put(NEXTHOP, hostRoute.nexthop().toString());
-        }
-
-        return result;
-    }
-
-    @Override
-    public KubevirtHostRoute decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            return null;
-        }
-
-        String destination = nullIsIllegal(json.get(DESTINATION).asText(),
-                DESTINATION + MISSING_MESSAGE);
-        JsonNode nexthopJson = json.get(NEXTHOP);
-        IpAddress nexthop = null;
-
-        if (nexthopJson != null) {
-            nexthop = IpAddress.valueOf(nexthopJson.asText());
-        }
-
-        return new KubevirtHostRoute(IpPrefix.valueOf(destination), nexthop);
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtIpPoolCodec.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtIpPoolCodec.java
deleted file mode 100644
index 8f5522c..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtIpPoolCodec.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onlab.packet.IpAddress;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.kubevirtnetworking.api.KubevirtIpPool;
-import org.slf4j.Logger;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.nullIsIllegal;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Kubevirt IP pool codec used for serializing and de-serializing JSON string.
- */
-public final class KubevirtIpPoolCodec extends JsonCodec<KubevirtIpPool> {
-
-    private final Logger log = getLogger(getClass());
-
-    private static final String START = "start";
-    private static final String END = "end";
-
-    private static final String MISSING_MESSAGE = " is required in KubevirtIpPool";
-
-    @Override
-    public ObjectNode encode(KubevirtIpPool ipPool, CodecContext context) {
-        checkNotNull(ipPool, "Kubevirt IP pool cannot be null");
-
-        return context.mapper().createObjectNode()
-                .put(START, ipPool.start().toString())
-                .put(END, ipPool.end().toString());
-    }
-
-    @Override
-    public KubevirtIpPool decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            return null;
-        }
-
-        String start = nullIsIllegal(json.get(START).asText(), START + MISSING_MESSAGE);
-        String end = nullIsIllegal(json.get(END).asText(), END + MISSING_MESSAGE);
-
-        return new KubevirtIpPool(IpAddress.valueOf(start), IpAddress.valueOf(end));
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerCodec.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerCodec.java
deleted file mode 100644
index c11d829..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerCodec.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onlab.packet.IpAddress;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtLoadBalancer;
-import org.onosproject.kubevirtnetworking.api.KubevirtLoadBalancer;
-import org.onosproject.kubevirtnetworking.api.KubevirtLoadBalancerRule;
-import org.slf4j.Logger;
-
-import java.util.HashSet;
-import java.util.Set;
-import java.util.stream.IntStream;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.nullIsIllegal;
-import static org.slf4j.LoggerFactory.getLogger;
-
-public final class KubevirtLoadBalancerCodec extends JsonCodec<KubevirtLoadBalancer> {
-
-    private final Logger log = getLogger(getClass());
-
-    private static final String NAME = "name";
-    private static final String DESCRIPTION = "description";
-    private static final String VIP = "vip";
-    private static final String NETWORK_ID = "networkId";
-    private static final String MEMBERS = "members";
-    private static final String RULES = "rules";
-
-    private static final String MISSING_MESSAGE = " is required in KubevirtLoadBalancer";
-
-    @Override
-    public ObjectNode encode(KubevirtLoadBalancer lb, CodecContext context) {
-        checkNotNull(lb, "Kubevirt load balancer cannot be null");
-
-        ObjectNode result = context.mapper().createObjectNode()
-                .put(NAME, lb.name())
-                .put(VIP, lb.vip().toString())
-                .put(NETWORK_ID, lb.networkId());
-
-        if (lb.description() != null) {
-            result.put(DESCRIPTION, lb.description());
-        }
-
-        if (lb.members() != null && !lb.members().isEmpty()) {
-            ArrayNode members = context.mapper().createArrayNode();
-            for (IpAddress ip : lb.members()) {
-                members.add(ip.toString());
-            }
-            result.set(MEMBERS, members);
-        }
-
-        if (lb.rules() != null && !lb.rules().isEmpty()) {
-            ArrayNode rules = context.mapper().createArrayNode();
-            for (KubevirtLoadBalancerRule rule : lb.rules()) {
-                ObjectNode ruleJson = context.codec(
-                        KubevirtLoadBalancerRule.class).encode(rule, context);
-                rules.add(ruleJson);
-            }
-            result.set(RULES, rules);
-        }
-
-        return result;
-    }
-
-    @Override
-    public KubevirtLoadBalancer decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            return null;
-        }
-
-        String name = nullIsIllegal(json.get(NAME).asText(), NAME + MISSING_MESSAGE);
-        IpAddress vip = IpAddress.valueOf(nullIsIllegal(json.get(VIP).asText(),
-                VIP + MISSING_MESSAGE));
-        String networkId = nullIsIllegal(json.get(NETWORK_ID).asText(),
-                NETWORK_ID + MISSING_MESSAGE);
-
-        KubevirtLoadBalancer.Builder builder = DefaultKubevirtLoadBalancer.builder()
-                .name(name)
-                .vip(vip)
-                .networkId(networkId);
-
-        JsonNode description = json.get(DESCRIPTION);
-        if (description != null) {
-            builder.description(description.asText());
-        }
-
-        ArrayNode membersJson = (ArrayNode) json.get(MEMBERS);
-        if (membersJson != null) {
-            Set<IpAddress> members = new HashSet<>();
-            for (JsonNode memberJson : membersJson) {
-                members.add(IpAddress.valueOf(memberJson.asText()));
-            }
-            builder.members(members);
-        }
-
-        JsonNode rulesJson = json.get(RULES);
-        if (rulesJson != null) {
-            Set<KubevirtLoadBalancerRule> rules = new HashSet<>();
-            IntStream.range(0, rulesJson.size())
-                    .forEach(i -> {
-                        ObjectNode ruleJson = get(rulesJson, i);
-                        KubevirtLoadBalancerRule rule = context.codec(
-                                KubevirtLoadBalancerRule.class).decode(ruleJson, context);
-                        rules.add(rule);
-                    });
-            builder.rules(rules);
-        }
-
-        return builder.build();
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerRuleCodec.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerRuleCodec.java
deleted file mode 100644
index 582d4d3..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerRuleCodec.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtLoadBalancerRule;
-import org.onosproject.kubevirtnetworking.api.KubevirtLoadBalancerRule;
-import org.slf4j.Logger;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Kubevirt load balancer rule codec used for serializing and de-serializing JSON string.
- */
-public final class KubevirtLoadBalancerRuleCodec extends JsonCodec<KubevirtLoadBalancerRule> {
-
-    private final Logger log = getLogger(getClass());
-
-    private static final String PROTOCOL = "protocol";
-    private static final String PORT_RANGE_MAX = "portRangeMax";
-    private static final String PORT_RANGE_MIN = "portRangeMin";
-    private static final String TCP = "TCP";
-    private static final String UDP = "UDP";
-
-    private static final String MISSING_MESSAGE = " is required in KubevirtLoadBalancerRule";
-
-    @Override
-    public ObjectNode encode(KubevirtLoadBalancerRule rule, CodecContext context) {
-        checkNotNull(rule, "Kubevirt load balancer rule cannot be null");
-
-        ObjectNode result = context.mapper().createObjectNode().put(PROTOCOL, rule.protocol());
-
-        if (rule.protocol().equalsIgnoreCase(TCP) || rule.protocol().equalsIgnoreCase(UDP)) {
-            result.put(PORT_RANGE_MAX, rule.portRangeMax()).put(PORT_RANGE_MIN, rule.portRangeMin());
-        }
-        return result;
-    }
-
-    @Override
-    public KubevirtLoadBalancerRule decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            return null;
-        }
-
-        KubevirtLoadBalancerRule.Builder builder = DefaultKubevirtLoadBalancerRule.builder();
-
-        JsonNode protocolJson = json.get(PROTOCOL);
-        String protocol = "";
-        if (protocolJson != null) {
-            protocol = protocolJson.asText();
-        }
-        builder.protocol(protocol);
-
-        if (protocol.equalsIgnoreCase(TCP) || protocol.equalsIgnoreCase(UDP)) {
-            Integer portRangeMax = json.get(PORT_RANGE_MAX).asInt();
-            Integer portRangeMin = json.get(PORT_RANGE_MIN).asInt();
-            builder.portRangeMax(portRangeMax).portRangeMin(portRangeMin);
-        }
-
-        return builder.build();
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodec.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodec.java
deleted file mode 100644
index 2d8a07c..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodec.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onlab.packet.IpAddress;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtNetwork;
-import org.onosproject.kubevirtnetworking.api.KubevirtHostRoute;
-import org.onosproject.kubevirtnetworking.api.KubevirtIpPool;
-import org.onosproject.kubevirtnetworking.api.KubevirtNetwork;
-import org.slf4j.Logger;
-
-import java.util.HashSet;
-import java.util.Set;
-import java.util.stream.IntStream;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.nullIsIllegal;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Kubevirt network codec used for serializing and de-serializing JSON string.
- */
-public final class KubevirtNetworkCodec extends JsonCodec<KubevirtNetwork> {
-
-    private final Logger log = getLogger(getClass());
-
-    private static final String NETWORK_ID = "networkId";
-    private static final String TYPE = "type";
-    private static final String NAME = "name";
-    private static final String MTU = "mtu";
-    private static final String SEGMENT_ID = "segmentId";
-    private static final String GATEWAY_IP = "gatewayIp";
-    private static final String DEFAULT_ROUTE = "defaultRoute";
-    private static final String CIDR = "cidr";
-    private static final String HOST_ROUTES = "hostRoutes";
-    private static final String IP_POOL = "ipPool";
-    private static final String DNSES = "dnses";
-
-    private static final String MISSING_MESSAGE = " is required in KubevirtNetwork";
-
-    @Override
-    public ObjectNode encode(KubevirtNetwork network, CodecContext context) {
-        checkNotNull(network, "Kubevirt network cannot be null");
-
-        ObjectNode result = context.mapper().createObjectNode()
-                .put(NETWORK_ID, network.networkId())
-                .put(TYPE, network.type().name())
-                .put(NAME, network.name())
-                .put(MTU, network.mtu())
-                .put(GATEWAY_IP, network.gatewayIp().toString())
-                .put(DEFAULT_ROUTE, network.defaultRoute())
-                .put(CIDR, network.cidr());
-
-        if (network.segmentId() != null) {
-            result.put(SEGMENT_ID, network.segmentId());
-        }
-
-        if (network.hostRoutes() != null && !network.hostRoutes().isEmpty()) {
-            ArrayNode hostRoutes = context.mapper().createArrayNode();
-            network.hostRoutes().forEach(hostRoute -> {
-                ObjectNode hostRouteJson =
-                        context.codec(KubevirtHostRoute.class).encode(hostRoute, context);
-                hostRoutes.add(hostRouteJson);
-            });
-            result.set(HOST_ROUTES, hostRoutes);
-        }
-
-        if (network.ipPool() != null) {
-            ObjectNode ipPoolJson = context.codec(KubevirtIpPool.class).encode(network.ipPool(), context);
-            result.set(IP_POOL, ipPoolJson);
-        }
-
-        if (network.dnses() != null && !network.dnses().isEmpty()) {
-            ArrayNode dnses = context.mapper().createArrayNode();
-            network.dnses().forEach(dns -> {
-                dnses.add(dns.toString());
-            });
-            result.set(DNSES, dnses);
-        }
-
-        return result;
-    }
-
-    @Override
-    public KubevirtNetwork decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            return null;
-        }
-
-        String networkId = nullIsIllegal(json.get(NETWORK_ID).asText(),
-                NETWORK_ID + MISSING_MESSAGE);
-        String type = nullIsIllegal(json.get(TYPE).asText(),
-                TYPE + MISSING_MESSAGE);
-        String name = nullIsIllegal(json.get(NAME).asText(),
-                NAME + MISSING_MESSAGE);
-        Integer mtu = nullIsIllegal(json.get(MTU).asInt(),
-                MTU + MISSING_MESSAGE);
-        String gatewayIp = nullIsIllegal(json.get(GATEWAY_IP).asText(),
-                GATEWAY_IP + MISSING_MESSAGE);
-        boolean defaultRoute = nullIsIllegal(json.get(DEFAULT_ROUTE).asBoolean(),
-                DEFAULT_ROUTE + MISSING_MESSAGE);
-        String cidr = nullIsIllegal(json.get(CIDR).asText(),
-                CIDR + MISSING_MESSAGE);
-
-        KubevirtNetwork.Builder networkBuilder = DefaultKubevirtNetwork.builder()
-                .networkId(networkId)
-                .type(KubevirtNetwork.Type.valueOf(type))
-                .name(name)
-                .mtu(mtu)
-                .gatewayIp(IpAddress.valueOf(gatewayIp))
-                .defaultRoute(defaultRoute)
-                .cidr(cidr);
-
-        if (!type.equals(KubevirtNetwork.Type.FLAT.name())) {
-            JsonNode segmentIdJson = json.get(SEGMENT_ID);
-            if (segmentIdJson != null) {
-                networkBuilder.segmentId(segmentIdJson.asText());
-            }
-        }
-
-        JsonNode ipPoolJson = json.get(IP_POOL);
-        if (ipPoolJson != null) {
-            final JsonCodec<KubevirtIpPool>
-                    ipPoolCodec = context.codec(KubevirtIpPool.class);
-            networkBuilder.ipPool(ipPoolCodec.decode(
-                    (ObjectNode) ipPoolJson.deepCopy(), context));
-        }
-
-        // parse host routes
-        Set<KubevirtHostRoute> hostRoutes = new HashSet<>();
-        JsonNode hostRoutesJson = json.get(HOST_ROUTES);
-        if (hostRoutesJson != null) {
-            final JsonCodec<KubevirtHostRoute>
-                    hostRouteCodec = context.codec(KubevirtHostRoute.class);
-
-            IntStream.range(0, hostRoutesJson.size()).forEach(i -> {
-                ObjectNode routeJson = get(hostRoutesJson, i);
-                hostRoutes.add(hostRouteCodec.decode(routeJson, context));
-            });
-        }
-        networkBuilder.hostRoutes(hostRoutes);
-
-        // parse DNSes
-        Set<IpAddress> dnses = new HashSet<>();
-        JsonNode dnsesJson = json.get(DNSES);
-        if (dnsesJson != null) {
-            for (int i = 0; i < dnsesJson.size(); i++) {
-                JsonNode dnsJson = dnsesJson.get(i);
-                if (dnsJson != null) {
-                    dnses.add(IpAddress.valueOf(dnsJson.asText()));
-                }
-            }
-        }
-        networkBuilder.dnses(dnses);
-
-        log.trace("Network is {}", networkBuilder.build().toString());
-
-        return networkBuilder.build();
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtPortCodec.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtPortCodec.java
deleted file mode 100644
index 281855e..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtPortCodec.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtPort;
-import org.onosproject.kubevirtnetworking.api.KubevirtPort;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.slf4j.Logger;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.nullIsIllegal;
-import static org.slf4j.LoggerFactory.getLogger;
-
-public final class KubevirtPortCodec extends JsonCodec<KubevirtPort> {
-
-    private final Logger log = getLogger(getClass());
-
-    private static final String VM_NAME = "vmName";
-    private static final String NETWORK_ID = "networkId";
-    private static final String MAC_ADDRESS = "macAddress";
-    private static final String IP_ADDRESS = "ipAddress";
-    private static final String DEVICE_ID = "deviceId";
-    private static final String PORT_NUMBER = "portNumber";
-    private static final String SECURITY_GROUPS = "securityGroups";
-
-    private static final String MISSING_MESSAGE = " is required in KubevirtPort";
-
-    @Override
-    public ObjectNode encode(KubevirtPort port, CodecContext context) {
-        checkNotNull(port, "Kubevirt port cannot be null");
-
-        ObjectNode result = context.mapper().createObjectNode()
-                .put(VM_NAME, port.vmName())
-                .put(NETWORK_ID, port.networkId())
-                .put(MAC_ADDRESS, port.macAddress().toString());
-
-        if (port.ipAddress() != null) {
-            result.put(IP_ADDRESS, port.ipAddress().toString());
-        }
-
-        if (port.deviceId() != null) {
-            result.put(DEVICE_ID, port.deviceId().toString());
-        }
-
-        if (port.portNumber() != null) {
-            result.put(PORT_NUMBER, port.portNumber().toString());
-        }
-
-        if (port.securityGroups() != null) {
-            ArrayNode sgIds = context.mapper().createArrayNode();
-            for (String sgId : port.securityGroups()) {
-                sgIds.add(sgId);
-            }
-            result.set(SECURITY_GROUPS, sgIds);
-        }
-
-        return result;
-    }
-
-    @Override
-    public KubevirtPort decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            return null;
-        }
-
-        String vmName = nullIsIllegal(json.get(VM_NAME).asText(),
-                VM_NAME + MISSING_MESSAGE);
-
-        String networkId = nullIsIllegal(json.get(NETWORK_ID).asText(),
-                NETWORK_ID + MISSING_MESSAGE);
-
-        String macAddress = nullIsIllegal(json.get(MAC_ADDRESS).asText(),
-                MAC_ADDRESS + MISSING_MESSAGE);
-
-        KubevirtPort.Builder builder = DefaultKubevirtPort.builder()
-                .vmName(vmName)
-                .networkId(networkId)
-                .macAddress(MacAddress.valueOf(macAddress));
-
-        JsonNode ipAddressJson = json.get(IP_ADDRESS);
-        if (ipAddressJson != null) {
-            final IpAddress ipAddress = IpAddress.valueOf(ipAddressJson.asText());
-            builder.ipAddress(ipAddress);
-        }
-
-        JsonNode deviceIdJson = json.get(DEVICE_ID);
-        if (deviceIdJson != null) {
-            final DeviceId deviceId = DeviceId.deviceId(deviceIdJson.asText());
-            builder.deviceId(deviceId);
-        }
-
-        JsonNode portNumberJson = json.get(PORT_NUMBER);
-        if (portNumberJson != null) {
-            final PortNumber portNumber = PortNumber.portNumber(portNumberJson.asText());
-            builder.portNumber(portNumber);
-        }
-
-        log.trace("Port is {}", builder.build().toString());
-
-        return builder.build();
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtRouterCodec.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtRouterCodec.java
deleted file mode 100644
index 5ca4ab6..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtRouterCodec.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.ImmutableMap;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtRouter;
-import org.onosproject.kubevirtnetworking.api.KubevirtPeerRouter;
-import org.onosproject.kubevirtnetworking.api.KubevirtRouter;
-import org.slf4j.Logger;
-
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.nullIsIllegal;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Kubevirt router codec used for serializing and de-serializing JSON string.
- */
-public final class KubevirtRouterCodec extends JsonCodec<KubevirtRouter> {
-
-    private final Logger log = getLogger(getClass());
-
-    private static final String NAME = "name";
-    private static final String DESCRIPTION = "description";
-    private static final String ENABLE_SNAT = "enableSnat";
-    private static final String INTERNAL = "internal";
-    private static final String EXTERNAL = "external";
-    private static final String PEER_ROUTER = "peerRouter";
-    private static final String IP_ADDRESS = "ip";
-    private static final String MAC_ADDRESS = "mac";
-    private static final String NETWORK = "network";
-    private static final String GATEWAY = "gateway";
-
-    private static final String MISSING_MESSAGE = " is required in KubevirtRouter";
-
-    @Override
-    public ObjectNode encode(KubevirtRouter router, CodecContext context) {
-        checkNotNull(router, "Kubevirt router cannot be null");
-
-        ObjectNode result = context.mapper().createObjectNode()
-                .put(NAME, router.name())
-                .put(ENABLE_SNAT, router.enableSnat())
-                .put(MAC_ADDRESS, router.mac().toString());
-
-        if (router.description() != null) {
-            result.put(DESCRIPTION, router.description());
-        }
-
-        if (router.internal() != null && !router.internal().isEmpty()) {
-            ArrayNode internal = context.mapper().createArrayNode();
-            router.internal().forEach(internal::add);
-
-            result.set(INTERNAL, internal);
-        }
-
-        if (router.external() != null && !router.external().isEmpty()) {
-            ArrayNode external = context.mapper().createArrayNode();
-            router.external().forEach((k, v) -> {
-                ObjectNode item = context.mapper().createObjectNode();
-                item.put(IP_ADDRESS, k);
-                item.put(NETWORK, v);
-                external.add(item);
-            });
-            result.set(EXTERNAL, external);
-        }
-
-        if (router.peerRouter() != null) {
-            ObjectNode peerRouter = context.mapper().createObjectNode();
-            peerRouter.put(IP_ADDRESS, router.peerRouter().ipAddress().toString());
-
-            if (router.peerRouter().macAddress() != null) {
-                peerRouter.put(MAC_ADDRESS, router.peerRouter().macAddress().toString());
-            }
-
-            result.set(PEER_ROUTER, peerRouter);
-        }
-
-        if (router.electedGateway() != null) {
-            result.put(GATEWAY, router.electedGateway());
-        }
-
-        return result;
-    }
-
-    @Override
-    public KubevirtRouter decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            return null;
-        }
-
-        String name = nullIsIllegal(json.get(NAME).asText(),
-                NAME + MISSING_MESSAGE);
-
-        String vrouterMac = nullIsIllegal(json.get(MAC_ADDRESS).asText(),
-                MAC_ADDRESS + MISSING_MESSAGE);
-
-        KubevirtRouter.Builder builder = DefaultKubevirtRouter.builder()
-                .name(name)
-                .mac(MacAddress.valueOf(vrouterMac));
-
-        JsonNode descriptionJson = json.get(DESCRIPTION);
-        if (descriptionJson != null) {
-            builder.description(descriptionJson.asText());
-        }
-
-        JsonNode enableSnatJson = json.get(ENABLE_SNAT);
-        if (enableSnatJson != null) {
-            builder.enableSnat(enableSnatJson.asBoolean());
-        }
-        JsonNode electedGwJson = json.get(GATEWAY);
-        if (electedGwJson != null) {
-            builder.electedGateway(electedGwJson.asText());
-        }
-
-        ArrayNode internalJson = (ArrayNode) json.get(INTERNAL);
-        Set<String> internal = new HashSet<>();
-        if (internalJson != null) {
-            for (int i = 0; i < internalJson.size(); i++) {
-                internal.add(internalJson.get(i).asText());
-            }
-            builder.internal(internal);
-        }
-
-        ObjectNode externalJson = (ObjectNode) json.get(EXTERNAL);
-        if (externalJson != null) {
-            Map<String, String> external = ImmutableMap.of(
-                    externalJson.get(IP_ADDRESS).asText(),
-                    externalJson.get(NETWORK).asText());
-            builder.external(external);
-        }
-
-        ObjectNode peerRouterJson = (ObjectNode) json.get(PEER_ROUTER);
-        if (peerRouterJson != null) {
-            JsonNode ipJson = peerRouterJson.get(IP_ADDRESS);
-            JsonNode macJson = peerRouterJson.get(MAC_ADDRESS);
-
-            if (ipJson != null && macJson != null) {
-                IpAddress ip = IpAddress.valueOf(ipJson.asText());
-                MacAddress mac = MacAddress.valueOf(macJson.asText());
-                KubevirtPeerRouter peer = new KubevirtPeerRouter(ip, mac);
-                builder.peerRouter(peer);
-            }
-
-            // if mac address is not specified, we will not add mac address to peer router
-            if (ipJson != null && macJson == null) {
-                IpAddress ip = IpAddress.valueOf(ipJson.asText());
-                KubevirtPeerRouter peer = new KubevirtPeerRouter(ip, null);
-                builder.peerRouter(peer);
-            }
-        }
-
-        return builder.build();
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupCodec.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupCodec.java
deleted file mode 100644
index fe290f9..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupCodec.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtSecurityGroup;
-import org.onosproject.kubevirtnetworking.api.KubevirtSecurityGroup;
-import org.onosproject.kubevirtnetworking.api.KubevirtSecurityGroupRule;
-import org.slf4j.Logger;
-
-import java.util.HashSet;
-import java.util.Set;
-import java.util.stream.IntStream;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.nullIsIllegal;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Kubevirt security group codec used for serializing and de-serializing JSON string.
- */
-public final class KubevirtSecurityGroupCodec extends JsonCodec<KubevirtSecurityGroup> {
-
-    private final Logger log = getLogger(getClass());
-
-    private static final String ID = "id";
-    private static final String NAME = "name";
-    private static final String DESCRIPTION = "description";
-    private static final String RULES = "rules";
-
-    private static final String MISSING_MESSAGE = " is required in KubevirtSecurityGroup";
-
-    @Override
-    public ObjectNode encode(KubevirtSecurityGroup sg, CodecContext context) {
-        checkNotNull(sg, "Kubevirt Security Group cannot be null");
-
-        ObjectNode result = context.mapper().createObjectNode()
-                .put(ID, sg.id())
-                .put(NAME, sg.name());
-
-        if (sg.description() != null) {
-            result.put(DESCRIPTION, sg.description());
-        }
-
-        if (sg.rules() != null && !sg.rules().isEmpty()) {
-            ArrayNode rules = context.mapper().createArrayNode();
-            sg.rules().forEach(rule -> {
-                ObjectNode ruleJson = context.codec(
-                        KubevirtSecurityGroupRule.class).encode(rule, context);
-                rules.add(ruleJson);
-            });
-            result.set(RULES, rules);
-        }
-
-        return result;
-    }
-
-    @Override
-    public KubevirtSecurityGroup decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            return null;
-        }
-
-        String id = nullIsIllegal(json.get(ID).asText(), ID + MISSING_MESSAGE);
-        String name = nullIsIllegal(json.get(NAME).asText(), NAME + MISSING_MESSAGE);
-
-        KubevirtSecurityGroup.Builder builder = DefaultKubevirtSecurityGroup.builder()
-                .id(id)
-                .name(name);
-
-        JsonNode description = json.get(DESCRIPTION);
-        if (description != null) {
-            builder.description(description.asText());
-        }
-
-        JsonNode rulesJson = json.get(RULES);
-        if (rulesJson != null) {
-            Set<KubevirtSecurityGroupRule> rules = new HashSet<>();
-            IntStream.range(0, rulesJson.size())
-                    .forEach(i -> {
-                        ObjectNode ruleJson = get(rulesJson, i);
-                        KubevirtSecurityGroupRule rule = context.codec(
-                                KubevirtSecurityGroupRule.class).decode(ruleJson, context);
-                        rules.add(rule);
-                    });
-            builder.rules(rules);
-        }
-
-        return builder.build();
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupRuleCodec.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupRuleCodec.java
deleted file mode 100644
index b63b555..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupRuleCodec.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onlab.packet.IpPrefix;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtSecurityGroupRule;
-import org.onosproject.kubevirtnetworking.api.KubevirtSecurityGroupRule;
-import org.slf4j.Logger;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.nullIsIllegal;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Kubevirt security group rule codec used for serializing and de-serializing JSON string.
- */
-public final class KubevirtSecurityGroupRuleCodec extends JsonCodec<KubevirtSecurityGroupRule> {
-
-    private final Logger log = getLogger(getClass());
-
-    private static final String ID = "id";
-    private static final String SECURITY_GROUP_ID = "securityGroupId";
-    private static final String DIRECTION = "direction";
-    private static final String ETHER_TYPE = "etherType";
-    private static final String PORT_RANGE_MAX = "portRangeMax";
-    private static final String PORT_RANGE_MIN = "portRangeMin";
-    private static final String PROTOCOL = "protocol";
-    private static final String REMOTE_IP_PREFIX = "remoteIpPrefix";
-    private static final String REMOTE_GROUP_ID = "remoteGroupId";
-
-    private static final String MISSING_MESSAGE = " is required in KubevirtSecurityGroupRule";
-
-    @Override
-    public ObjectNode encode(KubevirtSecurityGroupRule sgRule, CodecContext context) {
-        checkNotNull(sgRule, "Kubevirt security group rule cannot be null");
-
-        ObjectNode result = context.mapper().createObjectNode()
-                .put(ID, sgRule.id())
-                .put(SECURITY_GROUP_ID, sgRule.securityGroupId())
-                .put(DIRECTION, sgRule.direction());
-
-        if (sgRule.etherType() != null) {
-            result.put(ETHER_TYPE, sgRule.etherType());
-        }
-
-        if (sgRule.portRangeMax() != null) {
-            result.put(PORT_RANGE_MAX, sgRule.portRangeMax());
-        }
-
-        if (sgRule.portRangeMin() != null) {
-            result.put(PORT_RANGE_MIN, sgRule.portRangeMin());
-        }
-
-        if (sgRule.protocol() != null) {
-            result.put(PROTOCOL, sgRule.protocol());
-        }
-
-        if (sgRule.remoteIpPrefix() != null) {
-            result.put(REMOTE_IP_PREFIX, sgRule.remoteIpPrefix().toString());
-        }
-
-        if (sgRule.remoteGroupId() != null) {
-            result.put(REMOTE_GROUP_ID, sgRule.remoteGroupId());
-        }
-
-        return result;
-    }
-
-    @Override
-    public KubevirtSecurityGroupRule decode(ObjectNode json, CodecContext context) {
-        if (json == null || !json.isObject()) {
-            return null;
-        }
-
-        String id = nullIsIllegal(json.get(ID).asText(), ID + MISSING_MESSAGE);
-        String securityGroupId = nullIsIllegal(json.get(SECURITY_GROUP_ID).asText(),
-                SECURITY_GROUP_ID + MISSING_MESSAGE);
-        String direction = nullIsIllegal(json.get(DIRECTION).asText(),
-                DIRECTION + MISSING_MESSAGE);
-
-        KubevirtSecurityGroupRule.Builder builder = DefaultKubevirtSecurityGroupRule.builder()
-                .id(id)
-                .securityGroupId(securityGroupId)
-                .direction(direction);
-
-        JsonNode etherType = json.get(ETHER_TYPE);
-        if (etherType != null) {
-            builder.etherType(etherType.asText());
-        }
-
-        JsonNode portRangeMax = json.get(PORT_RANGE_MAX);
-        if (portRangeMax != null) {
-            builder.portRangeMax(portRangeMax.asInt());
-        }
-
-        JsonNode portRangeMin = json.get(PORT_RANGE_MIN);
-        if (portRangeMin != null) {
-            builder.portRangeMin(portRangeMin.asInt());
-        }
-
-        JsonNode protocol = json.get(PROTOCOL);
-        if (protocol != null) {
-            builder.protocol(protocol.asText());
-        }
-
-        JsonNode remoteIpPrefix = json.get(REMOTE_IP_PREFIX);
-        if (remoteIpPrefix != null) {
-            builder.remoteIpPrefix(IpPrefix.valueOf(remoteIpPrefix.asText()));
-        }
-
-        JsonNode remoteGroupId = json.get(REMOTE_GROUP_ID);
-        if (remoteGroupId != null) {
-            builder.remoteGroupId(remoteGroupId.asText());
-        }
-
-        return builder.build();
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/package-info.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/package-info.java
deleted file mode 100644
index 91d8c00..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2020-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Implementations of the codec broker and KubeVirt networking entity JSON codecs.
- */
-package org.onosproject.kubevirtnetworking.codec;
\ No newline at end of file
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtFloatingIpsWebResource.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtFloatingIpsWebResource.java
deleted file mode 100644
index ec41622..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtFloatingIpsWebResource.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.web;
-
-import org.onosproject.kubevirtnetworking.api.KubevirtFloatingIp;
-import org.onosproject.kubevirtnetworking.api.KubevirtRouterService;
-import org.onosproject.rest.AbstractWebResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-/**
- * Handles REST API call for kubevirt floating IPs.
- */
-@Path("floating-ip")
-public class KubevirtFloatingIpsWebResource extends AbstractWebResource {
-
-    protected final Logger log = LoggerFactory.getLogger(getClass());
-
-    private static final String FLOATING_IPS = "floating-ips";
-
-    /**
-     * Returns set of all floating IPs.
-     *
-     * @return 200 OK with set of all floating IPs
-     * @onos.rsModel KubevirtFloatingIps
-     */
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getFloatingIps() {
-        KubevirtRouterService service = get(KubevirtRouterService.class);
-        final Iterable<KubevirtFloatingIp> fips = service.floatingIps();
-        return ok(encodeArray(KubevirtFloatingIp.class, FLOATING_IPS, fips)).build();
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtLoadBalancerWebResource.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtLoadBalancerWebResource.java
deleted file mode 100644
index 8fa61a2..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtLoadBalancerWebResource.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.web;
-
-import org.onosproject.kubevirtnetworking.api.KubevirtLoadBalancer;
-import org.onosproject.kubevirtnetworking.api.KubevirtLoadBalancerService;
-import org.onosproject.rest.AbstractWebResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-/**
- * Handles REST API call for kubevirt load balancer.
- */
-@Path("loadbalancer")
-public class KubevirtLoadBalancerWebResource extends AbstractWebResource {
-
-    protected final Logger log = LoggerFactory.getLogger(getClass());
-    private static final String LOAD_BALANCERS = "loadBalancers";
-
-    /**
-     * Returns set of all load balancers.
-     *
-     * @return 200 OK with set of all load balancers
-     * @onos.rsModel KubevirtLoadBalancers
-     */
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getLoadBalancers() {
-        KubevirtLoadBalancerService service = get(KubevirtLoadBalancerService.class);
-        final Iterable<KubevirtLoadBalancer> lbs = service.loadBalancers();
-        return ok(encodeArray(KubevirtLoadBalancer.class, LOAD_BALANCERS, lbs)).build();
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtMm5WebResource.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtMm5WebResource.java
deleted file mode 100644
index ef8f707..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtMm5WebResource.java
+++ /dev/null
@@ -1,485 +0,0 @@
-/*
- * Copyright 2022-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.web;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onosproject.kubevirtnetworking.api.KubevirtFloatingIp;
-import org.onosproject.kubevirtnetworking.api.KubevirtInstance;
-import org.onosproject.kubevirtnetworking.api.KubevirtInstanceService;
-import org.onosproject.kubevirtnetworking.api.KubevirtLoadBalancer;
-import org.onosproject.kubevirtnetworking.api.KubevirtLoadBalancerService;
-import org.onosproject.kubevirtnetworking.api.KubevirtNetwork;
-import org.onosproject.kubevirtnetworking.api.KubevirtNetworkService;
-import org.onosproject.kubevirtnetworking.api.KubevirtRouter;
-import org.onosproject.kubevirtnetworking.api.KubevirtRouterService;
-import org.onosproject.kubevirtnode.api.KubevirtNode;
-import org.onosproject.kubevirtnode.api.KubevirtNodeService;
-import org.onosproject.rest.AbstractWebResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-import java.io.InputStream;
-
-/**
- * Handles REST API for communication with MEC Orchestrator.
- */
-@Path("api/mm5/v1")
-public class KubevirtMm5WebResource extends AbstractWebResource {
-    protected final Logger log = LoggerFactory.getLogger(getClass());
-
-    private static final String RECEIVED_REQUEST = "Received %s request";
-    private static final String QUERY_STATUS_LEG = "LEG status query";
-    private static final String QUERY_STATUS_VR = "VR status query";
-
-    private static final String QUERY_GET_NETWORK = "get network query";
-    private static final String QUERY_CREATE_NETWORK = "create network query";
-    private static final String QUERY_UPDATE_NETWORK = "update network query";
-    private static final String QUERY_DELETE_NETWORK = "delete network query";
-
-    private static final String QUERY_GET_VR = "get virtual router query";
-    private static final String QUERY_CREATE_VR = "create virtual router query";
-    private static final String QUERY_UPDATE_VR = "update virtual router query";
-    private static final String QUERY_DELETE_VR = "delete virtual router query";
-
-    private static final String QUERY_GET_FIP = "get floating ip query";
-    private static final String QUERY_CREATE_FIP = "create floating ip query";
-    private static final String QUERY_UPDATE_FIP = "update floating ip query";
-    private static final String QUERY_DELETE_FIP = "delete floating ip query";
-
-    private static final String QUERY_GET_LB = "get LoadBalancer query";
-    private static final String QUERY_CREATE_LB = "create LoadBalancer query";
-    private static final String QUERY_UPDATE_LB = "update LoadBalancer query";
-    private static final String QUERY_DELETE_LB = "delete LoadBalancer query";
-
-    private static final String QUERY_GET_INSTANCE = "get instance query";
-    private static final String QUERY_CREATE_INSTANCE = "create instance query";
-    private static final String QUERY_UPDATE_INSTANCE = "update floating ip query";
-    private static final String QUERY_DELETE_INSTANCE = "delete floating ip query";
-
-    private static final String NODE_NAME = "nodeName";
-    private static final String STATE = "state";
-    private static final String ACTIVE = "ACTIVE";
-    private static final String INACTIVE = "INACTIVE";
-
-    private static final String NETWORKS = "networks";
-    private static final String INSTANCES = "instances";
-    private static final String VIRTUAL_ROUTERS = "virtualRouters";
-    private static final String LOAD_BALANCERS = "loadBalancers";
-    private static final String FLOATING_IPS = "floatingIps";
-
-    private static final String UP = "up";
-    private static final String DOWN = "down";
-    private static final String NONE = "none";
-
-    private static final String VR_NAME = "vrName";
-
-    @Context
-    private UriInfo uriInfo;
-
-    /**
-     * Obtains the status of the virtual router.
-     *
-     * @param vrName virtual router name
-     * @return the state of the virtual router in Json
-     */
-    @GET
-    @Path("status/vr/{vrName}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response vrStatus(@PathParam(VR_NAME) String vrName) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_STATUS_VR));
-
-        KubevirtRouterService service = get(KubevirtRouterService.class);
-
-        KubevirtRouter router = service.routers().stream()
-                .filter(r -> r.name().equals(vrName))
-                .findAny().orElse(null);
-
-        if (router == null) {
-            return Response.status(Response.Status.NOT_FOUND).build();
-        } else {
-            ObjectNode jsonResult = mapper().createObjectNode();
-
-            jsonResult.put(VR_NAME, router.name());
-
-            if (router.electedGateway() == null) {
-                jsonResult.put("merName", NONE);
-                jsonResult.put("status", DOWN);
-            } else {
-                jsonResult.put("merName", router.electedGateway());
-                jsonResult.put("status", UP);
-            }
-
-            jsonResult.put("timeUpdated",  System.currentTimeMillis());
-            return ok(jsonResult).build();
-        }
-    }
-
-    /**
-     * Obtains the state of the leg node.
-     *
-     * @param nodeName leg host name
-     * @return the state of the leg node in Json
-     */
-    @PUT
-    @Path("state/mer/{nodeName}")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response legStatus(@PathParam("nodeName") String nodeName) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_STATUS_LEG));
-
-        KubevirtNodeService service = get(KubevirtNodeService.class);
-
-        ObjectNode jsonResult = mapper().createObjectNode();
-        jsonResult.put(NODE_NAME, nodeName);
-
-        boolean isActive = service.completeNodes().stream()
-                .anyMatch(node -> node.type().equals(KubevirtNode.Type.GATEWAY) &&
-                        node.hostname().equals(nodeName));
-        if (isActive) {
-            jsonResult.put(STATE, ACTIVE);
-        } else {
-            jsonResult.put(STATE, INACTIVE);
-        }
-        return ok(jsonResult).build();
-    }
-
-    /**
-     * Obtains the network information in Json Array.
-     *
-     * @return network information in Json
-     */
-    @GET
-    @Path("network")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getNetwork() {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_GET_NETWORK));
-
-        KubevirtNetworkService service = get(KubevirtNetworkService.class);
-        final Iterable<KubevirtNetwork> networks = service.networks();
-        return ok(encodeArray(KubevirtNetwork.class, NETWORKS, networks)).build();
-    }
-
-    /**
-     * Creates the kubevirt network with specified input stream.
-     *
-     * @param inputStream network Json input stream
-     * @return 200 OK if succeeded
-     */
-    @POST
-    @Path("network")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response createNetwork(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_CREATE_NETWORK));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-
-    /**
-     * Updates the kubevirt network with the specified input stream.
-     *
-     * @param inputStream network Json input stream
-     * @return 200 OK if succeeded
-     */
-    @PUT
-    @Path("network/{networkName}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response updateNetwork(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_UPDATE_NETWORK));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-
-    /**
-     * Deletes the kubevirt network with the specified input stream.
-     *
-     * @param inputStream network Json input stream
-     * @return 200 OK if succeeded
-     */
-    @DELETE
-    @Path("network/{networkName}")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response deleteNetwork(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_DELETE_NETWORK));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-
-    /**
-     * Obtains the instance information in Json Array.
-     *
-     * @return instance information in Json
-     */
-    @GET
-    @Path("instance")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getInstance() {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_GET_INSTANCE));
-
-        KubevirtInstanceService service = get(KubevirtInstanceService.class);
-        final Iterable<KubevirtInstance> instances = service.instances();
-        return ok(encodeArray(KubevirtInstance.class, INSTANCES, instances)).build();
-    }
-
-    /**
-     * Creates the instance with specified input stream.
-     *
-     * @param inputStream instance Json insput stream
-     * @return 200 OK if succeeded
-     */
-    @POST
-    @Path("instance")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response createInstance(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_CREATE_INSTANCE));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-
-    /**
-     * Updates the instance with specified input stream.
-     *
-     * @param inputStream instance Json insput stream
-     * @return 200 OK if succeeded
-     */
-    @PUT
-    @Path("instance/{instanceName}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response updateInstance(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_UPDATE_INSTANCE));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-
-    /**
-     * Deletes the instance with specified input stream.
-     *
-     * @param inputStream inputStream instance Json insput stream
-     * @return 200 OK if succeeded
-     */
-    @DELETE
-    @Path("instance/{instanceName}")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response deleteInstance(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_DELETE_INSTANCE));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-
-    /**
-     * Obtains the virtual router in Json array.
-     *
-     * @return virtual router information in Json
-     */
-    @GET
-    @Path("vr")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getVirtualRouter() {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_GET_VR));
-
-        KubevirtRouterService service = get(KubevirtRouterService.class);
-        final Iterable<KubevirtRouter> routers = service.routers();
-        return ok(encodeArray(KubevirtRouter.class, VIRTUAL_ROUTERS, routers)).build();
-    }
-
-    /**
-     * Creates the virtual router with specified input stream.
-     *
-     * @param inputStream virtual router Json inputstream
-     * @return 200 OK if succeeded
-     */
-    @POST
-    @Path("vr")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response createVirtualRouter(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_CREATE_VR));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-
-    /**
-     * Updates the virtual router with specified input stream.
-     *
-     * @param inputStream virtual router Json inputstream
-     * @return 200 OK if succeeded
-     */
-    @PUT
-    @Path("vr/{vrName}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response updateVirtualRouter(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_UPDATE_VR));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-
-    /**
-     * Deletes the virtual router with specified input stream.
-     *
-     * @param inputStream virtual router Json inputstream
-     * @return 200 OK if succeeded
-     */
-    @DELETE
-    @Path("vr/{vrName}")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response deleteVirtualRouter(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_DELETE_VR));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-
-    /**
-     * Obtains the floating ip in Json array.
-     *
-     * @return floating ip information in Json
-     */
-    @GET
-    @Path("fip")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getFloatingIp() {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_GET_FIP));
-
-        KubevirtRouterService service = get(KubevirtRouterService.class);
-        final Iterable<KubevirtFloatingIp> fips = service.floatingIps();
-        return ok(encodeArray(KubevirtFloatingIp.class, FLOATING_IPS, fips)).build();
-    }
-
-    /**
-     * Creates the floating ip with specified input stream.
-     *
-     * @param inputStream floating ip Json inputstream
-     * @return 200 OK if succeeded
-     */
-    @POST
-    @Path("fip")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response createFloatingIp(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_CREATE_FIP));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-
-    /**
-     * Updates the floating ip with specified input stream.
-     *
-     * @param inputStream floating ip Json inputstream
-     * @return 200 OK if succeeded
-     */
-    @PUT
-    @Path("fip/{fipName}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response updateFloatingIp(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_UPDATE_FIP));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-
-    /**
-     * Deletes the floating ip with specified input stream.
-     *
-     * @param inputStream floating ip Json inputstream
-     * @return 200 OK if succeeded
-     */
-    @DELETE
-    @Path("fip/{fipName}")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response deleteFloatingIp(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_DELETE_FIP));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-
-    /**
-     * Obtains the loadbalaner in Json array.
-     *
-     * @return loadbalancer information in Json
-     */
-    @GET
-    @Path("lb")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getLoadBalancer() {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_GET_LB));
-
-        KubevirtLoadBalancerService service = get(KubevirtLoadBalancerService.class);
-        final Iterable<KubevirtLoadBalancer> lbs = service.loadBalancers();
-        return ok(encodeArray(KubevirtLoadBalancer.class, LOAD_BALANCERS, lbs)).build();
-    }
-
-    /**
-     * Creates the loadbalander with specified input stream.
-     *
-     * @param inputStream loadbalancer Json inputstream
-     * @return 200 OK if succeeded
-     */
-    @POST
-    @Path("lb")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response createLoadBalancer(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_CREATE_LB));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-
-    /**
-     * Updates the loadbalander with specified input stream.
-     *
-     * @param inputStream loadbalancer Json inputstream
-     * @return 200 OK if succeeded
-     */
-    @PUT
-    @Path("lb/{lbName}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response updateLoadBalancer(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_UPDATE_LB));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-
-    /**
-     * Deletes the loadbalander with specified input stream.
-     *
-     * @param inputStream loadbalancer Json inputstream
-     * @return 200 OK if succeeded
-     */
-    @DELETE
-    @Path("lb/{lbName}")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response deleteLoadBalancer(InputStream inputStream) {
-        log.trace(String.format(RECEIVED_REQUEST, QUERY_DELETE_LB));
-        //Just sends 200 OK for now.
-        return ok(mapper().createObjectNode()).build();
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkWebResource.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkWebResource.java
deleted file mode 100644
index 4e8f5df..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkWebResource.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright 2020-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.web;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onosproject.kubevirtnetworking.api.KubevirtNetwork;
-import org.onosproject.kubevirtnetworking.api.KubevirtNetworkAdminService;
-import org.onosproject.rest.AbstractWebResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import static org.onlab.util.Tools.nullIsNotFound;
-import static org.onlab.util.Tools.readTreeFromStream;
-
-/**
- * Handles REST API call from CNI plugin.
- */
-@Path("network")
-public class KubevirtNetworkWebResource extends AbstractWebResource {
-
-    protected final Logger log = LoggerFactory.getLogger(getClass());
-
-    private static final String MESSAGE = "Received network %s request";
-    private static final String NETWORK_NOT_FOUND = "Network is not found for";
-    private static final String NETWORK_INVALID = "Invalid networkId in network update request";
-
-    private static final String RESULT = "result";
-
-    /**
-     * Creates a network from the JSON input stream.
-     *
-     * @param input network JSON input stream
-     * @return 201 CREATED if the JSON is correct, 400 BAD_REQUEST if the JSON
-     * is invalid or duplicated network already exists
-     * @onos.rsModel KubevirtNetwork
-     */
-    @POST
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response createNetwork(InputStream input) {
-        log.trace(String.format(MESSAGE, "CREATE"));
-        KubevirtNetworkAdminService service = get(KubevirtNetworkAdminService.class);
-        URI location;
-
-        try {
-            ObjectNode jsonTree = readTreeFromStream(mapper(), input);
-            final KubevirtNetwork network =
-                    codec(KubevirtNetwork.class).decode(jsonTree, this);
-            service.createNetwork(network);
-            location = new URI(network.networkId());
-        } catch (IOException | URISyntaxException e) {
-            throw new IllegalArgumentException(e);
-        }
-
-        return Response.created(location).build();
-    }
-
-    /**
-     * Updates the network with the specified identifier.
-     *
-     * @param id    network identifier
-     * @param input network JSON input stream
-     * @return 200 OK with the updated network, 400 BAD_REQUEST if the requested
-     * network does not exist
-     * @onos.rsModel KubevirtNetwork
-     */
-    @PUT
-    @Path("{id}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response updateNetwork(@PathParam("id") String id, InputStream input) {
-        log.trace(String.format(MESSAGE, "UPDATED"));
-        KubevirtNetworkAdminService service = get(KubevirtNetworkAdminService.class);
-
-        try {
-            ObjectNode jsonTree = readTreeFromStream(mapper(), input);
-            JsonNode specifiedNetworkId = jsonTree.get("networkId");
-
-            if (specifiedNetworkId != null && !specifiedNetworkId.asText().equals(id)) {
-                throw new IllegalArgumentException(NETWORK_INVALID);
-            }
-
-            final KubevirtNetwork network =
-                    codec(KubevirtNetwork.class).decode(jsonTree, this);
-            service.updateNetwork(network);
-        } catch (IOException e) {
-            throw new IllegalArgumentException(e);
-        }
-
-        return Response.ok().build();
-    }
-
-    /**
-     * Removes the network with the given id.
-     *
-     * @param id network identifier
-     * @return 204 NO_CONTENT, 400 BAD_REQUEST if the network does not exist
-     */
-    @DELETE
-    @Path("{id}")
-    public Response removeNetwork(@PathParam("id") String id) {
-        log.trace(String.format(MESSAGE, "DELETE " + id));
-        KubevirtNetworkAdminService service = get(KubevirtNetworkAdminService.class);
-
-        service.removeNetwork(id);
-        return Response.noContent().build();
-    }
-
-    /**
-     * Checks whether the network exists with given network id.
-     *
-     * @param id network identifier
-     * @return 200 OK with true/false result
-     */
-    @GET
-    @Path("exist/{id}")
-    public Response hasNetwork(@PathParam("id") String id) {
-        log.trace(String.format(MESSAGE, "QUERY " + id));
-
-        KubevirtNetworkAdminService service = get(KubevirtNetworkAdminService.class);
-
-        ObjectNode root = mapper().createObjectNode();
-        KubevirtNetwork network = service.network(id);
-
-        if (network == null) {
-            root.put(RESULT, false);
-        } else {
-            root.put(RESULT, true);
-        }
-
-        return Response.ok(root).build();
-    }
-
-    /**
-     * Returns set of all networks.
-     *
-     * @return 200 OK with set of all networks
-     * @onos.rsModel KubevirtNetworks
-     */
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getNetworks() {
-        KubevirtNetworkAdminService service = get(KubevirtNetworkAdminService.class);
-        final Iterable<KubevirtNetwork> networks = service.networks();
-        return ok(encodeArray(KubevirtNetwork.class, "networks", networks)).build();
-    }
-
-    /**
-     * Returns the network with the specified identifier.
-     *
-     * @param id network identifier
-     * @return 200 OK with a network, 404 not found
-     * @onos.rsModel KubevirtNetwork
-     */
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Path("{id}")
-    public Response getNetworkById(@PathParam("id") String id) {
-        KubevirtNetworkAdminService service = get(KubevirtNetworkAdminService.class);
-        final KubevirtNetwork network = nullIsNotFound(service.network(id),
-                NETWORK_NOT_FOUND + id);
-        return ok(codec(KubevirtNetwork.class).encode(network, this)).build();
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkingCodecRegister.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkingCodecRegister.java
deleted file mode 100644
index 0280c6a..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkingCodecRegister.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.web;
-
-import org.onosproject.codec.CodecService;
-import org.onosproject.kubevirtnetworking.api.KubevirtFloatingIp;
-import org.onosproject.kubevirtnetworking.api.KubevirtHostRoute;
-import org.onosproject.kubevirtnetworking.api.KubevirtIpPool;
-import org.onosproject.kubevirtnetworking.api.KubevirtLoadBalancer;
-import org.onosproject.kubevirtnetworking.api.KubevirtLoadBalancerRule;
-import org.onosproject.kubevirtnetworking.api.KubevirtNetwork;
-import org.onosproject.kubevirtnetworking.api.KubevirtPort;
-import org.onosproject.kubevirtnetworking.api.KubevirtRouter;
-import org.onosproject.kubevirtnetworking.api.KubevirtSecurityGroup;
-import org.onosproject.kubevirtnetworking.api.KubevirtSecurityGroupRule;
-import org.onosproject.kubevirtnetworking.codec.KubevirtFloatingIpCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtHostRouteCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtIpPoolCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtLoadBalancerCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtLoadBalancerRuleCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtNetworkCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtPortCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtRouterCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtSecurityGroupCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtSecurityGroupRuleCodec;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.slf4j.Logger;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Implementation of the JSON codec brokering service for KubevirtNetworking.
- */
-@Component(immediate = true)
-public class KubevirtNetworkingCodecRegister {
-
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected CodecService codecService;
-
-    @Activate
-    protected void activate() {
-
-        codecService.registerCodec(KubevirtHostRoute.class, new KubevirtHostRouteCodec());
-        codecService.registerCodec(KubevirtIpPool.class, new KubevirtIpPoolCodec());
-        codecService.registerCodec(KubevirtNetwork.class, new KubevirtNetworkCodec());
-        codecService.registerCodec(KubevirtPort.class, new KubevirtPortCodec());
-        codecService.registerCodec(KubevirtRouter.class, new KubevirtRouterCodec());
-        codecService.registerCodec(KubevirtFloatingIp.class, new KubevirtFloatingIpCodec());
-        codecService.registerCodec(KubevirtSecurityGroup.class, new KubevirtSecurityGroupCodec());
-        codecService.registerCodec(KubevirtSecurityGroupRule.class, new KubevirtSecurityGroupRuleCodec());
-        codecService.registerCodec(KubevirtLoadBalancer.class, new KubevirtLoadBalancerCodec());
-        codecService.registerCodec(KubevirtLoadBalancerRule.class, new KubevirtLoadBalancerRuleCodec());
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-
-        codecService.unregisterCodec(KubevirtHostRoute.class);
-        codecService.unregisterCodec(KubevirtIpPool.class);
-        codecService.unregisterCodec(KubevirtNetwork.class);
-        codecService.unregisterCodec(KubevirtPort.class);
-        codecService.unregisterCodec(KubevirtRouter.class);
-        codecService.unregisterCodec(KubevirtFloatingIp.class);
-        codecService.unregisterCodec(KubevirtSecurityGroup.class);
-        codecService.unregisterCodec(KubevirtSecurityGroupRule.class);
-        codecService.unregisterCodec(KubevirtLoadBalancer.class);
-        codecService.unregisterCodec(KubevirtLoadBalancerRule.class);
-
-        log.info("Stopped");
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkingWebApplication.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkingWebApplication.java
deleted file mode 100644
index dc2afbc..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkingWebApplication.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2020-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.web;
-
-import org.onlab.rest.AbstractWebApplication;
-
-import java.util.Set;
-
-/**
- * KubeVirt networking REST APIs web application.
- */
-public class KubevirtNetworkingWebApplication extends AbstractWebApplication {
-    @Override
-    public Set<Class<?>> getClasses() {
-        return getClasses(
-                KubevirtNetworkWebResource.class,
-                KubevirtRouterWebResource.class,
-                KubevirtFloatingIpsWebResource.class,
-                KubevirtSecurityGroupWebResource.class,
-                KubevirtLoadBalancerWebResource.class,
-                KubevirtMm5WebResource.class
-        );
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtRouterWebResource.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtRouterWebResource.java
deleted file mode 100644
index 8a40f51..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtRouterWebResource.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.web;
-
-import org.onosproject.kubevirtnetworking.api.KubevirtRouter;
-import org.onosproject.kubevirtnetworking.api.KubevirtRouterService;
-import org.onosproject.rest.AbstractWebResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-/**
- * Handles REST API call for kubevirt router.
- */
-@Path("router")
-public class KubevirtRouterWebResource extends AbstractWebResource {
-
-    protected final Logger log = LoggerFactory.getLogger(getClass());
-    private static final String ROUTERS = "routers";
-
-    /**
-     * Returns set of all routers.
-     *
-     * @return 200 OK with set of all routers
-     * @onos.rsModel KubevirtRouters
-     */
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getRouters() {
-        KubevirtRouterService service = get(KubevirtRouterService.class);
-        final Iterable<KubevirtRouter> routers = service.routers();
-        return ok(encodeArray(KubevirtRouter.class, ROUTERS, routers)).build();
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtSecurityGroupWebResource.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtSecurityGroupWebResource.java
deleted file mode 100644
index 02acd87..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtSecurityGroupWebResource.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.web;
-
-import org.onosproject.kubevirtnetworking.api.KubevirtSecurityGroup;
-import org.onosproject.kubevirtnetworking.api.KubevirtSecurityGroupService;
-import org.onosproject.rest.AbstractWebResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-/**
- * Handles REST API call for kubevirt security group.
- */
-@Path("security-group")
-public class KubevirtSecurityGroupWebResource extends AbstractWebResource {
-
-    protected final Logger log = LoggerFactory.getLogger(getClass());
-    private static final String SECURITY_GROUPS = "security-groups";
-
-    /**
-     * Returns set of all security groups.
-     *
-     * @return 200 OK with set of all security groups
-     * @onos.rsModel KubevirtSecurityGroups
-     */
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getSecurityGroups() {
-        KubevirtSecurityGroupService service = get(KubevirtSecurityGroupService.class);
-        final Iterable<KubevirtSecurityGroup> sgs = service.securityGroups();
-        return ok(encodeArray(KubevirtSecurityGroup.class, SECURITY_GROUPS, sgs)).build();
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/package-info.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/package-info.java
deleted file mode 100644
index bc4157c..0000000
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2020-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * KubeVirt networking web implementation.
- */
-package org.onosproject.kubevirtnetworking.web;
\ No newline at end of file
diff --git a/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtFloatingIps.json b/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtFloatingIps.json
deleted file mode 100644
index 07a45e2..0000000
--- a/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtFloatingIps.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
-  "type": "object",
-  "title": "floatingips",
-  "required": [
-    "floatingips"
-  ],
-  "properties": {
-    "floatingips": {
-      "type": "array",
-      "xml": {
-        "name": "floatingips",
-        "wrapped": true
-      },
-      "items": {
-        "type": "object",
-        "description": "A floating IP object.",
-        "required": [
-          "id",
-          "routerName",
-          "networkName",
-          "floatingIp",
-          "podName",
-          "fixedIp"
-        ],
-        "properties": {
-          "id": {
-            "type": "string",
-            "example": "6a073105-c735-4e53-8d74-64191c6985fe",
-            "description": "The ID of floating IP."
-          },
-          "routerName": {
-            "type": "string",
-            "example": "router-1",
-            "description": "Name of router."
-          },
-          "networkName": {
-            "type": "string",
-            "example": "flat-1",
-            "description": "Name of network."
-          },
-          "floatingIp": {
-            "type": "string",
-            "example": "10.10.10.5",
-            "description": "Floating IP address."
-          },
-          "podName": {
-            "type": "string",
-            "example": "pod-1",
-            "description": "Name of POD associated with this floating IP"
-          },
-          "fixedIp": {
-            "type": "string",
-            "example": "20.20.20.5",
-            "description": "Fixed IP address."
-          }
-        }
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtLoadBalancers.json b/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtLoadBalancers.json
deleted file mode 100644
index f06aedf..0000000
--- a/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtLoadBalancers.json
+++ /dev/null
@@ -1,94 +0,0 @@
-{
-  "type": "object",
-  "title": "loadBalancers",
-  "required": [
-    "loadBalancers"
-  ],
-  "properties": {
-    "loadBalancers": {
-      "type": "array",
-      "xml": {
-        "name": "loadBalancers",
-        "wrapped": true
-      },
-      "items": {
-        "type": "object",
-        "description": "A load balancer object.",
-        "required": [
-          "name",
-          "description",
-          "networkId",
-          "vip",
-          "members",
-          "rules"
-        ],
-        "properties": {
-          "name": {
-            "type": "string",
-            "example": "lb-1",
-            "description": "The name of load balancer."
-          },
-          "description": {
-            "type": "string",
-            "example": "Example load balancer",
-            "description": "The description of load balancer."
-          },
-          "networkId": {
-            "type": "string",
-            "example": "net-1",
-            "description": "The name of network where the load balancer is attached to."
-          },
-          "vip": {
-            "type": "string",
-            "example": "10.10.10.10",
-            "description": "The virtual IP address of the load balancer."
-          },
-          "members": {
-            "type": "array",
-            "xml": {
-              "name": "members",
-              "wrapped": true
-            },
-            "items": {
-              "type": "string",
-              "example": "10.10.10.11",
-              "description": "IP address of member instance."
-            }
-          },
-          "rules": {
-            "type": "array",
-            "description": "A list of load balancer rule objects.",
-            "items": {
-              "type": "object",
-              "description": "A load balancer rule object.",
-              "required": [
-                "portRangeMax",
-                "portRangeMin",
-                "protocol"
-              ],
-              "properties": {
-                "portRangeMax": {
-                  "type": "integer",
-                  "format": "int32",
-                  "example": 80,
-                  "description": "The maximum port number in the range that is matched by the rule."
-                },
-                "portRangeMin": {
-                  "type": "integer",
-                  "format": "int32",
-                  "example": 80,
-                  "description": "The minimum port number in the range that is matched by the rule."
-                },
-                "protocol": {
-                  "type": "string",
-                  "example": "tcp",
-                  "description": "The IP protocol can be represented by a string, an integer, or null."
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtNetwork.json b/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtNetwork.json
deleted file mode 100644
index 5653ae8..0000000
--- a/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtNetwork.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "type": "object",
-  "description": "A network object.",
-  "required": [
-    "networkId",
-    "type",
-    "name",
-    "segmentId",
-    "gatewayIp",
-    "cidr",
-    "mtu"
-  ],
-  "properties": {
-    "networkId": {
-      "type": "string",
-      "example": "sona-network",
-      "description": "The ID of the attached network."
-    },
-    "type": {
-      "type": "string",
-      "example": "VXLAN",
-      "description": "Type of kubernetes network."
-    },
-    "name": {
-      "type": "string",
-      "example": "sona-network",
-      "description": "The name of network."
-    },
-    "segmentId": {
-      "type": "string",
-      "example": "1",
-      "description": "Segment ID of tenant network."
-    },
-    "gatewayIp": {
-      "type": "string",
-      "example": "10.10.10.1",
-      "description": "The IP address of the gateway."
-    },
-    "cidr": {
-      "type": "string",
-      "example": "10.10.10.0/24",
-      "description": "The CIDR of this network."
-    },
-    "mtu": {
-      "type": "integer",
-      "example": 1500,
-      "description": "The Maximum Transmission Unit of this network."
-    }
-  }
-}
\ No newline at end of file
diff --git a/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtNetworks.json b/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtNetworks.json
deleted file mode 100644
index 5ce66f0..0000000
--- a/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtNetworks.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
-  "type": "object",
-  "title": "networks",
-  "required": [
-    "networks"
-  ],
-  "properties": {
-    "networks": {
-      "type": "array",
-      "xml": {
-        "name": "networks",
-        "wrapped": true
-      },
-      "items": {
-        "type": "object",
-        "description": "A network object.",
-        "required": [
-          "networkId",
-          "type",
-          "name",
-          "segmentId",
-          "gatewayIp",
-          "cidr",
-          "mtu"
-        ],
-        "properties": {
-          "networkId": {
-            "type": "string",
-            "example": "sona-network",
-            "description": "The ID of the attached network."
-          },
-          "type": {
-            "type": "string",
-            "example": "VXLAN",
-            "description": "Type of kubernetes network."
-          },
-          "name": {
-            "type": "string",
-            "example": "sona-network",
-            "description": "The name of network."
-          },
-          "segmentId": {
-            "type": "string",
-            "example": "1",
-            "description": "Segment ID of tenant network."
-          },
-          "gatewayIp": {
-            "type": "string",
-            "example": "10.10.10.1",
-            "description": "The IP address of the gateway."
-          },
-          "cidr": {
-            "type": "string",
-            "example": "10.10.10.0/24",
-            "description": "The CIDR of this network."
-          },
-          "mtu": {
-            "type": "integer",
-            "example": 1500,
-            "description": "The Maximum Transmission Unit of this network."
-          }
-        }
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtRouters.json b/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtRouters.json
deleted file mode 100644
index 835dfea..0000000
--- a/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtRouters.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
-  "type": "object",
-  "title": "routers",
-  "required": [
-    "routers"
-  ],
-  "properties": {
-    "routers": {
-      "type": "array",
-      "xml": {
-        "name": "routers",
-        "wrapped": true
-      },
-      "items": {
-        "type": "object",
-        "description": "A router object.",
-        "required": [
-          "name",
-          "enableSnat",
-          "mac",
-          "internal",
-          "external",
-          "peerRouter"
-        ],
-        "properties": {
-          "name": {
-            "type": "string",
-            "example": "router-1",
-            "description": "The name of router."
-          },
-          "enableSnat": {
-            "type": "boolean",
-            "example": "true",
-            "description": "Enable SNAT flag."
-          },
-          "mac": {
-            "type": "string",
-            "example": "11:22:33:44:55:66",
-            "description": "The MAC address of virtual router."
-          },
-          "internal": {
-            "type": "array",
-            "xml": {
-              "name": "internal",
-              "wrapped": true
-            },
-            "items": {
-              "type": "string",
-              "example": "vxlan-1",
-              "description": "name of internal network"
-            }
-          },
-          "external": {
-            "type": "object",
-            "description": "external networks",
-            "required": [
-              "ip",
-              "name"
-            ],
-            "properties": {
-              "ipaddress": {
-                "type": "string",
-                "example": "10.10.10.5",
-                "description": "Router IP address of the external network"
-              },
-              "name": {
-                "type": "string",
-                "example": "flat",
-                "description": "Name of the external network"
-              }
-            }
-          },
-          "peerRouter": {
-            "type": "object",
-            "description": "peer router",
-            "required": [
-              "ip",
-              "mac"
-            ],
-            "properties": {
-              "ipaddress": {
-                "type": "string",
-                "example": "10.10.10.1",
-                "description": "IP address of the peer router"
-              },
-              "mac": {
-                "type": "string",
-                "example": "11:22:33:44:55:66",
-                "description": "MAC address of the peer router"
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtSecurityGroups.json b/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtSecurityGroups.json
deleted file mode 100644
index bd724c9..0000000
--- a/apps/kubevirt-networking/app/src/main/resources/definitions/KubevirtSecurityGroups.json
+++ /dev/null
@@ -1,103 +0,0 @@
-{
-  "type": "object",
-  "description": "A security_group object.",
-  "required": [
-    "securityGroup"
-  ],
-  "properties": {
-    "securityGroup": {
-      "type": "object",
-      "required": [
-        "id",
-        "description",
-        "name",
-        "securityGroupRules"
-      ],
-      "properties": {
-        "id": {
-          "type": "string",
-          "example": "2076db17-a522-4506-91de-c6dd8e837028",
-          "description": "The ID of the security group."
-        },
-        "description": {
-          "type": "string",
-          "example": "security group for webservers",
-          "description": "A human-readable description for the resource."
-        },
-        "name": {
-          "type": "string",
-          "example": "new-webservers",
-          "description": "Human-readable name of the resource."
-        },
-        "securityGroupRules": {
-          "type": "array",
-          "description": "A list of security_group_rule objects.",
-          "items": {
-            "type": "object",
-            "description": "A security group rule object.",
-            "required": [
-              "id",
-              "securityGroupId",
-              "direction",
-              "etherType",
-              "portRangeMax",
-              "portRangeMin",
-              "protocol",
-              "remoteIpPrefix",
-              "remoteGroupId"
-            ],
-            "properties": {
-              "id": {
-                "type": "string",
-                "example": "2bc0accf-312e-429a-956e-e4407625eb62",
-                "description": "The ID of this security group rule."
-              },
-              "securityGroupId": {
-                "type": "string",
-                "example": "a7734e61-b545-452d-a3cd-0189cbd9747a",
-                "description": "The security group ID to associate with this security group rule."
-              },
-              "direction": {
-                "type": "string",
-                "example": "ingress",
-                "description": "Ingress or egress, which is the direction in which the metering rule is applied."
-              },
-              "etherType": {
-                "type": "string",
-                "example": "IPv4",
-                "description": "Must be IPv4 or IPv6, and addresses represented in CIDR must match the ingress or egress rules."
-              },
-              "portRangeMax": {
-                "type": "integer",
-                "format": "int32",
-                "example": 80,
-                "description": "The maximum port number in the range that is matched by the security group rule."
-              },
-              "portRangeMin": {
-                "type": "integer",
-                "format": "int32",
-                "example": 80,
-                "description": "The minimum port number in the range that is matched by the security group rule."
-              },
-              "protocol": {
-                "type": "string",
-                "example": "tcp",
-                "description": "The IP protocol can be represented by a string, an integer, or null."
-              },
-              "remoteIpPrefix": {
-                "type": "string",
-                "example": "",
-                "description": "The remote IP prefix to associate with this metering rule packet."
-              },
-              "remoteGroupId": {
-                "type": "string",
-                "example": "85cc3048-abc3-43cc-89b3-377341426ac5",
-                "description": "The remote group UUID to associate with this security group rule."
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/apps/kubevirt-networking/app/src/main/webapp/WEB-INF/web.xml b/apps/kubevirt-networking/app/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 0b4876a..0000000
--- a/apps/kubevirt-networking/app/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Copyright 2020-present Open Networking Foundation
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
-         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-         id="ONOS" version="2.5">
-    <display-name>KubeVirt Networking REST API v1.0</display-name>
-
-    <security-constraint>
-        <web-resource-collection>
-            <web-resource-name>Secured</web-resource-name>
-            <url-pattern>/*</url-pattern>
-        </web-resource-collection>
-        <auth-constraint>
-            <role-name>admin</role-name>
-            <role-name>viewer</role-name>
-        </auth-constraint>
-    </security-constraint>
-
-    <security-role>
-        <role-name>admin</role-name>
-        <role-name>viewer</role-name>
-    </security-role>
-
-    <login-config>
-        <auth-method>BASIC</auth-method>
-        <realm-name>karaf</realm-name>
-    </login-config>
-
-    <servlet>
-        <servlet-name>JAX-RS Service</servlet-name>
-        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
-        <init-param>
-            <param-name>javax.ws.rs.Application</param-name>
-            <param-value>org.onosproject.kubevirtnetworking.web.KubevirtNetworkingWebApplication</param-value>
-        </init-param>
-        <load-on-startup>1</load-on-startup>
-    </servlet>
-
-    <servlet-mapping>
-        <servlet-name>JAX-RS Service</servlet-name>
-        <url-pattern>/*</url-pattern>
-    </servlet-mapping>
-</web-app>
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtFloatingIpCodecTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtFloatingIpCodecTest.java
deleted file mode 100644
index 216f3e0..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtFloatingIpCodecTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.hamcrest.MatcherAssert;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.IpAddress;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.codec.impl.MockCodecContext;
-import org.onosproject.core.CoreService;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtFloatingIp;
-import org.onosproject.kubevirtnetworking.api.KubevirtFloatingIp;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import static junit.framework.TestCase.assertEquals;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onosproject.kubevirtnetworking.codec.KubevirtFloatingIpJsonMatcher.matchesKubevirtFloatingIp;
-import static org.onosproject.net.NetTestTools.APP_ID;
-
-/**
- * Unit tests for KubevirtFloatingIp codec.
- */
-public final class KubevirtFloatingIpCodecTest {
-
-    MockCodecContext context;
-
-    JsonCodec<KubevirtFloatingIp> kubevirtFloatingIpCodec;
-
-    final CoreService mockCoreService = createMock(CoreService.class);
-    private static final String REST_APP_ID = "org.onosproject.rest";
-
-    @Before
-    public void setUp() {
-        context = new MockCodecContext();
-        kubevirtFloatingIpCodec = new KubevirtFloatingIpCodec();
-
-        assertThat(kubevirtFloatingIpCodec, notNullValue());
-        expect(mockCoreService.registerApplication(REST_APP_ID))
-                .andReturn(APP_ID).anyTimes();
-        replay(mockCoreService);
-        context.registerService(CoreService.class, mockCoreService);
-    }
-
-    /**
-     * Tests the kubevirt floating IP encoding.
-     */
-    @Test
-    public void testKubevirtFloatingIpEncode() {
-        KubevirtFloatingIp floatingIp = DefaultKubevirtFloatingIp.builder()
-                .id("fip-id")
-                .routerName("router-1")
-                .networkName("flat-1")
-                .floatingIp(IpAddress.valueOf("10.10.10.10"))
-                .podName("pod-1")
-                .vmName("vm-1")
-                .fixedIp(IpAddress.valueOf("20.20.20.20"))
-                .build();
-
-        ObjectNode floatingIpJson = kubevirtFloatingIpCodec.encode(floatingIp, context);
-        assertThat(floatingIpJson, matchesKubevirtFloatingIp(floatingIp));
-    }
-
-    @Test
-    public void testKubevirtFloatingIpDecode() throws IOException {
-        KubevirtFloatingIp floatingIp = getKubevirtFloatingIp("KubevirtFloatingIp.json");
-
-        assertEquals("fip-1", floatingIp.id());
-        assertEquals("router-1", floatingIp.routerName());
-        assertEquals("flat-1", floatingIp.networkName());
-        assertEquals("10.10.10.10", floatingIp.floatingIp().toString());
-        assertEquals("pod-1", floatingIp.podName());
-        assertEquals("vm-1", floatingIp.vmName());
-        assertEquals("20.20.20.20", floatingIp.fixedIp().toString());
-    }
-
-    private KubevirtFloatingIp getKubevirtFloatingIp(String resourceName) throws IOException {
-        InputStream jsonStream = KubevirtFloatingIpCodecTest.class.getResourceAsStream(resourceName);
-        JsonNode json = context.mapper().readTree(jsonStream);
-        MatcherAssert.assertThat(json, notNullValue());
-        KubevirtFloatingIp fip = kubevirtFloatingIpCodec.decode((ObjectNode) json, context);
-        assertThat(fip, notNullValue());
-        return fip;
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtFloatingIpJsonMatcher.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtFloatingIpJsonMatcher.java
deleted file mode 100644
index 41d8cfe..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtFloatingIpJsonMatcher.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.hamcrest.Description;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-import org.onosproject.kubevirtnetworking.api.KubevirtFloatingIp;
-
-/**
- * Hamcrest matcher for kubevirt router interface.
- */
-public final class KubevirtFloatingIpJsonMatcher extends TypeSafeDiagnosingMatcher<JsonNode> {
-
-    private final KubevirtFloatingIp floatingIp;
-    private static final String ID = "id";
-    private static final String ROUTER_NAME = "routerName";
-    private static final String NETWORK_NAME = "networkName";
-    private static final String POD_NAME = "podName";
-    private static final String VM_NAME = "vmName";
-    private static final String FLOATING_IP = "floatingIp";
-    private static final String FIXED_IP = "fixedIp";
-
-    private KubevirtFloatingIpJsonMatcher(KubevirtFloatingIp floatingIp) {
-        this.floatingIp = floatingIp;
-    }
-
-    @Override
-    protected boolean matchesSafely(JsonNode jsonNode, Description description) {
-
-        // check ID
-        String jsonId = jsonNode.get(ID).asText();
-        String id = floatingIp.id();
-        if (!jsonId.equals(id)) {
-            description.appendText("ID was " + jsonId);
-            return false;
-        }
-
-        // check router name
-        String jsonRouterName = jsonNode.get(ROUTER_NAME).asText();
-        String routerName = floatingIp.routerName();
-        if (!jsonRouterName.equals(routerName)) {
-            description.appendText("Router name was " + jsonRouterName);
-            return false;
-        }
-
-        // check network name
-        String jsonNetworkName = jsonNode.get(NETWORK_NAME).asText();
-        String networkName = floatingIp.networkName();
-        if (!jsonNetworkName.equals(networkName)) {
-            description.appendText("Network name was " + jsonNetworkName);
-            return false;
-        }
-
-        // check floating IP
-        String jsonFip = jsonNode.get(FLOATING_IP).asText();
-        String fip = floatingIp.floatingIp().toString();
-        if (!jsonFip.equals(fip)) {
-            description.appendText("Floating IP was " + jsonFip);
-            return false;
-        }
-
-        // check POD name
-        JsonNode jsonPodName = jsonNode.get(POD_NAME);
-        if (jsonPodName != null) {
-            if (!floatingIp.podName().equals(jsonPodName.asText())) {
-                description.appendText("POD name was " + jsonPodName);
-                return false;
-            }
-        }
-
-        JsonNode jsonVmName = jsonNode.get(VM_NAME);
-        if (jsonVmName != null) {
-            if (!floatingIp.vmName().equals(jsonVmName.asText())) {
-                description.appendText("VM name was " + jsonVmName);
-                return false;
-            }
-        }
-
-
-        // check fixed IP
-        JsonNode jsonFixedIp = jsonNode.get(FIXED_IP);
-        if (jsonFixedIp != null) {
-            if (!floatingIp.fixedIp().toString().equals(jsonFixedIp.asText())) {
-                description.appendText("Fixed IP was " + jsonFixedIp);
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public void describeTo(Description description) {
-        description.appendText(floatingIp.toString());
-    }
-
-    /**
-     * Factory to allocate a kubevirt floating IP matcher.
-     *
-     * @param fip kubevirt floating IP object we are looking for
-     * @return matcher
-     */
-    public static KubevirtFloatingIpJsonMatcher matchesKubevirtFloatingIp(KubevirtFloatingIp fip) {
-        return new KubevirtFloatingIpJsonMatcher(fip);
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtHostRouteJsonMatcher.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtHostRouteJsonMatcher.java
deleted file mode 100644
index 4603980..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtHostRouteJsonMatcher.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.hamcrest.Description;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-import org.onosproject.kubevirtnetworking.api.KubevirtHostRoute;
-
-/**
- * Hamcrest matcher for kubevirt host route interface.
- */
-public final class KubevirtHostRouteJsonMatcher extends TypeSafeDiagnosingMatcher<JsonNode> {
-
-    private final KubevirtHostRoute hostRoute;
-
-    private static final String DESTINATION = "destination";
-    private static final String NEXTHOP = "nexthop";
-
-    private KubevirtHostRouteJsonMatcher(KubevirtHostRoute hostRoute) {
-        this.hostRoute = hostRoute;
-    }
-
-    @Override
-    protected boolean matchesSafely(JsonNode jsonNode, Description description) {
-        // check destination
-        String jsonDestination = jsonNode.get(DESTINATION).asText();
-        String destination = hostRoute.destination().toString();
-        if (!jsonDestination.equals(destination)) {
-            description.appendText("destination was " + jsonDestination);
-            return false;
-        }
-
-        // check nexthop
-        JsonNode jsonNexthop = jsonNode.get(NEXTHOP);
-        if (jsonNexthop != null) {
-            String nexthop = hostRoute.nexthop().toString();
-            if (!jsonNexthop.asText().equals(nexthop)) {
-                description.appendText("nexthop was " + jsonNexthop);
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public void describeTo(Description description) {
-        description.appendText(description.toString());
-    }
-
-    /**
-     * Factory to allocate an kubevirt host route matcher.
-     *
-     * @param route kubevirt host route object we are looking for
-     * @return matcher
-     */
-    public static KubevirtHostRouteJsonMatcher matchesKubevirtHostRoute(KubevirtHostRoute route) {
-        return new KubevirtHostRouteJsonMatcher(route);
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtIpPoolJsonMatcher.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtIpPoolJsonMatcher.java
deleted file mode 100644
index 6217335..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtIpPoolJsonMatcher.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.hamcrest.Description;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-import org.onosproject.kubevirtnetworking.api.KubevirtIpPool;
-
-/**
- * Hamcrest matcher for kubevirt IP pool interface.
- */
-public final class KubevirtIpPoolJsonMatcher extends TypeSafeDiagnosingMatcher<JsonNode> {
-
-    private final KubevirtIpPool ipPool;
-    private static final String START = "start";
-    private static final String END = "end";
-
-    private KubevirtIpPoolJsonMatcher(KubevirtIpPool ipPool) {
-        this.ipPool = ipPool;
-    }
-
-    @Override
-    protected boolean matchesSafely(JsonNode jsonNode, Description description) {
-        // check start
-        String jsonStart = jsonNode.get(START).asText();
-        String start = ipPool.start().toString();
-        if (!jsonStart.equals(start)) {
-            description.appendText("start was " + jsonStart);
-            return false;
-        }
-
-        // check end
-        String jsonEnd = jsonNode.get(END).asText();
-        String end = ipPool.end().toString();
-        if (!jsonEnd.equals(end)) {
-            description.appendText("end was " + jsonEnd);
-            return false;
-        }
-
-        return true;
-    }
-
-    @Override
-    public void describeTo(Description description) {
-        description.appendText(ipPool.toString());
-    }
-
-    /**
-     * Factory to allocate an kubevirt IP pool matcher.
-     *
-     * @param ipPool kubevirt IP pool object we are looking for
-     * @return matcher
-     */
-    public static KubevirtIpPoolJsonMatcher matchesKubevirtIpPool(KubevirtIpPool ipPool) {
-        return new KubevirtIpPoolJsonMatcher(ipPool);
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerCodecTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerCodecTest.java
deleted file mode 100644
index cd86402..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerCodecTest.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.ImmutableSet;
-import org.hamcrest.MatcherAssert;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.IpAddress;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.codec.impl.CodecManager;
-import org.onosproject.core.CoreService;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtLoadBalancer;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtLoadBalancerRule;
-import org.onosproject.kubevirtnetworking.api.KubevirtLoadBalancer;
-import org.onosproject.kubevirtnetworking.api.KubevirtLoadBalancerRule;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onosproject.kubevirtnetworking.codec.KubevirtLoadBalancerJsonMatcher.matchesKubevirtLoadBalancer;
-import static org.onosproject.net.NetTestTools.APP_ID;
-
-/**
- * Unit tests for KubevirtLoadBalancer codec.
- */
-public final class KubevirtLoadBalancerCodecTest {
-
-    MockCodecContext context;
-
-    JsonCodec<KubevirtLoadBalancer> kubevirtLoadBalancerCodec;
-    JsonCodec<KubevirtLoadBalancerRule> kubevirtLoadBalancerRuleCodec;
-
-    private static final KubevirtLoadBalancerRule RULE1 = DefaultKubevirtLoadBalancerRule.builder()
-            .protocol("tcp")
-            .portRangeMax(8000)
-            .portRangeMin(7000)
-            .build();
-    private static final KubevirtLoadBalancerRule RULE2 = DefaultKubevirtLoadBalancerRule.builder()
-            .protocol("udp")
-            .portRangeMax(9000)
-            .portRangeMin(8000)
-            .build();
-
-    private static final KubevirtLoadBalancerRule RULE3 = DefaultKubevirtLoadBalancerRule.builder()
-            .protocol("icmp")
-            .build();
-
-    final CoreService mockCoreService = createMock(CoreService.class);
-    private static final String REST_APP_ID = "org.onosproject.rest";
-
-    @Before
-    public void setUp() {
-        context = new MockCodecContext();
-        kubevirtLoadBalancerCodec = new KubevirtLoadBalancerCodec();
-        kubevirtLoadBalancerRuleCodec = new KubevirtLoadBalancerRuleCodec();
-
-        assertThat(kubevirtLoadBalancerCodec, notNullValue());
-        assertThat(kubevirtLoadBalancerRuleCodec, notNullValue());
-
-        expect(mockCoreService.registerApplication(REST_APP_ID))
-                .andReturn(APP_ID).anyTimes();
-        replay(mockCoreService);
-        context.registerService(CoreService.class, mockCoreService);
-    }
-
-    /**
-     * Tests the kubevirt load balancer encoding.
-     */
-    @Test
-    public void testKubevirtLoadBalancerEncode() {
-        KubevirtLoadBalancer lb = DefaultKubevirtLoadBalancer.builder()
-                .name("lb-1")
-                .networkId("net-1")
-                .vip(IpAddress.valueOf("10.10.10.10"))
-                .members(ImmutableSet.of(IpAddress.valueOf("10.10.10.11"),
-                        IpAddress.valueOf("10.10.10.12")))
-                .rules(ImmutableSet.of(RULE1, RULE2, RULE3))
-                .description("network load balancer")
-                .build();
-
-        ObjectNode lbJson = kubevirtLoadBalancerCodec.encode(lb, context);
-        assertThat(lbJson, matchesKubevirtLoadBalancer(lb));
-    }
-
-    /**
-     * Tests the kubevirt load balancer decoding.
-     */
-    @Test
-    public void testKubevirtLoadBalancerDecode() throws IOException {
-        KubevirtLoadBalancer lb = getKubevirtLoadBalancer("KubevirtLoadBalancer.json");
-
-        assertThat(lb.name(), is("lb-1"));
-        assertThat(lb.description(), is("Example Load Balancer"));
-        assertThat(lb.networkId(), is("net-1"));
-        assertThat(lb.vip(), is(IpAddress.valueOf("10.10.10.10")));
-
-        Set<IpAddress> expectedMembers = ImmutableSet.of(IpAddress.valueOf("10.10.10.11"),
-                IpAddress.valueOf("10.10.10.12"));
-        Set<IpAddress> realMembers = lb.members();
-        assertThat(true, is(expectedMembers.containsAll(realMembers)));
-        assertThat(true, is(realMembers.containsAll(expectedMembers)));
-
-        Set<KubevirtLoadBalancerRule> expectedRules = ImmutableSet.of(RULE1, RULE2, RULE3);
-        Set<KubevirtLoadBalancerRule> realRules = lb.rules();
-        assertThat(true, is(expectedRules.containsAll(realRules)));
-        assertThat(true, is(realRules.containsAll(expectedRules)));
-    }
-
-    private KubevirtLoadBalancer getKubevirtLoadBalancer(String resourceName) throws IOException {
-        InputStream jsonStream = KubevirtLoadBalancerCodecTest.class.getResourceAsStream(resourceName);
-        JsonNode json = context.mapper().readTree(jsonStream);
-        MatcherAssert.assertThat(json, notNullValue());
-        KubevirtLoadBalancer lb = kubevirtLoadBalancerCodec.decode((ObjectNode) json, context);
-        assertThat(lb, notNullValue());
-        return lb;
-    }
-
-    private class MockCodecContext implements CodecContext {
-
-        private final ObjectMapper mapper = new ObjectMapper();
-        private final CodecManager manager = new CodecManager();
-        private final Map<Class<?>, Object> services = new HashMap<>();
-
-        /**
-         * Constructs a new mock codec context.
-         */
-        public MockCodecContext() {
-            manager.activate();
-        }
-
-        @Override
-        public ObjectMapper mapper() {
-            return mapper;
-        }
-
-        @Override
-        public <T> JsonCodec<T> codec(Class<T> entityClass) {
-            if (entityClass == KubevirtLoadBalancerRule.class) {
-                return (JsonCodec<T>) kubevirtLoadBalancerRuleCodec;
-            }
-            return manager.getCodec(entityClass);
-        }
-
-        @Override
-        public <T> T getService(Class<T> serviceClass) {
-            return (T) services.get(serviceClass);
-        }
-
-        // for registering mock services
-        public <T> void registerService(Class<T> serviceClass, T impl) {
-            services.put(serviceClass, impl);
-        }
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerJsonMatcher.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerJsonMatcher.java
deleted file mode 100644
index 9122bd0..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerJsonMatcher.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import org.hamcrest.Description;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-import org.onlab.packet.IpAddress;
-import org.onosproject.kubevirtnetworking.api.KubevirtLoadBalancer;
-import org.onosproject.kubevirtnetworking.api.KubevirtLoadBalancerRule;
-
-/**
- * Hamcrest matcher for load balancer.
- */
-public final class KubevirtLoadBalancerJsonMatcher extends TypeSafeDiagnosingMatcher<JsonNode> {
-
-    private static final String NAME = "name";
-    private static final String DESCRIPTION = "description";
-    private static final String VIP = "vip";
-    private static final String NETWORK_ID = "networkId";
-    private static final String MEMBERS = "members";
-    private static final String RULES = "rules";
-
-    private final KubevirtLoadBalancer lb;
-
-    private KubevirtLoadBalancerJsonMatcher(KubevirtLoadBalancer lb) {
-        this.lb = lb;
-    }
-
-    @Override
-    protected boolean matchesSafely(JsonNode jsonNode, Description description) {
-        // check name
-        String jsonName = jsonNode.get(NAME).asText();
-        String name = lb.name();
-        if (!jsonName.equals(name)) {
-            description.appendText("Name was " + jsonName);
-            return false;
-        }
-
-        // check description
-        JsonNode jsonDescription = jsonNode.get(DESCRIPTION);
-        if (jsonDescription != null) {
-            String myDescription = lb.description();
-            if (!jsonDescription.asText().equals(myDescription)) {
-                description.appendText("Description was " + jsonDescription);
-                return false;
-            }
-        }
-
-        // check VIP
-        String jsonVip = jsonNode.get(VIP).asText();
-        String vip = lb.vip().toString();
-        if (!jsonVip.equals(vip)) {
-            description.appendText("VIP was " + jsonVip);
-            return false;
-        }
-
-        // check network ID
-        String jsonNetworkId = jsonNode.get(NETWORK_ID).asText();
-        String networkId = lb.networkId();
-        if (!jsonNetworkId.equals(networkId)) {
-            description.appendText("NetworkId was " + jsonNetworkId);
-            return false;
-        }
-
-        // check members
-        ArrayNode jsonMembers = (ArrayNode) jsonNode.get(MEMBERS);
-        if (jsonMembers != null) {
-            // check size of members array
-            if (jsonMembers.size() != lb.members().size()) {
-                description.appendText("Members was " + jsonMembers.size());
-                return false;
-            }
-
-            for (JsonNode jsonMember : jsonMembers) {
-                IpAddress member = IpAddress.valueOf(jsonMember.asText());
-                if (!lb.members().contains(member)) {
-                    description.appendText("Member not found " + jsonMember.toString());
-                    return false;
-                }
-            }
-        }
-
-        ArrayNode jsonRules = (ArrayNode) jsonNode.get(RULES);
-        if (jsonRules != null) {
-            // check size of rules array
-            if (jsonRules.size() != lb.rules().size()) {
-                description.appendText("Rules was " + jsonRules.size());
-                return false;
-            }
-
-            // check rules
-            for (KubevirtLoadBalancerRule rule : lb.rules()) {
-                boolean ruleFound = false;
-                for (int ruleIndex = 0; ruleIndex < jsonRules.size(); ruleIndex++) {
-                    KubevirtLoadBalancerRuleJsonMatcher ruleMatcher =
-                            KubevirtLoadBalancerRuleJsonMatcher
-                                    .matchesKubevirtLoadBalancerRule(rule);
-                    if (ruleMatcher.matches(jsonRules.get(ruleIndex))) {
-                        ruleFound = true;
-                        break;
-                    }
-                }
-
-                if (!ruleFound) {
-                    description.appendText("Rule not found " + rule.toString());
-                    return false;
-                }
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public void describeTo(Description description) {
-        description.appendText(lb.toString());
-    }
-
-    /**
-     * Factory to allocate a kubevirt load balancer matcher.
-     *
-     * @param lb kubevirt load balancer object we are looking for
-     * @return matcher
-     */
-    public static KubevirtLoadBalancerJsonMatcher
-        matchesKubevirtLoadBalancer(KubevirtLoadBalancer lb) {
-        return new KubevirtLoadBalancerJsonMatcher(lb);
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerRuleJsonMatcher.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerRuleJsonMatcher.java
deleted file mode 100644
index 404d1ee..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancerRuleJsonMatcher.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.hamcrest.Description;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-import org.onosproject.kubevirtnetworking.api.KubevirtLoadBalancerRule;
-
-/**
- * Hamcrest matcher for kubevirt load balancer.
- */
-public final class KubevirtLoadBalancerRuleJsonMatcher extends TypeSafeDiagnosingMatcher<JsonNode> {
-
-    private final KubevirtLoadBalancerRule rule;
-
-    private static final String PROTOCOL = "protocol";
-    private static final String PORT_RANGE_MAX = "portRangeMax";
-    private static final String PORT_RANGE_MIN = "portRangeMin";
-
-    private KubevirtLoadBalancerRuleJsonMatcher(KubevirtLoadBalancerRule rule) {
-        this.rule = rule;
-    }
-
-    @Override
-    protected boolean matchesSafely(JsonNode jsonNode, Description description) {
-        // check protocol
-        JsonNode jsonProtocol = jsonNode.get(PROTOCOL);
-        if (jsonProtocol != null) {
-            String protocol = rule.protocol();
-            if (!jsonProtocol.asText().equals(protocol)) {
-                description.appendText("Protocol was " + jsonProtocol);
-                return false;
-            }
-        }
-
-        // check port range max
-        JsonNode jsonPortRangeMax = jsonNode.get(PORT_RANGE_MAX);
-        if (jsonPortRangeMax != null) {
-            int portRangeMax = rule.portRangeMax();
-            if (portRangeMax != jsonPortRangeMax.asInt()) {
-                description.appendText("PortRangeMax was " + jsonPortRangeMax);
-                return false;
-            }
-        }
-
-        // check port range min
-        JsonNode jsonPortRangeMin = jsonNode.get(PORT_RANGE_MIN);
-        if (jsonPortRangeMin != null) {
-            int portRangeMin = rule.portRangeMin();
-            if (portRangeMin != jsonPortRangeMin.asInt()) {
-                description.appendText("PortRangeMin was " + jsonPortRangeMin);
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public void describeTo(Description description) {
-        description.appendText(rule.toString());
-    }
-
-    /**
-     * Factory to allocate an kubevirt load balancer rule matcher.
-     *
-     * @param rule kubevirt load balancer rule object we are looking for
-     * @return matcher
-     */
-    public static KubevirtLoadBalancerRuleJsonMatcher
-        matchesKubevirtLoadBalancerRule(KubevirtLoadBalancerRule rule) {
-        return new KubevirtLoadBalancerRuleJsonMatcher(rule);
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java
deleted file mode 100644
index 667ca4b..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.ImmutableSet;
-import org.hamcrest.MatcherAssert;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.codec.impl.CodecManager;
-import org.onosproject.core.CoreService;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtNetwork;
-import org.onosproject.kubevirtnetworking.api.KubevirtHostRoute;
-import org.onosproject.kubevirtnetworking.api.KubevirtIpPool;
-import org.onosproject.kubevirtnetworking.api.KubevirtNetwork;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onosproject.kubevirtnetworking.codec.KubevirtNetworkJsonMatcher.matchesKubevirtNetwork;
-import static org.onosproject.net.NetTestTools.APP_ID;
-
-/**
- * Unit tests for KubevirtNetwork codec.
- */
-public final class KubevirtNetworkCodecTest {
-
-    MockCodecContext context;
-
-    JsonCodec<KubevirtNetwork> kubevirtNetworkCodec;
-    JsonCodec<KubevirtHostRoute> kubevirtHostRouteCodec;
-    JsonCodec<KubevirtIpPool> kubevirtIpPoolCodec;
-
-    final CoreService mockCoreService = createMock(CoreService.class);
-    private static final String REST_APP_ID = "org.onosproject.rest";
-
-    @Before
-    public void setUp() {
-        context = new MockCodecContext();
-        kubevirtNetworkCodec = new KubevirtNetworkCodec();
-        kubevirtHostRouteCodec = new KubevirtHostRouteCodec();
-        kubevirtIpPoolCodec = new KubevirtIpPoolCodec();
-
-        assertThat(kubevirtNetworkCodec, notNullValue());
-        assertThat(kubevirtHostRouteCodec, notNullValue());
-        assertThat(kubevirtIpPoolCodec, notNullValue());
-
-        expect(mockCoreService.registerApplication(REST_APP_ID))
-                .andReturn(APP_ID).anyTimes();
-        replay(mockCoreService);
-        context.registerService(CoreService.class, mockCoreService);
-    }
-
-    /**
-     * Tests the kubevirt network encoding.
-     */
-    @Test
-    public void testKubevirtNetworkEncode() {
-        KubevirtHostRoute hostRoute1 = new KubevirtHostRoute(IpPrefix.valueOf("10.10.10.0/24"),
-                IpAddress.valueOf("20.20.20.1"));
-        KubevirtHostRoute hostRoute2 = new KubevirtHostRoute(IpPrefix.valueOf("20.20.20.0/24"),
-                IpAddress.valueOf("10.10.10.1"));
-
-        KubevirtIpPool ipPool = new KubevirtIpPool(IpAddress.valueOf("10.10.10.100"),
-                IpAddress.valueOf("10.10.10.200"));
-
-        KubevirtNetwork network = DefaultKubevirtNetwork.builder()
-                .networkId("net-1")
-                .name("net-1")
-                .type(KubevirtNetwork.Type.FLAT)
-                .gatewayIp(IpAddress.valueOf("10.10.10.1"))
-                .defaultRoute(true)
-                .mtu(1500)
-                .cidr("10.10.10.0/24")
-                .hostRoutes(ImmutableSet.of(hostRoute1, hostRoute2))
-                .ipPool(ipPool)
-                .dnses(ImmutableSet.of(IpAddress.valueOf("8.8.8.8")))
-                .build();
-
-        ObjectNode networkJson = kubevirtNetworkCodec.encode(network, context);
-        assertThat(networkJson, matchesKubevirtNetwork(network));
-    }
-
-    /**
-     * Tests the kubevirt network decoding.
-     *
-     * @throws IOException io exception
-     */
-    @Test
-    public void testKubevirtNetworkDecode() throws IOException {
-        KubevirtNetwork network = getKubevirtNetwork("KubevirtNetwork.json");
-
-        assertThat(network.networkId(), is("network-1"));
-        assertThat(network.name(), is("network-1"));
-        assertThat(network.type().name(), is("FLAT"));
-        assertThat(network.cidr(), is("10.10.0.0/24"));
-        assertThat(network.gatewayIp().toString(), is("10.10.0.1"));
-        assertThat(network.defaultRoute(), is(true));
-        assertThat(network.ipPool().start().toString(), is("10.10.10.100"));
-        assertThat(network.ipPool().end().toString(), is("10.10.10.200"));
-        assertThat(network.dnses().size(), is(1));
-        KubevirtHostRoute route = network.hostRoutes().stream().findFirst().orElse(null);
-        assertThat(route, is(new KubevirtHostRoute(IpPrefix.valueOf("10.10.10.0/24"),
-                IpAddress.valueOf("10.10.10.1"))));
-    }
-
-    private KubevirtNetwork getKubevirtNetwork(String resourceName) throws IOException {
-        InputStream jsonStream = KubevirtNetworkCodecTest.class.getResourceAsStream(resourceName);
-        JsonNode json = context.mapper().readTree(jsonStream);
-        MatcherAssert.assertThat(json, notNullValue());
-        KubevirtNetwork network = kubevirtNetworkCodec.decode((ObjectNode) json, context);
-        assertThat(network, notNullValue());
-        return network;
-    }
-
-    private class MockCodecContext implements CodecContext {
-
-        private final ObjectMapper mapper = new ObjectMapper();
-        private final CodecManager manager = new CodecManager();
-        private final Map<Class<?>, Object> services = new HashMap<>();
-
-        /**
-         * Constructs a new mock codec context.
-         */
-        public MockCodecContext() {
-            manager.activate();
-        }
-
-        @Override
-        public ObjectMapper mapper() {
-            return mapper;
-        }
-
-        @Override
-        public <T> JsonCodec<T> codec(Class<T> entityClass) {
-            if (entityClass == KubevirtHostRoute.class) {
-                return (JsonCodec<T>) kubevirtHostRouteCodec;
-            }
-
-            if (entityClass == KubevirtIpPool.class) {
-                return (JsonCodec<T>) kubevirtIpPoolCodec;
-            }
-
-            return manager.getCodec(entityClass);
-        }
-
-        @Override
-        public <T> T getService(Class<T> serviceClass) {
-            return (T) services.get(serviceClass);
-        }
-
-        // for registering mock services
-        public <T> void registerService(Class<T> serviceClass, T impl) {
-            services.put(serviceClass, impl);
-        }
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonArrayMatcher.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonArrayMatcher.java
deleted file mode 100644
index 6701c7b..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonArrayMatcher.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.eclipsesource.json.JsonArray;
-import com.eclipsesource.json.JsonObject;
-import org.hamcrest.Description;
-import org.hamcrest.TypeSafeMatcher;
-import org.onosproject.kubevirtnetworking.api.KubevirtNetwork;
-
-public final class KubevirtNetworkJsonArrayMatcher extends TypeSafeMatcher<JsonArray> {
-
-    private final KubevirtNetwork network;
-    private String reason = "";
-
-    public KubevirtNetworkJsonArrayMatcher(KubevirtNetwork network) {
-        this.network = network;
-    }
-
-    @Override
-    protected boolean matchesSafely(JsonArray json) {
-        boolean networkFound = false;
-        for (int jsonNetworkIndex = 0; jsonNetworkIndex < json.size(); jsonNetworkIndex++) {
-            final JsonObject jsonNode = json.get(jsonNetworkIndex).asObject();
-
-            final String networkId = network.networkId();
-            final String jsonNetworkId = jsonNode.get("networkId").asString();
-            if (jsonNetworkId.equals(networkId)) {
-                networkFound = true;
-            }
-        }
-
-        if (!networkFound) {
-            reason = "Network with networkId " + network.networkId() + " not found";
-            return false;
-        } else {
-            return true;
-        }
-    }
-
-    @Override
-    public void describeTo(Description description) {
-        description.appendText(reason);
-    }
-
-    /**
-     * Factory to allocate a network array matcher.
-     *
-     * @param network network object we are looking for
-     * @return matcher
-     */
-    public static KubevirtNetworkJsonArrayMatcher hasNetwork(KubevirtNetwork network) {
-        return new KubevirtNetworkJsonArrayMatcher(network);
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java
deleted file mode 100644
index 7cbc587..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.hamcrest.Description;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-import org.onlab.packet.IpAddress;
-import org.onosproject.kubevirtnetworking.api.KubevirtHostRoute;
-import org.onosproject.kubevirtnetworking.api.KubevirtIpPool;
-import org.onosproject.kubevirtnetworking.api.KubevirtNetwork;
-
-/**
- * Hamcrest matcher for kubevirt network.
- */
-public final class KubevirtNetworkJsonMatcher extends TypeSafeDiagnosingMatcher<JsonNode> {
-
-    private final KubevirtNetwork network;
-    private static final String NETWORK_ID = "networkId";
-    private static final String TYPE = "type";
-    private static final String NAME = "name";
-    private static final String MTU = "mtu";
-    private static final String SEGMENT_ID = "segmentId";
-    private static final String GATEWAY_IP = "gatewayIp";
-    private static final String DEFAULT_ROUTE = "defaultRoute";
-    private static final String CIDR = "cidr";
-    private static final String HOST_ROUTES = "hostRoutes";
-    private static final String IP_POOL = "ipPool";
-    private static final String DNSES = "dnses";
-
-    private KubevirtNetworkJsonMatcher(KubevirtNetwork network) {
-        this.network = network;
-    }
-
-    @Override
-    protected boolean matchesSafely(JsonNode jsonNode, Description description) {
-        // check network ID
-        String jsonNetworkId = jsonNode.get(NETWORK_ID).asText();
-        String networkId = network.networkId();
-        if (!jsonNetworkId.equals(networkId)) {
-            description.appendText("network ID was " + jsonNetworkId);
-            return false;
-        }
-
-        // check type
-        String jsonType = jsonNode.get(TYPE).asText();
-        String type = network.type().name();
-        if (!jsonType.equals(type)) {
-            description.appendText("network type was " + jsonType);
-            return false;
-        }
-
-        // check name
-        String jsonName = jsonNode.get(NAME).asText();
-        String name = network.name();
-        if (!jsonName.equals(name)) {
-            description.appendText("network name was " + jsonName);
-            return false;
-        }
-
-        // check MTU
-        int jsonMtu = jsonNode.get(MTU).asInt();
-        int mtu = network.mtu();
-        if (jsonMtu != mtu) {
-            description.appendText("network MTU was " + jsonMtu);
-            return false;
-        }
-
-        // check gateway IP
-        String jsonGatewayIp = jsonNode.get(GATEWAY_IP).asText();
-        String gatewayIp = network.gatewayIp().toString();
-        if (!jsonGatewayIp.equals(gatewayIp)) {
-            description.appendText("gateway IP was " + jsonGatewayIp);
-            return false;
-        }
-
-        // check default route
-        boolean jsonDefaultRoute = jsonNode.get(DEFAULT_ROUTE).asBoolean();
-        boolean defaultRoute = network.defaultRoute();
-        if (jsonDefaultRoute != defaultRoute) {
-            description.appendText("Default route was " + jsonDefaultRoute);
-            return false;
-        }
-
-        // check CIDR
-        String jsonCidr = jsonNode.get(CIDR).asText();
-        String cidr = network.cidr();
-        if (!jsonCidr.equals(cidr)) {
-            description.appendText("CIDR was " + jsonCidr);
-            return false;
-        }
-
-        // check segment ID
-        JsonNode jsonSegmentId = jsonNode.get(SEGMENT_ID);
-        if (jsonSegmentId != null) {
-            String segmentId = network.segmentId();
-            if (!jsonSegmentId.asText().equals(segmentId)) {
-                description.appendText("segment ID was " + jsonSegmentId.asText());
-                return false;
-            }
-        }
-
-        // check ip pool
-        JsonNode jsonIpPool = jsonNode.get(IP_POOL);
-        if (jsonIpPool != null) {
-            KubevirtIpPool ipPool = network.ipPool();
-            KubevirtIpPoolJsonMatcher ipPoolMatcher =
-                    KubevirtIpPoolJsonMatcher.matchesKubevirtIpPool(ipPool);
-            if (ipPoolMatcher.matches(jsonIpPool)) {
-                return true;
-            } else {
-                description.appendText("IP pool was " + jsonIpPool.toString());
-                return false;
-            }
-        }
-
-        // check host routes
-        JsonNode jsonHostRoutes = jsonNode.get(HOST_ROUTES);
-        if (jsonHostRoutes != null) {
-            if (jsonHostRoutes.size() != network.hostRoutes().size()) {
-                description.appendText("host routes size was " + jsonHostRoutes.size());
-                return false;
-            }
-
-            for (KubevirtHostRoute hostRoute : network.hostRoutes()) {
-                boolean routeFound = false;
-                for (int routeIndex = 0; routeIndex < jsonHostRoutes.size(); routeIndex++) {
-                    KubevirtHostRouteJsonMatcher routeMatcher =
-                            KubevirtHostRouteJsonMatcher.matchesKubevirtHostRoute(hostRoute);
-                    if (routeMatcher.matches(jsonHostRoutes.get(routeIndex))) {
-                        routeFound = true;
-                        break;
-                    }
-                }
-
-                if (!routeFound) {
-                    description.appendText("Host route not found " + hostRoute.toString());
-                    return false;
-                }
-            }
-        }
-
-        // check dnses
-        JsonNode jsonDnses = jsonNode.get(DNSES);
-        if (jsonDnses != null) {
-            if (jsonDnses.size() != network.dnses().size()) {
-                description.appendText("DNSes size was " + jsonDnses.size());
-                return false;
-            }
-
-
-            for (IpAddress dns : network.dnses()) {
-                boolean dnsFound = false;
-                for (int dnsIndex = 0; dnsIndex < jsonDnses.size(); dnsIndex++) {
-                    String jsonDns = jsonDnses.get(dnsIndex).asText();
-                    if (jsonDns.equals(dns.toString())) {
-                        dnsFound = true;
-                        break;
-                    }
-                }
-
-                if (!dnsFound) {
-                    description.appendText("DNS not found " + dns.toString());
-                    return false;
-                }
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public void describeTo(Description description) {
-        description.appendText(network.toString());
-    }
-
-    /**
-     * Factory to allocate an kubevirt network matcher.
-     *
-     * @param network kubevirt network object we are looking for
-     * @return matcher
-     */
-    public static KubevirtNetworkJsonMatcher
-                    matchesKubevirtNetwork(KubevirtNetwork network) {
-        return new KubevirtNetworkJsonMatcher(network);
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtPortCodecTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtPortCodecTest.java
deleted file mode 100644
index 5c21a28..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtPortCodecTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.codec.impl.CodecManager;
-import org.onosproject.core.CoreService;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtPort;
-import org.onosproject.kubevirtnetworking.api.KubevirtPort;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onosproject.kubevirtnetworking.codec.KubevirtPortJsonMatcher.matchesKubevirtPort;
-import static org.onosproject.net.NetTestTools.APP_ID;
-
-/**
- * Unit tests for KubevirtPort codec.
- */
-public final class KubevirtPortCodecTest {
-
-    MockCodecContext context;
-
-    JsonCodec<KubevirtPort> kubevirtPortCodec;
-
-    final CoreService mockCoreService = createMock(CoreService.class);
-    private static final String REST_APP_ID = "org.onosproject.rest";
-
-    @Before
-    public void setUp() {
-        context = new MockCodecContext();
-        kubevirtPortCodec = new KubevirtPortCodec();
-
-        assertThat(kubevirtPortCodec, notNullValue());
-
-        expect(mockCoreService.registerApplication(REST_APP_ID))
-                .andReturn(APP_ID).anyTimes();
-        replay(mockCoreService);
-        context.registerService(CoreService.class, mockCoreService);
-    }
-
-    /**
-     * Tests the kubevirt port encoding.
-     */
-    @Test
-    public void testKubevirtPortEncode() {
-        KubevirtPort port = DefaultKubevirtPort.builder()
-                .vmName("test-vm-1")
-                .networkId("net-1")
-                .macAddress(MacAddress.valueOf("11:22:33:44:55:66"))
-                .ipAddress(IpAddress.valueOf("10.10.10.100"))
-                .deviceId(DeviceId.deviceId("of:foo"))
-                .portNumber(PortNumber.portNumber("1"))
-                .build();
-        ObjectNode portJson = kubevirtPortCodec.encode(port, context);
-        assertThat(portJson, matchesKubevirtPort(port));
-    }
-
-    private class MockCodecContext implements CodecContext {
-
-        private final ObjectMapper mapper = new ObjectMapper();
-        private final CodecManager manager = new CodecManager();
-        private final Map<Class<?>, Object> services = new HashMap<>();
-
-        /**
-         * Constructs a new mock codec context.
-         */
-        public MockCodecContext() {
-            manager.activate();
-        }
-
-        @Override
-        public ObjectMapper mapper() {
-            return mapper;
-        }
-
-        @Override
-        public <T> JsonCodec<T> codec(Class<T> entityClass) {
-            return manager.getCodec(entityClass);
-        }
-
-        @Override
-        public <T> T getService(Class<T> serviceClass) {
-            return (T) services.get(serviceClass);
-        }
-
-        // for registering mock services
-        public <T> void registerService(Class<T> serviceClass, T impl) {
-            services.put(serviceClass, impl);
-        }
-    }
-}
-
-
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtPortJsonMatcher.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtPortJsonMatcher.java
deleted file mode 100644
index 1fc6207..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtPortJsonMatcher.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.hamcrest.Description;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-import org.onlab.packet.IpAddress;
-import org.onosproject.kubevirtnetworking.api.KubevirtPort;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-
-/**
- * Hamcrest matcher for kubevirt port.
- */
-public final class KubevirtPortJsonMatcher extends TypeSafeDiagnosingMatcher<JsonNode> {
-
-    private final KubevirtPort port;
-
-    private static final String VM_NAME = "vmName";
-    private static final String NETWORK_ID = "networkId";
-    private static final String MAC_ADDRESS = "macAddress";
-    private static final String IP_ADDRESS = "ipAddress";
-    private static final String DEVICE_ID = "deviceId";
-    private static final String PORT_NUMBER = "portNumber";
-
-    private KubevirtPortJsonMatcher(KubevirtPort port) {
-        this.port = port;
-    }
-
-    @Override
-    protected boolean matchesSafely(JsonNode jsonNode, Description description) {
-        // check VM name
-        String jsonVmName = jsonNode.get(VM_NAME).asText();
-        String vmName = port.vmName();
-        if (!jsonVmName.equals(vmName)) {
-            description.appendText("VM name was " + jsonVmName);
-            return false;
-        }
-
-        // check network ID
-        String jsonNetworkId = jsonNode.get(NETWORK_ID).asText();
-        String networkId = port.networkId();
-        if (!jsonNetworkId.equals(networkId)) {
-            description.appendText("network ID was " + jsonNetworkId);
-            return false;
-        }
-
-        // check MAC address
-        String jsonMacAddress = jsonNode.get(MAC_ADDRESS).asText();
-        String macAddress = port.macAddress().toString();
-        if (!jsonMacAddress.equals(macAddress)) {
-            description.appendText("MAC address was " + jsonMacAddress);
-            return false;
-        }
-
-        // check IP address
-        JsonNode jsonIpAddress = jsonNode.get(IP_ADDRESS);
-        if (jsonIpAddress != null) {
-            IpAddress ipAddress = port.ipAddress();
-            if (!jsonIpAddress.asText().equals(ipAddress.toString())) {
-                description.appendText("IP address was " + jsonIpAddress.asText());
-                return false;
-            }
-        }
-
-        // check device ID
-        JsonNode jsonDeviceId = jsonNode.get(DEVICE_ID);
-        if (jsonDeviceId != null) {
-            DeviceId deviceId = port.deviceId();
-            if (!jsonDeviceId.asText().equals(deviceId.toString())) {
-                description.appendText("Device ID was " + jsonDeviceId.asText());
-                return false;
-            }
-        }
-
-        // check port number
-        JsonNode jsonPortNumber = jsonNode.get(PORT_NUMBER);
-        if (jsonPortNumber != null) {
-            PortNumber portNUmber = port.portNumber();
-            if (!jsonPortNumber.asText().equals(portNUmber.toString())) {
-                description.appendText("Port number was " + jsonPortNumber.asText());
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public void describeTo(Description description) {
-        description.appendText(port.toString());
-    }
-    /**
-     * Factory to allocate an kubevirt port matcher.
-     *
-     * @param port kubevirt port object we are looking for
-     * @return matcher
-     */
-    public static KubevirtPortJsonMatcher matchesKubevirtPort(KubevirtPort port) {
-        return new KubevirtPortJsonMatcher(port);
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtRouterCodecTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtRouterCodecTest.java
deleted file mode 100644
index 1ff8951..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtRouterCodecTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import org.hamcrest.MatcherAssert;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.codec.impl.MockCodecContext;
-import org.onosproject.core.CoreService;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtRouter;
-import org.onosproject.kubevirtnetworking.api.KubevirtPeerRouter;
-import org.onosproject.kubevirtnetworking.api.KubevirtRouter;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import static junit.framework.TestCase.assertEquals;
-import static junit.framework.TestCase.assertTrue;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onosproject.kubevirtnetworking.codec.KubevirtRouterJsonMatcher.matchesKubevirtRouter;
-import static org.onosproject.net.NetTestTools.APP_ID;
-
-/**
- * Unit tests for KubevirtRouter codec.
- */
-public final class KubevirtRouterCodecTest {
-
-    MockCodecContext context;
-
-    JsonCodec<KubevirtRouter> kubevirtRouterCodec;
-
-    final CoreService mockCoreService = createMock(CoreService.class);
-    private static final String REST_APP_ID = "org.onosproject.rest";
-
-    @Before
-    public void setUp() {
-        context = new MockCodecContext();
-        kubevirtRouterCodec = new KubevirtRouterCodec();
-
-        assertThat(kubevirtRouterCodec, notNullValue());
-        expect(mockCoreService.registerApplication(REST_APP_ID))
-                .andReturn(APP_ID).anyTimes();
-        replay(mockCoreService);
-        context.registerService(CoreService.class, mockCoreService);
-    }
-
-    /**
-     * Tests the kubevirt router encoding.
-     */
-    @Test
-    public void testKubevirtRouterEncode() {
-        KubevirtPeerRouter peerRouter = new KubevirtPeerRouter(IpAddress.valueOf("10.10.10.10"),
-                MacAddress.valueOf("11:22:33:44:55:66"));
-
-        KubevirtRouter router = DefaultKubevirtRouter.builder()
-                .name("router-1")
-                .enableSnat(true)
-                .mac(MacAddress.valueOf("11:22:33:44:55:66"))
-                .description("router-1")
-                .internal(ImmutableSet.of("vlan-1"))
-                .external(ImmutableMap.of("10.10.10.20", "flat-1"))
-                .peerRouter(peerRouter)
-                .electedGateway("gatewayNode")
-                .build();
-
-        ObjectNode routerJson = kubevirtRouterCodec.encode(router, context);
-        assertThat(routerJson, matchesKubevirtRouter(router));
-    }
-
-    @Test
-    public void testKubevirtRouterDecode() throws IOException {
-        KubevirtRouter router = getKubevirtRouter("KubevirtRouter.json");
-
-        assertEquals("router-1", router.name());
-        assertEquals("Example Virtual Router", router.description());
-        assertTrue(router.enableSnat());
-        assertEquals("11:22:33:44:55:66", router.mac().toString());
-        assertEquals("192.168.10.5",
-                router.external().keySet().stream().findAny().orElse(null));
-        assertEquals("external-network", router.external().get("192.168.10.5"));
-        assertTrue(router.internal().contains("vxlan-network-1"));
-        assertTrue(router.internal().contains("vxlan-network-2"));
-        assertEquals("192.168.10.1", router.peerRouter().ipAddress().toString());
-        assertEquals("gatewayNode", router.electedGateway());
-    }
-
-    private KubevirtRouter getKubevirtRouter(String resourceName) throws IOException {
-        InputStream jsonStream = KubevirtRouterCodecTest.class.getResourceAsStream(resourceName);
-        JsonNode json = context.mapper().readTree(jsonStream);
-        MatcherAssert.assertThat(json, notNullValue());
-        KubevirtRouter router = kubevirtRouterCodec.decode((ObjectNode) json, context);
-        assertThat(router, notNullValue());
-        return router;
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtRouterJsonMatcher.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtRouterJsonMatcher.java
deleted file mode 100644
index a855f42..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtRouterJsonMatcher.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.hamcrest.Description;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-import org.onosproject.kubevirtnetworking.api.KubevirtRouter;
-
-/**
- * Hamcrest matcher for kubevirt router interface.
- */
-public final class KubevirtRouterJsonMatcher extends TypeSafeDiagnosingMatcher<JsonNode> {
-
-    private final KubevirtRouter router;
-    private static final String NAME = "name";
-    private static final String DESCRIPTION = "description";
-    private static final String ENABLE_SNAT = "enableSnat";
-    private static final String INTERNAL = "internal";
-    private static final String EXTERNAL = "external";
-    private static final String PEER_ROUTER = "peerRouter";
-    private static final String IP_ADDRESS = "ip";
-    private static final String MAC_ADDRESS = "mac";
-    private static final String NETWORK = "network";
-
-    private KubevirtRouterJsonMatcher(KubevirtRouter router) {
-        this.router = router;
-    }
-
-    @Override
-    protected boolean matchesSafely(JsonNode jsonNode, Description description) {
-
-        // check name
-        String jsonName = jsonNode.get(NAME).asText();
-        String name = router.name();
-        if (!jsonName.equals(name)) {
-            description.appendText("Name was " + jsonName);
-            return false;
-        }
-
-        // check description
-        JsonNode jsonDescription = jsonNode.get(DESCRIPTION);
-        if (jsonDescription != null) {
-            String myDescription = router.description();
-            if (!jsonDescription.asText().equals(myDescription)) {
-                description.appendText("Description was " + jsonDescription);
-                return false;
-            }
-        }
-
-        // check enable snat
-        JsonNode jsonEnableSnat = jsonNode.get(ENABLE_SNAT);
-        if (jsonEnableSnat != null) {
-            boolean enableSnat = router.enableSnat();
-            if (jsonEnableSnat.asBoolean() != enableSnat) {
-                description.appendText("EnableSNAT was " + jsonEnableSnat);
-                return false;
-            }
-        }
-
-        // check vrouter MAC
-        String jsonMac = jsonNode.get(MAC_ADDRESS).asText();
-        String mac = router.mac().toString();
-        if (!jsonMac.equals(mac)) {
-            description.appendText("MAC was " + jsonMac);
-            return false;
-        }
-
-        // check internal
-        JsonNode jsonInternal = jsonNode.get(INTERNAL);
-        if (jsonInternal != null) {
-            if (jsonInternal.size() != router.internal().size()) {
-                description.appendText("Internal networks size was " + jsonInternal.size());
-                return false;
-            }
-
-            for (int networkIndex = 0; networkIndex < jsonInternal.size(); networkIndex++) {
-                boolean networkFound = false;
-                String jsonNetwork = jsonInternal.get(networkIndex).asText();
-                if (router.internal().contains(jsonNetwork)) {
-                    networkFound = true;
-                }
-
-                if (!networkFound) {
-                    description.appendText("network not found " + jsonNetwork);
-                    return false;
-                }
-            }
-        }
-
-        // check external
-        ArrayNode jsonExternal = (ArrayNode) jsonNode.get(EXTERNAL);
-        if (jsonExternal != null) {
-            if (jsonExternal.size() != router.external().size()) {
-                description.appendText("External networks size was " + jsonExternal.size());
-                return false;
-            }
-
-            for (int itemIndex = 0; itemIndex < jsonExternal.size(); itemIndex++) {
-                boolean itemFound = false;
-                ObjectNode jsonItem = (ObjectNode) jsonExternal.get(itemIndex);
-                String jsonIp = jsonItem.get(IP_ADDRESS).asText();
-                String jsonNetwork = jsonItem.get(NETWORK).asText();
-
-                if (router.external().containsKey(jsonIp)) {
-                    if (router.external().get(jsonIp).equals(jsonNetwork)) {
-                        itemFound = true;
-                    }
-                }
-
-                if (!itemFound) {
-                    description.appendText("External not found " + jsonItem.toString());
-                    return false;
-                }
-            }
-        }
-
-        // check peer router
-        ObjectNode jsonPeerRouter = (ObjectNode) jsonNode.get(PEER_ROUTER);
-        if (jsonPeerRouter != null) {
-            JsonNode jsonIp = jsonPeerRouter.get(IP_ADDRESS);
-
-            if (jsonIp != null) {
-                if (!jsonIp.asText().equals(router.peerRouter().ipAddress().toString())) {
-                    description.appendText("Peer router IP was " + jsonIp);
-                    return false;
-                }
-            }
-
-            JsonNode jsonProuterMac = jsonPeerRouter.get(MAC_ADDRESS);
-
-            if (jsonProuterMac != null) {
-                if (!jsonProuterMac.asText().equals(router.peerRouter().macAddress().toString())) {
-                    description.appendText("Peer router MAC was " + jsonMac);
-                    return false;
-                }
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public void describeTo(Description description) {
-        description.appendText(router.toString());
-    }
-
-    /**
-     * Factory to allocate a kubevirt router matcher.
-     *
-     * @param router kubevirt router object we are looking for
-     * @return matcher
-     */
-    public static KubevirtRouterJsonMatcher matchesKubevirtRouter(KubevirtRouter router) {
-        return new KubevirtRouterJsonMatcher(router);
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupCodecTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupCodecTest.java
deleted file mode 100644
index 51bdeb5..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupCodecTest.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.ImmutableSet;
-import org.hamcrest.MatcherAssert;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.IpPrefix;
-import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.codec.impl.CodecManager;
-import org.onosproject.core.CoreService;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtSecurityGroup;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtSecurityGroupRule;
-import org.onosproject.kubevirtnetworking.api.KubevirtSecurityGroup;
-import org.onosproject.kubevirtnetworking.api.KubevirtSecurityGroupRule;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.Map;
-
-import static junit.framework.TestCase.assertEquals;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onosproject.kubevirtnetworking.codec.KubevirtSecurityGroupJsonMatcher.matchesKubevirtSecurityGroup;
-import static org.onosproject.net.NetTestTools.APP_ID;
-
-/**
- * Unit tests for KubevirtSecurityGroup codec.
- */
-public final class KubevirtSecurityGroupCodecTest {
-
-    MockCodecContext context;
-
-    JsonCodec<KubevirtSecurityGroup> kubevirtSecurityGroupCodec;
-    JsonCodec<KubevirtSecurityGroupRule> kubevirtSecurityGroupRuleCodec;
-
-    final CoreService mockCoreService = createMock(CoreService.class);
-    private static final String REST_APP_ID = "org.onosproject.rest";
-
-    @Before
-    public void setUp() {
-        context = new MockCodecContext();
-        kubevirtSecurityGroupCodec = new KubevirtSecurityGroupCodec();
-        kubevirtSecurityGroupRuleCodec = new KubevirtSecurityGroupRuleCodec();
-
-        assertThat(kubevirtSecurityGroupCodec, notNullValue());
-        assertThat(kubevirtSecurityGroupRuleCodec, notNullValue());
-        expect(mockCoreService.registerApplication(REST_APP_ID))
-                .andReturn(APP_ID).anyTimes();
-        replay(mockCoreService);
-        context.registerService(CoreService.class, mockCoreService);
-    }
-
-    /**
-     * Tests the kubevirt security group encoding.
-     */
-    @Test
-    public void testKubevirtSecurityGroupEncode() {
-        KubevirtSecurityGroupRule rule = DefaultKubevirtSecurityGroupRule.builder()
-                .id("sgr-1")
-                .securityGroupId("sg-1")
-                .direction("ingress")
-                .etherType("IPv4")
-                .portRangeMin(0)
-                .portRangeMax(80)
-                .protocol("tcp")
-                .remoteIpPrefix(IpPrefix.valueOf("0.0.0.0/0"))
-                .remoteGroupId("g-1")
-                .build();
-
-        KubevirtSecurityGroup sg = DefaultKubevirtSecurityGroup.builder()
-                .id("sg-1")
-                .name("sg")
-                .description("example-sg")
-                .rules(ImmutableSet.of(rule))
-                .build();
-
-        ObjectNode sgJson = kubevirtSecurityGroupCodec.encode(sg, context);
-        assertThat(sgJson, matchesKubevirtSecurityGroup(sg));
-    }
-
-    /**
-     * Tests the kubevirt security group decoding.
-     */
-    @Test
-    public void testKubevirtSecurityGroupDecode() throws IOException {
-        KubevirtSecurityGroup sg = getKubevirtSecurityGroup("KubevirtSecurityGroup.json");
-        KubevirtSecurityGroupRule rule = sg.rules().stream().findAny().orElse(null);
-
-        assertEquals("sg-1", sg.id());
-        assertEquals("sg", sg.name());
-        assertEquals("example-sg", sg.description());
-
-        assertEquals("sgr-1", rule.id());
-        assertEquals("sg-1", rule.securityGroupId());
-        assertEquals("ingress", rule.direction());
-        assertEquals("IPv4", rule.etherType());
-        assertEquals((Integer) 80, rule.portRangeMax());
-        assertEquals((Integer) 0, rule.portRangeMin());
-        assertEquals("tcp", rule.protocol());
-        assertEquals("0.0.0.0/0", rule.remoteIpPrefix().toString());
-        assertEquals("g-1", rule.remoteGroupId());
-    }
-
-    private KubevirtSecurityGroup getKubevirtSecurityGroup(String resourceName) throws IOException {
-        InputStream jsonStream = KubevirtSecurityGroupCodecTest.class.getResourceAsStream(resourceName);
-        JsonNode json = context.mapper().readTree(jsonStream);
-        MatcherAssert.assertThat(json, notNullValue());
-        KubevirtSecurityGroup sg = kubevirtSecurityGroupCodec.decode((ObjectNode) json, context);
-        assertThat(sg, notNullValue());
-        return sg;
-    }
-
-    private class MockCodecContext implements CodecContext {
-
-        private final ObjectMapper mapper = new ObjectMapper();
-        private final CodecManager manager = new CodecManager();
-        private final Map<Class<?>, Object> services = new HashMap<>();
-
-        /**
-         * Constructs a new mock codec context.
-         */
-        public MockCodecContext() {
-            manager.activate();
-        }
-
-        @Override
-        public ObjectMapper mapper() {
-            return mapper;
-        }
-
-        @Override
-        public <T> JsonCodec<T> codec(Class<T> entityClass) {
-            if (entityClass == KubevirtSecurityGroupRule.class) {
-                return (JsonCodec<T>) kubevirtSecurityGroupRuleCodec;
-            }
-
-            return manager.getCodec(entityClass);
-        }
-
-        @Override
-        public <T> T getService(Class<T> serviceClass) {
-            return (T) services.get(serviceClass);
-        }
-
-        // for registering mock services
-        public <T> void registerService(Class<T> serviceClass, T impl) {
-            services.put(serviceClass, impl);
-        }
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupJsonMatcher.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupJsonMatcher.java
deleted file mode 100644
index ea04c60..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupJsonMatcher.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.hamcrest.Description;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-import org.onosproject.kubevirtnetworking.api.KubevirtSecurityGroup;
-import org.onosproject.kubevirtnetworking.api.KubevirtSecurityGroupRule;
-
-/**
- * Hamcrest matcher for security group.
- */
-public final class KubevirtSecurityGroupJsonMatcher extends TypeSafeDiagnosingMatcher<JsonNode> {
-
-    private static final String ID = "id";
-    private static final String NAME = "name";
-    private static final String DESCRIPTION = "description";
-    private static final String RULES = "rules";
-
-    private final KubevirtSecurityGroup sg;
-
-    private KubevirtSecurityGroupJsonMatcher(KubevirtSecurityGroup sg) {
-        this.sg = sg;
-    }
-
-    @Override
-    protected boolean matchesSafely(JsonNode jsonNode, Description description) {
-        // check sg ID
-        String jsonId = jsonNode.get(ID).asText();
-        String id = sg.id();
-        if (!jsonId.equals(id)) {
-            description.appendText("ID was " + jsonId);
-            return false;
-        }
-
-        // check sg name
-        String jsonName = jsonNode.get(NAME).asText();
-        String name = sg.name();
-        if (!jsonName.equals(name)) {
-            description.appendText("Name was " + jsonName);
-            return false;
-        }
-
-        // check description
-        JsonNode jsonDescription = jsonNode.get(DESCRIPTION);
-        if (jsonDescription != null) {
-            String myDescription = sg.description();
-            if (!jsonDescription.asText().equals(myDescription)) {
-                description.appendText("Description was " + jsonDescription);
-                return false;
-            }
-        }
-
-        JsonNode jsonSgr = jsonNode.get(RULES);
-        if (jsonSgr != null) {
-            // check size of rule array
-            if (jsonSgr.size() != sg.rules().size()) {
-                description.appendText("Rules was " + jsonSgr.size());
-                return false;
-            }
-
-            // check rules
-            for (KubevirtSecurityGroupRule sgr : sg.rules()) {
-                boolean ruleFound = false;
-                for (int ruleIndex = 0; ruleIndex < jsonSgr.size(); ruleIndex++) {
-                    KubevirtSecurityGroupRuleJsonMatcher ruleMatcher =
-                            KubevirtSecurityGroupRuleJsonMatcher
-                                    .matchesKubevirtSecurityGroupRule(sgr);
-                    if (ruleMatcher.matches(jsonSgr.get(ruleIndex))) {
-                        ruleFound = true;
-                        break;
-                    }
-                }
-
-                if (!ruleFound) {
-                    description.appendText("Rule not found " + sgr.toString());
-                    return false;
-                }
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public void describeTo(Description description) {
-        description.appendText(sg.toString());
-    }
-
-    /**
-     * Factory to allocate a kubevirt security group matcher.
-     *
-     * @param sg kubevirt security group object we are looking for
-     * @return matcher
-     */
-    public static KubevirtSecurityGroupJsonMatcher
-    matchesKubevirtSecurityGroup(KubevirtSecurityGroup sg) {
-        return new KubevirtSecurityGroupJsonMatcher(sg);
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupRuleJsonMatcher.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupRuleJsonMatcher.java
deleted file mode 100644
index 81ba374..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroupRuleJsonMatcher.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.codec;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.hamcrest.Description;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-import org.onlab.packet.IpPrefix;
-import org.onosproject.kubevirtnetworking.api.KubevirtSecurityGroupRule;
-
-/**
- * Hamcrest matcher for kubevirt port.
- */
-public final class KubevirtSecurityGroupRuleJsonMatcher extends TypeSafeDiagnosingMatcher<JsonNode> {
-
-    private final KubevirtSecurityGroupRule rule;
-
-    private static final String ID = "id";
-    private static final String SECURITY_GROUP_ID = "securityGroupId";
-    private static final String DIRECTION = "direction";
-    private static final String ETHER_TYPE = "etherType";
-    private static final String PORT_RANGE_MAX = "portRangeMax";
-    private static final String PORT_RANGE_MIN = "portRangeMin";
-    private static final String PROTOCOL = "protocol";
-    private static final String REMOTE_IP_PREFIX = "remoteIpPrefix";
-    private static final String REMOTE_GROUP_ID = "remoteGroupId";
-
-    private KubevirtSecurityGroupRuleJsonMatcher(KubevirtSecurityGroupRule rule) {
-        this.rule = rule;
-    }
-
-    @Override
-    protected boolean matchesSafely(JsonNode jsonNode, Description description) {
-        // check rule ID
-        String jsonId = jsonNode.get(ID).asText();
-        String id = rule.id();
-        if (!jsonId.equals(id)) {
-            description.appendText("Rule ID was " + jsonId);
-            return false;
-        }
-
-        // check security group ID
-        String jsonSecurityGroupId = jsonNode.get(SECURITY_GROUP_ID).asText();
-        String securityGroupId = rule.securityGroupId();
-        if (!jsonSecurityGroupId.equals(securityGroupId)) {
-            description.appendText("Security group ID was " + jsonSecurityGroupId);
-            return false;
-        }
-
-        // check direction
-        String jsonDirection = jsonNode.get(DIRECTION).asText();
-        String direction = rule.direction();
-        if (!jsonDirection.equals(direction)) {
-            description.appendText("Direction was " + jsonDirection);
-            return false;
-        }
-
-        // check ether type
-        JsonNode jsonEtherType = jsonNode.get(ETHER_TYPE);
-        if (jsonEtherType != null) {
-            String etherType = rule.etherType();
-            if (!jsonEtherType.asText().equals(etherType)) {
-                description.appendText("EtherType was " + jsonEtherType);
-                return false;
-            }
-        }
-
-        // check port range max
-        JsonNode jsonPortRangeMax = jsonNode.get(PORT_RANGE_MAX);
-        if (jsonPortRangeMax != null) {
-            int portRangeMax = rule.portRangeMax();
-            if (portRangeMax != jsonPortRangeMax.asInt()) {
-                description.appendText("PortRangeMax was " + jsonPortRangeMax);
-                return false;
-            }
-        }
-
-        // check port range min
-        JsonNode jsonPortRangeMin = jsonNode.get(PORT_RANGE_MIN);
-        if (jsonPortRangeMin != null) {
-            int portRangeMin = rule.portRangeMin();
-            if (portRangeMin != jsonPortRangeMin.asInt()) {
-                description.appendText("PortRangeMin was " + jsonPortRangeMin);
-                return false;
-            }
-        }
-
-        // check protocol
-        JsonNode jsonProtocol = jsonNode.get(PROTOCOL);
-        if (jsonProtocol != null) {
-            String protocol = rule.protocol();
-            if (!jsonProtocol.asText().equals(protocol)) {
-                description.appendText("Protocol was " + jsonProtocol);
-                return false;
-            }
-        }
-
-        // check remote IP prefix
-        JsonNode jsonRemoteIpPrefix = jsonNode.get(REMOTE_IP_PREFIX);
-        if (jsonRemoteIpPrefix != null) {
-            IpPrefix remoteIpPrefix = rule.remoteIpPrefix();
-            if (!jsonRemoteIpPrefix.asText().equals(remoteIpPrefix.toString())) {
-                description.appendText("Remote IP prefix was " + jsonRemoteIpPrefix);
-                return false;
-            }
-        }
-
-        // check remote group ID
-        JsonNode jsonRemoteGroupId = jsonNode.get(REMOTE_GROUP_ID);
-        if (jsonRemoteGroupId != null) {
-            String remoteGroupId = rule.remoteGroupId();
-            if (!jsonRemoteGroupId.asText().equals(remoteGroupId)) {
-                description.appendText("Remote group ID was " + jsonRemoteGroupId);
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public void describeTo(Description description) {
-        description.appendText(rule.toString());
-    }
-
-    /**
-     * Factory to allocate an kubevirt security group rule matcher.
-     *
-     * @param rule kubevirt security group rule object we are looking for
-     * @return matcher
-     */
-    public static KubevirtSecurityGroupRuleJsonMatcher
-        matchesKubevirtSecurityGroupRule(KubevirtSecurityGroupRule rule) {
-        return new KubevirtSecurityGroupRuleJsonMatcher(rule);
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtMm5WebResourceTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtMm5WebResourceTest.java
deleted file mode 100644
index c1415fd..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtMm5WebResourceTest.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright 2022-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.web;
-
-import com.eclipsesource.json.Json;
-import com.eclipsesource.json.JsonArray;
-import com.eclipsesource.json.JsonObject;
-import com.google.common.collect.ImmutableSet;
-import org.glassfish.jersey.server.ResourceConfig;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.osgi.TestServiceDirectory;
-import org.onlab.packet.IpAddress;
-import org.onosproject.codec.CodecService;
-import org.onosproject.codec.impl.CodecManager;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtNetwork;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtRouter;
-import org.onosproject.kubevirtnetworking.api.KubevirtHostRoute;
-import org.onosproject.kubevirtnetworking.api.KubevirtIpPool;
-import org.onosproject.kubevirtnetworking.api.KubevirtNetwork;
-import org.onosproject.kubevirtnetworking.api.KubevirtNetworkService;
-import org.onosproject.kubevirtnetworking.api.KubevirtRouter;
-import org.onosproject.kubevirtnetworking.api.KubevirtRouterService;
-import org.onosproject.kubevirtnetworking.codec.KubevirtHostRouteCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtIpPoolCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtNetworkCodec;
-import org.onosproject.kubevirtnode.api.DefaultKubevirtNode;
-import org.onosproject.kubevirtnode.api.KubevirtNode;
-import org.onosproject.kubevirtnode.api.KubevirtNodeService;
-import org.onosproject.kubevirtnode.api.KubevirtNodeState;
-import org.onosproject.net.DeviceId;
-import org.onosproject.rest.resources.ResourceTest;
-
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.Response;
-
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-public class KubevirtMm5WebResourceTest extends ResourceTest {
-
-    final KubevirtRouterService mockRouterService = createMock(KubevirtRouterService.class);
-    final KubevirtNodeService mockNodeService = createMock(KubevirtNodeService.class);
-    final KubevirtNetworkService mockNetworkService = createMock(KubevirtNetworkService.class);
-
-    private static final String VR_STATUS_PATH = "api/mm5/v1/status/vr/";
-    private static final String NETWORK_PATH = "api/mm5/v1/network";
-
-    private static final String ROUTER_NAME = "router1";
-    private static final String HOST_NAME = "hostname1";
-
-
-    private static final KubevirtNetwork NETWORK_1 = DefaultKubevirtNetwork.builder()
-            .networkId("network")
-            .name("network")
-            .type(KubevirtNetwork.Type.FLAT)
-            .cidr("10.10.10.0/24")
-            .mtu(1500)
-            .gatewayIp(IpAddress.valueOf("10.10.10.1"))
-            .defaultRoute(true)
-            .ipPool(new KubevirtIpPool(IpAddress.valueOf("10.10.10.100"),
-                    IpAddress.valueOf("10.10.10.200")))
-            .build();
-
-    private static final KubevirtNode NODE_1 = DefaultKubevirtNode.builder()
-            .hostname(HOST_NAME)
-            .type(KubevirtNode.Type.GATEWAY)
-            .dataIp(IpAddress.valueOf("10.134.34.222"))
-            .managementIp(IpAddress.valueOf("10.134.231.30"))
-            .intgBridge(DeviceId.deviceId("of:00000000000000a1"))
-            .tunBridge(DeviceId.deviceId("of:00000000000000a2"))
-            .state(KubevirtNodeState.COMPLETE)
-            .build();
-
-
-    private static final KubevirtRouter ROUTER_1 = DefaultKubevirtRouter.builder()
-            .name(ROUTER_NAME).build();
-
-    /**
-     * Constructs a kubevirt mm5 resource test instance.
-     */
-    public KubevirtMm5WebResourceTest() {
-        super(ResourceConfig.forApplicationClass(KubevirtNetworkingWebApplication.class));
-    }
-
-    /**
-     * Sets up the global values for all the tests.
-     */
-    @Before
-    public void setUpTest() {
-        final CodecManager codecService = new CodecManager();
-        codecService.activate();
-        codecService.registerCodec(KubevirtNetwork.class, new KubevirtNetworkCodec());
-        codecService.registerCodec(KubevirtHostRoute.class, new KubevirtHostRouteCodec());
-        codecService.registerCodec(KubevirtIpPool.class, new KubevirtIpPoolCodec());
-
-        ServiceDirectory testDirectory =
-                new TestServiceDirectory()
-                        .add(KubevirtNodeService.class, mockNodeService)
-                        .add(KubevirtNetworkService.class, mockNetworkService)
-                        .add(KubevirtRouterService.class, mockRouterService)
-                        .add(CodecService.class, codecService);
-
-        setServiceDirectory(testDirectory);
-    }
-
-    @Test
-    public void testVrStatusWithExistingRouterOperation() {
-        expect(mockRouterService.routers()).andReturn(ImmutableSet.of(ROUTER_1)).anyTimes();
-        replay(mockRouterService);
-
-        final WebTarget wt = target();
-
-        final String stringResponse = wt.path(VR_STATUS_PATH + ROUTER_NAME).request().get(String.class);
-        final Response response = wt.path(VR_STATUS_PATH + ROUTER_NAME).request().get();
-
-        final JsonObject result = Json.parse(stringResponse).asObject();
-
-        assertThat(result, notNullValue());
-        assertThat(result.names(), hasSize(4));
-        assertThat(response.getStatus(), is(200));
-
-        verify(mockRouterService);
-    }
-
-    @Test
-    public void testVrStatusWithNonRouterOperation() {
-        expect(mockRouterService.routers()).andReturn(ImmutableSet.of(ROUTER_1)).anyTimes();
-        replay(mockRouterService);
-
-        final WebTarget wt = target();
-
-        final Response response = wt.path(VR_STATUS_PATH + "anyRouter").request().get();
-        assertThat(response.getStatus(), is(404));
-
-        verify(mockRouterService);
-    }
-
-    @Test
-    public void testGetNetworkOperation() {
-        expect(mockNetworkService.networks()).andReturn(ImmutableSet.of(NETWORK_1)).anyTimes();
-        replay(mockNetworkService);
-
-        final WebTarget wt = target();
-
-        final String response = wt.path(NETWORK_PATH).request().get(String.class);
-        final JsonObject result = Json.parse(response).asObject();
-
-        assertThat(result, notNullValue());
-        assertThat(result.names(), hasSize(1));
-        assertThat(result.names().get(0), is("networks"));
-
-        final JsonArray jsonNodes = result.get("networks").asArray();
-        assertThat(jsonNodes, notNullValue());
-        assertThat(jsonNodes.size(), is(1));
-
-        verify(mockNetworkService);
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkWebResourceTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkWebResourceTest.java
deleted file mode 100644
index b453dad..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkWebResourceTest.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.web;
-
-import org.glassfish.jersey.server.ResourceConfig;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.osgi.TestServiceDirectory;
-import org.onlab.packet.IpAddress;
-import org.onosproject.codec.CodecService;
-import org.onosproject.codec.impl.CodecManager;
-import org.onosproject.kubevirtnetworking.api.DefaultKubevirtNetwork;
-import org.onosproject.kubevirtnetworking.api.KubevirtHostRoute;
-import org.onosproject.kubevirtnetworking.api.KubevirtIpPool;
-import org.onosproject.kubevirtnetworking.api.KubevirtNetwork;
-import org.onosproject.kubevirtnetworking.api.KubevirtNetworkAdminService;
-import org.onosproject.kubevirtnetworking.codec.KubevirtHostRouteCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtIpPoolCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtNetworkCodec;
-import org.onosproject.rest.resources.ResourceTest;
-
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.io.InputStream;
-
-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.replay;
-import static org.easymock.EasyMock.verify;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit tests for kubevirt network REST API.
- */
-public class KubevirtNetworkWebResourceTest extends ResourceTest {
-
-    final KubevirtNetworkAdminService mockAdminService = createMock(KubevirtNetworkAdminService.class);
-    private static final String PATH = "network";
-
-    private KubevirtNetwork network;
-
-    /**
-     * Constructs a kubernetes networking resource test instance.
-     */
-    public KubevirtNetworkWebResourceTest() {
-        super(ResourceConfig.forApplicationClass(KubevirtNetworkingWebApplication.class));
-    }
-
-    /**
-     * Sets up the global values for all the tests.
-     */
-    @Before
-    public void setUpTest() {
-        final CodecManager codecService = new CodecManager();
-        codecService.activate();
-        codecService.registerCodec(KubevirtHostRoute.class, new KubevirtHostRouteCodec());
-        codecService.registerCodec(KubevirtIpPool.class, new KubevirtIpPoolCodec());
-        codecService.registerCodec(KubevirtNetwork.class, new KubevirtNetworkCodec());
-        ServiceDirectory testDirectory =
-                new TestServiceDirectory()
-                        .add(KubevirtNetworkAdminService.class, mockAdminService)
-                        .add(CodecService.class, codecService);
-        setServiceDirectory(testDirectory);
-
-        network = DefaultKubevirtNetwork.builder()
-                .networkId("network")
-                .name("network")
-                .type(KubevirtNetwork.Type.FLAT)
-                .cidr("10.10.10.0/24")
-                .mtu(1500)
-                .gatewayIp(IpAddress.valueOf("10.10.10.1"))
-                .defaultRoute(true)
-                .ipPool(new KubevirtIpPool(IpAddress.valueOf("10.10.10.100"),
-                        IpAddress.valueOf("10.10.10.200")))
-                .build();
-    }
-
-    /**
-     * Tests the results of the REST API POST method with creating new network operation.
-     */
-    @Test
-    public void testCreateNetworkWithCreateOperation() {
-        mockAdminService.createNetwork(anyObject());
-        replay(mockAdminService);
-
-        final WebTarget wt = target();
-        InputStream jsonStream = KubevirtNetworkWebResourceTest.class
-                .getResourceAsStream("kubevirt-network.json");
-        Response response = wt.path(PATH).request(MediaType.APPLICATION_JSON_TYPE)
-                .post(Entity.json(jsonStream));
-        final int status = response.getStatus();
-
-        assertThat(status, is(201));
-
-        verify(mockAdminService);
-    }
-
-    /**
-     * Tests the results of the REST API PUT method with modifying the network.
-     */
-    @Test
-    public void testUpdateNetworkWithModifyOperation() {
-        mockAdminService.updateNetwork(anyObject());
-        replay(mockAdminService);
-
-        String location = PATH + "/network";
-
-        final WebTarget wt = target();
-        InputStream jsonStream = KubevirtNetworkWebResourceTest.class
-                .getResourceAsStream("kubevirt-network.json");
-        Response response = wt.path(location)
-                .request(MediaType.APPLICATION_JSON_TYPE)
-                .put(Entity.json(jsonStream));
-        final int status = response.getStatus();
-
-        assertThat(status, is(200));
-
-        verify(mockAdminService);
-    }
-
-    /**
-     * Tests the results of the REST API DELETE method with deleting the network.
-     */
-    @Test
-    public void testDeleteNetworkWithDeletionOperation() {
-        mockAdminService.removeNetwork(anyString());
-        replay(mockAdminService);
-
-        String location = PATH + "/network";
-
-        final WebTarget wt = target();
-        Response response = wt.path(location).request(
-                MediaType.APPLICATION_JSON_TYPE).delete();
-
-        final int status = response.getStatus();
-
-        assertThat(status, is(204));
-
-        verify(mockAdminService);
-    }
-
-    /**
-     * Tests the results of checking network existence.
-     */
-    @Test
-    public void testHasNetworkWithValidNetwork() {
-        expect(mockAdminService.network(anyString())).andReturn(network);
-        replay(mockAdminService);
-
-        String location = PATH + "/exist/network";
-
-        final WebTarget wt = target();
-        String response = wt.path(location).request(
-                MediaType.APPLICATION_JSON_TYPE).get(String.class);
-
-        assertThat(response, is("{\"result\":true}"));
-
-        verify((mockAdminService));
-    }
-
-    /**
-     * Tests the results of checking network existence.
-     */
-    @Test
-    public void testHasNetworkWithNullNetwork() {
-        expect(mockAdminService.network(anyString())).andReturn(null);
-        replay(mockAdminService);
-
-        String location = PATH + "/exist/network";
-
-        final WebTarget wt = target();
-        String response = wt.path(location).request(
-                MediaType.APPLICATION_JSON_TYPE).get(String.class);
-
-        assertThat(response, is("{\"result\":false}"));
-
-        verify((mockAdminService));
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkingCodecRegisterTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkingCodecRegisterTest.java
deleted file mode 100644
index c3784ba..0000000
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkingCodecRegisterTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2021-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.kubevirtnetworking.web;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Maps;
-import org.junit.Test;
-import org.onlab.junit.TestUtils;
-import org.onosproject.codec.CodecService;
-import org.onosproject.codec.JsonCodec;
-import org.onosproject.kubevirtnetworking.api.KubevirtHostRoute;
-import org.onosproject.kubevirtnetworking.api.KubevirtIpPool;
-import org.onosproject.kubevirtnetworking.api.KubevirtNetwork;
-import org.onosproject.kubevirtnetworking.codec.KubevirtHostRouteCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtIpPoolCodec;
-import org.onosproject.kubevirtnetworking.codec.KubevirtNetworkCodec;
-
-import java.util.Map;
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * Unit tests for kubevirt networking codec register.
- */
-public class KubevirtNetworkingCodecRegisterTest {
-
-    /**
-     * Tests codec register activation and deactivation.
-     */
-    @Test
-    public void testActivateDeactivate() {
-        KubevirtNetworkingCodecRegister register = new KubevirtNetworkingCodecRegister();
-        CodecService codecService = new TestCodecService();
-
-        TestUtils.setField(register, "codecService", codecService);
-        register.activate();
-
-        assertEquals(KubevirtNetworkCodec.class.getName(),
-                codecService.getCodec(KubevirtNetwork.class).getClass().getName());
-        assertEquals(KubevirtHostRouteCodec.class.getName(),
-                codecService.getCodec(KubevirtHostRoute.class).getClass().getName());
-        assertEquals(KubevirtIpPoolCodec.class.getName(),
-                codecService.getCodec(KubevirtIpPool.class).getClass().getName());
-
-        register.deactivate();
-    }
-
-    private static class TestCodecService implements CodecService {
-
-        private Map<String, JsonCodec> codecMap = Maps.newConcurrentMap();
-
-        @Override
-        public Set<Class<?>> getCodecs() {
-            return ImmutableSet.of();
-        }
-
-        @Override
-        public <T> JsonCodec<T> getCodec(Class<T> entityClass) {
-            return codecMap.get(entityClass.getName());
-        }
-
-        @Override
-        public <T> void registerCodec(Class<T> entityClass, JsonCodec<T> codec) {
-            codecMap.put(entityClass.getName(), codec);
-        }
-
-        @Override
-        public void unregisterCodec(Class<?> entityClass) {
-            codecMap.remove(entityClass.getName());
-        }
-    }
-}
diff --git a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtFloatingIp.json b/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtFloatingIp.json
deleted file mode 100644
index 93819ce..0000000
--- a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtFloatingIp.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "id": "fip-1",
-  "routerName": "router-1",
-  "networkName": "flat-1",
-  "floatingIp": "10.10.10.10",
-  "podName": "pod-1",
-  "vmName": "vm-1",
-  "fixedIp": "20.20.20.20"
-}
\ No newline at end of file
diff --git a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancer.json b/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancer.json
deleted file mode 100644
index 806fd73..0000000
--- a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtLoadBalancer.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-  "name": "lb-1",
-  "description": "Example Load Balancer",
-  "networkId": "net-1",
-  "vip": "10.10.10.10",
-  "members": [
-    "10.10.10.11",
-    "10.10.10.12"
-  ],
-  "rules": [
-    {
-      "protocol": "tcp",
-      "portRangeMax": 8000,
-      "portRangeMin": 7000
-    },
-    {
-      "protocol": "udp",
-      "portRangeMax": 9000,
-      "portRangeMin": 8000
-    },
-    {
-      "protocol" : "icmp"
-    }
-  ]
-}
\ No newline at end of file
diff --git a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtNetwork.json b/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtNetwork.json
deleted file mode 100644
index 293cfcb..0000000
--- a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtNetwork.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "networkId": "network-1",
-  "name": "network-1",
-  "type": "FLAT",
-  "mtu": 1500,
-  "cidr": "10.10.0.0/24",
-  "gatewayIp": "10.10.0.1",
-  "defaultRoute": true,
-  "ipPool": {
-    "start": "10.10.10.100",
-    "end": "10.10.10.200"
-  },
-  "hostRoutes": [
-    {
-      "destination": "10.10.10.0/24",
-      "nexthop": "10.10.10.1"
-    }
-  ],
-  "dnses": [
-    "8.8.8.8"
-  ]
-}
\ No newline at end of file
diff --git a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtRouter.json b/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtRouter.json
deleted file mode 100644
index 5d9d53c..0000000
--- a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtRouter.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "name": "router-1",
-  "description": "Example Virtual Router",
-  "enableSnat": true,
-  "mac": "11:22:33:44:55:66",
-  "external": {
-    "ip": "192.168.10.5",
-    "network": "external-network"
-  },
-  "internal": [
-    "vxlan-network-1",
-    "vxlan-network-2"
-  ],
-  "peerRouter": {
-    "ip": "192.168.10.1"
-  },
-  "gateway": "gatewayNode"
-}
\ No newline at end of file
diff --git a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroup.json b/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroup.json
deleted file mode 100644
index 365f5a3..0000000
--- a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtSecurityGroup.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "id": "sg-1",
-  "name": "sg",
-  "description": "example-sg",
-  "rules": [
-    {
-      "id": "sgr-1",
-      "securityGroupId": "sg-1",
-      "direction": "ingress",
-      "etherType": "IPv4",
-      "portRangeMax": 80,
-      "portRangeMin": 0,
-      "protocol": "tcp",
-      "remoteIpPrefix": "0.0.0.0/0",
-      "remoteGroupId": "g-1"
-    }
-  ]
-}
\ No newline at end of file
diff --git a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/web/kubevirt-network.json b/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/web/kubevirt-network.json
deleted file mode 100644
index c65236c..0000000
--- a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/web/kubevirt-network.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "networkId": "network",
-  "name": "network",
-  "type": "FLAT",
-  "mtu": 1500,
-  "cidr": "10.10.10.0/24",
-  "gatewayIp": "10.10.10.1",
-  "defaultRoute": true,
-  "ipPool": {
-    "start": "10.10.10.100",
-    "end": "10.10.10.200"
-  }
-}
\ No newline at end of file