@@ -93,6 +93,32 @@ public void execute(Invocation invocation) {
9393 }
9494
9595 if (args [0 ].equalsIgnoreCase ("register" )) {
96+ if (args .length >= 2 && args [1 ].equalsIgnoreCase ("loadbalancer" )) {
97+ if (args .length < 4 ) {
98+ source .sendMessage (
99+ Component .text ("Usage: /kuvel register loadbalancer <replicaSetUid> <serverName>" ));
100+ return ;
101+ }
102+ String mappedUid = handler .getReplicaSetUidAndServerNameMap ().getUidFromServerName (args [3 ]);
103+ if (mappedUid != null && !mappedUid .equals (args [2 ])) {
104+ source .sendMessage (
105+ Component .text ("Server name is already mapped to another load balancer uid: " + mappedUid ));
106+ return ;
107+ }
108+ if (plugin .getProxy ().getServer (args [3 ]).isPresent () && mappedUid == null ) {
109+ source .sendMessage (Component .text ("Server name is already registered: " + args [3 ]));
110+ return ;
111+ }
112+
113+ if (handler .registerLoadBalancer (args [2 ], args [3 ])) {
114+ source .sendMessage (
115+ Component .text ("Registered load balancer mapping: " + args [2 ] + " -> " + args [3 ]));
116+ } else {
117+ source .sendMessage (Component .text ("Failed to register load balancer mapping." ));
118+ }
119+ return ;
120+ }
121+
96122 if (args .length < 3 ) {
97123 source .sendMessage (Component .text ("Usage: /kuvel register <podUid> <serverName>" ));
98124 return ;
@@ -117,6 +143,23 @@ public void execute(Invocation invocation) {
117143 }
118144
119145 if (args [0 ].equalsIgnoreCase ("unregister" )) {
146+ if (args .length >= 2 && args [1 ].equalsIgnoreCase ("loadbalancer" )) {
147+ if (args .length < 3 ) {
148+ source .sendMessage (Component .text ("Usage: /kuvel unregister loadbalancer <replicaSetUid>" ));
149+ return ;
150+ }
151+
152+ if (!handler .isLoadBalancerRegistered (args [2 ])) {
153+ source .sendMessage (
154+ Component .text ("Load balancer uid is not currently registered: " + args [2 ]));
155+ return ;
156+ }
157+
158+ handler .unregisterLoadBalancer (args [2 ]);
159+ source .sendMessage (Component .text ("Unregistered load balancer mapping: " + args [2 ]));
160+ return ;
161+ }
162+
120163 if (args .length < 2 ) {
121164 source .sendMessage (Component .text ("Usage: /kuvel unregister <podUid>" ));
122165 return ;
@@ -187,13 +230,19 @@ public void execute(Invocation invocation) {
187230 }
188231
189232 int cleanedLoadBalancerCount = 0 ;
233+ int repairedLoadBalancerCount = 0 ;
190234 for (Map .Entry <String , String > entry :
191235 handler .getReplicaSetUidAndServerNameMap ().getAllMap ().entrySet ()) {
192236 if (plugin .getProxy ().getServer (entry .getValue ()).isPresent ()) {
193237 continue ;
194238 }
195- handler .unregisterLoadBalancer (entry .getKey ());
196- cleanedLoadBalancerCount ++;
239+ boolean success = handler .registerLoadBalancer (entry .getKey (), entry .getValue ());
240+ if (success && plugin .getProxy ().getServer (entry .getValue ()).isPresent ()) {
241+ repairedLoadBalancerCount ++;
242+ } else {
243+ handler .unregisterLoadBalancer (entry .getKey ());
244+ cleanedLoadBalancerCount ++;
245+ }
197246 }
198247
199248 source .sendMessage (
@@ -202,6 +251,8 @@ public void execute(Invocation invocation) {
202251 + repairedPodCount
203252 + ", cleanedPod="
204253 + cleanedPodCount
254+ + ", repairedLoadBalancer="
255+ + repairedLoadBalancerCount
205256 + ", cleanedLoadBalancer="
206257 + cleanedLoadBalancerCount ));
207258 return ;
@@ -214,7 +265,9 @@ private void sendHelp(CommandSource source) {
214265 source .sendMessage (Component .text ("/kuvel status" ));
215266 source .sendMessage (Component .text ("/kuvel list <pods|loadbalancers>" ));
216267 source .sendMessage (Component .text ("/kuvel register <podUid> <serverName>" ));
268+ source .sendMessage (Component .text ("/kuvel register loadbalancer <replicaSetUid> <serverName>" ));
217269 source .sendMessage (Component .text ("/kuvel unregister <podUid>" ));
270+ source .sendMessage (Component .text ("/kuvel unregister loadbalancer <replicaSetUid>" ));
218271 source .sendMessage (Component .text ("/kuvel setname <podUid> <serverName>" ));
219272 source .sendMessage (Component .text ("/kuvel repair" ));
220273 }
0 commit comments