Skip to content

Commit fe5d87c

Browse files
authored
Upgrading the minimum required Jenkins version. (#368)
* Upgrading the minimum required Jenkins version. * Updating deprecated API usage
1 parent 69dcf23 commit fe5d87c

19 files changed

+104
-90
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<properties>
1818
<revision>2.5.3</revision>
1919
<changelist>-SNAPSHOT</changelist>
20-
<jenkins.version>2.249.3</jenkins.version>
20+
<jenkins.version>2.277.2</jenkins.version>
2121
<java.level>8</java.level>
2222
<gitHubRepo>jenkinsci/${project.artifactId}-plugin</gitHubRepo>
2323
<aws-sdk.version>1.12.101-300.vc09c7be9cb57</aws-sdk.version>

src/main/java/com/amazon/jenkins/ec2fleet/CloudNanny.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ protected void doRun() {
6767
* @return basic java list
6868
*/
6969
private static List<Cloud> getClouds() {
70-
return Jenkins.getActiveInstance().clouds;
70+
return Jenkins.get().clouds;
7171
}
7272

7373
private AtomicInteger getRecurrenceCounter(EC2FleetCloud fleetCloud) {

src/main/java/com/amazon/jenkins/ec2fleet/EC2FleetAutoResubmitComputerLauncher.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public void afterDisconnect(final SlaveComputer computer, final TaskListener lis
105105
actions.addAll(failedBuild.getActions(ParametersAction.class));
106106
}
107107
if (executable instanceof Actionable) {
108-
actions.addAll(((Actionable) executable).getActions());
108+
actions.addAll(((Actionable) executable).getAllActions());
109109
}
110110
LOGGER.log(LOG_LEVEL, "RETRIGGERING: " + task + " - WITH ACTIONS: " + actions);
111111
Queue.getInstance().schedule2(task, RESCHEDULE_QUIET_PERIOD_SEC, actions);

src/main/java/com/amazon/jenkins/ec2fleet/EC2FleetCloud.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.kohsuke.stapler.QueryParameter;
3030
import org.kohsuke.stapler.StaplerRequest;
3131

32+
import javax.annotation.Nonnull;
3233
import java.io.IOException;
3334
import java.util.ArrayList;
3435
import java.util.Collection;
@@ -391,7 +392,7 @@ public synchronized boolean hasExcessCapacity() {
391392
}
392393

393394
@Override
394-
public synchronized Collection<NodeProvisioner.PlannedNode> provision(final Label label, final int excessWorkload) {
395+
public synchronized Collection<NodeProvisioner.PlannedNode> provision(@Nonnull final Cloud.CloudState cloudState, final int excessWorkload) {
395396
fine("excessWorkload %s", excessWorkload);
396397

397398
if (stats == null) {
@@ -726,7 +727,8 @@ public synchronized boolean scheduleToTerminate(final String instanceId, final b
726727
}
727728

728729
@Override
729-
public boolean canProvision(final Label label) {
730+
public boolean canProvision(final Cloud.CloudState cloudState) {
731+
final Label label = cloudState.getLabel();
730732
fine("CanProvision called on fleet: \"" + this.labelString + "\" wanting: \"" + (label == null ? "(unspecified)" : label.getName()) + "\".");
731733
if (fleet == null) {
732734
fine("Fleet/ASG for cloud is null, returning false");

src/main/java/com/amazon/jenkins/ec2fleet/EC2FleetLabelCloud.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.kohsuke.stapler.QueryParameter;
3636
import org.kohsuke.stapler.StaplerRequest;
3737

38+
import javax.annotation.Nonnull;
3839
import java.io.IOException;
3940
import java.util.ArrayList;
4041
import java.util.Collection;
@@ -292,9 +293,10 @@ public synchronized boolean hasExcessCapacity() {
292293
// }
293294

294295
@Override
295-
public synchronized Collection<NodeProvisioner.PlannedNode> provision(final Label label, int excessWorkload) {
296+
public synchronized Collection<NodeProvisioner.PlannedNode> provision(@Nonnull final Cloud.CloudState cloudState, int excessWorkload) {
296297
info("excessWorkload %s", excessWorkload);
297298

299+
final Label label = cloudState.getLabel();
298300
List<NodeProvisioner.PlannedNode> r = new ArrayList<>();
299301

300302
for (Map.Entry<String, State> state : states.entrySet()) {
@@ -421,7 +423,7 @@ public void update() {
421423
}
422424

423425
private void updateByState(final Map<String, State> states) {
424-
final Jenkins jenkins = Jenkins.getActiveInstance();
426+
final Jenkins jenkins = Jenkins.get();
425427

426428
final AmazonEC2 ec2 = Registry.getEc2Api().connect(getAwsCredentialsId(), region, endpoint);
427429

@@ -563,7 +565,7 @@ public void run() {
563565
public synchronized boolean scheduleToTerminate(final String instanceId, boolean force) {
564566
info("Attempting to terminate instance: %s", instanceId);
565567

566-
final Node node = Jenkins.getActiveInstance().getNode(instanceId);
568+
final Node node = Jenkins.get().getNode(instanceId);
567569
if (node == null) return false;
568570

569571
final State state = states.get(node.getLabelString());
@@ -586,7 +588,8 @@ public synchronized boolean scheduleToTerminate(final String instanceId, boolean
586588

587589
// sync as we are using modifyable state
588590
@Override
589-
public synchronized boolean canProvision(final Label label) {
591+
public synchronized boolean canProvision(final Cloud.CloudState cloudState) {
592+
final Label label = cloudState.getLabel();
590593
for (String labelString : states.keySet()) {
591594
final boolean r = label == null || Label.parse(labelString).containsAll(label.listAtoms());
592595
fine("CanProvision called on fleet: \"" + labelString + "\" wanting: \"" + (label == null ? "(unspecified)" : label.getName()) + "\". Returning " + r + ".");
@@ -713,14 +716,14 @@ public void updateStacks() {
713716
// ec2KeyPairName = result.getKeyPair().getKeyName();
714717
// }
715718

716-
final Jenkins jenkins = Jenkins.getActiveInstance();
719+
final Jenkins jenkins = Jenkins.get();
717720
final CloudFormationApi cloudFormationApi = Registry.getCloudFormationApi();
718721
final AmazonCloudFormation client = cloudFormationApi.connect(awsCredentialsId, region, endpoint);
719722
final Map<String, CloudFormationApi.StackInfo> allStacks = cloudFormationApi.describe(client, name);
720723

721724
// labels
722725
final Set<String> labels = new HashSet<>();
723-
for (final Item item : Jenkins.getActiveInstance().getAllItems()) {
726+
for (final Item item : Jenkins.get().getAllItems()) {
724727
if (!(item instanceof AbstractProject)) continue;
725728
final AbstractProject abstractProject = (AbstractProject) item;
726729
// assinged label could be null

src/main/java/com/amazon/jenkins/ec2fleet/EC2FleetLabelUpdater.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public long getRecurrencePeriod() {
2323

2424
@Override
2525
protected void doRun() {
26-
for (Cloud cloud : Jenkins.getActiveInstance().clouds) {
26+
for (Cloud cloud : Jenkins.get().clouds) {
2727
if (!(cloud instanceof EC2FleetLabelCloud)) continue;
2828
final EC2FleetLabelCloud ec2FleetLabelCloud = (EC2FleetLabelCloud) cloud;
2929
try {

src/main/java/com/amazon/jenkins/ec2fleet/EC2FleetStatusWidgetUpdater.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ protected void doRun() {
5454
* @return widgets
5555
*/
5656
private static List<Widget> getWidgets() {
57-
return Jenkins.getActiveInstance().getWidgets();
57+
return Jenkins.get().getWidgets();
5858
}
5959

6060
/**
@@ -64,7 +64,7 @@ private static List<Widget> getWidgets() {
6464
* @return basic java list
6565
*/
6666
private static List<Cloud> getClouds() {
67-
return Jenkins.getActiveInstance().clouds;
67+
return Jenkins.get().clouds;
6868
}
6969

7070
}

src/main/java/com/amazon/jenkins/ec2fleet/FleetStateStats.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.amazon.jenkins.ec2fleet;
22

33
import com.amazonaws.services.ec2.model.BatchState;
4-
import hudson.model.Label;
54

65
import javax.annotation.Nonnegative;
76
import javax.annotation.Nonnull;
@@ -68,7 +67,7 @@ public boolean isModifying() {
6867

6968
/**
7069
* Fleet is good to be used for plugin, it will be shown on UI as option to use
71-
* and plugin will use it for provision {@link EC2FleetCloud#provision(Label, int)} ()} and de-provision
70+
* and plugin will use it for provision {@link EC2FleetCloud#provision(hudson.slaves.Cloud.CloudState, int)} ()} and de-provision
7271
* otherwise activity will be ignored until state will not be updated.
7372
*
7473
* @return true or false

src/main/java/com/amazon/jenkins/ec2fleet/NoDelayProvisionStrategy.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import jenkins.model.Jenkins;
99

1010
import java.util.Collection;
11-
import java.util.Collections;
1211
import java.util.List;
1312
import java.util.logging.Level;
1413
import java.util.logging.Logger;
@@ -55,7 +54,9 @@ public NodeProvisioner.StrategyDecision apply(final NodeProvisioner.StrategyStat
5554
new Object[]{label, cloud.getDisplayName()});
5655
continue;
5756
}
58-
if (!cloud.canProvision(label)) {
57+
58+
Cloud.CloudState cloudState = new Cloud.CloudState(label, strategyState.getAdditionalPlannedCapacity());
59+
if (!cloud.canProvision(cloudState)) {
5960
LOGGER.log(Level.INFO, "label [{0}]: cloud {1} can not provision for this label, continuing...",
6061
new Object[]{label, cloud.getDisplayName()});
6162
continue;
@@ -70,7 +71,7 @@ public NodeProvisioner.StrategyDecision apply(final NodeProvisioner.StrategyStat
7071

7172
LOGGER.log(Level.INFO, "label [{0}]: cloud {1} can provision for this label",
7273
new Object[]{label, cloud.getDisplayName()});
73-
final Collection<NodeProvisioner.PlannedNode> plannedNodes = cloud.provision(label, currentDemand);
74+
final Collection<NodeProvisioner.PlannedNode> plannedNodes = cloud.provision(cloudState, currentDemand);
7475
for (NodeProvisioner.PlannedNode plannedNode : plannedNodes) {
7576
currentDemand -= plannedNode.numExecutors;
7677
}

src/main/java/com/amazon/jenkins/ec2fleet/utils/AWSUtils.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public static ClientConfiguration getClientConfiguration(final String endpoint)
3030
.withRetryPolicy(PredefinedRetryPolicies.getDefaultRetryPolicyWithCustomMaxRetries(MAX_ERROR_RETRY));
3131
clientConfiguration.setUserAgentPrefix(USER_AGENT_PREFIX);
3232

33-
final ProxyConfiguration proxyConfig = Jenkins.getActiveInstance().proxy;
33+
final ProxyConfiguration proxyConfig = Jenkins.get().proxy;
3434
if (proxyConfig != null) {
3535
Proxy proxy;
3636
try {
@@ -46,7 +46,7 @@ public static ClientConfiguration getClientConfiguration(final String endpoint)
4646
clientConfiguration.setProxyPort(address.getPort());
4747
if (null != proxyConfig.getUserName()) {
4848
clientConfiguration.setProxyUsername(proxyConfig.getUserName());
49-
clientConfiguration.setProxyPassword(proxyConfig.getPassword());
49+
clientConfiguration.setProxyPassword(proxyConfig.getSecretPassword().getPlainText());
5050
}
5151
}
5252
}

src/main/java/com/amazon/jenkins/ec2fleet/utils/EC2FleetCloudAwareUtils.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@ public class EC2FleetCloudAwareUtils {
1919
private static final Logger LOGGER = Logger.getLogger(EC2FleetCloudAwareUtils.class.getName());
2020

2121
public static void reassign(final @Nonnull String id, @Nonnull final AbstractEC2FleetCloud cloud) {
22-
if (Jenkins.getActiveInstance() != null ) {
23-
if (Jenkins.getActiveInstance().getComputers() != null) {
24-
for (final Computer computer : Jenkins.getActiveInstance().getComputers()) {
22+
if (Jenkins.get() != null ) {
23+
if (Jenkins.get().getComputers() != null) {
24+
for (final Computer computer : Jenkins.get().getComputers()) {
2525
LOGGER.info("Trying to reassign Jenkins computer:" + computer.getDisplayName());
2626
checkAndReassign(id, cloud, computer);
2727
}
2828
}
2929

30-
if (Jenkins.getActiveInstance().getNodes() != null) {
31-
for (final Node node : Jenkins.getActiveInstance().getNodes()) {
30+
if (Jenkins.get().getNodes() != null) {
31+
for (final Node node : Jenkins.get().getNodes()) {
3232
LOGGER.info("Trying to reassign Jenkins node:" + node.getDisplayName());
3333
checkAndReassign(id, cloud, node);
3434
}

src/main/java/com/amazon/jenkins/ec2fleet/utils/JenkinsUtils.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
public class JenkinsUtils {
77

88
public static void removeNode(final String instanceId) {
9-
final Jenkins jenkins = Jenkins.getActiveInstance();
9+
final Jenkins jenkins = Jenkins.get();
1010
// If this node is dying, remove it from Jenkins
1111
final Node n = jenkins.getNode(instanceId);
1212
if (n != null) {

0 commit comments

Comments
 (0)