From: Jeffrey Pedigo Date: Fri, 23 Dec 2016 19:18:31 +0000 (-0700) Subject: Added FlowSpec Traffic Profile feature X-Git-Tag: release/carbon~5 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=115a89cc11be8bed87add5c17077d3a493e10fd4;p=packetcable.git Added FlowSpec Traffic Profile feature Bug: 7109 Change-Id: Ie091b280c12688e682938848e163fff5a4c35931 Signed-off-by: Jeffrey Pedigo --- diff --git a/packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISFlowSpecTrafficProfile.java b/packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISFlowSpecTrafficProfile.java new file mode 100644 index 0000000..910c94a --- /dev/null +++ b/packetcable-driver/src/main/java/org/pcmm/gates/impl/DOCSISFlowSpecTrafficProfile.java @@ -0,0 +1,311 @@ +/* + * 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 Flow Spec object defines the Flow Spec Traffic Profile of a Gate. + * + */ +public class DOCSISFlowSpecTrafficProfile extends PCMMBaseObject implements ITrafficProfile { + + private final Logger logger = LoggerFactory.getLogger(DOCSISFlowSpecTrafficProfile.class); + public static final byte STYPE = 1; + public static final byte SERVICE_NUMBER = 2; + + /** + * The envelope + */ + private final byte envelope; + private final int tokenBucketRate; + private final int tokenBucketSize; + private final int peakDataRate; + private final int minimumPolicedUnit; + private final int maximumPacketSize; + private final int rate; + private final int slackTerm; + + /** + * Constructor using the default envelope values + * @param tokenBucketRate - Token Bucket Rate value [r] + * @param tokenBucketSize - Token Bucket Size value [b] + * @param peakDataRate - Peak Data Rate value [p] + * @param minimumPolicedUnit - Minimum Policed Unit value [m] + * @param maximumPacketSize - Maximum Packet Size value [M] + * @param rate - Rate value [R] + * @param slackTerm - Slack Term value [S] + */ + public DOCSISFlowSpecTrafficProfile(final int tokenBucketRate, + final int tokenBucketSize, + final int peakDataRate, + final int minimumPolicedUnit, + final int maximumPacketSize, + final int rate, + final int slackTerm ) { + this(DEFAULT_ENVELOP, tokenBucketRate, tokenBucketSize, peakDataRate, + minimumPolicedUnit, maximumPacketSize, rate, slackTerm); + } + + /** + * Constructor to set all values + * @param envelope - the envelope value + * @param tokenBucketRate - Token Bucket Rate value [r] + * @param tokenBucketSize - Token Bucket Size value [b] + * @param peakDataRate - Peak Data Rate value [p] + * @param minimumPolicedUnit - Minimum Policed Unit value [m] + * @param maximumPacketSize - Maximum Packet Size value [M] + * @param rate - Rate value [R] + * @param slackTerm - Slack Term value [S] + */ + protected DOCSISFlowSpecTrafficProfile(final byte envelope, + final int tokenBucketRate, + final int tokenBucketSize, + final int peakDataRate, + final int minimumPolicedUnit, + final int maximumPacketSize, + final int rate, + final int slackTerm) { + super(SNum.TRAFFIC_PROFILE, STYPE); + this.tokenBucketRate = tokenBucketRate; + this.tokenBucketSize = tokenBucketSize; + this.peakDataRate = peakDataRate; + this.minimumPolicedUnit = minimumPolicedUnit; + this.maximumPacketSize = maximumPacketSize; + this.rate = rate; + this.slackTerm = slackTerm; + this.envelope = envelope; + } + + @Override + public byte getEnvelop() { + return envelope; + } + + /** + * Returns the token bucket rate value + * @return - the token bucket rate value + */ + public int getTokenBucketRate() { + return tokenBucketRate; + } + + /** + * Returns the token bucket size value + * @return - the token bucket size value + */ + public int getTokenBucketSize() { + return tokenBucketSize; + } + + /** + * Returns the peak data rate value + * @return - the peak data rate value + */ + public int getPeakDataRate() { + return peakDataRate; + } + + /** + * Returns the minimum policed unit value + * @return - the minimum policed unit value + */ + public int getMinimumPolicedUnit() { + return minimumPolicedUnit; + } + + /** + * Returns the maximum packet size value + * @return - the maximum packet size value + */ + public int getMaximumPacketSize() { + return maximumPacketSize; + } + + /** + * Returns the rate value + * @return - the rate value + */ + public int getRate() { + return rate; + } + + /** + * Returns the slack term value + * @return - the slack term value + */ + public int getSlackTerm() { + return slackTerm; + } + + @Override + protected byte[] getBytes() { + final byte[] data = new byte[4+(4*7*3)]; + + 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 + + // 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); + + // 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); + + // 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); + return data; + } + + @Override + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (!(o instanceof DOCSISFlowSpecTrafficProfile)) { + return false; + } + if (!super.equals(o)) { + return false; + } + final DOCSISFlowSpecTrafficProfile that = (DOCSISFlowSpecTrafficProfile) o; + return (envelope == that.envelope) && + (tokenBucketRate == that.tokenBucketRate) && + (tokenBucketSize == that.tokenBucketSize) && + (peakDataRate == that.peakDataRate) && + (minimumPolicedUnit == that.minimumPolicedUnit) && + (maximumPacketSize == that.maximumPacketSize) && + (rate == that.rate) && + (slackTerm == that.slackTerm); + } + + @Override + public int hashCode() { + int result = super.hashCode(); + result = 31 * result + tokenBucketRate; + result = 31 * result + tokenBucketSize; + result = 31 * result + peakDataRate; + result = 31 * result + minimumPolicedUnit; + result = 31 * result + maximumPacketSize; + result = 31 * result + rate; + result = 31 * result + slackTerm; + 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 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 DOCSISFlowSpecTrafficProfile 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 DOCSISFlowSpecTrafficProfile parse(final byte[] data) { + byte env = 0; + int mpu=0,mps=0,st=0; + float tbr=0,tbs=0,pdr=0,r=0; + + env = data[0]; + + tbr = byteToFloat(data, 4); + tbs = byteToFloat(data, 8); + pdr = byteToFloat(data, 12); + mpu = byteToInt(data, 16); + mps = byteToInt(data, 20); + r = byteToFloat(data, 24); + st = byteToInt(data, 28); + // + // 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 + // + int itbr = Math.round(tbr), itbs = Math.round(tbs), + ipdr = Math.round(pdr), ir = Math.round(r); + + return new DOCSISFlowSpecTrafficProfile(env, itbr, itbs, ipdr, + mpu, mps, ir, st); + } + + /** + * {@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("TokenBucketRate: ").append(tokenBucketRate); + sb.append(variableSeparator); + sb.append("TokenBucketSize: ").append(tokenBucketSize); + sb.append(variableSeparator); + sb.append("PeakDataRate: ").append(peakDataRate); + sb.append(variableSeparator); + sb.append("MinimumPolicedUnit: ").append(minimumPolicedUnit); + sb.append(variableSeparator); + sb.append("MaximumPacketSize: ").append(maximumPacketSize); + sb.append(variableSeparator); + sb.append("Rate: ").append(rate); + sb.append(variableSeparator); + sb.append("SlackTerm: ").append(slackTerm); + + return sb.toString(); + } +} diff --git a/packetcable-driver/src/main/java/org/pcmm/gates/impl/PCMMGateReq.java b/packetcable-driver/src/main/java/org/pcmm/gates/impl/PCMMGateReq.java index af3fac1..94a268d 100644 --- a/packetcable-driver/src/main/java/org/pcmm/gates/impl/PCMMGateReq.java +++ b/packetcable-driver/src/main/java/org/pcmm/gates/impl/PCMMGateReq.java @@ -12,7 +12,23 @@ import com.google.common.collect.Lists; import com.google.common.primitives.Bytes; import java.util.Collections; import org.pcmm.base.impl.PCMMBaseObject.SNum; -import org.pcmm.gates.*; +import org.pcmm.gates.IAMID; +import org.pcmm.gates.IClassifier; +import org.pcmm.gates.ISubscriberID; +import org.pcmm.gates.ITransactionID; +import org.pcmm.gates.IGateSpec; +import org.pcmm.gates.IGateTimeInfo; +import org.pcmm.gates.ITrafficProfile; +import org.pcmm.gates.IPCMMError; +import org.pcmm.gates.IPCMMGate; +import org.pcmm.gates.IGateID; +import org.pcmm.gates.IExtendedClassifier; +import org.pcmm.gates.IIPv6Classifier; +import org.pcmm.gates.IGateState; +import org.pcmm.gates.IGateUsageInfo; +import org.pcmm.gates.impl.DOCSISServiceClassNameTrafficProfile; +import org.pcmm.gates.impl.DOCSISFlowSpecTrafficProfile; +import org.pcmm.gates.impl.BestEffortService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -108,64 +124,67 @@ public class PCMMGateReq implements IPCMMGate { final int dataIndx = offset + 4; byte[] dataBuffer = Arrays.copyOfRange(data, dataIndx, dataIndx + len - 4); switch (sNum) { - case GATE_ID: - gateID = GateID.parse(dataBuffer); + case GATE_ID: + gateID = GateID.parse(dataBuffer); + break; + case AMID: + amid = AMID.parse(dataBuffer); + break; + case SUBSCRIBER_ID: + subscriberID = SubscriberID.parse(dataBuffer); + break; + case TRANSACTION_ID: + transactionID = TransactionID.parse(dataBuffer); + break; + case GATE_SPEC: + gateSpec = GateSpec.parse(dataBuffer); + break; + case TRAFFIC_PROFILE: + switch (sType) { + case DOCSISServiceClassNameTrafficProfile.STYPE: + trafficProfile = DOCSISServiceClassNameTrafficProfile.parse(dataBuffer); break; - case AMID: - amid = AMID.parse(dataBuffer); + case DOCSISFlowSpecTrafficProfile.STYPE: + trafficProfile = DOCSISFlowSpecTrafficProfile.parse(dataBuffer); break; - case SUBSCRIBER_ID: - subscriberID = SubscriberID.parse(dataBuffer); + case BestEffortService.STYPE: + trafficProfile = BestEffortService.parse(dataBuffer); break; - case TRANSACTION_ID: - transactionID = TransactionID.parse(dataBuffer); + } + break; + case CLASSIFIERS: + switch (sType) { + case IClassifier.STYPE: + classifiers.add(Classifier.parse(dataBuffer)); break; - case GATE_SPEC: - gateSpec = GateSpec.parse(dataBuffer); + case IExtendedClassifier.STYPE: + classifiers.add(ExtendedClassifier.parse(dataBuffer)); break; - case TRAFFIC_PROFILE: - switch (sType) { - case DOCSISServiceClassNameTrafficProfile.STYPE: - trafficProfile = DOCSISServiceClassNameTrafficProfile.parse(dataBuffer); - break; - case BestEffortService.STYPE: - trafficProfile = BestEffortService.parse(dataBuffer); - break; - } - break; - case CLASSIFIERS: - switch (sType) { - case IClassifier.STYPE: - classifiers.add(Classifier.parse(dataBuffer)); - break; - case IExtendedClassifier.STYPE: - classifiers.add(ExtendedClassifier.parse(dataBuffer)); - break; - case IIPv6Classifier.STYPE: - classifiers.add(IPv6Classifier.parse(dataBuffer)); - break; - } - break; - case PCMM_ERROR: - error = PCMMError.parse(dataBuffer); + case IIPv6Classifier.STYPE: + classifiers.add(IPv6Classifier.parse(dataBuffer)); break; + } + break; + case PCMM_ERROR: + error = PCMMError.parse(dataBuffer); + break; //adding GATE_STATE - case GATE_STATE: - gateState = GateState.parse(dataBuffer); - break; + case GATE_STATE: + gateState = GateState.parse(dataBuffer); + break; //adding GATE_TIME_INFO - case GATE_TIME_INFO: - gateTimeInfo = GateTimeInfo.parse(dataBuffer); - logger.info("Gate Time Info: "+gateTimeInfo); - break; + case GATE_TIME_INFO: + gateTimeInfo = GateTimeInfo.parse(dataBuffer); + logger.info("Gate Time Info: "+gateTimeInfo); + break; //adding GATE_USAGE_INFO - case GATE_USAGE_INFO: - gateUsageInfo = GateUsageInfo.parse(dataBuffer); - logger.info("Gate Usage Info: "+gateUsageInfo); - break; + case GATE_USAGE_INFO: + gateUsageInfo = GateUsageInfo.parse(dataBuffer); + logger.info("Gate Usage Info: "+gateUsageInfo); + break; default: logger.warn("Unhandled Object skept : S-NUM=" + sNum - + " S-TYPE=" + sType + " LEN=" + len); + + " S-TYPE=" + sType + " LEN=" + len); } offset += len; } diff --git a/packetcable-emulator/src/main/java/org/pcmm/rcd/impl/CmtsPepReqStateMan.java b/packetcable-emulator/src/main/java/org/pcmm/rcd/impl/CmtsPepReqStateMan.java index f2bb2be..5bd80a1 100644 --- a/packetcable-emulator/src/main/java/org/pcmm/rcd/impl/CmtsPepReqStateMan.java +++ b/packetcable-emulator/src/main/java/org/pcmm/rcd/impl/CmtsPepReqStateMan.java @@ -35,6 +35,7 @@ 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.GateID; import org.pcmm.gates.impl.GateSpec; import org.pcmm.gates.impl.GateState; @@ -259,6 +260,9 @@ public class CmtsPepReqStateMan extends COPSPepReqStateMan { case GATE_INFO: processGateInfo(gateReq, socket); break; + case GATE_DELETE: + processGateDelete(gateReq, socket); + break; default: logger.error("Emulator does not support gate command: {}", gateReq.getTransactionID().getGateCommandType()); @@ -340,9 +344,15 @@ public class CmtsPepReqStateMan extends COPSPepReqStateMan { } } else { - // Traffic profile - - if (gateReq.getTrafficProfile() instanceof DOCSISServiceClassNameTrafficProfile) { + // 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()); + return new PCMMError(ErrorCode.OTHER_UNSPECIFIED); + } + // ServiceClassName match check + else if (gateReq.getTrafficProfile() instanceof DOCSISServiceClassNameTrafficProfile) { final DOCSISServiceClassNameTrafficProfile scnTrafficProfile = (DOCSISServiceClassNameTrafficProfile) gateReq.getTrafficProfile(); @@ -355,11 +365,6 @@ public class CmtsPepReqStateMan extends COPSPepReqStateMan { if (!directionSCNs.contains(scnTrafficProfile.getScnName())) { return new PCMMError(ErrorCode.UNDEF_SCN_NAME); } - } else { - // TODO remote this after other profiles are supported - logger.error("Currently only DOCSIS Service Class Name Traffic Profiles are supported: attempted {}", - gateReq.getTrafficProfile().getClass().getName()); - return new PCMMError(ErrorCode.OTHER_UNSPECIFIED); } // number of classifiers @@ -368,8 +373,6 @@ public class CmtsPepReqStateMan extends COPSPepReqStateMan { } } - - // SubscriberID String subId = gateReq.getSubscriberID().getSourceIPAddress().getHostAddress(); if(!config.getModemStatus().containsKey(subId) || !config.getModemStatus().get(subId)) { @@ -387,9 +390,6 @@ public class CmtsPepReqStateMan extends COPSPepReqStateMan { } } - - - return null; } @@ -406,7 +406,6 @@ public class CmtsPepReqStateMan extends COPSPepReqStateMan { return error; } - return null; } @@ -416,10 +415,15 @@ public class CmtsPepReqStateMan extends COPSPepReqStateMan { final Direction gateDir = gateReq.getGateSpec().getDirection(); final String serviceClassName; - if ((gateReq.getTrafficProfile() instanceof DOCSISServiceClassNameTrafficProfile)) { - serviceClassName = ((DOCSISServiceClassNameTrafficProfile) gateReq.getTrafficProfile()).getScnName(); + 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 { serviceClassName = null; + logger.error("Unknown Traffic Profile type: " + gateReq.getTrafficProfile().getClass().getName()); } final IPCMMError error = getGateError(gateReq); @@ -532,6 +536,36 @@ public class CmtsPepReqStateMan extends COPSPepReqStateMan { sendReport(reportType, copsClientSI, socket); } + private void processGateDelete(final PCMMGateReq gateReq, final Socket socket) throws COPSException { + logger.info("GateDelete"); + + final TransactionID transactionID; + final ReportType reportType; + transactionID = new TransactionID(gateReq.getTransactionID().getTransactionIdentifier(), + ITransactionID.GateCommandType.GATE_DELETE_ACK); + reportType = ReportType.SUCCESS; + + final List data = new ArrayList<>(); + addBytesToList(transactionID.getAsBinaryArray(), data); + addBytesToList(gateReq.getAMID().getAsBinaryArray(), data); + addBytesToList(gateReq.getSubscriberID().getAsBinaryArray(), data); + addBytesToList(gateReq.getGateID().getAsBinaryArray(), data); + + GateMetaData exisitingGate = gateStateMap.get(gateReq.getGateID()); + gateStateMap.remove(gateReq.getGateID()); + + GateState gateState = new GateState(IGateState.GateStateType.COMMITTED, + IGateState.GateStateReasonType.OTHER); + addBytesToList(gateState.getAsBinaryArray(), data); + + logger.info("Deleting " + reportType + " for gate delete request on gate " + exisitingGate.getGateReq().getGateID() ); + + final byte[] csiArr = Bytes.toArray(data); + COPSClientSI copsClientSI = new COPSClientSI(CNum.CSI, CType.DEF, new COPSData(csiArr, 0, csiArr.length)); + + sendReport(reportType, copsClientSI, socket); + } + private void sendReport(ReportType reportType, COPSClientSI copsClientSI, final Socket socket) throws COPSPepException { logger.info("Returning {} for gate request", reportType); diff --git a/packetcable-policy-model/src/main/yang/packetcable.yang b/packetcable-policy-model/src/main/yang/packetcable.yang index 6066b58..aad1e55 100644 --- a/packetcable-policy-model/src/main/yang/packetcable.yang +++ b/packetcable-policy-model/src/main/yang/packetcable.yang @@ -10,6 +10,9 @@ module packetcable description "This module contains the PCMM Converged Cable Access Platform (CCAP) definitions"; organization "OpenDaylight Project"; + revision 2016-12-19 { + description "Added support for flow-spec traffic profile"; + } revision 2016-11-28 { description "Added support for activation-state, session-class-id and inactivity-timer"; } @@ -341,6 +344,19 @@ module packetcable grouping pcmm-qos-traffic-profile { container traffic-profile { + choice traffic-profile-choice { + case service-class-name-choice { + uses pcmm-serviceclass-name-profile; + } + case flow-spec-choice { + uses pcmm-flow-spec-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"; @@ -349,7 +365,47 @@ module packetcable } } - grouping tp-port-match-ranges { + 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 { leaf srcPort-start { type inet:port-number; description "TCP/UDP source port range start."; diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMGateReqBuilder.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMGateReqBuilder.java index ed18ae3..1d72875 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMGateReqBuilder.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMGateReqBuilder.java @@ -16,19 +16,21 @@ import java.net.Inet6Address; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.List; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ServiceFlowDirection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.TosByte; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.AmId; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.ClassifierContainer; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.ClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.classifier.choice.ExtClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.classifier.choice.Ipv6ClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.classifier.Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.ext.classifier.ExtClassifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gate.spec.GateSpec; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.ipv6.classifier.Ipv6Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.traffic.profile.TrafficProfile; +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.pcmm.gates.IClassifier; import org.pcmm.gates.IClassifier.Protocol; import org.pcmm.gates.IExtendedClassifier; @@ -38,6 +40,7 @@ import org.pcmm.gates.IIPv6Classifier.FlowLabel; 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.GateID; import org.pcmm.gates.impl.GateState; import org.pcmm.gates.impl.GateTimeInfo; @@ -49,7 +52,11 @@ import org.pcmm.gates.impl.SubscriberID; import org.pcmm.gates.impl.TransactionID; 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; + /** * Build PCMM gate requests from API QoS Gate objects */ @@ -138,9 +145,24 @@ public class PCMMGateReqBuilder { } public void setTrafficProfile(final TrafficProfile qosTrafficProfile) { - if (qosTrafficProfile.getServiceClassName() != null) { - trafficProfile = - new DOCSISServiceClassNameTrafficProfile(qosTrafficProfile.getServiceClassName().getValue()); + TrafficProfileChoice choice = qosTrafficProfile.getTrafficProfileChoice(); + + if (choice instanceof ServiceClassNameChoice) { + ServiceClassNameProfile scnp = ((ServiceClassNameChoice)choice).getServiceClassNameProfile(); + trafficProfile = new DOCSISServiceClassNameTrafficProfile(scnp.getServiceClassName().getValue()); + } + else if (choice instanceof FlowSpecChoice) { + FlowSpecProfile fsp = ((FlowSpecChoice)choice).getFlowSpecProfile(); + trafficProfile = new DOCSISFlowSpecTrafficProfile(fsp.getTokenBucketRate(), + fsp.getTokenBucketSize(), + fsp.getPeakDataRate(), + fsp.getMinimumPolicedUnit(), + fsp.getMaximumPacketSize(), + fsp.getRate(), + fsp.getSlackTerm()); + } + else { + logger.debug("PCMMGateReq().setTrafficProfile() Unsupported Traffic Profile: " + choice.getClass().getName()); } } diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMService.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMService.java index 0e243dd..1ad3454 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMService.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PCMMService.java @@ -13,10 +13,10 @@ import java.util.Map; import javax.annotation.concurrent.ThreadSafe; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ServiceClassName; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ServiceFlowDirection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccaps.Ccap; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; +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.pcmm.PCMMPdpAgent; import org.pcmm.PCMMPdpDataProcess; import org.pcmm.PCMMPdpMsgSender; diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PacketcableProvider.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PacketcableProvider.java index f539068..a11d21a 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PacketcableProvider.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/PacketcableProvider.java @@ -36,10 +36,10 @@ import java.util.concurrent.Future; import javax.annotation.Nonnull; import javax.annotation.concurrent.ThreadSafe; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; @@ -54,48 +54,60 @@ 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.rev161128.AppContext; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.CcapContext; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.CcapPollConnectionInput; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.CcapPollConnectionOutput; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.CcapPollConnectionOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.CcapSetConnectionInput; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.CcapSetConnectionOutput; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.CcapSetConnectionOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.Ccaps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.PacketcableService; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.Qos; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.QosPollGatesInput; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.QosPollGatesOutput; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.QosPollGatesOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ServiceClassName; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ServiceFlowDirection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.ConnectionBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccaps.Ccap; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccaps.CcapBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gate.spec.GateSpec; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gate.spec.GateSpecBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.Apps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.App; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.AppBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.AppKey; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.Subscribers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.SubscribersBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.Subscriber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.SubscriberBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.SubscriberKey; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.GatesBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.GateBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.GateKey; +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.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; -import org.pcmm.gates.impl.DOCSISServiceClassNameTrafficProfile; import org.pcmm.gates.IGateSpec.Direction; +import org.pcmm.gates.impl.DOCSISFlowSpecTrafficProfile; +import org.pcmm.gates.impl.DOCSISServiceClassNameTrafficProfile; import org.pcmm.rcd.IPCMMClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -685,29 +697,43 @@ public class PacketcableProvider implements BindingAwareProvider, AutoCloseable, gateBuilder.setGateId(newGate.getGateId()) .setGatePath(newGatePathStr) .setCcapId(ccap.getCcapId()) - .setTrafficProfile(newGate.getTrafficProfile()) .setClassifiers(newGate.getClassifiers()) .setGateSpec(newGate.getGateSpec()) .setCopsGateState("") .setCopsGateTimeInfo("") .setCopsGateUsageInfo(""); - // - // Right now only ServiceClassName traffic Profile is supported. This logic needs to - // be updated when the yang traffic-profile is extended to support new types - // Override requested Direction using the Ccap configuration information about SCNs and - // their configured direction. - // - final ServiceClassName scn = newGate.getTrafficProfile().getServiceClassName(); - final ServiceFlowDirection scnDirection = findScnOnCcap(scn, ccap); - if (scnDirection == null) { - final String msg = + ServiceFlowDirection scnDirection = null; + + if (newGate.getTrafficProfile().getTrafficProfileChoice() instanceof ServiceClassNameChoice) { + final ServiceClassName scn = + ((ServiceClassNameChoice)newGate.getTrafficProfile() + .getTrafficProfileChoice()) + .getServiceClassNameProfile() + .getServiceClassName(); + scnDirection = findScnOnCcap(scn, ccap); + if (scnDirection == null) { + final String msg = String.format("SCN %s not found on CCAP %s for %s", scn, ccap.getCcapId(), newGatePathStr); - logger.error(msg); - saveGateError(gateIID, newGatePathStr, msg); - return; + logger.error(msg); + saveGateError(gateIID, newGatePathStr, msg); + return; + } + ServiceClassNameProfileBuilder scnBuilder = new ServiceClassNameProfileBuilder(); + scnBuilder.setServiceClassName(scn); + ServiceClassNameProfile scnProfile = scnBuilder.build(); + ServiceClassNameChoiceBuilder scncBuilder = new ServiceClassNameChoiceBuilder(); + scncBuilder.setServiceClassNameProfile(scnProfile); + ServiceClassNameChoice scnChoice = scncBuilder.build(); + TrafficProfileBuilder trafficProfileBuilder = new TrafficProfileBuilder(); + trafficProfileBuilder.setTrafficProfileChoice(scnChoice); + TrafficProfile trafficProfile = trafficProfileBuilder.build(); + gateBuilder.setTrafficProfile(trafficProfile); } - + else { + gateBuilder.setTrafficProfile(newGate.getTrafficProfile()); + } + // // since we may be modifying the contents of the original request GateSpec // to update flow direction (based on the ccap SCN configuration) we need to @@ -907,15 +933,15 @@ public class PacketcableProvider implements BindingAwareProvider, AutoCloseable, } DateAndTime connectionDateAndTime = getNowTimeStamp(); - org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.set.connection.output.ccap.ConnectionBuilder + org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.set.connection.output.ccap.ConnectionBuilder connectionRpcOutput = - new org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.set.connection.output.ccap.ConnectionBuilder() + new org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.set.connection.output.ccap.ConnectionBuilder() .setConnected(effectiveIsConnected) .setError(outputError) .setTimestamp(connectionDateAndTime); - org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.set.connection.output.CcapBuilder ccapRpcOutput = - new org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.set.connection.output.CcapBuilder().setCcapId( + 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( ccapId).setConnection(connectionRpcOutput.build()); @@ -952,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.rev161128.ccap.poll.connection.output.ccap.ConnectionBuilder + org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.poll.connection.output.ccap.ConnectionBuilder connectionRpcOutput = - new org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.poll.connection.output.ccap.ConnectionBuilder(); + new org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.poll.connection.output.ccap.ConnectionBuilder(); if (pcmmService != null) { if (pcmmService.getPcmmPdpSocket()) { @@ -984,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.rev161128.ccap.poll.connection.output.ccap.ConnectionBuilder() + new org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.poll.connection.output.ccap.ConnectionBuilder() .setConnected(effectiveIsConnected) .setError(outputError) .setTimestamp(connectionDateAndTime); @@ -998,8 +1024,8 @@ public class PacketcableProvider implements BindingAwareProvider, AutoCloseable, DateAndTime rpcDateAndTime = getNowTimeStamp(); - org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.poll.connection.output.CcapBuilder ccapRpcOutput = - new org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.poll.connection.output.CcapBuilder().setCcapId( + 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( ccapId).setConnection(connectionRpcOutput.build()); CcapPollConnectionOutputBuilder outputBuilder = @@ -1065,8 +1091,8 @@ public class PacketcableProvider implements BindingAwareProvider, AutoCloseable, String rpcResponse = null; - org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.qos.poll.gates.output.GateBuilder gateOutputBuilder = - new org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.qos.poll.gates.output.GateBuilder(); + 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(); GateBuilder gateBuilder = new GateBuilder(); @@ -1230,8 +1256,8 @@ public class PacketcableProvider implements BindingAwareProvider, AutoCloseable, @Override public void run() { - org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.qos.poll.gates.output.GateBuilder gateOutputBuilder = - new org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.qos.poll.gates.output.GateBuilder(); + 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(); GateBuilder gateBuilder = new GateBuilder(); diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactory.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactory.java index 8a8db7f..5ca381a 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactory.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactory.java @@ -14,10 +14,10 @@ import org.opendaylight.controller.packetcable.provider.validation.impl.validato import org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps.CcapValidator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps.CcapsValidator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps.ConnectionValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.Ccaps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.AmId; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.Connection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccaps.Ccap; +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; /** * A ValidatorProviderFactory that can provide validators for types under packetcable:ccaps. diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactory.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactory.java index 7b93348..75ae992 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactory.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactory.java @@ -23,19 +23,19 @@ import org.opendaylight.controller.packetcable.provider.validation.impl.validato import org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier.ClassifiersValidator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier.ExtClassifierValidator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier.Ipv6ClassifierValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.Classifiers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.ClassifierContainer; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.classifier.Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.ext.classifier.ExtClassifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gate.spec.GateSpec; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.Apps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.App; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.Subscribers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.Subscriber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.ipv6.classifier.Ipv6Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.traffic.profile.TrafficProfile; +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; /** * * A ValidatorProviderFactory that can provide validators for types under packetcable:qos. diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidator.java index a9ffb42..20fd7e9 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.AmId; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.AmId; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidator.java index 319a2f4..7b946c2 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccaps.Ccap; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.Ccap; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidator.java index 10a3d2a..8670f0a 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidator.java @@ -9,8 +9,8 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.Ccaps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccaps.Ccap; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.Ccaps; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.Ccap; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidator.java index d962a08..537b770 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.Connection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.Connection; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidator.java index 07d08b6..66c1747 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.App; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.App; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidator.java index 3ce1edf..1564ec2 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidator.java @@ -9,8 +9,8 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.Apps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.App; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidator.java index 2d80419..5dd7844 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gate.spec.GateSpec; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gate.spec.GateSpec; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidator.java index 103e0e4..e1ae769 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidator.java @@ -10,7 +10,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validat import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier.ClassifiersValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.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.Gate; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidator.java index 27d8877..4bef131 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidator.java @@ -9,8 +9,8 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.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; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidator.java index b20625f..9eaf4cd 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.Subscriber; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.Subscriber; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidator.java index 08e5fc5..f9d06e0 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidator.java @@ -9,8 +9,8 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.Subscribers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.Subscriber; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidator.java index ef717eb..1d5f3a8 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidator.java @@ -9,24 +9,37 @@ 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.rev161128.pcmm.qos.traffic.profile.TrafficProfile; +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; /** * @author rvail */ public class TrafficProfileValidator extends AbstractValidator { + private static final String FS = "flow-spec-profile"; private static final String SCN = "service-class-name"; + private static final String SCP = "service-class-name-profile"; @Override protected void doValidate(final TrafficProfile trafficProfile, final Extent extent) { if (trafficProfile == null) { getErrorMessages().add("traffic-profile must exist"); return; - } - - mustExist(trafficProfile.getServiceClassName(), SCN); - + } + if (trafficProfile.getTrafficProfileChoice() instanceof ServiceClassNameChoice) { + mustExist(((ServiceClassNameChoice)trafficProfile.getTrafficProfileChoice()).getServiceClassNameProfile(), SCP); + mustExist(((ServiceClassNameChoice)trafficProfile.getTrafficProfileChoice()).getServiceClassNameProfile().getServiceClassName(), SCN); + } else if (trafficProfile.getTrafficProfileChoice() instanceof FlowSpecChoice) { + mustExist(((FlowSpecChoice)trafficProfile.getTrafficProfileChoice()).getFlowSpecProfile(), SCP); + } else { + getErrorMessages().add("Unknown traffic profile"); + return; + } } } diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidator.java index d2118ca..828532f 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidator.java @@ -9,10 +9,10 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.ClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.classifier.choice.ExtClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.classifier.choice.Ipv6ClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoice; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidator.java index 42f027d..991d315 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.ClassifierContainer; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.classifier.attributes.classifiers.ClassifierContainer; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidator.java index 0f79470..95be5a1 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.classifier.Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.classifier.Classifier; /** diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidator.java index f45b9ac..0238cbd 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidator.java @@ -9,9 +9,9 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.Classifiers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.ClassifierContainer; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoice; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidator.java index 52c80ac..06b2642 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.ext.classifier.ExtClassifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ext.classifier.ExtClassifier; /** * @author rvail diff --git a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidator.java b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidator.java index 013d34c..c9b9b18 100644 --- a/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidator.java +++ b/packetcable-policy-server/src/main/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidator.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.AbstractValidator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.ipv6.classifier.Ipv6Classifier; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.ipv6.classifier.Ipv6Classifier; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/PCMMServiceTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/PCMMServiceTest.java index 0264e17..b34d758 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/PCMMServiceTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/PCMMServiceTest.java @@ -1,5 +1,9 @@ /* * (c) 2015 Cable Television Laboratories, 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.opendaylight.controller.packetcable.provider; @@ -31,20 +35,28 @@ 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.rev161128.ServiceClassName; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ServiceFlowDirection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.TosByte; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.TpProtocol; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.AmId; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.Connection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccaps.Ccap; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.Classifiers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.ClassifierContainer; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.classifier.Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gate.spec.GateSpec; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.traffic.profile.TrafficProfile; +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.pcmm.PCMMPdpAgent; import org.pcmm.gates.IPCMMGate; import org.pcmm.rcd.IPCMMClient; @@ -437,10 +449,16 @@ public class PCMMServiceTest { when(gateSpec.getDirection()).thenReturn(direction); // TODO - make sure to write a test when this value is not null when(gateSpec.getDscpTosOverwrite()).thenReturn(null); + + // TODO - refactor to add flowspec profile testing as well final TrafficProfile trafficProfile = mock(TrafficProfile.class); - final ServiceClassName scn = mock(ServiceClassName.class); - when(scn.getValue()).thenReturn(scnValue); - when(trafficProfile.getServiceClassName()).thenReturn(scn); + final ServiceClassNameChoice serviceClassNameChoice = mock(ServiceClassNameChoice.class); + final ServiceClassNameProfile serviceClassNameProfile = mock(ServiceClassNameProfile.class); + final ServiceClassName serviceClassName = mock(ServiceClassName.class); + when(serviceClassName.getValue()).thenReturn(scnValue); + when(serviceClassNameProfile.getServiceClassName()).thenReturn(serviceClassName); + when(serviceClassNameChoice.getServiceClassNameProfile()).thenReturn(serviceClassNameProfile); + when(trafficProfile.getTrafficProfileChoice()).thenReturn(serviceClassNameChoice); when(gate.getTrafficProfile()).thenReturn(trafficProfile); // TODO - write tests when this is null and ExtClassifier or Ipv6Classifier objects are not null @@ -485,7 +503,8 @@ public class PCMMServiceTest { gateBuilder.setAmId(ccap.getAmId()); gateBuilder.setSubscriberId(addrSubId); // force gateSpec.Direction to align with SCN direction - final ServiceClassName scn = gateReq.getTrafficProfile().getServiceClassName(); + final ServiceClassName scn = + ((ServiceClassNameChoice)gateReq.getTrafficProfile().getTrafficProfileChoice()).getServiceClassNameProfile().getServiceClassName(); if (scn != null) { gateBuilder.setGateSpec(gateReq.getGateSpec(), direction); } else { diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/DataValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/DataValidatorTest.java index edd9c38..3df76b4 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/DataValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/DataValidatorTest.java @@ -21,7 +21,7 @@ import com.google.common.collect.Maps; import java.util.Map; import org.junit.Test; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps.CcapValidatorTest; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccaps.Ccap; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccaps.Ccap; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactoryTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactoryTest.java index fe140de..25090ac 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactoryTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/CcapsValidatorProviderFactoryTest.java @@ -14,10 +14,10 @@ import static org.hamcrest.MatcherAssert.assertThat; import org.junit.Test; import org.opendaylight.controller.packetcable.provider.validation.ValidatorProvider; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.Ccaps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.AmId; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.Connection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccaps.Ccap; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactoryTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactoryTest.java index 640c234..2c7f8c1 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactoryTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/QosValidatorProviderFactoryTest.java @@ -14,19 +14,19 @@ import static org.hamcrest.MatcherAssert.assertThat; import org.junit.Test; import org.opendaylight.controller.packetcable.provider.validation.ValidatorProvider; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.Classifiers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.ClassifierContainer; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.classifier.Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.ext.classifier.ExtClassifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gate.spec.GateSpec; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.Apps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.App; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.Subscribers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.Subscriber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.ipv6.classifier.Ipv6Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.traffic.profile.TrafficProfile; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderFactoryImplTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderFactoryImplTest.java index fbe5e91..ae28fba 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderFactoryImplTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderFactoryImplTest.java @@ -14,23 +14,23 @@ import static org.hamcrest.MatcherAssert.assertThat; import org.junit.Test; import org.opendaylight.controller.packetcable.provider.validation.ValidatorProvider; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.Ccaps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.AmId; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.Connection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccaps.Ccap; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.Classifiers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.ClassifierContainer; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.classifier.Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.ext.classifier.ExtClassifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gate.spec.GateSpec; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.Apps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.App; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.Subscribers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.Subscriber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.ipv6.classifier.Ipv6Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.traffic.profile.TrafficProfile; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderImplTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderImplTest.java index 908de53..3466678 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderImplTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/ValidatorProviderImplTest.java @@ -16,7 +16,7 @@ import org.opendaylight.controller.packetcable.provider.validation.ValidationExc import org.opendaylight.controller.packetcable.provider.validation.Validator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps.ConnectionValidator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.ccaps.ConnectionValidatorTest; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.Connection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.Connection; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidatorTest.java index 4260a6a..6394c20 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/AmIdValidatorTest.java @@ -13,8 +13,8 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.AmId; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.AmIdBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.AmId; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.AmIdBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidatorTest.java index a76b1f6..316a191 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapValidatorTest.java @@ -14,9 +14,9 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ServiceClassName; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccaps.Ccap; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccaps.CcapBuilder; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidatorTest.java index b5bd494..cfa318c 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/CcapsValidatorTest.java @@ -14,9 +14,9 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.Ccaps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.CcapsBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccaps.Ccap; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidatorTest.java index 992e919..8eafb18 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/ccaps/ConnectionValidatorTest.java @@ -16,8 +16,8 @@ import org.opendaylight.controller.packetcable.provider.validation.Validator; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.Connection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ccap.attributes.ConnectionBuilder; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.Connection; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.ccap.attributes.ConnectionBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidatorTest.java index be41f6e..4b42c88 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppValidatorTest.java @@ -13,8 +13,8 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.App; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.AppBuilder; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidatorTest.java index 0e8f5dc..358776a 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/AppsValidatorTest.java @@ -14,8 +14,8 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.Apps; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.AppsBuilder; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidatorTest.java index b7177b1..15d018d 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateSpecValidatorTest.java @@ -13,10 +13,10 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ServiceFlowDirection; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.TosByte; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gate.spec.GateSpec; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gate.spec.GateSpecBuilder; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidatorTest.java index 1417323..9b21b5c 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GateValidatorTest.java @@ -14,8 +14,8 @@ import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; import org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier.ClassifiersValidatorTest; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.Gate; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.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.Gate; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.gates.GateBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidatorTest.java index 3e15da5..7b873ef 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/GatesValidatorTest.java @@ -14,8 +14,8 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.subscriber.Gates; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.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; +import org.opendaylight.yang.gen.v1.urn.packetcable.rev161219.pcmm.qos.gates.apps.app.subscribers.subscriber.GatesBuilder; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidatorTest.java index d198227..8f74547 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscriberValidatorTest.java @@ -13,8 +13,8 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.Subscriber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.subscribers.SubscriberBuilder; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidatorTest.java index 9656160..9bb0da1 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/SubscribersValidatorTest.java @@ -14,8 +14,8 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.Subscribers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.gates.apps.app.SubscribersBuilder; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidatorTest.java index fdf51e1..f73ba1e 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/TrafficProfileValidatorTest.java @@ -13,9 +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.rev161128.ServiceClassName; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.traffic.profile.TrafficProfile; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.traffic.profile.TrafficProfileBuilder; +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; /** * @author rvail @@ -39,12 +43,12 @@ public class TrafficProfileValidatorTest { validator.validate(buildValidTrafficProfile(), null); } - @Test + @Test(expected = ValidationException.class) public void nullServiceClassName() throws ValidationException { - final TrafficProfile trafficProfile = new TrafficProfileBuilder(buildValidTrafficProfile()) - .setServiceClassName(null) - .build(); - validator.validate(buildValidTrafficProfile(), extentParams.getCurrentParam()); + final ServiceClassNameProfile serviceClassNameProfile = new ServiceClassNameProfileBuilder().setServiceClassName(null).build(); + final TrafficProfile trafficProfile = + new TrafficProfileBuilder().setTrafficProfileChoice(new ServiceClassNameChoiceBuilder().setServiceClassNameProfile(serviceClassNameProfile).build()).build(); + validator.validate(trafficProfile, extentParams.getCurrentParam()); } @Test @@ -54,8 +58,7 @@ public class TrafficProfileValidatorTest { public static TrafficProfile buildValidTrafficProfile() { - return new TrafficProfileBuilder() - .setServiceClassName(new ServiceClassName("unit-test-scn")) - .build(); + final ServiceClassNameProfile serviceClassNameProfile = new ServiceClassNameProfileBuilder().setServiceClassName(new ServiceClassName("unit-test-scn")).build(); + return new TrafficProfileBuilder().setTrafficProfileChoice(new ServiceClassNameChoiceBuilder().setServiceClassNameProfile(serviceClassNameProfile).build()).build(); } } diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidatorTest.java index ab36244..42dab16 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierChoiceValidatorTest.java @@ -13,12 +13,12 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.ClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.classifier.choice.ExtClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.classifier.choice.ExtClassifierChoiceBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.classifier.choice.Ipv6ClassifierChoice; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.classifier.choice.Ipv6ClassifierChoiceBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoiceBuilder; +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.yangtools.yang.binding.DataContainer; /** diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidatorTest.java index 154bd7e..0fb083e 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierContainerValidatorTest.java @@ -13,8 +13,8 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.ClassifierContainer; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.ClassifierContainerBuilder; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidatorTest.java index 90391e4..faa4779 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifierValidatorTest.java @@ -15,10 +15,10 @@ import org.opendaylight.controller.packetcable.provider.validation.ValidationExc import org.opendaylight.controller.packetcable.provider.validation.Validator; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.TosByte; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.TpProtocol; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.classifier.Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.classifier.ClassifierBuilder; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidatorTest.java index 2d5a5cb..f2c3c3f 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ClassifiersValidatorTest.java @@ -15,9 +15,9 @@ import org.junit.Test; import org.opendaylight.controller.packetcable.provider.test.rules.Params; import org.opendaylight.controller.packetcable.provider.validation.ValidationException; import org.opendaylight.controller.packetcable.provider.validation.Validator; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.Classifiers; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.ClassifiersBuilder; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.classifier.attributes.classifiers.ClassifierContainer; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidatorTest.java index 3cb4740..02dd4b7 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/ExtClassifierValidatorTest.java @@ -15,11 +15,11 @@ import org.opendaylight.controller.packetcable.provider.validation.ValidationExc import org.opendaylight.controller.packetcable.provider.validation.Validator; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ClassifierActivationState; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.TosByte; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.TpProtocol; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.ext.classifier.ExtClassifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.ext.classifier.ExtClassifierBuilder; +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; /** * @author rvail diff --git a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidatorTest.java b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidatorTest.java index e872132..ae1573c 100644 --- a/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidatorTest.java +++ b/packetcable-policy-server/src/test/java/org/opendaylight/controller/packetcable/provider/validation/impl/validators/qos/classifier/Ipv6ClassifierValidatorTest.java @@ -15,11 +15,11 @@ import org.opendaylight.controller.packetcable.provider.validation.ValidationExc import org.opendaylight.controller.packetcable.provider.validation.Validator; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.ClassifierActivationState; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.TosByte; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.TpProtocol; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.ipv6.classifier.Ipv6Classifier; -import org.opendaylight.yang.gen.v1.urn.packetcable.rev161128.pcmm.qos.ipv6.classifier.Ipv6ClassifierBuilder; +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; /** * @author rvail