Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #45 from spark404/nostaticnat
JENKINS-18461 Allow the user to not allocate a public ip address for a slave in a cloudstack cloud
  • Loading branch information
abayer committed Aug 27, 2013
2 parents 3a8412f + 6e77ee7 commit 78b9181
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 3 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -30,7 +30,7 @@
<test.jenkins.blobstore.build-version />
<test.jenkins.blobstore.identity>FIXME_IDENTITY</test.jenkins.blobstore.identity>
<test.jenkins.blobstore.credential>FIXME_CREDENTIALS</test.jenkins.blobstore.credential>
<jclouds.version>1.6.1-incubating</jclouds.version>
<jclouds.version>1.6.2-incubating</jclouds.version>
<guava.version>14.0.1</guava.version>
<jsch.version>0.1.48</jsch.version>
<stapler.version>1.178</stapler.version>
Expand Down
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 78b9181

Please sign in to comment.