add tag_list param to runners api
This commit is contained in:
parent
177f9ca88b
commit
d3accd36a0
3 changed files with 61 additions and 16 deletions
|
@ -13,13 +13,15 @@ GET /runners
|
|||
GET /runners?scope=active
|
||||
GET /runners?type=project_type
|
||||
GET /runners?status=active
|
||||
GET /runners?tag_list=tag1,tag2
|
||||
```
|
||||
|
||||
| Attribute | Type | Required | Description |
|
||||
|-----------|---------|----------|---------------------|
|
||||
| `scope` | string | no | Deprecated: Use `type` or `status` instead. The scope of specific runners to show, one of: `active`, `paused`, `online`, `offline`; showing all runners if none provided |
|
||||
| `type` | string | no | The type of runners to show, one of: `instance_type`, `group_type`, `project_type` |
|
||||
| `status` | string | no | The status of runners to show, one of: `active`, `paused`, `online`, `offline` |
|
||||
| Attribute | Type | Required | Description |
|
||||
|-------------|----------------|----------|---------------------|
|
||||
| `scope` | string | no | Deprecated: Use `type` or `status` instead. The scope of specific runners to show, one of: `active`, `paused`, `online`, `offline`; showing all runners if none provided |
|
||||
| `type` | string | no | The type of runners to show, one of: `instance_type`, `group_type`, `project_type` |
|
||||
| `status` | string | no | The status of runners to show, one of: `active`, `paused`, `online`, `offline` |
|
||||
| `tag_list` | Array[String] | no | List of of the runner's tags |
|
||||
|
||||
```
|
||||
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/runners"
|
||||
|
@ -62,13 +64,15 @@ GET /runners/all
|
|||
GET /runners/all?scope=online
|
||||
GET /runners/all?type=project_type
|
||||
GET /runners/all?status=active
|
||||
GET /runners/all?tag_list=tag1,tag2
|
||||
```
|
||||
|
||||
| Attribute | Type | Required | Description |
|
||||
|-----------|---------|----------|---------------------|
|
||||
| `scope` | string | no | Deprecated: Use `type` or `status` instead. The scope of runners to show, one of: `specific`, `shared`, `active`, `paused`, `online`, `offline`; showing all runners if none provided |
|
||||
| `type` | string | no | The type of runners to show, one of: `instance_type`, `group_type`, `project_type` |
|
||||
| `status` | string | no | The status of runners to show, one of: `active`, `paused`, `online`, `offline` |
|
||||
| Attribute | Type | Required | Description |
|
||||
|-------------|----------------|----------|---------------------|
|
||||
| `scope` | string | no | Deprecated: Use `type` or `status` instead. The scope of runners to show, one of: `specific`, `shared`, `active`, `paused`, `online`, `offline`; showing all runners if none provided |
|
||||
| `type` | string | no | The type of runners to show, one of: `instance_type`, `group_type`, `project_type` |
|
||||
| `status` | string | no | The status of runners to show, one of: `active`, `paused`, `online`, `offline` |
|
||||
| `tag_list` | Array[String] | no | List of of the runner's tags |
|
||||
|
||||
```
|
||||
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/runners/all"
|
||||
|
@ -347,14 +351,16 @@ GET /projects/:id/runners
|
|||
GET /projects/:id/runners?scope=active
|
||||
GET /projects/:id/runners?type=project_type
|
||||
GET /projects/:id/runners?status=active
|
||||
GET /projects/:id/runners?tag_list=tag1,tag2
|
||||
```
|
||||
|
||||
| Attribute | Type | Required | Description |
|
||||
|-----------|----------------|----------|---------------------|
|
||||
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
|
||||
| `scope` | string | no | Deprecated: Use `type` or `status` instead. The scope of specific runners to show, one of: `active`, `paused`, `online`, `offline`; showing all runners if none provided |
|
||||
| `type` | string | no | The type of runners to show, one of: `instance_type`, `group_type`, `project_type` |
|
||||
| `status` | string | no | The status of runners to show, one of: `active`, `paused`, `online`, `offline` |
|
||||
| Attribute | Type | Required | Description |
|
||||
|------------|----------------|----------|---------------------|
|
||||
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
|
||||
| `scope` | string | no | Deprecated: Use `type` or `status` instead. The scope of specific runners to show, one of: `active`, `paused`, `online`, `offline`; showing all runners if none provided |
|
||||
| `type` | string | no | The type of runners to show, one of: `instance_type`, `group_type`, `project_type` |
|
||||
| `status` | string | no | The status of runners to show, one of: `active`, `paused`, `online`, `offline` |
|
||||
| `tag_list` | Array[String] | no | List of of the runner's tags |
|
||||
|
||||
```
|
||||
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/9/runners"
|
||||
|
|
|
@ -17,6 +17,7 @@ module API
|
|||
desc: 'The type of the runners to show'
|
||||
optional :status, type: String, values: Ci::Runner::AVAILABLE_STATUSES,
|
||||
desc: 'The status of the runners to show'
|
||||
optional :tag_list, type: Array[String], desc: 'The tags of the runners to show'
|
||||
use :pagination
|
||||
end
|
||||
get do
|
||||
|
@ -24,6 +25,7 @@ module API
|
|||
runners = filter_runners(runners, params[:scope], allowed_scopes: Ci::Runner::AVAILABLE_STATUSES)
|
||||
runners = filter_runners(runners, params[:type], allowed_scopes: Ci::Runner::AVAILABLE_TYPES)
|
||||
runners = filter_runners(runners, params[:status], allowed_scopes: Ci::Runner::AVAILABLE_STATUSES)
|
||||
runners = runners.tagged_with(params[:tag_list]) if params[:tag_list]
|
||||
|
||||
present paginate(runners), with: Entities::Runner
|
||||
end
|
||||
|
@ -38,6 +40,7 @@ module API
|
|||
desc: 'The type of the runners to show'
|
||||
optional :status, type: String, values: Ci::Runner::AVAILABLE_STATUSES,
|
||||
desc: 'The status of the runners to show'
|
||||
optional :tag_list, type: Array[String], desc: 'The tags of the runners to show'
|
||||
use :pagination
|
||||
end
|
||||
get 'all' do
|
||||
|
@ -47,6 +50,7 @@ module API
|
|||
runners = filter_runners(runners, params[:scope])
|
||||
runners = filter_runners(runners, params[:type], allowed_scopes: Ci::Runner::AVAILABLE_TYPES)
|
||||
runners = filter_runners(runners, params[:status], allowed_scopes: Ci::Runner::AVAILABLE_STATUSES)
|
||||
runners = runners.tagged_with(params[:tag_list]) if params[:tag_list]
|
||||
|
||||
present paginate(runners), with: Entities::Runner
|
||||
end
|
||||
|
@ -139,6 +143,7 @@ module API
|
|||
desc: 'The type of the runners to show'
|
||||
optional :status, type: String, values: Ci::Runner::AVAILABLE_STATUSES,
|
||||
desc: 'The status of the runners to show'
|
||||
optional :tag_list, type: Array[String], desc: 'The tags of the runners to show'
|
||||
use :pagination
|
||||
end
|
||||
get ':id/runners' do
|
||||
|
@ -146,6 +151,7 @@ module API
|
|||
runners = filter_runners(runners, params[:scope])
|
||||
runners = filter_runners(runners, params[:type], allowed_scopes: Ci::Runner::AVAILABLE_TYPES)
|
||||
runners = filter_runners(runners, params[:status], allowed_scopes: Ci::Runner::AVAILABLE_STATUSES)
|
||||
runners = runners.tagged_with(params[:tag_list]) if params[:tag_list]
|
||||
|
||||
present paginate(runners), with: Entities::Runner
|
||||
end
|
||||
|
|
|
@ -90,6 +90,17 @@ describe API::Runners do
|
|||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
end
|
||||
|
||||
it 'filters runners by tag_list' do
|
||||
create(:ci_runner, :project, description: 'Runner tagged with tag1 and tag2', projects: [project], tag_list: %w[tag1 tag2])
|
||||
create(:ci_runner, :project, description: 'Runner tagged with tag2', projects: [project], tag_list: ['tag2'])
|
||||
|
||||
get api('/runners?tag_list=tag1,tag2', user)
|
||||
|
||||
expect(json_response).to match_array [
|
||||
a_hash_including('description' => 'Runner tagged with tag1 and tag2')
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
context 'unauthorized user' do
|
||||
|
@ -181,6 +192,17 @@ describe API::Runners do
|
|||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
end
|
||||
|
||||
it 'filters runners by tag_list' do
|
||||
create(:ci_runner, :project, description: 'Runner tagged with tag1 and tag2', projects: [project], tag_list: %w[tag1 tag2])
|
||||
create(:ci_runner, :project, description: 'Runner tagged with tag2', projects: [project], tag_list: ['tag2'])
|
||||
|
||||
get api('/runners/all?tag_list=tag1,tag2', admin)
|
||||
|
||||
expect(json_response).to match_array [
|
||||
a_hash_including('description' => 'Runner tagged with tag1 and tag2')
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
context 'without admin privileges' do
|
||||
|
@ -716,6 +738,17 @@ describe API::Runners do
|
|||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
end
|
||||
|
||||
it 'filters runners by tag_list' do
|
||||
create(:ci_runner, :project, description: 'Runner tagged with tag1 and tag2', projects: [project], tag_list: %w[tag1 tag2])
|
||||
create(:ci_runner, :project, description: 'Runner tagged with tag2', projects: [project], tag_list: ['tag2'])
|
||||
|
||||
get api("/projects/#{project.id}/runners?tag_list=tag1,tag2", user)
|
||||
|
||||
expect(json_response).to match_array [
|
||||
a_hash_including('description' => 'Runner tagged with tag1 and tag2')
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
context 'authorized user without maintainer privileges' do
|
||||
|
|
Loading…
Reference in a new issue