neutron-spi: Introduce base class for Neutron object
[neutron.git] / neutron-spi / src / main / java / org / opendaylight / neutron / spi / NeutronNetwork.java
1 /*
2  * Copyright (c) 2013, 2015 IBM Corporation and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.neutron.spi;
10
11 import java.io.Serializable;
12 import java.util.ArrayList;
13 import java.util.Iterator;
14 import java.util.List;
15
16 import javax.xml.bind.annotation.XmlAccessType;
17 import javax.xml.bind.annotation.XmlAccessorType;
18 import javax.xml.bind.annotation.XmlElement;
19 import javax.xml.bind.annotation.XmlRootElement;
20
21 @XmlRootElement(name = "network")
22 @XmlAccessorType(XmlAccessType.NONE)
23
24 public class NeutronNetwork extends NeutronObject implements Serializable, INeutronObject {
25     // See OpenStack Network API v2.0 Reference for description of
26     // annotated attributes
27
28     private static final long serialVersionUID = 1L;
29
30     @XmlElement (name = "name")
31     String networkName;
32
33     @XmlElement (defaultValue = "true", name = "admin_state_up")
34     Boolean adminStateUp;
35
36     @XmlElement (defaultValue = "false", name = "shared")
37     Boolean shared;
38
39     //    @XmlElement (defaultValue = "false", name = "router:external")
40     @XmlElement (defaultValue="false", namespace="router", name="external")
41     Boolean routerExternal;
42
43     //    @XmlElement (defaultValue = "flat", name = "provider:network_type")
44     @XmlElement (namespace="provider", name="network_type")
45     String providerNetworkType;
46
47     //    @XmlElement (name = "provider:physical_network")
48     @XmlElement (namespace="provider", name="physical_network")
49     String providerPhysicalNetwork;
50
51     //    @XmlElement (name = "provider:segmentation_id")
52     @XmlElement (namespace="provider", name="segmentation_id")
53     String providerSegmentationID;
54
55     @XmlElement (name = "status")
56     String status;
57
58     @XmlElement (name = "subnets")
59     List<String> subnets;
60
61     @XmlElement (name="segments")
62     List<NeutronNetwork_Segment> segments;
63
64     @XmlElement (name="vlan_transparent")
65     Boolean vlanTransparent;
66
67     @XmlElement (name="mtu")
68     Integer mtu;
69
70     /* This attribute lists the ports associated with an instance
71      * which is needed for determining if that instance can be deleted
72      */
73
74     public NeutronNetwork() {
75     }
76
77     public void initDefaults() {
78         subnets = new ArrayList<String>();
79         if (status == null) {
80             status = "ACTIVE";
81         }
82         if (adminStateUp == null) {
83             adminStateUp = true;
84         }
85         if (shared == null) {
86             shared = false;
87         }
88         if (routerExternal == null) {
89             routerExternal = false;
90         }
91         if (providerNetworkType == null) {
92             providerNetworkType = "flat";
93         }
94     }
95
96     @Deprecated
97     public String getNetworkUUID() {
98         return getID();
99     }
100
101     @Deprecated
102     public void setNetworkUUID(String uuid) {
103         setID(uuid);
104     }
105
106     public String getNetworkName() {
107         return networkName;
108     }
109
110     public void setNetworkName(String networkName) {
111         this.networkName = networkName;
112     }
113
114     public boolean isAdminStateUp() {
115         return adminStateUp;
116     }
117
118     public Boolean getAdminStateUp() { return adminStateUp; }
119
120     public void setAdminStateUp(boolean newValue) {
121         adminStateUp = newValue;
122     }
123
124     public boolean isShared() { return shared; }
125
126     public Boolean getShared() { return shared; }
127
128     public void setShared(boolean newValue) {
129         shared = newValue;
130     }
131
132     public boolean isRouterExternal() { return routerExternal; }
133
134     public Boolean getRouterExternal() { return routerExternal; }
135
136     public void setRouterExternal(boolean newValue) {
137         routerExternal = newValue;
138     }
139
140     public String getProviderNetworkType() {
141         return providerNetworkType;
142     }
143
144     public void setProviderNetworkType(String providerNetworkType) {
145         this.providerNetworkType = providerNetworkType;
146     }
147
148     public String getProviderPhysicalNetwork() {
149         return providerPhysicalNetwork;
150     }
151
152     public void setProviderPhysicalNetwork(String providerPhysicalNetwork) {
153         this.providerPhysicalNetwork = providerPhysicalNetwork;
154     }
155
156     public String getProviderSegmentationID() {
157         return providerSegmentationID;
158     }
159
160     public void setProviderSegmentationID(String providerSegmentationID) {
161         this.providerSegmentationID = providerSegmentationID;
162     }
163
164     public String getStatus() {
165         return status;
166     }
167
168     public void setStatus(String status) {
169         this.status = status;
170     }
171
172     public List<String> getSubnets() {
173         return subnets;
174     }
175
176     public void setSubnets(List<String> subnets) {
177         this.subnets = subnets;
178     }
179
180     public void addSubnet(String uuid) {
181         subnets.add(uuid);
182     }
183
184     public void removeSubnet(String uuid) {
185         subnets.remove(uuid);
186     }
187
188     public void setSegments(List<NeutronNetwork_Segment> segments) {
189         this.segments = segments;
190     }
191
192     public List<NeutronNetwork_Segment> getSegments() {
193         return segments;
194     }
195
196     public Boolean getVlanTransparent() {
197         return vlanTransparent;
198     }
199
200     public void setVlanTransparent(Boolean input) {
201         this.vlanTransparent = input;
202     }
203
204     public Integer getMtu() {
205         return mtu;
206     }
207
208     public void setMtu(Integer input) {
209         mtu = input;
210     }
211
212     /**
213      * This method copies selected fields from the object and returns them
214      * as a new object, suitable for marshaling.
215      *
216      * @param fields
217      *            List of attributes to be extracted
218      * @return an OpenStackNetworks object with only the selected fields
219      * populated
220      */
221
222     public NeutronNetwork extractFields(List<String> fields) {
223         NeutronNetwork ans = new NeutronNetwork();
224         Iterator<String> i = fields.iterator();
225         while (i.hasNext()) {
226             String s = i.next();
227             if (s.equals("id")) {
228                 ans.setID(this.getID());
229             }
230             if (s.equals("name")) {
231                 ans.setNetworkName(this.getNetworkName());
232             }
233             if (s.equals("admin_state_up")) {
234                 ans.setAdminStateUp(adminStateUp);
235             }
236             if (s.equals("status")) {
237                 ans.setStatus(this.getStatus());
238             }
239             if (s.equals("subnets")) {
240                 List<String> subnetList = new ArrayList<String>();
241                 subnetList.addAll(this.getSubnets());
242                 ans.setSubnets(subnetList);
243             }
244             if (s.equals("shared")) {
245                 ans.setShared(shared);
246             }
247             if (s.equals("tenant_id")) {
248                 ans.setTenantID(this.getTenantID());
249             }
250             if (s.equals("external")) {
251                 ans.setRouterExternal(this.getRouterExternal());
252             }
253             if (s.equals("segmentation_id")) {
254                 ans.setProviderSegmentationID(this.getProviderSegmentationID());
255             }
256             if (s.equals("physical_network")) {
257                 ans.setProviderPhysicalNetwork(this.getProviderPhysicalNetwork());
258             }
259             if (s.equals("network_type")) {
260                 ans.setProviderNetworkType(this.getProviderNetworkType());
261             }
262         }
263         return ans;
264     }
265
266     @Override
267     public String toString() {
268         return "NeutronNetwork [networkUUID=" + uuid + ", networkName=" + networkName + ", adminStateUp="
269                 + adminStateUp + ", shared=" + shared + ", tenantID=" + tenantID + ", routerExternal=" + routerExternal
270                 + ", providerNetworkType=" + providerNetworkType + ", providerPhysicalNetwork="
271                 + providerPhysicalNetwork + ", providerSegmentationID=" + providerSegmentationID + ", status=" + status
272                 + ", subnets=" + subnets + ", segments = " + segments + "]";
273     }
274 }
275