From: Jeffrey Pedigo Date: Fri, 3 Feb 2017 21:54:24 +0000 (-0700) Subject: Added support for RTP and UGS gate traffic profiles X-Git-Tag: release/carbon~3 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=8ae63b25741f11c30c9095f0071e0ba7c563cd2c;p=packetcable.git Added support for RTP and UGS gate traffic profiles Bug:7110 Change-Id: I073164c421cd24666d159c872b96289ae72ac62d Signed-off-by: Jeffrey Pedigo --- diff --git a/packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISFlowSpecTrafficProfile.java b/packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISFlowSpecTrafficProfile.java index 910c94a..11925b7 100644 --- a/packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISFlowSpecTrafficProfile.java +++ b/packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISFlowSpecTrafficProfile.java @@ -154,49 +154,54 @@ public class DOCSISFlowSpecTrafficProfile extends PCMMBaseObject implements ITra @Override protected byte[] getBytes() { final byte[] data = new byte[4+(4*7*3)]; + ByteBuffer buffer = ByteBuffer.wrap(data); - float fTokenBucketRate = tokenBucketRate; - float fTokenBucketSize = tokenBucketSize; - float fPeakDataRate = peakDataRate; - float fRate = rate; - // // Ok I know this looks crazy but PCMM Flow Spec encodes some values as floats // even though they do not contain fractional values, so we 'integerize' them // in the constructor and class internals // - Arrays.fill(data, (byte) 0); - data[0] = envelope; - data[1] = SERVICE_NUMBER; - data[2] = 0; // reserved - data[3] = 0; // reserved + final float fTokenBucketRate = tokenBucketRate; + final float fTokenBucketSize = tokenBucketSize; + final float fPeakDataRate = peakDataRate; + final float fRate = rate; + + buffer.put(envelope); + buffer.put(SERVICE_NUMBER); + buffer.put((byte)0); // reserved + buffer.put((byte)0); // reserved // Authorized Envelope - System.arraycopy(ByteBuffer.allocate(4).putFloat(fTokenBucketRate).array(), 0, data, 4, 4); - System.arraycopy(ByteBuffer.allocate(4).putFloat(fTokenBucketSize).array(), 0, data, 8, 4); - System.arraycopy(ByteBuffer.allocate(4).putFloat(fPeakDataRate).array(), 0, data, 12, 4); - System.arraycopy(ByteBuffer.allocate(4).putInt(minimumPolicedUnit).array(), 0, data, 16, 4); - System.arraycopy(ByteBuffer.allocate(4).putInt(maximumPacketSize).array(), 0, data, 20, 4); - System.arraycopy(ByteBuffer.allocate(4).putFloat(fRate).array(), 0, data, 24, 4); - System.arraycopy(ByteBuffer.allocate(4).putInt(slackTerm).array(), 0, data, 28, 4); + buffer.putFloat(fTokenBucketRate); + buffer.putFloat(fTokenBucketSize); + buffer.putFloat(fPeakDataRate); + buffer.putInt(minimumPolicedUnit); + buffer.putInt(maximumPacketSize); + buffer.putFloat(fRate); + buffer.putInt(slackTerm); // Reserved Envelope - System.arraycopy(ByteBuffer.allocate(4).putFloat(fTokenBucketRate).array(), 0, data, 32, 4); - System.arraycopy(ByteBuffer.allocate(4).putFloat(fTokenBucketSize).array(), 0, data, 36, 4); - System.arraycopy(ByteBuffer.allocate(4).putFloat(fPeakDataRate).array(), 0, data, 40, 4); - System.arraycopy(ByteBuffer.allocate(4).putInt(minimumPolicedUnit).array(), 0, data, 44, 4); - System.arraycopy(ByteBuffer.allocate(4).putInt(maximumPacketSize).array(), 0, data, 48, 4); - System.arraycopy(ByteBuffer.allocate(4).putFloat(fRate).array(), 0, data, 52, 4); - System.arraycopy(ByteBuffer.allocate(4).putInt(slackTerm).array(), 0, data, 56, 4); + buffer.putFloat(fTokenBucketRate); + buffer.putFloat(fTokenBucketSize); + buffer.putFloat(fPeakDataRate); + buffer.putInt(minimumPolicedUnit); + buffer.putInt(maximumPacketSize); + buffer.putFloat(fRate); + buffer.putInt(slackTerm); // Committed Envelope - System.arraycopy(ByteBuffer.allocate(4).putFloat(fTokenBucketRate).array(), 0, data, 60, 4); - System.arraycopy(ByteBuffer.allocate(4).putFloat(fTokenBucketSize).array(), 0, data, 64, 4); - System.arraycopy(ByteBuffer.allocate(4).putFloat(fPeakDataRate).array(), 0, data, 68, 4); - System.arraycopy(ByteBuffer.allocate(4).putInt(minimumPolicedUnit).array(), 0, data, 72, 4); - System.arraycopy(ByteBuffer.allocate(4).putInt(maximumPacketSize).array(), 0, data, 76, 4); - System.arraycopy(ByteBuffer.allocate(4).putFloat(fRate).array(), 0, data, 80, 4); - System.arraycopy(ByteBuffer.allocate(4).putInt(slackTerm).array(), 0, data, 84, 4); + buffer.putFloat(fTokenBucketRate); + buffer.putFloat(fTokenBucketSize); + buffer.putFloat(fPeakDataRate); + buffer.putInt(minimumPolicedUnit); + buffer.putInt(maximumPacketSize); + buffer.putFloat(fRate); + buffer.putInt(slackTerm); + + if (buffer.hasRemaining()) { + logger.error("Original buffer too large"); + } + return data; } diff --git a/packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISRTPTrafficProfile.java b/packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISRTPTrafficProfile.java new file mode 100644 index 0000000..fa67e10 --- /dev/null +++ b/packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISRTPTrafficProfile.java @@ -0,0 +1,442 @@ +/* + * Copyright (c) 2016 Applied Broadband, Inc. All Rights Reserved + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.pcmm.gates.impl; + +import org.pcmm.base.impl.PCMMBaseObject; +import org.pcmm.gates.ITrafficProfile; +import org.pcmm.utils.PCMMUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Arrays; +import java.nio.ByteBuffer; + +/** + * The DOCSIS RTP object defines the RTP Traffic Profile of a Gate. + * + */ +public class DOCSISRTPTrafficProfile extends PCMMBaseObject implements ITrafficProfile { + + private final Logger logger = LoggerFactory.getLogger(DOCSISRTPTrafficProfile.class); + public static final byte STYPE = 5; + + /** + * The envelope + */ + private final byte envelope; + private final int requestTransmissionPolicy; + private final int maximumSustainedTrafficRate; + private final int maximumTrafficBurst; + private final int minimumReservedTrafficRate; + private final int amrtrPacketSize; + private final int maximumConcatenatedBurst; + private final int nominalPollingInterval; + private final int toleratedPollJitter; + private final int upstreamPeakTrafficRate; + private final int requiredAttributeMask; + private final int forbiddenAttributeMask; + private final int attributeAggregationRuleMask; + + /** + * Constructor using the default envelope values + * @param requestTransmissionPolicy - Request Transmission Policy + * @param maximumSustainedTrafficRate - Maximum Sustained Traffic Rate + * @param maximumTrafficBurst - Maximum Traffic Burst + * @param minimumReservedTrafficRate - Minimum Reserved Traffic Rate + * @param amrtrPacketSize - Assumed Minimum Reserved Traffic Rate Packet Size + * @param maximumConcatenatedBurst - Maximum Concatenated Burst + * @param nominalPollingInterval - Nominal Polling Interval + * @param toleratedPollJitter - Tolerated Poll Jitter + * @param upstreamPeakTrafficRate - Upstream Peak Traffic Rate + * @param requiredAttributeMask - Required Attribute Mask + * @param forbiddenAttributeMask - Forbidden Attribute Mask + * @param attributeAggregationRuleMask - Attribute Aggregation Rule Mask + */ + public DOCSISRTPTrafficProfile(final Long requestTransmissionPolicy, + final Long maximumSustainedTrafficRate, + final Long maximumTrafficBurst, + final Long minimumReservedTrafficRate, + final Long amrtrPacketSize, + final Long maximumConcatenatedBurst, + final Long nominalPollingInterval, + final Long toleratedPollJitter, + final Long upstreamPeakTrafficRate, + final Long requiredAttributeMask, + final Long forbiddenAttributeMask, + final Long attributeAggregationRuleMask ) { + + this(DEFAULT_ENVELOP, + requestTransmissionPolicy.intValue(), + maximumSustainedTrafficRate.intValue(), + maximumTrafficBurst.intValue(), + minimumReservedTrafficRate.intValue(), + amrtrPacketSize.intValue(), + maximumConcatenatedBurst.intValue(), + nominalPollingInterval.intValue(), + toleratedPollJitter.intValue(), + upstreamPeakTrafficRate.intValue(), + requiredAttributeMask.intValue(), + forbiddenAttributeMask.intValue(), + attributeAggregationRuleMask.intValue()); + } + + /** + * Constructor to set all values + * @param envelope - the envelope value + * @param requestTransmissionPolicy - Request Transmission Policy + * @param maximumSustainedTrafficRate - Maximum Sustained Traffic Rate + * @param maximumTrafficBurst - Maximum Traffic Burst + * @param minimumReservedTrafficRate - Minimum Reserved Traffic Rate + * @param amrtrPacketSize - Assumed Minimum Reserved Traffic Rate Packet Size + * @param maximumConcatenatedBurst - Maximum Concatenated Burst + * @param nominalPollingInterval - Nominal Polling Interval + * @param toleratedPollJitter - Tolerated Poll Jitter + * @param upstreamPeakTrafficRate - Upstream Peak Traffic Rate + * @param requiredAttributeMask - Required Attribute Mask + * @param forbiddenAttributeMask - Forbidden Attribute Mask + * @param attributeAggregationRuleMask - Attribute Aggregation Rule Mask + */ + protected DOCSISRTPTrafficProfile(final byte envelope, + final int requestTransmissionPolicy, + final int maximumSustainedTrafficRate, + final int maximumTrafficBurst, + final int minimumReservedTrafficRate, + final int amrtrPacketSize, + final int maximumConcatenatedBurst, + final int nominalPollingInterval, + final int toleratedPollJitter, + final int upstreamPeakTrafficRate, + final int requiredAttributeMask, + final int forbiddenAttributeMask, + final int attributeAggregationRuleMask ) { + super(SNum.TRAFFIC_PROFILE, STYPE); + this.requestTransmissionPolicy = requestTransmissionPolicy; + this.maximumSustainedTrafficRate = maximumSustainedTrafficRate; + this.maximumTrafficBurst = maximumTrafficBurst; + this.minimumReservedTrafficRate = minimumReservedTrafficRate; + this.amrtrPacketSize = amrtrPacketSize; + this.maximumConcatenatedBurst = maximumConcatenatedBurst; + this.nominalPollingInterval = nominalPollingInterval; + this.toleratedPollJitter = toleratedPollJitter; + this.upstreamPeakTrafficRate = upstreamPeakTrafficRate; + this.requiredAttributeMask = requiredAttributeMask; + this.forbiddenAttributeMask = forbiddenAttributeMask; + this.attributeAggregationRuleMask = attributeAggregationRuleMask; + this.envelope = envelope; + } + + @Override + public byte getEnvelop() { + return envelope; + } + + /** + * Returns the Request Transmission Policy value + * @return - the Request Transmission Policy value + */ + public int getRequestTransmissionPolicy() { + return requestTransmissionPolicy; + } + + /** + * Returns the Maximum Sustained Traffic Rate value + * @return - the Maximum Sustained Traffic Rate value + */ + public int getMaximumSustainedTrafficRate() { + return maximumSustainedTrafficRate; + } + + /** + * Returns the Maximum Traffic Burst value + * @return - the Maximum Traffic Burst value + */ + public int getMaximumTrafficBurst() { + return maximumTrafficBurst; + } + + /** + * Returns the Minimum Reserved Traffic Rate value + * @return - the Minimum Reserved Traffic Rate value + */ + public int getMinimumReservedTrafficRate() { + return minimumReservedTrafficRate; + } + + /** + * Returns the Assumed Minimum Reserved Traffic Rate Packet Size value + * @return - the Assumed Minimum Reserved Traffic Rate Packet Size value + */ + public int getAmrtrPacketSize() { + return amrtrPacketSize; + } + + /** + * Returns the Maximum Concatenated Burst value + * @return - the Maximum Concatenated Burst value + */ + public int getMaximumConcatenatedBurst() { + return maximumConcatenatedBurst; + } + + /** + * Returns the Nominal Polling Interval value + * @return - the Nominal Polling Interval value + */ + public int getNominalPollingInterval() { + return nominalPollingInterval; + } + + /** + * Returns the Tolerated Poll Jitter value + * @return - the Tolerated Poll Jitter value + */ + public int getToleratedPollJitter() { + return toleratedPollJitter; + } + + /** + * Returns the Upstream Peak Traffic Rate value + * @return - the maximum packet size value + */ + public int getUpstreamPeakTrafficRate() { + return upstreamPeakTrafficRate; + } + + /** + * Returns the Required Attribute Mask value + * @return - the Required Attribute Mask value + */ + public int getRequiredAttributeMask() { + return requiredAttributeMask; + } + + /** + * Returns the Forbidden Attribute Mask value + * @return - the Forbidden Attribute Mask value + */ + public int getForbiddenAttributeMask() { + return forbiddenAttributeMask; + } + + /** + * Returns the Attribute Aggregation Rule Mask value + * @return - the Attribute Aggregation Rule Mask value + */ + public int getAttributeAggregationRuleMask() { + return attributeAggregationRuleMask; + } + + @Override + protected byte[] getBytes() { + final byte[] data = new byte[4+(4*10*3)]; + ByteBuffer buffer = ByteBuffer.wrap(data); + + buffer.put(envelope); + buffer.put((byte)0); // reserved + buffer.put((byte)0); // reserved + buffer.put((byte)0); // reserved + + final int value = ((int)amrtrPacketSize<<16) | (int)maximumConcatenatedBurst; + + // Authorized Envelope + buffer.putInt(requestTransmissionPolicy); + buffer.putInt(maximumSustainedTrafficRate); + buffer.putInt(maximumTrafficBurst); + buffer.putInt(minimumReservedTrafficRate); + buffer.putInt(value); + buffer.putInt(nominalPollingInterval); + buffer.putInt(toleratedPollJitter); + buffer.putInt(requiredAttributeMask); + buffer.putInt(forbiddenAttributeMask); + buffer.putInt(attributeAggregationRuleMask); + + // Reserved Envelope + buffer.putInt(requestTransmissionPolicy); + buffer.putInt(maximumSustainedTrafficRate); + buffer.putInt(maximumTrafficBurst); + buffer.putInt(minimumReservedTrafficRate); + buffer.putInt(value); + buffer.putInt(nominalPollingInterval); + buffer.putInt(toleratedPollJitter); + buffer.putInt(requiredAttributeMask); + buffer.putInt(forbiddenAttributeMask); + buffer.putInt(attributeAggregationRuleMask); + + // Committed Envelope + buffer.putInt(requestTransmissionPolicy); + buffer.putInt(maximumSustainedTrafficRate); + buffer.putInt(maximumTrafficBurst); + buffer.putInt(minimumReservedTrafficRate); + buffer.putInt(value); + buffer.putInt(nominalPollingInterval); + buffer.putInt(toleratedPollJitter); + buffer.putInt(requiredAttributeMask); + buffer.putInt(forbiddenAttributeMask); + buffer.putInt(attributeAggregationRuleMask); + + if (buffer.hasRemaining()) { + logger.error("Original buffer too large"); + } + + return data; + } + + @Override + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (!(o instanceof DOCSISRTPTrafficProfile)) { + return false; + } + if (!super.equals(o)) { + return false; + } + final DOCSISRTPTrafficProfile that = (DOCSISRTPTrafficProfile) o; + return (envelope == that.envelope) && + (requestTransmissionPolicy == that.requestTransmissionPolicy) && + (maximumSustainedTrafficRate == that.maximumSustainedTrafficRate) && + (maximumTrafficBurst == that.maximumTrafficBurst) && + (minimumReservedTrafficRate == that.minimumReservedTrafficRate) && + (amrtrPacketSize == that.amrtrPacketSize) && + (maximumConcatenatedBurst == that.maximumConcatenatedBurst) && + (nominalPollingInterval == that.nominalPollingInterval) && + (toleratedPollJitter == that.toleratedPollJitter) && + (upstreamPeakTrafficRate == that.upstreamPeakTrafficRate) && + (requiredAttributeMask == that.requiredAttributeMask) && + (forbiddenAttributeMask == that.forbiddenAttributeMask) && + (attributeAggregationRuleMask == that.attributeAggregationRuleMask); + } + + @Override + public int hashCode() { + int result = super.hashCode(); + result = 31 * result + requestTransmissionPolicy; + result = 31 * result + maximumSustainedTrafficRate; + result = 31 * result + maximumTrafficBurst; + result = 31 * result + minimumReservedTrafficRate; + result = 31 * result + amrtrPacketSize; + result = 31 * result + maximumConcatenatedBurst; + result = 31 * result + nominalPollingInterval; + result = 31 * result + toleratedPollJitter; + result = 31 * result + upstreamPeakTrafficRate; + result = 31 * result + requiredAttributeMask; + result = 31 * result + forbiddenAttributeMask; + result = 31 * result + attributeAggregationRuleMask; + result = 31 * result + (int) envelope; + return result; + } + + private static int byteToInt(final byte[] data, int start) { + return (int)(data[start] << 24 | + data[start+1] << 16 | + data[start+2] << 8 | + data[start+3]); + } + + private static int shortToInt(final byte[] data, int start) { + return (int)(data[start] << 8 | + data[start+1]); + } + + private static float byteToFloat(final byte[] data, int start) { + return (float)(data[start] << 24 | + data[start+1] << 16 | + data[start+2] << 8 | + data[start+3]); + } + + /** + * Returns a DOCSISRTPProfile object from a byte array + * @param data - the data to parse + * @return - the object + * TODO - make me more robust as RuntimeExceptions can be thrown here. + */ + public static DOCSISRTPTrafficProfile parse(final byte[] data) { + byte env = 0; + int requestTransmissionPolicy, + maximumSustainedTrafficRate, + maximumTrafficBurst, + minimumReservedTrafficRate, + amrtrPacketSize, + maximumConcatenatedBurst, + nominalPollingInterval, + toleratedPollJitter, + upstreamPeakTrafficRate, + requiredAttributeMask, + forbiddenAttributeMask, + attributeAggregationRuleMask; + + env = data[0]; + + requestTransmissionPolicy = byteToInt(data, 4); + maximumSustainedTrafficRate = byteToInt(data, 8); + maximumTrafficBurst = byteToInt(data, 12); + minimumReservedTrafficRate = byteToInt(data, 16); + amrtrPacketSize = shortToInt(data, 20); + maximumConcatenatedBurst = shortToInt(data, 22); + nominalPollingInterval = byteToInt(data, 24); + toleratedPollJitter = byteToInt(data, 28); + upstreamPeakTrafficRate = byteToInt(data,32); + requiredAttributeMask = byteToInt(data,36); + forbiddenAttributeMask = byteToInt(data, 40); + attributeAggregationRuleMask = byteToInt(data, 44); + + return new DOCSISRTPTrafficProfile(env, + requestTransmissionPolicy, + maximumSustainedTrafficRate, + maximumTrafficBurst, + minimumReservedTrafficRate, + amrtrPacketSize, + maximumConcatenatedBurst, + nominalPollingInterval, + toleratedPollJitter, + upstreamPeakTrafficRate, + requiredAttributeMask, + forbiddenAttributeMask, + attributeAggregationRuleMask); + } + + /** + * {@inheritDoc} + */ + public String toString() { + final int sbSize = 1000; + final String variableSeparator = "\n"; + final StringBuffer sb = new StringBuffer(sbSize); + + sb.append("Envelope: ").append(envelope); + sb.append(variableSeparator); + sb.append("RequestTransmissionPolicy: ").append(requestTransmissionPolicy); + sb.append(variableSeparator); + sb.append("MaximumSustainedTrafficRate: ").append(maximumSustainedTrafficRate); + sb.append(variableSeparator); + sb.append("MaximumTrafficBurst: ").append(maximumTrafficBurst); + sb.append(variableSeparator); + sb.append("MinimumReservedTrafficRate: ").append(minimumReservedTrafficRate); + sb.append(variableSeparator); + sb.append("AmrtrPacketSize: ").append(amrtrPacketSize); + sb.append(variableSeparator); + sb.append("MaximumConcatenatedBurst: ").append(maximumConcatenatedBurst); + sb.append(variableSeparator); + sb.append("NominalPollingInterval: ").append(nominalPollingInterval); + sb.append(variableSeparator); + sb.append("ToleratedPollJitter: ").append(toleratedPollJitter); + sb.append(variableSeparator); + sb.append("UpstreamPeakTrafficRate: ").append(upstreamPeakTrafficRate); + sb.append(variableSeparator); + sb.append("RequiredAttributeMask: ").append(requiredAttributeMask); + sb.append(variableSeparator); + sb.append("ForbiddenAttributeMask: ").append(forbiddenAttributeMask); + sb.append(variableSeparator); + sb.append("AttributeAggregationRuleMask: ").append(attributeAggregationRuleMask); + + return sb.toString(); + } +} diff --git a/packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISUGSTrafficProfile.java b/packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISUGSTrafficProfile.java new file mode 100644 index 0000000..05973c9 --- /dev/null +++ b/packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISUGSTrafficProfile.java @@ -0,0 +1,349 @@ +/* + * Copyright (c) 2016 Applied Broadband, Inc. All Rights Reserved + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.pcmm.gates.impl; + +import org.pcmm.base.impl.PCMMBaseObject; +import org.pcmm.gates.ITrafficProfile; +import org.pcmm.utils.PCMMUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Arrays; +import java.nio.ByteBuffer; + +/** + * The DOCSIS UGS object defines the UGS Traffic Profile of a Gate. + * + */ +public class DOCSISUGSTrafficProfile extends PCMMBaseObject implements ITrafficProfile { + + private final Logger logger = LoggerFactory.getLogger(DOCSISUGSTrafficProfile.class); + public static final byte STYPE = 6; + + /** + * The envelope + */ + private final byte envelope; + private final int requestTransmissionPolicy; + private final int unsolicitedGrantSize; + private final int grantsPerInterval; + private final int nominalGrantInterval; + private final int toleratedGrantJitter; + private final int upstreamPeakTrafficRate; + private final int requiredAttributeMask; + private final int forbiddenAttributeMask; + private final int attributeAggregationRuleMask; + + /** + * Constructor using the default envelope values + * @param requestTransmissionPolicy - Request Transmission Policy + * @param unsolicitedGrantSize - Unsolicited Grant Size + * @param grantsPerInterval - Grants per Interval + * @param nominalGrantInterval - Nominal Grant Interval + * @param toleratedGrantJitter - Tolerated Grant Jitter + * @param upstreamPeakTrafficRate - Upstream Peak Traffic Rate + * @param requiredAttributeMask - Required Attribute Mask + * @param forbiddenAttributeMask - Forbidden Attribute Mask + * @param attributeAggregationRuleMask - Attribute Aggregation Rule Mask + */ + public DOCSISUGSTrafficProfile(final Long requestTransmissionPolicy, + final Long unsolicitedGrantSize, + final Short grantsPerInterval, + final Long nominalGrantInterval, + final Long toleratedGrantJitter, + final Long upstreamPeakTrafficRate, + final Long requiredAttributeMask, + final Long forbiddenAttributeMask, + final Long attributeAggregationRuleMask ) { + + this(DEFAULT_ENVELOP, + requestTransmissionPolicy.intValue(), + unsolicitedGrantSize.intValue(), + grantsPerInterval.intValue(), + nominalGrantInterval.intValue(), + toleratedGrantJitter.intValue(), + upstreamPeakTrafficRate.intValue(), + requiredAttributeMask.intValue(), + forbiddenAttributeMask.intValue(), + attributeAggregationRuleMask.intValue()); + } + + /** + * Constructor to set all values + * @param envelope - the envelope value + * @param requestTransmissionPolicy - Request Transmission Policy + * @param unsolicitedGrantSize - Unsolicited Grant Size + * @param grantsPerInterval - Grants per Interval + * @param nominalGrantInterval - Nominal Grant Interval + * @param toleratedGrantJitter - Tolerated Grant Jitter + * @param upstreamPeakTrafficRate - Upstream Peak Traffic Interval + * @param requiredAttributeMask - Required Attribute Mask + * @param forbiddenAttributeMask - Forbidden Attribute Mask + * @param attributeAggregationRuleMask - Attribute Aggregation Rule Mask + */ + protected DOCSISUGSTrafficProfile(final byte envelope, + final int requestTransmissionPolicy, + final int unsolicitedGrantSize, + final int grantsPerInterval, + final int nominalGrantInterval, + final int toleratedGrantJitter, + final int upstreamPeakTrafficRate, + final int requiredAttributeMask, + final int forbiddenAttributeMask, + final int attributeAggregationRuleMask ) { + super(SNum.TRAFFIC_PROFILE, STYPE); + this.requestTransmissionPolicy = requestTransmissionPolicy; + this.unsolicitedGrantSize = unsolicitedGrantSize; + this.grantsPerInterval = grantsPerInterval; + this.nominalGrantInterval = nominalGrantInterval; + this.toleratedGrantJitter = toleratedGrantJitter; + this.upstreamPeakTrafficRate = upstreamPeakTrafficRate; + this.requiredAttributeMask = requiredAttributeMask; + this.forbiddenAttributeMask = forbiddenAttributeMask; + this.attributeAggregationRuleMask = attributeAggregationRuleMask; + this.envelope = envelope; + } + + @Override + public byte getEnvelop() { + return envelope; + } + + /** + * Returns the Request Transmission Policy value + * @return - the Request Transmission Policy value + */ + public int getRequestedTransmissionPolicy() { + return requestTransmissionPolicy; + } + + /** + * Returns the Unsolicited Grant Size value + * @return - the Unsolicited Grant Size value + */ + public int getUnsolicitedGrantSize() { + return unsolicitedGrantSize; + } + + /** + * Returns the Grants per Interval value + * @return - the Grants per Interval value + */ + public int getGrantsPerInterval() { + return grantsPerInterval; + } + + /** + * Returns the Nominal Grant Interval value + * @return - the Nominal Grant Interval value + */ + public int getNominalGrantInterval() { + return nominalGrantInterval; + } + + /** + * Returns the Tolerated Grant Jitter value + * @return - the Tolerated Grant Jitter value + */ + public int getToleratedGrantJitter() { + return toleratedGrantJitter; + } + + /** + * Returns the Upstream Peak Traffic Rate value + * @return - the maximum packet size value + */ + public int getUpstreamPeakTrafficRate() { + return upstreamPeakTrafficRate; + } + + /** + * Returns the Required Attribute Mask value + * @return - the Required Attribute Mask value + */ + public int getRequiredAttributeMask() { + return requiredAttributeMask; + } + + /** + * Returns the Forbidden Attribute Mask value + * @return - the Forbidden Attribute Mask value + */ + public int getForbiddenAttributeMask() { + return forbiddenAttributeMask; + } + + /** + * Returns the Attribute Aggregation Rule Mask value + * @return - the Attribute Aggregation Rule Mask value + */ + public int getAttributeAggregationRuleMask() { + return attributeAggregationRuleMask; + } + + @Override + protected byte[] getBytes() { + final byte[] data = new byte[4+(4*7*3)]; + ByteBuffer buffer = ByteBuffer.wrap(data); + + buffer.put(envelope); + buffer.put((byte)0); // reserved + buffer.put((byte)0); // reserved + buffer.put((byte)0); // reserved + + final int value = ((int)unsolicitedGrantSize<<16) | ((int)grantsPerInterval<<8); + + // Authorized Envelope + buffer.putInt(requestTransmissionPolicy); + buffer.putInt(value); + buffer.putInt(nominalGrantInterval); + buffer.putInt(toleratedGrantJitter); + buffer.putInt(requiredAttributeMask); + buffer.putInt(forbiddenAttributeMask); + buffer.putInt(attributeAggregationRuleMask); + + // Reserved Envelope + buffer.putInt(requestTransmissionPolicy); + buffer.putInt(value); + buffer.putInt(nominalGrantInterval); + buffer.putInt(toleratedGrantJitter); + buffer.putInt(requiredAttributeMask); + buffer.putInt(forbiddenAttributeMask); + buffer.putInt(attributeAggregationRuleMask); + + // Committed Envelope + buffer.putInt(requestTransmissionPolicy); + buffer.putInt(value); + buffer.putInt(nominalGrantInterval); + buffer.putInt(toleratedGrantJitter); + buffer.putInt(requiredAttributeMask); + buffer.putInt(forbiddenAttributeMask); + buffer.putInt(attributeAggregationRuleMask); + + if (buffer.hasRemaining()) { + logger.error("Original buffer too large"); + } + + return data; + } + + @Override + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (!(o instanceof DOCSISUGSTrafficProfile)) { + return false; + } + if (!super.equals(o)) { + return false; + } + final DOCSISUGSTrafficProfile that = (DOCSISUGSTrafficProfile) o; + return (envelope == that.envelope) && + (requestTransmissionPolicy == that.requestTransmissionPolicy) && + (unsolicitedGrantSize == that.unsolicitedGrantSize) && + (grantsPerInterval == that.grantsPerInterval) && + (nominalGrantInterval == that.nominalGrantInterval) && + (toleratedGrantJitter == that.toleratedGrantJitter) && + (upstreamPeakTrafficRate == that.upstreamPeakTrafficRate) && + (requiredAttributeMask == that.requiredAttributeMask) && + (forbiddenAttributeMask == that.forbiddenAttributeMask) && + (attributeAggregationRuleMask == that.attributeAggregationRuleMask); + } + + @Override + public int hashCode() { + int result = super.hashCode(); + result = 31 * result + requestTransmissionPolicy; + result = 31 * result + unsolicitedGrantSize; + result = 31 * result + grantsPerInterval; + result = 31 * result + nominalGrantInterval; + result = 31 * result + toleratedGrantJitter; + result = 31 * result + upstreamPeakTrafficRate; + result = 31 * result + requiredAttributeMask; + result = 31 * result + forbiddenAttributeMask; + result = 31 * result + attributeAggregationRuleMask; + result = 31 * result + (int) envelope; + return result; + } + + private static int byteToInt(final byte[] data, int start) { + return (int)(data[start] << 24 | + data[start+1] << 16 | + data[start+2] << 8 | + data[start+3]); + } + + private static int shortToInt(final byte[] data, int start) { + return (int)(data[start] << 8 | + data[start+1]); + } + + private static float byteToFloat(final byte[] data, int start) { + return (float)(data[start] << 24 | + data[start+1] << 16 | + data[start+2] << 8 | + data[start+3]); + } + + /** + * Returns a DOCSISUGSProfile object from a byte array + * @param data - the data to parse + * @return - the object + * TODO - make me more robust as RuntimeExceptions can be thrown here. + */ + public static DOCSISUGSTrafficProfile parse(final byte[] data) { + byte env = 0, gpi = 0; + int rtp, ugs,ngi,tgj,uptr = 0,ram,fam,aarm; + + env = data[0]; + + rtp = byteToInt(data, 4); + ugs = shortToInt(data, 8); + gpi = data[10]; + ngi = byteToInt(data, 12); + tgj = byteToInt(data, 16); + ram = byteToInt(data, 20); + fam = byteToInt(data, 24); + aarm= byteToInt(data, 28); + + return new DOCSISUGSTrafficProfile(env,rtp,ugs,gpi,ngi,tgj,uptr,ram,fam,aarm); + } + + /** + * {@inheritDoc} + */ + public String toString() { + final int sbSize = 1000; + final String variableSeparator = "\n"; + final StringBuffer sb = new StringBuffer(sbSize); + + sb.append("Envelope: ").append(envelope); + sb.append(variableSeparator); + sb.append("RequestedTransmissionPolicy: ").append(requestTransmissionPolicy); + sb.append(variableSeparator); + sb.append("UnsolicitedGrantSize: ").append(unsolicitedGrantSize); + sb.append(variableSeparator); + sb.append("GrantsPerInterval: ").append(grantsPerInterval); + sb.append(variableSeparator); + sb.append("NominalGrantInterval: ").append(nominalGrantInterval); + sb.append(variableSeparator); + sb.append("ToleratedGrantJitter: ").append(toleratedGrantJitter); + sb.append(variableSeparator); + sb.append("UpstreamPeakTrafficRate: ").append(upstreamPeakTrafficRate); + sb.append(variableSeparator); + sb.append("RequiredAttributeMask: ").append(requiredAttributeMask); + sb.append(variableSeparator); + sb.append("ForbiddenAttributeMask: ").append(forbiddenAttributeMask); + sb.append(variableSeparator); + sb.append("AttributeAggregationRuleMask: ").append(attributeAggregationRuleMask); + + return sb.toString(); + } +} diff --git a/packetcable-driver/src/main/java/org/pcmm/gates/impl/PCMMGateReq.java b/packetcable-driver/src/main/java/org/pcmm/gates/impl/PCMMGateReq.java index 94a268d..d9e29a0 100644 --- a/packetcable-driver/src/main/java/org/pcmm/gates/impl/PCMMGateReq.java +++ b/packetcable-driver/src/main/java/org/pcmm/gates/impl/PCMMGateReq.java @@ -31,6 +31,7 @@ import org.pcmm.gates.impl.DOCSISFlowSpecTrafficProfile; import org.pcmm.gates.impl.BestEffortService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.pcmm.utils.PCMMUtils; import java.util.ArrayList; import java.util.Arrays; @@ -141,12 +142,18 @@ public class PCMMGateReq implements IPCMMGate { break; case TRAFFIC_PROFILE: switch (sType) { + case DOCSISUGSTrafficProfile.STYPE: + trafficProfile = DOCSISUGSTrafficProfile.parse(dataBuffer); + break; case DOCSISServiceClassNameTrafficProfile.STYPE: trafficProfile = DOCSISServiceClassNameTrafficProfile.parse(dataBuffer); break; case DOCSISFlowSpecTrafficProfile.STYPE: trafficProfile = DOCSISFlowSpecTrafficProfile.parse(dataBuffer); break; + case DOCSISRTPTrafficProfile.STYPE: + trafficProfile = DOCSISRTPTrafficProfile.parse(dataBuffer); + break; case BestEffortService.STYPE: trafficProfile = BestEffortService.parse(dataBuffer); break; diff --git a/packetcable-emulator/src/main/java/org/pcmm/rcd/impl/CmtsPepReqStateMan.java b/packetcable-emulator/src/main/java/org/pcmm/rcd/impl/CmtsPepReqStateMan.java index 5bd80a1..b63fc46 100644 --- a/packetcable-emulator/src/main/java/org/pcmm/rcd/impl/CmtsPepReqStateMan.java +++ b/packetcable-emulator/src/main/java/org/pcmm/rcd/impl/CmtsPepReqStateMan.java @@ -34,8 +34,10 @@ import org.pcmm.gates.IPCMMError.ErrorCode; import org.pcmm.gates.ISubscriberID; import org.pcmm.gates.ITransactionID; import org.pcmm.gates.impl.AMID; -import org.pcmm.gates.impl.DOCSISServiceClassNameTrafficProfile; import org.pcmm.gates.impl.DOCSISFlowSpecTrafficProfile; +import org.pcmm.gates.impl.DOCSISRTPTrafficProfile; +import org.pcmm.gates.impl.DOCSISServiceClassNameTrafficProfile; +import org.pcmm.gates.impl.DOCSISUGSTrafficProfile; import org.pcmm.gates.impl.GateID; import org.pcmm.gates.impl.GateSpec; import org.pcmm.gates.impl.GateState; @@ -52,8 +54,8 @@ import org.umu.cops.prpep.COPSPepReqStateMan; import org.umu.cops.stack.COPSClientSI; import org.umu.cops.stack.COPSContext; import org.umu.cops.stack.COPSData; -import org.umu.cops.stack.COPSDecision; import org.umu.cops.stack.COPSDecision.DecisionFlag; +import org.umu.cops.stack.COPSDecision; import org.umu.cops.stack.COPSDecisionMsg; import org.umu.cops.stack.COPSException; import org.umu.cops.stack.COPSHandle; @@ -61,8 +63,8 @@ import org.umu.cops.stack.COPSMsgParser; import org.umu.cops.stack.COPSObjHeader.CNum; import org.umu.cops.stack.COPSObjHeader.CType; import org.umu.cops.stack.COPSReportMsg; -import org.umu.cops.stack.COPSReportType; import org.umu.cops.stack.COPSReportType.ReportType; +import org.umu.cops.stack.COPSReportType; /** * PEP State manager implementation for use in a CMTS. @@ -345,14 +347,19 @@ public class CmtsPepReqStateMan extends COPSPepReqStateMan { } else { // Traffic profile type check - if (!(gateReq.getTrafficProfile() instanceof DOCSISServiceClassNameTrafficProfile) && - !(gateReq.getTrafficProfile() instanceof DOCSISFlowSpecTrafficProfile)) { - logger.error("Currently only DOCSIS Service Class Name and Flow Spec Traffic Profiles are supported: attempted ", - gateReq.getTrafficProfile().getClass().getName()); + if (gateReq.getTrafficProfile() instanceof DOCSISServiceClassNameTrafficProfile) { + } else if (gateReq.getTrafficProfile() instanceof DOCSISFlowSpecTrafficProfile) { + } else if (gateReq.getTrafficProfile() instanceof DOCSISUGSTrafficProfile) { + } else if (gateReq.getTrafficProfile() instanceof DOCSISRTPTrafficProfile) { + } else { + logger.error("Currently only DOCSIS Service Class Name, Flow Spec, RTP or UGS Traffic Profiles are supported: attempted ", + gateReq.getTrafficProfile().getClass().getName()); return new PCMMError(ErrorCode.OTHER_UNSPECIFIED); } + // ServiceClassName match check - else if (gateReq.getTrafficProfile() instanceof DOCSISServiceClassNameTrafficProfile) { + + if (gateReq.getTrafficProfile() instanceof DOCSISServiceClassNameTrafficProfile) { final DOCSISServiceClassNameTrafficProfile scnTrafficProfile = (DOCSISServiceClassNameTrafficProfile) gateReq.getTrafficProfile(); @@ -413,14 +420,20 @@ public class CmtsPepReqStateMan extends COPSPepReqStateMan { final String subId = gateReq.getSubscriberID().getSourceIPAddress().getHostAddress(); final Direction gateDir = gateReq.getGateSpec().getDirection(); - - final String serviceClassName; + String serviceClassName = null; + if (gateReq.getTrafficProfile() instanceof DOCSISServiceClassNameTrafficProfile) { serviceClassName = ((DOCSISServiceClassNameTrafficProfile)gateReq.getTrafficProfile()).getScnName(); logger.info("Processing ServiceClassName[" + serviceClassName + "] gate set with direction [" + gateDir + ']'); } else if (gateReq.getTrafficProfile() instanceof DOCSISFlowSpecTrafficProfile) { serviceClassName = null; logger.info("Processing FlowSpec gate set with direction [" + gateDir + ']'); + } else if (gateReq.getTrafficProfile() instanceof DOCSISUGSTrafficProfile) { + serviceClassName = null; + logger.info("Processing UGS gate set with direction [" + gateDir + ']'); + } else if (gateReq.getTrafficProfile() instanceof DOCSISRTPTrafficProfile) { + serviceClassName = null; + logger.info("Processing RTP gate set with direction [" + gateDir + ']'); } else { serviceClassName = null; logger.error("Unknown Traffic Profile type: " + gateReq.getTrafficProfile().getClass().getName()); @@ -429,8 +442,6 @@ public class CmtsPepReqStateMan extends COPSPepReqStateMan { final IPCMMError error = getGateError(gateReq); gateReq.setError(error); - logger.info("Processing gate set request [" + serviceClassName + "] with direction [" + gateDir + ']'); - // Set response final ITransactionID.GateCommandType gateCommand = (error == null) diff --git a/packetcable-policy-model/src/main/yang/packetcable.yang b/packetcable-policy-model/src/main/yang/packetcable.yang index aad1e55..1c2fa44 100644 --- a/packetcable-policy-model/src/main/yang/packetcable.yang +++ b/packetcable-policy-model/src/main/yang/packetcable.yang @@ -10,6 +10,9 @@ module packetcable description "This module contains the PCMM Converged Cable Access Platform (CCAP) definitions"; organization "OpenDaylight Project"; + revision 2017-01-25 { + description "Added support for UGS and RTP traffic profiles"; + } revision 2016-12-19 { description "Added support for flow-spec traffic profile"; } @@ -32,58 +35,80 @@ module packetcable description "Initial revision of PCMM CCAP definitions"; } - // Global typedefs + + typedef s-type { + type uint8; + description "RSVP sub-type per PCMM specification."; + } + typedef service-class-name { type string { length "2..16"; } description "The Service Class Name is MUST be 2-16 bytes."; } typedef service-flow-direction { type enumeration { - enum ds { + enum ds { value "0"; description "Downstream service flow."; - } - enum us { + } + enum us { value "1"; description "Upstream service flow."; - } - } + } + } description "This value represents the service flow direction."; - } + } - typedef classifier-activation-state { + typedef classifier-activation-state { type enumeration { - enum inactive { - value 0; - description "Inactive"; - } - enum active { - value 1; - description "Active"; - } + enum inactive { + value 0; + description "Inactive"; + } + enum active { + value 1; + description "Active"; + } } description "Instructs the CMTS to either activate or inactivate the classifier"; - } + } + typedef classifier-action { + type enumeration { + enum add { + value 0; + description "Add classifier"; + } + enum replace { + value 1; + description "Replace classifier"; + } + enum delete { + value 2; + description "Delete classifier"; + } + enum nochange { + value 3; + description "No change to classifier"; + } + } + description "Instructs the CMTS to add,replace,delete or leave the classifier"; + } - typedef tp-protocol { - type uint16 {range "0..257";} + typedef tp-protocol { + type uint16 {range "0..257";} description "This value represents the IP transport protocol (or Next Header) where 256 is any protocol and 257 is TCP or UDP"; - } - typedef tos-byte { - type uint8; - description "TOS/TC byte or mask"; - } + } + typedef tos-byte { + type uint8; + description "TOS/TC byte or mask"; + } identity ccap-context { description "Identity used to mark ccap context"; } - identity app-context { - description "Identity used to mark app context"; - } - // CCAP devices container ccaps { list ccap { @@ -103,16 +128,31 @@ module packetcable } } + identity app-context { + description "Identity used to mark app context"; + } + + container apps { + list app { + key "id"; + ext:context-instance "app-context"; + leaf "id" { + type string; + mandatory true; + } + } + } + grouping ccap-connection { - leaf ipAddress { - type inet:ip-address; - description "IP Address of CCAP"; - mandatory true; - } - leaf port { - type inet:port-number; + leaf ipAddress { + type inet:ip-address; + description "IP Address of CCAP"; + mandatory true; + } + leaf port { + type inet:port-number; description "COPS session TCP port number"; - default 3918; + default 3918; } leaf connected { config false; @@ -125,18 +165,6 @@ module packetcable type string; description "Operational errors"; } -// leaf idle-detect { -// type uint8; -// description "COPS connection idle timer (seconds)"; -// mandatory true; -// } -// leaf isIdle { -// config false; -// type boolean; -// description "COPS connection idle state"; -// mandatory true; -// } - leaf timestamp { config false; type yang:date-and-time; @@ -161,7 +189,7 @@ module packetcable mandatory true; } leaf am-type { - type uint16; + type uint16; description "Application Manager Type -- unique for this AM tag"; mandatory true; } @@ -237,35 +265,35 @@ module packetcable } grouping gate-operational-attributes { - leaf gatePath { - config false; - type string; - description "FQ Gate path app/subscriber/gate"; - mandatory true; - } - leaf ccapId { - config false; - type string; - description "CCAP Identity"; - mandatory true; - } - leaf cops-gate-state { - config false; - type string; - description "Operational COPS Gate state"; - mandatory true; - } - leaf cops-gate-time-info { - config false; - type string; - description "Operational COPS Gate time info"; - mandatory true; - } - leaf cops-gate-usage-info { - config false; - type string; - description "Operational COPS gate usage info"; - mandatory true; + leaf gatePath { + config false; + type string; + description "FQ Gate path app/subscriber/gate"; + mandatory true; + } + leaf ccapId { + config false; + type string; + description "CCAP Identity"; + mandatory true; + } + leaf cops-gate-state { + config false; + type string; + description "Operational COPS Gate state"; + mandatory true; + } + leaf cops-gate-time-info { + config false; + type string; + description "Operational COPS Gate time info"; + mandatory true; + } + leaf cops-gate-usage-info { + config false; + type string; + description "Operational COPS gate usage info"; + mandatory true; } leaf cops-gateId { config false; @@ -295,25 +323,25 @@ module packetcable type uint8; description "Classifier ID and Gate classifier priority"; } - choice classifier-choice { - case qos-classifier-choice { + choice classifier-choice { + case qos-classifier-choice { uses pcmm-qos-classifier; } case ext-classifier-choice { uses pcmm-qos-ext-classifier; - } - case ipv6-classifier-choice { - uses pcmm-qos-ipv6-classifier; - } - } - } + } + case ipv6-classifier-choice { + uses pcmm-qos-ipv6-classifier; + } + } + } } } grouping pcmm-qos-gate-attributes { - uses pcmm-qos-gate-spec; - uses pcmm-qos-traffic-profile; - uses classifier-attributes; + uses pcmm-qos-gate-spec; + uses pcmm-qos-traffic-profile; + uses classifier-attributes; } grouping pcmm-qos-gate-spec { @@ -345,6 +373,12 @@ module packetcable grouping pcmm-qos-traffic-profile { container traffic-profile { choice traffic-profile-choice { + case ugs-choice { + uses pcmm-ugs-profile; + } + case rtp-choice { + uses pcmm-rtp-profile; + } case service-class-name-choice { uses pcmm-serviceclass-name-profile; } @@ -355,8 +389,8 @@ module packetcable } } - grouping pcmm-serviceclass-name-profile { - container service-class-name-profile { + grouping pcmm-serviceclass-name-profile { + container service-class-name-profile { leaf service-class-name { type service-class-name; description "The Service Class Name (SCN). This SCN must be pre-provisioned on the target CCAP"; @@ -365,62 +399,205 @@ module packetcable } } - grouping pcmm-flow-spec-profile { - container flow-spec-profile { - leaf token-bucket-rate { - type int32; - description "Token Bucket Rate value [r]"; - mandatory true; - } - leaf token-bucket-size { - type int32; - description "Token Bucket Size value [b]"; - mandatory true; - } - leaf peak-data-rate { - type int32; - description "Peak Data Rate value [p]"; - mandatory true; - } - leaf minimum-policed-unit { - type int32; - description "Minimum Policed Unit value [m]"; - mandatory true; - } - leaf maximum-packet-size { - type int32; - description "Maximum Packet Size value [M]"; - mandatory true; - } - leaf rate { - type int32; - description "Rate value [R]"; - mandatory true; - } - leaf slack-term { - type int32; - description "Slack Term value [S]"; - mandatory true; - } - } - } + grouping pcmm-flow-spec-profile { + container flow-spec-profile { + leaf token-bucket-rate { + type int32; + description "Token Bucket Rate value [r]"; + mandatory true; + } + leaf token-bucket-size { + type int32; + description "Token Bucket Size value [b]"; + mandatory true; + } + leaf peak-data-rate { + type int32; + description "Peak Data Rate value [p]"; + mandatory true; + } + leaf minimum-policed-unit { + type int32; + description "Minimum Policed Unit value [m]"; + mandatory true; + } + leaf maximum-packet-size { + type int32; + description "Maximum Packet Size value [M]"; + mandatory true; + } + leaf rate { + type int32; + description "Rate value [R]"; + mandatory true; + } + leaf slack-term { + type int32; + description "Slack Term value [S]"; + mandatory true; + } + } + } - grouping tp-port-match-ranges { + grouping pcmm-ugs-profile { + container ugs-profile { + leaf request-transmission-policy { + type uint32; + description "Request Transmission Policy"; + mandatory true; + } + leaf unsolicited-grant-size { + type uint32; + description "Unsolicited Grant Size"; + mandatory true; + } + leaf grants-per-interval { + type uint8; + description "Grants per Interval"; + mandatory true; + } + leaf nominal-grant-interval { + type uint32; + description "Nominal Grant Interval"; + mandatory true; + } + leaf tolerated-grant-jitter { + type uint32; + description "Tolerated Grant Jitter"; + mandatory true; + } + leaf upstream-peak-traffic-rate { + type uint32; + description "Upstream Peak Traffic Interval"; + mandatory true; + } + leaf required-attribute-mask { + type uint32; + description "Required Attribute Mask"; + mandatory true; + } + leaf forbidden-attribute-mask { + type uint32; + description "Forbidden Attribute Mask"; + mandatory true; + } + leaf attribute-aggregation-rule-mask { + type uint32; + description "Attribute Aggregation Rule Mask"; + mandatory true; + } + leaf minimum-buffer { + type uint32; + description "Minimum Buffer"; + } + leaf target-buffer { + type uint32; + description "Forbidden Attribute Mask"; + } + leaf maximum-buffer { + type uint32; + description "Forbidden Attribute Mask"; + } + } + } + + grouping pcmm-rtp-profile { + container rtp-profile { + leaf request-transmission-policy { + type uint32; + description "Request Transmission Policy"; + mandatory true; + } + leaf maximum-sustained-traffic-rate { + type uint32; + description "Maximum Sustained Traffic Rate"; + default 0; + } + leaf maximum-traffic-burst { + type uint32; + description "Maximum Traffic Burst"; + default 3044; + } + leaf minimum-reserved-traffic-rate { + type uint32; + description "Minimum Reserved Traffic Rate"; + default 0; + } + leaf amrtr-packet-size { + type uint16; + description "Assumed Minimum Reserved Traffic Rate Packet Size"; + default 0; + } + leaf maximum-concatenated-burst { + type uint16; + description "Maximum Concatenated Burst"; + default 1522; + } + leaf nominal-polling-interval { + type uint32; + description "Nominal Polling Interval"; + mandatory true; + } + leaf tolerated-poll-jitter { + type uint32; + description "Tolerated Poll Jitter"; + default 0; + } + leaf upstream-peak-traffic-rate { + type uint32; + description "Upstream Peak Traffic Rate"; + mandatory true; + } + leaf required-attribute-mask { + type uint32; + description "Required Attribute Mask"; + mandatory true; + } + leaf forbidden-attribute-mask { + type uint32; + description "Forbidden Attribute Mask"; + mandatory true; + } + leaf attribute-aggregation-rule-mask { + type uint32; + description "Attribute Aggregation Rule Mask"; + mandatory true; + } + leaf minimum-buffer { + type uint32; + description "Minimum Buffer"; + } + leaf target-buffer { + type uint32; + description "Forbidden Attribute Mask"; + } + leaf maximum-buffer { + type uint32; + description "Forbidden Attribute Mask"; + } + } + } + + grouping tp-port-match-ranges { leaf srcPort-start { type inet:port-number; description "TCP/UDP source port range start."; + mandatory true; } leaf srcPort-end { type inet:port-number; description "TCP/UDP source port range end."; + mandatory true; } leaf dstPort-start { type inet:port-number; description "TCP/UDP destination port range start."; + mandatory true; } leaf dstPort-end { type inet:port-number; description "TCP/UDP destination port range end."; + mandatory true; } } @@ -429,37 +606,44 @@ module packetcable leaf srcIp { type inet:ipv4-address; description "Source IPv4 address (exact match)"; + mandatory true; } leaf dstIp { type inet:ipv4-address; description "Destination IPv4 address (exact match)"; + mandatory true; + } + leaf tos-byte { + type tos-byte; + description "TOS/DSCP match"; + mandatory true; } - leaf tos-byte { - type tos-byte; - description "TOS/DSCP match"; - } - leaf tos-mask { - type tos-byte; - description "TOS/DSCP mask"; - } - leaf protocol { + leaf tos-mask { + type tos-byte; + description "TOS/DSCP mask"; + mandatory true; + } + leaf protocol { type tp-protocol; description "IPv4 transport protocol"; + mandatory true; } - leaf srcPort { + leaf srcPort { type inet:port-number; description "TCP/UDP source port (exact match)."; - } - leaf dstPort { + mandatory true; + } + leaf dstPort { type inet:port-number; description "TCP/UDP destination port (exact match)."; - } - leaf priority { - type uint8; - description "Priority"; - default 64; - } - } + mandatory true; + } + leaf priority { + type uint8; + description "Priority"; + default 64; + } + } } grouping pcmm-qos-ext-classifier { @@ -467,44 +651,55 @@ module packetcable leaf srcIp { type inet:ipv4-address; description "Source IPv4 address match"; + mandatory true; } leaf srcIpMask { type inet:ipv4-address; description "Source IPv4 mask"; + mandatory true; } leaf dstIp { type inet:ipv4-address; description "Destination IPv4 address match"; + mandatory true; } leaf dstIpMask { type inet:ipv4-address; description "Destination IPv4 mask"; + mandatory true; + } + leaf tos-byte { + type tos-byte; + description "TOS/DSCP match"; + mandatory true; } - leaf tos-byte { - type tos-byte; - description "TOS/DSCP match"; - } - leaf tos-mask { - type tos-byte; - description "TOS/DSCP mask"; - } - leaf protocol { + leaf tos-mask { + type tos-byte; + description "TOS/DSCP mask"; + mandatory true; + } + leaf protocol { type tp-protocol; description "IPv4 transport protocol"; + mandatory true; } - uses tp-port-match-ranges; leaf priority { - type uint8; - description "Priority"; - default 64; + type uint8; + description "Priority"; + default 64; } + uses tp-port-match-ranges; leaf activation-state { - type classifier-activation-state; - description "Activation state"; - default active; + type classifier-activation-state; + description "Activation state"; + default active; } - - } + leaf action { + type classifier-action; + description "Action"; + default add; + } + } } grouping pcmm-qos-ipv6-classifier { @@ -512,136 +707,144 @@ module packetcable leaf srcIp6 { type inet:ipv6-prefix; description "Source IPv6 prefix match in 'address/len' notation"; + mandatory true; } leaf dstIp6 { type inet:ipv6-prefix; description "Destination IPv6 prefix match in 'address/len' notation"; + mandatory true; } - leaf tc-low { - type tos-byte; - description "TC low range match"; - } - leaf tc-high { - type tos-byte; - description "TC high range match"; - } - leaf tc-mask { - type tos-byte; - description "TC mask"; - } - leaf next-hdr { + leaf tc-low { + type tos-byte; + description "TC low range match"; + mandatory true; + } + leaf tc-high { + type tos-byte; + description "TC high range match"; + mandatory true; + } + leaf tc-mask { + type tos-byte; + description "TC mask"; + mandatory true; + } + leaf next-hdr { type tp-protocol; description "IPv6 Next Header"; + mandatory true; } leaf flow-label { type uint32 { range "0 .. 1048575"; } description "IPv6 Flow Label (20 bits)"; + mandatory true; } - uses tp-port-match-ranges; leaf priority { - type uint8; - description "Priority"; - default 64; + type uint8; + description "Priority"; + default 64; } + uses tp-port-match-ranges; leaf activation-state { - type classifier-activation-state; - description "Activation state"; - default active; + type classifier-activation-state; + description "Activation state"; + default active; } - } + leaf action { + type classifier-action; + description "Action"; + default add; + } + } } - //RPCs + //RPCs rpc ccap-set-connection { - input { + input { leaf ccapId { - type instance-identifier; - ext:context-reference ccap-context; - } - container connection { - leaf connected { - type boolean; - description "COPS session state"; - } -// leaf idle-detect { -// type uint8; -// description "COPS connection idle timer"; -// } - } - } - output { - container ccap { - leaf ccapId { - type string; - } - container connection { - uses ccap-connection; - } - } - leaf response { - type string; - } - leaf timestamp { - type yang:date-and-time; - description "RPC timestamp"; - } - } + type "instance-identifier"; + ext:context-reference "ccap-context"; + } + container connection { + leaf connected { + type boolean; + description "COPS session state"; + } + } + } + output { + container ccap { + leaf ccapId { + type string; + } + container connection { + uses ccap-connection; + } + } + leaf response { + type string; + } + leaf timestamp { + type yang:date-and-time; + description "RPC timestamp"; + } + } } rpc ccap-poll-connection { - input { + input { leaf ccapId { - type instance-identifier; - ext:context-reference ccap-context; - } - } - output { - container ccap { - leaf ccapId { - type string; - } - container connection { - uses ccap-connection; - } - } - leaf response { - type string; - } - leaf timestamp { - type yang:date-and-time; - description "RPC timestamp"; - } - } + type "instance-identifier"; + ext:context-reference "ccap-context"; + } + } + output { + container ccap { + leaf ccapId { + type string; + } + container connection { + uses ccap-connection; + } + } + leaf response { + type string; + } + leaf timestamp { + type yang:date-and-time; + description "RPC timestamp"; + } + } } - rpc qos-poll-gates { - input { + rpc qos-poll-gates { + input { leaf appId { - type instance-identifier; - ext:context-reference app-context; - } - leaf subscriberId { - type string; - description "Subscriber Identity -- must be a CM or CPE IP address"; - } - leaf gateId { - type string; - description "Qos Gate Identity"; - } - } - output { - container gate { - uses gate-operational-attributes; - } - leaf response { - type string; - } - leaf timestamp { - type yang:date-and-time; - description "RPC timestamp"; - } - } + type instance-identifier; + ext:context-reference app-context; + } + leaf subscriberId { + type string; + description "Subscriber Identity -- must be a CM or CPE IP address"; + } + leaf gateId { + type string; + description "Qos Gate Identity"; + } + } + output { + container gate { + uses gate-operational-attributes; + } + leaf response { + type string; + } + leaf timestamp { + type yang:date-and-time; + description "RPC timestamp"; + } + } } } diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMGateReqBuilder.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMGateReqBuilder.java index 1d72875..96fb041 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMGateReqBuilder.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMGateReqBuilder.java @@ -16,21 +16,23 @@ import java.net.Inet6Address; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.List; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ServiceFlowDirection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.TosByte; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.AmId; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.ClassifierContainer; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.ClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.classifier.choice.ExtClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.classifier.choice.Ipv6ClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.classifier.Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ext.classifier.ExtClassifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gate.spec.GateSpec; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ipv6.classifier.Ipv6Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.TrafficProfile; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.serviceclass.name.profile.ServiceClassNameProfile; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.flow.spec.profile.FlowSpecProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ServiceFlowDirection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.TosByte; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.AmId; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.ClassifierContainer; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.ClassifierChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.classifier.choice.ExtClassifierChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.classifier.choice.Ipv6ClassifierChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.classifier.Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.ext.classifier.ExtClassifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gate.spec.GateSpec; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.ipv6.classifier.Ipv6Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.TrafficProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.serviceclass.name.profile.ServiceClassNameProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.flow.spec.profile.FlowSpecProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.ugs.profile.UgsProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.rtp.profile.RtpProfile; import org.pcmm.gates.IClassifier; import org.pcmm.gates.IClassifier.Protocol; import org.pcmm.gates.IExtendedClassifier; @@ -41,6 +43,8 @@ import org.pcmm.gates.ITrafficProfile; import org.pcmm.gates.impl.AMID; import org.pcmm.gates.impl.DOCSISServiceClassNameTrafficProfile; import org.pcmm.gates.impl.DOCSISFlowSpecTrafficProfile; +import org.pcmm.gates.impl.DOCSISUGSTrafficProfile; +import org.pcmm.gates.impl.DOCSISRTPTrafficProfile; import org.pcmm.gates.impl.GateID; import org.pcmm.gates.impl.GateState; import org.pcmm.gates.impl.GateTimeInfo; @@ -50,12 +54,15 @@ import org.pcmm.gates.impl.PCMMGateReq; import org.pcmm.gates.impl.SessionClassID; import org.pcmm.gates.impl.SubscriberID; import org.pcmm.gates.impl.TransactionID; +import org.pcmm.utils.PCMMUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.TrafficProfile; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.TrafficProfileChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.FlowSpecChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.TrafficProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.TrafficProfileChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.FlowSpecChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.RtpChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.UgsChoice; /** * Build PCMM gate requests from API QoS Gate objects @@ -89,20 +96,15 @@ public class PCMMGateReqBuilder { subscriberID = new SubscriberID(qosSubId); } - public void setGateSpec(final GateSpec qosGateSpec, final ServiceFlowDirection scnDirection) { + public void setGateId(int gateId) { + gateID = new GateID(gateId); + } + + public void setGateSpec(final GateSpec qosGateSpec) { - final ServiceFlowDirection qosDir; - if (scnDirection != null) { - qosDir = scnDirection; - } else { - if (qosGateSpec.getDirection() != null) { - qosDir = qosGateSpec.getDirection(); - } else { - // TODO - determine if this is a valid default value - qosDir = ServiceFlowDirection.Ds; - } - } + final ServiceFlowDirection qosDir = qosGateSpec.getDirection(); + // convert to PCMM API Type final Direction gateDir; if (qosDir == ServiceFlowDirection.Ds) { gateDir = Direction.DOWNSTREAM; @@ -110,38 +112,31 @@ public class PCMMGateReqBuilder { gateDir = Direction.UPSTREAM; } - // DSCP/TOS Overwrite - final byte dscptos; + final byte dscptos = 1; final byte gateTosMask; - final TosByte tosOverwrite = qosGateSpec.getDscpTosOverwrite(); - if (tosOverwrite != null) { - dscptos = 1; - TosByte tosMask = qosGateSpec.getDscpTosMask(); - if (tosMask != null) { - gateTosMask = tosMask.getValue().byteValue(); - } else { - gateTosMask = (byte) 0xff; - } + TosByte tosMask = qosGateSpec.getDscpTosMask(); + if (tosMask != null) { + gateTosMask = tosMask.getValue().byteValue(); } else { - // TODO - These values appear to be required - dscptos = 0; - gateTosMask = 0; + gateTosMask = (byte) 0xff; } - - byte sessionClassId = 0; - if (qosGateSpec.getSessionClassId() != null) { - sessionClassId = (byte)(qosGateSpec.getSessionClassId() & 255); + + java.lang.Short scid = qosGateSpec.getSessionClassId(); + byte bscid = 0; + if (scid != null) { + bscid = (byte)(qosGateSpec.getSessionClassId() & 0x00ff); } - - short inactivityTimer = 300; - if (qosGateSpec.getInactivityTimer() != null) { - inactivityTimer = (short)(qosGateSpec.getInactivityTimer() & 65535); + + java.lang.Long inactivity = qosGateSpec.getInactivityTimer(); + short sinactivity = 300; + if (inactivity != null) { + sinactivity = inactivity.shortValue(); } - + gateSpec = new org.pcmm.gates.impl.GateSpec(gateDir, dscptos, gateTosMask, - new SessionClassID(sessionClassId), - (short)1, (short)300, inactivityTimer, (short)0); + new SessionClassID(bscid), + (short)1,(short)300,sinactivity,(short)0); } public void setTrafficProfile(final TrafficProfile qosTrafficProfile) { @@ -161,6 +156,33 @@ public class PCMMGateReqBuilder { fsp.getRate(), fsp.getSlackTerm()); } + else if (choice instanceof UgsChoice) { + UgsProfile ugsp = ((UgsChoice)choice).getUgsProfile(); + trafficProfile = new DOCSISUGSTrafficProfile(ugsp.getRequestTransmissionPolicy(), + ugsp.getUnsolicitedGrantSize(), + ugsp.getGrantsPerInterval(), + ugsp.getNominalGrantInterval(), + ugsp.getToleratedGrantJitter(), + ugsp.getUpstreamPeakTrafficRate(), + ugsp.getRequiredAttributeMask(), + ugsp.getForbiddenAttributeMask(), + ugsp.getAttributeAggregationRuleMask()); + } + else if (choice instanceof RtpChoice) { + RtpProfile rtpp = ((RtpChoice)choice).getRtpProfile(); + trafficProfile = new DOCSISRTPTrafficProfile(rtpp.getRequestTransmissionPolicy(), + rtpp.getMaximumSustainedTrafficRate(), + rtpp.getMaximumTrafficBurst(), + rtpp.getMinimumReservedTrafficRate(), + rtpp.getAmrtrPacketSize().longValue(), + rtpp.getMaximumConcatenatedBurst().longValue(), + rtpp.getNominalPollingInterval(), + rtpp.getToleratedPollJitter(), + rtpp.getUpstreamPeakTrafficRate(), + rtpp.getRequiredAttributeMask(), + rtpp.getForbiddenAttributeMask(), + rtpp.getAttributeAggregationRuleMask()); + } else { logger.debug("PCMMGateReq().setTrafficProfile() Unsupported Traffic Profile: " + choice.getClass().getName()); } diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMService.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMService.java index 1ad3454..2ea57b1 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMService.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMService.java @@ -13,10 +13,10 @@ import java.util.Map; import javax.annotation.concurrent.ThreadSafe; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ServiceClassName; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ServiceFlowDirection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.Ccap; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ServiceClassName; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ServiceFlowDirection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccaps.Ccap; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; import org.pcmm.PCMMPdpAgent; import org.pcmm.PCMMPdpDataProcess; import org.pcmm.PCMMPdpMsgSender; @@ -29,6 +29,8 @@ import org.slf4j.LoggerFactory; import org.umu.cops.prpdp.COPSPdpException; import org.umu.cops.stack.COPSError; import org.umu.cops.stack.COPSError.ErrorTypes; +import java.nio.ByteBuffer; + /** * Class responsible for managing the gates for a single CCAP. @@ -136,6 +138,10 @@ public class PCMMService { } } + private static long getUnsignedInt(int x) { + return x & 0xFFFFFFFFL; + } + public GateSendStatus sendGateSet(final String gatePathStr, final InetAddress subId, final Gate qosGate) { GateSendStatus status = new GateSendStatus(); @@ -146,10 +152,17 @@ public class PCMMService { final PCMMGateReqBuilder gateBuilder = new PCMMGateReqBuilder(); gateBuilder.setAmId(ccap.getAmId()); gateBuilder.setSubscriberId(subId); - gateBuilder.setGateSpec(qosGate.getGateSpec(), null); + gateBuilder.setGateSpec(qosGate.getGateSpec()); gateBuilder.setTrafficProfile(qosGate.getTrafficProfile()); gateBuilder.setClassifiers(qosGate.getClassifiers().getClassifierContainer()); + if (qosGate.getCopsGateId() != null) { + long lgate = Long.parseLong(qosGate.getCopsGateId()); + gateBuilder.setGateId((int)lgate); + } + + logger.debug("PCMMService: sendGateSet(): formatting gate"); + // assemble the final gate request final PCMMGateReq gateReq = gateBuilder.build(); @@ -170,37 +183,34 @@ public class PCMMService { logger.debug("Gate request ID - " + gateReq.getGateID()); } } catch (Exception e) { - logger.error( - "PCMMService: sendGateSet(): gate response timeout exceeded for " + gatePathStr + '/' + gateReq, - e); + logger.error("PCMMService: sendGateSet(): gate response timeout exceeded for " + gatePathStr + '/' + gateReq, + e); status.setDidSucceed(false); status.setMessage(String.format("408 Request Timeout - gate response timeout exceeded for %s/%s", ccap.getCcapId(), - gatePathStr)); + gatePathStr)); return status; } - if (gateReq.getError() != null) { gateRequests.remove(gatePathStr); status.setDidSucceed(false); - status.setMessage( - String.format("404 Not Found - sendGateSet for %s/%s returned error - %s", ccap.getCcapId(), - gatePathStr, gateReq.getError().toString())); + status.setMessage(String.format("404 Not Found - sendGateSet for %s/%s returned error - %s", ccap.getCcapId(), + gatePathStr, gateReq.getError().toString())); logger.error("PCMMService: sendGateSet(): returned error: {}", gateReq.getError().toString()); } else { if (gateReq.getGateID() != null) { status.setDidSucceed(true); - status.setCopsGateId(String.format("%08x", gateReq.getGateID().getGateID())); - status.setMessage(String.format("200 OK - sendGateSet for %s/%s returned GateId %08x", - ccap.getCcapId(), gatePathStr, gateReq.getGateID().getGateID()) ); - logger.info(String.format("PCMMService: sendGateSet(): returned GateId %08x: ", - gateReq.getGateID().getGateID())); + status.setCopsGateId(String.format("%d", getUnsignedInt(gateReq.getGateID().getGateID()))); + status.setMessage(String.format("200 OK - sendGateSet for %s/%s returned GateId %d", + ccap.getCcapId(), gatePathStr, getUnsignedInt(gateReq.getGateID().getGateID())) ); + logger.info(String.format("PCMMService: sendGateSet(): returned GateId %d: ", + getUnsignedInt(gateReq.getGateID().getGateID()))); } else { status.setDidSucceed(false); status.setMessage( - String.format("404 Not Found - sendGateSet for %s/%s no gateId returned", ccap.getCcapId(), - gatePathStr)); + String.format("404 Not Found - sendGateSet for %s/%s no gateId returned", ccap.getCcapId(), + gatePathStr)); logger.info("PCMMService: sendGateSet(): no gateId returned:"); } @@ -235,8 +245,8 @@ public class PCMMService { return false; } else { if (gateReq.getGateID() != null) { - logger.info(String.format("PCMMService: sendGateDelete(): deleted GateId %08x: ", - gateReq.getGateID().getGateID())); + logger.info(String.format("PCMMService: sendGateDelete(): deleted GateId %d: ", + getUnsignedInt(gateReq.getGateID().getGateID()))); } else { logger.error("PCMMService: sendGateDelete(): deleted but no gateId returned"); } @@ -316,17 +326,15 @@ public class PCMMService { } else { if (gateReq.getGateID() != null) { status.setDidSucceed(true); - status.setCopsGateId(String.format("%08x", gateReq.getGateID().getGateID())); - //status.setMessage(String.format("200 OK - sendGateInfo for %s/%s returned GateId %08x", - // ccap.getCcapId(), gatePathStr, gateReq.getGateID().getGateID()) ); + status.setCopsGateId(String.format("%d", getUnsignedInt(gateReq.getGateID().getGateID()))); final IGateState gateState = gateReq.getGateState(); status.setCopsGateState(gateState.getGateState().toString()); status.setCopsGateStateReason(gateState.getGateStateReason().toString()); status.setCopsGateTimeInfo(String.format("%d", gateReq.getGateTimeInfo().getGateTimeInfo())); status.setCopsGateUsageInfo(String.format("%d", gateReq.getGateUsageInfo().getGateUsageInfo())); - logger.info(String.format("PCMMService: sendGateInfo(): returned GateId %08x: ", - gateReq.getGateID().getGateID())); + logger.info(String.format("PCMMService: sendGateInfo(): returned GateId %d: ", + getUnsignedInt(gateReq.getGateID().getGateID()))); } else { status.setDidSucceed(false); status.setMessage( @@ -421,41 +429,56 @@ public class PCMMService { logger.info("CcapClient: sendGateSet(): {}:{} => {}", ipv4, port, gateReq); try { pcmmSender.sendGateSet(gateReq); - - // TODO - determine if this is the correct place to perform this operation as this currently is the - // TODO - place where the gate ID can be set on the gateReq object - // pcmmSender.handleGateReport(pcmmPdp.getSocket()); - } catch (COPSPdpException e) { - logger.error("CcapClient: sendGateSet(): {}:{} => {} FAILED:", ipv4, port, gateReq, e); - } // and save it back to the gateRequest object for gate delete later gateReq.setGateID(pcmmSender.getGateID()); - - // TODO - determine why this method is always returning true??? return true; + } catch (COPSPdpException e) { + logger.error("CcapClient: sendGateSet(): {}:{} => {} FAILED: {}", ipv4, port, gateReq, + e.getMessage()); + return false; + } + catch (Exception e) { + logger.error("CcapClient: sendGateSet(): {}:{} => {} FAILED: {}", ipv4, port, gateReq, + e.getMessage()); + return false; + } } public Boolean sendGateDelete(final PCMMGateReq gateReq) { logger.info("CcapClient: sendGateDelete(): {}:{} => {}", ipv4, port, gateReq); try { pcmmSender.sendGateDelete(gateReq); + return true; } catch (COPSPdpException e) { - logger.error("CcapClient: sendGateDelete(): {}:{} => {} FAILED: {}", ipv4, port, gateReq, - e.getMessage()); + logger.error("CcapClient: sendGateDelete(): {}:{} => {} FAILED: {}", ipv4, port, + gateReq, e.getMessage()); + return false; } - return true; + catch (Exception e) { + logger.error("CcapClient: sendGateDelete(): {}:{} => {} FAILED: {}", ipv4, port, + gateReq, e.getMessage()); + return false; } + } public Boolean sendGateInfo(final PCMMGateReq gateReq) { logger.info("CcapClient: sendGateInfo(): {}:{} => {}", ipv4, port); try { pcmmSender.sendGateInfo(gateReq); + // and save it back to the gateRequest object for operational sal persistance + gateReq.setGateID(pcmmSender.getGateID()); + return true; } catch (COPSPdpException e) { logger.error("CcapClient: sendGateInfo(): {}:{} => {} FAILED: {}", ipv4, port, - e.getMessage()); + gateReq, e.getMessage()); + return false; } - return true; + catch (Exception e) { + logger.error("CcapClient: sendGateInfo(): {}:{} => {} FAILED: {}", ipv4, port, + gateReq, e.getMessage()); + return false; } } } +} diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PacketcableProvider.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PacketcableProvider.java index a11d21a..c845289 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PacketcableProvider.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PacketcableProvider.java @@ -54,52 +54,52 @@ import org.opendaylight.controller.sal.binding.api.BindingAwareProvider; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.serviceclass.name.profile.ServiceClassNameProfile; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.serviceclass.name.profile.ServiceClassNameProfileBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.AppContext; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.CcapContext; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.CcapPollConnectionInput; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.CcapPollConnectionOutput; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.CcapPollConnectionOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.CcapSetConnectionInput; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.CcapSetConnectionOutput; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.CcapSetConnectionOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.Ccaps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.PacketcableService; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.Qos; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.QosPollGatesInput; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.QosPollGatesOutput; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.QosPollGatesOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ServiceClassName; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ServiceFlowDirection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.ConnectionBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.Ccap; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.CcapBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gate.spec.GateSpec; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gate.spec.GateSpecBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.Apps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.App; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.AppBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.AppKey; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.Subscribers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.SubscribersBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.Subscriber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.SubscriberBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.SubscriberKey; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.GatesBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.GateBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.GateKey; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.TrafficProfile; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.TrafficProfileBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.TrafficProfileChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.FlowSpecChoiceBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoiceBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.FlowSpecChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.flow.spec.profile.FlowSpecProfile; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.serviceclass.name.profile.ServiceClassNameProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.serviceclass.name.profile.ServiceClassNameProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.serviceclass.name.profile.ServiceClassNameProfileBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.AppContext; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.CcapContext; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.CcapPollConnectionInput; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.CcapPollConnectionOutput; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.CcapPollConnectionOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.CcapSetConnectionInput; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.CcapSetConnectionOutput; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.CcapSetConnectionOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.Ccaps; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.PacketcableService; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.Qos; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.QosPollGatesInput; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.QosPollGatesOutput; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.QosPollGatesOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ServiceClassName; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ServiceFlowDirection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.ConnectionBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccaps.Ccap; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccaps.CcapBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gate.spec.GateSpec; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gate.spec.GateSpecBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.Apps; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.App; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.AppBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.AppKey; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.Subscribers; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.SubscribersBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.Subscriber; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.SubscriberBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.SubscriberKey; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.GatesBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.GateBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.GateKey; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.TrafficProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.TrafficProfileBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.TrafficProfileChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.FlowSpecChoiceBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoiceBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.FlowSpecChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.flow.spec.profile.FlowSpecProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.serviceclass.name.profile.ServiceClassNameProfile; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -933,15 +933,15 @@ public class PacketcableProvider implements BindingAwareProvider, AutoCloseable, } DateAndTime connectionDateAndTime = getNowTimeStamp(); - org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.set.connection.output.ccap.ConnectionBuilder + org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.set.connection.output.ccap.ConnectionBuilder connectionRpcOutput = - new org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.set.connection.output.ccap.ConnectionBuilder() + new org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.set.connection.output.ccap.ConnectionBuilder() .setConnected(effectiveIsConnected) .setError(outputError) .setTimestamp(connectionDateAndTime); - org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.set.connection.output.CcapBuilder ccapRpcOutput = - new org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.set.connection.output.CcapBuilder().setCcapId( + org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.set.connection.output.CcapBuilder ccapRpcOutput = + new org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.set.connection.output.CcapBuilder().setCcapId( ccapId).setConnection(connectionRpcOutput.build()); @@ -978,9 +978,9 @@ public class PacketcableProvider implements BindingAwareProvider, AutoCloseable, PCMMService pcmmService = pcmmServiceMap.get(ccapId); Boolean effectiveIsConnected = true; String response = null; - org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.poll.connection.output.ccap.ConnectionBuilder + org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.poll.connection.output.ccap.ConnectionBuilder connectionRpcOutput = - new org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.poll.connection.output.ccap.ConnectionBuilder(); + new org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.poll.connection.output.ccap.ConnectionBuilder(); if (pcmmService != null) { if (pcmmService.getPcmmPdpSocket()) { @@ -1010,7 +1010,7 @@ public class PacketcableProvider implements BindingAwareProvider, AutoCloseable, CcapBuilder responseCcapBuilder = new CcapBuilder().setCcapId(ccapId).setConnection(connectionOps.build()); connectionRpcOutput = - new org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.poll.connection.output.ccap.ConnectionBuilder() + new org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.poll.connection.output.ccap.ConnectionBuilder() .setConnected(effectiveIsConnected) .setError(outputError) .setTimestamp(connectionDateAndTime); @@ -1024,8 +1024,8 @@ public class PacketcableProvider implements BindingAwareProvider, AutoCloseable, DateAndTime rpcDateAndTime = getNowTimeStamp(); - org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.poll.connection.output.CcapBuilder ccapRpcOutput = - new org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.poll.connection.output.CcapBuilder().setCcapId( + org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.poll.connection.output.CcapBuilder ccapRpcOutput = + new org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.poll.connection.output.CcapBuilder().setCcapId( ccapId).setConnection(connectionRpcOutput.build()); CcapPollConnectionOutputBuilder outputBuilder = @@ -1091,8 +1091,8 @@ public class PacketcableProvider implements BindingAwareProvider, AutoCloseable, String rpcResponse = null; - org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.qos.poll.gates.output.GateBuilder gateOutputBuilder = - new org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.qos.poll.gates.output.GateBuilder(); + org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.qos.poll.gates.output.GateBuilder gateOutputBuilder = + new org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.qos.poll.gates.output.GateBuilder(); GateBuilder gateBuilder = new GateBuilder(); @@ -1256,8 +1256,8 @@ public class PacketcableProvider implements BindingAwareProvider, AutoCloseable, @Override public void run() { - org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.qos.poll.gates.output.GateBuilder gateOutputBuilder = - new org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.qos.poll.gates.output.GateBuilder(); + org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.qos.poll.gates.output.GateBuilder gateOutputBuilder = + new org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.qos.poll.gates.output.GateBuilder(); GateBuilder gateBuilder = new GateBuilder(); diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactory.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactory.java index 5ca381a..ed53ce9 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactory.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactory.java @@ -14,10 +14,10 @@ import org.opendaylight.controller.packetcable.provider.validation.impl.validato import org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps.CcapValidator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps.CcapsValidator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps.ConnectionValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.Ccaps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.AmId; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.Connection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.Ccap; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.Ccaps; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.AmId; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.Connection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccaps.Ccap; /** * A ValidatorProviderFactory that can provide validators for types under packetcable:ccaps. diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactory.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactory.java index 75ae992..8f0a17d 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactory.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactory.java @@ -23,19 +23,19 @@ import org.opendaylight.controller.packetcable.provider.validation.impl.validato import org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier.ClassifiersValidator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier.ExtClassifierValidator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier.Ipv6ClassifierValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.Classifiers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.ClassifierContainer; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.classifier.Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ext.classifier.ExtClassifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gate.spec.GateSpec; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.Apps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.App; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.Subscribers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.Subscriber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ipv6.classifier.Ipv6Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.TrafficProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.Classifiers; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.ClassifierContainer; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.classifier.Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.ext.classifier.ExtClassifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gate.spec.GateSpec; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.Apps; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.App; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.Subscribers; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.Subscriber; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.ipv6.classifier.Ipv6Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.TrafficProfile; /** * * A ValidatorProviderFactory that can provide validators for types under packetcable:qos. diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidator.java index 20fd7e9..a300a3b 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.AmId; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.AmId; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidator.java index 7b946c2..1c55e09 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.Ccap; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccaps.Ccap; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidator.java index 8670f0a..1c2c354 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidator.java @@ -9,8 +9,8 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.Ccaps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.Ccap; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.Ccaps; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccaps.Ccap; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidator.java index 537b770..0ba5799 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.Connection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.Connection; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidator.java index 66c1747..31d4291 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.App; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.App; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidator.java index 1564ec2..5582b31 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidator.java @@ -9,8 +9,8 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.Apps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.App; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.Apps; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.App; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidator.java index 5dd7844..2cd6036 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gate.spec.GateSpec; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gate.spec.GateSpec; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidator.java index e1ae769..db98d07 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidator.java @@ -10,7 +10,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validat import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier.ClassifiersValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidator.java index 4bef131..b43e6c1 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidator.java @@ -9,8 +9,8 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidator.java index 9eaf4cd..4c929a1 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.Subscriber; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.Subscriber; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidator.java index f9d06e0..fd90c3d 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidator.java @@ -9,8 +9,8 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.Subscribers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.Subscriber; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.Subscribers; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.Subscriber; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidator.java index 1d5f3a8..80d8816 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidator.java @@ -9,12 +9,14 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.TrafficProfile; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.TrafficProfileChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.FlowSpecChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.flow.spec.profile.FlowSpecProfile; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.serviceclass.name.profile.ServiceClassNameProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.TrafficProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.TrafficProfileChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.FlowSpecChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.RtpChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.UgsChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.flow.spec.profile.FlowSpecProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.serviceclass.name.profile.ServiceClassNameProfile; /** * @author rvail @@ -24,6 +26,8 @@ public class TrafficProfileValidator extends AbstractValidator { private static final String FS = "flow-spec-profile"; private static final String SCN = "service-class-name"; private static final String SCP = "service-class-name-profile"; + private static final String UGS = "ugs-profile"; + private static final String RTP = "rtp-profile"; @Override protected void doValidate(final TrafficProfile trafficProfile, final Extent extent) { @@ -36,6 +40,10 @@ public class TrafficProfileValidator extends AbstractValidator { mustExist(((ServiceClassNameChoice)trafficProfile.getTrafficProfileChoice()).getServiceClassNameProfile().getServiceClassName(), SCN); } else if (trafficProfile.getTrafficProfileChoice() instanceof FlowSpecChoice) { mustExist(((FlowSpecChoice)trafficProfile.getTrafficProfileChoice()).getFlowSpecProfile(), SCP); + } else if (trafficProfile.getTrafficProfileChoice() instanceof RtpChoice) { + mustExist(((RtpChoice)trafficProfile.getTrafficProfileChoice()).getRtpProfile(), RTP); + } else if (trafficProfile.getTrafficProfileChoice() instanceof UgsChoice) { + mustExist(((UgsChoice)trafficProfile.getTrafficProfileChoice()).getUgsProfile(), UGS); } else { getErrorMessages().add("Unknown traffic profile"); return; diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidator.java index 828532f..e8eea50 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidator.java @@ -9,10 +9,10 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.ClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.classifier.choice.ExtClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.classifier.choice.Ipv6ClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.ClassifierChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.classifier.choice.ExtClassifierChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.classifier.choice.Ipv6ClassifierChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoice; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidator.java index 991d315..1079e50 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.ClassifierContainer; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.ClassifierContainer; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidator.java index 95be5a1..f870e8e 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.classifier.Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.classifier.Classifier; /** diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidator.java index 0238cbd..aae377a 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidator.java @@ -9,9 +9,9 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.Classifiers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.ClassifierContainer; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.Classifiers; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.ClassifierContainer; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoice; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidator.java index 06b2642..f0f8fa4 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ext.classifier.ExtClassifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.ext.classifier.ExtClassifier; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidator.java index c9b9b18..9150618 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ipv6.classifier.Ipv6Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.ipv6.classifier.Ipv6Classifier; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/PCMMServiceTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/PCMMServiceTest.java index b34d758..417722c 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/PCMMServiceTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/PCMMServiceTest.java @@ -35,40 +35,41 @@ import org.junit.Test; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ServiceClassName; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ServiceFlowDirection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.TosByte; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.TpProtocol; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.AmId; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.Connection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.Ccap; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.Classifiers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.ClassifierContainer; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.classifier.Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gate.spec.GateSpec; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.flow.spec.profile.FlowSpecProfile; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.TrafficProfile; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.TrafficProfileBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.TrafficProfileChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.FlowSpecChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.FlowSpecChoiceBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoiceBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.serviceclass.name.profile.ServiceClassNameProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ServiceClassName; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ServiceFlowDirection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.TosByte; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.TpProtocol; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.AmId; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.Connection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccaps.Ccap; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.Classifiers; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.ClassifierContainer; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.flow.spec.profile.FlowSpecProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.classifier.Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gate.spec.GateSpec; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gate.spec.GateSpecBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.TrafficProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.TrafficProfileBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.TrafficProfileChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.FlowSpecChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.FlowSpecChoiceBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoiceBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.serviceclass.name.profile.ServiceClassNameProfile; import org.pcmm.PCMMPdpAgent; import org.pcmm.gates.IPCMMGate; import org.pcmm.rcd.IPCMMClient; import org.pcmm.rcd.impl.CMTS; import org.pcmm.rcd.impl.CMTSConfig; import org.umu.cops.stack.COPSClientSI; -import org.umu.cops.stack.COPSContext; import org.umu.cops.stack.COPSContext.RType; +import org.umu.cops.stack.COPSContext; import org.umu.cops.stack.COPSData; -import org.umu.cops.stack.COPSDecision; import org.umu.cops.stack.COPSDecision.Command; import org.umu.cops.stack.COPSDecision.DecisionFlag; +import org.umu.cops.stack.COPSDecision; import org.umu.cops.stack.COPSDecisionMsg; import org.umu.cops.stack.COPSHandle; import org.umu.cops.stack.COPSMsg; @@ -506,10 +507,17 @@ public class PCMMServiceTest { final ServiceClassName scn = ((ServiceClassNameChoice)gateReq.getTrafficProfile().getTrafficProfileChoice()).getServiceClassNameProfile().getServiceClassName(); if (scn != null) { - gateBuilder.setGateSpec(gateReq.getGateSpec(), direction); + final GateSpecBuilder gateSpecBuilder = new GateSpecBuilder(); + gateSpecBuilder.setDirection(direction); + gateSpecBuilder.setDscpTosMask(gateReq.getGateSpec().getDscpTosMask()); + gateSpecBuilder.setDscpTosOverwrite(gateReq.getGateSpec().getDscpTosOverwrite()); + gateSpecBuilder.setSessionClassId(gateReq.getGateSpec().getSessionClassId()); + gateSpecBuilder.setInactivityTimer(gateReq.getGateSpec().getInactivityTimer()); + final GateSpec gateSpec = gateSpecBuilder.build(); + gateBuilder.setGateSpec(gateSpec); } else { // not an SCN gate - gateBuilder.setGateSpec(gateReq.getGateSpec(), null); + gateBuilder.setGateSpec(gateReq.getGateSpec()); } gateBuilder.setTrafficProfile(gateReq.getTrafficProfile()); diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/DataValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/DataValidatorTest.java index 3df76b4..a9c2b5c 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/DataValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/DataValidatorTest.java @@ -21,7 +21,7 @@ import com.google.common.collect.Maps; import java.util.Map; import org.junit.Test; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps.CcapValidatorTest; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.Ccap; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccaps.Ccap; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactoryTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactoryTest.java index 25090ac..bb605e5 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactoryTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactoryTest.java @@ -14,10 +14,10 @@ import static org.hamcrest.MatcherAssert.assertThat; import org.junit.Test; import org.opendaylight.controller.packetcable.provider.validation.ValidatorProvider; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.Ccaps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.AmId; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.Connection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.Ccap; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.Ccaps; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.AmId; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.Connection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccaps.Ccap; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactoryTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactoryTest.java index 2c7f8c1..a6ee4d9 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactoryTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactoryTest.java @@ -14,19 +14,19 @@ import static org.hamcrest.MatcherAssert.assertThat; import org.junit.Test; import org.opendaylight.controller.packetcable.provider.validation.ValidatorProvider; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.Classifiers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.ClassifierContainer; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.classifier.Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ext.classifier.ExtClassifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gate.spec.GateSpec; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.Apps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.App; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.Subscribers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.Subscriber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ipv6.classifier.Ipv6Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.TrafficProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.Classifiers; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.ClassifierContainer; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.classifier.Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.ext.classifier.ExtClassifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gate.spec.GateSpec; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.Apps; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.App; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.Subscribers; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.Subscriber; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.ipv6.classifier.Ipv6Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.TrafficProfile; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderFactoryImplTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderFactoryImplTest.java index ae28fba..6b237a1 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderFactoryImplTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderFactoryImplTest.java @@ -14,23 +14,23 @@ import static org.hamcrest.MatcherAssert.assertThat; import org.junit.Test; import org.opendaylight.controller.packetcable.provider.validation.ValidatorProvider; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.Ccaps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.AmId; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.Connection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.Ccap; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.Classifiers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.ClassifierContainer; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.classifier.Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ext.classifier.ExtClassifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gate.spec.GateSpec; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.Apps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.App; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.Subscribers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.Subscriber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ipv6.classifier.Ipv6Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.TrafficProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.Ccaps; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.AmId; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.Connection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccaps.Ccap; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.Classifiers; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.ClassifierContainer; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.classifier.Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.ext.classifier.ExtClassifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gate.spec.GateSpec; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.Apps; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.App; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.Subscribers; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.Subscriber; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.ipv6.classifier.Ipv6Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.TrafficProfile; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderImplTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderImplTest.java index 3466678..fd099e3 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderImplTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderImplTest.java @@ -16,7 +16,7 @@ import org.opendaylight.controller.packetcable.provider.validation.ValidationExc import org.opendaylight.controller.packetcable.provider.validation.Validator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps.ConnectionValidator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps.ConnectionValidatorTest; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.Connection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.Connection; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidatorTest.java index 6394c20..daf3fa0 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidatorTest.java @@ -13,8 +13,8 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.AmId; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.AmIdBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.AmId; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.AmIdBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidatorTest.java index 316a191..8279ddd 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidatorTest.java @@ -14,9 +14,9 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ServiceClassName; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.Ccap; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.CcapBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ServiceClassName; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccaps.Ccap; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccaps.CcapBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidatorTest.java index cfa318c..8a21bfd 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidatorTest.java @@ -14,9 +14,9 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.Ccaps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.CcapsBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.Ccap; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.Ccaps; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.CcapsBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccaps.Ccap; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidatorTest.java index 8eafb18..26bf422 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidatorTest.java @@ -16,8 +16,8 @@ import org.opendaylight.controller.packetcable.provider.validation.Validator; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.Connection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.ConnectionBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.Connection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ccap.attributes.ConnectionBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidatorTest.java index 4b42c88..3beb0d4 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidatorTest.java @@ -13,8 +13,8 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.App; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.AppBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.App; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.AppBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidatorTest.java index 358776a..573e888 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidatorTest.java @@ -14,8 +14,8 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.Apps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.AppsBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.Apps; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.AppsBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidatorTest.java index 15d018d..ce541bf 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidatorTest.java @@ -13,10 +13,10 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ServiceFlowDirection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.TosByte; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gate.spec.GateSpec; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gate.spec.GateSpecBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ServiceFlowDirection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.TosByte; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gate.spec.GateSpec; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gate.spec.GateSpecBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidatorTest.java index 9b21b5c..e4f050a 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidatorTest.java @@ -14,8 +14,8 @@ import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier.ClassifiersValidatorTest; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.GateBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.GateBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidatorTest.java index 7b873ef..195fa02 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidatorTest.java @@ -14,8 +14,8 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.GatesBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.subscriber.GatesBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidatorTest.java index 8f74547..5b44ca9 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidatorTest.java @@ -13,8 +13,8 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.Subscriber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.SubscriberBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.Subscriber; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.subscribers.SubscriberBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidatorTest.java index 9bb0da1..05e1726 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidatorTest.java @@ -14,8 +14,8 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.Subscribers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.SubscribersBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.Subscribers; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.gates.apps.app.SubscribersBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidatorTest.java index f73ba1e..fa8ec22 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidatorTest.java @@ -13,13 +13,13 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ServiceClassName; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.TrafficProfile; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.TrafficProfileBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoiceBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.serviceclass.name.profile.ServiceClassNameProfile; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.serviceclass.name.profile.ServiceClassNameProfileBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ServiceClassName; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.TrafficProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.TrafficProfileBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.traffic.profile.traffic.profile.traffic.profile.choice.ServiceClassNameChoiceBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.serviceclass.name.profile.ServiceClassNameProfile; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.serviceclass.name.profile.ServiceClassNameProfileBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidatorTest.java index 42dab16..49bba56 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidatorTest.java @@ -13,12 +13,12 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.ClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.classifier.choice.ExtClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.classifier.choice.ExtClassifierChoiceBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.classifier.choice.Ipv6ClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.classifier.choice.Ipv6ClassifierChoiceBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoiceBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.ClassifierChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.classifier.choice.ExtClassifierChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.classifier.choice.ExtClassifierChoiceBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.classifier.choice.Ipv6ClassifierChoice; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.classifier.choice.Ipv6ClassifierChoiceBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoiceBuilder; import org.opendaylight.yangtools.yang.binding.DataContainer; /** diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidatorTest.java index 0fb083e..2019edf 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidatorTest.java @@ -13,8 +13,8 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.ClassifierContainer; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.ClassifierContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.ClassifierContainer; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.ClassifierContainerBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidatorTest.java index faa4779..dd94bad 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidatorTest.java @@ -15,10 +15,10 @@ import org.opendaylight.controller.packetcable.provider.validation.ValidationExc import org.opendaylight.controller.packetcable.provider.validation.Validator; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.TosByte; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.TpProtocol; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.classifier.Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.classifier.ClassifierBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.TosByte; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.TpProtocol; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.classifier.Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.classifier.ClassifierBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidatorTest.java index f2c3c3f..62a6c79 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidatorTest.java @@ -15,9 +15,9 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.Classifiers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.ClassifiersBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.ClassifierContainer; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.Classifiers; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.ClassifiersBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.classifier.attributes.classifiers.ClassifierContainer; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidatorTest.java index 02dd4b7..bfff591 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidatorTest.java @@ -15,11 +15,11 @@ import org.opendaylight.controller.packetcable.provider.validation.ValidationExc import org.opendaylight.controller.packetcable.provider.validation.Validator; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ClassifierActivationState; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.TosByte; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.TpProtocol; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ext.classifier.ExtClassifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ext.classifier.ExtClassifierBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ClassifierActivationState; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.TosByte; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.TpProtocol; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.ext.classifier.ExtClassifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.ext.classifier.ExtClassifierBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidatorTest.java index ae1573c..a3702bd 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidatorTest.java @@ -15,11 +15,11 @@ import org.opendaylight.controller.packetcable.provider.validation.ValidationExc import org.opendaylight.controller.packetcable.provider.validation.Validator; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ClassifierActivationState; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.TosByte; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.TpProtocol; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ipv6.classifier.Ipv6Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ipv6.classifier.Ipv6ClassifierBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.ClassifierActivationState; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.TosByte; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.TpProtocol; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.ipv6.classifier.Ipv6Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev170125.pcmm.qos.ipv6.classifier.Ipv6ClassifierBuilder; /** * @author rvail