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