Skip to content

Commit bd56943

Browse files
committed
Validate both username and password has value
before trying to use passwordAuth, ensure both are present. An empty string leaves a valid Secret type, and login information seems to stay from earlier plugin versions and has not been removed by the plugin-upgrade-process. This makes RundeckClientManager work-around the removed login configuration which is no longer available in the plugin (as far as I can see).
1 parent 3068252 commit bd56943

1 file changed

Lines changed: 21 additions & 2 deletions

File tree

src/main/java/org/jenkinsci/plugins/rundeck/client/RundeckClientManager.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package org.jenkinsci.plugins.rundeck.client;
22

3+
import com.google.common.annotations.VisibleForTesting;
34
import hudson.AbortException;
45
import okhttp3.ResponseBody;
56
import org.jenkinsci.plugins.rundeck.RundeckInstance;
67
import org.rundeck.client.RundeckClient;
8+
import org.rundeck.client.RundeckClient.Builder;
79
import org.rundeck.client.api.RundeckApi;
810
import org.rundeck.client.api.model.*;
911
import org.rundeck.client.api.model.scheduler.ScheduledJobItem;
@@ -23,6 +25,8 @@ public class RundeckClientManager implements RundeckManager {
2325
private RundeckInstance rundeckInstance;
2426
private Client<RundeckApi> client;
2527

28+
private Builder<RundeckApi> clientBuilder;
29+
2630
public RundeckClientManager() {
2731
}
2832

@@ -31,6 +35,20 @@ public RundeckClientManager(RundeckInstance rundeckInstance) {
3135
buildClient();
3236
}
3337

38+
39+
private Builder<RundeckApi> createRundeckClientBuilder() {
40+
if (clientBuilder != null) {
41+
return clientBuilder;
42+
} else {
43+
return RundeckClient.builder();
44+
}
45+
}
46+
47+
@VisibleForTesting
48+
protected void setRundeckClientBuilder(Builder<RundeckApi> builder) {
49+
clientBuilder = builder;
50+
}
51+
3452
public RundeckInstance getRundeckInstance() {
3553
return rundeckInstance;
3654
}
@@ -49,12 +67,13 @@ public void setClient(Client<RundeckApi> client) {
4967

5068
public void buildClient(){
5169
if(client == null){
52-
RundeckClient.Builder builder = RundeckClient.builder().baseUrl(rundeckInstance.getUrl());
70+
RundeckClient.Builder builder = createRundeckClientBuilder().baseUrl(rundeckInstance.getUrl());
5371

5472
if(rundeckInstance.getToken()!=null && !rundeckInstance.getToken().getPlainText().isEmpty()){
5573
builder.tokenAuth(rundeckInstance.getToken().getPlainText());
5674
}
57-
if(rundeckInstance.getLogin() != null && rundeckInstance.getPassword()!=null){
75+
if (rundeckInstance.getLogin() != null && rundeckInstance.getPassword() != null
76+
&& !rundeckInstance.getPassword().getPlainText().isEmpty()) {
5877
builder.passwordAuth(rundeckInstance.getLogin(),rundeckInstance.getPassword().getPlainText() );
5978
}
6079

0 commit comments

Comments
 (0)