From 460b97251bc5e0dd5fc18a94e97c13b47f5e811c Mon Sep 17 00:00:00 2001 From: Sho SHIMIZU Date: Thu, 28 Jan 2016 10:48:26 -0800 Subject: [PATCH] Move static factory methods to the utility class Change-Id: Icf458adf78f51823e4ffa31346595fa9716485bf --- .../cli/net/AllocationsCommand.java | 3 +- .../onosproject/cli/net/ResourcesCommand.java | 5 +- .../cli/net/TestAllocateResource.java | 7 +- .../net/newresource/ContinuousResource.java | 2 +- .../net/newresource/DiscreteResource.java | 6 +- .../net/newresource/DiscreteResourceId.java | 4 +- .../onosproject/net/newresource/Resource.java | 192 --------------- .../net/newresource/Resources.java | 220 ++++++++++++++++++ .../newresource/ResourceAllocationTest.java | 6 +- .../net/newresource/ResourceIdTest.java | 6 +- .../net/newresource/ResourceTest.java | 38 +-- .../impl/compiler/MplsPathIntentCompiler.java | 7 +- .../OpticalCircuitIntentCompiler.java | 10 +- .../OpticalConnectivityIntentCompiler.java | 13 +- .../impl/compiler/PathIntentCompiler.java | 7 +- .../impl/ResourceDeviceListener.java | 9 +- .../impl/ResourceNetworkConfigListener.java | 21 +- .../net/intent/impl/ObjectiveTrackerTest.java | 4 +- .../store/serializers/KryoSerializerTest.java | 8 +- 19 files changed, 302 insertions(+), 266 deletions(-) create mode 100644 core/api/src/main/java/org/onosproject/net/newresource/Resources.java diff --git a/cli/src/main/java/org/onosproject/cli/net/AllocationsCommand.java b/cli/src/main/java/org/onosproject/cli/net/AllocationsCommand.java index 715fef0ef7..4a350a9960 100644 --- a/cli/src/main/java/org/onosproject/cli/net/AllocationsCommand.java +++ b/cli/src/main/java/org/onosproject/cli/net/AllocationsCommand.java @@ -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 allocations diff --git a/cli/src/main/java/org/onosproject/cli/net/ResourcesCommand.java b/cli/src/main/java/org/onosproject/cli/net/ResourcesCommand.java index bf9201b39b..c64518c306 100644 --- a/cli/src/main/java/org/onosproject/cli/net/ResourcesCommand.java +++ b/cli/src/main/java/org/onosproject/cli/net/ResourcesCommand.java @@ -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); } diff --git a/cli/src/main/java/org/onosproject/cli/net/TestAllocateResource.java b/cli/src/main/java/org/onosproject/cli/net/TestAllocateResource.java index 8e72843882..984987f2fb 100644 --- a/cli/src/main/java/org/onosproject/cli/net/TestAllocateResource.java +++ b/cli/src/main/java/org/onosproject/cli/net/TestAllocateResource.java @@ -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 allocate = resourceService.allocate(consumer, resource); if (allocate.isPresent()) { diff --git a/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResource.java b/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResource.java index f5301f7345..431fcd8c57 100644 --- a/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResource.java +++ b/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResource.java @@ -98,7 +98,7 @@ public final class ContinuousResource implements Resource { @Override public Optional parent() { - return id.parent().map(x -> Resource.discrete(x).resource()); + return id.parent().map(x -> Resources.discrete(x).resource()); } @Override diff --git a/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResource.java b/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResource.java index f1876d508e..4ed281cae0 100644 --- a/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResource.java +++ b/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResource.java @@ -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 parent() { - return id.parent().map(x -> Resource.discrete(x).resource()); + return id.parent().map(x -> Resources.discrete(x).resource()); } @Override diff --git a/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResourceId.java b/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResourceId.java index 804dfba21b..4b83344897 100644 --- a/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResourceId.java +++ b/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResourceId.java @@ -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 diff --git a/core/api/src/main/java/org/onosproject/net/newresource/Resource.java b/core/api/src/main/java/org/onosproject/net/newresource/Resource.java index 749d87e7d5..c402b42cc7 100644 --- a/core/api/src/main/java/org/onosproject/net/newresource/Resource.java +++ b/core/api/src/main/java/org/onosproject/net/newresource/Resource.java @@ -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)); - } } diff --git a/core/api/src/main/java/org/onosproject/net/newresource/Resources.java b/core/api/src/main/java/org/onosproject/net/newresource/Resources.java new file mode 100644 index 0000000000..13b226ea1d --- /dev/null +++ b/core/api/src/main/java/org/onosproject/net/newresource/Resources.java @@ -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)); + } +} diff --git a/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java b/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java index c8c1b17244..4a5a450058 100644 --- a/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java +++ b/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java @@ -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) diff --git a/core/api/src/test/java/org/onosproject/net/newresource/ResourceIdTest.java b/core/api/src/test/java/org/onosproject/net/newresource/ResourceIdTest.java index 1d2257bcb3..aa97892446 100644 --- a/core/api/src/test/java/org/onosproject/net/newresource/ResourceIdTest.java +++ b/core/api/src/test/java/org/onosproject/net/newresource/ResourceIdTest.java @@ -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(); } } diff --git a/core/api/src/test/java/org/onosproject/net/newresource/ResourceTest.java b/core/api/src/test/java/org/onosproject/net/newresource/ResourceTest.java index a14b947785..59f327f8ac 100644 --- a/core/api/src/test/java/org/onosproject/net/newresource/ResourceTest.java +++ b/core/api/src/test/java/org/onosproject/net/newresource/ResourceTest.java @@ -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())); diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java index 511c0c25ea..c8c7e8f9e4 100644 --- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java +++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java @@ -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 { // TODO: introduce the concept of Tx and Rx resources of a port Set 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 { } private Set 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()); diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompiler.java index a08b8432aa..d2f92d5ee1 100644 --- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompiler.java +++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompiler.java @@ -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 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 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 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) diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java index 690f3c2696..2f04cfd919 100644 --- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java +++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java @@ -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 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 minLambda = findFirstLambda(lambdas, slotCount()); List 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 findCommonLambdasOverLinks(List 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)) diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java index 842e5e0257..7473ce5343 100644 --- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java +++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java @@ -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 { //same VLANID is used for both directions Set 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 { } private Set 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()); diff --git a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java index 2a85fbbbe2..64691d5e21 100644 --- a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java +++ b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java @@ -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)); } diff --git a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceNetworkConfigListener.java b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceNetworkConfigListener.java index b8d373bc2b..e98a3c3ee7 100644 --- a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceNetworkConfigListener.java +++ b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceNetworkConfigListener.java @@ -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())); } } diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java index 7c1036e7c9..eb5a4bc072 100644 --- a/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java +++ b/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java @@ -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( diff --git a/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java b/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java index 8d2d3682aa..9a0e94f791 100644 --- a/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java +++ b/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java @@ -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))); }