Initial push of Neutron interface
[controller.git] / opendaylight / networkconfiguration / neutron / src / main / java / org / opendaylight / controller / networkconfig / neutron / NeutronPort.java
diff --git a/opendaylight/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/NeutronPort.java b/opendaylight/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/NeutronPort.java
new file mode 100644 (file)
index 0000000..7f7f712
--- /dev/null
@@ -0,0 +1,239 @@
+/*\r
+ * Copyright IBM Corporation, 2013.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+package org.opendaylight.controller.networkconfig.neutron;\r
+\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+\r
+import javax.xml.bind.annotation.XmlAccessType;\r
+import javax.xml.bind.annotation.XmlAccessorType;\r
+import javax.xml.bind.annotation.XmlElement;\r
+import javax.xml.bind.annotation.XmlRootElement;\r
+\r
+\r
+@XmlRootElement\r
+@XmlAccessorType(XmlAccessType.NONE)\r
+\r
+public class NeutronPort {\r
+    // See OpenStack Network API v2.0 Reference for description of\r
+    // annotated attributes\r
+\r
+    @XmlElement (name="id")\r
+    String portUUID;\r
+\r
+    @XmlElement (name="network_id")\r
+    String networkUUID;\r
+\r
+    @XmlElement (name="name")\r
+    String name;\r
+\r
+    @XmlElement (defaultValue="true", name="admin_state_up")\r
+    Boolean adminStateUp;\r
+\r
+    @XmlElement (name="status")\r
+    String status;\r
+\r
+    @XmlElement (name="mac_address")\r
+    String macAddress;\r
+\r
+    @XmlElement (name="fixed_ips")\r
+    List<Neutron_IPs> fixedIPs;\r
+\r
+    @XmlElement (name="device_id")\r
+    String deviceID;\r
+\r
+    @XmlElement (name="device_owner")\r
+    String deviceOwner;\r
+\r
+    @XmlElement (name="tenant_id")\r
+    String tenantID;\r
+\r
+    // TODO: add security groups\r
+    //        @XmlElement (name="security_groups")\r
+    //        List<String> securityGroups;\r
+\r
+    /* this attribute stores the floating IP address assigned to\r
+     * each fixed IP address\r
+     */\r
+\r
+    HashMap<String, NeutronFloatingIP> floatingIPMap;\r
+\r
+    public NeutronPort() {\r
+        floatingIPMap = new HashMap<String, NeutronFloatingIP>();\r
+    }\r
+\r
+    public String getID() { return portUUID; }\r
+\r
+    public String getPortUUID() {\r
+        return portUUID;\r
+    }\r
+\r
+    public void setPortUUID(String portUUID) {\r
+        this.portUUID = portUUID;\r
+    }\r
+\r
+    public String getNetworkUUID() {\r
+        return networkUUID;\r
+    }\r
+\r
+    public void setNetworkUUID(String networkUUID) {\r
+        this.networkUUID = networkUUID;\r
+    }\r
+\r
+    public String getName() {\r
+        return name;\r
+    }\r
+\r
+    public void setName(String name) {\r
+        this.name = name;\r
+    }\r
+\r
+    public boolean isAdminStateUp() {\r
+        if (adminStateUp == null)\r
+            return true;\r
+        return adminStateUp;\r
+    }\r
+\r
+    public Boolean getAdminStateUp() { return adminStateUp; }\r
+\r
+    public void setAdminStateUp(Boolean newValue) {\r
+            this.adminStateUp = newValue;\r
+    }\r
+\r
+    public String getStatus() {\r
+        return status;\r
+    }\r
+\r
+    public void setStatus(String status) {\r
+        this.status = status;\r
+    }\r
+\r
+    public String getMacAddress() {\r
+        return macAddress;\r
+    }\r
+\r
+    public void setMacAddress(String macAddress) {\r
+        this.macAddress = macAddress;\r
+    }\r
+\r
+    public List<Neutron_IPs> getFixedIPs() {\r
+        return fixedIPs;\r
+    }\r
+\r
+    public void setFixedIPs(List<Neutron_IPs> fixedIPs) {\r
+        this.fixedIPs = fixedIPs;\r
+    }\r
+\r
+    public String getDeviceID() {\r
+        return deviceID;\r
+    }\r
+\r
+    public void setDeviceID(String deviceID) {\r
+        this.deviceID = deviceID;\r
+    }\r
+\r
+    public String getDeviceOwner() {\r
+        return deviceOwner;\r
+    }\r
+\r
+    public void setDeviceOwner(String deviceOwner) {\r
+        this.deviceOwner = deviceOwner;\r
+    }\r
+\r
+    public String getTenantID() {\r
+        return tenantID;\r
+    }\r
+\r
+    public void setTenantID(String tenantID) {\r
+        this.tenantID = tenantID;\r
+    }\r
+\r
+    public NeutronFloatingIP getFloatingIP(String key) {\r
+        if (!floatingIPMap.containsKey(key))\r
+            return null;\r
+        return floatingIPMap.get(key);\r
+    }\r
+\r
+    public void removeFloatingIP(String key) {\r
+        floatingIPMap.remove(key);\r
+    }\r
+\r
+    public void addFloatingIP(String key, NeutronFloatingIP floatingIP) {\r
+        if (!floatingIPMap.containsKey(key))\r
+            floatingIPMap.put(key, floatingIP);\r
+    }\r
+\r
+    /**\r
+     * This method copies selected fields from the object and returns them\r
+     * as a new object, suitable for marshaling.\r
+     *\r
+     * @param fields\r
+     *            List of attributes to be extracted\r
+     * @return an OpenStackPorts object with only the selected fields\r
+     * populated\r
+     */\r
+\r
+    public NeutronPort extractFields(List<String> fields) {\r
+        NeutronPort ans = new NeutronPort();\r
+        Iterator<String> i = fields.iterator();\r
+        while (i.hasNext()) {\r
+            String s = i.next();\r
+            if (s.equals("id"))\r
+                ans.setPortUUID(this.getPortUUID());\r
+            if (s.equals("network_id"))\r
+                ans.setNetworkUUID(this.getNetworkUUID());\r
+            if (s.equals("name"))\r
+                ans.setName(this.getName());\r
+            if (s.equals("admin_state_up"))\r
+                ans.setAdminStateUp(this.getAdminStateUp());\r
+            if (s.equals("status"))\r
+                ans.setStatus(this.getStatus());\r
+            if (s.equals("mac_address"))\r
+                ans.setMacAddress(this.getMacAddress());\r
+            if (s.equals("fixed_ips")) {\r
+                List<Neutron_IPs> fixedIPs = new ArrayList<Neutron_IPs>();\r
+                fixedIPs.addAll(this.getFixedIPs());\r
+                ans.setFixedIPs(fixedIPs);\r
+            }\r
+            if (s.equals("device_id")) {\r
+                ans.setDeviceID(this.getDeviceID());\r
+            }\r
+            if (s.equals("device_owner")) {\r
+                ans.setDeviceOwner(this.getDeviceOwner());\r
+            }\r
+            if (s.equals("tenant_id"))\r
+                ans.setTenantID(this.getTenantID());\r
+        }\r
+        return ans;\r
+    }\r
+\r
+    public void initDefaults() {\r
+        adminStateUp = true;\r
+        if (status == null)\r
+            status = "ACTIVE";\r
+        if (fixedIPs == null)\r
+            fixedIPs = new ArrayList<Neutron_IPs>();\r
+    }\r
+\r
+    /**\r
+     * This method checks to see if the port has a floating IPv4 address\r
+     * associated with the supplied fixed IPv4 address\r
+     *\r
+     * @param fixedIP\r
+     *            fixed IPv4 address in dotted decimal format\r
+     * @return a boolean indicating if there is a floating IPv4 address bound\r
+     * to the fixed IPv4 address\r
+     */\r
+\r
+    public boolean isBoundToFloatingIP(String fixedIP) {\r
+        return floatingIPMap.containsKey(fixedIP);\r
+    }\r
+}\r