Adds the "Quality of Service" to the OpenDayLight Neutron
[neutron.git] / neutron-spi / src / main / java / org / opendaylight / neutron / spi / NeutronQosPolicy.java
diff --git a/neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronQosPolicy.java b/neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronQosPolicy.java
new file mode 100644 (file)
index 0000000..1741073
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2016 Intel Corporation.  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.neutron.spi;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.NONE)
+public class NeutronQosPolicy extends NeutronObject implements Serializable, INeutronObject {
+    private static final long serialVersionUID = 1L;
+
+    @XmlElement(name = "name")
+    String name;
+
+    @XmlElement(defaultValue = "false", name = "shared")
+    Boolean shared;
+
+    @XmlElement(name = "bandwidth_limit_rules")
+    List<NeutronQosBandwidthRule> bwLimitRules;
+
+    @XmlElement(name = "dscp_marking_rules")
+    List<NeutronQosDscpMarkingRule> dscpRules;
+
+    public String getQosPolicyName() {
+        return name;
+    }
+
+    public void setQosPolicyName(String qosPolicyName) {
+        this.name = qosPolicyName;
+    }
+
+    public Boolean getPolicyIsShared() {
+        return shared;
+    }
+
+    public void setPolicyIsShared(Boolean qosPolicyIsShared) {
+        this.shared = qosPolicyIsShared;
+    }
+
+    public List<NeutronQosBandwidthRule> getBwLimitRules() {
+        return bwLimitRules;
+    }
+
+    public void setQosBwLimitRules(List<NeutronQosBandwidthRule> qosBwLimitRules) {
+        this.bwLimitRules = qosBwLimitRules;
+    }
+
+    public List<NeutronQosDscpMarkingRule> getDscpRules() {
+        return dscpRules;
+    }
+
+    public void setDscpRules(List<NeutronQosDscpMarkingRule> qosDscpRules) {
+        this.dscpRules = qosDscpRules;
+    }
+
+    public NeutronQosPolicy extractFields(List<String> fields) {
+        NeutronQosPolicy ans = new NeutronQosPolicy();
+        Iterator<String> i = fields.iterator();
+        while (i.hasNext()) {
+            String s = i.next();
+            if (s.equals("id")) {
+                ans.setID(this.getID());
+            }
+            if (s.equals("tenant_id")) {
+                ans.setTenantID(this.getTenantID());
+            }
+            if (s.equals("name")) {
+                ans.setQosPolicyName(this.getQosPolicyName());
+            }
+            if (s.equals("shared")) {
+                ans.setPolicyIsShared(this.getPolicyIsShared());
+            }
+            if (s.equals("bandwidth_limit_rules")) {
+                List<NeutronQosBandwidthRule> qosBwRuleList = new ArrayList<>();
+                qosBwRuleList.addAll(this.getBwLimitRules());
+                ans.setQosBwLimitRules(qosBwRuleList);
+            }
+            if (s.equals("dscp_marking_rules")) {
+                List<NeutronQosDscpMarkingRule> qosDscpRuleList = new ArrayList<>();
+                qosDscpRuleList.addAll(this.getDscpRules());
+                ans.setDscpRules(qosDscpRuleList);
+            }
+        }
+        return ans;
+    }
+
+    @Override
+    public String toString() {
+        return "NeutronQosPolicy{" +
+            "qosPolicyUUID='" + uuid + '\'' +
+            ", qosPolicyTenantID='" + tenantID + '\'' +
+            ", qosPolicyName='" + name + '\'' +
+            ", qosPolicyIsShared='" + shared + '\'' +
+            ", qosBwLimitRules='" + bwLimitRules + '\'' +
+            ", qosDscpRules='" + dscpRules + '\'' +
+            '}';
+    }
+}