diff --git a/drivers/arista/src/main/java/org/onosproject/drivers/arista/DeviceDescriptionDiscoveryAristaImpl.java b/drivers/arista/src/main/java/org/onosproject/drivers/arista/DeviceDescriptionDiscoveryAristaImpl.java
index c4edb18..2c3cfd8 100644
--- a/drivers/arista/src/main/java/org/onosproject/drivers/arista/DeviceDescriptionDiscoveryAristaImpl.java
+++ b/drivers/arista/src/main/java/org/onosproject/drivers/arista/DeviceDescriptionDiscoveryAristaImpl.java
@@ -59,7 +59,7 @@
     private static final String ETHERNET = "Ethernet";
     private static final String MANAGEMENT = "Management";
     private static final String INTERFACE_TYPE = "interfaceType";
-    private static final int WEIGHTING_FACTOR_MANAGEMENT_INTERFACE = 100;
+    private static final int WEIGHTING_FACTOR_MANAGEMENT_INTERFACE = 10000;
     private static final String JSONRPC = "jsonrpc";
     private static final String METHOD = "method";
     private static final String RUN_CMDS = "runCmds";
@@ -107,7 +107,7 @@
 
         String response = controller.post(deviceId, API_ENDPOINT,
                 new ByteArrayInputStream(sendObjNode.toString().getBytes()),
-                MediaType.APPLICATION_JSON, String.class);
+                MediaType.APPLICATION_JSON_TYPE, String.class);
 
         try {
             ObjectNode node = (ObjectNode) mapper.readTree(response);
@@ -143,7 +143,7 @@
 
     private int getPortNumber(String interfaceName) {
         if (interfaceName.startsWith(ETHERNET)) {
-            return Integer.valueOf(interfaceName.substring(ETHERNET.length()));
+            return Integer.valueOf(interfaceName.substring(ETHERNET.length()).replace('/', '0'));
         } else {
             return Integer.valueOf(interfaceName.substring(MANAGEMENT.length())).intValue()
                     + WEIGHTING_FACTOR_MANAGEMENT_INTERFACE;
diff --git a/protocols/rest/api/src/main/java/org/onosproject/protocol/http/ctl/HttpSBControllerImpl.java b/protocols/rest/api/src/main/java/org/onosproject/protocol/http/ctl/HttpSBControllerImpl.java
index 550e346..9065b08 100644
--- a/protocols/rest/api/src/main/java/org/onosproject/protocol/http/ctl/HttpSBControllerImpl.java
+++ b/protocols/rest/api/src/main/java/org/onosproject/protocol/http/ctl/HttpSBControllerImpl.java
@@ -160,9 +160,8 @@
         Response response = null;
         if (payload != null) {
             try {
-                response = wt.request(mediaType).post(
-                    Entity.entity(IOUtils.toString(payload, StandardCharsets.UTF_8), mediaType)
-                );
+                response = wt.request(mediaType)
+                        .post(Entity.entity(IOUtils.toString(payload, StandardCharsets.UTF_8), mediaType));
             } catch (IOException e) {
                 log.error("Cannot do POST {} request on device {} because can't read payload", request, device);
             }
@@ -185,13 +184,13 @@
         Response response = null;
         if (payload != null) {
             try {
-                response = wt.request(mediaType.getType()).put(Entity.entity(IOUtils.
-                        toString(payload, StandardCharsets.UTF_8), mediaType.getType()));
+                response = wt.request(mediaType).put(Entity.entity(IOUtils.
+                        toString(payload, StandardCharsets.UTF_8), mediaType));
             } catch (IOException e) {
                 log.error("Cannot do PUT {} request on device {} because can't read payload", request, device);
             }
         } else {
-            response = wt.request(mediaType.getType()).put(Entity.entity(null, mediaType.getType()));
+            response = wt.request(mediaType).put(Entity.entity(null, mediaType));
         }
 
         if (response == null) {
@@ -209,7 +208,7 @@
     public InputStream get(DeviceId device, String request, MediaType mediaType) {
         WebTarget wt = getWebTarget(device, request);
 
-        Response s = wt.request(mediaType.getType()).get();
+        Response s = wt.request(mediaType).get();
 
         if (checkReply(s)) {
             return new ByteArrayInputStream(s.readEntity((String.class)).getBytes(StandardCharsets.UTF_8));
@@ -236,7 +235,7 @@
             }
             if (payload != null) {
                 StringEntity input = new StringEntity(IOUtils.toString(payload, StandardCharsets.UTF_8));
-                input.setContentType(mediaType.getType());
+                input.setContentType(mediaType.toString());
                 httprequest.setEntity(input);
             }
             CloseableHttpClient httpClient;
@@ -265,7 +264,7 @@
         // FIXME: do we need to delete an entry by enclosing data in DELETE
         // request?
         // wouldn't it be nice to use PUT to implement the similar concept?
-        Response response = wt.request(mediaType.getType()).delete();
+        Response response = wt.request(mediaType).delete();
 
         return response.getStatus();
     }
