Add more functionality to swagger client library

* Update `go:generate` annotations to use stable swagger tag instead
  of relying on the `swagger` CLI tool already installed.
* Rename the following route IDs from repositories:
    * `Create` -> `CreateRepo`
    * `List` -> `ListRepos`
    * `Get` -> `GetRepo`
    * `Delete` -> `DeleteRepo`
  The swagger CLI spec validation will fail if the route IDs are not unique.
* Fully implement the all the API calls to:
    * `/api/v1/repositories`
    * `/api/v1/instances`

Signed-off-by: Ionut Balutoiu <ibalutoiu@cloudbasesolutions.com>
This commit is contained in:
Ionut Balutoiu 2023-07-05 13:10:59 +03:00
parent 3fe5d510fe
commit ca878507b5
5 changed files with 229 additions and 7 deletions

View file

@ -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()

View file

@ -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()