Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
feat: Bind host configuration to job using id instead of name
  • Loading branch information
liuweiGL committed Nov 18, 2022
commit 7a275fd1c0845bb22d606a85918f55efb1693592
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import java.util.Properties;

import hudson.util.Secret;
import java.util.UUID;
import jenkins.model.Jenkins;
import jenkins.plugins.publish_over.*;
import jenkins.plugins.publish_over_ssh.descriptor.BapSshHostConfigurationDescriptor;
Expand Down Expand Up @@ -64,6 +65,7 @@ public class BapSshHostConfiguration extends BPHostConfiguration<BapSshClient, B

public static final boolean DEFAULT_AVOID_SAME_FILES_UPLOAD = false;

private String id;
private int timeout;
private boolean overrideKey;
private boolean disableExec;
Expand All @@ -87,6 +89,7 @@ public BapSshHostConfiguration() {
// business logic in there...
super(null, null, null, null, null, 0);
this.keyInfo = new BapSshKeyInfo(null, null, null);
this.id = UUID.randomUUID().toString();
}

// CSOFF: ParameterNumberCheck
Expand All @@ -102,6 +105,11 @@ public BapSshHostConfiguration(final String name, final String hostname, final S
this.keyInfo = new BapSshKeyInfo(encryptedPassword, key, keyPath);
this.disableExec = disableExec;
this.avoidSameFileUploads = avoidSameFileUploads;
this.id = StringUtils.isEmpty(id) ? UUID.randomUUID().toString() : id;
}

public String getId() {
return id;
}

@DataBoundSetter
Expand Down Expand Up @@ -499,6 +507,7 @@ protected HashCodeBuilder addToHashCode(final HashCodeBuilder builder) {
@Override
protected ToStringBuilder addToToString(final ToStringBuilder builder) {
return super.addToToString(builder)
.append("id",id)
.append("keyInfo", keyInfo)
.append("timeout", timeout)
.append("overrideKey", overrideKey)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,9 @@ public List<BapSshHostConfiguration> getHostConfigurations() {
return retVal;
}

public BapSshHostConfiguration getConfiguration(final String name) {
public BapSshHostConfiguration getConfiguration(final String identifier) {
for (BapSshHostConfiguration configuration : hostConfigurations) {
if (configuration.getName().equals(name)) {
if (configuration.getId().equals(identifier) || configuration.getName().equals(identifier)) {
return configuration;
}
}
Expand All @@ -124,7 +124,7 @@ public BapSshHostConfiguration getConfiguration(final String name) {

/**
* Add a Host Configuration to the list of configurations.
*
*
* @param configuration Host Configuration to add. The common configuration will be automatically set.
*/
public void addHostConfiguration(final BapSshHostConfiguration configuration) {
Expand All @@ -134,7 +134,7 @@ public void addHostConfiguration(final BapSshHostConfiguration configuration) {

/**
* Removes the given named Host Configuration from the list of configurations.
*
*
* @param name The Name of the Host Configuration to remove.
*/
public void removeHostConfiguration(final String name) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@

<poj:defaultMessages/>

<f:invisibleEntry>
<f:entry title="ID" field="id">
<f:textbox/>
</f:entry>
</f:invisibleEntry>
<f:entry title="${m.name()}" field="name">
<f:textbox/>
</f:entry>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
<f:entry title="${m.hostconfig()}" field="configName">
<select class="setting-input ssh-config-name" name="configName">
<j:forEach var="s" items="${descriptor.publisherPluginDescriptor.hostConfigurations}">
<f:option value="${s.name}" selected="${s.name==instance.configName or ( instance==null and s.name==defaults.publisher.configName ) }">${s.name}<j:if test="${s.effectiveDisableExec}">${%hostconfig.noexec.suffix}</j:if></f:option>
<f:option value="${(s.id==null or s.id=='') ? s.name : s.id}" selected="${s.id==instance.configName or s.name==instance.configName or ( instance==null and s.id==defaults.publisher.configName ) }">${s.name}<j:if test="${s.effectiveDisableExec}">${%hostconfig.noexec.suffix}</j:if></f:option>
</j:forEach>
</select>
</f:entry>
Expand Down