Fix: add ProjectedVolumneSource to kryo registry

Only listen on POD events from default namespace

Change-Id: I2ed74fce76bb9ca33f966688e6a9f71297a55507
(cherry picked from commit 880d4141fcc1102b7c9f20b5e56ecf181e4099d0)
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/DistributedKubevirtPodStore.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/DistributedKubevirtPodStore.java
index 1ef99f6..bf149e2 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/DistributedKubevirtPodStore.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/DistributedKubevirtPodStore.java
@@ -20,6 +20,7 @@
 import io.fabric8.kubernetes.api.model.Capabilities;
 import io.fabric8.kubernetes.api.model.ConfigMapEnvSource;
 import io.fabric8.kubernetes.api.model.ConfigMapKeySelector;
+import io.fabric8.kubernetes.api.model.ConfigMapProjection;
 import io.fabric8.kubernetes.api.model.ConfigMapVolumeSource;
 import io.fabric8.kubernetes.api.model.Container;
 import io.fabric8.kubernetes.api.model.ContainerPort;
@@ -28,6 +29,7 @@
 import io.fabric8.kubernetes.api.model.ContainerStateTerminated;
 import io.fabric8.kubernetes.api.model.ContainerStateWaiting;
 import io.fabric8.kubernetes.api.model.ContainerStatus;
+import io.fabric8.kubernetes.api.model.DownwardAPIProjection;
 import io.fabric8.kubernetes.api.model.DownwardAPIVolumeFile;
 import io.fabric8.kubernetes.api.model.DownwardAPIVolumeSource;
 import io.fabric8.kubernetes.api.model.EmptyDirVolumeSource;
@@ -66,6 +68,7 @@
 import io.fabric8.kubernetes.api.model.PodStatus;
 import io.fabric8.kubernetes.api.model.PreferredSchedulingTerm;
 import io.fabric8.kubernetes.api.model.Probe;
+import io.fabric8.kubernetes.api.model.ProjectedVolumeSource;
 import io.fabric8.kubernetes.api.model.Quantity;
 import io.fabric8.kubernetes.api.model.ResourceFieldSelector;
 import io.fabric8.kubernetes.api.model.ResourceRequirements;
@@ -73,13 +76,16 @@
 import io.fabric8.kubernetes.api.model.SeccompProfile;
 import io.fabric8.kubernetes.api.model.SecretEnvSource;
 import io.fabric8.kubernetes.api.model.SecretKeySelector;
+import io.fabric8.kubernetes.api.model.SecretProjection;
 import io.fabric8.kubernetes.api.model.SecretVolumeSource;
 import io.fabric8.kubernetes.api.model.SecurityContext;
+import io.fabric8.kubernetes.api.model.ServiceAccountTokenProjection;
 import io.fabric8.kubernetes.api.model.TCPSocketAction;
 import io.fabric8.kubernetes.api.model.Toleration;
 import io.fabric8.kubernetes.api.model.Volume;
 import io.fabric8.kubernetes.api.model.VolumeDevice;
 import io.fabric8.kubernetes.api.model.VolumeMount;
+import io.fabric8.kubernetes.api.model.VolumeProjection;
 import io.fabric8.kubernetes.api.model.WeightedPodAffinityTerm;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.core.ApplicationId;
@@ -193,6 +199,17 @@
             .register(IntOrString.class)
             .register(Toleration.class)
             .register(PersistentVolumeClaimVolumeSource.class)
+            .register(ProjectedVolumeSource.class)
+            .register(VolumeProjection.class)
+            .register(ConfigMapProjection.class)
+            .register(KeyToPath.class)
+            .register(DownwardAPIProjection.class)
+            .register(DownwardAPIVolumeFile.class)
+            .register(ObjectFieldSelector.class)
+            .register(ResourceFieldSelector.class)
+            .register(SecretProjection.class)
+            .register(Quantity.class)
+            .register(ServiceAccountTokenProjection.class)
             .register(SecretVolumeSource.class)
             .register(EmptyDirVolumeSource.class)
             .register(Quantity.class)
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtPodWatcher.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtPodWatcher.java
index c24356f..e92808d 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtPodWatcher.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtPodWatcher.java
@@ -169,7 +169,7 @@
         }
 
         private void processAddition(Pod pod) {
-            if (!isMaster()) {
+            if (!isMaster() || !isDefaultNs(pod)) {
                 return;
             }
 
@@ -182,7 +182,7 @@
         }
 
         private void processModification(Pod pod) {
-            if (!isMaster()) {
+            if (!isMaster() || !isDefaultNs(pod)) {
                 return;
             }
 
@@ -195,7 +195,7 @@
         }
 
         private void processDeletion(Pod pod) {
-            if (!isMaster()) {
+            if (!isMaster() || !isDefaultNs(pod)) {
                 return;
             }
 
@@ -208,5 +208,9 @@
         private boolean isMaster() {
             return Objects.equals(localNodeId, leadershipService.getLeader(appId.name()));
         }
+
+        private boolean isDefaultNs(Pod pod) {
+            return pod.getMetadata().getNamespace().equals("default");
+        }
     }
 }