Skip to content

Commit

Permalink
JENKINS-18461 Add option for cloudstack clouds to not assign a public ip
Browse files Browse the repository at this point in the history
address.

Use this option to use the internal ip address when running in an
isolated network with advanced networking.
  • Loading branch information
spark404 committed Aug 14, 2013
1 parent 0334328 commit 6e77ee7
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 2 deletions.
Expand Up @@ -25,6 +25,7 @@
import jenkins.model.Jenkins;

import org.apache.commons.lang.StringUtils;
import org.jclouds.cloudstack.compute.options.CloudStackTemplateOptions;
import org.jclouds.compute.ComputeService;
import org.jclouds.compute.RunNodesException;
import org.jclouds.compute.domain.Hardware;
Expand Down Expand Up @@ -80,6 +81,7 @@ public class JCloudsSlaveTemplate implements Describable<JCloudsSlaveTemplate>,
private final Object delayLockObject = new Object();
public final boolean assignFloatingIp;
public final String keyPairName;
private final boolean assignPublicIp;

private transient Set<LabelAtom> labelSet;

Expand Down Expand Up @@ -110,7 +112,8 @@ public JCloudsSlaveTemplate(final String name,
final int overrideRetentionTime,
final int spoolDelayMs,
final boolean assignFloatingIp,
final String keyPairName
final String keyPairName,
final boolean assignPublicIp
) {

this.name = Util.fixEmptyAndTrim(name);
Expand All @@ -137,6 +140,7 @@ public JCloudsSlaveTemplate(final String name,
this.spoolDelayMs = spoolDelayMs;
this.assignFloatingIp = assignFloatingIp;
this.keyPairName = keyPairName;
this.assignPublicIp = assignPublicIp;
readResolve();
}

Expand Down Expand Up @@ -223,6 +227,16 @@ public NodeMetadata get() {
LOGGER.info("Setting keyPairName to " + keyPairName );
options.as(NovaTemplateOptions.class).keyPairName(keyPairName);
}

if (options instanceof CloudStackTemplateOptions) {
/**
* This tells jclouds cloudstack module to assign a public ip, setup
* staticnat and configure the firewall when true. Only interesting
* when using cloudstack advanced networking.
*/
LOGGER.info("Setting setupStaticNat to " + assignPublicIp);
options.as(CloudStackTemplateOptions.class).setupStaticNat(assignPublicIp);
}

if (!Strings.isNullOrEmpty(vmPassword)) {
LoginCredentials lc = LoginCredentials.builder().user(vmUser).password(vmPassword).build();
Expand Down
Expand Up @@ -117,6 +117,12 @@
<f:textbox />
</f:entry>
</f:section>

<f:section title="CloudStack Options">
<f:entry title="Assign Public IP" field="assignPublicIp">
<f:checkbox checked="true"/>
</f:entry>
</f:section>

</f:advanced>
<f:entry title="">
Expand Down
Expand Up @@ -14,7 +14,8 @@ public void testConfigRoundtrip() throws Exception {
String name = "testSlave";
JCloudsSlaveTemplate originalTemplate = new JCloudsSlaveTemplate(name, "imageId", "hardwareId", 1, 512, "osFamily",
"osVersion", "jclouds-slave-type1 jclouds-type2", "Description",
"initScript", null, "1", false, null, null, true, "jenkins", false, null, false, 5, 0, true, "jenkins");
"initScript", null, "1", false, null, null, true, "jenkins", false,
null, false, 5, 0, true, "jenkins", true);

List<JCloudsSlaveTemplate> templates = new ArrayList<JCloudsSlaveTemplate>();
templates.add(originalTemplate);
Expand Down

0 comments on commit 6e77ee7

Please sign in to comment.