diff --git a/apiserver/controllers/instances.go b/apiserver/controllers/instances.go index e563c8eb..c867c523 100644 --- a/apiserver/controllers/instances.go +++ b/apiserver/controllers/instances.go @@ -54,6 +54,20 @@ func (a *APIController) ListPoolInstancesHandler(w http.ResponseWriter, r *http. } } +// swagger:route GET /instances/{instanceName} instances GetInstance +// +// Get runner instance by name. +// +// Parameters: +// + name: instanceName +// description: Runner instance name. +// type: string +// in: path +// required: true +// +// Responses: +// 200: Instance +// default: APIErrorResponse func (a *APIController) GetInstanceHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context() vars := mux.Vars(r) @@ -82,6 +96,19 @@ func (a *APIController) GetInstanceHandler(w http.ResponseWriter, r *http.Reques } } +// swagger:route DELETE /instances/{instanceName} instances DeleteInstance +// +// Delete runner instance by name. +// +// Parameters: +// + name: instanceName +// description: Runner instance name. +// type: string +// in: path +// required: true +// +// Responses: +// default: APIErrorResponse func (a *APIController) DeleteInstanceHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context() vars := mux.Vars(r) @@ -107,6 +134,20 @@ func (a *APIController) DeleteInstanceHandler(w http.ResponseWriter, r *http.Req w.WriteHeader(http.StatusOK) } +// swagger:route GET /repositories/{repoID}/instances repositories instances ListRepoInstances +// +// List repository instances. +// +// Parameters: +// + name: repoID +// description: Repository ID. +// type: string +// in: path +// required: true +// +// Responses: +// 200: Instances +// default: APIErrorResponse func (a *APIController) ListRepoInstancesHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context() vars := mux.Vars(r) @@ -191,6 +232,13 @@ func (a *APIController) ListEnterpriseInstancesHandler(w http.ResponseWriter, r } } +// swagger:route GET /instances instances ListInstances +// +// Get all runners' instances. +// +// Responses: +// 200: Instances +// default: APIErrorResponse func (a *APIController) ListAllInstancesHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context() diff --git a/apiserver/controllers/repositories.go b/apiserver/controllers/repositories.go index 836342aa..71b46e12 100644 --- a/apiserver/controllers/repositories.go +++ b/apiserver/controllers/repositories.go @@ -26,7 +26,7 @@ import ( "github.com/gorilla/mux" ) -// swagger:route POST /repositories repositories Create +// swagger:route POST /repositories repositories CreateRepo // // Create repository with the parameters given. // @@ -62,7 +62,7 @@ func (a *APIController) CreateRepoHandler(w http.ResponseWriter, r *http.Request } } -// swagger:route GET /repositories repositories List +// swagger:route GET /repositories repositories ListRepos // // List repositories. // @@ -85,7 +85,7 @@ func (a *APIController) ListReposHandler(w http.ResponseWriter, r *http.Request) } } -// swagger:route GET /repositories/{repoID} repositories Get +// swagger:route GET /repositories/{repoID} repositories GetRepo // // Get repository by ID. // @@ -128,7 +128,7 @@ func (a *APIController) GetRepoByIDHandler(w http.ResponseWriter, r *http.Reques } } -// swagger:route DELETE /repositories/{repoID} repositories Delete +// swagger:route DELETE /repositories/{repoID} repositories DeleteRepo // // Delete repository by ID. // @@ -168,6 +168,26 @@ func (a *APIController) DeleteRepoHandler(w http.ResponseWriter, r *http.Request } +// swagger:route PUT /repositories/{repoID} repositories UpdateRepo +// +// Update repository with the parameters given. +// +// Parameters: +// + name: repoID +// description: ID of the repository to update. +// type: string +// in: path +// required: true +// +// + name: Body +// description: Parameters used when updating the repository. +// type: UpdateEntityParams +// in: body +// required: true +// +// Responses: +// 200: Repository +// default: APIErrorResponse func (a *APIController) UpdateRepoHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context() @@ -203,6 +223,26 @@ func (a *APIController) UpdateRepoHandler(w http.ResponseWriter, r *http.Request } } +// swagger:route POST /repositories/{repoID}/pools repositories pools CreateRepoPool +// +// Create repository pool with the parameters given. +// +// Parameters: +// + name: repoID +// description: Repository ID. +// type: string +// in: path +// required: true +// +// + name: Body +// description: Parameters used when creating the repository pool. +// type: CreatePoolParams +// in: body +// required: true +// +// Responses: +// 200: Pool +// default: APIErrorResponse func (a *APIController) CreateRepoPoolHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context() @@ -239,6 +279,20 @@ func (a *APIController) CreateRepoPoolHandler(w http.ResponseWriter, r *http.Req } } +// swagger:route GET /repositories/{repoID}/pools repositories pools ListRepoPools +// +// List repository pools. +// +// Parameters: +// + name: repoID +// description: Repository ID. +// type: string +// in: path +// required: true +// +// Responses: +// 200: Pools +// default: APIErrorResponse func (a *APIController) ListRepoPoolsHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context() vars := mux.Vars(r) @@ -267,6 +321,26 @@ func (a *APIController) ListRepoPoolsHandler(w http.ResponseWriter, r *http.Requ } } +// swagger:route GET /repositories/{repoID}/pools/{poolID} repositories pools GetRepoPool +// +// Get repository pool by ID. +// +// Parameters: +// + name: repoID +// description: Repository ID. +// type: string +// in: path +// required: true +// +// + name: poolID +// description: Pool ID. +// type: string +// in: path +// required: true +// +// Responses: +// 200: Pool +// default: APIErrorResponse func (a *APIController) GetRepoPoolHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context() vars := mux.Vars(r) @@ -296,6 +370,25 @@ func (a *APIController) GetRepoPoolHandler(w http.ResponseWriter, r *http.Reques } } +// swagger:route DELETE /repositories/{repoID}/pools/{poolID} repositories pools DeleteRepoPool +// +// Delete repository pool by ID. +// +// Parameters: +// + name: repoID +// description: Repository ID. +// type: string +// in: path +// required: true +// +// + name: poolID +// description: ID of the repository pool to delete. +// type: string +// in: path +// required: true +// +// Responses: +// default: APIErrorResponse func (a *APIController) DeleteRepoPoolHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context() @@ -324,6 +417,32 @@ func (a *APIController) DeleteRepoPoolHandler(w http.ResponseWriter, r *http.Req } +// swagger:route PUT /repositories/{repoID}/pools/{poolID} repositories pools UpdateRepoPool +// +// Update repository pool with the parameters given. +// +// Parameters: +// + name: repoID +// description: Repository ID. +// type: string +// in: path +// required: true +// +// + name: poolID +// description: ID of the repository pool to update. +// type: string +// in: path +// required: true +// +// + name: Body +// description: Parameters used when updating the repository pool. +// type: UpdatePoolParams +// in: body +// required: true +// +// Responses: +// 200: Pool +// default: APIErrorResponse func (a *APIController) UpdateRepoPoolHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context() diff --git a/apiserver/routers/routers.go b/apiserver/routers/routers.go index d75790f6..9f8a2223 100644 --- a/apiserver/routers/routers.go +++ b/apiserver/routers/routers.go @@ -23,10 +23,10 @@ // swagger:meta package routers -//go:generate swagger generate spec --input=../swagger-models.yaml --output=../swagger.yaml --include="routers|controllers" -//go:generate swagger validate ../swagger.yaml +//go:generate go run github.com/go-swagger/go-swagger/cmd/swagger@v0.30.5 generate spec --input=../swagger-models.yaml --output=../swagger.yaml --include="routers|controllers" +//go:generate go run github.com/go-swagger/go-swagger/cmd/swagger@v0.30.5 validate ../swagger.yaml //go:generate rm -rf ../../client -//go:generate swagger generate client --target=../../ --spec=../swagger.yaml +//go:generate go run github.com/go-swagger/go-swagger/cmd/swagger@v0.30.5 generate client --target=../../ --spec=../swagger.yaml import ( _ "expvar" // Register the expvar handlers diff --git a/apiserver/swagger-models.yaml b/apiserver/swagger-models.yaml index 810f38f4..9565aff5 100644 --- a/apiserver/swagger-models.yaml +++ b/apiserver/swagger-models.yaml @@ -1,6 +1,34 @@ # NOTE: The purpose of these definitions is to reuse the existing golang # types from GARM packages. definitions: + Instances: + type: object + x-go-type: + type: Instances + import: + package: github.com/cloudbase/garm/params + alias: garm_params + Instance: + type: object + x-go-type: + type: Instance + import: + package: github.com/cloudbase/garm/params + alias: garm_params + Pools: + type: object + x-go-type: + type: Pools + import: + package: github.com/cloudbase/garm/params + alias: garm_params + Pool: + type: object + x-go-type: + type: Pool + import: + package: github.com/cloudbase/garm/params + alias: garm_params Repositories: type: array x-go-type: @@ -24,6 +52,27 @@ definitions: import: package: github.com/cloudbase/garm/params alias: garm_params + UpdateEntityParams: + type: object + x-go-type: + type: UpdateEntityParams + import: + package: github.com/cloudbase/garm/params + alias: garm_params + CreatePoolParams: + type: object + x-go-type: + type: CreatePoolParams + import: + package: github.com/cloudbase/garm/params + alias: garm_params + UpdatePoolParams: + type: object + x-go-type: + type: UpdatePoolParams + import: + package: github.com/cloudbase/garm/params + alias: garm_params APIErrorResponse: type: object x-go-type: diff --git a/params/params.go b/params/params.go index c211dad3..bb84b8d9 100644 --- a/params/params.go +++ b/params/params.go @@ -171,6 +171,9 @@ func (i Instance) GetID() string { return i.ID } +// used by swagger client generated code +type Instances []Instance + type BootstrapInstance struct { Name string `json:"name"` Tools []*github.RunnerApplicationDownload `json:"tools"` @@ -293,6 +296,9 @@ func (p *Pool) PoolType() PoolType { return "" } +// used by swagger client generated code +type Pools []Pool + type Internal struct { OAuth2Token string `json:"oauth2"` ControllerID string `json:"controller_id"`