Skip to content

Commit

Permalink
Merge 832f371 into f911853
Browse files Browse the repository at this point in the history
  • Loading branch information
abhishekparwal committed Apr 24, 2020
2 parents f911853 + 832f371 commit 6c42269
Show file tree
Hide file tree
Showing 11 changed files with 558 additions and 475 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -30,3 +30,4 @@ test/.cached_binary_test_info.json
examples/example-gateway/build/example-gateway
.TMP_ZANZIBAR_TIMESTAMP_FILE.txt
package-lock.json
gomock_reflect_*
83 changes: 15 additions & 68 deletions codegen/gateway.go
Expand Up @@ -280,11 +280,7 @@ func ensureFields(config map[string]interface{}, mandatoryFields []string, yamlF
}

// NewEndpointSpec creates an endpoint spec from a yaml file.
func NewEndpointSpec(
yamlFile string,
h *PackageHelper,
midSpecs map[string]*MiddlewareSpec,
) (*EndpointSpec, error) {
func NewEndpointSpec(yamlFile string, h *PackageHelper, midSpecs map[string]*MiddlewareSpec) (*EndpointSpec, error) {
_, err := os.Stat(yamlFile)
if err != nil {
return nil, errors.Wrapf(err, "Could not find file %s: ", yamlFile)
Expand Down Expand Up @@ -419,70 +415,13 @@ func NewEndpointSpec(
ClientMethod: clientMethod,
}

defaultMidSpecs, err := getOrderedDefaultMiddlewareSpecs(
h.ConfigRoot(),
h.DefaultMiddlewareSpecs(),
endpointType.(string))
if err != nil {
return nil, errors.Wrap(
err, "error getting ordered default middleware specs",
)
}

return augmentEndpointSpec(espec, endpointConfigObj, midSpecs, defaultMidSpecs)
}
defaultMidSpecs := h.DefaultMiddlewareSpecsOrdered()[endpointType.(string)]

func getOrderedDefaultMiddlewareSpecs(
cfgDir string,
middlewareSpecs map[string]*MiddlewareSpec,
classType string,
) ([]MiddlewareSpec, error) {
middlewareObj := map[string][]string{}

middlewareOrderingFile := filepath.Join(cfgDir, "middlewares/default.yaml")
if _, err := os.Stat(middlewareOrderingFile); os.IsNotExist(err) {
// Cannot find yaml file, use json file instead
middlewareOrderingFile = filepath.Join(cfgDir, "middlewares/default.json")
if _, err := os.Stat(middlewareOrderingFile); os.IsNotExist(err) {
// This file is not required so it is okay to skip
return nil, nil
}
}

bytes, err := ioutil.ReadFile(middlewareOrderingFile)
if err != nil {
return nil, errors.Wrapf(
err, "could not read default middleware ordering file: %s", middlewareOrderingFile,
)
}
err = yaml.Unmarshal(bytes, &middlewareObj)
espec, err = augmentEndpointSpec(espec, endpointConfigObj, midSpecs, defaultMidSpecs)
if err != nil {
return nil, errors.Wrapf(
err, "could not parse default middleware ordering file: %s", middlewareOrderingFile,
)
}
middlewareOrderingObj := middlewareObj[classType]

return sortByMiddlewareOrdering(middlewareOrderingObj, middlewareSpecs)
}

// sortByMiddlewareOrdering sorts middlewareSpecs using the ordering from middlewareOrderingObj
func sortByMiddlewareOrdering(
middlewareOrderingObj []string,
middlewareSpecs map[string]*MiddlewareSpec,
) ([]MiddlewareSpec, error) {
middlewares := make([]MiddlewareSpec, 0)

for _, middlewareName := range middlewareOrderingObj {
middlewareSpec, ok := middlewareSpecs[middlewareName]
if !ok {
return nil, errors.Errorf("could not find middleware %s", middlewareName)
}

middlewares = append(middlewares, *middlewareSpec)
return nil, err
}

return middlewares, nil
return espec, nil
}

func testFixtures(endpointConfigObj map[string]interface{}) (map[string]*EndpointTestFixture, error) {
Expand Down Expand Up @@ -925,6 +864,15 @@ func (e *EndpointSpec) SetDownstream(
return e.ModuleSpec.SetDownstream(e, h)
}

err := e.setMatchingClientSpec(clientModules)
if err != nil {
return err
}

return e.ModuleSpec.SetDownstream(e, h)
}

func (e *EndpointSpec) setMatchingClientSpec(clientModules []*ClientSpec) error {
var clientSpec *ClientSpec
for _, v := range clientModules {
if v.ClientID == e.ClientID {
Expand All @@ -942,8 +890,7 @@ func (e *EndpointSpec) SetDownstream(
}

e.ClientSpec = clientSpec

return e.ModuleSpec.SetDownstream(e, h)
return nil
}

// EndpointConfig represent the "config" field of endpoint-config.yaml
Expand Down

0 comments on commit 6c42269

Please sign in to comment.