mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-27 14:21:48 +01:00
Merge "Applied some fixes to Intents"
This commit is contained in:
commit
092344da45
@ -19,6 +19,7 @@ import org.onlab.onos.core.ApplicationId;
|
|||||||
import org.onlab.onos.net.NetworkResource;
|
import org.onlab.onos.net.NetworkResource;
|
||||||
import org.onlab.onos.net.flow.BatchOperationTarget;
|
import org.onlab.onos.net.flow.BatchOperationTarget;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ -93,9 +94,10 @@ public abstract class Intent implements BatchOperationTarget {
|
|||||||
* @param fields intent fields
|
* @param fields intent fields
|
||||||
* @return intent identifier
|
* @return intent identifier
|
||||||
*/
|
*/
|
||||||
protected static IntentId id(Object... fields) {
|
protected static IntentId id(Class<?> intentClass, Object... fields) {
|
||||||
// FIXME: spread the bits across the full long spectrum
|
// FIXME: spread the bits across the full long spectrum
|
||||||
return IntentId.valueOf(Objects.hash(fields));
|
return IntentId.valueOf(Objects.hash(intentClass.getName(),
|
||||||
|
Arrays.hashCode(fields)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -15,6 +15,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.onlab.onos.net.resource;
|
package org.onlab.onos.net.resource;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Representation of allocated lambda resource.
|
* Representation of allocated lambda resource.
|
||||||
*/
|
*/
|
||||||
@ -45,4 +47,21 @@ public class LambdaResourceAllocation extends LambdaResourceRequest
|
|||||||
public Lambda lambda() {
|
public Lambda lambda() {
|
||||||
return lambda;
|
return lambda;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(lambda);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (obj == null || getClass() != obj.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
final LambdaResourceAllocation other = (LambdaResourceAllocation) obj;
|
||||||
|
return Objects.equals(this.lambda, other.lambda);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -407,6 +407,8 @@ public class IntentManager
|
|||||||
List<Intent> installables = store.getInstallableIntents(intent.id());
|
List<Intent> installables = store.getInstallableIntents(intent.id());
|
||||||
if (installables != null) {
|
if (installables != null) {
|
||||||
for (Intent installable : installables) {
|
for (Intent installable : installables) {
|
||||||
|
trackerService.removeTrackedResources(intent.id(),
|
||||||
|
installable.resources());
|
||||||
List<FlowRuleBatchOperation> batches = getInstaller(installable).uninstall(installable);
|
List<FlowRuleBatchOperation> batches = getInstaller(installable).uninstall(installable);
|
||||||
uninstallWork.addAll(batches);
|
uninstallWork.addAll(batches);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -94,7 +94,26 @@ public class OpticalPathIntentInstaller implements IntentInstaller<OpticalPathIn
|
|||||||
@Override
|
@Override
|
||||||
public List<FlowRuleBatchOperation> install(OpticalPathIntent intent) {
|
public List<FlowRuleBatchOperation> install(OpticalPathIntent intent) {
|
||||||
LinkResourceAllocations allocations = assignWavelength(intent);
|
LinkResourceAllocations allocations = assignWavelength(intent);
|
||||||
|
return generateRules(intent, allocations, FlowRuleOperation.ADD);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<FlowRuleBatchOperation> uninstall(OpticalPathIntent intent) {
|
||||||
|
LinkResourceAllocations allocations = resourceService.getAllocations(intent.id());
|
||||||
|
return generateRules(intent, allocations, FlowRuleOperation.REMOVE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private LinkResourceAllocations assignWavelength(OpticalPathIntent intent) {
|
||||||
|
LinkResourceRequest.Builder request = DefaultLinkResourceRequest.builder(intent.id(),
|
||||||
|
intent.path().links())
|
||||||
|
.addLambdaRequest();
|
||||||
|
LinkResourceAllocations retLambda = resourceService.requestResources(request.build());
|
||||||
|
return retLambda;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<FlowRuleBatchOperation> generateRules(OpticalPathIntent intent,
|
||||||
|
LinkResourceAllocations allocations,
|
||||||
|
FlowRuleOperation operation) {
|
||||||
TrafficSelector.Builder selectorBuilder = DefaultTrafficSelector.builder();
|
TrafficSelector.Builder selectorBuilder = DefaultTrafficSelector.builder();
|
||||||
selectorBuilder.matchInport(intent.src().port());
|
selectorBuilder.matchInport(intent.src().port());
|
||||||
|
|
||||||
@ -128,7 +147,7 @@ public class OpticalPathIntentInstaller implements IntentInstaller<OpticalPathIn
|
|||||||
100,
|
100,
|
||||||
true);
|
true);
|
||||||
|
|
||||||
rules.add(new FlowRuleBatchEntry(FlowRuleOperation.ADD, rule));
|
rules.add(new FlowRuleBatchEntry(operation, rule));
|
||||||
|
|
||||||
prev = link.dst();
|
prev = link.dst();
|
||||||
selectorBuilder.matchInport(link.dst().port());
|
selectorBuilder.matchInport(link.dst().port());
|
||||||
@ -136,28 +155,20 @@ public class OpticalPathIntentInstaller implements IntentInstaller<OpticalPathIn
|
|||||||
}
|
}
|
||||||
|
|
||||||
// build the last T port rule
|
// build the last T port rule
|
||||||
TrafficTreatment treatmentLast = builder()
|
TrafficTreatment.Builder treatmentLast = builder();
|
||||||
.setOutput(intent.dst().port()).build();
|
treatmentLast.setOutput(intent.dst().port());
|
||||||
FlowRule rule = new DefaultFlowRule(intent.dst().deviceId(),
|
FlowRule rule = new DefaultFlowRule(intent.dst().deviceId(),
|
||||||
selectorBuilder.build(),
|
selectorBuilder.build(),
|
||||||
treatmentLast,
|
treatmentLast.build(),
|
||||||
100,
|
100,
|
||||||
appId,
|
appId,
|
||||||
100,
|
100,
|
||||||
true);
|
true);
|
||||||
rules.add(new FlowRuleBatchEntry(FlowRuleOperation.ADD, rule));
|
rules.add(new FlowRuleBatchEntry(operation, rule));
|
||||||
|
|
||||||
return Lists.newArrayList(new FlowRuleBatchOperation(rules));
|
return Lists.newArrayList(new FlowRuleBatchOperation(rules));
|
||||||
}
|
}
|
||||||
|
|
||||||
private LinkResourceAllocations assignWavelength(OpticalPathIntent intent) {
|
|
||||||
LinkResourceRequest.Builder request = DefaultLinkResourceRequest.builder(intent.id(),
|
|
||||||
intent.path().links())
|
|
||||||
.addLambdaRequest();
|
|
||||||
LinkResourceAllocations retLambda = resourceService.requestResources(request.build());
|
|
||||||
return retLambda;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*private Lambda assignWavelength(List<Link> links) {
|
/*private Lambda assignWavelength(List<Link> links) {
|
||||||
// TODO More wavelength assignment algorithm
|
// TODO More wavelength assignment algorithm
|
||||||
int wavenum = 0;
|
int wavenum = 0;
|
||||||
@ -194,64 +205,4 @@ public class OpticalPathIntentInstaller implements IntentInstaller<OpticalPathIn
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<FlowRuleBatchOperation> uninstall(OpticalPathIntent intent) {
|
|
||||||
LinkResourceAllocations allocations = resourceService.getAllocations(intent.id());
|
|
||||||
|
|
||||||
TrafficSelector.Builder selectorBuilder = DefaultTrafficSelector.builder();
|
|
||||||
selectorBuilder.matchInport(intent.src().port());
|
|
||||||
|
|
||||||
TrafficTreatment.Builder treatmentBuilder = DefaultTrafficTreatment.builder();
|
|
||||||
|
|
||||||
List<FlowRuleBatchEntry> rules = Lists.newLinkedList();
|
|
||||||
ConnectPoint prev = intent.src();
|
|
||||||
|
|
||||||
//TODO throw exception if the lambda was not retrieved successfully
|
|
||||||
for (Link link : intent.path().links()) {
|
|
||||||
Lambda la = null;
|
|
||||||
for (ResourceAllocation allocation : allocations.getResourceAllocation(link)) {
|
|
||||||
if (allocation.type() == ResourceType.LAMBDA) {
|
|
||||||
la = ((LambdaResourceAllocation) allocation).lambda();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (la == null) {
|
|
||||||
log.info("Lambda was not retrieved successfully");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
treatmentBuilder.setOutput(link.src().port());
|
|
||||||
treatmentBuilder.setLambda((short) la.toInt());
|
|
||||||
|
|
||||||
FlowRule rule = new DefaultFlowRule(prev.deviceId(),
|
|
||||||
selectorBuilder.build(),
|
|
||||||
treatmentBuilder.build(),
|
|
||||||
100,
|
|
||||||
appId,
|
|
||||||
100,
|
|
||||||
true);
|
|
||||||
rules.add(new FlowRuleBatchEntry(FlowRuleOperation.REMOVE, rule));
|
|
||||||
|
|
||||||
prev = link.dst();
|
|
||||||
selectorBuilder.matchInport(link.dst().port());
|
|
||||||
selectorBuilder.matchLambda((short) la.toInt());
|
|
||||||
}
|
|
||||||
|
|
||||||
// build the last T port rule
|
|
||||||
TrafficTreatment treatmentLast = builder()
|
|
||||||
.setOutput(intent.dst().port()).build();
|
|
||||||
FlowRule rule = new DefaultFlowRule(intent.dst().deviceId(),
|
|
||||||
selectorBuilder.build(),
|
|
||||||
treatmentLast,
|
|
||||||
100,
|
|
||||||
appId,
|
|
||||||
100,
|
|
||||||
true);
|
|
||||||
rules.add(new FlowRuleBatchEntry(FlowRuleOperation.REMOVE, rule));
|
|
||||||
|
|
||||||
return Lists.newArrayList(new FlowRuleBatchOperation(rules));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
232
core/store/dist/src/main/java/org/onlab/onos/store/resource/impl/DistributedLinkResourceStore.java
vendored
Normal file
232
core/store/dist/src/main/java/org/onlab/onos/store/resource/impl/DistributedLinkResourceStore.java
vendored
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2014 Open Networking Laboratory
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.onlab.onos.store.resource.impl;
|
||||||
|
|
||||||
|
import org.apache.felix.scr.annotations.Activate;
|
||||||
|
import org.apache.felix.scr.annotations.Component;
|
||||||
|
import org.apache.felix.scr.annotations.Deactivate;
|
||||||
|
import org.apache.felix.scr.annotations.Service;
|
||||||
|
import org.onlab.onos.net.Link;
|
||||||
|
import org.onlab.onos.net.intent.IntentId;
|
||||||
|
import org.onlab.onos.net.resource.Bandwidth;
|
||||||
|
import org.onlab.onos.net.resource.BandwidthResourceAllocation;
|
||||||
|
import org.onlab.onos.net.resource.Lambda;
|
||||||
|
import org.onlab.onos.net.resource.LambdaResourceAllocation;
|
||||||
|
import org.onlab.onos.net.resource.LinkResourceAllocations;
|
||||||
|
import org.onlab.onos.net.resource.LinkResourceStore;
|
||||||
|
import org.onlab.onos.net.resource.ResourceAllocation;
|
||||||
|
import org.onlab.onos.net.resource.ResourceType;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
import static com.google.common.base.Preconditions.checkState;
|
||||||
|
import static org.slf4j.LoggerFactory.getLogger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Manages link resources using trivial in-memory structures implementation.
|
||||||
|
*/
|
||||||
|
@Component(immediate = true)
|
||||||
|
@Service
|
||||||
|
public class DistributedLinkResourceStore implements LinkResourceStore {
|
||||||
|
private final Logger log = getLogger(getClass());
|
||||||
|
private Map<IntentId, LinkResourceAllocations> linkResourceAllocationsMap;
|
||||||
|
private Map<Link, Set<LinkResourceAllocations>> allocatedResources;
|
||||||
|
private Map<Link, Set<ResourceAllocation>> freeResources;
|
||||||
|
|
||||||
|
@Activate
|
||||||
|
public void activate() {
|
||||||
|
linkResourceAllocationsMap = new HashMap<>();
|
||||||
|
allocatedResources = new HashMap<>();
|
||||||
|
freeResources = new HashMap<>();
|
||||||
|
|
||||||
|
log.info("Started");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deactivate
|
||||||
|
public void deactivate() {
|
||||||
|
log.info("Stopped");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns free resources for a given link obtaining from topology
|
||||||
|
* information.
|
||||||
|
*
|
||||||
|
* @param link the target link
|
||||||
|
* @return free resources
|
||||||
|
*/
|
||||||
|
private Set<ResourceAllocation> readOriginalFreeResources(Link link) {
|
||||||
|
// TODO read capacity and lambda resources from topology
|
||||||
|
Set<ResourceAllocation> allocations = new HashSet<>();
|
||||||
|
for (int i = 1; i <= 100; i++) {
|
||||||
|
allocations.add(new LambdaResourceAllocation(Lambda.valueOf(i)));
|
||||||
|
}
|
||||||
|
allocations.add(new BandwidthResourceAllocation(Bandwidth.valueOf(1000000)));
|
||||||
|
return allocations;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds and returns {@link org.onlab.onos.net.resource.BandwidthResourceAllocation} object from a given
|
||||||
|
* set.
|
||||||
|
*
|
||||||
|
* @param freeRes a set of ResourceAllocation object.
|
||||||
|
* @return {@link org.onlab.onos.net.resource.BandwidthResourceAllocation} object if found, otherwise
|
||||||
|
* {@link org.onlab.onos.net.resource.BandwidthResourceAllocation} object with 0 bandwidth
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private BandwidthResourceAllocation getBandwidth(Set<ResourceAllocation> freeRes) {
|
||||||
|
for (ResourceAllocation res : freeRes) {
|
||||||
|
if (res.type() == ResourceType.BANDWIDTH) {
|
||||||
|
return (BandwidthResourceAllocation) res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new BandwidthResourceAllocation(Bandwidth.valueOf(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subtracts given resources from free resources for given link.
|
||||||
|
*
|
||||||
|
* @param link the target link
|
||||||
|
* @param allocations the resources to be subtracted
|
||||||
|
*/
|
||||||
|
private void subtractFreeResources(Link link, LinkResourceAllocations allocations) {
|
||||||
|
// TODO Use lock or version for updating freeResources.
|
||||||
|
checkNotNull(link);
|
||||||
|
Set<ResourceAllocation> freeRes = new HashSet<>(getFreeResources(link));
|
||||||
|
Set<ResourceAllocation> subRes = allocations.getResourceAllocation(link);
|
||||||
|
for (ResourceAllocation res : subRes) {
|
||||||
|
switch (res.type()) {
|
||||||
|
case BANDWIDTH:
|
||||||
|
BandwidthResourceAllocation ba = getBandwidth(freeRes);
|
||||||
|
double requestedBandwidth =
|
||||||
|
((BandwidthResourceAllocation) res).bandwidth().toDouble();
|
||||||
|
double newBandwidth = ba.bandwidth().toDouble() - requestedBandwidth;
|
||||||
|
checkState(newBandwidth >= 0.0);
|
||||||
|
freeRes.remove(ba);
|
||||||
|
freeRes.add(new BandwidthResourceAllocation(
|
||||||
|
Bandwidth.valueOf(newBandwidth)));
|
||||||
|
break;
|
||||||
|
case LAMBDA:
|
||||||
|
checkState(freeRes.remove(res));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
freeResources.put(link, freeRes);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds given resources to free resources for given link.
|
||||||
|
*
|
||||||
|
* @param link the target link
|
||||||
|
* @param allocations the resources to be added
|
||||||
|
*/
|
||||||
|
private void addFreeResources(Link link, LinkResourceAllocations allocations) {
|
||||||
|
// TODO Use lock or version for updating freeResources.
|
||||||
|
Set<ResourceAllocation> freeRes = new HashSet<>(getFreeResources(link));
|
||||||
|
Set<ResourceAllocation> addRes = allocations.getResourceAllocation(link);
|
||||||
|
for (ResourceAllocation res : addRes) {
|
||||||
|
switch (res.type()) {
|
||||||
|
case BANDWIDTH:
|
||||||
|
BandwidthResourceAllocation ba = getBandwidth(freeRes);
|
||||||
|
double requestedBandwidth =
|
||||||
|
((BandwidthResourceAllocation) res).bandwidth().toDouble();
|
||||||
|
double newBandwidth = ba.bandwidth().toDouble() + requestedBandwidth;
|
||||||
|
freeRes.remove(ba);
|
||||||
|
freeRes.add(new BandwidthResourceAllocation(
|
||||||
|
Bandwidth.valueOf(newBandwidth)));
|
||||||
|
break;
|
||||||
|
case LAMBDA:
|
||||||
|
checkState(freeRes.add(res));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
freeResources.put(link, freeRes);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<ResourceAllocation> getFreeResources(Link link) {
|
||||||
|
checkNotNull(link);
|
||||||
|
Set<ResourceAllocation> freeRes = freeResources.get(link);
|
||||||
|
if (freeRes == null) {
|
||||||
|
freeRes = readOriginalFreeResources(link);
|
||||||
|
}
|
||||||
|
|
||||||
|
return freeRes;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void allocateResources(LinkResourceAllocations allocations) {
|
||||||
|
checkNotNull(allocations);
|
||||||
|
linkResourceAllocationsMap.put(allocations.intendId(), allocations);
|
||||||
|
for (Link link : allocations.links()) {
|
||||||
|
subtractFreeResources(link, allocations);
|
||||||
|
Set<LinkResourceAllocations> linkAllocs = allocatedResources.get(link);
|
||||||
|
if (linkAllocs == null) {
|
||||||
|
linkAllocs = new HashSet<>();
|
||||||
|
}
|
||||||
|
linkAllocs.add(allocations);
|
||||||
|
allocatedResources.put(link, linkAllocs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void releaseResources(LinkResourceAllocations allocations) {
|
||||||
|
checkNotNull(allocations);
|
||||||
|
linkResourceAllocationsMap.remove(allocations);
|
||||||
|
for (Link link : allocations.links()) {
|
||||||
|
addFreeResources(link, allocations);
|
||||||
|
Set<LinkResourceAllocations> linkAllocs = allocatedResources.get(link);
|
||||||
|
if (linkAllocs == null) {
|
||||||
|
log.error("Missing resource allocation.");
|
||||||
|
} else {
|
||||||
|
linkAllocs.remove(allocations);
|
||||||
|
}
|
||||||
|
allocatedResources.put(link, linkAllocs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LinkResourceAllocations getAllocations(IntentId intentId) {
|
||||||
|
checkNotNull(intentId);
|
||||||
|
return linkResourceAllocationsMap.get(intentId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Iterable<LinkResourceAllocations> getAllocations(Link link) {
|
||||||
|
checkNotNull(link);
|
||||||
|
Set<LinkResourceAllocations> result = allocatedResources.get(link);
|
||||||
|
if (result == null) {
|
||||||
|
result = Collections.emptySet();
|
||||||
|
}
|
||||||
|
return Collections.unmodifiableSet(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Iterable<LinkResourceAllocations> getAllocations() {
|
||||||
|
return Collections.unmodifiableCollection(linkResourceAllocationsMap.values());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
4
core/store/dist/src/main/java/org/onlab/onos/store/resource/impl/package-info.java
vendored
Normal file
4
core/store/dist/src/main/java/org/onlab/onos/store/resource/impl/package-info.java
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
/**
|
||||||
|
* Implementation of distributed packet store.
|
||||||
|
*/
|
||||||
|
package org.onlab.onos.store.resource.impl;
|
||||||
@ -71,11 +71,14 @@ import org.onlab.onos.net.intent.IntentId;
|
|||||||
import org.onlab.onos.net.intent.IntentState;
|
import org.onlab.onos.net.intent.IntentState;
|
||||||
import org.onlab.onos.net.intent.LinkCollectionIntent;
|
import org.onlab.onos.net.intent.LinkCollectionIntent;
|
||||||
import org.onlab.onos.net.intent.MultiPointToSinglePointIntent;
|
import org.onlab.onos.net.intent.MultiPointToSinglePointIntent;
|
||||||
|
import org.onlab.onos.net.intent.OpticalConnectivityIntent;
|
||||||
|
import org.onlab.onos.net.intent.OpticalPathIntent;
|
||||||
import org.onlab.onos.net.intent.PathIntent;
|
import org.onlab.onos.net.intent.PathIntent;
|
||||||
import org.onlab.onos.net.intent.PointToPointIntent;
|
import org.onlab.onos.net.intent.PointToPointIntent;
|
||||||
import org.onlab.onos.net.link.DefaultLinkDescription;
|
import org.onlab.onos.net.link.DefaultLinkDescription;
|
||||||
import org.onlab.onos.net.packet.DefaultOutboundPacket;
|
import org.onlab.onos.net.packet.DefaultOutboundPacket;
|
||||||
import org.onlab.onos.net.provider.ProviderId;
|
import org.onlab.onos.net.provider.ProviderId;
|
||||||
|
import org.onlab.onos.net.resource.LinkResourceRequest;
|
||||||
import org.onlab.onos.store.Timestamp;
|
import org.onlab.onos.store.Timestamp;
|
||||||
import org.onlab.packet.ChassisId;
|
import org.onlab.packet.ChassisId;
|
||||||
import org.onlab.packet.IpAddress;
|
import org.onlab.packet.IpAddress;
|
||||||
@ -182,7 +185,10 @@ public final class KryoNamespaces {
|
|||||||
HostToHostIntent.class,
|
HostToHostIntent.class,
|
||||||
PointToPointIntent.class,
|
PointToPointIntent.class,
|
||||||
MultiPointToSinglePointIntent.class,
|
MultiPointToSinglePointIntent.class,
|
||||||
LinkCollectionIntent.class
|
LinkCollectionIntent.class,
|
||||||
|
OpticalConnectivityIntent.class,
|
||||||
|
OpticalPathIntent.class,
|
||||||
|
LinkResourceRequest.class
|
||||||
)
|
)
|
||||||
.register(DefaultApplicationId.class, new DefaultApplicationIdSerializer())
|
.register(DefaultApplicationId.class, new DefaultApplicationIdSerializer())
|
||||||
.register(URI.class, new URISerializer())
|
.register(URI.class, new URISerializer())
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user