Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
2 changes: 2 additions & 0 deletions src/main/java/com/microsoft/azure/vmagent/AzureVMCloud.java
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@
import jenkins.model.Jenkins;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.jenkinsci.Symbol;
import org.jenkinsci.plugins.cloudstats.CloudStatistics;
import org.jenkinsci.plugins.cloudstats.ProvisioningActivity;
import org.jenkinsci.plugins.cloudstats.TrackedPlannedNode;
Expand Down Expand Up @@ -1184,6 +1185,7 @@ public Cloud reconfigure(@NonNull StaplerRequest2 req, JSONObject form) throws D
}

@Extension
@Symbol("azureVM")
public static class DescriptorImpl extends Descriptor<Cloud> {

private static final String LOG_RECORDER_NAME = "Azure VM Agent (Auto)";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,109 +43,114 @@
fluent.withAdvancedImage(template.getAdvancedImageInside());
}
fluent.withTags(template.getTags());
fluent.withMaxVirtualMachinesLimit(template.getMaxVirtualMachinesLimit());
}

public AzureVMTemplateBuilder(AzureVMTemplateFluent<?> fluent) {
this.fluent = fluent;
}

public AzureVMTemplateBuilder(AzureVMTemplateFluent<?> fluent, AzureVMAgentTemplate template) {
this.fluent = fluent;
fluent.withName(template.getTemplateName());
fluent.withDescription(template.getTemplateDesc());
fluent.withLabels(template.getLabels());
fluent.withLocation(template.getLocation());
fluent.withVirtualMachineSize(template.getVirtualMachineSize());
if (template.getStorageAccountNameReferenceType().equalsIgnoreCase("new")) {
fluent.withNewStorageAccount(template.getNewStorageAccountName());
} else {
fluent.withExistingStorageAccount(template.getExistingStorageAccountName());
}
fluent.withStorageAccountType(template.getStorageAccountType());
fluent.withDiskType(template.getDiskType());
fluent.withOsDiskSize(template.getOsDiskSize());
fluent.withRetentionStrategy((AzureVMCloudBaseRetentionStrategy) template.getRetentionStrategy());
fluent.withUsageMode(template.getUsageMode());
fluent.withAdminCredential(template.getCredentialsId());
fluent.withWorkspace(template.getAgentWorkspace());
fluent.withShutdownOnIdle(template.isShutdownOnIdle());

if (template.getImageTopLevelType().equalsIgnoreCase("basic")) {
fluent.withBuiltInImage(template.getBuiltInImageInside());
} else {
fluent.withAdvancedImage(template.getAdvancedImageInside());
}
fluent.withTags(template.getTags());
fluent.withMaxVirtualMachinesLimit(template.getMaxVirtualMachinesLimit());
}

public AzureVMAgentTemplate build() {
String agentLaunchMethod = fluent.getAdvancedImage().getAgentLaunchMethod();
AzureComputerLauncher launcher;
if (agentLaunchMethod.equals(Constants.LAUNCH_METHOD_JNLP)) {
launcher = new AzureInboundLauncher();
} else {
AzureSSHLauncher azureSSHLauncher = new AzureSSHLauncher();
azureSSHLauncher.setSshConfig(fluent.getAdvancedImage().getSshConfig());
azureSSHLauncher.setPreInstallSsh(fluent.getAdvancedImage().isPreInstallSsh());

launcher = azureSSHLauncher;
}

AzureVMAgentTemplate azureVMAgentTemplate = new AzureVMAgentTemplate(
fluent.getName(),
fluent.getDescription(),
fluent.getLabels(),
fluent.getLocation(),
null,
fluent.getVirtualMachineSize(),
fluent.getStorageAccountNameReferenceType(),
fluent.getStorageAccountType(),
fluent.getNewStorageAccountName(),
fluent.getExistingStorageAccountName(),
fluent.getDiskType(),
fluent.getAdvancedImage().getNoOfParallelJobs(),
fluent.getUsageMode(),
fluent.getAdvancedImage().getOsType(),
fluent.getImageTopLevelType(),
new AzureVMAgentTemplate.ImageReferenceTypeClass(fluent.getAdvancedImage().getImage(),
fluent.getAdvancedImage().getImageId(),
fluent.getAdvancedImage().getImagePublisher(),
fluent.getAdvancedImage().getImageOffer(),
fluent.getAdvancedImage().getImageSku(),
fluent.getAdvancedImage().getImageVersion(),
fluent.getAdvancedImage().getGalleryName(),
fluent.getAdvancedImage().getGalleryImageDefinition(),
fluent.getAdvancedImage().getGalleryImageVersion(),
fluent.getAdvancedImage().getGallerySubscriptionId(),
fluent.getAdvancedImage().getGalleryResourceGroup()),
launcher,
fluent.getAdvancedImage().getInitScript(),
fluent.getAdvancedImage().getTerminateScript(),
fluent.getCredentialsId(),
fluent.getAdvancedImage().getVirtualNetworkName(),
fluent.getAdvancedImage().getVirtualNetworkResourceGroupName(),
fluent.getAdvancedImage().getSubnetName(),
fluent.getAdvancedImage().getNsgName(),
fluent.getWorkspace(),
fluent.getAdvancedImage().getJvmOptions(),
fluent.getRetentionStrategy(),
fluent.getAdvancedImage().isExecuteInitScriptAsRoot(),
fluent.getAdvancedImage().isDoNotUseMachineIfInitFails()
);
azureVMAgentTemplate.setShutdownOnIdle(fluent.isShutdownOnIdle());
azureVMAgentTemplate.setEphemeralOSDisk(fluent.isEphemeralOSDisk());
azureVMAgentTemplate.setOsDiskSize(fluent.getOsDiskSize());
azureVMAgentTemplate.setTemplateDisabled(fluent.getAdvancedImage().isTemplateDisabled());
azureVMAgentTemplate.setBuiltInImage(fluent.getBuiltInImage().getBuiltInImage());
azureVMAgentTemplate.setInstallGit(fluent.getBuiltInImage().isInstallGit());
azureVMAgentTemplate.setInstallMaven(fluent.getBuiltInImage().isInstallMaven());
azureVMAgentTemplate.setInstallDocker(fluent.getBuiltInImage().isInstallDocker());
azureVMAgentTemplate.setInstallQemu(fluent.getBuiltInImage().isInstallQemu());
azureVMAgentTemplate.setUsePrivateIP(fluent.getAdvancedImage().isUsePrivateIP());
azureVMAgentTemplate.setEnableMSI(fluent.getAdvancedImage().isEnableMSI());
azureVMAgentTemplate.setEnableUAMI(fluent.getAdvancedImage().isEnableUAMI());
azureVMAgentTemplate.setUamiID(fluent.getAdvancedImage().getUamiID());
azureVMAgentTemplate.setTags(fluent.getCloudTags());
if (fluent.getMaxVirtualMachinesLimit() != null) {
azureVMAgentTemplate.setMaxVirtualMachinesLimit(fluent.getMaxVirtualMachinesLimit());

Check warning on line 152 in src/main/java/com/microsoft/azure/vmagent/builders/AzureVMTemplateBuilder.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered lines

Lines 46-152 are not covered by tests
}
azureVMAgentTemplate.getImageReference().setGalleryImageSpecialized(
fluent.getAdvancedImage().getGalleryImageSpecialized());
return azureVMAgentTemplate;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@

private List<AzureTagPair> cloudTags;

private Integer maxVirtualMachinesLimit;

public AzureVMTemplateFluent() {
location = "Japan West";
virtualMachineSize = "Standard_A0";
Expand Down Expand Up @@ -206,96 +208,105 @@
this.credentialsId = credentialsId;
return (T) this;
}

public T withMaxVirtualMachinesLimit(Integer maxVirtualMachinesLimit) {
this.maxVirtualMachinesLimit = maxVirtualMachinesLimit;
return (T) this;
}
//CHECKSTYLE:ON

public String getName() {
return name;
}

public String getDescription() {
return description;
}

public String getWorkspace() {
return workspace;
}

public String getLabels() {
return labels;
}

public String getLocation() {
return location;
}

public String getVirtualMachineSize() {
return virtualMachineSize;
}

public String getStorageAccountType() {
return storageAccountType;
}

public String getStorageAccountNameReferenceType() {
return storageAccountNameReferenceType;
}

public String getDiskType() {
return diskType;
}

public boolean isEphemeralOSDisk() {
return ephemeralOSDisk;
}

public boolean isEncryptionAtHost() {
return encryptionAtHost;
}

public int getOsDiskSize() {
return osDiskSize;
}

public String getNewStorageAccountName() {
return newStorageAccountName;
}

public String getExistingStorageAccountName() {
return existingStorageAccountName;
}

public AzureVMCloudBaseRetentionStrategy getRetentionStrategy() {
return retentionStrategy;
}

public boolean isShutdownOnIdle() {
return shutdownOnIdle;
}

public Node.Mode getUsageMode() {
return usageMode;
}

public String getImageTopLevelType() {
return imageTopLevelType;
}

public BuiltInImage getBuiltInImage() {
return builtInImage;
}

public AdvancedImage getAdvancedImage() {
return advancedImage;
}

public String getCredentialsId() {
return credentialsId;
}

List<AzureTagPair> getCloudTags() {
return new ArrayList<>(cloudTags);
}

public Integer getMaxVirtualMachinesLimit() {
return maxVirtualMachinesLimit;

Check warning on line 307 in src/main/java/com/microsoft/azure/vmagent/builders/AzureVMTemplateFluent.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered lines

Lines 213-307 are not covered by tests
}

public class BuiltInImageNested extends BuiltInImageFluent<BuiltInImageNested> {

private final BuiltInImageBuilder builder;
Expand Down