Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
9a2b3f6
feat(dhei-20905): api and gen for dds
valenok4000 Jun 29, 2026
9cc7467
feat(dhei-20905): add info for exposure and subs
valenok4000 Jun 30, 2026
5e4f0ad
feat(dhei-20905): add copyright header
valenok4000 Jun 30, 2026
c33ed13
feat(dhei-20905): delete memeories dds from OS
valenok4000 Jun 30, 2026
360fc12
feat(dhei-20905): add mapping for FileExposure and FileSubscription a…
valenok4000 Jul 1, 2026
a5ba5da
feat(dhei-20905): add webhook and validation for file types
valenok4000 Jul 1, 2026
9361abd
feat(dhei-20905): change config/feature comment
valenok4000 Jul 3, 2026
4fa6383
feat(dhei-20905): file domain exp/subs handler
valenok4000 Jul 3, 2026
cfc8343
feat(dhei-20905): fix comments of PR
valenok4000 Jul 6, 2026
a8ce3f6
feat(dhei-20905): add tests and info files
valenok4000 Jul 8, 2026
b79a651
feat(dhei-20905): move public keys to the sftp lvl of the file domain…
valenok4000 Jul 17, 2026
924b7cc
feat(sftp integration): dhei-20905 delete . "github.com/onsi/gomega…
valenok4000 Jul 22, 2026
0117241
feat(sftp integration): fix hardcoded approval strategy
valenok4000 Jul 23, 2026
9c10b72
feat(sftp integration): delete the variant proccessing
valenok4000 Jul 24, 2026
7bab199
feat(sftp integration): delete the variant proccessing
valenok4000 Jul 24, 2026
bb0e344
owner name normalization
valenok4000 Jul 24, 2026
2e1c050
Merge branch 'main' into feat/ar-dds-integration-dhei-20905
valenok4000 Jul 27, 2026
d0c6eb3
backmerge from main
valenok4000 Jul 27, 2026
ebf66cb
Merge branch 'main' into feat/ar-dds-integration-dhei-20905
valenok4000 Aug 3, 2026
56d19fb
fix the conditional block
valenok4000 Aug 3, 2026
1e098e6
add tests for coverage
valenok4000 Aug 3, 2026
661c1a8
add tests
valenok4000 Aug 4, 2026
d02a25f
add tests
valenok4000 Aug 4, 2026
85e967d
feat(rover): lint fix
valenok4000 Aug 4, 2026
a919ca5
Merge branch 'main' into feat/ar-dds-integration-dhei-20905
valenok4000 Aug 4, 2026
7bac2f9
feat: fix failing tests
valenok4000 Aug 4, 2026
ee6e844
feat: sum forgotten
valenok4000 Aug 4, 2026
dbd17cd
feat: add test file add header
valenok4000 Aug 4, 2026
c805a59
feat: add test file
valenok4000 Aug 4, 2026
e67fe8c
feat: enable file feature
valenok4000 Aug 5, 2026
c3a0d8a
Merge branch 'main' into feat/ar-dds-integration-dhei-20905
valenok4000 Aug 6, 2026
0c2cd81
feat: add/modify tests
valenok4000 Aug 6, 2026
eb28a5f
feat: back reuse compl
valenok4000 Aug 6, 2026
8b801e8
feat: changed rbac group name
valenok4000 Aug 6, 2026
e2571cf
feat: restore deleted files to make compilation success
valenok4000 Aug 7, 2026
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
1 change: 1 addition & 0 deletions common/pkg/config/feature.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ var (
FeatureSecretManager Feature = NewFeature("secret_manager", true) // Secret Manager feature enabled by default
FeatureFileManager Feature = NewFeature("file_manager", true) // File Manager feature enabled by default
FeatureAiGateway Feature = NewFeature("ai_gateway", false) // AI Gateway (MCP) feature disabled by default
FeatureFile Feature = NewFeature("file", true)
)

// SetFeatureEnabled sets the enabled state for a feature. Intended for tests.
Expand Down
16 changes: 16 additions & 0 deletions docs/docs/architecture/rover.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,26 @@ Users interact with the Rover domain through three paths:
- **Application domain** — Creates Application resources.
- **API domain** — Creates Api, ApiExposure, and ApiSubscription resources.
- **Event domain** — Creates EventExposure and EventSubscription resources.
- **File domain (SFTP)** — Creates the SFTP user (shared space) from a `FileSpecification` and registers producer/consumer SSH public keys for `fileType` exposures and subscriptions. Gated behind the `file` feature flag.
- **Gateway domain** — Configures traffic management settings.
- **Identity domain** — Configures authentication settings.
- **Approval domain** — Integrates approval requirements for exposures.

## File Types (SFTP)

Rover can configure an external SFTP file-transfer service without changing the customer-facing Rover file:

- A `FileSpecification` (`metadata.name` must equal `spec.type`) provisions an SFTP user with a default shared space.
- A `fileType` **exposure** (producer) or **subscription** (consumer) with `variant: sftp` and one or more `publicKeys` registers those SSH keys on the matching SFTP user.

Validation rules enforced by the Rover webhook:

- `fileType` exposures/subscriptions are only allowed on the `cetus` and `canis` zones.
- `variant: sftp` is optional.
- At least one public key is required; both the key `label` and `key` value must be unique per `fileType`.

Because file transfer happens directly over SFTP, a Rover that only exposes/subscribes to file types yields a **logical** Application (`needsClient` and `needsConsumer` are `false`). If the same Rover also has an API or event subscription, a client is still required.

## Related Pages

- [User Journey: Onboarding](../user-journey/onboarding.md)
Expand Down
74 changes: 74 additions & 0 deletions file/api/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
// Copyright 2026 Deutsche Telekom IT GmbH
//
// SPDX-License-Identifier: Apache-2.0

module github.com/telekom/controlplane/file/api

go 1.26.5

require (
github.com/onsi/ginkgo/v2 v2.32.0
github.com/onsi/gomega v1.42.1
github.com/telekom/controlplane/common v0.0.0
k8s.io/apiextensions-apiserver v0.36.2
k8s.io/apimachinery v0.36.2
sigs.k8s.io/controller-runtime v0.24.1
)

require (
github.com/Masterminds/semver/v3 v3.4.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/emicklei/go-restful/v3 v3.13.0 // indirect
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
github.com/fsnotify/fsnotify v1.9.0 // indirect
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/go-logr/logr v1.4.3 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.20.2 // indirect
github.com/go-openapi/swag v0.23.0 // indirect
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
github.com/google/gnostic-models v0.7.0 // indirect
github.com/google/go-cmp v0.7.0 // indirect
github.com/google/pprof v0.0.0-20260402051712-545e8a4df936 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/sagikazarmark/locafero v0.12.0 // indirect
github.com/spf13/afero v1.15.0 // indirect
github.com/spf13/cast v1.10.0 // indirect
github.com/spf13/pflag v1.0.10 // indirect
github.com/spf13/viper v1.21.0 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/x448/float16 v0.8.4 // indirect
go.yaml.in/yaml/v2 v2.4.4 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/mod v0.38.0 // indirect
golang.org/x/net v0.56.0 // indirect
golang.org/x/oauth2 v0.36.0 // indirect
golang.org/x/sync v0.21.0 // indirect
golang.org/x/sys v0.46.0 // indirect
golang.org/x/term v0.44.0 // indirect
golang.org/x/text v0.39.0 // indirect
golang.org/x/time v0.15.0 // indirect
golang.org/x/tools v0.47.0 // indirect
google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/api v0.36.2 // indirect
k8s.io/client-go v0.36.2 // indirect
k8s.io/klog/v2 v2.140.0 // indirect
k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a // indirect
k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 // indirect
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
sigs.k8s.io/randfill v1.0.0 // indirect
sigs.k8s.io/structured-merge-diff/v6 v6.3.2 // indirect
sigs.k8s.io/yaml v1.6.0 // indirect
)

replace github.com/telekom/controlplane/common => ../../common
Loading