diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1602977b91dedf617f521b72fd8239e1dd31e2e3..1ca81acf95e0e7ade693b0b2431b7962eedba884 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,76 +3,12 @@ variables: stages: - test - - compliance - - build + - documentation before_script: - git config --global url."https://$GO_MODULES_USER:$GO_MODULES_ACCESS_TOKEN@code.fbi.h-da.de".insteadOf "https://code.fbi.h-da.de" -code-quality-master: - image: golangci/golangci-lint:latest-alpine - stage: test - rules: - - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH - - if: $CI_DEFAULT_BRANCH - script: - # writes golangci-lint output to gl-code-quality-report.json - - golangci-lint run --config .ci/.golangci-master.yml --out-format code-climate | tee gl-code-quality-report.json - artifacts: - reports: - codequality: gl-code-quality-report.json - paths: - - gl-code-quality-report.json - - -code-quality: - image: golangci/golangci-lint:latest-alpine - stage: test - allow_failure: true - rules: - - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH - script: - # writes golangci-lint output to gl-code-quality-report.json - - golangci-lint run --config .ci/.golangci.yml --out-format code-climate | tee gl-code-quality-report.json - artifacts: - reports: - codequality: gl-code-quality-report.json - paths: - - gl-code-quality-report.json - -Documentation: - before_script: - - pwd - image: - name: pandoc/latex - entrypoint: - - '' - stage: build - rules: - - changes: - - documentation/design/*.md - script: - - cd documentation/design - - pandoc --filter pandoc-citeproc --bibliography=bibliography.bib --csl=acm-sig-proceedings.csl - --variable papersize=a4paper -s *.md -o documentation.pdf - artifacts: - paths: - - documentation/design/documentation.pdf - -sast: - variables: - SAST_ANALYZER_IMAGE_TAG: '2' - SAST_EXCLUDED_PATHS: spec, test, tests, tmp - SEARCH_MAX_DEPTH: '4' - stage: compliance - -license_scanning: - stage: compliance - -gemnasium-dependency_scanning: - stage: compliance - include: - - template: Security/SAST.gitlab-ci.yml - - template: Dependency-Scanning.gitlab-ci.yml - - template: Security/License-Scanning.gitlab-ci.yml + - local: '/build/ci/.code-quality-ci.yml' + - local: '/build/ci/.documentation-ci.yml' + - local: '/build/ci/.security-and-compliance-ci.yml' diff --git a/cliInterface/gosdnCLI.pb.go b/api/proto/gosdnCLI.pb.go similarity index 100% rename from cliInterface/gosdnCLI.pb.go rename to api/proto/gosdnCLI.pb.go diff --git a/cliInterface/gosdnCLI.proto b/api/proto/gosdnCLI.proto similarity index 100% rename from cliInterface/gosdnCLI.proto rename to api/proto/gosdnCLI.proto diff --git a/cliInterface/gosdnCLI_grpc.pb.go b/api/proto/gosdnCLI_grpc.pb.go similarity index 100% rename from cliInterface/gosdnCLI_grpc.pb.go rename to api/proto/gosdnCLI_grpc.pb.go diff --git a/build/ci/.code-quality-ci.yml b/build/ci/.code-quality-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..ab2aa8d7b3f5a988e5827b08c82c5a32459bdd94 --- /dev/null +++ b/build/ci/.code-quality-ci.yml @@ -0,0 +1,30 @@ +code-quality-master: + image: golangci/golangci-lint:latest-alpine + stage: test + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + script: + # writes golangci-lint output to gl-code-quality-report.json + - golangci-lint run --config build/ci/.golangci-config/.golangci-master.yml --out-format code-climate | tee gl-code-quality-report.json + artifacts: + reports: + codequality: gl-code-quality-report.json + paths: + - gl-code-quality-report.json + + +code-quality: + image: golangci/golangci-lint:latest-alpine + stage: test + allow_failure: true + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH + script: + # writes golangci-lint output to gl-code-quality-report.json + - golangci-lint run --config build/ci/.golangci-config/.golangci.yml --out-format code-climate | tee gl-code-quality-report.json + artifacts: + reports: + codequality: gl-code-quality-report.json + paths: + - gl-code-quality-report.json diff --git a/build/ci/.documentation-ci.yml b/build/ci/.documentation-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..cd9bbc427f9afacd78c3f4ec6be1f3cf9544c844 --- /dev/null +++ b/build/ci/.documentation-ci.yml @@ -0,0 +1,44 @@ +documentation:pdf: + before_script: + - pwd + image: + name: pandoc/latex + entrypoint: + - '' + stage: documentation + rules: + - changes: + - documentation/design/*.md + script: + - cd documentation/design + - pandoc --filter pandoc-citeproc --bibliography=bibliography.bib --csl=acm-sig-proceedings.csl + --variable papersize=a4paper -s *.md -o documentation.pdf + artifacts: + paths: + - documentation/design/documentation.pdf + +.mdbook_common: &rust + before_script: + - cargo install mdbook + image: + name: rust:latest + stage: documentation + script: + - mdbook build documentation --dest-dir public + cache: + paths: + - /root/.cargo/ + +documentation:static: + rules: + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + artifacts: + paths: + - documentation/public + expire_in: 1 week + <<: *rust + +documentation:test: + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + <<: *rust diff --git a/.ci/.golangci-master.yml b/build/ci/.golangci-config/.golangci-master.yml similarity index 100% rename from .ci/.golangci-master.yml rename to build/ci/.golangci-config/.golangci-master.yml diff --git a/.ci/.golangci.yml b/build/ci/.golangci-config/.golangci.yml similarity index 100% rename from .ci/.golangci.yml rename to build/ci/.golangci-config/.golangci.yml diff --git a/.ci/.runlint.sh b/build/ci/.golangci-config/.runlint.sh similarity index 92% rename from .ci/.runlint.sh rename to build/ci/.golangci-config/.runlint.sh index 224a4061c57de8f914c3fce374ce49f68b3b9062..7b0012a32e7d08ffa9de118104d51f8d129c6aee 100755 --- a/.ci/.runlint.sh +++ b/build/ci/.golangci-config/.runlint.sh @@ -1,4 +1,4 @@ golangci-lint run\ --config .ci/.golangci-master.yml\ --out-format code-climate |\ - jq -r '.[] | "\(.location.path):\(.location.lines.begin) \(.description)"' \ No newline at end of file + jq -r '.[] | "\(.location.path):\(.location.lines.begin) \(.description)"' diff --git a/build/ci/.security-and-compliance-ci.yml b/build/ci/.security-and-compliance-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..3e98b739e62763538a6e6fe0d5bcf9259b91fbbd --- /dev/null +++ b/build/ci/.security-and-compliance-ci.yml @@ -0,0 +1,10 @@ +sast: + variables: + SAST_ANALYZER_IMAGE_TAG: '2' + SAST_EXCLUDED_PATHS: spec, test, tests, tmp + SEARCH_MAX_DEPTH: '4' + +include: + - template: Security/SAST.gitlab-ci.yml + - template: Dependency-Scanning.gitlab-ci.yml + - template: Security/License-Scanning.gitlab-ci.yml diff --git a/gosdn-cli/gosdn-cli.go b/cmd/gosdn-cli/main.go similarity index 99% rename from gosdn-cli/gosdn-cli.go rename to cmd/gosdn-cli/main.go index bc6763c5b5777705815f93144674c4bc3a9dd4fb..7d5fba138033b12362ded30da3c24e7d8adcfecf 100644 --- a/gosdn-cli/gosdn-cli.go +++ b/cmd/gosdn-cli/main.go @@ -1,7 +1,7 @@ package main import ( - pb "code.fbi.h-da.de/cocsn/gosdn/cliInterface" + pb "code.fbi.h-da.de/cocsn/gosdn/api/proto" "code.fbi.h-da.de/cocsn/gosdn/log" "context" "flag" diff --git a/main.go b/cmd/gosdn/main.go similarity index 100% rename from main.go rename to cmd/gosdn/main.go diff --git a/clients.toml b/configs/clients.toml similarity index 100% rename from clients.toml rename to configs/clients.toml diff --git a/gosdn.toml b/configs/gosdn.toml similarity index 71% rename from gosdn.toml rename to configs/gosdn.toml index 7fe3795e751421e29f26eb7e02d9dc3571163a61..26d755b34702b3733efb841a7d0e3148e4d0a30c 100644 --- a/gosdn.toml +++ b/configs/gosdn.toml @@ -1,4 +1,4 @@ #example gosdn.toml CliSocket = "localhost:55055" DatabaseSocket = "bolt://141.100.70.170:7687" -ConfigPath = "./gosdn.toml" \ No newline at end of file +ConfigPath = "./configs/gosdn.toml" diff --git a/database/database.go b/database/client.go similarity index 100% rename from database/database.go rename to database/client.go diff --git a/documentation/SUMMARY.md b/documentation/SUMMARY.md new file mode 100644 index 0000000000000000000000000000000000000000..b528cff5f125ce637633ddfc2de3d8179241c91e --- /dev/null +++ b/documentation/SUMMARY.md @@ -0,0 +1,7 @@ +# goSDN Documentation + +- [Introduction](design/01-introduction.md) +- [Related Work](design/02-related-work.md) +- [Theoretical Background](design/03-theoretical-background.md) +- [Conceptual Design](design/04-conceptual-design.md) +- [Implementation](design/05-implementation.md) \ No newline at end of file diff --git a/documentation/book.toml b/documentation/book.toml new file mode 100644 index 0000000000000000000000000000000000000000..5fc5101df8827a1188fd8c26c6346633e470fcea --- /dev/null +++ b/documentation/book.toml @@ -0,0 +1,10 @@ +[book] +authors = ["Martin Stiemerling", "Manuel Kieweg", "Malte Bauch"] +language = "en" +multilingual = false +src = "." + +[output.html] +git-repository-url = "https://code.fbi.h-da.de/cocsn/gosdn" +git-repository-icon = "fa-gitlab" +site-url = "/public/" \ No newline at end of file diff --git a/nucleus/cli-handling.go b/nucleus/cli-handling.go index 9c5886980801ba10d37d52ae46f7b90bfdad1575..5296e0e001312ef586cbdabec514d5a80f94820b 100644 --- a/nucleus/cli-handling.go +++ b/nucleus/cli-handling.go @@ -7,9 +7,9 @@ package nucleus import ( - pb "code.fbi.h-da.de/cocsn/gosdn/cliInterface" + pb "code.fbi.h-da.de/cocsn/gosdn/api/proto" "code.fbi.h-da.de/cocsn/gosdn/log" - "code.fbi.h-da.de/cocsn/gosdn/restconf/client/ciena" + "code.fbi.h-da.de/cocsn/gosdn/sbi/restconf/client/ciena" "context" "google.golang.org/grpc" "net" diff --git a/nucleus/controller.go b/nucleus/controller.go index f5f0997efec9bb4272b25f7cf4475e0bdbc06f7c..5072dfbbdff572f9026e62a04a8e005c219cc3a0 100644 --- a/nucleus/controller.go +++ b/nucleus/controller.go @@ -4,7 +4,7 @@ import ( "code.fbi.h-da.de/cocsn/gosdn/database" "code.fbi.h-da.de/cocsn/gosdn/log" "code.fbi.h-da.de/cocsn/gosdn/nucleus/interfaces" - "code.fbi.h-da.de/cocsn/gosdn/restconf/client/ciena" + "code.fbi.h-da.de/cocsn/gosdn/sbi/restconf/client/ciena" "github.com/BurntSushi/toml" "os" ) @@ -74,7 +74,7 @@ func (c *Core) Shutdown() { func (c *Core) readControllerConfig(configFileController string) error { if configFileController == "" { - configFileController = "gosdn.toml" + configFileController = "configs/gosdn.toml" } if _, err := os.Stat(configFileController); err != nil { return err @@ -93,7 +93,7 @@ func (c *Core) readControllerConfig(configFileController string) error { func (c *Core) readClientConfig(configFileClient string) error { if configFileClient == "" { - configFileClient = "clients.toml" + configFileClient = "configs/clients.toml" } if _, err := os.Stat(configFileClient); err != nil { return err diff --git a/restconf/client/ciena/client.go b/sbi/restconf/client/ciena/client.go similarity index 98% rename from restconf/client/ciena/client.go rename to sbi/restconf/client/ciena/client.go index 072413d144f5b6db3944cd5984201cf9a02fc3d7..6e9a772c9cd56960e75544578249dbb7cb23aef7 100644 --- a/restconf/client/ciena/client.go +++ b/sbi/restconf/client/ciena/client.go @@ -5,7 +5,7 @@ import ( "code.fbi.h-da.de/cocsn/gosdn/database" "code.fbi.h-da.de/cocsn/gosdn/log" "code.fbi.h-da.de/cocsn/gosdn/nucleus/interfaces" - "code.fbi.h-da.de/cocsn/gosdn/restconf/util" + "code.fbi.h-da.de/cocsn/gosdn/sbi/restconf/util" apiclient "code.fbi.h-da.de/cocsn/swagger/apis/mcp/client" "crypto/tls" "github.com/go-openapi/runtime" diff --git a/restconf/util/unmarshal.go b/sbi/restconf/util/unmarshal.go similarity index 100% rename from restconf/util/unmarshal.go rename to sbi/restconf/util/unmarshal.go