Skip to content

Commit f02cee4

Browse files
committed
code restructuring
1 parent 09d48f0 commit f02cee4

Some content is hidden

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

50 files changed

+14676
-3100
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
*.so
99
*.dylib
1010
bin/
11+
.idea/"
12+
main
1113

1214
# Test binary, built with `go test -c`
1315
*.test

AGENTS.md

Lines changed: 55 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -67,50 +67,89 @@ var _ = Describe("Component Name", func() {
6767
## Key Files & Their Purpose
6868

6969
### Critical Controller Files
70-
- `internal/controller/olsconfig_controller.go` - Main reconciler
71-
- `internal/controller/ols_app_server_reconciliator.go` - App server components (12 tasks)
72-
- `internal/controller/constants.go` - All constant definitions
73-
- `internal/controller/utils.go` - Utility functions
70+
- `internal/controller/olsconfig_controller.go` - Main reconciler orchestrator
71+
- `internal/controller/appserver/reconciler.go` - App server components
72+
- `internal/controller/postgres/reconciler.go` - PostgreSQL database components
73+
- `internal/controller/console/reconciler.go` - Console UI plugin components
74+
- `internal/controller/utils/utils.go` - Shared utilities and constants
7475

7576
### API & Types
7677
- `api/v1alpha1/olsconfig_types.go` - Main CRD struct definitions
7778
- Includes: `LLMSpec`, `OLSSpec`, `DeploymentConfig`, etc.
7879

7980
### Tests to Check
80-
- Unit: `internal/controller/*_test.go`
81-
- E2E: `test/e2e/reconciliation_test.go`, `test/e2e/upgrade_test.go`
81+
- **Unit Tests** (co-located with source):
82+
- `internal/controller/*_test.go` - Main controller tests
83+
- `internal/controller/appserver/*_test.go` - App server component tests
84+
- `internal/controller/postgres/*_test.go` - PostgreSQL component tests
85+
- `internal/controller/console/*_test.go` - Console UI component tests
86+
- `internal/controller/utils/*_test.go` - Utility function tests
87+
- **E2E Tests**: `test/e2e/reconciliation_test.go`, `test/e2e/upgrade_test.go`
88+
- **Test Helpers**: `internal/controller/utils/test_helpers.go`
8289

8390
## Common Tasks & Patterns
8491

8592
### Adding New Reconciliation Step
86-
1. Add to `ReconcileTask` slice in `reconcileAppServer()`
87-
2. Implement `reconcile<NewComponent>()` method
88-
3. Add constants to `constants.go`
93+
94+
**For App Server Components:**
95+
1. Add to `ReconcileTask` slice in `internal/controller/appserver/reconciler.go`
96+
2. Implement `reconcile<NewComponent>()` function in appropriate file
97+
3. Add constants to `internal/controller/utils/utils.go`
8998
4. Add error constants with `Err<Action><Component>` pattern
90-
5. Write unit tests in `*_test.go`
99+
5. Write unit tests in `internal/controller/appserver/*_test.go`
100+
101+
**For New Top-Level Components:**
102+
1. Create new package under `internal/controller/<component>/`
103+
2. Implement `Reconcile<Component>()` function accepting `reconciler.Reconciler`
104+
3. Add reconciliation step to `olsconfig_controller.go`
105+
4. Create test suite with `suite_test.go` and component tests
106+
5. Use shared test helpers from `utils/test_helpers.go`
91107

92108
### Resource Generation Pattern
93109
```go
94-
func (r *OLSConfigReconciler) reconcile<Resource>(ctx context.Context, cr *olsv1alpha1.OLSConfig) error {
95-
resource, err := r.generate<Resource>(cr)
110+
func reconcile<Resource>(r reconciler.Reconciler, ctx context.Context, cr *olsv1alpha1.OLSConfig) error {
111+
resource, err := generate<Resource>(r, cr)
96112
if err != nil {
97-
return fmt.Errorf("%s: %w", Err<Action><Resource>, err)
113+
return fmt.Errorf("%s: %w", utils.Err<Action><Resource>, err)
98114
}
99115

100116
found := &<ResourceType>{}
101-
err = r.Get(ctx, client.ObjectKey{Name: <name>, Namespace: r.Options.Namespace}, found)
117+
err = r.Get(ctx, client.ObjectKey{Name: <name>, Namespace: r.GetNamespace()}, found)
102118
if err != nil && errors.IsNotFound(err) {
103-
r.logger.Info("creating new <resource>", "<resource>", resource.Name)
119+
r.GetLogger().Info("creating new <resource>", "<resource>", resource.Name)
104120
return r.Create(ctx, resource)
105121
} else if err != nil {
106-
return fmt.Errorf("%s: %w", ErrGet<Resource>, err)
122+
return fmt.Errorf("%s: %w", utils.ErrGet<Resource>, err)
107123
}
108124

109125
// Update logic if needed
110126
return nil
111127
}
112128
```
113129

130+
### Testing Pattern
131+
```go
132+
// In suite_test.go
133+
var _ = Describe("<Component> Name", func() {
134+
It("should describe expected behavior", func() {
135+
// Arrange - Create test resources
136+
cr := utils.GetDefaultOLSConfigCR()
137+
138+
// Act - Call reconciliation function
139+
err := Reconcile<Component>(testReconcilerInstance, ctx, cr)
140+
141+
// Assert with Gomega matchers
142+
Expect(err).NotTo(HaveOccurred())
143+
144+
// Verify resource was created
145+
resource := &<ResourceType>{}
146+
err = testReconcilerInstance.Get(ctx, client.ObjectKey{...}, resource)
147+
Expect(err).NotTo(HaveOccurred())
148+
Expect(resource.Spec.Field).To(Equal(expectedValue))
149+
})
150+
})
151+
```
152+
114153
## Dependencies & Tools
115154

116155
### Core Dependencies

0 commit comments

Comments
 (0)