From 639fb8c969548f51570adcebd047e0ff90f803b4 Mon Sep 17 00:00:00 2001 From: MartinDotNet Date: Mon, 15 Jan 2024 15:41:58 +0000 Subject: [PATCH] Refactoring code layout --- .github/workflows/build.yml | 4 +- README.md | 5 +-- cmd/configgenerator/component_mapping.go | 18 +++++++++ .../configgenerator}/component_mapping.yaml | 3 -- {src => cmd/configgenerator}/main.go | 3 +- {src => cmd/configgenerator}/ocb_config.go | 4 +- .../mappinggenerator}/main.go | 38 +++++++------------ mappinggenerator/go.mod => go.mod | 3 +- mappinggenerator/go.sum => go.sum | 3 ++ go.work | 6 --- .../collectorconfig}/collector_config.go | 14 +++---- .../configmapping/mapping_file.go | 19 +--------- src/dist.yaml | 16 -------- src/go.mod | 9 ----- src/go.sum | 10 ----- test/Dockerfile | 2 +- 16 files changed, 55 insertions(+), 102 deletions(-) create mode 100644 cmd/configgenerator/component_mapping.go rename {src => cmd/configgenerator}/component_mapping.yaml (99%) rename {src => cmd/configgenerator}/main.go (83%) rename {src => cmd/configgenerator}/ocb_config.go (86%) rename {mappinggenerator => cmd/mappinggenerator}/main.go (71%) rename mappinggenerator/go.mod => go.mod (93%) rename mappinggenerator/go.sum => go.sum (97%) delete mode 100644 go.work rename {src => pkg/collectorconfig}/collector_config.go (85%) rename src/component_mapping.go => pkg/configmapping/mapping_file.go (74%) delete mode 100644 src/dist.yaml delete mode 100644 src/go.mod delete mode 100644 src/go.sum diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7cae8dd..9207d47 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,10 +22,10 @@ jobs: go-version: 1.21 - name: Run mapping generator - run: cd mappinggenerator && go run main.go + run: go run cmd/mappinggenerator/main.go - name: Build config generator - run: go build -o docker-build/ocbconfigbuilder src/*.go + run: go build -o docker-build/ocbconfigbuilder cmd/configgenerator/*.go - name: Build Docker image run: docker build -f docker-build/Dockerfile --tag ghcr.io/${{ github.repository }}:latest docker-build/ diff --git a/README.md b/README.md index 91f1751..7e22f4a 100644 --- a/README.md +++ b/README.md @@ -47,14 +47,13 @@ This will result in a custom image that has the config file embedded inside, how To regenerate the mappings ```shell -cd mappinggenerator -go run main.go +go run cmd/mappinggenerator/* ``` To build the configbuilder ```shell -go build -o docker-build/ocbconfigbuilder src/*.go +go build -o docker-build/ocbconfigbuilder cmd/configgenerator/*.go ``` To build the container image locally diff --git a/cmd/configgenerator/component_mapping.go b/cmd/configgenerator/component_mapping.go new file mode 100644 index 0000000..a63f261 --- /dev/null +++ b/cmd/configgenerator/component_mapping.go @@ -0,0 +1,18 @@ +package main + +import ( + "embed" + + "github.com/martinjt/ocb-config-builder/pkg/configmapping" + "gopkg.in/yaml.v3" +) + +//go:embed component_mapping.yaml +var componentMappingFile embed.FS + +func getComponentMapping() configmapping.ComponentMappingFile { + componentMappingBytes, _ := componentMappingFile.ReadFile("component_mapping.yaml") + var componentMapping configmapping.ComponentMappingFile + yaml.Unmarshal(componentMappingBytes, &componentMapping) + return componentMapping +} diff --git a/src/component_mapping.yaml b/cmd/configgenerator/component_mapping.yaml similarity index 99% rename from src/component_mapping.yaml rename to cmd/configgenerator/component_mapping.yaml index 3d3d3a2..f3dd221 100644 --- a/src/component_mapping.yaml +++ b/cmd/configgenerator/component_mapping.yaml @@ -562,9 +562,6 @@ exporters: syslog: github_url: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/syslogexporter version: 0.90.1 - tanzuobservability: - github_url: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/tanzuobservabilityexporter - version: 0.90.1 tencentcloud_logservice: github_url: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/tencentcloudlogserviceexporter version: 0.90.1 diff --git a/src/main.go b/cmd/configgenerator/main.go similarity index 83% rename from src/main.go rename to cmd/configgenerator/main.go index 2198cbd..e944057 100644 --- a/src/main.go +++ b/cmd/configgenerator/main.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/jessevdk/go-flags" + "github.com/martinjt/ocb-config-builder/pkg/collectorconfig" ) var opts struct { @@ -14,7 +15,7 @@ var opts struct { func main() { flags.Parse(&opts) - requiredComponents, err := getRequiredComponentsFromCollectorConfig(opts.InputConfig) + requiredComponents, err := collectorconfig.GetRequiredComponentsFromCollectorConfig(opts.InputConfig) if err != nil { fmt.Println(err) return diff --git a/src/ocb_config.go b/cmd/configgenerator/ocb_config.go similarity index 86% rename from src/ocb_config.go rename to cmd/configgenerator/ocb_config.go index cf17159..fe029f5 100644 --- a/src/ocb_config.go +++ b/cmd/configgenerator/ocb_config.go @@ -3,6 +3,8 @@ package main import ( "os" + "github.com/martinjt/ocb-config-builder/pkg/collectorconfig" + "github.com/martinjt/ocb-config-builder/pkg/configmapping" "gopkg.in/yaml.v3" ) @@ -26,7 +28,7 @@ type ModulePath struct { GoMod string `yaml:"gomod"` } -func (config *ocbConfig) addComponent(components requiredComponents, componentMapping ComponentMappingFile) { +func (config *ocbConfig) addComponent(components collectorconfig.RequiredComponents, componentMapping configmapping.ComponentMappingFile) { for _, v := range components.Receivers { config.Receivers = append(config.Receivers, ModulePath{GoMod: componentMapping.GetConfigType("receiver", v)}) } diff --git a/mappinggenerator/main.go b/cmd/mappinggenerator/main.go similarity index 71% rename from mappinggenerator/main.go rename to cmd/mappinggenerator/main.go index f50fd5a..ab9f3e7 100644 --- a/mappinggenerator/main.go +++ b/cmd/mappinggenerator/main.go @@ -9,6 +9,7 @@ import ( git "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/plumbing/object" "github.com/go-git/go-git/v5/storage/memory" + "github.com/martinjt/ocb-config-builder/pkg/configmapping" "gopkg.in/yaml.v3" ) @@ -16,19 +17,6 @@ type Metadata struct { ConfigType string `yaml:"type"` } -type ComponentMapping struct { - GithubUrl string `yaml:"github_url"` - Version string `yaml:"version"` -} - -type ComponentMappingFile struct { - Receivers map[string]ComponentMapping `yaml:"receivers"` - Processors map[string]ComponentMapping `yaml:"processors"` - Exporters map[string]ComponentMapping `yaml:"exporters"` - Extensions map[string]ComponentMapping `yaml:"extensions"` - Connectors map[string]ComponentMapping `yaml:"connectors"` -} - func main() { r, err := git.Clone(memory.NewStorage(), nil, &git.CloneOptions{ @@ -61,8 +49,8 @@ func main() { receivers := getCoreReceiverMapping() processors := getCoreProcessorMapping() exporters := getCoreExporterMapping() - extensions := make(map[string]ComponentMapping) - connectors := make(map[string]ComponentMapping) + extensions := make(map[string]configmapping.ComponentMapping) + connectors := make(map[string]configmapping.ComponentMapping) tree.Files().ForEach(func(f *object.File) error { if filepath.Base(f.Name) == "metadata.yaml" { @@ -76,7 +64,7 @@ func main() { yaml.Unmarshal([]byte(metadataContents), &metadata) - componentMapping := ComponentMapping{ + componentMapping := configmapping.ComponentMapping{ GithubUrl: "github.com/open-telemetry/opentelemetry-collector-contrib/" + componentType + "/" + componentDir, Version: "0.90.1", } @@ -93,13 +81,13 @@ func main() { case "connector": connectors[metadata.ConfigType] = componentMapping default: - fmt.Println("Unknown component type: " + componentType) + fmt.Println("Unknown component type: " + componentType + "Filename: " + f.Name) } } return nil }) - config := ComponentMappingFile{ + config := configmapping.ComponentMappingFile{ Receivers: receivers, Processors: processors, Exporters: exporters, @@ -109,11 +97,11 @@ func main() { configBytes, _ := yaml.Marshal(&config) - os.WriteFile("../src/component_mapping.yaml", configBytes, 0644) + os.WriteFile("cmd/configgenerator/component_mapping.yaml", configBytes, 0644) } -func getCoreProcessorMapping() map[string]ComponentMapping { - return map[string]ComponentMapping{ +func getCoreProcessorMapping() map[string]configmapping.ComponentMapping { + return map[string]configmapping.ComponentMapping{ "batch": { GithubUrl: "go.opentelemetry.io/collector/processor/batchprocessor", Version: "0.90.1", @@ -121,8 +109,8 @@ func getCoreProcessorMapping() map[string]ComponentMapping { } } -func getCoreExporterMapping() map[string]ComponentMapping { - return map[string]ComponentMapping{ +func getCoreExporterMapping() map[string]configmapping.ComponentMapping { + return map[string]configmapping.ComponentMapping{ "logging": { GithubUrl: "go.opentelemetry.io/collector/exporter/loggingexporter", Version: "0.90.1", @@ -138,8 +126,8 @@ func getCoreExporterMapping() map[string]ComponentMapping { } } -func getCoreReceiverMapping() map[string]ComponentMapping { - return map[string]ComponentMapping{ +func getCoreReceiverMapping() map[string]configmapping.ComponentMapping { + return map[string]configmapping.ComponentMapping{ "otlp": { GithubUrl: "go.opentelemetry.io/collector/receiver/otlpreceiver", Version: "0.90.1", diff --git a/mappinggenerator/go.mod b/go.mod similarity index 93% rename from mappinggenerator/go.mod rename to go.mod index aa5be7d..b709361 100644 --- a/mappinggenerator/go.mod +++ b/go.mod @@ -1,9 +1,10 @@ -module mappinggenerator +module github.com/martinjt/ocb-config-builder go 1.21.5 require ( github.com/go-git/go-git/v5 v5.11.0 + github.com/jessevdk/go-flags v1.5.0 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/mappinggenerator/go.sum b/go.sum similarity index 97% rename from mappinggenerator/go.sum rename to go.sum index e537099..c097717 100644 --- a/mappinggenerator/go.sum +++ b/go.sum @@ -37,6 +37,8 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc= +github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -98,6 +100,7 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/go.work b/go.work deleted file mode 100644 index 946eb46..0000000 --- a/go.work +++ /dev/null @@ -1,6 +0,0 @@ -go 1.21.5 - -use ( - ./mappinggenerator - ./src -) diff --git a/src/collector_config.go b/pkg/collectorconfig/collector_config.go similarity index 85% rename from src/collector_config.go rename to pkg/collectorconfig/collector_config.go index 1cdd486..8a94f94 100644 --- a/src/collector_config.go +++ b/pkg/collectorconfig/collector_config.go @@ -1,4 +1,4 @@ -package main +package collectorconfig import ( "os" @@ -8,7 +8,7 @@ import ( "gopkg.in/yaml.v3" ) -type collectorConfigFile struct { +type CollectorConfigFile struct { Receivers map[string]interface{} `yaml:"receivers"` Processors map[string]interface{} `yaml:"processors"` Exporters map[string]interface{} `yaml:"exporters"` @@ -16,7 +16,7 @@ type collectorConfigFile struct { Connectors map[string]interface{} `yaml:"connectors"` } -type requiredComponents struct { +type RequiredComponents struct { Receivers []string Processors []string Exporters []string @@ -24,19 +24,19 @@ type requiredComponents struct { Connectors []string } -func getRequiredComponentsFromCollectorConfig(filename string) (requiredComponents, error) { +func GetRequiredComponentsFromCollectorConfig(filename string) (RequiredComponents, error) { bytes, err := os.ReadFile(filename) if err != nil { - return requiredComponents{}, err + return RequiredComponents{}, err } - var data collectorConfigFile + var data CollectorConfigFile // Unmarshal the YAML string into the data map yaml.Unmarshal(bytes, &data) - requiredComponents := requiredComponents{} + requiredComponents := RequiredComponents{} for k := range data.Receivers { requiredComponents.Receivers = append(requiredComponents.Receivers, getType(k)) diff --git a/src/component_mapping.go b/pkg/configmapping/mapping_file.go similarity index 74% rename from src/component_mapping.go rename to pkg/configmapping/mapping_file.go index fdb3f08..b7b9df3 100644 --- a/src/component_mapping.go +++ b/pkg/configmapping/mapping_file.go @@ -1,11 +1,6 @@ -package main +package configmapping -import ( - "embed" - "fmt" - - "gopkg.in/yaml.v3" -) +import "fmt" type ComponentMapping struct { GithubUrl string `yaml:"github_url"` @@ -20,16 +15,6 @@ type ComponentMappingFile struct { Connectors map[string]ComponentMapping `yaml:"connectors"` } -//go:embed component_mapping.yaml -var componentMappingFile embed.FS - -func getComponentMapping() ComponentMappingFile { - componentMappingBytes, _ := componentMappingFile.ReadFile("component_mapping.yaml") - var componentMapping ComponentMappingFile - yaml.Unmarshal(componentMappingBytes, &componentMapping) - return componentMapping -} - func (c *ComponentMappingFile) GetConfigType(componentType string, componentTypeName string) string { var component ComponentMapping var found bool = false diff --git a/src/dist.yaml b/src/dist.yaml deleted file mode 100644 index 15418ae..0000000 --- a/src/dist.yaml +++ /dev/null @@ -1,16 +0,0 @@ -dist: - name: otelcol-custom - description: Custom distribution of the OpenTelemetry Collector - version: 0.90.1 - otelcol_version: 0.90.1 -extensions: - - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension 0.90.1 - - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/headerssetterextension 0.90.1 -receivers: - - gomod: github.com/open-telemetry/opentelemetry-collector/receiver/otlpreceiver 0.90.1 -processors: - - gomod: github.com/open-telemetry/opentelemetry-collector/processor/batchprocessor 0.90.1 - - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor 0.90.1 -exporters: - - gomod: github.com/open-telemetry/opentelemetry-collector/exporter/otlpexporter 0.90.1 -connectors: [] diff --git a/src/go.mod b/src/go.mod deleted file mode 100644 index c3b623c..0000000 --- a/src/go.mod +++ /dev/null @@ -1,9 +0,0 @@ -module collector-config-parser - -go 1.21.5 - -require ( - github.com/jessevdk/go-flags v1.5.0 // indirect - golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect -) diff --git a/src/go.sum b/src/go.sum deleted file mode 100644 index bbf142b..0000000 --- a/src/go.sum +++ /dev/null @@ -1,10 +0,0 @@ -github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc= -github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4 h1:EZ2mChiOa8udjfp6rRmswTbtZN/QzUQp4ptM4rnjHvc= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/test/Dockerfile b/test/Dockerfile index dd4f8d8..8e1336a 100644 --- a/test/Dockerfile +++ b/test/Dockerfile @@ -1,4 +1,4 @@ -FROM local/simple-collector-builder:0.90.1 as build +FROM local/simple-collector-builder:0.90.1-0.1 as build COPY config-test.yaml /config/config.yaml RUN /builder/build-collector.sh /config/config.yaml