2 * Copyright IBM Corporation, 2013. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
9 package org.opendaylight.controller.networkconfig.neutron;
\r
11 import java.util.ArrayList;
\r
12 import java.util.HashMap;
\r
13 import java.util.Iterator;
\r
14 import java.util.List;
\r
16 import javax.xml.bind.annotation.XmlAccessType;
\r
17 import javax.xml.bind.annotation.XmlAccessorType;
\r
18 import javax.xml.bind.annotation.XmlElement;
\r
19 import javax.xml.bind.annotation.XmlRootElement;
\r
23 @XmlAccessorType(XmlAccessType.NONE)
\r
25 public class NeutronPort {
\r
26 // See OpenStack Network API v2.0 Reference for description of
\r
27 // annotated attributes
\r
29 @XmlElement (name="id")
\r
32 @XmlElement (name="network_id")
\r
35 @XmlElement (name="name")
\r
38 @XmlElement (defaultValue="true", name="admin_state_up")
\r
39 Boolean adminStateUp;
\r
41 @XmlElement (name="status")
\r
44 @XmlElement (name="mac_address")
\r
47 @XmlElement (name="fixed_ips")
\r
48 List<Neutron_IPs> fixedIPs;
\r
50 @XmlElement (name="device_id")
\r
53 @XmlElement (name="device_owner")
\r
56 @XmlElement (name="tenant_id")
\r
59 // TODO: add security groups
\r
60 // @XmlElement (name="security_groups")
\r
61 // List<String> securityGroups;
\r
63 /* this attribute stores the floating IP address assigned to
\r
64 * each fixed IP address
\r
67 HashMap<String, NeutronFloatingIP> floatingIPMap;
\r
69 public NeutronPort() {
\r
70 floatingIPMap = new HashMap<String, NeutronFloatingIP>();
\r
73 public String getID() { return portUUID; }
\r
75 public String getPortUUID() {
\r
79 public void setPortUUID(String portUUID) {
\r
80 this.portUUID = portUUID;
\r
83 public String getNetworkUUID() {
\r
87 public void setNetworkUUID(String networkUUID) {
\r
88 this.networkUUID = networkUUID;
\r
91 public String getName() {
\r
95 public void setName(String name) {
\r
99 public boolean isAdminStateUp() {
\r
100 if (adminStateUp == null)
\r
102 return adminStateUp;
\r
105 public Boolean getAdminStateUp() { return adminStateUp; }
\r
107 public void setAdminStateUp(Boolean newValue) {
\r
108 this.adminStateUp = newValue;
\r
111 public String getStatus() {
\r
115 public void setStatus(String status) {
\r
116 this.status = status;
\r
119 public String getMacAddress() {
\r
123 public void setMacAddress(String macAddress) {
\r
124 this.macAddress = macAddress;
\r
127 public List<Neutron_IPs> getFixedIPs() {
\r
131 public void setFixedIPs(List<Neutron_IPs> fixedIPs) {
\r
132 this.fixedIPs = fixedIPs;
\r
135 public String getDeviceID() {
\r
139 public void setDeviceID(String deviceID) {
\r
140 this.deviceID = deviceID;
\r
143 public String getDeviceOwner() {
\r
144 return deviceOwner;
\r
147 public void setDeviceOwner(String deviceOwner) {
\r
148 this.deviceOwner = deviceOwner;
\r
151 public String getTenantID() {
\r
155 public void setTenantID(String tenantID) {
\r
156 this.tenantID = tenantID;
\r
159 public NeutronFloatingIP getFloatingIP(String key) {
\r
160 if (!floatingIPMap.containsKey(key))
\r
162 return floatingIPMap.get(key);
\r
165 public void removeFloatingIP(String key) {
\r
166 floatingIPMap.remove(key);
\r
169 public void addFloatingIP(String key, NeutronFloatingIP floatingIP) {
\r
170 if (!floatingIPMap.containsKey(key))
\r
171 floatingIPMap.put(key, floatingIP);
\r
175 * This method copies selected fields from the object and returns them
\r
176 * as a new object, suitable for marshaling.
\r
179 * List of attributes to be extracted
\r
180 * @return an OpenStackPorts object with only the selected fields
\r
184 public NeutronPort extractFields(List<String> fields) {
\r
185 NeutronPort ans = new NeutronPort();
\r
186 Iterator<String> i = fields.iterator();
\r
187 while (i.hasNext()) {
\r
188 String s = i.next();
\r
189 if (s.equals("id"))
\r
190 ans.setPortUUID(this.getPortUUID());
\r
191 if (s.equals("network_id"))
\r
192 ans.setNetworkUUID(this.getNetworkUUID());
\r
193 if (s.equals("name"))
\r
194 ans.setName(this.getName());
\r
195 if (s.equals("admin_state_up"))
\r
196 ans.setAdminStateUp(this.getAdminStateUp());
\r
197 if (s.equals("status"))
\r
198 ans.setStatus(this.getStatus());
\r
199 if (s.equals("mac_address"))
\r
200 ans.setMacAddress(this.getMacAddress());
\r
201 if (s.equals("fixed_ips")) {
\r
202 List<Neutron_IPs> fixedIPs = new ArrayList<Neutron_IPs>();
\r
203 fixedIPs.addAll(this.getFixedIPs());
\r
204 ans.setFixedIPs(fixedIPs);
\r
206 if (s.equals("device_id")) {
\r
207 ans.setDeviceID(this.getDeviceID());
\r
209 if (s.equals("device_owner")) {
\r
210 ans.setDeviceOwner(this.getDeviceOwner());
\r
212 if (s.equals("tenant_id"))
\r
213 ans.setTenantID(this.getTenantID());
\r
218 public void initDefaults() {
\r
219 adminStateUp = true;
\r
220 if (status == null)
\r
222 if (fixedIPs == null)
\r
223 fixedIPs = new ArrayList<Neutron_IPs>();
\r
227 * This method checks to see if the port has a floating IPv4 address
\r
228 * associated with the supplied fixed IPv4 address
\r
231 * fixed IPv4 address in dotted decimal format
\r
232 * @return a boolean indicating if there is a floating IPv4 address bound
\r
233 * to the fixed IPv4 address
\r
236 public boolean isBoundToFloatingIP(String fixedIP) {
\r
237 return floatingIPMap.containsKey(fixedIP);
\r