jenkinsci / hetzner-cloud-plugin

Hetzner cloud integration for Jenkins
https://plugins.jenkins.io/hetzner-cloud/
Apache License 2.0
24 stars 8 forks source link

Hetzner API returns error 422 #68

Closed vanlueckn closed 1 year ago

vanlueckn commented 1 year ago

Jenkins and plugins versions report

Environment ```text Jenkins: 2.418 OS: Linux - 6.1.0-10-amd64 Java: 11.0.20 - Eclipse Adoptium (OpenJDK 64-Bit Server VM) --- amazon-ecr:1.114.vfd22430621f5 ant:497.v94e7d9fffa_b_9 antisamy-markup-formatter:162.v0e6ec0fcfcf6 apache-httpcomponents-client-4-api:4.5.14-150.v7a_b_9d17134a_5 apache-httpcomponents-client-5-api:5.2.1-1.0 authentication-tokens:1.53.v1c90fd9191a_b_ aws-credentials:191.vcb_f183ce58b_9 aws-java-sdk-ec2:1.12.481-392.v8b_291cfcda_09 aws-java-sdk-ecr:1.12.481-392.v8b_291cfcda_09 aws-java-sdk-minimal:1.12.481-392.v8b_291cfcda_09 bootstrap5-api:5.3.0-1 bouncycastle-api:2.29 branch-api:2.1122.v09cb_8ea_8a_724 build-timeout:1.31 caffeine-api:3.1.6-115.vb_8b_b_328e59d8 checks-api:2.0.0 cloud-stats:302.v45b_647b_90608 cloudbees-folder:6.846.v23698686f0f6 commons-lang3-api:3.13.0-62.v7d18e55f51e2 commons-text-api:1.10.0-68.v0d0b_c439292b_ credentials:1271.v54b_1c2c6388a_ credentials-binding:631.v861c06d062b_4 discord-notifier:241.v448b_ccd0c0d6 display-url-api:2.3.8 docker-commons:439.va_3cb_0a_6a_fb_29 docker-java-api:3.3.1-79.v20b_53427e041 docker-workflow:572.v950f58993843 durable-task:513.vc48a_a_075a_d93 echarts-api:5.4.0-5 email-ext:2.100 font-awesome-api:6.4.0-2 git:5.2.0 git-client:4.4.0 gitea:1.4.5 github:1.37.3 github-api:1.314-431.v78d72a_3fe4c3 github-branch-source:1732.v3f1889a_c475b_ gradle:2.8.2 handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953 hetzner-cloud:78.v17b67bbc7e74 instance-identity:173.va_37c494ec4e5 ionicons-api:56.v1b_1c8c49374e jackson2-api:2.15.2-350.v0c2f3f8fc595 jakarta-activation-api:2.0.1-3 jakarta-mail-api:2.0.1-3 javax-activation-api:1.2.0-6 javax-mail-api:1.6.2-9 jaxb:2.3.8-1 jjwt-api:0.11.5-77.v646c772fddb_0 jquery3-api:3.7.0-1 junit:1217.v4297208a_a_b_ce ldap:694.vc02a_69c9787f mailer:463.vedf8358e006b_ matrix-auth:3.1.10 matrix-project:802.v8013b_40c7edc mina-sshd-api-common:2.10.0-69.v28e3e36d18eb_ mina-sshd-api-core:2.10.0-69.v28e3e36d18eb_ okhttp-api:4.11.0-157.v6852a_a_fa_ec11 pam-auth:1.10 pipeline-build-step:505.v5f0844d8d126 pipeline-github-lib:42.v0739460cda_c4 pipeline-graph-analysis:202.va_d268e64deb_3 pipeline-groovy-lib:671.v07c339c842e8 pipeline-input-step:477.v339683a_8d55e pipeline-milestone-step:111.v449306f708b_7 pipeline-model-api:2.2144.v077a_d1928a_40 pipeline-model-definition:2.2144.v077a_d1928a_40 pipeline-model-extensions:2.2144.v077a_d1928a_40 pipeline-rest-api:2.33 pipeline-stage-step:305.ve96d0205c1c6 pipeline-stage-tags-metadata:2.2144.v077a_d1928a_40 pipeline-stage-view:2.33 plain-credentials:143.v1b_df8b_d3b_e48 plugin-util-api:3.3.0 resource-disposer:0.23 scm-api:676.v886669a_199a_a_ script-security:1264.vecf66020eb_7d snakeyaml-api:1.33-95.va_b_a_e3e47b_fa_4 ssh-credentials:308.ve4497b_ccd8f4 ssh-slaves:2.916.vd17b_43357ce4 sshd:3.312.v1c601b_c83b_0e structs:324.va_f5d6774f3a_d timestamper:1.26 token-macro:384.vf35b_f26814ec trilead-api:2.84.v72119de229b_7 variant:59.vf075fe829ccb workflow-aggregator:596.v8c21c963d92d workflow-api:1251.vd4889a_b_0a_065 workflow-basic-steps:1042.ve7b_140c4a_e0c workflow-cps:3731.ve4b_5b_857b_a_d3 workflow-durable-task-step:1284.v4fcd365b_75b_e workflow-job:1316.vd2290d3341a_f workflow-multibranch:756.v891d88f2cd46 workflow-scm-step:415.v434365564324 workflow-step-api:639.v6eca_cd8c04a_a_ workflow-support:848.v5a_383b_d14921 ws-cleanup:0.45 ```

What Operating System are you using (both controller, and any agents involved in the problem)?

Ubuntu 20.04

Reproduction steps

Configure Hetzner Cloud Plugin in Jenkins Schedule a job

Expected Results

Cloud controller should create hetzner vm

Actual Results

Hetzner API returns Code 422:

java.lang.IllegalStateException: Invalid API response : 422
    at com.google.common.base.Preconditions.checkState(Preconditions.java:544)
    at cloud.dnation.jenkins.plugins.hetzner.Helper.assertValidResponse(Helper.java:117)
    at cloud.dnation.jenkins.plugins.hetzner.HetznerCloudResourceManager.createServer(HetznerCloudResourceManager.java:299)
    at cloud.dnation.jenkins.plugins.hetzner.NodeCallable.call(NodeCallable.java:42)
    at cloud.dnation.jenkins.plugins.hetzner.NodeCallable.call(NodeCallable.java:30)
    at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
    at jenkins.security.ImpersonatingExecutorService$2.call(ImpersonatingExecutorService.java:80)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)

Anything else?

How can i view the actual result oft the hetzner api? I did not find anything but the http code in the logs.

rkosegi commented 1 year ago

Hi @vanlueckn, thank you for bug report.

Can you configure debug logging and share request and response when this happens? You can find details about configuring debug logging in this comment. I should probably document this properly.

vanlueckn commented 1 year ago

Hello,

i added "all" error loggin but only get this and not the api response in the log:

Aug 13, 2023 4:16:00 PM FINE cloud.dnation.jenkins.plugins.hetzner.HetznerCloud provision
provision(cloud=Hetzner,label=null,excessWorkload=1)
Aug 13, 2023 4:16:00 PM INFO cloud.dnation.jenkins.plugins.hetzner.HetznerCloud provision
Creating new agent with 1 executors, have 0 running VMs
Aug 13, 2023 4:16:10 PM FINE cloud.dnation.jenkins.plugins.hetzner.HetznerCloud provision
provision(cloud=Hetzner,label=null,excessWorkload=1)
Aug 13, 2023 4:16:10 PM INFO cloud.dnation.jenkins.plugins.hetzner.HetznerCloud provision
Creating new agent with 1 executors, have 0 running VMs
Aug 13, 2023 4:16:20 PM FINE cloud.dnation.jenkins.plugins.hetzner.HetznerCloud provision
provision(cloud=Hetzner,label=null,excessWorkload=1)
Aug 13, 2023 4:16:20 PM INFO cloud.dnation.jenkins.plugins.hetzner.HetznerCloud provision
Creating new agent with 1 executors, have 0 running VMs
Aug 13, 2023 4:16:30 PM FINE cloud.dnation.jenkins.plugins.hetzner.HetznerCloud provision
provision(cloud=Hetzner,label=null,excessWorkload=1)
Aug 13, 2023 4:16:30 PM INFO cloud.dnation.jenkins.plugins.hetzner.HetznerCloud provision
Creating new agent with 1 executors, have 0 running VMs

image

rkosegi commented 1 year ago

Sorry, forgot to mention that relevant code now uses logger cloud.dnation.hetznerclient, please add that as well

vanlueckn commented 1 year ago

Thank you. I get this response:

{
  "error": {
    "message": "network 3229816 has no free IP available or is in a different network zone",
    "code": "invalid_input",
    "details": {
      "fields": [
        {
          "name": "networks",
          "messages": [
            "network 3229816 has no free IP available or is in a different network zone"
          ]
        }
      ]
    }
  }
}

In my settings i choosed hetzner cloud default behaviour for the ip addresses. Shouldnt hetzner create a public ip for the server?

vanlueckn commented 1 year ago

The network had no subnet