+/*\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