Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature request: ability to add/remove lockable resources through API #103

Open
tstibbs opened this issue May 18, 2018 · 7 comments
Open
Labels
API interactions Triage Need to clarify, remove, close or whatever to clean up open issues / PRs
Milestone

Comments

@tstibbs
Copy link

tstibbs commented May 18, 2018

It would be really useful to able to add/remove lockable resources via an API (either REST or through the groovy console). This would enable the locks to represent real world non-static things - i.e. as you scale your infrastructure, you can scale your locks to reflect this.

@simontunnat
Copy link

simontunnat commented Jun 3, 2020

I also would like some kind of REST API for this, so I could lock stuff in one Jenkins instance from a another Jenkins instance.

I can use the GET calls that the lockable resources frontend uses, but i don't think it was intended for that kind of usage:
https://jenkins/lockable-resources/reserve?resource=lockname
https://jenkins/lockable-resources/unreserve?resource=lockname

When I used the "reserve" endpoint it would always return with status code 302, even if the lock had already been locked by someone else.
The "unreserve" endpoint on the other side does fail with status code 403 if the lock is not currently locked or locked by someone else (the get call was performed with a none admin user).

@alexandre-perrin
Copy link

I also wish there was also a REST API for this. In the meantime I created a python API to control lockable resources (reserve, unreserve, list etc).
https://pypi.org/project/jenkins-lockable-resources/

Hope that can help.

@odin-
Copy link

odin- commented Mar 3, 2021

I also would like a REST API. We have a resource that can be used externally from outside Jenkins. E.g. I would like to lock the resource from outside Jenkins.

@bcamishrapr
Copy link

@odin- For the time being , you can put all the logic in a groovy code (groovy code support locking functionality) in a scripted or a declarative pipeline and then call your job remotely using curl or from some other point.

@jimklimov
Copy link
Contributor

FWIW, a PR to define an /api endpoint was recently merged (with no further details at that time, just exposing whatever is properly marked in the codebase).

There is also JCasC support to pre-define resources, and a way to define "ephemeral" resources by just trying to lock a non-existing one.

Other than that, groovy code, scripted pipelines and Jenkins Shared Libraries are in position to import the LockableResourcesManager and/or LockableResource classes and call their methods for lower-level manipulations.

@gaspardpetit
Copy link
Contributor

gaspardpetit commented Feb 13, 2022

This was recently closed, but I'm also pushing for something similar in #305 with a updateLock step. Yes the LockableResourcesManager can be pulled into groovy, but using it directly is not a great experience. The updateLock would either set attributes to an existing lock or create a new one (not ephemeral) if it doesn't exist. I'd be happy to hear feedback to make it work with your use cases as well.

@mPokornyETM mPokornyETM added the Triage Need to clarify, remove, close or whatever to clean up open issues / PRs label Feb 1, 2023
@mPokornyETM mPokornyETM added this to the Triage milestone Feb 1, 2023
@vishnugovind
Copy link

Is there any API documentation on what is supported?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
API interactions Triage Need to clarify, remove, close or whatever to clean up open issues / PRs
Projects
None yet
Development

No branches or pull requests

9 participants