Skip to content

Commit 4972be7

Browse files
Added output flags for controller and translation layers
1 parent f8bb803 commit 4972be7

File tree

639 files changed

+259848
-12
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

639 files changed

+259848
-12
lines changed

tools/scaffolder/cmd/main.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ import (
99
)
1010

1111
var (
12-
inputPath string
13-
crdKind string
14-
listCRDs bool
12+
inputPath string
13+
crdKind string
14+
listCRDs bool
15+
controllerOutDir string
16+
translationOutDir string
1517
)
1618

1719
func main() {
@@ -27,13 +29,15 @@ func main() {
2729
return generate.PrintCRDs(inputPath)
2830
}
2931

30-
return generate.FromConfig(inputPath, crdKind)
32+
return generate.FromConfig(inputPath, crdKind, controllerOutDir, translationOutDir)
3133
},
3234
}
3335

3436
rootCmd.Flags().StringVar(&inputPath, "input", "", "Path to openapi2crd result.yaml file (required)")
3537
rootCmd.Flags().StringVar(&crdKind, "crd", "", "CRD kind to generate controller for")
3638
rootCmd.Flags().BoolVar(&listCRDs, "list", false, "List available CRDs from result file")
39+
rootCmd.Flags().StringVar(&controllerOutDir, "controller-out", "", "Output directory for controller files (default: ../mongodb-atlas-kubernetes/internal/controller)")
40+
rootCmd.Flags().StringVar(&translationOutDir, "translation-out", "", "Output directory for translation files (default: ../mongodb-atlas-kubernetes/internal/translation)")
3741

3842
if err := rootCmd.Execute(); err != nil {
3943
fmt.Fprintf(os.Stderr, "Error: %v\n", err)

tools/scaffolder/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
// github.com/josvazg/crd2go v0.0.0-00010101000000-000000000000
1010
github.com/spf13/cobra v1.10.1
1111
gopkg.in/yaml.v3 v3.0.1
12-
k8s.io/apimachinery v0.34.1
12+
k8s.io/apimachinery v0.34.1 // indirect
1313
)
1414

1515
require k8s.io/apiextensions-apiserver v0.34.1

tools/scaffolder/internal/generate/controller.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,26 @@ const (
2828
)
2929

3030
// FromConfig generates controllers and handlers based on the parsed CRD result file
31-
func FromConfig(resultPath, crdKind string) error {
31+
func FromConfig(resultPath, crdKind, controllerOutDir, translationOutDir string) error {
3232
parsedConfig, err := ParseCRDConfig(resultPath, crdKind)
3333
if err != nil {
3434
return err
3535
}
3636

3737
resourceName := parsedConfig.ResourceName
38-
baseControllerDir := filepath.Join("..", "mongodb-atlas-kubernetes", "internal", "controller", strings.ToLower(resourceName))
38+
39+
// Set default directories if not provided
40+
if controllerOutDir == "" {
41+
controllerOutDir = filepath.Join("..", "mongodb-atlas-kubernetes", "internal", "controller")
42+
}
43+
if translationOutDir == "" {
44+
translationOutDir = filepath.Join("..", "mongodb-atlas-kubernetes", "internal", "translation")
45+
}
46+
47+
baseControllerDir := filepath.Join(controllerOutDir, strings.ToLower(resourceName))
3948

4049
// Generate translation layers for all mappings
41-
if err := GenerateTranslationLayers(resourceName, parsedConfig.Mappings); err != nil {
50+
if err := GenerateTranslationLayers(resourceName, parsedConfig.Mappings, translationOutDir); err != nil {
4251
return fmt.Errorf("failed to generate translation layers: %w", err)
4352
}
4453

tools/scaffolder/internal/generate/translation.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,19 @@ import (
2424
)
2525

2626
// GenerateTranslationLayers generates translation layers for all mappings
27-
func GenerateTranslationLayers(resourceName string, mappings []MappingWithConfig) error {
27+
func GenerateTranslationLayers(resourceName string, mappings []MappingWithConfig, translationOutDir string) error {
2828
for _, mapping := range mappings {
2929
versionSuffix := mapping.Version
30-
if err := generateTranslationLayerWithVersion(resourceName, versionSuffix, mapping.OpenAPIConfig.Package); err != nil {
30+
if err := generateTranslationLayerWithVersion(resourceName, versionSuffix, mapping.OpenAPIConfig.Package, translationOutDir); err != nil {
3131
return fmt.Errorf("failed to generate translation layer for version %s: %w", versionSuffix, err)
3232
}
3333
}
3434
return nil
3535
}
3636

37-
func generateTranslationLayerWithVersion(resourceName, versionSuffix, sdkPackage string) error {
37+
func generateTranslationLayerWithVersion(resourceName, versionSuffix, sdkPackage, translationOutDir string) error {
3838
packageName := strings.ToLower(resourceName) + versionSuffix
39-
translationDir := filepath.Join("..", "mongodb-atlas-kubernetes", "internal", "translation", packageName)
39+
translationDir := filepath.Join(translationOutDir, packageName)
4040

4141
if err := os.MkdirAll(translationDir, 0755); err != nil {
4242
return fmt.Errorf("failed to create translation directory: %w", err)
@@ -201,6 +201,7 @@ func GetAtlasAPIForCRD(crdKind string) (string, error) {
201201
"StreamInstance": "StreamsApi",
202202
"PrivateEndpoint": "PrivateEndpointServicesApi",
203203
"NetworkPeering": "NetworkPeeringApi",
204+
"NetworkPeeringConnection": "NetworkPeeringApi",
204205
"NetworkContainer": "NetworkPeeringApi",
205206
"IPAccessList": "ProjectIPAccessListApi",
206207
"CustomRole": "CustomDatabaseRolesApi",

tools/scaffolder/vendor/github.com/dave/jennifer/LICENSE

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tools/scaffolder/vendor/github.com/dave/jennifer/jen/add.go

Lines changed: 19 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tools/scaffolder/vendor/github.com/dave/jennifer/jen/comments.go

Lines changed: 108 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tools/scaffolder/vendor/github.com/dave/jennifer/jen/custom.go

Lines changed: 61 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tools/scaffolder/vendor/github.com/dave/jennifer/jen/dict.go

Lines changed: 81 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)