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