eee7e0cf78fd08dd25d9f48c879d487fe6a12af7
[neutron.git] / neutron-spi / src / main / java / org / opendaylight / neutron / spi / NeutronLoadBalancerPool.java
1 /*
2  * Copyright (C) 2014 Red Hat, Inc.  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 javax.xml.bind.annotation.XmlAccessType;
12 import javax.xml.bind.annotation.XmlAccessorType;
13 import javax.xml.bind.annotation.XmlElement;
14 import javax.xml.bind.annotation.XmlRootElement;
15 import java.io.Serializable;
16 import java.util.ArrayList;
17 import java.util.List;
18
19 /**
20  * OpenStack Neutron v2.0 Load Balancer as a service
21  * (LBaaS) bindings. See OpenStack Network API
22  * v2.0 Reference for description of  the fields:
23  * Implemented fields are as follows:
24  *
25  * id                 uuid-str
26  * tenant_id          uuid-str
27  * name               String
28  * description        String
29  * protocol           String
30  * lb_algorithm       String
31  * healthmonitor_id   String
32  * admin_state_up     Bool
33  * status             String
34  * members            List <NeutronLoadBalancerPoolMember>
35  * http://docs.openstack.org/api/openstack-network/2.0/openstack-network.pdf
36  */
37
38 @XmlRootElement
39 @XmlAccessorType(XmlAccessType.NONE)
40
41 public class NeutronLoadBalancerPool implements Serializable, INeutronObject {
42     private static final long serialVersionUID = 1L;
43
44     @XmlElement(name = "id")
45     String loadBalancerPoolID;
46
47     @XmlElement (name = "tenant_id")
48     String loadBalancerPoolTenantID;
49
50     @XmlElement (name = "name")
51     String loadBalancerPoolName;
52
53     @XmlElement (name = "description")
54     String loadBalancerPoolDescription;
55
56     @XmlElement (name = "protocol")
57     String loadBalancerPoolProtocol;
58
59     @XmlElement (name = "lb_algorithm")
60     String loadBalancerPoolLbAlgorithm;
61
62     @XmlElement (name = "healthmonitor_id")
63     String neutronLoadBalancerPoolHealthMonitorID;
64
65     @XmlElement (defaultValue = "true", name = "admin_state_up")
66     Boolean loadBalancerPoolAdminStateIsUp;
67
68     @XmlElement(name = "listeners")
69     List<Neutron_ID> loadBalancerPoolListeners;
70
71     @XmlElement(name = "session_persistence")
72     NeutronLoadBalancer_SessionPersistence loadBalancerPoolSessionPersistence;
73
74     @XmlElement(name = "members")
75     List<NeutronLoadBalancerPoolMember> loadBalancerPoolMembers;
76
77     public NeutronLoadBalancerPool() {
78         loadBalancerPoolMembers = new ArrayList<NeutronLoadBalancerPoolMember>();
79     }
80
81     public String getID() {
82         return loadBalancerPoolID;
83     }
84
85     public void setID(String id) {
86         loadBalancerPoolID = id;
87     }
88
89     // @deprecated use getID()
90     public String getLoadBalancerPoolID() {
91         return loadBalancerPoolID;
92     }
93
94     // @deprecated use setID()
95     public void setLoadBalancerPoolID(String loadBalancerPoolID) {
96         this.loadBalancerPoolID = loadBalancerPoolID;
97     }
98
99     public String getLoadBalancerPoolTenantID() {
100         return loadBalancerPoolTenantID;
101     }
102
103     public void setLoadBalancerPoolTenantID(String loadBalancerPoolTenantID) {
104         this.loadBalancerPoolTenantID = loadBalancerPoolTenantID;
105     }
106
107     public String getLoadBalancerPoolName() {
108         return loadBalancerPoolName;
109     }
110
111     public void setLoadBalancerPoolName(String loadBalancerPoolName) {
112         this.loadBalancerPoolName = loadBalancerPoolName;
113     }
114
115     public String getLoadBalancerPoolDescription() {
116         return loadBalancerPoolDescription;
117     }
118
119     public void setLoadBalancerPoolDescription(String loadBalancerPoolDescription) {
120         this.loadBalancerPoolDescription = loadBalancerPoolDescription;
121     }
122
123     public String getLoadBalancerPoolProtocol() {
124         return loadBalancerPoolProtocol;
125     }
126
127     public void setLoadBalancerPoolProtocol(String loadBalancerPoolProtocol) {
128         this.loadBalancerPoolProtocol = loadBalancerPoolProtocol;
129     }
130
131     public String getLoadBalancerPoolLbAlgorithm() {
132         return loadBalancerPoolLbAlgorithm;
133     }
134
135     public void setLoadBalancerPoolLbAlgorithm(String loadBalancerPoolLbAlgorithm) {
136         this.loadBalancerPoolLbAlgorithm = loadBalancerPoolLbAlgorithm;
137     }
138
139     public String getNeutronLoadBalancerPoolHealthMonitorID() {
140         return neutronLoadBalancerPoolHealthMonitorID;
141     }
142
143     public void setNeutronLoadBalancerPoolHealthMonitorID(String neutronLoadBalancerPoolHealthMonitorID) {
144         this.neutronLoadBalancerPoolHealthMonitorID = neutronLoadBalancerPoolHealthMonitorID;
145     }
146
147     public Boolean getLoadBalancerPoolAdminIsStateIsUp() {
148         return loadBalancerPoolAdminStateIsUp;
149     }
150
151     public void setLoadBalancerPoolAdminStateIsUp(Boolean loadBalancerPoolAdminStateIsUp) {
152         this.loadBalancerPoolAdminStateIsUp = loadBalancerPoolAdminStateIsUp;
153     }
154
155     public NeutronLoadBalancer_SessionPersistence getLoadBalancerPoolSessionPersistence() {
156         return loadBalancerPoolSessionPersistence;
157     }
158
159     public void setLoadBalancerSessionPersistence(NeutronLoadBalancer_SessionPersistence loadBalancerPoolSessionPersistence) {
160         this.loadBalancerPoolSessionPersistence = loadBalancerPoolSessionPersistence;
161     }
162
163     public List<Neutron_ID> getLoadBalancerPoolListeners() {
164         return loadBalancerPoolListeners;
165     }
166
167     public void setLoadBalancerPoolListeners(List<Neutron_ID> loadBalancerPoolListeners) {
168         this.loadBalancerPoolListeners = loadBalancerPoolListeners;
169     }
170
171     public List<NeutronLoadBalancerPoolMember> getLoadBalancerPoolMembers() {
172         /*
173          * Update the pool_id of the member to that this.loadBalancerPoolID
174          */
175         List<NeutronLoadBalancerPoolMember> answer = new ArrayList<NeutronLoadBalancerPoolMember>();
176         if (loadBalancerPoolMembers != null) {
177             for (NeutronLoadBalancerPoolMember member: loadBalancerPoolMembers) {
178                 member.setPoolID(loadBalancerPoolID);
179                 answer.add(member);
180             }
181         }
182         return answer;
183     }
184
185     public NeutronLoadBalancerPoolMember getNeutronLoadBalancerPoolMember(String uuid) {
186         for (NeutronLoadBalancerPoolMember member: loadBalancerPoolMembers) {
187             if (uuid.equals(member.getID())) {
188                 return member;
189             }
190         }
191         return null;
192     }
193
194     public void setLoadBalancerPoolMembers(List<NeutronLoadBalancerPoolMember> loadBalancerPoolMembers) {
195         this.loadBalancerPoolMembers = loadBalancerPoolMembers;
196     }
197
198     public void addLoadBalancerPoolMember(NeutronLoadBalancerPoolMember loadBalancerPoolMember) {
199         this.loadBalancerPoolMembers.add(loadBalancerPoolMember);
200     }
201
202     public void removeLoadBalancerPoolMember(NeutronLoadBalancerPoolMember loadBalancerPoolMember) {
203         this.loadBalancerPoolMembers.remove(loadBalancerPoolMember);
204     }
205
206     public NeutronLoadBalancerPool extractFields(List<String> fields) {
207         NeutronLoadBalancerPool ans = new NeutronLoadBalancerPool();
208         for (String s: fields) {
209             if (s.equals("id")) {
210                 ans.setID(this.getID());
211             }
212             if (s.equals("tenant_id")) {
213                 ans.setLoadBalancerPoolTenantID(this.getLoadBalancerPoolTenantID());
214             }
215             if (s.equals("name")) {
216                 ans.setLoadBalancerPoolName(this.getLoadBalancerPoolName());
217             }
218             if(s.equals("description")) {
219                 ans.setLoadBalancerPoolDescription(this.getLoadBalancerPoolDescription());
220             }
221             if(s.equals("protocol")) {
222                 ans.setLoadBalancerPoolProtocol(this.getLoadBalancerPoolProtocol());
223             }
224             if (s.equals("lb_algorithm")) {
225                 ans.setLoadBalancerPoolLbAlgorithm(this.getLoadBalancerPoolLbAlgorithm());
226             }
227             if (s.equals("healthmonitor_id")) {
228                 ans.setNeutronLoadBalancerPoolHealthMonitorID(this.getNeutronLoadBalancerPoolHealthMonitorID());
229             }
230             if (s.equals("admin_state_up")) {
231                 ans.setLoadBalancerPoolAdminStateIsUp(loadBalancerPoolAdminStateIsUp);
232             }
233             if (s.equals("members")) {
234                 ans.setLoadBalancerPoolMembers(getLoadBalancerPoolMembers());
235             }
236         }
237         return ans;
238     }
239
240     @Override
241     public String toString() {
242         return "NeutronLoadBalancerPool{" +
243             "id='" + loadBalancerPoolID + '\'' +
244             ", tenantID='" + loadBalancerPoolTenantID + '\'' +
245             ", name='" + loadBalancerPoolName + '\'' +
246             ", description='" + loadBalancerPoolDescription + '\'' +
247             ", protocol=" + loadBalancerPoolProtocol +'\''+
248             ", lbAlgorithm='" + loadBalancerPoolLbAlgorithm + '\'' +
249             ", healthmonitorID=" + neutronLoadBalancerPoolHealthMonitorID +
250             ", adminStateUp=" + loadBalancerPoolAdminStateIsUp +
251 // todo: add loadBalancerPoolMembers as joined string
252             '}';
253     }
254
255 }