Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
5b89036
NPT-632: Cosmos DM nexus compiler changes
vishnukavach Mar 15, 2023
e068b0d
COSMOS-856 and COSMOS-858 Fix
vishnukavach Mar 17, 2023
81bdf8a
Add new type
vishnukavach Mar 17, 2023
6cdce33
Fix graphql resolver
vishnukavach Mar 17, 2023
e956e28
Add new type NexusGenericObject
vishnukavach Mar 22, 2023
0a850c3
add go pin version
janakiramanmesh7 Mar 16, 2023
018e146
use without plugin mode
janakiramanmesh7 Mar 16, 2023
2fcf67c
Use upper case first letter for non global nodes
Mar 27, 2023
0580d01
Use upper case first letter for field schema name
Mar 27, 2023
e08dab1
Add Node NotifyCallBack in nexus-client
vishnukavach Mar 27, 2023
8c43aa8
Merge branch 'npt-632' into npt-632-without-plugin
ramramu3433 Mar 27, 2023
e449232
Parse non nexus nodes and types and copy them to model dir
Mar 28, 2023
592cd01
Merge branch 'npt-632' into npt-632-without-plugin
ramramu3433 Mar 28, 2023
8788d8c
NPT-632: Cosmos DM nexus compiler changes
vishnukavach Mar 15, 2023
ecfae16
COSMOS-856 and COSMOS-858 Fix
vishnukavach Mar 17, 2023
6dc6625
Add new type
vishnukavach Mar 17, 2023
680f308
Fix graphql resolver
vishnukavach Mar 17, 2023
4577d1d
Add new type NexusGenericObject
vishnukavach Mar 22, 2023
7a25149
Use upper case first letter for non global nodes
Mar 27, 2023
8cf2173
Use upper case first letter for field schema name
Mar 27, 2023
d78ffae
Add Node NotifyCallBack in nexus-client
vishnukavach Mar 27, 2023
547915e
Add RegisterCB function
vishnukavach Mar 28, 2023
b338227
Parse non nexus nodes and types and copy them to model dir
Mar 28, 2023
fe8c6e0
upgrade client-go to v0.26.3
vishnukavach Mar 28, 2023
0a36dba
upgrade client-go to v0.26.3
vishnukavach Mar 28, 2023
dbb684d
Pin k8s client-go version
vishnukavach Mar 29, 2023
2bb9abb
Merge branch 'npt-632' into npt-632-without-plugin
janakiramanmesh7 Mar 29, 2023
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
52 changes: 42 additions & 10 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,28 +195,29 @@ 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 && \
${COMPILER_SRC_DIRECTORY}/scripts/pin_graphql_build_version.sh ${COMPILER_SRC_DIRECTORY} && \
go mod tidy -e 2>/dev/null && \
CGO_ENABLED=1 GOOS=linux \
go build --trimpath -o graphql.so -buildmode=plugin server.go
go mod edit -go=1.18 && \
go mod tidy && \
CGO_ENABLED=1 GOARCH=amd64 GOOS=linux go build -ldflags="-w -s" server.go
@echo "Updating module name"
./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
2 changes: 1 addition & 1 deletion compiler/_deps/github.com/kubernetes/code-generator
Submodule code-generator updated 107 files
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)
}

packages = preparser.Parse(*dslDir)
err = preparser.RenderImports(packages, *outputDir, *modPath)
if err != nil {
log.Fatal(err)
}

err = preparser.CopyPkgsToBuild(packages, *outputDir)
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
2 changes: 1 addition & 1 deletion compiler/example/datamodel/config/policy/policy.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package policypkg

import (
"github.com/vmware-tanzu/graph-framework-for-microservices/compiler/example/datamodel/config/gns/service-group"
servicegroup "github.com/vmware-tanzu/graph-framework-for-microservices/compiler/example/datamodel/config/gns/service-group"
"github.com/vmware-tanzu/graph-framework-for-microservices/nexus/nexus"
)

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