Skip to content
Merged
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
3 changes: 2 additions & 1 deletion Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
/* `buildPlugin` step provided by: https://github.com/jenkins-infra/pipeline-library */
buildPlugin(
useContainerAgent: true,
failFast: false,
configurations: [
[platform: 'linux', jdk: 11],
[platform: 'linux', jdk: 17],
[platform: 'linux', jdk: 17, jenkins: '2.387.1'],
[platform: 'windows', jdk: 11],
])
83 changes: 40 additions & 43 deletions plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
<dependencies>
<dependency>
<groupId>io.jenkins.tools.bom</groupId>
<artifactId>bom-2.289.x</artifactId>
<version>950.v396cb834de1e</version>
<artifactId>bom-2.387.x</artifactId>
<version>1945.v13a_1306588ff</version>
<scope>import</scope>
<type>pom</type>
</dependency>
Expand All @@ -16,7 +16,7 @@
<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<version>4.25</version>
<version>4.54</version>
<relativePath />
</parent>

Expand All @@ -28,8 +28,8 @@
<url>https://github.com/jenkinsci/openstack-cloud-plugin</url>

<properties>
<jenkins.version>2.289.1</jenkins.version>
<java.level>8</java.level>
<jenkins.version>2.387.1</jenkins.version>
<java.level>11</java.level>
<concurrency>1C</concurrency>
<surefire.useFile>false</surefire.useFile>
<spotbugs.failOnError>false</spotbugs.failOnError>
Expand All @@ -38,12 +38,9 @@
</spotbugs.skip> <!-- Upstream Jenkins fails the build if some are found. Excludes does not seem to work. -->
<maven.compiler.showDeprecation>true</maven.compiler.showDeprecation>

<guava.version>20.0</guava.version> <!-- version compatible with openstack4j -->
<jsr305.version>1.3.9</jsr305.version>
<openstack4j.version>3.10</openstack4j.version>
<okhttp.version>3.9.1</okhttp.version>
<jenkins-test-harness.version>1626.v46b0925e70db</jenkins-test-harness.version>
<jackson.version>2.12.4</jackson.version>
<openstack4j.version>3.11</openstack4j.version>
<okhttp.version>5.0.0-alpha.11</okhttp.version>

</properties>

<developers>
Expand Down Expand Up @@ -79,7 +76,6 @@
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>

<!-- Jenkins plugins -->
Expand All @@ -98,12 +94,11 @@
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>config-file-provider</artifactId>
<version>3.7.1</version>
</dependency>
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>cloud-stats</artifactId>
<version>0.27</version>
<version>267.v577e3742c282</version>
</dependency>
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
Expand All @@ -117,7 +112,6 @@
<dependency>
<groupId>org.jenkins-ci.modules</groupId>
<artifactId>instance-identity</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>io.jenkins.plugins</groupId>
Expand All @@ -136,58 +130,61 @@
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>3.0.16</version>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-classworlds</artifactId>
<version>2.4.2</version>
</dependency>
<version>2.7.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.kohsuke/access-modifier-annotation -->
<dependency>
<groupId>org.kohsuke</groupId>
<artifactId>access-modifier-annotation</artifactId>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.jenkins-ci</groupId>
<artifactId>symbol-annotation</artifactId>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.32</version>
<version>1.33</version>
</dependency>

<!--Specifying jenkins version to avoid maven.plugins.enforcer.RequireUpperBoundDeps error
between configuration as code and openstack4j -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson/jackson-bom -->
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-bom</artifactId>
<version>2.15.0-rc3</version>
<type>pom</type>
</dependency>


<!-- Test Dependencies -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mockito/mockito-junit-jupiter -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
<artifactId>mockito-junit-jupiter</artifactId>
<version>5.3.0</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mockito/mockito-core -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.3.0</version>
<scope>test</scope>
</dependency>


<dependency>
<groupId>org.jenkins-ci.plugins.workflow</groupId>
<artifactId>workflow-cps</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,9 +227,10 @@ public long getConnectedSince(){
}

private static final class PendingTermination extends SimpleOfflineCause {
private static final org.jvnet.localizer.Localizable description = null;

private PendingTermination() {
super(Messages._DeletedCause());
super(description);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,13 @@
import hudson.slaves.NodeProperty;
import hudson.slaves.NodeProvisioner.NodeProvisionerInvoker;
import hudson.slaves.NodeProvisioner.PlannedNode;
import hudson.slaves.OfflineCause;
import hudson.util.FormValidation;
import hudson.util.ProcessTree;
import hudson.util.Secret;
import hudson.util.StreamTaskListener;
import jenkins.model.Jenkins;
import jenkins.plugins.openstack.compute.JCloudsCleanupThread;
import jenkins.plugins.openstack.compute.JCloudsCloud;
import jenkins.plugins.openstack.compute.JCloudsComputer;
import jenkins.plugins.openstack.compute.JCloudsPreCreationThread;
import jenkins.plugins.openstack.compute.JCloudsSlave;
import jenkins.plugins.openstack.compute.JCloudsSlaveTemplate;
Expand Down Expand Up @@ -90,13 +88,8 @@
import java.util.stream.Collectors;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.RETURNS_SMART_NULLS;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doCallRealMethod;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.withSettings;
import static org.mockito.Mockito.*;


/**
* Test utils for plugin functional testing.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,10 @@
import static org.junit.Assert.assertNull;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.eq;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
import jenkins.plugins.openstack.compute.internal.Openstack;
import jenkins.plugins.openstack.compute.slaveopts.BootSource;
import jenkins.plugins.openstack.compute.slaveopts.LauncherFactory;
import org.acegisecurity.AccessDeniedException;
import org.acegisecurity.acls.sid.Sid;
import org.apache.commons.io.IOUtils;
import org.junit.Ignore;
Expand Down Expand Up @@ -70,7 +69,7 @@
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.fail;
import static org.mockito.Matchers.any;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.util.Map;
import java.util.Properties;
import java.util.stream.Stream;
import java.lang.reflect.Field;

import com.gargoylesoftware.htmlunit.html.HtmlForm;
import hudson.util.FormValidation;
Expand All @@ -20,7 +21,6 @@
import org.junit.Rule;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.internal.util.reflection.Whitebox;
import org.openstack4j.model.compute.BDMDestType;
import org.openstack4j.model.compute.BDMSourceType;
import org.openstack4j.model.compute.BlockDeviceMappingCreate;
Expand All @@ -41,7 +41,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;

public class JCloudsSlaveTemplateTest {
Expand Down Expand Up @@ -275,9 +275,7 @@ private void testBootFromVolumeSnapshot(final String volumeSnapshotName, final S
@SuppressWarnings("unchecked")
private NovaBlockDeviceMappingCreate getBlockDeviceMapping(ServerCreateBuilder scbActual) {
assertNotNull(scbActual);
List<BlockDeviceMappingCreate> blockDeviceMapping = (List<BlockDeviceMappingCreate>) Whitebox.getInternalState(
scbActual.build(), "blockDeviceMapping"
);
List<BlockDeviceMappingCreate> blockDeviceMapping = (List<BlockDeviceMappingCreate>) getInternalState(scbActual.build(), "blockDeviceMapping");
assertThat(blockDeviceMapping, hasSize(1));
return (NovaBlockDeviceMappingCreate) blockDeviceMapping.get(0);
}
Expand Down Expand Up @@ -342,10 +340,43 @@ public void allowToUseVolumeSnapshotNameAsWellAsId() throws Exception {
assertEquals("vs-id", getVolumeSnapshotId(builders.get(0)));
assertEquals("something-else", getVolumeSnapshotId(builders.get(1)));
}
private static Object getInternalState(Object target, String field) {
Class<?> c = target.getClass();
try {
Field f = getFieldFromHierarchy(c, field);
f.setAccessible(true);
return f.get(target);
} catch (Exception e) {
throw new RuntimeException("Unable to set internal state on a private field. Please report to mockito mailing list.", e);
}
}

private static Field getFieldFromHierarchy(Class<?> clazz, String field) {
Field f = getField(clazz, field);
while (f == null && clazz != Object.class) {
clazz = clazz.getSuperclass();
f = getField(clazz, field);
}
if (f == null) {
throw new RuntimeException(
"You want me to set value to this field: '" + field +
"' on this class: '" + clazz.getSimpleName() +
"' but this field is not declared withing hierarchy of this class!");
}
return f;
}

private static Field getField(Class<?> clazz, String field) {
try {
return clazz.getDeclaredField(field);
} catch (NoSuchFieldException e) {
return null;
}
}

@SuppressWarnings("unchecked")
private String getVolumeSnapshotId(ServerCreateBuilder builder) {
List<BlockDeviceMappingCreate> mapping = (List<BlockDeviceMappingCreate>) Whitebox.getInternalState(
List<BlockDeviceMappingCreate> mapping = (List<BlockDeviceMappingCreate>) getInternalState(
builder.build(),
"blockDeviceMapping"
);
Expand Down
Loading