diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/cli/KubevirtListPortCommand.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/cli/KubevirtListPortCommand.java
index 5752436..1ce747e 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/cli/KubevirtListPortCommand.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/cli/KubevirtListPortCommand.java
@@ -59,7 +59,7 @@
         ports.sort(Comparator.comparing(KubevirtPort::networkId));
 
         String format = genFormatString(ImmutableList.of(CLI_NAME_LENGTH,
-                CLI_MAC_ADDRESS_LENGTH, CLI_IP_ADDRESSES_LENGTH));
+                CLI_NAME_LENGTH, CLI_MAC_ADDRESS_LENGTH, CLI_IP_ADDRESSES_LENGTH));
 
         if (!Strings.isNullOrEmpty(networkId)) {
             ports.removeIf(port -> !port.networkId().equals(networkId));
@@ -68,9 +68,11 @@
         if (outputJson()) {
             print("%s", json(ports));
         } else {
-            print(format, "Network", "MAC Address", "Fixed IPs");
+            print(format, "VM Name", "Network", "MAC Address", "Fixed IPs");
             for (KubevirtPort port: ports) {
                 print(format,
+                        StringUtils.substring(port.vmName(), 0,
+                                CLI_NAME_LENGTH - CLI_MARGIN_LENGTH),
                         StringUtils.substring(port.networkId(), 0,
                                 CLI_NAME_LENGTH - CLI_MARGIN_LENGTH),
                         StringUtils.substring(port.macAddress().toString(), 0,
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
index a388227..281855e 100644
--- 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
@@ -36,6 +36,7 @@
 
     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";
@@ -50,6 +51,7 @@
         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());
 
@@ -82,6 +84,9 @@
             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);
 
@@ -89,6 +94,7 @@
                 MAC_ADDRESS + MISSING_MESSAGE);
 
         KubevirtPort.Builder builder = DefaultKubevirtPort.builder()
+                .vmName(vmName)
                 .networkId(networkId)
                 .macAddress(MacAddress.valueOf(macAddress));
 
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtVmWatcher.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtVmWatcher.java
index 8f38c4a..e48bb18 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtVmWatcher.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtVmWatcher.java
@@ -224,8 +224,11 @@
                 return;
             }
 
+            String vmName = parseVmName(resource);
+
             parseMacAddresses(resource).forEach((mac, net) -> {
                 KubevirtPort port = DefaultKubevirtPort.builder()
+                        .vmName(vmName)
                         .macAddress(mac)
                         .networkId(net)
                         .build();
@@ -249,8 +252,11 @@
                 return;
             }
 
+            String vmName = parseVmName(resource);
+
             parseMacAddresses(resource).forEach((mac, net) -> {
                 KubevirtPort port = DefaultKubevirtPort.builder()
+                        .vmName(vmName)
                         .macAddress(mac)
                         .networkId(net)
                         .build();
@@ -288,6 +294,22 @@
             return Objects.equals(localNodeId, leadershipService.getLeader(appId.name()));
         }
 
+        private String parseVmName(String resource) {
+            String vmName = null;
+            try {
+                ObjectMapper mapper = new ObjectMapper();
+                JsonNode json = mapper.readTree(resource);
+                JsonNode nameJson = json.get(METADATA).get(NAME);
+                if (nameJson != null) {
+                    vmName = nameJson.asText();
+                }
+            } catch (IOException e) {
+                log.error("Failed to parse kubevirt VM name");
+            }
+
+            return vmName;
+        }
+
         private Map<String, IpAddress> parseIpAddresses(String resource) {
             try {
                 ObjectMapper mapper = new ObjectMapper();
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java
index a60bd0a..b49bbcc 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java
@@ -89,9 +89,9 @@
     private static final String MAC = "mac";
     private static final String IPS = "ips";
     private static final String BR_INT = "br-int";
+    private static final String METADATA = "metadata";
     private static final String STATUS = "status";
     private static final String INTERFACES = "interfaces";
-    private static final String IP_ADDRESS = "ipAddress";
     private static final String NODE_NAME = "nodeName";
 
     /**
@@ -343,6 +343,7 @@
             JsonNode json = mapper.readTree(resource);
             JsonNode statusJson = json.get(STATUS);
             ArrayNode interfacesJson = (ArrayNode) statusJson.get(INTERFACES);
+            String vmName = parseResourceName(resource);
 
             KubevirtPort.Builder builder = DefaultKubevirtPort.builder();
             String nodeName = parseVmiNodeName(resource);
@@ -365,7 +366,8 @@
                     // FIXME: we do not update IP address, as learning IP address
                     // requires much more time due to the lag from VM agent
                     String mac = interfaceJson.get(MAC).asText();
-                    builder.macAddress(MacAddress.valueOf(mac))
+                    builder.vmName(vmName)
+                            .macAddress(MacAddress.valueOf(mac))
                             .networkId(network.networkId());
                     ports.add(builder.build());
                 }
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
index e928b90..5c21a28 100644
--- 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
@@ -72,6 +72,7 @@
     @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"))
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
index e9fa500..1fc6207 100644
--- 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
@@ -30,6 +30,7 @@
 
     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";
@@ -42,6 +43,14 @@
 
     @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();
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtPortManagerTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtPortManagerTest.java
index e6e4219..d9a9f77 100644
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtPortManagerTest.java
+++ b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtPortManagerTest.java
@@ -57,6 +57,7 @@
 
     private static final String PORT_MAC = "00:11:22:33:44:55";
     private static final KubevirtPort PORT = DefaultKubevirtPort.builder()
+            .vmName("test-vm-1")
             .networkId(NETWORK_ID)
             .deviceId(DeviceId.deviceId("dev-1"))
             .ipAddress(IpAddress.valueOf("20.20.20.20"))
@@ -64,6 +65,7 @@
             .portNumber(PortNumber.portNumber("1"))
             .build();
     private static final KubevirtPort PORT_UPDATED = DefaultKubevirtPort.builder()
+            .vmName("test-vm-1")
             .networkId(UPDATED_ID)
             .deviceId(DeviceId.deviceId("dev-1"))
             .ipAddress(IpAddress.valueOf("20.20.20.20"))
