Merge "Avoid NPexception on domainId mismatch"
diff --git a/ce-api/src/main/java/org/opencord/ce/api/services/channel/Symbols.java b/ce-api/src/main/java/org/opencord/ce/api/services/channel/Symbols.java
index 47ba220..eb72c48 100644
--- a/ce-api/src/main/java/org/opencord/ce/api/services/channel/Symbols.java
+++ b/ce-api/src/main/java/org/opencord/ce/api/services/channel/Symbols.java
@@ -75,7 +75,6 @@
// ===== Device and Port annotations ==== //
public static final String DEVICE_ID = "deviceId";
- public static final String DOMAIN_ID = "domainId";
public static final String MEF_PORT_TYPE = "mefPortType";
diff --git a/local/bigswitch/pom.xml b/local/bigswitch/pom.xml
index 00baf3c..71f0179 100644
--- a/local/bigswitch/pom.xml
+++ b/local/bigswitch/pom.xml
@@ -44,7 +44,6 @@
<artifactId>onos-core-serializers</artifactId>
<version>${onos.version}</version>
</dependency>
-
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onos-cli</artifactId>
@@ -56,9 +55,16 @@
<version>3.0.5</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.scr.annotations</artifactId>
+ </dependency>
</dependencies>
-
<build>
<plugins>
<plugin>
diff --git a/local/bigswitch/src/main/java/org/opencord/ce/local/bigswitch/BigSwitchManager.java b/local/bigswitch/src/main/java/org/opencord/ce/local/bigswitch/BigSwitchManager.java
index ebe2179..010c54d 100644
--- a/local/bigswitch/src/main/java/org/opencord/ce/local/bigswitch/BigSwitchManager.java
+++ b/local/bigswitch/src/main/java/org/opencord/ce/local/bigswitch/BigSwitchManager.java
@@ -16,6 +16,7 @@
package org.opencord.ce.local.bigswitch;
+import com.google.common.base.Strings;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
@@ -48,9 +49,6 @@
import org.onosproject.net.device.DeviceService;
import org.onosproject.net.device.PortDescription;
import org.onosproject.net.domain.DomainId;
-import org.onosproject.net.edge.EdgePortEvent;
-import org.onosproject.net.edge.EdgePortListener;
-import org.onosproject.net.edge.EdgePortService;
import org.onosproject.store.serializers.KryoNamespaces;
import org.onosproject.store.service.AtomicCounter;
import org.onosproject.store.service.ConsistentMap;
@@ -71,15 +69,13 @@
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
-import static com.google.common.base.Strings.isNullOrEmpty;
import static org.onlab.util.Tools.get;
import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY;
-import static org.opencord.ce.api.services.channel.Symbols.DOMAIN_ID;
import static org.opencord.ce.api.services.channel.Symbols.MEF_PORT_TYPE;
import static org.opencord.ce.local.bigswitch.MefPortsConfig.INTERLINK_ID;
import static org.opencord.ce.local.bigswitch.MefPortsConfig.MEF_PORTS;
-import static org.slf4j.LoggerFactory.getLogger;
import static org.opencord.ce.local.bigswitch.MefPortsConfig.MefPortConfig;
+import static org.slf4j.LoggerFactory.getLogger;
/**
* Listens for edge and port changes in the underlying data path and
@@ -93,7 +89,6 @@
private static final Logger log = getLogger(BigSwitchManager.class);
private static final String APP_NAME = "org.opencord.ce.local.bigswitch";
- public static final String REALIZED_BY = "bigswitch:realizedBy";
public static final String DEFAULT_DOMAIN_ID = "local-domain";
private static final String PORT_MAP = "ecord-port-map";
@@ -103,6 +98,9 @@
private final NetworkConfigListener configListener = new InternalConfigListener();
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected ComponentConfigService componentConfigService;
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected CoreService coreService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
@@ -112,24 +110,14 @@
protected DeviceService deviceService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected EdgePortService edgePortService;
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected StorageService storageService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected NetworkConfigService networkConfigService;
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected ComponentConfigService componentConfigService;
-
- @Property(name = "domainId", value = DEFAULT_DOMAIN_ID, label = "Domain ID where this ONOS is running")
- private String siteId = DEFAULT_DOMAIN_ID;
-
- private static final String PROP_ENABLED = "enabled";
- @Property(name = PROP_ENABLED, boolValue = true,
- label = "If false, DEVICE_CREATED event is never triggered")
- private boolean enabled = true;
+ private static final String DOMAIN_ID = "domainId";
+ @Property(name = DOMAIN_ID, value = DEFAULT_DOMAIN_ID, label = "Domain ID where this ONOS is running")
+ private String domainId = DEFAULT_DOMAIN_ID;
private final ExecutorService executorService =
Executors.newSingleThreadExecutor();
@@ -154,7 +142,6 @@
private LoadingCache<ConnectPoint, Long> p2vMap;
// TODO: Add other listeners once we decide what an edge really is
- private EdgePortListener edgeListener = new InternalEdgeListener();
private DeviceListener deviceListener = new InternalDeviceListener();
private final ConfigFactory<ApplicationId, MefPortsConfig> configFactory =
@@ -172,7 +159,6 @@
componentConfigService.registerProperties(getClass());
configRegistry.registerConfigFactory(configFactory);
networkConfigService.addListener(configListener);
- //deviceService = opticalView(deviceService);
portMap = storageService.<ConnectPoint, Long>consistentMapBuilder()
.withName(PORT_MAP)
.withSerializer(SERIALIZER)
@@ -187,7 +173,6 @@
eventDispatcher.addSink(BigSwitchEvent.class, listenerRegistry);
portCounter.compareAndSet(0, 1);
- // edgePortService.addListener(edgeListener);
deviceService.addListener(deviceListener);
log.info("Started");
}
@@ -196,7 +181,6 @@
public void deactivate() {
networkConfigService.removeListener(configListener);
configRegistry.unregisterConfigFactory(configFactory);
- //edgePortService.removeListener(edgeListener);
deviceService.removeListener(deviceListener);
componentConfigService.unregisterProperties(getClass(), false);
log.info("Stopped");
@@ -206,33 +190,13 @@
public void modified(ComponentContext context) {
Dictionary<?, ?> properties = context != null ? context.getProperties() : new Properties();
- boolean newEnabled;
- String newSiteId;
-
- try {
- String s = get(properties, PROP_ENABLED);
- newEnabled = isNullOrEmpty(s) || Boolean.parseBoolean(s.trim());
-
- s = get(properties, DOMAIN_ID);
- newSiteId = s;
-
- } catch (NumberFormatException e) {
- log.warn("Component configuration had invalid values", e);
-
- newEnabled = enabled;
- newSiteId = siteId;
+ String d = get(properties, DOMAIN_ID);
+ if (!Strings.isNullOrEmpty(d)) {
+ // TODO: signal new domain id to global
+ domainId = d;
}
- if (enabled && !newEnabled) {
- disable();
- } else if (!enabled && newEnabled) {
- enable();
- }
- enabled = newEnabled;
-
- // TODO: manage new site ID
- siteId = newSiteId;
- log.info("siteId {}", siteId);
+ log.info("Domain ID set to {}", domainId());
}
@Override
@@ -245,7 +209,7 @@
@Override
public PortNumber getPort(ConnectPoint port) {
- // XXX error-check and seriously think about a better method definition.
+ // FIXME: error-check and seriously think about a better method definition.
Versioned<Long> portNo = portMap.get(port);
if (Versioned.valueOrNull(portNo) != null) {
return PortNumber.portNumber(portNo.value());
@@ -264,9 +228,8 @@
}
@Override
- public DomainId siteId() {
- log.info("siteId {}", siteId);
- return DomainId.domainId(siteId);
+ public DomainId domainId() {
+ return DomainId.domainId(domainId);
}
/**
@@ -284,7 +247,7 @@
DefaultAnnotations.Builder annot = DefaultAnnotations.builder();
p.annotations().keys()
.forEach(k -> annot.set(k, p.annotations().value(k)));
- annot.set(DOMAIN_ID, siteId);
+ annot.set(DOMAIN_ID, domainId);
// add annotation about underlying physical connect-point
Device device = deviceService.getDevice(cp.deviceId());
if (device.annotations().keys()
@@ -344,7 +307,7 @@
private void readConfig() {
mefPortConfigs = configRegistry.getConfig(appId, MefPortsConfig.class).mefPortConfigs();
- if (enabled && mefPortConfigs != null) {
+ if (mefPortConfigs != null) {
buildPorts();
log.info("Notifying Bigswitch presence..");
if (portMap.size() > 0) {
@@ -353,56 +316,6 @@
}
}
- private void disable() {
- // TODO
- }
-
- private void enable() {
- if (mefPortConfigs != null && portMap.size() > 0) {
- post(new BigSwitchEvent(BigSwitchEvent.Type.DEVICE_CREATED, null, getPorts()));
- }
- }
-
-
- private class InternalEdgeListener implements EdgePortListener {
- @Override
- public boolean isRelevant(EdgePortEvent event) {
- // Only listen for real devices
- Device d = deviceService.getDevice(event.subject().deviceId());
-
- return d != null && !d.type().equals(Device.Type.VIRTUAL) &&
- isPortRelevant(event.subject());
- }
-
- @Override
- public void event(EdgePortEvent event) {
- log.info("Edge event {} {}", event.subject(), event.type());
- BigSwitchEvent.Type bigSwitchEvent;
-
- switch (event.type()) {
- case EDGE_PORT_ADDED:
- portMap.put(event.subject(), getVirtualPortNumber(event.subject()));
- bigSwitchEvent = BigSwitchEvent.Type.PORT_ADDED;
- break;
- case EDGE_PORT_REMOVED:
- portMap.remove(event.subject());
- bigSwitchEvent = BigSwitchEvent.Type.PORT_REMOVED;
- break;
- default:
- return;
- }
-
- if (mefPortConfigs != null) {
- PortDescription descr;
- descr = toVirtualPortDescription(event.subject());
- if (descr != null) {
- post(new BigSwitchEvent(bigSwitchEvent, descr, getPorts()));
- }
- }
- }
- }
-
-
private class InternalDeviceListener implements DeviceListener {
@Override
public boolean isRelevant(DeviceEvent event) {
diff --git a/local/bigswitch/src/main/java/org/opencord/ce/local/bigswitch/BigSwitchService.java b/local/bigswitch/src/main/java/org/opencord/ce/local/bigswitch/BigSwitchService.java
index 47880ff..172f2ee 100644
--- a/local/bigswitch/src/main/java/org/opencord/ce/local/bigswitch/BigSwitchService.java
+++ b/local/bigswitch/src/main/java/org/opencord/ce/local/bigswitch/BigSwitchService.java
@@ -54,10 +54,10 @@
Optional<ConnectPoint> connectPointFromVirtPort(PortNumber portNumber);
/**
- * Returns the local site/domain ID of this biw switch.
+ * Returns the local domain ID of this bigswitch.
*
- * @return domain/site ID
+ * @return domain ID
*/
- DomainId siteId();
+ DomainId domainId();
}
diff --git a/local/ce-central-office/pom.xml b/local/ce-central-office/pom.xml
index d8536e7..108623f 100644
--- a/local/ce-central-office/pom.xml
+++ b/local/ce-central-office/pom.xml
@@ -32,7 +32,7 @@
<properties>
<onos.app.name>org.opencord.ce.local.co</onos.app.name>
- <onos.version>1.10.0</onos.version>
+ <onos.version>1.10.6</onos.version>
<onos.app.title>ECORD Central-Office Fabric config</onos.app.title>
<onos.app.url>http://opencord.org</onos.app.url>
</properties>
@@ -54,6 +54,14 @@
</plugins>
</build>
+ <dependencies>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.6.2</version>
+ </dependency>
+ </dependencies>
+
<repositories>
<repository>
<id>snapshots</id>
diff --git a/local/http-channel/src/main/java/org/opencord/ce/local/channel/client/HttpClientComponent.java b/local/http-channel/src/main/java/org/opencord/ce/local/channel/client/HttpClientComponent.java
index 17cfa4e..44227af 100644
--- a/local/http-channel/src/main/java/org/opencord/ce/local/channel/client/HttpClientComponent.java
+++ b/local/http-channel/src/main/java/org/opencord/ce/local/channel/client/HttpClientComponent.java
@@ -135,14 +135,14 @@
switch (event.type()) {
case DEVICE_CREATED:
log.info("DEBUG: DEV_CREATED event");
- HttpClientInstance.INSTANCE.notifyBigSwitch(bigSwitchService.siteId());
+ HttpClientInstance.INSTANCE.notifyBigSwitch(bigSwitchService.domainId());
case PORT_ADDED:
case PORT_UPDATED:
case PORT_REMOVED:
// the subject is port last updated / added port
// but we are not interested in it now
List<PortDescription> ports = event.allPorts();
- HttpClientInstance.INSTANCE.notifyBigSwitchPorts(bigSwitchService.siteId(), ports);
+ HttpClientInstance.INSTANCE.notifyBigSwitchPorts(bigSwitchService.domainId(), ports);
break;
case DEVICE_REMOVED:
// TODO