Skip to content

Create platform-service-template repository #520

@maximiliantech

Description

@maximiliantech

Understand the Task

Create a platform-service-template repository with a CLI generator, mirroring the existing service-provider-template.

Problem

Contributors wanting to build Platform Services must start from scratch or copy existing platform services manually. The service-provider-template provides:

  • CLI generator for scaffolding
  • Standard project structure
  • E2E testing setup
  • Best practices baked in

Platform Services need the same.

Proposed Implementation

1. Repository Setup

  • Fork/adapt structure from service-provider-template
  • Adjust for Platform Service patterns

2. CLI Generator (cmd/template)

  • Generate scaffolding for a new Platform Service
  • Flags similar to service-provider-template:
    • -module: Go module path
    • -kind: Config CRD kind name (e.g., GatewayServiceConfig)
    • -group: API group prefix
    • -v: Generate with sample code

3. Generated Structure

├── api/
│   └── v1alpha1/
│       └── <kind>_types.go     # Custom config CRD
├── internal/
│   └── controller/
│       └── reconciler.go       # Main reconciler
├── cmd/
│   └── main.go
├── Dockerfile
├── Taskfile.yaml
└── README.md

4. Key Differences from Service Provider Template

  • No ServiceProviderAPI — Platform Services use PlatformService resource directly
  • Custom config CRD pattern (like GatewayServiceConfig)
  • Platform cluster focused (not MCP cluster)
  • Different RBAC patterns

5. Testing Setup

  • Integration with openmcp-testing
  • Local development workflow

Acceptance Criteria

  • Repository created at openmcp-project/platform-service-template
  • CLI generator working (go run ./cmd/template -h)
  • Generated code compiles and runs
  • E2E test setup included
  • README with usage instructions
  • At least one example Platform Service generated and tested

Parent Epic

Part of #514 (Enable Platform Service contributions)

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/taskGeneral task that needs to be done.sig/extensibilityAll topics related to special interests group openMCP extensibility

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions