Added support for RTP and UGS gate traffic profiles 21/51421/4
authorJeffrey Pedigo <jeff@appliedbroadband.com>
Fri, 3 Feb 2017 21:54:24 +0000 (14:54 -0700)
committerRyan Vail <r.vail@cablelabs.com>
Sat, 18 Feb 2017 01:47:50 +0000 (01:47 +0000)
Bug:7110

Change-Id: I073164c421cd24666d159c872b96289ae72ac62d
Signed-off-by: Jeffrey Pedigo <jeff@appliedbroadband.com>
53 files changed:
packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISFlowSpecTrafficProfile.java
packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISRTPTrafficProfile.java [new file with mode: 0644]
packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISUGSTrafficProfile.java [new file with mode: 0644]
packetcable-driver/src/main/java/org/pcmm/gates/impl/PCMMGateReq.java
packetcable-emulator/src/main/java/org/pcmm/rcd/impl/CmtsPepReqStateMan.java
packetcable-policy-model/src/main/yang/packetcable.yang
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMGateReqBuilder.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMService.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PacketcableProvider.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactory.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactory.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidator.java
packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidator.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/PCMMServiceTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/DataValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactoryTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactoryTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderFactoryImplTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderImplTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidatorTest.java
packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidatorTest.java

index 910c94a5c4cf7191c77d7b085e126af4b2a1b1f6..11925b784004d601aeffdcb647441ccb80843615 100644 (file)
@@ -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 (file)
index 0000000..fa67e10
--- /dev/null
@@ -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 (file)
index 0000000..05973c9
--- /dev/null
@@ -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();
+  }
+}
index 94a268d50792f069c2e99d36ea20d173da8c6677..d9e29a03b2d7efe79f44799547c4b8882bda5f56 100644 (file)
@@ -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;
index 5bd80a1b93498a2444d07bf3da636f902980d700..b63fc46f5f34551becb67f9ebce7aa33641cc8f7 100644 (file)
@@ -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)
index aad1e55b6a89c528aeb61d03af5badc7e91504c0..1c2fa444a885b1bee9e1b6a11840f50de02bd3ba 100644 (file)
@@ -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";
+            }
+        }
     }
 }
index 1d72875725343b9b9c9b1e394e1f9a0ce292c486..96fb041f5142001cd73cfd72fc6f2f5cdaf67cd8 100644 (file)
@@ -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());
         }
index 1ad345484f5ea8ed606451aaf2cc0f9c81081d67..2ea57b1af61911806cd17501e6f45928bad41197 100644 (file)
@@ -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;
         }
     }
 }
+}
 
index a11d21a7a1faed5a2c3b2632cea339576f72bdda..c845289258b1b70061a2b9a3ecf3406804a94313 100644 (file)
@@ -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();
 
index 5ca381ad708a794e5e64bb18197758e57e40822b..ed53ce9084a37ee5199994ca339a2726dfbfa87d 100644 (file)
@@ -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.
index 75ae9929cb070a16b5f2143403659c85976e40db..8f0a17ddf5f881c844b6deaefe30d3f7724c60f5 100644 (file)
@@ -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.
index 20fd7e97d1a3919de469553e47dbf7ff26ee901b..a300a3ba28edf42d350da1b28e69d4ed982df720 100644 (file)
@@ -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
index 7b946c23959ef4407e3ddab7d11bd42d430d96fc..1c55e09758fc9136c13258f11e89954a43ee8b88 100644 (file)
@@ -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
index 8670f0ad63397d5cbcc2203713e38fee48890c8a..1c2c3540dd66b18115348c50d753785b4976e073 100644 (file)
@@ -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
index 537b77077ff61a0d71ade273fdbbb96900e403d6..0ba5799257e56861f9346e925c4132f3149d7cce 100644 (file)
@@ -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
index 66c1747bbe05b9374401093078935c3fac38964e..31d42917b0c2ce389cf83e717bbadb01e7e6ab71 100644 (file)
@@ -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
index 1564ec2f10a103bbb069d469ee3cd77c69f80009..5582b31900931a5f73b58eced27866b7b2ea17d2 100644 (file)
@@ -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
index 5dd784429930d12185c740414d274f631c4a011f..2cd603674c5c4ec738273a2bc64aa29447dc1b4e 100644 (file)
@@ -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
index e1ae7692796a02cf6ee595c9c7ec1597bcc712a9..db98d07a60a314e6cd19ac0919bd308ccd0b1e4b 100644 (file)
@@ -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
index 4bef131b150cc0057bd6fb610e8e2f7b7cdc2e82..b43e6c13772fe588e17e2f5b117178626498fe26 100644 (file)
@@ -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
index 9eaf4cd814d3320b13957d1cda0ee79007b66fdc..4c929a16ff42efa332bb65d95db8e7d0eaebe453 100644 (file)
@@ -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
index f9d06e0c1c9516ec3eee9337270d46300501c996..fd90c3d5fbb6d78163ed333ec7ca6300c3b3e834 100644 (file)
@@ -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
index 1d5f3a85665c9e04f866ed6eacb0f300e2f1b5f4..80d8816a25d04f0f017dbf4ed1124dd514e2d175 100644 (file)
@@ -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<TrafficProfile> {
     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<TrafficProfile> {
             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;
index 828532fe1ce91f4109f6e576532c809aa638291c..e8eea5093cf296c5e4f59cd6c15291f35d36afc9 100644 (file)
@@ -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
index 991d315d484020e69e725e5bad505dd0497033f7..1079e50ebfab44faa4e85ee2fb32d719ac6bc780 100644 (file)
@@ -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
index 95be5a10259f1511b0b288ef47a8870d8ed1f6a7..f870e8e224593b325282080464100fbd523bf05a 100644 (file)
@@ -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;
 
 
 /**
index 0238cbd9bbae8494919b257b5bfb48eaac81b2fa..aae377acd03867f736856e1999791a58291de0c4 100644 (file)
@@ -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
index 06b264265131f634184527de780aa6b0e2d849af..f0f8fa4967e7b03e5c17b1b3d46745ada35974be 100644 (file)
@@ -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
index c9b9b1899c3167202ff924b58c003ab202ef7e23..9150618ee5192e290da71247457e43d24c9916d6 100644 (file)
@@ -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
index b34d758cc5d7aa04f1fa681034626bc1ce5e850c..417722cea45ebfcfe86888873672b9748e1949b2 100644 (file)
@@ -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());
 
index 3df76b46fcf6baf809a0d843c0ec5d6dab8910f7..a9c2b5c744b0ed62de2949170dd99e7325465af6 100644 (file)
@@ -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;
 
index 25090ac5c9f6ce4619a3bc8c4beb7cdc5a4d8855..bb605e5706df0280a16eee6290b027ed8d7599ff 100644 (file)
@@ -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
index 2c7f8c11b415e55d7e7eac0d86ca64d5d880e2af..a6ee4d902ea760698f25674c9250529e61bd5e8f 100644 (file)
@@ -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
index ae28fba891981052ce99d7eaf0feb7d8d9a5e33b..6b237a1fff539b53e52c27bcab41798315eb7ed6 100644 (file)
@@ -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
index 3466678cfffa9653d68d9aa69157f7c354edf604..fd099e39ed247af50a7cb299d82e4d2ba9a8456f 100644 (file)
@@ -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
index 6394c20af402583ab6ad4ac1a9b77f743220d874..daf3fa00c58a88d5bd3cdca89ab7509f975cef75 100644 (file)
@@ -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
index 316a19173da793a91b14afa422b5742b42048e13..8279ddd89d2a686cc6ab04ef4b567478952b6586 100644 (file)
@@ -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
index cfa318c5e0480f39eaf600e2b58ae212036dc6c4..8a21bfd6e2ffc4d337ad761c2c064a7e60361737 100644 (file)
@@ -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
index 8eafb18c5579009c724eaae7b2294f905b2c5c17..26bf422e2330550fa082064077de10dd667dfd0d 100644 (file)
@@ -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
index 4b42c88df9e27c5b109aa49c2301ff8e222578fb..3beb0d475997f482cf4db899ca0565bcc5753bf7 100644 (file)
@@ -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
index 358776ac3342f6409f59646b23cca3e01a2d135b..573e888803ee74681f74b8a0d35831fcaa898c1e 100644 (file)
@@ -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
index 15d018dba85d5d1524720f2da2a9e39f94af687d..ce541bfd731ec487b5571e8ccf2895a61ad06fa8 100644 (file)
@@ -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
index 9b21b5ccf394133e36743b63efd6feb739f85dc6..e4f050a3575cdda2f0409fbe2c72c2253a5fdc9e 100644 (file)
@@ -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
index 7b873ef535d2917a1d128fccc337d6d311212201..195fa0214f2621bc788cfabb2195f6d67d4e2326 100644 (file)
@@ -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
index 8f74547b9f48ef0e1134277f567c8aa01f185956..5b44ca988afd488f7b6e576cb92fd58cf9bff382 100644 (file)
@@ -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
index 9bb0da19d1cb3bbe153cbacd44d323904fc990c6..05e1726610b27d87528fd32461994122233728d6 100644 (file)
@@ -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
index f73ba1e2e04f497fb43492fc4863ec708724e387..fa8ec22875333841520fa6870b2cf68e10d94897 100644 (file)
@@ -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
index 42dab16ef836e3c4cdca27ee603c7873011a76dd..49bba56c875dba6f777ea51ebf55905a6033b4b9 100644 (file)
@@ -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;
 
 /**
index 0fb083e5875cb63e68684ae32150ef6c5b93b5e6..2019edf026e17251660afb23be727ddbe62fa758 100644 (file)
@@ -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
index faa4779bb4eb4556edb769e39d24d74af2614896..dd94badb719c26e44a5fb48871ae9f0d68c140d2 100644 (file)
@@ -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
index f2c3c3ff48f468058aa308b9a1c68f44725e4af9..62a6c79ba237e0fc2c2c3a561448a45256122c61 100644 (file)
@@ -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
index 02dd4b7c0d531f90c7d3c48de68f759a309afa2b..bfff5911c5780f1fce0df7467fc6d5a9f8b422c5 100644 (file)
@@ -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
index ae1573c9bc8141cf7385104297ba22388229d914..a3702bdc9436b51687ecbc28b60ffb95c1dfbdf7 100644 (file)
@@ -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