Stash checking enablement of hook

Justin Carr April 14, 2014

Is there an interface (Java) to see if a hook is enabled/disabled? I only need access inside of it's own class.

Is this going to be a Catch-22 scenario, where the class doesn't fire if the hook is disabled?

1 answer

0 votes
Michael Heemskerk
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
April 15, 2014

Hi Justin,

You can use RepositoryHookService.getByKey to retrieve the RepositoryHook for a given repository and hook-key. You can then call RepositoryHook.isEnabled to determine whether it's enabled.

Cheers,

Michael

Kota Sreenivasa Shravana Kumar June 17, 2014

Hi Micheal,

Using STASH CLI, is it possible to check if a hook is enabled or disabled in STASH ?

Thanks

Michael Heemskerk
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
June 17, 2014

You can use the REST api to retrieve the hooks for a repository: https://developer.atlassian.com/static/rest/stash/3.0.4/stash-rest.html#idp2872560

Kota Sreenivasa Shravana Kumar June 19, 2014

Thanks Micheal. As I am not experienced in REST, it would be great if you can share some sample script if it exist with you. Thanks

Michael Heemskerk
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
June 19, 2014

Calling the REST endpoint is basically just doing a HTTP request. If you're on linux/mac you can use curl to do that:

curl -X GET -u <repo-admin-user>http://stash.example.com/rest/api/latest/projects/<projectKey>/repos/<repositorySlug>/settings/hooks

And to enable/disable a hook:

curl -X PUT -u <repo-admin-user>http://stash.example.com/rest/api/latest/projects/<projectKey>/repos/<repositorySlug>/settings/hooks/<hookKey>/enabled/true

Kota Sreenivasa Shravana Kumar June 19, 2014

I am sorry for multiple questions here.

How do I get the hookkey ? Thanks

Michael Heemskerk
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
June 19, 2014

The first example returns the hooks, which include a key="..." attribute. Use that as the hook-key for the second example.

Kota Sreenivasa Shravana Kumar June 19, 2014

Yes. I got the hook key from the first command. However, the following does not seem to work. I am still missing something.

curl -X PUT -u repo-admin-user http://ets-test-cmteam:7990/projects/RNDAP/repos/ap-eclipsetools/settings/hooks/com.atlassian.stash.stash-bundled-hooks:force-push-hook/enabled/true

Michael Heemskerk
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
June 19, 2014

You're missing the /rest/api/latest/ part in the URL. Can you try adding that just before the /projects part?

Michael Heemskerk
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
June 19, 2014

Ah apologies, I read our REST documentation wrong. The /true suffix is the problem. The command to enable a hook is

curl -X PUT -u repo-admin-user http://ets-test-cmteam:7990/projects/RNDAP/repos/ap-eclipsetools/settings/hooks/com.atlassian.stash.stash-bundled-hooks:force-push-hook/enabled

To disable the hook, send a DELETE instead:

curl -X DELETE -u repo-admin-user http://ets-test-cmteam:7990/projects/RNDAP/repos/ap-eclipsetools/settings/hooks/com.atlassian.stash.stash-bundled-hooks:force-push-hook/enabled

Kota Sreenivasa Shravana Kumar June 19, 2014

You guys are awesome ! Just works fine. Thanks for your patience.

Valeriy Garnitskiy January 19, 2016

Enable or disable hook works fine with REST API. How about change value?

I'm using an external pre-receive hook with parameters. Can I change a parameter value via rest api?

My response from GET command: {"exe":"/tmp/dev-services/stash/hooks/pre-receive_hook.pl","params":"-M vtester@yahoo.com"}

How I can set new value, for example: params":"-M new-user@gmail.com" ?

Thanks in advance.

Ankush S March 30, 2016

Valeriy

You need to do a PUT by passing the parameters 

1

I think this should solve your problem. 

Look into this documentation from Atlassian for more info. 

https://developer.atlassian.com/static/rest/stash/3.11.3/stash-rest.html

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events