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