Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ jobs:
uses: actions/setup-go@v3
with:
go-version: '>=1.17.0'
- name: setup-docker
uses: docker-practice/actions-setup-docker@1.0.11
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v0'
- name: Build Compiler image
Expand Down Expand Up @@ -51,8 +49,6 @@ jobs:
uses: actions/setup-go@v3
with:
go-version: '>=1.17.0'
- name: setup-docker
uses: docker-practice/actions-setup-docker@1.0.11
- name: Test Generate Code and Render templates
run: |
git config --global url."https://github.com/".insteadOf "git@github.com:"
Expand Down
1 change: 1 addition & 0 deletions compiler/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ cmd/nexus-openapi-gen
cmd/gqlgen
compiler.tar
_generated
_tsm_temp

### GoLand ###
.idea
Expand Down
2 changes: 1 addition & 1 deletion compiler/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@ RUN CGO_ENABLED=0 go build --trimpath -o install.so ./cmd/validate
WORKDIR /go/src/github.com/vmware-tanzu/graph-framework-for-microservices/compiler
RUN go mod download

CMD make docker.gitlab_credentials && make generate_code
CMD make docker.gitlab_credentials && make preparser
46 changes: 39 additions & 7 deletions compiler/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ CONFIG_FILE ?= ""
GENERATED_OUTPUT_DIRECTORY ?= generated
COMPILER_SRC_DIRECTORY ?= ""
FORCE ?= false
PREPARSER_MODPATH ?= model

NEXUS_KUBEOPENAPI_VERSION ?= 7416bd4754d3c0dd8b3fa37fff53d36594f11607
NEXUS_GRAPHQLGEN_VERSION ?= 32f028bce22efeb70b47a640195bd969dbb337f0
Expand Down Expand Up @@ -140,11 +141,41 @@ generate_example_in_container:
test_in_container: ${BUILDER_NAME}\:${BUILDER_TAG}.image.exists
$(call run_in_container, make test)

.PHONY: preparser
preparser:
@echo "Nexus Compiler: Start Preparser"
@echo "Cleaning up workdir"
rm -rf _generated
@echo "Copying generated_base_structure to create directory structure"
@echo "COMPILER_SRC_DIRECTORY: ${COMPILER_SRC_DIRECTORY}"
cp -R _generated_base_structure _generated
@echo "Cleaning up temp dir"
rm -rf _tsm_temp
@echo "Copying Datamodel to temp directory"
cp -R ${DATAMODEL_PATH} _tsm_temp
cp -R _generated_base_structure/* ${DATAMODEL_PATH}/build
@echo "Nexus Compiler: Running Preparser"
go run cmd/preparser/main.go -dsl _tsm_temp -output _generated -modpath ${PREPARSER_MODPATH}
@echo "Nexus Compiler: Remove empty directories from model directory"
@find _generated/model -depth -type d -empty -delete

@if [ -d "_tsm_temp/global" ]; then \
cp _tsm_temp/go.mod _tsm_temp/global/go.mod; \
for d in _tsm_temp/*/; do \
if [[ ! "$$d" == "_tsm_temp/global/" && ! "$$d" == "_tsm_temp/build/" ]]; then \
cp -r "$$d" "_tsm_temp/global/"; \
fi; \
done; \
$(MAKE) generate_code DATAMODEL_PATH=_tsm_temp/global; \
else \
$(MAKE) generate_code; \
fi

.PHONY: generate_code
generate_code:
@echo "Nexus Compiler: Running compiler code generation"
@echo "Cleaning up workdir"
rm -rf _generated ${GOPATH}/src/nexustempmodule
rm -rf ${GOPATH}/src/nexustempmodule
@echo "Copying generated_base_structure to create directory structure"
@echo "COMPILER_SRC_DIRECTORY: ${COMPILER_SRC_DIRECTORY}"
cp -R _generated_base_structure _generated
Expand All @@ -164,11 +195,12 @@ generate_code:
@echo "Nexus Compiler: Generating CRD yamls"
go run cmd/generate-openapischema/generate-openapischema.go -yamls-path _generated/crds -existing-CRDs-Path ${GENERATED_OUTPUT_DIRECTORY}/crds -force ${FORCE}
git checkout -- pkg/openapi_generator/openapi/openapi_generated.go
rm -rf ${GENERATED_OUTPUT_DIRECTORY}/{client,apis,crds,common,nexus-client,helper,nexus-gql}
cp -r _generated/{client,apis,crds,common,nexus-client,helper,nexus-gql} ${GENERATED_OUTPUT_DIRECTORY}
rm -rf ${GENERATED_OUTPUT_DIRECTORY}/{client,apis,crds,common,nexus-client,helper,nexus-gql,tsm-nexus-gql,model}
cp -r _generated/{client,apis,crds,common,nexus-client,helper,nexus-gql,tsm-nexus-gql,model} ${GENERATED_OUTPUT_DIRECTORY}
@echo "Nexus Compiler: Generating GRAPHQL PKG"
cd _generated && goimports -w .
cd _generated && mv model/model.go model/model.tmp && goimports -w . && mv model/model.tmp model/model.go
cd _generated/nexus-gql && gqlgen generate
@echo "Nexus Compiler: GRAPHQL Generating completed"
cp -rf _generated/* ${GOPATH}/src/nexustempmodule/
cd ${GOPATH}/src/nexustempmodule && cd nexus-gql && go mod init && \
go mod edit -replace nexustempmodule=${GOPATH}/src/nexustempmodule && \
Expand All @@ -180,12 +212,12 @@ generate_code:
./scripts/replace_mod_path.sh
find . -name "*.bak" -type f -delete
@echo "Sorting imports"
cd _generated && goimports -w .
cd _generated && mv model/model.go model/model.tmp && goimports -w . && mv model/model.tmp model/model.go
@echo "Nexus Compiler: Moving files to output directory"
cp -r _generated/{client,apis,crds,common,nexus-client,helper,nexus-gql} ${GENERATED_OUTPUT_DIRECTORY}
cp -r ${GOPATH}/src/nexustempmodule/nexus-gql/graphql.so ${GENERATED_OUTPUT_DIRECTORY}/nexus-gql
mkdir -p ${GENERATED_OUTPUT_DIRECTORY}/install-validator
cp -r ${GOPATH}/src/github.com/vmware-tanzu/graph-framework-for-microservices/install-validator/install.so ${GENERATED_OUTPUT_DIRECTORY}/install-validator/install.so || echo "Could not find install.so file, skipping"
cp -r _generated/{client,apis,crds,common,nexus-client,helper,nexus-gql,tsm-nexus-gql,model} ${GENERATED_OUTPUT_DIRECTORY}
cp -r ${GOPATH}/src/nexustempmodule/nexus-gql/* ${GENERATED_OUTPUT_DIRECTORY}/nexus-gql/
@echo "Nexus Compiler: Compiler code generation completed"

.PHONY: test_generate_code_in_container
Expand Down
Empty file.
Empty file.
5 changes: 3 additions & 2 deletions compiler/cmd/nexus-sdk/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,11 @@ func main() {
config.ConfigInstance = conf
pkgs := parser.ParseDSLPkg(*dslDir)
graphlqQueries := parser.ParseGraphqlQuerySpecs(pkgs)
graph := parser.ParseDSLNodes(*dslDir, conf.GroupName, pkgs, graphlqQueries)
graph, nonNexusTypes, fileset := parser.ParseDSLNodes(*dslDir, conf.GroupName, pkgs, graphlqQueries)
methods, codes := rest.ParseResponses(pkgs)
graphqlFiles := parser.ParseGraphQLFiles(*dslDir)
if err = generator.RenderCRDTemplate(conf.GroupName, conf.CrdModulePath, pkgs, graph,
*crdDir, methods, codes); err != nil {
*crdDir, methods, codes, nonNexusTypes, fileset, graphqlFiles); err != nil {
log.Fatalf("Error rendering crd template: %v", err)
}
}
39 changes: 39 additions & 0 deletions compiler/cmd/preparser/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package main

import (
"flag"

log "github.com/sirupsen/logrus"
"github.com/vmware-tanzu/graph-framework-for-microservices/compiler/pkg/preparser"
)

func main() {
dslDir := flag.String("dsl", "datamodel", "DSL file location.")
outputDir := flag.String("output", "_generated", "output dir location.")
modPath := flag.String("modpath", "datamodel", "ModPath for rendered imports")
logLevel := flag.String("log-level", "ERROR", "Log level")
flag.Parse()

lvl, err := log.ParseLevel(*logLevel)
if err != nil {
log.Fatalf("Failed to configure logging: %v\n", err)
}
log.SetLevel(lvl)

packages := preparser.Parse(*dslDir)
err = preparser.Render(*dslDir, packages)
if err != nil {
log.Fatal(err)
}

err = preparser.CopyPkgsToBuild(*dslDir, *outputDir)
if err != nil {
log.Fatal(err)
}

packages = preparser.Parse(*dslDir)
err = preparser.RenderImports(packages, *outputDir, *modPath)
if err != nil {
log.Fatal(err)
}
}
3 changes: 3 additions & 0 deletions compiler/example/datamodel/config/gns/gns.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"net/http"

cartv1 "github.com/vmware-tanzu/cartographer/pkg/apis/v1alpha1"
"k8s.io/apimachinery/pkg/util/intstr"

service_group "github.com/vmware-tanzu/graph-framework-for-microservices/compiler/example/datamodel/config/gns/service-group"
policypkg "github.com/vmware-tanzu/graph-framework-for-microservices/compiler/example/datamodel/config/policy"
Expand Down Expand Up @@ -171,6 +172,8 @@ type Gns struct {
//nexus-validation: Pattern=abc
Domain string
UseSharedGateway bool
Annotations string `nexus-graphql-jsonencoded:""`
TargetPort intstr.IntOrString `json:"targetPort,omitempty" mapstructure:"targetPort,omitempty"`
Description Description
GnsServiceGroups service_group.SvcGroup `nexus:"children"`
GnsAccessControlPolicy policypkg.AccessControlPolicy `nexus:"child" nexus-graphql:"type:string"`
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,12 @@ models:
fields:
PolicyConfigs:
resolver: true
policypkg_ACPConfig:
fields:
DestSvcGroups:
resolver: true
SourceSvcGroups:
resolver: true
policypkg_VMpolicy:
fields:
queryGns1:
Expand Down
Loading