added treatment support and conversion to an instruction
moved to meter api to onos-api
Change-Id: I0504f06fdc503953fa7696224d97edda43596d6e
diff --git a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
index 06c49ba..2dad08b 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
@@ -28,6 +28,7 @@
import org.onosproject.net.PortNumber;
import org.onosproject.net.flow.instructions.Instruction;
import org.onosproject.net.flow.instructions.Instructions;
+import org.onosproject.net.meter.MeterId;
import java.util.Collections;
import java.util.List;
@@ -50,6 +51,7 @@
private static final DefaultTrafficTreatment EMPTY
= new DefaultTrafficTreatment(Collections.emptyList());
+ private final Instructions.MeterInstruction meter;
/**
* Creates a new traffic treatment from the specified list of instructions.
@@ -63,6 +65,7 @@
this.hasClear = false;
this.table = null;
this.meta = null;
+ this.meter = null;
}
/**
@@ -77,7 +80,8 @@
List<Instruction> immediate,
Instructions.TableTypeTransition table,
boolean clear,
- Instructions.MetadataInstruction meta) {
+ Instructions.MetadataInstruction meta,
+ Instructions.MeterInstruction meter) {
this.immediate = ImmutableList.copyOf(checkNotNull(immediate));
this.deferred = ImmutableList.copyOf(checkNotNull(deferred));
this.all = new ImmutableList.Builder<Instruction>()
@@ -87,6 +91,7 @@
this.table = table;
this.meta = meta;
this.hasClear = clear;
+ this.meter = meter;
}
@Override
@@ -119,6 +124,11 @@
return meta;
}
+ @Override
+ public Instructions.MeterInstruction metered() {
+ return meter;
+ }
+
/**
* Returns a new traffic treatment builder.
*
@@ -193,12 +203,16 @@
Instructions.MetadataInstruction meta;
+ Instructions.MeterInstruction meter;
+
List<Instruction> deferred = Lists.newLinkedList();
List<Instruction> immediate = Lists.newLinkedList();
List<Instruction> current = immediate;
+
+
// Creates a new builder
private Builder() {
}
@@ -233,6 +247,8 @@
case METADATA:
meta = (Instructions.MetadataInstruction) instruction;
break;
+ case METER:
+ meter = (Instructions.MeterInstruction) instruction;
default:
throw new IllegalArgumentException("Unknown instruction type: " +
instruction.type());
@@ -343,6 +359,11 @@
}
@Override
+ public TrafficTreatment.Builder meter(MeterId meterId) {
+ return add(Instructions.meterTraffic(meterId));
+ }
+
+ @Override
public Builder popVlan() {
return add(Instructions.popVlan());
}
@@ -420,7 +441,7 @@
// && table == null && !clear) {
// drop();
//}
- return new DefaultTrafficTreatment(deferred, immediate, table, clear, meta);
+ return new DefaultTrafficTreatment(deferred, immediate, table, clear, meta, meter);
}
}
diff --git a/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java b/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
index d125a9f..042aeaf 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
@@ -24,6 +24,7 @@
import org.onosproject.net.PortNumber;
import org.onosproject.net.flow.instructions.Instruction;
import org.onosproject.net.flow.instructions.Instructions;
+import org.onosproject.net.meter.MeterId;
import java.util.List;
@@ -75,6 +76,13 @@
Instructions.MetadataInstruction writeMetadata();
/**
+ * Returns the meter instruction if there is one.
+ *
+ * @return a meter instruction that may be null
+ */
+ Instructions.MeterInstruction metered();
+
+ /**
* Builder of traffic treatment entities.
*/
interface Builder {
@@ -243,6 +251,13 @@
*/
Builder group(GroupId groupId);
+ /**
+ * Sets a meter to be used by this flow.
+ *
+ * @param meterId a meter id
+ * @return a treatment builder
+ */
+ Builder meter(MeterId meterId);
/**
* Sets the next table type to transition to.
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instruction.java
index 7496e97..6f2cac6 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instruction.java
@@ -40,6 +40,11 @@
GROUP,
/**
+ * Signifies that traffic should be metered according to a meter.
+ */
+ METER,
+
+ /**
* Signifies that the traffic should be modified in L0 way.
*/
L0MODIFICATION,
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
index 3cacfa5..cd9ec96 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
@@ -34,6 +34,7 @@
import org.onosproject.net.flow.instructions.L3ModificationInstruction.ModTtlInstruction;
import org.onosproject.net.flow.instructions.L4ModificationInstruction.L4SubType;
import org.onosproject.net.flow.instructions.L4ModificationInstruction.ModTransportPortInstruction;
+import org.onosproject.net.meter.MeterId;
import java.util.Objects;
@@ -81,6 +82,11 @@
return new GroupInstruction(groupId);
}
+ public static MeterInstruction meterTraffic(final MeterId meterId) {
+ checkNotNull(meterId, "meter id cannot be null");
+ return new MeterInstruction(meterId);
+ }
+
/**
* Creates a l0 modification.
*
@@ -528,6 +534,50 @@
}
/**
+ * A meter instruction.
+ */
+ public static final class MeterInstruction implements Instruction {
+ private final MeterId meterId;
+
+ private MeterInstruction(MeterId meterId) {
+ this.meterId = meterId;
+ }
+
+ public MeterId meterId() {
+ return meterId;
+ }
+
+ @Override
+ public Type type() {
+ return Type.METER;
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(type().toString())
+ .add("meter ID", meterId.id()).toString();
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(type().ordinal(), meterId);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof MeterInstruction) {
+ MeterInstruction that = (MeterInstruction) obj;
+ return Objects.equals(meterId, that.meterId);
+
+ }
+ return false;
+ }
+ }
+
+ /**
* Transition instruction.
*/
public static class TableTypeTransition implements Instruction {
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/Band.java b/core/api/src/main/java/org/onosproject/net/meter/Band.java
similarity index 98%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/Band.java
rename to core/api/src/main/java/org/onosproject/net/meter/Band.java
index 1342a22..2bfafad 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/Band.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/Band.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
/**
* Represents a band used within a meter.
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/BandEntry.java b/core/api/src/main/java/org/onosproject/net/meter/BandEntry.java
similarity index 95%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/BandEntry.java
rename to core/api/src/main/java/org/onosproject/net/meter/BandEntry.java
index 369e1cc..03145e9 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/BandEntry.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/BandEntry.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
/**
* Represents a stored band.
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/DefaultBand.java b/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java
similarity index 98%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/DefaultBand.java
rename to core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java
index 669dc0d..a3a4fc2 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/DefaultBand.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import static com.google.common.base.Preconditions.checkArgument;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/DefaultMeter.java b/core/api/src/main/java/org/onosproject/net/meter/DefaultMeter.java
similarity index 98%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/DefaultMeter.java
rename to core/api/src/main/java/org/onosproject/net/meter/DefaultMeter.java
index 177688c..611a23e 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/DefaultMeter.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/DefaultMeter.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import org.onosproject.core.ApplicationId;
import org.onosproject.net.DeviceId;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/Meter.java b/core/api/src/main/java/org/onosproject/net/meter/Meter.java
similarity index 98%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/Meter.java
rename to core/api/src/main/java/org/onosproject/net/meter/Meter.java
index 37c1105..5181c92 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/Meter.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/Meter.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import org.onosproject.core.ApplicationId;
import org.onosproject.net.DeviceId;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterContext.java b/core/api/src/main/java/org/onosproject/net/meter/MeterContext.java
similarity index 95%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterContext.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterContext.java
index b112b9a..005c41c 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterContext.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterContext.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
/**
* A context permitting the application to be notified when the
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterEntry.java b/core/api/src/main/java/org/onosproject/net/meter/MeterEntry.java
similarity index 96%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterEntry.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterEntry.java
index 6157578..178a564 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterEntry.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterEntry.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
/**
* Represents a stored meter.
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterEvent.java b/core/api/src/main/java/org/onosproject/net/meter/MeterEvent.java
similarity index 96%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterEvent.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterEvent.java
index 808a3e8..72f0a53 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterEvent.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterEvent.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import org.onosproject.event.AbstractEvent;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterFailReason.java b/core/api/src/main/java/org/onosproject/net/meter/MeterFailReason.java
similarity index 96%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterFailReason.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterFailReason.java
index d98e44a..8683e2a 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterFailReason.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterFailReason.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
/**
* Enum used to represent a meter failure condition.
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterId.java b/core/api/src/main/java/org/onosproject/net/meter/MeterId.java
similarity index 97%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterId.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterId.java
index 8619e14..f479ac5 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterId.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterId.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import static com.google.common.base.Preconditions.checkArgument;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterListener.java b/core/api/src/main/java/org/onosproject/net/meter/MeterListener.java
similarity index 94%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterListener.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterListener.java
index 1cb667a..0a5e203 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterListener.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterListener.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import org.onosproject.event.EventListener;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterOperation.java b/core/api/src/main/java/org/onosproject/net/meter/MeterOperation.java
similarity index 97%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterOperation.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterOperation.java
index 8354888..50e6fe9 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterOperation.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterOperation.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import com.google.common.base.MoreObjects;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterOperations.java b/core/api/src/main/java/org/onosproject/net/meter/MeterOperations.java
similarity index 96%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterOperations.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterOperations.java
index 8dbad89..92b0c3a 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterOperations.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterOperations.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import com.google.common.collect.ImmutableList;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterProvider.java b/core/api/src/main/java/org/onosproject/net/meter/MeterProvider.java
similarity index 96%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterProvider.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterProvider.java
index d8a743c1..4655e23 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterProvider.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterProvider.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import org.onosproject.net.DeviceId;
import org.onosproject.net.provider.Provider;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterProviderRegistry.java b/core/api/src/main/java/org/onosproject/net/meter/MeterProviderRegistry.java
similarity index 94%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterProviderRegistry.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterProviderRegistry.java
index b20e918..019ca19 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterProviderRegistry.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterProviderRegistry.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import org.onosproject.net.provider.ProviderRegistry;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterProviderService.java b/core/api/src/main/java/org/onosproject/net/meter/MeterProviderService.java
similarity index 96%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterProviderService.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterProviderService.java
index c1dd30cb1..85c0c43 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterProviderService.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterProviderService.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import org.onosproject.net.DeviceId;
import org.onosproject.net.provider.ProviderService;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterService.java b/core/api/src/main/java/org/onosproject/net/meter/MeterService.java
similarity index 96%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterService.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterService.java
index c7eb93a..eaa2a50 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterService.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterService.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import org.onosproject.event.ListenerService;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterState.java b/core/api/src/main/java/org/onosproject/net/meter/MeterState.java
similarity index 95%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterState.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterState.java
index a910d6d..3b93609 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterState.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterState.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
/**
* Represents the state of the meter as seen by the store.
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterStore.java b/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
similarity index 97%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterStore.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
index 54e5658..c5d57d5 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterStore.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import org.onosproject.store.Store;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterStoreDelegate.java b/core/api/src/main/java/org/onosproject/net/meter/MeterStoreDelegate.java
similarity index 94%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterStoreDelegate.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterStoreDelegate.java
index facb453..9bfeb42 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterStoreDelegate.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterStoreDelegate.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import org.onosproject.store.StoreDelegate;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterStoreResult.java b/core/api/src/main/java/org/onosproject/net/meter/MeterStoreResult.java
similarity index 96%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterStoreResult.java
rename to core/api/src/main/java/org/onosproject/net/meter/MeterStoreResult.java
index 8ad5aa6..7a26746 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/MeterStoreResult.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterStoreResult.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.incubator.net.meter;
+package org.onosproject.net.meter;
import java.util.Optional;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/package-info.java b/core/api/src/main/java/org/onosproject/net/meter/package-info.java
similarity index 93%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/meter/package-info.java
rename to core/api/src/main/java/org/onosproject/net/meter/package-info.java
index b1cb85e..258634d 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/meter/package-info.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/package-info.java
@@ -17,4 +17,4 @@
/**
* Flow meter model and related services.
*/
-package org.onosproject.incubator.net.meter;
\ No newline at end of file
+package org.onosproject.net.meter;
\ No newline at end of file
diff --git a/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java b/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java
index 550406f..ac4ecff 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java
@@ -124,6 +124,11 @@
public MetadataInstruction writeMetadata() {
return null;
}
+
+ @Override
+ public Instructions.MeterInstruction metered() {
+ return null;
+ }
}
/**
diff --git a/core/net/src/test/java/org/onosproject/net/flow/impl/FlowRuleManagerTest.java b/core/net/src/test/java/org/onosproject/net/flow/impl/FlowRuleManagerTest.java
index afd9a90..7ef8762 100644
--- a/core/net/src/test/java/org/onosproject/net/flow/impl/FlowRuleManagerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/flow/impl/FlowRuleManagerTest.java
@@ -610,6 +610,11 @@
return null;
}
+ @Override
+ public Instructions.MeterInstruction metered() {
+ return null;
+ }
+
}
public class TestApplicationId extends DefaultApplicationId {
diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
index 212d4a0..556038a 100644
--- a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
@@ -160,6 +160,7 @@
import org.onosproject.net.intent.constraint.PartialFailureConstraint;
import org.onosproject.net.intent.constraint.WaypointConstraint;
import org.onosproject.net.link.DefaultLinkDescription;
+import org.onosproject.net.meter.MeterId;
import org.onosproject.net.newresource.ResourceAllocation;
import org.onosproject.net.newresource.ResourcePath;
import org.onosproject.net.packet.DefaultOutboundPacket;
@@ -271,6 +272,8 @@
.register(MISC)
.nextId(KryoNamespace.INITIAL_ID + 30 + 10)
.register(
+ Instructions.MeterInstruction.class,
+ MeterId.class,
Version.class,
ControllerNode.State.class,
ApplicationState.class,
diff --git a/incubator/net/src/main/java/org/onosproject/incubator/net/meter/impl/MeterManager.java b/incubator/net/src/main/java/org/onosproject/incubator/net/meter/impl/MeterManager.java
index 47450c7..a0c1dfc 100644
--- a/incubator/net/src/main/java/org/onosproject/incubator/net/meter/impl/MeterManager.java
+++ b/incubator/net/src/main/java/org/onosproject/incubator/net/meter/impl/MeterManager.java
@@ -22,21 +22,21 @@
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.Service;
import org.onlab.util.TriConsumer;
-import org.onosproject.incubator.net.meter.DefaultMeter;
-import org.onosproject.incubator.net.meter.Meter;
-import org.onosproject.incubator.net.meter.MeterEvent;
-import org.onosproject.incubator.net.meter.MeterFailReason;
-import org.onosproject.incubator.net.meter.MeterId;
-import org.onosproject.incubator.net.meter.MeterListener;
-import org.onosproject.incubator.net.meter.MeterOperation;
-import org.onosproject.incubator.net.meter.MeterProvider;
-import org.onosproject.incubator.net.meter.MeterProviderRegistry;
-import org.onosproject.incubator.net.meter.MeterProviderService;
-import org.onosproject.incubator.net.meter.MeterService;
-import org.onosproject.incubator.net.meter.MeterState;
-import org.onosproject.incubator.net.meter.MeterStore;
-import org.onosproject.incubator.net.meter.MeterStoreDelegate;
-import org.onosproject.incubator.net.meter.MeterStoreResult;
+import org.onosproject.net.meter.DefaultMeter;
+import org.onosproject.net.meter.Meter;
+import org.onosproject.net.meter.MeterEvent;
+import org.onosproject.net.meter.MeterFailReason;
+import org.onosproject.net.meter.MeterId;
+import org.onosproject.net.meter.MeterListener;
+import org.onosproject.net.meter.MeterOperation;
+import org.onosproject.net.meter.MeterProvider;
+import org.onosproject.net.meter.MeterProviderRegistry;
+import org.onosproject.net.meter.MeterProviderService;
+import org.onosproject.net.meter.MeterService;
+import org.onosproject.net.meter.MeterState;
+import org.onosproject.net.meter.MeterStore;
+import org.onosproject.net.meter.MeterStoreDelegate;
+import org.onosproject.net.meter.MeterStoreResult;
import org.onosproject.net.DeviceId;
import org.onosproject.net.provider.AbstractListenerProviderRegistry;
import org.onosproject.net.provider.AbstractProviderService;
diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStore.java b/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStore.java
index 6477e68..ed7c9bf 100644
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStore.java
+++ b/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStore.java
@@ -23,16 +23,16 @@
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.onosproject.cluster.ClusterService;
import org.onosproject.cluster.NodeId;
-import org.onosproject.incubator.net.meter.DefaultMeter;
-import org.onosproject.incubator.net.meter.Meter;
-import org.onosproject.incubator.net.meter.MeterEvent;
-import org.onosproject.incubator.net.meter.MeterFailReason;
-import org.onosproject.incubator.net.meter.MeterId;
-import org.onosproject.incubator.net.meter.MeterOperation;
-import org.onosproject.incubator.net.meter.MeterState;
-import org.onosproject.incubator.net.meter.MeterStore;
-import org.onosproject.incubator.net.meter.MeterStoreDelegate;
-import org.onosproject.incubator.net.meter.MeterStoreResult;
+import org.onosproject.net.meter.DefaultMeter;
+import org.onosproject.net.meter.Meter;
+import org.onosproject.net.meter.MeterEvent;
+import org.onosproject.net.meter.MeterFailReason;
+import org.onosproject.net.meter.MeterId;
+import org.onosproject.net.meter.MeterOperation;
+import org.onosproject.net.meter.MeterState;
+import org.onosproject.net.meter.MeterStore;
+import org.onosproject.net.meter.MeterStoreDelegate;
+import org.onosproject.net.meter.MeterStoreResult;
import org.onosproject.mastership.MastershipService;
import org.onosproject.store.AbstractStore;
import org.onosproject.store.serializers.KryoNamespaces;
diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/MeterData.java b/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/MeterData.java
index cfc1402..c72bc2e 100644
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/MeterData.java
+++ b/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/MeterData.java
@@ -16,8 +16,8 @@
package org.onosproject.incubator.store.meter.impl;
import org.onosproject.cluster.NodeId;
-import org.onosproject.incubator.net.meter.Meter;
-import org.onosproject.incubator.net.meter.MeterFailReason;
+import org.onosproject.net.meter.Meter;
+import org.onosproject.net.meter.MeterFailReason;
import java.util.Optional;
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java
index 58c19ad..483eca9 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java
@@ -161,6 +161,9 @@
if (treatment.writeMetadata() != null) {
instructions.add(buildMetadata(treatment.writeMetadata()));
}
+ if (treatment.metered() != null) {
+ instructions.add(buildMeter(treatment.metered()));
+ }
long cookie = flowRule().id().value();
@@ -263,6 +266,11 @@
return instruction;
}
+ private OFInstruction buildMeter(Instructions.MeterInstruction metered) {
+ return factory().instructions().meter(metered.meterId().id());
+ }
+
+
private OFAction buildL0Modification(Instruction i) {
L0ModificationInstruction l0m = (L0ModificationInstruction) i;
switch (l0m.subtype()) {
diff --git a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterModBuilder.java b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterModBuilder.java
index 00ad8ef..930042b 100644
--- a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterModBuilder.java
+++ b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterModBuilder.java
@@ -15,9 +15,9 @@
*/
package org.onosproject.provider.of.meter.impl;
-import org.onosproject.incubator.net.meter.Band;
-import org.onosproject.incubator.net.meter.Meter;
-import org.onosproject.incubator.net.meter.MeterId;
+import org.onosproject.net.meter.Band;
+import org.onosproject.net.meter.Meter;
+import org.onosproject.net.meter.MeterId;
import org.projectfloodlight.openflow.protocol.OFFactory;
import org.projectfloodlight.openflow.protocol.OFMeterFlags;
import org.projectfloodlight.openflow.protocol.OFMeterMod;
diff --git a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java
index e56a54c..2e1611d 100644
--- a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java
+++ b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java
@@ -28,17 +28,17 @@
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.onosproject.core.CoreService;
-import org.onosproject.incubator.net.meter.Band;
-import org.onosproject.incubator.net.meter.DefaultBand;
-import org.onosproject.incubator.net.meter.DefaultMeter;
-import org.onosproject.incubator.net.meter.Meter;
-import org.onosproject.incubator.net.meter.MeterFailReason;
-import org.onosproject.incubator.net.meter.MeterOperation;
-import org.onosproject.incubator.net.meter.MeterOperations;
-import org.onosproject.incubator.net.meter.MeterProvider;
-import org.onosproject.incubator.net.meter.MeterProviderRegistry;
-import org.onosproject.incubator.net.meter.MeterProviderService;
-import org.onosproject.incubator.net.meter.MeterState;
+import org.onosproject.net.meter.Band;
+import org.onosproject.net.meter.DefaultBand;
+import org.onosproject.net.meter.DefaultMeter;
+import org.onosproject.net.meter.Meter;
+import org.onosproject.net.meter.MeterFailReason;
+import org.onosproject.net.meter.MeterOperation;
+import org.onosproject.net.meter.MeterOperations;
+import org.onosproject.net.meter.MeterProvider;
+import org.onosproject.net.meter.MeterProviderRegistry;
+import org.onosproject.net.meter.MeterProviderService;
+import org.onosproject.net.meter.MeterState;
import org.onosproject.net.DeviceId;
import org.onosproject.net.provider.AbstractProvider;
import org.onosproject.net.provider.ProviderId;