Initial push of Neutron interface
[controller.git] / opendaylight / networkconfiguration / neutron / src / main / java / org / opendaylight / controller / networkconfig / neutron / NeutronNetwork.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.Iterator;\r
13 import java.util.List;\r
14 \r
15 import javax.xml.bind.annotation.XmlAccessType;\r
16 import javax.xml.bind.annotation.XmlAccessorType;\r
17 import javax.xml.bind.annotation.XmlElement;\r
18 import javax.xml.bind.annotation.XmlRootElement;\r
19 \r
20 @XmlRootElement(name = "network")\r
21 @XmlAccessorType(XmlAccessType.NONE)\r
22 \r
23 public class NeutronNetwork {\r
24     // See OpenStack Network API v2.0 Reference for description of\r
25     // annotated attributes\r
26 \r
27     @XmlElement (name="id")\r
28     String networkUUID;              // network UUID\r
29 \r
30     @XmlElement (name="name")\r
31     String networkName;              // name\r
32 \r
33     @XmlElement (defaultValue="true", name="admin_state_up")\r
34     Boolean adminStateUp;             // admin state up (true/false)\r
35 \r
36     @XmlElement (defaultValue="false", name="shared")\r
37     Boolean shared;                   // shared network or not\r
38 \r
39     @XmlElement (name="tenant_id")\r
40     String tenantID;                 // tenant for this network\r
41 \r
42     @XmlElement (defaultValue="false", namespace="router", name="external")\r
43     Boolean routerExternal;           // network external or not\r
44 \r
45     @XmlElement (defaultValue="flat", namespace="provider", name="network_type")\r
46     String providerNetworkType;      // provider network type (flat or vlan)\r
47 \r
48     @XmlElement (namespace="provider", name="physical_network")\r
49     String providerPhysicalNetwork;  // provider physical network (name)\r
50 \r
51     @XmlElement (namespace="provider", name="segmentation_id")\r
52     String providerSegmentationID;   // provide segmentation ID (vlan ID)\r
53 \r
54     @XmlElement (name="status")\r
55     String status;                   // status (read-only)\r
56 \r
57     @XmlElement (name="subnets")\r
58     List<String> subnets;            // subnets (read-only)\r
59 \r
60     /* This attribute lists the ports associated with an instance\r
61      * which is needed for determining if that instance can be deleted\r
62      */\r
63 \r
64     List<NeutronPort> myPorts;\r
65 \r
66     public NeutronNetwork() {\r
67         myPorts = new ArrayList<NeutronPort>();\r
68     }\r
69 \r
70     public void initDefaults() {\r
71         subnets = new ArrayList<String>();\r
72         if (this.status == null)\r
73             this.status = "ACTIVE";\r
74         if (this.adminStateUp == null)\r
75             this.adminStateUp = true;\r
76         if (this.shared == null)\r
77             this.shared = false;\r
78         if (this.routerExternal == null)\r
79             this.routerExternal = false;\r
80         if (this.providerNetworkType == null)\r
81             this.providerNetworkType = "flat";\r
82     }\r
83 \r
84     public String getID() { return networkUUID; }\r
85 \r
86     public String getNetworkUUID() {\r
87         return networkUUID;\r
88     }\r
89 \r
90     public void setNetworkUUID(String networkUUID) {\r
91         this.networkUUID = networkUUID;\r
92     }\r
93 \r
94     public String getNetworkName() {\r
95         return networkName;\r
96     }\r
97 \r
98     public void setNetworkName(String networkName) {\r
99         this.networkName = networkName;\r
100     }\r
101 \r
102     public boolean isAdminStateUp() {\r
103         return adminStateUp;\r
104     }\r
105 \r
106     public Boolean getAdminStateUp() { return adminStateUp; }\r
107 \r
108     public void setAdminStateUp(boolean newValue) {\r
109         this.adminStateUp = newValue;\r
110     }\r
111 \r
112     public boolean isShared() { return shared; }\r
113 \r
114     public Boolean getShared() { return shared; }\r
115 \r
116     public void setShared(boolean newValue) {\r
117         this.shared = newValue;\r
118     }\r
119 \r
120     public String getTenantID() {\r
121         return tenantID;\r
122     }\r
123 \r
124     public void setTenantID(String tenantID) {\r
125         this.tenantID = tenantID;\r
126     }\r
127 \r
128     public boolean isRouterExternal() { return routerExternal; }\r
129 \r
130     public Boolean getRouterExternal() { return routerExternal; }\r
131 \r
132     public void setRouterExternal(boolean newValue) {\r
133         this.routerExternal = newValue;\r
134     }\r
135 \r
136     public String getProviderNetworkType() {\r
137         return providerNetworkType;\r
138     }\r
139 \r
140     public void setProviderNetworkType(String providerNetworkType) {\r
141         this.providerNetworkType = providerNetworkType;\r
142     }\r
143 \r
144     public String getProviderPhysicalNetwork() {\r
145         return providerPhysicalNetwork;\r
146     }\r
147 \r
148     public void setProviderPhysicalNetwork(String providerPhysicalNetwork) {\r
149         this.providerPhysicalNetwork = providerPhysicalNetwork;\r
150     }\r
151 \r
152     public String getProviderSegmentationID() {\r
153         return providerSegmentationID;\r
154     }\r
155 \r
156     public void setProviderSegmentationID(String providerSegmentationID) {\r
157         this.providerSegmentationID = providerSegmentationID;\r
158     }\r
159 \r
160     public String getStatus() {\r
161         return status;\r
162     }\r
163 \r
164     public void setStatus(String status) {\r
165         this.status = status;\r
166     }\r
167 \r
168     public List<String> getSubnets() {\r
169         return subnets;\r
170     }\r
171 \r
172     public void setSubnets(List<String> subnets) {\r
173         this.subnets = subnets;\r
174     }\r
175 \r
176     public void addSubnet(String uuid) {\r
177         this.subnets.add(uuid);\r
178     }\r
179 \r
180     public void removeSubnet(String uuid) {\r
181         this.subnets.remove(uuid);\r
182     }\r
183 \r
184     public List<NeutronPort> getPortsOnNetwork() {\r
185         return myPorts;\r
186     }\r
187 \r
188     public void addPort(NeutronPort port) {\r
189         myPorts.add(port);\r
190     }\r
191 \r
192     public void removePort(NeutronPort port) {\r
193         myPorts.remove(port);\r
194     }\r
195 \r
196     /**\r
197      * This method copies selected fields from the object and returns them\r
198      * as a new object, suitable for marshaling.\r
199      *\r
200      * @param fields\r
201      *            List of attributes to be extracted\r
202      * @return an OpenStackNetworks object with only the selected fields\r
203      * populated\r
204      */\r
205 \r
206     public NeutronNetwork extractFields(List<String> fields) {\r
207         NeutronNetwork ans = new NeutronNetwork();\r
208         Iterator<String> i = fields.iterator();\r
209         while (i.hasNext()) {\r
210             String s = i.next();\r
211             if (s.equals("id"))\r
212                 ans.setNetworkUUID(this.getNetworkUUID());\r
213             if (s.equals("name"))\r
214                 ans.setNetworkName(this.getNetworkName());\r
215             if (s.equals("admin_state_up"))\r
216                 ans.setAdminStateUp(this.adminStateUp);\r
217             if (s.equals("status"))\r
218                 ans.setStatus(this.getStatus());\r
219             if (s.equals("subnets")) {\r
220                 List<String> subnetList = new ArrayList<String>();\r
221                 subnetList.addAll(this.getSubnets());\r
222                 ans.setSubnets(subnetList);\r
223             }\r
224             if (s.equals("shared"))\r
225                 ans.setShared(this.shared);\r
226             if (s.equals("tenant_id"))\r
227                 ans.setTenantID(this.getTenantID());\r
228         }\r
229         return ans;\r
230     }\r
231 \r
232 }\r
233 \r