[ONOS-6958] Register policon for openflow
Change-Id: Ie54b14f331d0b7affc962a70d93c5da6d7960d13
diff --git a/drivers/optical/src/main/java/org/onosproject/drivers/optical/OpticalDriversLoader.java b/drivers/optical/src/main/java/org/onosproject/drivers/optical/OpticalDriversLoader.java
index e9d6b30..af6edf9 100644
--- a/drivers/optical/src/main/java/org/onosproject/drivers/optical/OpticalDriversLoader.java
+++ b/drivers/optical/src/main/java/org/onosproject/drivers/optical/OpticalDriversLoader.java
@@ -34,6 +34,9 @@
import org.onosproject.net.config.NetworkConfigRegistryAdapter;
import org.onosproject.net.driver.AbstractDriverLoader;
import org.onosproject.net.optical.OpticalDevice;
+import org.onosproject.ui.UiGlyph;
+import org.onosproject.ui.UiGlyphFactory;
+import org.onosproject.ui.UiExtensionService;
import com.google.common.collect.ImmutableList;
@@ -50,7 +53,34 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected NetworkConfigRegistry registry = new NetworkConfigRegistryAdapter();
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected UiExtensionService uiExtensionService;
+ private UiGlyphFactory glyphFactory =
+ () -> ImmutableList.of(
+ new UiGlyph("policon", "0 0 64 64",
+ "M 32.024746,2 30.163615,19.069136 24.258784,3.015638 "
+ + "26.879599,19.985033 17.021343,6.007051 23.943688,21.71947 "
+ + "10.8045,10.769161 21.557349,24.15439 6.031794,16.978659 "
+ + "19.883076,27.1245 3.027943,24.21114 19.033986,30.42674 "
+ + "2,31.97526 19.069136,33.83639 3.015638,39.74122 "
+ + "19.985033,37.12041 6.007051,46.97866 21.719466,40.05632 "
+ + "10.769161,53.19551 24.154391,42.44265 16.978659,57.96822 "
+ + "27.124504,44.11693 24.21114,60.97206 30.426738,44.96602 "
+ + "31.975259,62 33.83639,44.93086 39.74122,60.98437 "
+ + "37.120405,44.01497 46.978663,57.99296 40.056317,42.28054 "
+ + "53.195507,53.23084 42.442656,39.84561 57.968215,47.02135 "
+ + "44.116927,36.8755 60.972063,39.78886 44.966018,33.57327 "
+ + "62,32.02475 44.930865,30.16362 60.984369,24.25878 "
+ + "44.014972,26.8796 57.992959,17.021342 42.280539,23.94369 "
+ + "53.23084,10.8045 39.845614,21.55735 47.021349,6.031794 "
+ + "36.875501,19.883076 39.788865,3.027943 33.573267,19.033986 Z "
+ + "m -0.05497,19.23081 A 10.768943,10.768943 0 0 1 "
+ + "42.769201,31.96977 10.768943,10.768943 0 0 1 "
+ + "32.030235,42.7692 10.768943,10.768943 0 0 1 "
+ + "21.230812,32.03023 10.768943,10.768943 0 0 1 "
+ + "31.969778,21.23081 Z")
+ );
private final List<ConfigFactory> factories = ImmutableList.of(
new ConfigFactory<DeviceId, FlowTableConfig>(DEVICE_SUBJECT_FACTORY,
@@ -79,6 +109,7 @@
@Override
protected void activate() {
factories.forEach(registry::registerConfigFactory);
+ uiExtensionService.register(glyphFactory);
super.activate();
}
@@ -87,6 +118,7 @@
@Override
protected void deactivate() {
factories.forEach(registry::unregisterConfigFactory);
+ uiExtensionService.unregister(glyphFactory);
super.deactivate();
}
diff --git a/drivers/optical/src/main/resources/optical-drivers.xml b/drivers/optical/src/main/resources/optical-drivers.xml
index 1c2c418..55b4d17 100644
--- a/drivers/optical/src/main/resources/optical-drivers.xml
+++ b/drivers/optical/src/main/resources/optical-drivers.xml
@@ -104,6 +104,7 @@
<behaviour api="org.onosproject.net.behaviour.LambdaQuery"
impl="org.onosproject.driver.optical.query.OpenFlowLambdaQuery"/>
<property name="meterCapable">false</property>
+ <property name="uiType">policon</property>
</driver>
<driver name="optical-config" manufacturer="config" hwVersion="config" swVersion="config">
diff --git a/drivers/optical/src/test/java/org/onosproject/drivers/optical/OpticalDriversLoaderTest.java b/drivers/optical/src/test/java/org/onosproject/drivers/optical/OpticalDriversLoaderTest.java
index 2fb2a38..70664e6 100644
--- a/drivers/optical/src/test/java/org/onosproject/drivers/optical/OpticalDriversLoaderTest.java
+++ b/drivers/optical/src/test/java/org/onosproject/drivers/optical/OpticalDriversLoaderTest.java
@@ -17,6 +17,7 @@
import org.junit.Before;
import org.onosproject.net.driver.AbstractDriverLoaderTest;
+import org.onosproject.ui.UiExtensionServiceAdapter;
/**
* Optical drivers loader test.
@@ -26,5 +27,6 @@
@Before
public void setUp() {
loader = new OpticalDriversLoader();
+ ((OpticalDriversLoader) loader).uiExtensionService = new UiExtensionServiceAdapter();
}
}
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
index 8b70c43..7027fc2 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
@@ -295,7 +295,10 @@
Device device = event.subject();
String uiType = device.annotations().value(AnnotationKeys.UI_TYPE);
String devType = uiType != null ? uiType :
- device.type().toString().toLowerCase();
+ services.driver().getDriver(device.id()).getProperty(AnnotationKeys.UI_TYPE);
+ if (devType == null) {
+ devType = device.type().toString().toLowerCase();
+ }
String name = device.annotations().value(AnnotationKeys.NAME);
name = isNullOrEmpty(name) ? device.id().toString() : name;
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/util/ServicesBundle.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/util/ServicesBundle.java
index ed86612..76c72f3 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/util/ServicesBundle.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/util/ServicesBundle.java
@@ -23,6 +23,7 @@
import org.onosproject.mastership.MastershipAdminService;
import org.onosproject.mastership.MastershipService;
import org.onosproject.net.device.DeviceService;
+import org.onosproject.net.driver.DriverService;
import org.onosproject.net.flow.FlowRuleService;
import org.onosproject.net.host.HostService;
import org.onosproject.net.intent.IntentService;
@@ -41,6 +42,7 @@
private TopologyService topologyService;
private DeviceService deviceService;
+ private DriverService driverService;
private HostService hostService;
private LinkService linkService;
private TunnelService tunnelService;
@@ -105,6 +107,15 @@
}
/**
+ * Returns a reference to the driver service.
+ *
+ * @return driver service reference
+ */
+ public DriverService driver() {
+ return driverService;
+ }
+
+ /**
* Returns a reference to the host service.
*
* @return host service reference