jenkinsci / jenkinsci/openstack-cloud-plugin

Do not try to provision if there required fields are not configured

Open
#82 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Java
Stars
49
Forks
97
Avg merge
13h 23m
Merged PRs (30d)
6

Description

If some of the required fields[1] is not provided (and it might not be trivial to see due to overriding logic), plugin tries to boot and OpenStack failure is provided to the user[2]. That is not really user friendly. Data needs to be checked before sending it to openstack in order to provide messages that are easier to grasp.

[1] TODO
- imageId/bootSource
- hardwareId
- flavourId
- launcherFactory

[2]

```
jenkins.plugins.openstack.compute.JCloudsCloud$ProvisioningFailedException: Openstack failed to provision the slave
at jenkins.plugins.openstack.compute.JCloudsCloud$NodeCallable.call(JCloudsCloud.java:297)
at jenkins.plugins.openstack.compute.JCloudsCloud$NodeCallable.call(JCloudsCloud.java:277)
at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: jenkins.plugins.openstack.compute.internal.Openstack$ActionFailed: Boot failed
at jenkins.plugins.openstack.compute.internal.Openstack.bootAndWaitActive(Openstack.java:236)
at jenkins.plugins.openstack.compute.JCloudsSlaveTemplate.provision(JCloudsSlaveTemplate.java:256)
at jenkins.plugins.openstack.compute.JCloudsSlaveTemplate.provisionSlave(JCloudsSlaveTemplate.java:179)
at jenkins.plugins.openstack.compute.JCloudsCloud$NodeCallable.call(JCloudsCloud.java:295)
... 6 more
Caused by: ClientResponseException{message=Missing imageRef attribute, status=400, status-code=BAD_REQUEST}
at org.openstack4j.core.transport.HttpExceptionHandler.mapException(HttpExceptionHandler.java:38)
at org.openstack4j.core.transport.HttpExceptionHandler.mapException(HttpExceptionHandler.java:23)
at org.openstack4j.core.transport.HttpEntityHandler.handleLessThan500(HttpEntityHandler.java:100)
at org.openstack4j.core.transport.HttpEntityHandler.handle(HttpEntityHandler.java:46)
at org.openstack4j.connectors.httpclient.HttpResponseImpl.getEntity(HttpResponseImpl.java:69)
at org.openstack4j.openstack.internal.BaseOpenStackService$Invocation.execute(BaseOpenStackService.java:189)
at org.openstack4j.openstack.internal.BaseOpenStackService$Invocation.execute(BaseOpenStackService.java:183)
at org.openstack4j.openstack.compute.internal.ServerServiceImpl.boot(ServerServiceImpl.java:127)
at org.openstack4j.openstack.compute.internal.ServerServiceImpl.bootAndWaitActive(ServerServiceImpl.java:137)
at jenkins.plugins.openstack.compute.internal.Openstack._bootAndWaitActive(Openstack.java:243)
at jenkins.plugins.openstack.compute.internal.Openstack.bootAndWaitActive(Openstack.java:231)
... 9 more
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.