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:
parent
3fe5d510fe
commit
ca878507b5
5 changed files with 229 additions and 7 deletions
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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"`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue