assign dedicated external bamboo agent to project

phlo_z July 25, 2019

Hello,

 

I am trying to do a dedicated assigment between a external agent and a plan/job or whatever, using the bamboo rest api.

I found in the Documentation this.

/agent/assignment?executorType&executorId&assignmentType&entityId

 

executorType

string

should be AGENT or IMAGE

executorId

long

executor id. Id of agent or elastic image.

assignmentType

string

should be PROJECT, PLAN, JOB, ENVIRONMENT, DEPLOYMENT_PROJECT

entityId

long

entity id. Identifier of project, plan, job, deployment project or environment.

 

 

I am wondering what entityId really is and where i can find it from eacht Plan, job ..

Its waiting for a long so, jobkey or plankey will not work.

 

Also on the get 

/agent/assignment/search?executorType&executorId&entityType&searchTerm

What the heck should entityType be?

The rest api seems to be not very good documented :-(

 

Any help would be much appriciated.

2 answers

0 votes
Jonathan Ghellere July 27, 2022

The only way to get plans, jobs... entityIds is through the agent assignment search API. Still, you first need an agent ID.

  1. First get any agent id:
    /rest/api/latest/agent | jq -r '.[] | [.id, .name, .active] | @csv'
  2. Then, run the following
    /rest/api/latest/agent/assignment/search?searchTerm=&entityType=PLAN&executorType=AGENT&executorId=<THE-ID-U-GOT-UP-THERE>" | jq -r '.searchResults[] | [.id, .searchEntity.id] | @csv

Where, in the (2.), the entityType can be: PLAN, JOB..
I also provided some jq queries, you can ignore if you want.

I know, it's crazy and does not make any sense.. : )

ps. For JOBs it will only work if the agent's capacities matches your job requirements!

0 votes
Daniel Santos
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
July 30, 2019

Hi @phlo_z,

 

entityID

The entityID is the ID used to identify the project/plan/job in the Bamboo database. That is a design issue that blocks this API to be used only through a sequence of rest APIs.

There are some improvement requests related to this issue already reported:


There are also internal discussions to change the agent assignment REST endpoint to make it use only project/plan/job keys which would make things a lot easier.

The API will work completely through APIs if you need to assign deployments/environments.

To get the de IDs you need to call:

  • /rest/api/latest/deploy/project/all

 

executorID

Regarding the executorID, you can get it from:

  • /rest/api/latest/agent
    The field is id (agent id).

 

Steps to do the agent assignment

  1. Get the executorID which is the agent id using the following call:
    curl -X GET -u <USER>:<PASSWORD> "<BAMBOO_URL>/rest/api/latest/agent"
  2. Get the entityID from either the DB (project/plan/job) as shared above or use the deployment call below:
    curl -X GET -u <USER>:<PASSWORD> "<BAMBOO_URL>/rest/api/latest/deploy/project/all"
  3. Assign the agent with the following call:
    curl -X POST -u <USER>:<PASSWORD> "<BAMBOO_URL>/rest/api/latest/agent/assignment?executorType=AGENT&executorId=<EXECUTOR_ID>&assignmentType=<ASSIGNMENT_TYPE>&entityId=<ENTITY_ID>" 

I hope that helps.

HN February 14, 2021

It is disappointing at the least that the API does not provide the build project id nor is it visible in the UI. Are you aware of any plugins that expose this data?

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events