diff --git a/pom.xml b/pom.xml
index 590f586..67bd997 100644
--- a/pom.xml
+++ b/pom.xml
@@ -122,7 +122,7 @@
cloud.dnation.integration
hetzner-cloud-client-java
- 1.3.0
+ 1.6.0
org.jenkins-ci.plugins
diff --git a/src/main/java/cloud/dnation/jenkins/plugins/hetzner/ConfigurationValidator.java b/src/main/java/cloud/dnation/jenkins/plugins/hetzner/ConfigurationValidator.java
index d81ea66..fa38ff3 100644
--- a/src/main/java/cloud/dnation/jenkins/plugins/hetzner/ConfigurationValidator.java
+++ b/src/main/java/cloud/dnation/jenkins/plugins/hetzner/ConfigurationValidator.java
@@ -106,8 +106,8 @@ static ValidationResult verifyImage(String image, String credentialsId) {
"Expected exactly one result, got %s", result.getImages().size());
return new ValidationResult(true, "Found: " +
result.getImages().get(0).getDescription());
- } else if (Helper.isPossiblyInteger(image)) {
- final GetImageByIdResponse result = api.getImageById(Integer.parseInt(image)).execute().body();
+ } else if (Helper.isPossiblyLong(image)) {
+ final GetImageByIdResponse result = api.getImageById(Long.parseLong(image)).execute().body();
return new ValidationResult(true, "Found: " +
result.getImage().getDescription());
} else {
@@ -128,7 +128,7 @@ static ValidationResult verifyNetwork(String network, String credentialsId) {
return new ValidationResult(true, "Found: " +
result.getNetworks().get(0).getName() + " " +
result.getNetworks().get(0).getIpRange());
- } else if (Helper.isPossiblyInteger(network)) {
+ } else if (Helper.isPossiblyLong(network)) {
final GetNetworkByIdResponse result = api.getNetworkById(Integer.parseInt(network)).execute().body();
return new ValidationResult(true, "Found: " +
result.getNetwork().getName() + " " + result.getNetwork().getIpRange());
@@ -150,7 +150,7 @@ static ValidationResult verifyPlacementGroup(String placementGroup, String crede
return new ValidationResult(true, "Found: " +
result.getPlacementGroups().get(0).getName() + " " +
result.getPlacementGroups().get(0).getId());
- } else if (Helper.isPossiblyInteger(placementGroup)) {
+ } else if (Helper.isPossiblyLong(placementGroup)) {
final GetPlacementGroupByIdResponse result = api.getPlacementGroupById(Integer.parseInt(placementGroup)).execute().body();
return new ValidationResult(true, "Found: " +
result.getPlacementGroup().getName() + " " + result.getPlacementGroup().getId());
diff --git a/src/main/java/cloud/dnation/jenkins/plugins/hetzner/Helper.java b/src/main/java/cloud/dnation/jenkins/plugins/hetzner/Helper.java
index 338e83b..17462c4 100644
--- a/src/main/java/cloud/dnation/jenkins/plugins/hetzner/Helper.java
+++ b/src/main/java/cloud/dnation/jenkins/plugins/hetzner/Helper.java
@@ -20,7 +20,6 @@
import com.cloudbees.plugins.credentials.CredentialsProvider;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
-import com.google.common.primitives.Ints;
import com.trilead.ssh2.crypto.PEMDecoder;
import hudson.security.ACL;
import jenkins.model.Jenkins;
@@ -92,14 +91,18 @@ public static boolean isLabelExpression(String expression) {
}
/**
- * Check if given string could be parsed as positive integer.
+ * Check if given string could be parsed as positive long.
*
* @param str string to check
- * @return true
if given string could be parsed as positive integer, false
otherwise
+ * @return true
if given string could be parsed as positive long, false
otherwise
*/
- public static boolean isPossiblyInteger(String str) {
- final Integer value = Ints.tryParse(str);
- return value != null && value > 0;
+ public static boolean isPossiblyLong(String str) {
+ try {
+ final long value = Long.parseLong(str);
+ return value > 0;
+ } catch (NumberFormatException e) {
+ return false;
+ }
}
public static List getPayload(@Nonnull Response response, @Nonnull Function> mapper) {
diff --git a/src/main/java/cloud/dnation/jenkins/plugins/hetzner/HetznerCloudResourceManager.java b/src/main/java/cloud/dnation/jenkins/plugins/hetzner/HetznerCloudResourceManager.java
index 3d01dd3..529fed9 100644
--- a/src/main/java/cloud/dnation/jenkins/plugins/hetzner/HetznerCloudResourceManager.java
+++ b/src/main/java/cloud/dnation/jenkins/plugins/hetzner/HetznerCloudResourceManager.java
@@ -117,7 +117,7 @@ private HetznerApi proxy() {
* @throws IllegalStateException if there was invalid response from API server
* @throws IllegalArgumentException if label expression didn't yield single image
*/
- private int getImageIdForLabelExpression(String labelExpression) throws IOException {
+ private long getImageIdForLabelExpression(String labelExpression) throws IOException {
return searchResourceByLabelExpression(labelExpression, proxy()::getImagesBySelector,
GetImagesBySelectorResponse::getImages);
}
@@ -132,7 +132,7 @@ private int getImageIdForLabelExpression(String labelExpression) throws IOExcept
* @throws IllegalStateException if there was invalid response from API server
* @throws IllegalArgumentException if label expression didn't yield single network
*/
- private int getNetworkIdForLabelExpression(String labelExpression) throws IOException {
+ private long getNetworkIdForLabelExpression(String labelExpression) throws IOException {
return searchResourceByLabelExpression(labelExpression, proxy()::getNetworkBySelector,
GetNetworksBySelectorResponse::getNetworks);
}
@@ -147,12 +147,12 @@ private int getNetworkIdForLabelExpression(String labelExpression) throws IOExce
* @throws IllegalStateException if there was invalid response from API server
* @throws IllegalArgumentException if label expression didn't yield single placement group
*/
- private int getPlacementGroupForLabelExpression(String labelExpression) throws IOException {
+ private long getPlacementGroupForLabelExpression(String labelExpression) throws IOException {
return searchResourceByLabelExpression(labelExpression, proxy()::getPlacementGroups,
GetPlacementGroupsResponse::getPlacementGroups);
}
- private int searchResourceByLabelExpression(
+ private long searchResourceByLabelExpression(
String labelExpression,
Function> searchFunction,
Function> getItemsFunction) throws IOException {
@@ -172,7 +172,7 @@ private int s
* @param server server instance to remove from cloud
*/
public void destroyServer(ServerDetail server) {
- final int serverId = server.getId();
+ final long serverId = server.getId();
final HetznerApi client = proxy();
try {
assertValidResponse(client.powerOffServer(serverId).execute());
@@ -204,11 +204,10 @@ private SshKeyDetail getOrCreateSshKey(HetznerServerTemplate template) throws IO
}
final String publicKey = getSSHPublicKeyFromPrivate(privateKey.getPrivateKey(),
Secret.toString(privateKey.getPassphrase()));
- final Response createResponse = proxy().createSshKey(CreateSshKeyRequest.builder()
+ final Response createResponse = proxy().createSshKey(new CreateSshKeyRequest()
.labels(createLabelsForSshKey(credentialsId))
.name(template.getConnector().getSshCredentialsId())
- .publicKey(publicKey)
- .build())
+ .publicKey(publicKey))
.execute();
return assertValidResponse(createResponse, CreateSshKeyResponse::getSshKey);
}
@@ -255,9 +254,9 @@ public HetznerServerInfo createServer(HetznerServerAgent agent) {
final ConnectivityType ct = agent.getTemplate().getConnectivity().getType();
if (ct == ConnectivityType.BOTH || ct == ConnectivityType.PRIVATE) {
if (!Strings.isNullOrEmpty(agent.getTemplate().getNetwork())) {
- final int networkId;
- if (Helper.isPossiblyInteger(agent.getTemplate().getNetwork())) {
- networkId = Integer.parseInt(agent.getTemplate().getNetwork());
+ final long networkId;
+ if (Helper.isPossiblyLong(agent.getTemplate().getNetwork())) {
+ networkId = Long.parseLong(agent.getTemplate().getNetwork());
} else {
networkId = getNetworkIdForLabelExpression(agent.getTemplate().getNetwork());
}
@@ -272,8 +271,8 @@ public HetznerServerInfo createServer(HetznerServerAgent agent) {
}
final String placementGroup = agent.getTemplate().getPlacementGroup();
if (!Strings.isNullOrEmpty(placementGroup)) {
- if(Helper.isPossiblyInteger(placementGroup)) {
- createServerRequest.setPlacementGroup(Integer.parseInt(placementGroup));
+ if(Helper.isPossiblyLong(placementGroup)) {
+ createServerRequest.setPlacementGroup(Long.parseLong(placementGroup));
} else {
createServerRequest.setPlacementGroup(getPlacementGroupForLabelExpression(placementGroup));
}
diff --git a/src/main/java/cloud/dnation/jenkins/plugins/hetzner/primaryip/AbstractByLabelSelector.java b/src/main/java/cloud/dnation/jenkins/plugins/hetzner/primaryip/AbstractByLabelSelector.java
index 13852b5..2f8924e 100644
--- a/src/main/java/cloud/dnation/jenkins/plugins/hetzner/primaryip/AbstractByLabelSelector.java
+++ b/src/main/java/cloud/dnation/jenkins/plugins/hetzner/primaryip/AbstractByLabelSelector.java
@@ -38,7 +38,7 @@ public AbstractByLabelSelector(boolean failIfError, String selector) {
@Override
public void applyInternal(HetznerApi api, CreateServerRequest server) throws IOException {
- final PrimaryIpDetail pip = api.getAllPrimaryIps(selector).execute().body().getIps().stream()
+ final PrimaryIpDetail pip = api.getAllPrimaryIps(selector).execute().body().getPrimaryIps().stream()
.filter(ip -> isIpUsable(ip, server)).findFirst().get();
final PublicNetRequest net = new PublicNetRequest();
net.setIpv4(pip.getId());
diff --git a/src/test/java/cloud/dnation/jenkins/plugins/hetzner/HelperTest.java b/src/test/java/cloud/dnation/jenkins/plugins/hetzner/HelperTest.java
index d815af3..f85fda4 100644
--- a/src/test/java/cloud/dnation/jenkins/plugins/hetzner/HelperTest.java
+++ b/src/test/java/cloud/dnation/jenkins/plugins/hetzner/HelperTest.java
@@ -58,4 +58,11 @@ public void testCanShutdownServer() {
assertFalse(Helper.canShutdownServer(str, time("2022-08-08T11:03:02")));
assertTrue(Helper.canShutdownServer(str, time("2022-08-08T11:59:02")));
}
+
+ @Test
+ public void testIsPossiblyLong() {
+ assertTrue(Helper.isPossiblyLong("1"));
+ assertFalse(Helper.isPossiblyLong("0"));
+ assertFalse(Helper.isPossiblyLong("not-a-number"));
+ }
}
diff --git a/src/test/java/cloud/dnation/jenkins/plugins/hetzner/primaryip/PrimaryIpStrategyTest.java b/src/test/java/cloud/dnation/jenkins/plugins/hetzner/primaryip/PrimaryIpStrategyTest.java
index cf83522..9e62a72 100644
--- a/src/test/java/cloud/dnation/jenkins/plugins/hetzner/primaryip/PrimaryIpStrategyTest.java
+++ b/src/test/java/cloud/dnation/jenkins/plugins/hetzner/primaryip/PrimaryIpStrategyTest.java
@@ -63,7 +63,7 @@ public void testIpIsUsable() {
assertFalse(isIpUsable(ip, server));
//Already allocated
- ip.setAssigneeId(0);
+ ip.setAssigneeId(0L);
assertFalse(isIpUsable(ip, server));
}
}