mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-16 18:02:05 +02:00
Move static factory methods to the utility class
Change-Id: Icf458adf78f51823e4ffa31346595fa9716485bf
This commit is contained in:
parent
763be92118
commit
460b97251b
@ -35,6 +35,7 @@ import org.onosproject.net.newresource.Resource;
|
||||
import org.onosproject.net.newresource.ResourceService;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import org.onosproject.net.newresource.Resources;
|
||||
|
||||
/**
|
||||
* Lists allocated resources.
|
||||
@ -106,7 +107,7 @@ public class AllocationsCommand extends AbstractShellCommand {
|
||||
// TODO: Current design cannot deal with sub-resources
|
||||
// (e.g., TX/RX under Port)
|
||||
|
||||
Resource resource = Resource.discrete(did, num).resource();
|
||||
Resource resource = Resources.discrete(did, num).resource();
|
||||
if (lambda) {
|
||||
//print("Lambda resources:");
|
||||
Collection<ResourceAllocation> allocations
|
||||
|
@ -46,6 +46,7 @@ import com.google.common.collect.Multimap;
|
||||
import com.google.common.collect.Range;
|
||||
import com.google.common.collect.RangeSet;
|
||||
import com.google.common.collect.TreeRangeSet;
|
||||
import org.onosproject.net.newresource.Resources;
|
||||
|
||||
/**
|
||||
* Lists available resources.
|
||||
@ -89,11 +90,11 @@ public class ResourcesCommand extends AbstractShellCommand {
|
||||
DeviceId deviceId = deviceId(deviceIdStr);
|
||||
PortNumber portNumber = PortNumber.fromString(portNumberStr);
|
||||
|
||||
printResource(Resource.discrete(deviceId, portNumber).resource(), 0);
|
||||
printResource(Resources.discrete(deviceId, portNumber).resource(), 0);
|
||||
} else if (deviceIdStr != null) {
|
||||
DeviceId deviceId = deviceId(deviceIdStr);
|
||||
|
||||
printResource(Resource.discrete(deviceId).resource(), 0);
|
||||
printResource(Resources.discrete(deviceId).resource(), 0);
|
||||
} else {
|
||||
printResource(Resource.ROOT, 0);
|
||||
}
|
||||
|
@ -15,8 +15,6 @@
|
||||
*/
|
||||
package org.onosproject.cli.net;
|
||||
|
||||
import static org.onosproject.net.newresource.Resource.discrete;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import org.apache.karaf.shell.commands.Argument;
|
||||
@ -33,6 +31,7 @@ import org.onosproject.net.newresource.ResourceAllocation;
|
||||
import org.onosproject.net.newresource.ResourceConsumer;
|
||||
import org.onosproject.net.newresource.Resource;
|
||||
import org.onosproject.net.newresource.ResourceService;
|
||||
import org.onosproject.net.newresource.Resources;
|
||||
|
||||
/**
|
||||
* Test tool to allocate resources.
|
||||
@ -73,8 +72,8 @@ public class TestAllocateResource extends AbstractShellCommand {
|
||||
|
||||
ResourceConsumer consumer = IntentId.valueOf(nIntendId);
|
||||
|
||||
Resource resource = discrete(did, portNum,
|
||||
createLambda(Integer.parseInt(lambda))).resource();
|
||||
Resource resource = Resources.discrete(did, portNum,
|
||||
createLambda(Integer.parseInt(lambda))).resource();
|
||||
|
||||
Optional<ResourceAllocation> allocate = resourceService.allocate(consumer, resource);
|
||||
if (allocate.isPresent()) {
|
||||
|
@ -98,7 +98,7 @@ public final class ContinuousResource implements Resource {
|
||||
|
||||
@Override
|
||||
public Optional<DiscreteResource> parent() {
|
||||
return id.parent().map(x -> Resource.discrete(x).resource());
|
||||
return id.parent().map(x -> Resources.discrete(x).resource());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -80,17 +80,17 @@ public final class DiscreteResource implements Resource {
|
||||
public DiscreteResource child(Object child) {
|
||||
checkArgument(!(child instanceof Class<?>));
|
||||
|
||||
return Resource.discrete(id.child(child)).resource();
|
||||
return Resources.discrete(id.child(child)).resource();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ContinuousResource child(Class<?> child, double value) {
|
||||
return Resource.continuous(id.child(child)).resource(value);
|
||||
return Resources.continuous(id.child(child)).resource(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<DiscreteResource> parent() {
|
||||
return id.parent().map(x -> Resource.discrete(x).resource());
|
||||
return id.parent().map(x -> Resources.discrete(x).resource());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -50,14 +50,14 @@ public final class DiscreteResourceId extends ResourceId {
|
||||
public DiscreteResourceId child(Object child) {
|
||||
checkArgument(!(child instanceof Class<?>));
|
||||
|
||||
return Resource.discrete(this, child).id();
|
||||
return Resources.discrete(this, child).id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ContinuousResourceId child(Class<?> child) {
|
||||
checkNotNull(child);
|
||||
|
||||
return Resource.continuous(this, child).id();
|
||||
return Resources.continuous(this, child).id();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,17 +16,10 @@
|
||||
package org.onosproject.net.newresource;
|
||||
|
||||
import com.google.common.annotations.Beta;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import org.onosproject.net.DeviceId;
|
||||
import org.onosproject.net.PortNumber;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
/**
|
||||
* An object that represent a resource in a network.
|
||||
* A Resource can represents path-like hierarchical structure with its ID. An ID of resource is
|
||||
@ -106,189 +99,4 @@ public interface Resource {
|
||||
* @return the ID of this resource path
|
||||
*/
|
||||
ResourceId id();
|
||||
|
||||
/**
|
||||
* Create a factory for discrete-type with the specified resource ID.
|
||||
*
|
||||
* @param id resource ID
|
||||
* @return {@link DiscreteFactory}
|
||||
*/
|
||||
static DiscreteFactory discrete(DiscreteResourceId id) {
|
||||
checkNotNull(id);
|
||||
|
||||
return new DiscreteFactory(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a factory for discrete-type with the specified parent ID and child.
|
||||
*
|
||||
* @param parent ID of the parent
|
||||
* @param child child
|
||||
* @return {@link DiscreteFactory}
|
||||
*/
|
||||
static DiscreteFactory discrete(DiscreteResourceId parent, Object child) {
|
||||
checkNotNull(parent);
|
||||
checkNotNull(child);
|
||||
checkArgument(!(child instanceof Class<?>));
|
||||
|
||||
return new DiscreteFactory(new DiscreteResourceId(ImmutableList.builder()
|
||||
.addAll(parent.components())
|
||||
.add(child)
|
||||
.build()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for discrete-type with the specified device ID.
|
||||
*
|
||||
* @param device device ID
|
||||
* @return {@link DiscreteFactory}
|
||||
*/
|
||||
static DiscreteFactory discrete(DeviceId device) {
|
||||
checkNotNull(device);
|
||||
|
||||
return new DiscreteFactory(new DiscreteResourceId(ImmutableList.of(device)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for discrete-type with the specified device ID and components.
|
||||
*
|
||||
* @param device device ID
|
||||
* @param components resource ID components other than the device ID
|
||||
* @return {@link DiscreteFactory}
|
||||
*/
|
||||
static DiscreteFactory discrete(DeviceId device, Object... components) {
|
||||
checkNotNull(device);
|
||||
checkNotNull(components);
|
||||
|
||||
return new DiscreteFactory(new DiscreteResourceId(ImmutableList.builder()
|
||||
.add(device)
|
||||
.add(components)
|
||||
.build()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for discrete-type with the specified device ID, port number and components.
|
||||
*
|
||||
* @param device device ID
|
||||
* @param port port number
|
||||
* @param components resource ID components other than the device ID and port number
|
||||
* @return {@link DiscreteFactory}
|
||||
*/
|
||||
static DiscreteFactory discrete(DeviceId device, PortNumber port, Object... components) {
|
||||
checkNotNull(device);
|
||||
checkNotNull(port);
|
||||
checkNotNull(components);
|
||||
|
||||
return new DiscreteFactory(new DiscreteResourceId(ImmutableList.builder()
|
||||
.add(device)
|
||||
.add(port)
|
||||
.add(components)
|
||||
.build()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for continuous-type with the specified resource ID.
|
||||
*
|
||||
* @param id resource ID
|
||||
* @return {@link ContinuousFactory}
|
||||
*/
|
||||
static ContinuousFactory continuous(ContinuousResourceId id) {
|
||||
checkNotNull(id);
|
||||
|
||||
return new ContinuousFactory(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a factory for continuous-type wit the specified parent ID and child.
|
||||
*
|
||||
* @param parent ID of the parent
|
||||
* @param child child
|
||||
* @return {@link ContinuousFactory}
|
||||
*/
|
||||
static ContinuousFactory continuous(DiscreteResourceId parent, Class<?> child) {
|
||||
checkNotNull(parent);
|
||||
checkNotNull(child);
|
||||
|
||||
return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
|
||||
.addAll(parent.components()), child));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for continuous-type with the specified device ID and type.
|
||||
*
|
||||
* @param device device ID
|
||||
* @param cls type of resource the returned factory will create
|
||||
* @return {@link ContinuousFactory}
|
||||
*/
|
||||
static ContinuousFactory continuous(DeviceId device, Class<?> cls) {
|
||||
checkNotNull(device);
|
||||
checkNotNull(cls);
|
||||
|
||||
return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder().add(device), cls));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for continuous-type with the specified device ID and components.
|
||||
* The last element of the components must be a {@link Class} instance. Otherwise,
|
||||
* an {@link IllegalArgumentException} is thrown.
|
||||
*
|
||||
* @param device device ID
|
||||
* @param components resource ID components other than the device ID.
|
||||
* @return {@link ContinuousFactory}
|
||||
*/
|
||||
static ContinuousFactory continuous(DeviceId device, Object... components) {
|
||||
checkNotNull(device);
|
||||
checkNotNull(components);
|
||||
checkArgument(components.length > 1);
|
||||
|
||||
Object last = components[components.length - 1];
|
||||
checkArgument(last instanceof Class<?>);
|
||||
|
||||
return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
|
||||
.add(device)
|
||||
.add(Arrays.copyOfRange(components, 0, components.length - 1)), (Class<?>) last));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for continuous-type with the specified device ID, port number and type.
|
||||
*
|
||||
* @param device device ID
|
||||
* @param port port number
|
||||
* @param cls type of resource the returned factory will create
|
||||
* @return {@link ContinuousFactory}
|
||||
*/
|
||||
static ContinuousFactory continuous(DeviceId device, PortNumber port, Class<?> cls) {
|
||||
checkNotNull(device);
|
||||
checkNotNull(port);
|
||||
checkNotNull(cls);
|
||||
|
||||
return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
|
||||
.add(device)
|
||||
.add(port), cls));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for continuous-type with the specified device ID and components.
|
||||
* The last element of the components must be a {@link Class} instance. Otherwise,
|
||||
* an {@link IllegalArgumentException} is thrown.
|
||||
*
|
||||
* @param device device ID
|
||||
* @param port port number
|
||||
* @param components resource ID components other than the device ID and port number.
|
||||
* @return {@link ContinuousFactory}
|
||||
*/
|
||||
static ContinuousFactory continuous(DeviceId device, PortNumber port, Object... components) {
|
||||
checkNotNull(device);
|
||||
checkNotNull(port);
|
||||
checkNotNull(components);
|
||||
checkArgument(components.length > 1);
|
||||
|
||||
Object last = components[components.length - 1];
|
||||
checkArgument(last instanceof Class<?>);
|
||||
|
||||
return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
|
||||
.add(device)
|
||||
.add(port)
|
||||
.add(Arrays.copyOfRange(components, 0, components.length - 1)), (Class<?>) last));
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,220 @@
|
||||
/*
|
||||
* Copyright 2016 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.onosproject.net.newresource;
|
||||
|
||||
import com.google.common.annotations.Beta;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import org.onosproject.net.DeviceId;
|
||||
import org.onosproject.net.PortNumber;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
/**
|
||||
* Utility class for resource related classes.
|
||||
*/
|
||||
@Beta
|
||||
public final class Resources {
|
||||
// public construction is prohibited
|
||||
private Resources() {}
|
||||
|
||||
/**
|
||||
* Create a factory for discrete-type with the specified resource ID.
|
||||
*
|
||||
* @param id resource ID
|
||||
* @return {@link DiscreteFactory}
|
||||
*/
|
||||
public static DiscreteFactory discrete(DiscreteResourceId id) {
|
||||
checkNotNull(id);
|
||||
|
||||
return new DiscreteFactory(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a factory for discrete-type with the specified parent ID and child.
|
||||
*
|
||||
* @param parent ID of the parent
|
||||
* @param child child
|
||||
* @return {@link DiscreteFactory}
|
||||
*/
|
||||
public static DiscreteFactory discrete(DiscreteResourceId parent, Object child) {
|
||||
checkNotNull(parent);
|
||||
checkNotNull(child);
|
||||
checkArgument(!(child instanceof Class<?>));
|
||||
|
||||
return new DiscreteFactory(new DiscreteResourceId(ImmutableList.builder()
|
||||
.addAll(parent.components())
|
||||
.add(child)
|
||||
.build()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for discrete-type with the specified device ID.
|
||||
*
|
||||
* @param device device ID
|
||||
* @return {@link DiscreteFactory}
|
||||
*/
|
||||
public static DiscreteFactory discrete(DeviceId device) {
|
||||
checkNotNull(device);
|
||||
|
||||
return new DiscreteFactory(new DiscreteResourceId(ImmutableList.of(device)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for discrete-type with the specified device ID and components.
|
||||
*
|
||||
* @param device device ID
|
||||
* @param components resource ID components other than the device ID
|
||||
* @return {@link DiscreteFactory}
|
||||
*/
|
||||
public static DiscreteFactory discrete(DeviceId device, Object... components) {
|
||||
checkNotNull(device);
|
||||
checkNotNull(components);
|
||||
|
||||
return new DiscreteFactory(new DiscreteResourceId(ImmutableList.builder()
|
||||
.add(device)
|
||||
.add(components)
|
||||
.build()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for discrete-type with the specified device ID, port number and components.
|
||||
*
|
||||
* @param device device ID
|
||||
* @param port port number
|
||||
* @param components resource ID components other than the device ID and port number
|
||||
* @return {@link DiscreteFactory}
|
||||
*/
|
||||
public static DiscreteFactory discrete(DeviceId device, PortNumber port, Object... components) {
|
||||
checkNotNull(device);
|
||||
checkNotNull(port);
|
||||
checkNotNull(components);
|
||||
|
||||
return new DiscreteFactory(new DiscreteResourceId(ImmutableList.builder()
|
||||
.add(device)
|
||||
.add(port)
|
||||
.add(components)
|
||||
.build()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for continuous-type with the specified resource ID.
|
||||
*
|
||||
* @param id resource ID
|
||||
* @return {@link ContinuousFactory}
|
||||
*/
|
||||
public static ContinuousFactory continuous(ContinuousResourceId id) {
|
||||
checkNotNull(id);
|
||||
|
||||
return new ContinuousFactory(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a factory for continuous-type wit the specified parent ID and child.
|
||||
*
|
||||
* @param parent ID of the parent
|
||||
* @param child child
|
||||
* @return {@link ContinuousFactory}
|
||||
*/
|
||||
public static ContinuousFactory continuous(DiscreteResourceId parent, Class<?> child) {
|
||||
checkNotNull(parent);
|
||||
checkNotNull(child);
|
||||
|
||||
return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
|
||||
.addAll(parent.components()), child));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for continuous-type with the specified device ID and type.
|
||||
*
|
||||
* @param device device ID
|
||||
* @param cls type of resource the returned factory will create
|
||||
* @return {@link ContinuousFactory}
|
||||
*/
|
||||
public static ContinuousFactory continuous(DeviceId device, Class<?> cls) {
|
||||
checkNotNull(device);
|
||||
checkNotNull(cls);
|
||||
|
||||
return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder().add(device), cls));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for continuous-type with the specified device ID and components.
|
||||
* The last element of the components must be a {@link Class} instance. Otherwise,
|
||||
* an {@link IllegalArgumentException} is thrown.
|
||||
*
|
||||
* @param device device ID
|
||||
* @param components resource ID components other than the device ID.
|
||||
* @return {@link ContinuousFactory}
|
||||
*/
|
||||
public static ContinuousFactory continuous(DeviceId device, Object... components) {
|
||||
checkNotNull(device);
|
||||
checkNotNull(components);
|
||||
checkArgument(components.length > 1);
|
||||
|
||||
Object last = components[components.length - 1];
|
||||
checkArgument(last instanceof Class<?>);
|
||||
|
||||
return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
|
||||
.add(device)
|
||||
.add(Arrays.copyOfRange(components, 0, components.length - 1)), (Class<?>) last));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for continuous-type with the specified device ID, port number and type.
|
||||
*
|
||||
* @param device device ID
|
||||
* @param port port number
|
||||
* @param cls type of resource the returned factory will create
|
||||
* @return {@link ContinuousFactory}
|
||||
*/
|
||||
public static ContinuousFactory continuous(DeviceId device, PortNumber port, Class<?> cls) {
|
||||
checkNotNull(device);
|
||||
checkNotNull(port);
|
||||
checkNotNull(cls);
|
||||
|
||||
return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
|
||||
.add(device)
|
||||
.add(port), cls));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a factory for continuous-type with the specified device ID and components.
|
||||
* The last element of the components must be a {@link Class} instance. Otherwise,
|
||||
* an {@link IllegalArgumentException} is thrown.
|
||||
*
|
||||
* @param device device ID
|
||||
* @param port port number
|
||||
* @param components resource ID components other than the device ID and port number.
|
||||
* @return {@link ContinuousFactory}
|
||||
*/
|
||||
public static ContinuousFactory continuous(DeviceId device, PortNumber port, Object... components) {
|
||||
checkNotNull(device);
|
||||
checkNotNull(port);
|
||||
checkNotNull(components);
|
||||
checkArgument(components.length > 1);
|
||||
|
||||
Object last = components[components.length - 1];
|
||||
checkArgument(last instanceof Class<?>);
|
||||
|
||||
return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
|
||||
.add(device)
|
||||
.add(port)
|
||||
.add(Arrays.copyOfRange(components, 0, components.length - 1)), (Class<?>) last));
|
||||
}
|
||||
}
|
@ -32,9 +32,9 @@ public class ResourceAllocationTest {
|
||||
|
||||
@Test
|
||||
public void testEquals() {
|
||||
ResourceAllocation alloc1 = new ResourceAllocation(Resource.discrete(D1, P1, VLAN1).resource(), IID1);
|
||||
ResourceAllocation sameAsAlloc1 = new ResourceAllocation(Resource.discrete(D1, P1, VLAN1).resource(), IID1);
|
||||
ResourceAllocation alloc2 = new ResourceAllocation(Resource.discrete(D2, P1, VLAN1).resource(), IID1);
|
||||
ResourceAllocation alloc1 = new ResourceAllocation(Resources.discrete(D1, P1, VLAN1).resource(), IID1);
|
||||
ResourceAllocation sameAsAlloc1 = new ResourceAllocation(Resources.discrete(D1, P1, VLAN1).resource(), IID1);
|
||||
ResourceAllocation alloc2 = new ResourceAllocation(Resources.discrete(D2, P1, VLAN1).resource(), IID1);
|
||||
|
||||
new EqualsTester()
|
||||
.addEqualityGroup(alloc1, sameAsAlloc1)
|
||||
|
@ -32,20 +32,20 @@ public class ResourceIdTest {
|
||||
|
||||
@Test
|
||||
public void testDiscreteToString() {
|
||||
ResourceId resource = Resource.discrete(D1, P1).id();
|
||||
ResourceId resource = Resources.discrete(D1, P1).id();
|
||||
|
||||
assertThat(resource.toString(), is(Arrays.asList(D1, P1).toString()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testContinuousToString() {
|
||||
ResourceId resource = Resource.continuous(D1, P1, Bandwidth.class).id();
|
||||
ResourceId resource = Resources.continuous(D1, P1, Bandwidth.class).id();
|
||||
|
||||
assertThat(resource.toString(), is(Arrays.asList(D1, P1, Bandwidth.class.getSimpleName()).toString()));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testInitWithNonClassInstance() {
|
||||
Resource.continuous(D1, P1, BW1).id();
|
||||
Resources.continuous(D1, P1, BW1).id();
|
||||
}
|
||||
}
|
||||
|
@ -39,11 +39,11 @@ public class ResourceTest {
|
||||
|
||||
@Test
|
||||
public void testEquals() {
|
||||
Resource resource1 = Resource.discrete(D1, P1, VLAN1).resource();
|
||||
Resource sameAsResource1 = Resource.discrete(D1, P1, VLAN1).resource();
|
||||
Resource resource2 = Resource.discrete(D2, P1, VLAN1).resource();
|
||||
Resource resource3 = Resource.continuous(D1, P1, Bandwidth.class).resource(BW1.bps());
|
||||
Resource sameAsResource3 = Resource.continuous(D1, P1, Bandwidth.class).resource(BW1.bps());
|
||||
Resource resource1 = Resources.discrete(D1, P1, VLAN1).resource();
|
||||
Resource sameAsResource1 = Resources.discrete(D1, P1, VLAN1).resource();
|
||||
Resource resource2 = Resources.discrete(D2, P1, VLAN1).resource();
|
||||
Resource resource3 = Resources.continuous(D1, P1, Bandwidth.class).resource(BW1.bps());
|
||||
Resource sameAsResource3 = Resources.continuous(D1, P1, Bandwidth.class).resource(BW1.bps());
|
||||
|
||||
new EqualsTester()
|
||||
.addEqualityGroup(resource1, sameAsResource1)
|
||||
@ -54,19 +54,19 @@ public class ResourceTest {
|
||||
|
||||
@Test
|
||||
public void testComponents() {
|
||||
Resource port = Resource.discrete(D1, P1).resource();
|
||||
Resource port = Resources.discrete(D1, P1).resource();
|
||||
|
||||
assertThat(port.components(), contains(D1, P1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIdEquality() {
|
||||
ResourceId id1 = Resource.discrete(D1, P1, VLAN1).id();
|
||||
ResourceId sameAsId1 = Resource.discrete(D1, P1, VLAN1).id();
|
||||
ResourceId id2 = Resource.discrete(D2, P1, VLAN1).id();
|
||||
ResourceId id3 = Resource.continuous(D1, P1, Bandwidth.class).resource(BW1.bps()).id();
|
||||
ResourceId id1 = Resources.discrete(D1, P1, VLAN1).id();
|
||||
ResourceId sameAsId1 = Resources.discrete(D1, P1, VLAN1).id();
|
||||
ResourceId id2 = Resources.discrete(D2, P1, VLAN1).id();
|
||||
ResourceId id3 = Resources.continuous(D1, P1, Bandwidth.class).resource(BW1.bps()).id();
|
||||
// intentionally set a different value
|
||||
ResourceId sameAsId3 = Resource.continuous(D1, P1, Bandwidth.class).resource(BW2.bps()).id();
|
||||
ResourceId sameAsId3 = Resources.continuous(D1, P1, Bandwidth.class).resource(BW2.bps()).id();
|
||||
|
||||
new EqualsTester()
|
||||
.addEqualityGroup(id1, sameAsId1)
|
||||
@ -76,30 +76,30 @@ public class ResourceTest {
|
||||
|
||||
@Test
|
||||
public void testChild() {
|
||||
Resource r1 = Resource.discrete(D1).resource().child(P1);
|
||||
Resource sameAsR2 = Resource.discrete(D1, P1).resource();
|
||||
Resource r1 = Resources.discrete(D1).resource().child(P1);
|
||||
Resource sameAsR2 = Resources.discrete(D1, P1).resource();
|
||||
|
||||
assertThat(r1, is(sameAsR2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testThereIsParent() {
|
||||
Resource resource = Resource.discrete(D1, P1, VLAN1).resource();
|
||||
Resource parent = Resource.discrete(D1, P1).resource();
|
||||
Resource resource = Resources.discrete(D1, P1, VLAN1).resource();
|
||||
Resource parent = Resources.discrete(D1, P1).resource();
|
||||
|
||||
assertThat(resource.parent(), is(Optional.of(parent)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoParent() {
|
||||
Resource resource = Resource.discrete(D1).resource();
|
||||
Resource resource = Resources.discrete(D1).resource();
|
||||
|
||||
assertThat(resource.parent(), is(Optional.of(Resource.ROOT)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBase() {
|
||||
Resource resource = Resource.discrete(D1).resource();
|
||||
Resource resource = Resources.discrete(D1).resource();
|
||||
|
||||
DeviceId child = (DeviceId) resource.last();
|
||||
assertThat(child, is(D1));
|
||||
@ -107,7 +107,7 @@ public class ResourceTest {
|
||||
|
||||
@Test
|
||||
public void testVolumeOfDiscrete() {
|
||||
Resource resource = Resource.discrete(D1).resource();
|
||||
Resource resource = Resources.discrete(D1).resource();
|
||||
|
||||
DeviceId volume = resource.volume();
|
||||
assertThat(volume, is(D1));
|
||||
@ -115,7 +115,7 @@ public class ResourceTest {
|
||||
|
||||
@Test
|
||||
public void testVolumeOfContinuous() {
|
||||
Resource resource = Resource.continuous(D1, P1, Bandwidth.class).resource(BW1.bps());
|
||||
Resource resource = Resources.continuous(D1, P1, Bandwidth.class).resource(BW1.bps());
|
||||
|
||||
double volume = resource.volume();
|
||||
assertThat(volume, is(BW1.bps()));
|
||||
|
@ -51,6 +51,7 @@ import org.onosproject.net.intent.IntentExtensionService;
|
||||
import org.onosproject.net.intent.MplsPathIntent;
|
||||
import org.onosproject.net.newresource.Resource;
|
||||
import org.onosproject.net.newresource.ResourceService;
|
||||
import org.onosproject.net.newresource.Resources;
|
||||
import org.onosproject.net.resource.link.LinkResourceAllocations;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
@ -125,9 +126,9 @@ public class MplsPathIntentCompiler implements IntentCompiler<MplsPathIntent> {
|
||||
// TODO: introduce the concept of Tx and Rx resources of a port
|
||||
Set<Resource> resources = labels.entrySet().stream()
|
||||
.flatMap(x -> Stream.of(
|
||||
Resource.discrete(x.getKey().src().deviceId(), x.getKey().src().port(), x.getValue())
|
||||
Resources.discrete(x.getKey().src().deviceId(), x.getKey().src().port(), x.getValue())
|
||||
.resource(),
|
||||
Resource.discrete(x.getKey().dst().deviceId(), x.getKey().dst().port(), x.getValue())
|
||||
Resources.discrete(x.getKey().dst().deviceId(), x.getKey().dst().port(), x.getValue())
|
||||
.resource()
|
||||
))
|
||||
.collect(Collectors.toSet());
|
||||
@ -156,7 +157,7 @@ public class MplsPathIntentCompiler implements IntentCompiler<MplsPathIntent> {
|
||||
}
|
||||
|
||||
private Set<MplsLabel> findMplsLabel(ConnectPoint cp) {
|
||||
return resourceService.getAvailableResources(Resource.discrete(cp.deviceId(), cp.port()).resource()).stream()
|
||||
return resourceService.getAvailableResources(Resources.discrete(cp.deviceId(), cp.port()).resource()).stream()
|
||||
.filter(x -> x.last() instanceof MplsLabel)
|
||||
.map(x -> (MplsLabel) x.last())
|
||||
.collect(Collectors.toSet());
|
||||
|
@ -52,6 +52,7 @@ import org.onosproject.net.intent.impl.IntentCompilationException;
|
||||
import org.onosproject.net.newresource.ResourceAllocation;
|
||||
import org.onosproject.net.newresource.Resource;
|
||||
import org.onosproject.net.newresource.ResourceService;
|
||||
import org.onosproject.net.newresource.Resources;
|
||||
import org.onosproject.net.resource.device.IntentSetMultimap;
|
||||
import org.onosproject.net.resource.link.LinkResourceAllocations;
|
||||
import org.osgi.service.component.ComponentContext;
|
||||
@ -160,8 +161,8 @@ public class OpticalCircuitIntentCompiler implements IntentCompiler<OpticalCircu
|
||||
log.debug("Compiling optical circuit intent between {} and {}", src, dst);
|
||||
|
||||
// Reserve OduClt ports
|
||||
Resource srcPortResource = Resource.discrete(src.deviceId(), src.port()).resource();
|
||||
Resource dstPortResource = Resource.discrete(dst.deviceId(), dst.port()).resource();
|
||||
Resource srcPortResource = Resources.discrete(src.deviceId(), src.port()).resource();
|
||||
Resource dstPortResource = Resources.discrete(dst.deviceId(), dst.port()).resource();
|
||||
List<ResourceAllocation> allocation = resourceService.allocate(intent.id(), srcPortResource, dstPortResource);
|
||||
if (allocation.isEmpty()) {
|
||||
throw new IntentCompilationException("Unable to reserve ports for intent " + intent);
|
||||
@ -312,7 +313,8 @@ public class OpticalCircuitIntentCompiler implements IntentCompiler<OpticalCircu
|
||||
if (ochCP != null) {
|
||||
OchPort ochPort = (OchPort) deviceService.getPort(ochCP.deviceId(), ochCP.port());
|
||||
Optional<IntentId> intentId =
|
||||
resourceService.getResourceAllocations(Resource.discrete(ochCP.deviceId(), ochCP.port()).resource())
|
||||
resourceService.getResourceAllocations(
|
||||
Resources.discrete(ochCP.deviceId(), ochCP.port()).resource())
|
||||
.stream()
|
||||
.map(ResourceAllocation::consumer)
|
||||
.filter(x -> x instanceof IntentId)
|
||||
@ -334,7 +336,7 @@ public class OpticalCircuitIntentCompiler implements IntentCompiler<OpticalCircu
|
||||
|
||||
Optional<IntentId> intentId =
|
||||
resourceService.getResourceAllocations(
|
||||
Resource.discrete(oduPort.deviceId(), port.number()).resource())
|
||||
Resources.discrete(oduPort.deviceId(), port.number()).resource())
|
||||
.stream()
|
||||
.map(ResourceAllocation::consumer)
|
||||
.filter(x -> x instanceof IntentId)
|
||||
|
@ -46,6 +46,7 @@ import org.onosproject.net.intent.impl.IntentCompilationException;
|
||||
import org.onosproject.net.newresource.ResourceAllocation;
|
||||
import org.onosproject.net.newresource.Resource;
|
||||
import org.onosproject.net.newresource.ResourceService;
|
||||
import org.onosproject.net.newresource.Resources;
|
||||
import org.onosproject.net.resource.link.LinkResourceAllocations;
|
||||
import org.onosproject.net.topology.LinkWeight;
|
||||
import org.onosproject.net.topology.Topology;
|
||||
@ -109,8 +110,8 @@ public class OpticalConnectivityIntentCompiler implements IntentCompiler<Optical
|
||||
log.debug("Compiling optical connectivity intent between {} and {}", src, dst);
|
||||
|
||||
// Reserve OCh ports
|
||||
Resource srcPortResource = Resource.discrete(src.deviceId(), src.port()).resource();
|
||||
Resource dstPortResource = Resource.discrete(dst.deviceId(), dst.port()).resource();
|
||||
Resource srcPortResource = Resources.discrete(src.deviceId(), src.port()).resource();
|
||||
Resource dstPortResource = Resources.discrete(dst.deviceId(), dst.port()).resource();
|
||||
List<ResourceAllocation> allocation = resourceService.allocate(intent.id(), srcPortResource, dstPortResource);
|
||||
if (allocation.isEmpty()) {
|
||||
throw new IntentCompilationException("Unable to reserve ports for intent " + intent);
|
||||
@ -183,8 +184,8 @@ public class OpticalConnectivityIntentCompiler implements IntentCompiler<Optical
|
||||
List<OchSignal> minLambda = findFirstLambda(lambdas, slotCount());
|
||||
List<Resource> lambdaResources = path.links().stream()
|
||||
.flatMap(x -> Stream.of(
|
||||
Resource.discrete(x.src().deviceId(), x.src().port()).resource(),
|
||||
Resource.discrete(x.dst().deviceId(), x.dst().port()).resource()
|
||||
Resources.discrete(x.src().deviceId(), x.src().port()).resource(),
|
||||
Resources.discrete(x.dst().deviceId(), x.dst().port()).resource()
|
||||
))
|
||||
.flatMap(x -> minLambda.stream().map(l -> x.child(l)))
|
||||
.collect(Collectors.toList());
|
||||
@ -213,8 +214,8 @@ public class OpticalConnectivityIntentCompiler implements IntentCompiler<Optical
|
||||
private Set<OchSignal> findCommonLambdasOverLinks(List<Link> links) {
|
||||
return links.stream()
|
||||
.flatMap(x -> Stream.of(
|
||||
Resource.discrete(x.src().deviceId(), x.src().port()).resource(),
|
||||
Resource.discrete(x.dst().deviceId(), x.dst().port()).resource()
|
||||
Resources.discrete(x.src().deviceId(), x.src().port()).resource(),
|
||||
Resources.discrete(x.dst().deviceId(), x.dst().port()).resource()
|
||||
))
|
||||
.map(resourceService::getAvailableResources)
|
||||
.map(x -> Iterables.filter(x, r -> r.last() instanceof OchSignal))
|
||||
|
@ -46,6 +46,7 @@ import org.onosproject.net.intent.constraint.EncapsulationConstraint;
|
||||
import org.onosproject.net.intent.impl.IntentCompilationException;
|
||||
import org.onosproject.net.newresource.Resource;
|
||||
import org.onosproject.net.newresource.ResourceService;
|
||||
import org.onosproject.net.newresource.Resources;
|
||||
import org.onosproject.net.resource.link.LinkResourceAllocations;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
@ -252,9 +253,9 @@ public class PathIntentCompiler implements IntentCompiler<PathIntent> {
|
||||
//same VLANID is used for both directions
|
||||
Set<Resource> resources = vlanIds.entrySet().stream()
|
||||
.flatMap(x -> Stream.of(
|
||||
Resource.discrete(x.getKey().src().deviceId(), x.getKey().src().port(), x.getValue())
|
||||
Resources.discrete(x.getKey().src().deviceId(), x.getKey().src().port(), x.getValue())
|
||||
.resource(),
|
||||
Resource.discrete(x.getKey().dst().deviceId(), x.getKey().dst().port(), x.getValue())
|
||||
Resources.discrete(x.getKey().dst().deviceId(), x.getKey().dst().port(), x.getValue())
|
||||
.resource()
|
||||
))
|
||||
.collect(Collectors.toSet());
|
||||
@ -282,7 +283,7 @@ public class PathIntentCompiler implements IntentCompiler<PathIntent> {
|
||||
}
|
||||
|
||||
private Set<VlanId> findVlanId(ConnectPoint cp) {
|
||||
return resourceService.getAvailableResources(Resource.discrete(cp.deviceId(), cp.port()).resource()).stream()
|
||||
return resourceService.getAvailableResources(Resources.discrete(cp.deviceId(), cp.port()).resource()).stream()
|
||||
.filter(x -> x.last() instanceof VlanId)
|
||||
.map(x -> (VlanId) x.last())
|
||||
.collect(Collectors.toSet());
|
||||
|
@ -40,6 +40,7 @@ import org.onosproject.net.driver.DriverService;
|
||||
import org.onosproject.net.newresource.ResourceAdminService;
|
||||
import org.onosproject.net.newresource.BandwidthCapacity;
|
||||
import org.onosproject.net.newresource.Resource;
|
||||
import org.onosproject.net.newresource.Resources;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@ -118,15 +119,15 @@ final class ResourceDeviceListener implements DeviceListener {
|
||||
}
|
||||
|
||||
private void registerDeviceResource(Device device) {
|
||||
executor.submit(() -> adminService.registerResources(Resource.discrete(device.id()).resource()));
|
||||
executor.submit(() -> adminService.registerResources(Resources.discrete(device.id()).resource()));
|
||||
}
|
||||
|
||||
private void unregisterDeviceResource(Device device) {
|
||||
executor.submit(() -> adminService.unregisterResources(Resource.discrete(device.id()).resource()));
|
||||
executor.submit(() -> adminService.unregisterResources(Resources.discrete(device.id()).resource()));
|
||||
}
|
||||
|
||||
private void registerPortResource(Device device, Port port) {
|
||||
Resource portPath = Resource.discrete(device.id(), port.number()).resource();
|
||||
Resource portPath = Resources.discrete(device.id(), port.number()).resource();
|
||||
executor.submit(() -> {
|
||||
adminService.registerResources(portPath);
|
||||
|
||||
@ -174,7 +175,7 @@ final class ResourceDeviceListener implements DeviceListener {
|
||||
}
|
||||
|
||||
private void unregisterPortResource(Device device, Port port) {
|
||||
Resource resource = Resource.discrete(device.id(), port.number()).resource();
|
||||
Resource resource = Resources.discrete(device.id(), port.number()).resource();
|
||||
executor.submit(() -> adminService.unregisterResources(resource));
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,6 @@ package org.onosproject.net.newresource.impl;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static org.onosproject.net.newresource.Resource.continuous;
|
||||
import static org.slf4j.LoggerFactory.getLogger;
|
||||
|
||||
import java.util.Set;
|
||||
@ -30,6 +29,7 @@ import org.onosproject.net.config.NetworkConfigListener;
|
||||
import org.onosproject.net.config.NetworkConfigService;
|
||||
import org.onosproject.net.newresource.BandwidthCapacity;
|
||||
import org.onosproject.net.newresource.ResourceAdminService;
|
||||
import org.onosproject.net.newresource.Resources;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import com.google.common.annotations.Beta;
|
||||
@ -93,8 +93,8 @@ final class ResourceNetworkConfigListener implements NetworkConfigListener {
|
||||
|
||||
switch (event.type()) {
|
||||
case CONFIG_ADDED:
|
||||
if (!adminService.registerResources(continuous(cp.deviceId(),
|
||||
cp.port(), Bandwidth.class)
|
||||
if (!adminService.registerResources(Resources.continuous(cp.deviceId(),
|
||||
cp.port(), Bandwidth.class)
|
||||
.resource(bwCapacity.capacity().bps()))) {
|
||||
log.info("Failed to register Bandwidth for {}, attempting update", cp);
|
||||
|
||||
@ -115,9 +115,9 @@ final class ResourceNetworkConfigListener implements NetworkConfigListener {
|
||||
|
||||
case CONFIG_REMOVED:
|
||||
// FIXME Following should be an update to the value based on port speed
|
||||
if (!adminService.unregisterResources(continuous(cp.deviceId(),
|
||||
cp.port(),
|
||||
Bandwidth.class).resource(0))) {
|
||||
if (!adminService.unregisterResources(Resources.continuous(cp.deviceId(),
|
||||
cp.port(),
|
||||
Bandwidth.class).resource(0))) {
|
||||
log.warn("Failed to unregister Bandwidth for {}", cp);
|
||||
}
|
||||
break;
|
||||
@ -147,12 +147,13 @@ final class ResourceNetworkConfigListener implements NetworkConfigListener {
|
||||
// but both unregisterResources(..) and registerResources(..)
|
||||
// returns true (success)
|
||||
|
||||
if (!adminService.unregisterResources(continuous(cp.deviceId(), cp.port(), Bandwidth.class).resource(0))) {
|
||||
if (!adminService.unregisterResources(
|
||||
Resources.continuous(cp.deviceId(), cp.port(), Bandwidth.class).resource(0))) {
|
||||
log.warn("unregisterResources for {} failed", cp);
|
||||
}
|
||||
return adminService.registerResources(continuous(cp.deviceId(),
|
||||
cp.port(),
|
||||
Bandwidth.class).resource(bwCapacity.capacity().bps()));
|
||||
return adminService.registerResources(Resources.continuous(cp.deviceId(),
|
||||
cp.port(),
|
||||
Bandwidth.class).resource(bwCapacity.capacity().bps()));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ import org.onosproject.net.intent.MockIdGenerator;
|
||||
import org.onosproject.net.link.LinkEvent;
|
||||
import org.onosproject.net.newresource.ResourceEvent;
|
||||
import org.onosproject.net.newresource.ResourceListener;
|
||||
import org.onosproject.net.newresource.Resource;
|
||||
import org.onosproject.net.newresource.Resources;
|
||||
import org.onosproject.net.topology.Topology;
|
||||
import org.onosproject.net.topology.TopologyEvent;
|
||||
import org.onosproject.net.topology.TopologyListener;
|
||||
@ -232,7 +232,7 @@ public class ObjectiveTrackerTest {
|
||||
@Test
|
||||
public void testResourceEvent() throws Exception {
|
||||
ResourceEvent event = new ResourceEvent(RESOURCE_ADDED,
|
||||
Resource.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource());
|
||||
Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource());
|
||||
resourceListener.event(event);
|
||||
|
||||
assertThat(
|
||||
|
@ -62,7 +62,7 @@ import org.onosproject.net.flow.FlowId;
|
||||
import org.onosproject.net.flow.FlowRule;
|
||||
import org.onosproject.net.flow.FlowRuleBatchEntry;
|
||||
import org.onosproject.net.intent.IntentId;
|
||||
import org.onosproject.net.newresource.Resource;
|
||||
import org.onosproject.net.newresource.Resources;
|
||||
import org.onosproject.net.provider.ProviderId;
|
||||
import org.onosproject.net.resource.link.BandwidthResource;
|
||||
import org.onosproject.net.resource.link.BandwidthResourceAllocation;
|
||||
@ -388,18 +388,18 @@ public class KryoSerializerTest {
|
||||
|
||||
@Test
|
||||
public void testResource() {
|
||||
testSerializedEquals(Resource.discrete(DID1, P1, VLAN1).resource());
|
||||
testSerializedEquals(Resources.discrete(DID1, P1, VLAN1).resource());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResourceId() {
|
||||
testSerializedEquals(Resource.discrete(DID1, P1).id());
|
||||
testSerializedEquals(Resources.discrete(DID1, P1).id());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResourceAllocation() {
|
||||
testSerializedEquals(new org.onosproject.net.newresource.ResourceAllocation(
|
||||
Resource.discrete(DID1, P1, VLAN1).resource(),
|
||||
Resources.discrete(DID1, P1, VLAN1).resource(),
|
||||
IntentId.valueOf(30)));
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user