Skip to content

Commit 463a30f

Browse files
committed
Merge pull request #143 from kmala/server
ref(swagger): add v2 endpoints for backward compatibility
2 parents 713f468 + 10e5f94 commit 463a30f

18 files changed

+613
-17
lines changed

pkg/handlers/get_latest_versions.go

+24
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,27 @@ func GetLatestVersions(params operations.GetComponentsByLatestReleaseParams, db
6262
ret := operations.GetComponentsByLatestReleaseOKBodyBody{Data: componentVersions}
6363
return operations.NewGetComponentsByLatestReleaseOK().WithPayload(ret)
6464
}
65+
66+
// GetLatestVersionsForV2 is the handler for the POST /v2/versions/latest endpoint
67+
func GetLatestVersionsForV2(params operations.GetComponentsByLatestReleaseForV2Params, db *gorm.DB) middleware.Responder {
68+
reqStruct := params.Body
69+
componentAndTrainSlice := make([]data.ComponentAndTrain, len(reqStruct.Data))
70+
for i, d := range reqStruct.Data {
71+
//this is just to make the existing workflow manager clients out in the beta world to work.
72+
if d.Version.Train == "" {
73+
d.Version.Train = "beta"
74+
}
75+
componentAndTrainSlice[i] = data.ComponentAndTrain{
76+
ComponentName: d.Component.Name,
77+
Train: d.Version.Train,
78+
}
79+
}
80+
81+
componentVersions, err := data.GetLatestVersions(db, componentAndTrainSlice)
82+
if err != nil {
83+
log.Printf("data.GetLatestVersions error (%s)", err)
84+
return operations.NewGetComponentsByLatestReleaseForV2Default(http.StatusInternalServerError).WithPayload(&models.Error{Code: http.StatusInternalServerError, Message: "database error"})
85+
}
86+
ret := operations.GetComponentsByLatestReleaseForV2OKBodyBody{Data: componentVersions}
87+
return operations.NewGetComponentsByLatestReleaseForV2OK().WithPayload(ret)
88+
}

pkg/swagger/restapi/configure_workflow_manager.go

+8
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ func configureAPI(api *operations.WorkflowManagerAPI) http.Handler {
5656
api.CreateClusterDetailsHandler = operations.CreateClusterDetailsHandlerFunc(func(params operations.CreateClusterDetailsParams) middleware.Responder {
5757
return handlers.ClusterCheckin(params, rdsDB)
5858
})
59+
60+
api.CreateClusterDetailsForV2Handler = operations.CreateClusterDetailsForV2HandlerFunc(func(params operations.CreateClusterDetailsForV2Params) middleware.Responder {
61+
return handlers.ClusterCheckin(operations.CreateClusterDetailsParams{Body: params.Body}, rdsDB)
62+
})
63+
5964
api.GetClusterByIDHandler = operations.GetClusterByIDHandlerFunc(func(params operations.GetClusterByIDParams) middleware.Responder {
6065
return handlers.GetCluster(params, rdsDB)
6166
})
@@ -74,6 +79,9 @@ func configureAPI(api *operations.WorkflowManagerAPI) http.Handler {
7479
api.GetComponentsByLatestReleaseHandler = operations.GetComponentsByLatestReleaseHandlerFunc(func(params operations.GetComponentsByLatestReleaseParams) middleware.Responder {
7580
return handlers.GetLatestVersions(params, rdsDB)
7681
})
82+
api.GetComponentsByLatestReleaseForV2Handler = operations.GetComponentsByLatestReleaseForV2HandlerFunc(func(params operations.GetComponentsByLatestReleaseForV2Params) middleware.Responder {
83+
return handlers.GetLatestVersionsForV2(params, rdsDB)
84+
})
7785
api.PublishComponentReleaseHandler = operations.PublishComponentReleaseHandlerFunc(func(params operations.PublishComponentReleaseParams) middleware.Responder {
7886
return handlers.PublishVersion(params, rdsDB)
7987
})

pkg/swagger/restapi/embedded_spec.go

+1-1
Large diffs are not rendered by default.

pkg/swagger/restapi/operations/create_cluster_details.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func NewCreateClusterDetails(ctx *middleware.Context, handler CreateClusterDetai
2727
return &CreateClusterDetails{Context: ctx, Handler: handler}
2828
}
2929

30-
/*CreateClusterDetails swagger:route POST /clusters createClusterDetails
30+
/*CreateClusterDetails swagger:route POST /v3/clusters createClusterDetails
3131
3232
create a cluster with all components
3333
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package operations
2+
3+
// This file was generated by the swagger tool.
4+
// Editing this file might prove futile when you re-run the generate command
5+
6+
import (
7+
"net/http"
8+
9+
middleware "github.com/go-swagger/go-swagger/httpkit/middleware"
10+
)
11+
12+
// CreateClusterDetailsForV2HandlerFunc turns a function with the right signature into a create cluster details for v2 handler
13+
type CreateClusterDetailsForV2HandlerFunc func(CreateClusterDetailsForV2Params) middleware.Responder
14+
15+
// Handle executing the request and returning a response
16+
func (fn CreateClusterDetailsForV2HandlerFunc) Handle(params CreateClusterDetailsForV2Params) middleware.Responder {
17+
return fn(params)
18+
}
19+
20+
// CreateClusterDetailsForV2Handler interface for that can handle valid create cluster details for v2 params
21+
type CreateClusterDetailsForV2Handler interface {
22+
Handle(CreateClusterDetailsForV2Params) middleware.Responder
23+
}
24+
25+
// NewCreateClusterDetailsForV2 creates a new http.Handler for the create cluster details for v2 operation
26+
func NewCreateClusterDetailsForV2(ctx *middleware.Context, handler CreateClusterDetailsForV2Handler) *CreateClusterDetailsForV2 {
27+
return &CreateClusterDetailsForV2{Context: ctx, Handler: handler}
28+
}
29+
30+
/*CreateClusterDetailsForV2 swagger:route POST /v2/clusters/{id} createClusterDetailsForV2
31+
32+
create a cluster with all components.This endpoint is to support old clients
33+
34+
*/
35+
type CreateClusterDetailsForV2 struct {
36+
Context *middleware.Context
37+
Handler CreateClusterDetailsForV2Handler
38+
}
39+
40+
func (o *CreateClusterDetailsForV2) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
41+
route, _ := o.Context.RouteInfo(r)
42+
var Params = NewCreateClusterDetailsForV2Params()
43+
44+
if err := o.Context.BindValidRequest(r, route, &Params); err != nil { // bind params
45+
o.Context.Respond(rw, r, route.Produces, route, err)
46+
return
47+
}
48+
49+
res := o.Handler.Handle(Params) // actually handle the request
50+
51+
o.Context.Respond(rw, r, route.Produces, route, res)
52+
53+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package operations
2+
3+
// This file was generated by the swagger tool.
4+
// Editing this file might prove futile when you re-run the swagger generate command
5+
6+
import (
7+
"net/http"
8+
9+
"github.com/go-swagger/go-swagger/errors"
10+
"github.com/go-swagger/go-swagger/httpkit/middleware"
11+
12+
strfmt "github.com/go-swagger/go-swagger/strfmt"
13+
14+
"github.com/deis/workflow-manager-api/pkg/swagger/models"
15+
)
16+
17+
// NewCreateClusterDetailsForV2Params creates a new CreateClusterDetailsForV2Params object
18+
// with the default values initialized.
19+
func NewCreateClusterDetailsForV2Params() CreateClusterDetailsForV2Params {
20+
var ()
21+
return CreateClusterDetailsForV2Params{}
22+
}
23+
24+
// CreateClusterDetailsForV2Params contains all the bound params for the create cluster details for v2 operation
25+
// typically these are obtained from a http.Request
26+
//
27+
// swagger:parameters createClusterDetailsForV2
28+
type CreateClusterDetailsForV2Params struct {
29+
/*
30+
In: body
31+
*/
32+
Body *models.Cluster
33+
/*
34+
Required: true
35+
In: path
36+
*/
37+
ID string
38+
}
39+
40+
// BindRequest both binds and validates a request, it assumes that complex things implement a Validatable(strfmt.Registry) error interface
41+
// for simple values it will use straight method calls
42+
func (o *CreateClusterDetailsForV2Params) BindRequest(r *http.Request, route *middleware.MatchedRoute) error {
43+
var res []error
44+
45+
defer r.Body.Close()
46+
var body models.Cluster
47+
if err := route.Consumer.Consume(r.Body, &body); err != nil {
48+
res = append(res, errors.NewParseError("body", "body", "", err))
49+
} else {
50+
if err := body.Validate(route.Formats); err != nil {
51+
res = append(res, err)
52+
}
53+
54+
if len(res) == 0 {
55+
o.Body = &body
56+
}
57+
}
58+
59+
rID, rhkID, _ := route.Params.GetOK("id")
60+
if err := o.bindID(rID, rhkID, route.Formats); err != nil {
61+
res = append(res, err)
62+
}
63+
64+
if len(res) > 0 {
65+
return errors.CompositeValidationError(res...)
66+
}
67+
return nil
68+
}
69+
70+
func (o *CreateClusterDetailsForV2Params) bindID(rawData []string, hasKey bool, formats strfmt.Registry) error {
71+
var raw string
72+
if len(rawData) > 0 {
73+
raw = rawData[len(rawData)-1]
74+
}
75+
76+
o.ID = raw
77+
78+
return nil
79+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package operations
2+
3+
// This file was generated by the swagger tool.
4+
// Editing this file might prove futile when you re-run the swagger generate command
5+
6+
import (
7+
"net/http"
8+
9+
"github.com/go-swagger/go-swagger/httpkit"
10+
11+
"github.com/deis/workflow-manager-api/pkg/swagger/models"
12+
)
13+
14+
/*CreateClusterDetailsForV2OK clusters details response
15+
16+
swagger:response createClusterDetailsForV2OK
17+
*/
18+
type CreateClusterDetailsForV2OK struct {
19+
20+
// In: body
21+
Payload *models.Cluster `json:"body,omitempty"`
22+
}
23+
24+
// NewCreateClusterDetailsForV2OK creates CreateClusterDetailsForV2OK with default headers values
25+
func NewCreateClusterDetailsForV2OK() *CreateClusterDetailsForV2OK {
26+
return &CreateClusterDetailsForV2OK{}
27+
}
28+
29+
// WithPayload adds the payload to the create cluster details for v2 o k response
30+
func (o *CreateClusterDetailsForV2OK) WithPayload(payload *models.Cluster) *CreateClusterDetailsForV2OK {
31+
o.Payload = payload
32+
return o
33+
}
34+
35+
// SetPayload sets the payload to the create cluster details for v2 o k response
36+
func (o *CreateClusterDetailsForV2OK) SetPayload(payload *models.Cluster) {
37+
o.Payload = payload
38+
}
39+
40+
// WriteResponse to the client
41+
func (o *CreateClusterDetailsForV2OK) WriteResponse(rw http.ResponseWriter, producer httpkit.Producer) {
42+
43+
rw.WriteHeader(200)
44+
if o.Payload != nil {
45+
if err := producer.Produce(rw, o.Payload); err != nil {
46+
panic(err) // let the recovery middleware deal with this
47+
}
48+
}
49+
}
50+
51+
/*CreateClusterDetailsForV2Default unexpected error
52+
53+
swagger:response createClusterDetailsForV2Default
54+
*/
55+
type CreateClusterDetailsForV2Default struct {
56+
_statusCode int
57+
58+
// In: body
59+
Payload *models.Error `json:"body,omitempty"`
60+
}
61+
62+
// NewCreateClusterDetailsForV2Default creates CreateClusterDetailsForV2Default with default headers values
63+
func NewCreateClusterDetailsForV2Default(code int) *CreateClusterDetailsForV2Default {
64+
if code <= 0 {
65+
code = 500
66+
}
67+
68+
return &CreateClusterDetailsForV2Default{
69+
_statusCode: code,
70+
}
71+
}
72+
73+
// WithStatusCode adds the status to the create cluster details for v2 default response
74+
func (o *CreateClusterDetailsForV2Default) WithStatusCode(code int) *CreateClusterDetailsForV2Default {
75+
o._statusCode = code
76+
return o
77+
}
78+
79+
// SetStatusCode sets the status to the create cluster details for v2 default response
80+
func (o *CreateClusterDetailsForV2Default) SetStatusCode(code int) {
81+
o._statusCode = code
82+
}
83+
84+
// WithPayload adds the payload to the create cluster details for v2 default response
85+
func (o *CreateClusterDetailsForV2Default) WithPayload(payload *models.Error) *CreateClusterDetailsForV2Default {
86+
o.Payload = payload
87+
return o
88+
}
89+
90+
// SetPayload sets the payload to the create cluster details for v2 default response
91+
func (o *CreateClusterDetailsForV2Default) SetPayload(payload *models.Error) {
92+
o.Payload = payload
93+
}
94+
95+
// WriteResponse to the client
96+
func (o *CreateClusterDetailsForV2Default) WriteResponse(rw http.ResponseWriter, producer httpkit.Producer) {
97+
98+
rw.WriteHeader(o._statusCode)
99+
if o.Payload != nil {
100+
if err := producer.Produce(rw, o.Payload); err != nil {
101+
panic(err) // let the recovery middleware deal with this
102+
}
103+
}
104+
}

pkg/swagger/restapi/operations/get_cluster_by_id.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func NewGetClusterByID(ctx *middleware.Context, handler GetClusterByIDHandler) *
2727
return &GetClusterByID{Context: ctx, Handler: handler}
2828
}
2929

30-
/*GetClusterByID swagger:route GET /clusters/{id} getClusterById
30+
/*GetClusterByID swagger:route GET /v3/clusters/{id} getClusterById
3131
3232
read a cluster details
3333

pkg/swagger/restapi/operations/get_clusters_by_age.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func NewGetClustersByAge(ctx *middleware.Context, handler GetClustersByAgeHandle
3131
return &GetClustersByAge{Context: ctx, Handler: handler}
3232
}
3333

34-
/*GetClustersByAge swagger:route GET /clusters/age getClustersByAge
34+
/*GetClustersByAge swagger:route GET /v3/clusters/age getClustersByAge
3535
3636
list clusters
3737

pkg/swagger/restapi/operations/get_clusters_count.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func NewGetClustersCount(ctx *middleware.Context, handler GetClustersCountHandle
2727
return &GetClustersCount{Context: ctx, Handler: handler}
2828
}
2929

30-
/*GetClustersCount swagger:route GET /clusters/count getClustersCount
30+
/*GetClustersCount swagger:route GET /v3/clusters/count getClustersCount
3131
3232
read the count of the known deis clusters
3333

pkg/swagger/restapi/operations/get_component_by_name.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func NewGetComponentByName(ctx *middleware.Context, handler GetComponentByNameHa
3131
return &GetComponentByName{Context: ctx, Handler: handler}
3232
}
3333

34-
/*GetComponentByName swagger:route GET /versions/{train}/{component} getComponentByName
34+
/*GetComponentByName swagger:route GET /v3/versions/{train}/{component} getComponentByName
3535
3636
list the releases of a component
3737

pkg/swagger/restapi/operations/get_component_by_release.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func NewGetComponentByRelease(ctx *middleware.Context, handler GetComponentByRel
2727
return &GetComponentByRelease{Context: ctx, Handler: handler}
2828
}
2929

30-
/*GetComponentByRelease swagger:route GET /versions/{train}/{component}/{release} getComponentByRelease
30+
/*GetComponentByRelease swagger:route GET /v3/versions/{train}/{component}/{release} getComponentByRelease
3131
3232
read the specified release of a component
3333

pkg/swagger/restapi/operations/get_components_by_latest_release.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func NewGetComponentsByLatestRelease(ctx *middleware.Context, handler GetCompone
3232
return &GetComponentsByLatestRelease{Context: ctx, Handler: handler}
3333
}
3434

35-
/*GetComponentsByLatestRelease swagger:route POST /versions/latest getComponentsByLatestRelease
35+
/*GetComponentsByLatestRelease swagger:route POST /v3/versions/latest getComponentsByLatestRelease
3636
3737
list the latest release version of the components
3838

0 commit comments

Comments
 (0)