Skip to content

Commit 3fdab4f

Browse files
committed
Merge pull request #135 from kmala/swagger
feat(swagger): generate the server stub for the workflow manager api spec
2 parents c3801f4 + 2f6c033 commit 3fdab4f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+3380
-2
lines changed

Makefile

+5
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ export GO15VENDOREXPERIMENT=1
99
# dockerized development environment variables
1010
REPO_PATH := github.com/deis/${SHORT_NAME}
1111
DEV_ENV_IMAGE := quay.io/deis/go-dev:0.9.1
12+
SWAGGER_IMAGE := quay.io/goswagger/swagger:0.5.0
1213
DEV_ENV_WORK_DIR := /go/src/${REPO_PATH}
1314
DEV_ENV_PREFIX := docker run --rm -e GO15VENDOREXPERIMENT=1 -v ${CURDIR}:${DEV_ENV_WORK_DIR} -w ${DEV_ENV_WORK_DIR}
1415
DEV_ENV_CMD := ${DEV_ENV_PREFIX} ${DEV_ENV_IMAGE}
16+
SWAGGER_CMD := docker run --rm -e GOPATH=/go -v ${CURDIR}:${DEV_ENV_WORK_DIR} -w ${DEV_ENV_WORK_DIR} ${SWAGGER_IMAGE}
1517

1618
# SemVer with build information is defined in the SemVer 2 spec, but Docker
1719
# doesn't allow +, so we use -.
@@ -43,6 +45,9 @@ build:
4345
@$(call check-static-binary,$(BINARY_DEST_DIR)/${SHORT_NAME})
4446
${DEV_ENV_PREFIX} ${DEV_ENV_IMAGE} goupx --strip-binary -9 ${BINARY_DEST_DIR}/${SHORT_NAME} || exit 1
4547

48+
swagger-serverstub:
49+
${SWAGGER_CMD} generate server -A WorkflowManager -t pkg/swagger -f https://raw.githubusercontent.com/deis/workflow-manager/master/api/swagger-spec/swagger.yml
50+
4651
test:
4752
${DEV_ENV_CMD} sh -c 'go test -tags testonly $$(glide nv)'
4853

glide.lock

+42-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

glide.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,5 @@ import:
2020
- sqlite3
2121
- package: github.com/pborman/uuid
2222
- package: github.com/jinzhu/gorm
23+
- package: github.com/go-swagger/go-swagger
24+
version: 0.5.0
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package main
2+
3+
import (
4+
"log"
5+
"os"
6+
7+
spec "github.com/go-swagger/go-swagger/spec"
8+
flags "github.com/jessevdk/go-flags"
9+
10+
"github.com/deis/workflow-manager-api/pkg/swagger/restapi"
11+
"github.com/deis/workflow-manager-api/pkg/swagger/restapi/operations"
12+
)
13+
14+
// This file was generated by the swagger tool.
15+
// Make sure not to overwrite this file after you generated it because all your edits would be lost!
16+
17+
func main() {
18+
swaggerSpec, err := spec.New(restapi.SwaggerJSON, "")
19+
if err != nil {
20+
log.Fatalln(err)
21+
}
22+
23+
api := operations.NewWorkflowManagerAPI(swaggerSpec)
24+
server := restapi.NewServer(api)
25+
defer server.Shutdown()
26+
27+
parser := flags.NewParser(server, flags.Default)
28+
parser.ShortDescription = `Workflow Manager`
29+
parser.LongDescription = swaggerSpec.Spec().Info.Description
30+
31+
server.ConfigureFlags()
32+
for _, optsGroup := range api.CommandLineOptionsGroups {
33+
parser.AddGroup(optsGroup.ShortDescription, optsGroup.LongDescription, optsGroup.Options)
34+
}
35+
36+
if _, err := parser.Parse(); err != nil {
37+
os.Exit(1)
38+
}
39+
40+
server.ConfigureAPI()
41+
42+
if err := server.Serve(); err != nil {
43+
log.Fatalln(err)
44+
}
45+
}

pkg/swagger/models/cluster_detail.go

+92
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package models
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+
strfmt "github.com/go-swagger/go-swagger/strfmt"
8+
9+
"github.com/go-swagger/go-swagger/errors"
10+
"github.com/go-swagger/go-swagger/httpkit/validate"
11+
)
12+
13+
/*ClusterDetail cluster detail
14+
15+
swagger:model clusterDetail
16+
*/
17+
type ClusterDetail struct {
18+
19+
/* components
20+
21+
Required: true
22+
*/
23+
Components []*ComponentDetail `json:"components"`
24+
25+
/* first seen
26+
*/
27+
FirstSeen *strfmt.DateTime `json:"firstSeen,omitempty"`
28+
29+
/* id
30+
31+
Required: true
32+
Min Length: 1
33+
*/
34+
ID string `json:"id"`
35+
36+
/* last seen
37+
*/
38+
LastSeen *strfmt.DateTime `json:"lastSeen,omitempty"`
39+
}
40+
41+
// Validate validates this cluster detail
42+
func (m *ClusterDetail) Validate(formats strfmt.Registry) error {
43+
var res []error
44+
45+
if err := m.validateComponents(formats); err != nil {
46+
// prop
47+
res = append(res, err)
48+
}
49+
50+
if err := m.validateID(formats); err != nil {
51+
// prop
52+
res = append(res, err)
53+
}
54+
55+
if len(res) > 0 {
56+
return errors.CompositeValidationError(res...)
57+
}
58+
return nil
59+
}
60+
61+
func (m *ClusterDetail) validateComponents(formats strfmt.Registry) error {
62+
63+
if err := validate.Required("components", "body", m.Components); err != nil {
64+
return err
65+
}
66+
67+
for i := 0; i < len(m.Components); i++ {
68+
69+
if m.Components[i] != nil {
70+
71+
if err := m.Components[i].Validate(formats); err != nil {
72+
return err
73+
}
74+
}
75+
76+
}
77+
78+
return nil
79+
}
80+
81+
func (m *ClusterDetail) validateID(formats strfmt.Registry) error {
82+
83+
if err := validate.RequiredString("id", "body", string(m.ID)); err != nil {
84+
return err
85+
}
86+
87+
if err := validate.MinLength("id", "body", string(m.ID), 1); err != nil {
88+
return err
89+
}
90+
91+
return nil
92+
}

pkg/swagger/models/component.go

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package models
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+
strfmt "github.com/go-swagger/go-swagger/strfmt"
8+
9+
"github.com/go-swagger/go-swagger/errors"
10+
"github.com/go-swagger/go-swagger/httpkit/validate"
11+
)
12+
13+
/*Component component
14+
15+
swagger:model component
16+
*/
17+
type Component struct {
18+
19+
/* description
20+
*/
21+
Description *string `json:"description,omitempty"`
22+
23+
/* name
24+
25+
Required: true
26+
Min Length: 1
27+
*/
28+
Name string `json:"name"`
29+
}
30+
31+
// Validate validates this component
32+
func (m *Component) Validate(formats strfmt.Registry) error {
33+
var res []error
34+
35+
if err := m.validateName(formats); err != nil {
36+
// prop
37+
res = append(res, err)
38+
}
39+
40+
if len(res) > 0 {
41+
return errors.CompositeValidationError(res...)
42+
}
43+
return nil
44+
}
45+
46+
func (m *Component) validateName(formats strfmt.Registry) error {
47+
48+
if err := validate.RequiredString("name", "body", string(m.Name)); err != nil {
49+
return err
50+
}
51+
52+
if err := validate.MinLength("name", "body", string(m.Name), 1); err != nil {
53+
return err
54+
}
55+
56+
return nil
57+
}
+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package models
2+
3+
import "github.com/go-swagger/go-swagger/strfmt"
4+
5+
// This file was generated by the swagger tool.
6+
// Editing this file might prove futile when you re-run the swagger generate command
7+
8+
/*ComponentDetail component detail
9+
10+
swagger:model componentDetail
11+
*/
12+
type ComponentDetail struct {
13+
14+
/* component
15+
*/
16+
Component *Component `json:"component,omitempty"`
17+
18+
/* version
19+
*/
20+
Version *Version `json:"version,omitempty"`
21+
}
22+
23+
// Validate validates this component detail
24+
func (m *ComponentDetail) Validate(formats strfmt.Registry) error {
25+
return nil
26+
}

pkg/swagger/models/data.go

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package models
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+
strfmt "github.com/go-swagger/go-swagger/strfmt"
8+
"github.com/go-swagger/go-swagger/swag"
9+
10+
"github.com/go-swagger/go-swagger/errors"
11+
"github.com/go-swagger/go-swagger/httpkit/validate"
12+
)
13+
14+
/*Data data
15+
16+
swagger:model data
17+
*/
18+
type Data struct {
19+
20+
/* description
21+
22+
Min Length: 1
23+
*/
24+
Description string `json:"description,omitempty"`
25+
26+
/* fixes
27+
28+
Min Length: 1
29+
*/
30+
Fixes string `json:"fixes,omitempty"`
31+
}
32+
33+
// Validate validates this data
34+
func (m *Data) Validate(formats strfmt.Registry) error {
35+
var res []error
36+
37+
if err := m.validateDescription(formats); err != nil {
38+
// prop
39+
res = append(res, err)
40+
}
41+
42+
if err := m.validateFixes(formats); err != nil {
43+
// prop
44+
res = append(res, err)
45+
}
46+
47+
if len(res) > 0 {
48+
return errors.CompositeValidationError(res...)
49+
}
50+
return nil
51+
}
52+
53+
func (m *Data) validateDescription(formats strfmt.Registry) error {
54+
55+
if swag.IsZero(m.Description) { // not required
56+
return nil
57+
}
58+
59+
if err := validate.MinLength("description", "body", string(m.Description), 1); err != nil {
60+
return err
61+
}
62+
63+
return nil
64+
}
65+
66+
func (m *Data) validateFixes(formats strfmt.Registry) error {
67+
68+
if swag.IsZero(m.Fixes) { // not required
69+
return nil
70+
}
71+
72+
if err := validate.MinLength("fixes", "body", string(m.Fixes), 1); err != nil {
73+
return err
74+
}
75+
76+
return nil
77+
}

0 commit comments

Comments
 (0)