package org.opennaas.extensions.ofertie.ncl.helpers;
/*
* #%L
* OpenNaaS :: OFERTIE :: NCL components
* %%
* Copyright (C) 2007 - 2014 FundaciĆ³ Privada i2CAT, Internet i InnovaciĆ³ a Catalunya
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import org.apache.commons.lang.StringUtils;
import org.opennaas.extensions.genericnetwork.model.circuit.Circuit;
import org.opennaas.extensions.genericnetwork.model.circuit.QoSPolicy;
import org.opennaas.extensions.genericnetwork.model.circuit.request.CircuitRequest;
import org.opennaas.extensions.genericnetwork.model.circuit.request.Destination;
import org.opennaas.extensions.genericnetwork.model.circuit.request.Source;
import org.opennaas.extensions.ofertie.ncl.provisioner.api.exceptions.ProvisionerException;
import org.opennaas.extensions.ofertie.ncl.provisioner.api.model.QosPolicy;
import org.opennaas.extensions.ofertie.ncl.provisioner.api.model.QosPolicyRequest;
import org.opennaas.extensions.openflowswitch.model.FloodlightOFMatch;
/**
*
* @author Adrian Rosello Rey (i2CAT)
*
*/
public class QosPolicyRequestParser {
public static CircuitRequest toCircuitRequest(QosPolicyRequest qosPolicyRequest) throws ProvisionerException {
CircuitRequest circuitRequest = new CircuitRequest();
circuitRequest.setAtomic(qosPolicyRequest.getAtomic());
circuitRequest.setLabel(qosPolicyRequest.getLabel());
circuitRequest.setSource(toCircuitRequestSource(qosPolicyRequest.getSource()));
circuitRequest.setDestination(toCircuitsRequestDestination(qosPolicyRequest.getDestination()));
circuitRequest.setQosPolicy(toCircuitRequestQos(qosPolicyRequest.getQosPolicy()));
return circuitRequest;
}
public static Source toCircuitRequestSource(org.opennaas.extensions.ofertie.ncl.provisioner.api.model.Source source) {
Source sourceToReturn = new Source();
sourceToReturn.setAddress(source.getAddress());
sourceToReturn.setTransportPort(source.getPort());
return sourceToReturn;
}
public static Destination toCircuitsRequestDestination(org.opennaas.extensions.ofertie.ncl.provisioner.api.model.Destination destination) {
Destination destinationToReturn = new Destination();
destinationToReturn.setAddress(destination.getAddress());
destinationToReturn.setTransportPort(destination.getPort());
return destinationToReturn;
}
public static QoSPolicy toCircuitRequestQos(QosPolicy qosPolicy) throws ProvisionerException {
QoSPolicy qosToReturn = new QoSPolicy();
if (qosPolicy == null)
return null;
if (qosPolicy.getJitter() != null) {
if (!StringUtils.isEmpty(qosPolicy.getJitter().getMax()))
qosToReturn.setMaxJitter(Integer.valueOf(qosPolicy.getJitter().getMax()));
if (!StringUtils.isEmpty(qosPolicy.getJitter().getMin()))
qosToReturn.setMinJitter(Integer.valueOf(qosPolicy.getJitter().getMin()));
}
if (qosPolicy.getLatency() != null) {
if (!StringUtils.isEmpty(qosPolicy.getLatency().getMax()))
qosToReturn.setMaxLatency(Integer.valueOf(qosPolicy.getLatency().getMax()));
if (!StringUtils.isEmpty(qosPolicy.getLatency().getMin()))
qosToReturn.setMinLatency(Integer.valueOf(qosPolicy.getLatency().getMin()));
}
if (qosPolicy.getPacketLoss() != null) {
if (!StringUtils.isEmpty(qosPolicy.getPacketLoss().getMax()))
qosToReturn.setMaxPacketLoss(Integer.valueOf(qosPolicy.getPacketLoss().getMax()));
if (!StringUtils.isEmpty(qosPolicy.getPacketLoss().getMin()))
qosToReturn.setMinPacketLoss(Integer.valueOf(qosPolicy.getPacketLoss().getMin()));
}
if (qosPolicy.getThroughput() != null) {
if (!StringUtils.isEmpty(qosPolicy.getThroughput().getMax()))
qosToReturn.setMaxThroughput(Integer.valueOf(qosPolicy.getThroughput().getMax()));
if (!StringUtils.isEmpty(qosPolicy.getThroughput().getMin()))
qosToReturn.setMinThroughput(Integer.valueOf(qosPolicy.getThroughput().getMin()));
}
return qosToReturn;
}
public static QosPolicyRequest fromCircuit(Circuit circuit) {
QosPolicyRequest qosReq = new QosPolicyRequest();
qosReq.setSource(parseSource(circuit.getTrafficFilter()));
qosReq.setDestination(parseDestination(circuit.getTrafficFilter()));
qosReq.setLabel(parseLabel(circuit.getTrafficFilter()));
qosReq.setQosPolicy(QoSPolicyParser.fromGenericNetworkQoS(circuit.getQos()));
return qosReq;
}
public static org.opennaas.extensions.ofertie.ncl.provisioner.api.model.Source parseSource(FloodlightOFMatch trafficFilter) {
org.opennaas.extensions.ofertie.ncl.provisioner.api.model.Source source = new org.opennaas.extensions.ofertie.ncl.provisioner.api.model.Source();
source.setAddress(trafficFilter.getSrcIp());
source.setPort(trafficFilter.getSrcPort());
return source;
}
public static org.opennaas.extensions.ofertie.ncl.provisioner.api.model.Destination parseDestination(FloodlightOFMatch trafficFilter) {
org.opennaas.extensions.ofertie.ncl.provisioner.api.model.Destination destination = new org.opennaas.extensions.ofertie.ncl.provisioner.api.model.Destination();
destination.setAddress(trafficFilter.getDstIp());
destination.setPort(trafficFilter.getDstPort());
return destination;
}
public static String parseLabel(FloodlightOFMatch trafficFilter) {
return String.valueOf(trafficFilter.getTosBits());
}
public static QosPolicyRequest fromCircuitRequest(CircuitRequest circuitRequest) {
QosPolicyRequest qosRequest = new QosPolicyRequest();
qosRequest.setSource(fromCircuitRequestSource(circuitRequest.getSource()));
qosRequest.setDestination(fromCircuitRequestDestination(circuitRequest.getDestination()));
qosRequest.setLabel(fromCircuitRequestLabel(circuitRequest.getLabel()));
qosRequest.setQosPolicy(QoSPolicyParser.fromGenericNetworkQoS(circuitRequest.getQosPolicy()));
return qosRequest;
}
public static org.opennaas.extensions.ofertie.ncl.provisioner.api.model.Source fromCircuitRequestSource(Source circuitSource) {
if (circuitSource == null)
return null;
org.opennaas.extensions.ofertie.ncl.provisioner.api.model.Source source = new org.opennaas.extensions.ofertie.ncl.provisioner.api.model.Source();
source.setAddress(circuitSource.getAddress());
source.setPort(circuitSource.getTransportPort());
return source;
}
public static org.opennaas.extensions.ofertie.ncl.provisioner.api.model.Destination fromCircuitRequestDestination(Destination circuitDestination) {
if (circuitDestination == null)
return null;
org.opennaas.extensions.ofertie.ncl.provisioner.api.model.Destination destination = new org.opennaas.extensions.ofertie.ncl.provisioner.api.model.Destination();
destination.setAddress(circuitDestination.getAddress());
destination.setPort(circuitDestination.getTransportPort());
return destination;
}
public static String fromCircuitRequestLabel(String label) {
return label;
}
}