Fix: refer to services inside each method to avoid SNF exception

Change-Id: I5b668224962874948b0670cb698be1736ddf4e58
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtManagementWebResource.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtManagementWebResource.java
index a1587a5..043899f 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtManagementWebResource.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/web/KubevirtManagementWebResource.java
@@ -42,9 +42,6 @@
     private static final long SLEEP_MS = 5000; // we wait 5s for init each node
     private static final long TIMEOUT_MS = 10000; // we wait 10s
 
-    private final KubevirtNodeAdminService nodeAdminService =
-            get(KubevirtNodeAdminService.class);
-
     /**
      * Synchronizes the flow rules.
      *
@@ -55,18 +52,21 @@
     @Path("sync/rules")
     public Response syncRules() {
 
-        nodeAdminService.completeNodes(WORKER).forEach(this::syncRulesBase);
+        KubevirtNodeAdminService service = get(KubevirtNodeAdminService.class);
+
+        service.completeNodes(WORKER).forEach(this::syncRulesBase);
         return ok(mapper().createObjectNode()).build();
     }
 
     private void syncRulesBase(KubevirtNode node) {
         KubevirtNode updated = node.updateState(INIT);
-        nodeAdminService.updateNode(updated);
+        KubevirtNodeAdminService service = get(KubevirtNodeAdminService.class);
+        service.updateNode(updated);
 
         boolean result = true;
         long timeoutExpiredMs = System.currentTimeMillis() + TIMEOUT_MS;
 
-        while (nodeAdminService.node(node.hostname()).state() != COMPLETE) {
+        while (service.node(node.hostname()).state() != COMPLETE) {
 
             long  waitMs = timeoutExpiredMs - System.currentTimeMillis();
 
@@ -76,10 +76,10 @@
                 log.error("Exception caused during node synchronization...");
             }
 
-            if (nodeAdminService.node(node.hostname()).state() == COMPLETE) {
+            if (service.node(node.hostname()).state() == COMPLETE) {
                 break;
             } else {
-                nodeAdminService.updateNode(updated);
+                service.updateNode(updated);
                 log.info("Failed to synchronize flow rules, retrying...");
             }
 
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
index 8ab531f..4e8f5df 100644
--- 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
@@ -55,9 +55,6 @@
 
     private static final String RESULT = "result";
 
-    private final KubevirtNetworkAdminService adminService =
-            get(KubevirtNetworkAdminService.class);
-
     /**
      * Creates a network from the JSON input stream.
      *
@@ -71,13 +68,14 @@
     @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);
-            adminService.createNetwork(network);
+            service.createNetwork(network);
             location = new URI(network.networkId());
         } catch (IOException | URISyntaxException e) {
             throw new IllegalArgumentException(e);
@@ -101,6 +99,7 @@
     @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);
@@ -112,7 +111,7 @@
 
             final KubevirtNetwork network =
                     codec(KubevirtNetwork.class).decode(jsonTree, this);
-            adminService.updateNetwork(network);
+            service.updateNetwork(network);
         } catch (IOException e) {
             throw new IllegalArgumentException(e);
         }
@@ -130,8 +129,9 @@
     @Path("{id}")
     public Response removeNetwork(@PathParam("id") String id) {
         log.trace(String.format(MESSAGE, "DELETE " + id));
+        KubevirtNetworkAdminService service = get(KubevirtNetworkAdminService.class);
 
-        adminService.removeNetwork(id);
+        service.removeNetwork(id);
         return Response.noContent().build();
     }
 
@@ -146,8 +146,10 @@
     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 = adminService.network(id);
+        KubevirtNetwork network = service.network(id);
 
         if (network == null) {
             root.put(RESULT, false);
@@ -167,7 +169,8 @@
     @GET
     @Produces(MediaType.APPLICATION_JSON)
     public Response getNetworks() {
-        final Iterable<KubevirtNetwork> networks = adminService.networks();
+        KubevirtNetworkAdminService service = get(KubevirtNetworkAdminService.class);
+        final Iterable<KubevirtNetwork> networks = service.networks();
         return ok(encodeArray(KubevirtNetwork.class, "networks", networks)).build();
     }
 
@@ -182,7 +185,8 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("{id}")
     public Response getNetworkById(@PathParam("id") String id) {
-        final KubevirtNetwork network = nullIsNotFound(adminService.network(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-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtApiConfigWebResource.java b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtApiConfigWebResource.java
index 1c6985b..e468ce3 100644
--- a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtApiConfigWebResource.java
+++ b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtApiConfigWebResource.java
@@ -60,8 +60,6 @@
     private static final String ENDPOINT = "endpoint";
     private static final String ERROR_MESSAGE = " cannot be null";
 
-    private final KubevirtApiConfigAdminService service = get(KubevirtApiConfigAdminService.class);
-
     @Context
     private UriInfo uriInfo;
 
@@ -80,6 +78,8 @@
         log.trace(String.format(MESSAGE_CONFIG, CREATE));
 
         KubevirtApiConfig config = readApiConfig(input);
+        KubevirtApiConfigAdminService service = get(KubevirtApiConfigAdminService.class);
+
         if (config != null) {
             service.createApiConfig(config);
         }
@@ -103,6 +103,7 @@
     public Response deleteApiConfig(@PathParam("endpoint") String endpoint) {
         log.trace(String.format(MESSAGE_CONFIG, REMOVE));
 
+        KubevirtApiConfigAdminService service = get(KubevirtApiConfigAdminService.class);
         KubevirtApiConfig existing = service.apiConfig();
 
         if (existing == null) {
diff --git a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtNodeWebResource.java b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtNodeWebResource.java
index 137fc11..c28bc94 100644
--- a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtNodeWebResource.java
+++ b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtNodeWebResource.java
@@ -70,8 +70,6 @@
     private static final String HOST_NAME = "hostname";
     private static final String ERROR_MESSAGE = " cannot be null";
 
-    private final KubevirtNodeAdminService nodeAdminService = get(KubevirtNodeAdminService.class);
-
     @Context
     private UriInfo uriInfo;
 
@@ -89,10 +87,12 @@
     public Response createNodes(InputStream input) {
         log.trace(String.format(MESSAGE_NODE, CREATE));
 
+        KubevirtNodeAdminService service = get(KubevirtNodeAdminService.class);
+
         readNodeConfiguration(input).forEach(node -> {
-            KubevirtNode existing = nodeAdminService.node(node.hostname());
+            KubevirtNode existing = service.node(node.hostname());
             if (existing == null) {
-                nodeAdminService.createNode(node);
+                service.createNode(node);
             }
         });
 
@@ -117,14 +117,15 @@
     public Response updateNodes(InputStream input) {
         log.trace(String.format(MESSAGE_NODE, UPDATE));
 
+        KubevirtNodeAdminService service = get(KubevirtNodeAdminService.class);
         Set<KubevirtNode> nodes = readNodeConfiguration(input);
         for (KubevirtNode node: nodes) {
-            KubevirtNode existing = nodeAdminService.node(node.hostname());
+            KubevirtNode existing = service.node(node.hostname());
             if (existing == null) {
                 log.warn("There is no node configuration to update : {}", node.hostname());
                 return Response.notModified().build();
             } else if (!existing.equals(node)) {
-                nodeAdminService.updateNode(node);
+                service.updateNode(node);
             }
         }
 
@@ -145,14 +146,15 @@
     public Response deleteNode(@PathParam("hostname") String hostname) {
         log.trace(String.format(MESSAGE_NODE, REMOVE));
 
-        KubevirtNode existing = nodeAdminService.node(
+        KubevirtNodeAdminService service = get(KubevirtNodeAdminService.class);
+        KubevirtNode existing = service.node(
                 nullIsIllegal(hostname, HOST_NAME + ERROR_MESSAGE));
 
         if (existing == null) {
             log.warn("There is no node configuration to delete : {}", hostname);
             return Response.notModified().build();
         } else {
-            nodeAdminService.removeNode(hostname);
+            service.removeNode(hostname);
         }
 
         return Response.noContent().build();
@@ -170,7 +172,8 @@
     public Response stateOfNode(@PathParam("hostname") String hostname) {
         log.trace(String.format(MESSAGE_NODE, QUERY));
 
-        KubevirtNode node = nodeAdminService.node(hostname);
+        KubevirtNodeAdminService service = get(KubevirtNodeAdminService.class);
+        KubevirtNode node = service.node(hostname);
         String nodeState = node != null ? node.state().toString() : NOT_EXIST;
 
         return ok(mapper().createObjectNode().put(STATE, nodeState)).build();
@@ -188,13 +191,14 @@
     public Response initNode(@PathParam("hostname") String hostname) {
         log.trace(String.format(MESSAGE_NODE, QUERY));
 
-        KubevirtNode node = nodeAdminService.node(hostname);
+        KubevirtNodeAdminService service = get(KubevirtNodeAdminService.class);
+        KubevirtNode node = service.node(hostname);
         if (node == null) {
             log.error("Given node {} does not exist", hostname);
             return Response.serverError().build();
         }
         KubevirtNode updated = node.updateState(KubevirtNodeState.INIT);
-        nodeAdminService.updateNode(updated);
+        service.updateNode(updated);
         return ok(mapper().createObjectNode()).build();
     }
 
@@ -209,10 +213,12 @@
     public Response initAllNodes() {
         log.trace(String.format(MESSAGE_NODE, QUERY));
 
-        nodeAdminService.nodes()
+        KubevirtNodeAdminService service = get(KubevirtNodeAdminService.class);
+
+        service.nodes()
                 .forEach(n -> {
                     KubevirtNode updated = n.updateState(KubevirtNodeState.INIT);
-                    nodeAdminService.updateNode(updated);
+                    service.updateNode(updated);
                 });
 
         return ok(mapper().createObjectNode()).build();
@@ -229,11 +235,12 @@
     public Response initIncompleteNodes() {
         log.trace(String.format(MESSAGE_NODE, QUERY));
 
-        nodeAdminService.nodes().stream()
+        KubevirtNodeAdminService service = get(KubevirtNodeAdminService.class);
+        service.nodes().stream()
                 .filter(n -> n.state() != KubevirtNodeState.COMPLETE)
                 .forEach(n -> {
                     KubevirtNode updated = n.updateState(KubevirtNodeState.INIT);
-                    nodeAdminService.updateNode(updated);
+                    service.updateNode(updated);
                 });
 
         return ok(mapper().createObjectNode()).build();