checkstyle: TypeName
[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 java.io.Serializable;
12 import java.util.ArrayList;
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 /**
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  * <p>
26  * id                 uuid-str
27  * tenant_id          uuid-str
28  * name               String
29  * protocol           String
30  * lb_algorithm       String
31  * healthmonitor_id   String
32  * admin_state_up     Bool
33  * status             String
34  * members            List &lt;NeutronLoadBalancerPoolMember&gt;
35  * http://docs.openstack.org/api/openstack-network/2.0/openstack-network.pdf
36  */
37
38 @XmlRootElement
39 @XmlAccessorType(XmlAccessType.NONE)
40 public final class NeutronLoadBalancerPool extends NeutronBaseAttributes<NeutronLoadBalancerPool>
41         implements Serializable {
42     private static final long serialVersionUID = 1L;
43
44     @XmlElement(name = "protocol")
45     String loadBalancerPoolProtocol;
46
47     @XmlElement(name = "lb_algorithm")
48     String loadBalancerPoolLbAlgorithm;
49
50     @XmlElement(name = "healthmonitor_id")
51     String neutronLoadBalancerPoolHealthMonitorID;
52
53     @XmlElement(defaultValue = "true", name = "admin_state_up")
54     Boolean loadBalancerPoolAdminStateIsUp;
55
56     @XmlElement(name = "listeners")
57     List<NeutronID> loadBalancerPoolListeners;
58
59     @XmlElement(name = "session_persistence")
60     NeutronLoadBalancerSessionPersistence loadBalancerPoolSessionPersistence;
61
62     @XmlElement(name = "members")
63     List<NeutronLoadBalancerPoolMember> loadBalancerPoolMembers;
64
65     public NeutronLoadBalancerPool() {
66         loadBalancerPoolMembers = new ArrayList<>();
67     }
68
69     public String getLoadBalancerPoolProtocol() {
70         return loadBalancerPoolProtocol;
71     }
72
73     public void setLoadBalancerPoolProtocol(String loadBalancerPoolProtocol) {
74         this.loadBalancerPoolProtocol = loadBalancerPoolProtocol;
75     }
76
77     public String getLoadBalancerPoolLbAlgorithm() {
78         return loadBalancerPoolLbAlgorithm;
79     }
80
81     public void setLoadBalancerPoolLbAlgorithm(String loadBalancerPoolLbAlgorithm) {
82         this.loadBalancerPoolLbAlgorithm = loadBalancerPoolLbAlgorithm;
83     }
84
85     public String getNeutronLoadBalancerPoolHealthMonitorID() {
86         return neutronLoadBalancerPoolHealthMonitorID;
87     }
88
89     public void setNeutronLoadBalancerPoolHealthMonitorID(String neutronLoadBalancerPoolHealthMonitorID) {
90         this.neutronLoadBalancerPoolHealthMonitorID = neutronLoadBalancerPoolHealthMonitorID;
91     }
92
93     public Boolean getLoadBalancerPoolAdminIsStateIsUp() {
94         return loadBalancerPoolAdminStateIsUp;
95     }
96
97     public void setLoadBalancerPoolAdminStateIsUp(Boolean loadBalancerPoolAdminStateIsUp) {
98         this.loadBalancerPoolAdminStateIsUp = loadBalancerPoolAdminStateIsUp;
99     }
100
101     public NeutronLoadBalancerSessionPersistence getLoadBalancerPoolSessionPersistence() {
102         return loadBalancerPoolSessionPersistence;
103     }
104
105     public void setLoadBalancerSessionPersistence(
106             NeutronLoadBalancerSessionPersistence loadBalancerPoolSessionPersistence) {
107         this.loadBalancerPoolSessionPersistence = loadBalancerPoolSessionPersistence;
108     }
109
110     public List<NeutronID> getLoadBalancerPoolListeners() {
111         return loadBalancerPoolListeners;
112     }
113
114     public void setLoadBalancerPoolListeners(List<NeutronID> loadBalancerPoolListeners) {
115         this.loadBalancerPoolListeners = loadBalancerPoolListeners;
116     }
117
118     public List<NeutronLoadBalancerPoolMember> getLoadBalancerPoolMembers() {
119         /*
120          * Update the pool_id of the member to that this.id
121          */
122         List<NeutronLoadBalancerPoolMember> answer = new ArrayList<>();
123         if (loadBalancerPoolMembers != null) {
124             for (NeutronLoadBalancerPoolMember member : loadBalancerPoolMembers) {
125                 member.setPoolID(uuid);
126                 answer.add(member);
127             }
128         }
129         return answer;
130     }
131
132     public NeutronLoadBalancerPoolMember getNeutronLoadBalancerPoolMember(String uuid) {
133         for (NeutronLoadBalancerPoolMember member : loadBalancerPoolMembers) {
134             if (uuid.equals(member.getID())) {
135                 return member;
136             }
137         }
138         return null;
139     }
140
141     public void setLoadBalancerPoolMembers(List<NeutronLoadBalancerPoolMember> loadBalancerPoolMembers) {
142         this.loadBalancerPoolMembers = loadBalancerPoolMembers;
143     }
144
145     public void addLoadBalancerPoolMember(NeutronLoadBalancerPoolMember loadBalancerPoolMember) {
146         this.loadBalancerPoolMembers.add(loadBalancerPoolMember);
147     }
148
149     public void removeLoadBalancerPoolMember(NeutronLoadBalancerPoolMember loadBalancerPoolMember) {
150         this.loadBalancerPoolMembers.remove(loadBalancerPoolMember);
151     }
152
153     public NeutronLoadBalancerPool extractFields(List<String> fields) {
154         NeutronLoadBalancerPool ans = new NeutronLoadBalancerPool();
155         for (String s : fields) {
156             extractField(s, ans);
157             if (s.equals("protocol")) {
158                 ans.setLoadBalancerPoolProtocol(this.getLoadBalancerPoolProtocol());
159             }
160             if (s.equals("lb_algorithm")) {
161                 ans.setLoadBalancerPoolLbAlgorithm(this.getLoadBalancerPoolLbAlgorithm());
162             }
163             if (s.equals("healthmonitor_id")) {
164                 ans.setNeutronLoadBalancerPoolHealthMonitorID(this.getNeutronLoadBalancerPoolHealthMonitorID());
165             }
166             if (s.equals("admin_state_up")) {
167                 ans.setLoadBalancerPoolAdminStateIsUp(loadBalancerPoolAdminStateIsUp);
168             }
169             if (s.equals("members")) {
170                 ans.setLoadBalancerPoolMembers(getLoadBalancerPoolMembers());
171             }
172         }
173         return ans;
174     }
175
176     @Override
177     public String toString() {
178         return "NeutronLoadBalancerPool{" + "id='" + uuid + '\'' + ", tenantID='" + tenantID + '\'' + ", name='"
179                 + name + '\'' + ", protocol=" + loadBalancerPoolProtocol + '\'' + ", lbAlgorithm='"
180                 + loadBalancerPoolLbAlgorithm + '\'' + ", healthmonitorID=" + neutronLoadBalancerPoolHealthMonitorID
181                 + ", adminStateUp=" + loadBalancerPoolAdminStateIsUp + '}';
182      // todo: add loadBalancerPoolMembers as joined string
183     }
184
185 }