Initial push of Neutron interface
[controller.git] / opendaylight / networkconfiguration / neutron / src / main / java / org / opendaylight / controller / networkconfig / neutron / NeutronPort.java
1 /*\r
2  * Copyright IBM Corporation, 2013.  All rights reserved.\r
3  *\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
7  */\r
8 \r
9 package org.opendaylight.controller.networkconfig.neutron;\r
10 \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
15 \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
20 \r
21 \r
22 @XmlRootElement\r
23 @XmlAccessorType(XmlAccessType.NONE)\r
24 \r
25 public class NeutronPort {\r
26     // See OpenStack Network API v2.0 Reference for description of\r
27     // annotated attributes\r
28 \r
29     @XmlElement (name="id")\r
30     String portUUID;\r
31 \r
32     @XmlElement (name="network_id")\r
33     String networkUUID;\r
34 \r
35     @XmlElement (name="name")\r
36     String name;\r
37 \r
38     @XmlElement (defaultValue="true", name="admin_state_up")\r
39     Boolean adminStateUp;\r
40 \r
41     @XmlElement (name="status")\r
42     String status;\r
43 \r
44     @XmlElement (name="mac_address")\r
45     String macAddress;\r
46 \r
47     @XmlElement (name="fixed_ips")\r
48     List<Neutron_IPs> fixedIPs;\r
49 \r
50     @XmlElement (name="device_id")\r
51     String deviceID;\r
52 \r
53     @XmlElement (name="device_owner")\r
54     String deviceOwner;\r
55 \r
56     @XmlElement (name="tenant_id")\r
57     String tenantID;\r
58 \r
59     // TODO: add security groups\r
60     //        @XmlElement (name="security_groups")\r
61     //        List<String> securityGroups;\r
62 \r
63     /* this attribute stores the floating IP address assigned to\r
64      * each fixed IP address\r
65      */\r
66 \r
67     HashMap<String, NeutronFloatingIP> floatingIPMap;\r
68 \r
69     public NeutronPort() {\r
70         floatingIPMap = new HashMap<String, NeutronFloatingIP>();\r
71     }\r
72 \r
73     public String getID() { return portUUID; }\r
74 \r
75     public String getPortUUID() {\r
76         return portUUID;\r
77     }\r
78 \r
79     public void setPortUUID(String portUUID) {\r
80         this.portUUID = portUUID;\r
81     }\r
82 \r
83     public String getNetworkUUID() {\r
84         return networkUUID;\r
85     }\r
86 \r
87     public void setNetworkUUID(String networkUUID) {\r
88         this.networkUUID = networkUUID;\r
89     }\r
90 \r
91     public String getName() {\r
92         return name;\r
93     }\r
94 \r
95     public void setName(String name) {\r
96         this.name = name;\r
97     }\r
98 \r
99     public boolean isAdminStateUp() {\r
100         if (adminStateUp == null)\r
101             return true;\r
102         return adminStateUp;\r
103     }\r
104 \r
105     public Boolean getAdminStateUp() { return adminStateUp; }\r
106 \r
107     public void setAdminStateUp(Boolean newValue) {\r
108             this.adminStateUp = newValue;\r
109     }\r
110 \r
111     public String getStatus() {\r
112         return status;\r
113     }\r
114 \r
115     public void setStatus(String status) {\r
116         this.status = status;\r
117     }\r
118 \r
119     public String getMacAddress() {\r
120         return macAddress;\r
121     }\r
122 \r
123     public void setMacAddress(String macAddress) {\r
124         this.macAddress = macAddress;\r
125     }\r
126 \r
127     public List<Neutron_IPs> getFixedIPs() {\r
128         return fixedIPs;\r
129     }\r
130 \r
131     public void setFixedIPs(List<Neutron_IPs> fixedIPs) {\r
132         this.fixedIPs = fixedIPs;\r
133     }\r
134 \r
135     public String getDeviceID() {\r
136         return deviceID;\r
137     }\r
138 \r
139     public void setDeviceID(String deviceID) {\r
140         this.deviceID = deviceID;\r
141     }\r
142 \r
143     public String getDeviceOwner() {\r
144         return deviceOwner;\r
145     }\r
146 \r
147     public void setDeviceOwner(String deviceOwner) {\r
148         this.deviceOwner = deviceOwner;\r
149     }\r
150 \r
151     public String getTenantID() {\r
152         return tenantID;\r
153     }\r
154 \r
155     public void setTenantID(String tenantID) {\r
156         this.tenantID = tenantID;\r
157     }\r
158 \r
159     public NeutronFloatingIP getFloatingIP(String key) {\r
160         if (!floatingIPMap.containsKey(key))\r
161             return null;\r
162         return floatingIPMap.get(key);\r
163     }\r
164 \r
165     public void removeFloatingIP(String key) {\r
166         floatingIPMap.remove(key);\r
167     }\r
168 \r
169     public void addFloatingIP(String key, NeutronFloatingIP floatingIP) {\r
170         if (!floatingIPMap.containsKey(key))\r
171             floatingIPMap.put(key, floatingIP);\r
172     }\r
173 \r
174     /**\r
175      * This method copies selected fields from the object and returns them\r
176      * as a new object, suitable for marshaling.\r
177      *\r
178      * @param fields\r
179      *            List of attributes to be extracted\r
180      * @return an OpenStackPorts object with only the selected fields\r
181      * populated\r
182      */\r
183 \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
205             }\r
206             if (s.equals("device_id")) {\r
207                 ans.setDeviceID(this.getDeviceID());\r
208             }\r
209             if (s.equals("device_owner")) {\r
210                 ans.setDeviceOwner(this.getDeviceOwner());\r
211             }\r
212             if (s.equals("tenant_id"))\r
213                 ans.setTenantID(this.getTenantID());\r
214         }\r
215         return ans;\r
216     }\r
217 \r
218     public void initDefaults() {\r
219         adminStateUp = true;\r
220         if (status == null)\r
221             status = "ACTIVE";\r
222         if (fixedIPs == null)\r
223             fixedIPs = new ArrayList<Neutron_IPs>();\r
224     }\r
225 \r
226     /**\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
229      *\r
230      * @param fixedIP\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
234      */\r
235 \r
236     public boolean isBoundToFloatingIP(String fixedIP) {\r
237         return floatingIPMap.containsKey(fixedIP);\r
238     }\r
239 }\r