aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java')
-rw-r--r--framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java77
1 files changed, 65 insertions, 12 deletions
diff --git a/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java b/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java
index fb83cdd7..53b16a65 100644
--- a/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java
+++ b/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java
@@ -25,12 +25,16 @@ import org.onosproject.net.Device;
import org.onosproject.net.DeviceId;
import org.onosproject.net.Link;
import org.onosproject.net.Port;
+import org.onosproject.net.config.NetworkConfigService;
+import org.onosproject.net.config.basics.BasicDeviceConfig;
import org.onosproject.net.device.DeviceService;
import org.onosproject.net.link.LinkService;
import org.onosproject.ui.RequestHandler;
import org.onosproject.ui.UiMessageHandler;
import org.onosproject.ui.table.TableModel;
import org.onosproject.ui.table.TableRequestHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Collection;
@@ -38,7 +42,10 @@ import java.util.Collections;
import java.util.List;
import java.util.Set;
+import static com.google.common.base.Strings.emptyToNull;
+import static com.google.common.base.Strings.isNullOrEmpty;
import static org.apache.commons.lang.WordUtils.capitalizeFully;
+import static org.onosproject.net.DeviceId.deviceId;
/**
* Message handler for device view related messages.
@@ -53,6 +60,11 @@ public class DeviceViewMessageHandler extends UiMessageHandler {
private static final String DEV_DETAILS_RESP = "deviceDetailsResponse";
private static final String DETAILS = "details";
+ private static final String DEV_NAME_CHANGE_REQ = "deviceNameChangeRequest";
+ private static final String DEV_NAME_CHANGE_RESP = "deviceNameChangeResponse";
+
+ private static final String ZERO_URI = "of:0000000000000000";
+
private static final String ID = "id";
private static final String TYPE = "type";
private static final String AVAILABLE = "available";
@@ -72,25 +84,41 @@ public class DeviceViewMessageHandler extends UiMessageHandler {
private static final String ENABLED = "enabled";
private static final String SPEED = "speed";
private static final String NAME = "name";
+ private static final String WARN = "warn";
private static final String[] COL_IDS = {
- AVAILABLE, AVAILABLE_IID, TYPE_IID, ID,
- NUM_PORTS, MASTER_ID, MFR, HW, SW,
+ AVAILABLE, AVAILABLE_IID, TYPE_IID,
+ NAME, ID, MASTER_ID, NUM_PORTS, MFR, HW, SW,
PROTOCOL, CHASSIS_ID, SERIAL
};
private static final String ICON_ID_ONLINE = "active";
private static final String ICON_ID_OFFLINE = "inactive";
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+
@Override
protected Collection<RequestHandler> createRequestHandlers() {
return ImmutableSet.of(
new DataRequestHandler(),
+ new NameChangeHandler(),
new DetailRequestHandler()
);
}
+ // Get friendly name of the device from the annotations
+ private static String deviceName(Device device) {
+ String name = device.annotations().value(AnnotationKeys.NAME);
+ return isNullOrEmpty(name) ? device.id().toString() : name;
+ }
+
+ private static String deviceProtocol(Device device) {
+ String protocol = device.annotations().value(PROTOCOL);
+ return protocol != null ? protocol : "";
+ }
+
private static String getTypeIconId(Device d) {
return DEV_ICON_PREFIX + d.type().toString();
}
@@ -121,16 +149,15 @@ public class DeviceViewMessageHandler extends UiMessageHandler {
boolean available = ds.isAvailable(id);
String iconId = available ? ICON_ID_ONLINE : ICON_ID_OFFLINE;
- String protocol = dev.annotations().value(PROTOCOL);
-
row.cell(ID, id)
+ .cell(NAME, deviceName(dev))
.cell(AVAILABLE, available)
.cell(AVAILABLE_IID, iconId)
.cell(TYPE_IID, getTypeIconId(dev))
.cell(MFR, dev.manufacturer())
.cell(HW, dev.hwVersion())
.cell(SW, dev.swVersion())
- .cell(PROTOCOL, protocol != null ? protocol : "")
+ .cell(PROTOCOL, deviceProtocol(dev))
.cell(NUM_PORTS, ds.getPorts(id).size())
.cell(MASTER_ID, ms.getMasterFor(id));
}
@@ -144,15 +171,16 @@ public class DeviceViewMessageHandler extends UiMessageHandler {
@Override
public void process(long sid, ObjectNode payload) {
- String id = string(payload, "id", "of:0000000000000000");
+ String id = string(payload, ID, ZERO_URI);
- DeviceId deviceId = DeviceId.deviceId(id);
+ DeviceId deviceId = deviceId(id);
DeviceService service = get(DeviceService.class);
MastershipService ms = get(MastershipService.class);
Device device = service.getDevice(deviceId);
- ObjectNode data = MAPPER.createObjectNode();
+ ObjectNode data = objectNode();
data.put(ID, deviceId.toString());
+ data.put(NAME, deviceName(device));
data.put(TYPE, capitalizeFully(device.type().toString()));
data.put(TYPE_IID, getTypeIconId(device));
data.put(MFR, device.manufacturer());
@@ -161,9 +189,9 @@ public class DeviceViewMessageHandler extends UiMessageHandler {
data.put(SERIAL, device.serialNumber());
data.put(CHASSIS_ID, device.chassisId().toString());
data.put(MASTER_ID, ms.getMasterFor(deviceId).toString());
- data.put(PROTOCOL, device.annotations().value(PROTOCOL));
+ data.put(PROTOCOL, deviceProtocol(device));
- ArrayNode ports = MAPPER.createArrayNode();
+ ArrayNode ports = arrayNode();
List<Port> portList = new ArrayList<>(service.getPorts(deviceId));
Collections.sort(portList, (p1, p2) -> {
@@ -176,13 +204,13 @@ public class DeviceViewMessageHandler extends UiMessageHandler {
}
data.set(PORTS, ports);
- ObjectNode rootNode = MAPPER.createObjectNode();
+ ObjectNode rootNode = objectNode();
rootNode.set(DETAILS, data);
sendMessage(DEV_DETAILS_RESP, 0, rootNode);
}
private ObjectNode portData(Port p, DeviceId id) {
- ObjectNode port = MAPPER.createObjectNode();
+ ObjectNode port = objectNode();
LinkService ls = get(LinkService.class);
String name = p.annotations().value(AnnotationKeys.PORT_NAME);
@@ -206,4 +234,29 @@ public class DeviceViewMessageHandler extends UiMessageHandler {
return port;
}
}
+
+
+ // handler for changing device friendly name
+ private final class NameChangeHandler extends RequestHandler {
+ private NameChangeHandler() {
+ super(DEV_NAME_CHANGE_REQ);
+ }
+
+ @Override
+ public void process(long sid, ObjectNode payload) {
+ DeviceId deviceId = deviceId(string(payload, ID, ZERO_URI));
+ String name = emptyToNull(string(payload, NAME, null));
+ log.debug("Name change request: {} -- '{}'", deviceId, name);
+
+ NetworkConfigService service = get(NetworkConfigService.class);
+ BasicDeviceConfig cfg =
+ service.addConfig(deviceId, BasicDeviceConfig.class);
+
+ // Name attribute missing from the payload (or empty string)
+ // means that the friendly name should be unset.
+ cfg.name(name);
+ cfg.apply();
+ sendMessage(DEV_NAME_CHANGE_RESP, 0, payload);
+ }
+ }
}