diff --git a/apiserver/controllers/repositories.go b/apiserver/controllers/repositories.go index da5200e3..1c688226 100644 --- a/apiserver/controllers/repositories.go +++ b/apiserver/controllers/repositories.go @@ -26,6 +26,20 @@ import ( "github.com/gorilla/mux" ) +// swagger:route POST /repositories repositories Create +// +// Create repository with the parameters given. +// +// Parameters: +// + name: Body +// description: Parameters used when creating the repository. +// type: CreateRepoParams +// in: body +// required: true +// +// Responses: +// 200: Repository +// default: APIErrorResponse func (a *APIController) CreateRepoHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context() @@ -48,6 +62,13 @@ func (a *APIController) CreateRepoHandler(w http.ResponseWriter, r *http.Request } } +// swagger:route GET /repositories repositories List +// +// List repositories. +// +// Responses: +// 200: Repositories +// default: APIErrorResponse func (a *APIController) ListReposHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context() @@ -64,6 +85,20 @@ func (a *APIController) ListReposHandler(w http.ResponseWriter, r *http.Request) } } +// swagger:route GET /repositories/{repoID} repositories Get +// +// Get repository by ID. +// +// Parameters: +// + name: repoID +// description: ID of the repository to fetch. +// type: string +// in: path +// required: true +// +// Responses: +// 200: Repository +// default: APIErrorResponse func (a *APIController) GetRepoByIDHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context() @@ -93,6 +128,19 @@ func (a *APIController) GetRepoByIDHandler(w http.ResponseWriter, r *http.Reques } } +// swagger:route DELETE /repositories/{repoID} repositories Delete +// +// Delete repository by ID. +// +// Parameters: +// + name: repoID +// description: ID of the repository to delete. +// type: string +// in: path +// required: true +// +// Responses: +// default: APIErrorResponse func (a *APIController) DeleteRepoHandler(w http.ResponseWriter, r *http.Request) { ctx := r.Context() diff --git a/apiserver/routers/routers.go b/apiserver/routers/routers.go index bac3f98d..7e707ae6 100644 --- a/apiserver/routers/routers.go +++ b/apiserver/routers/routers.go @@ -12,8 +12,22 @@ // License for the specific language governing permissions and limitations // under the License. +// Package routers Garm API. +// +// The Garm API generated using go-swagger. +// +// BasePath: /api/v1 +// Version: 1.0.0 +// License: Apache 2.0 https://www.apache.org/licenses/LICENSE-2.0 +// +// 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 rm -rf ../../client +//go:generate swagger generate client --target=../../ --spec=../swagger.yaml + import ( "io" "net/http" diff --git a/apiserver/swagger-models.yaml b/apiserver/swagger-models.yaml new file mode 100644 index 00000000..810f38f4 --- /dev/null +++ b/apiserver/swagger-models.yaml @@ -0,0 +1,33 @@ +# NOTE: The purpose of these definitions is to reuse the existing golang +# types from GARM packages. +definitions: + Repositories: + type: array + x-go-type: + type: Repositories + import: + package: github.com/cloudbase/garm/params + alias: garm_params + items: + $ref: '#/definitions/Repository' + Repository: + type: object + x-go-type: + type: Repository + import: + package: github.com/cloudbase/garm/params + alias: garm_params + CreateRepoParams: + type: object + x-go-type: + type: CreateRepoParams + import: + package: github.com/cloudbase/garm/params + alias: garm_params + APIErrorResponse: + type: object + x-go-type: + type: APIErrorResponse + import: + package: github.com/cloudbase/garm/apiserver/params + alias: apiserver_params diff --git a/params/params.go b/params/params.go index 3b731d4d..c7d6962b 100644 --- a/params/params.go +++ b/params/params.go @@ -315,6 +315,9 @@ func (r Repository) GetID() string { return r.ID } +// used by swagger client generated code +type Repositories []Repository + type Organization struct { ID string `json:"id"` Name string `json:"name"`