Documentation
¶
Index ¶
- Variables
- func EmptyResponse() *proto.GeneratorResponse
- func KubernetesResourceID(typeMeta metav1.TypeMeta, objectMeta metav1.ObjectMeta) string
- func TerraformProviderExtensions(providerCfg v1.ProviderConfig, providerMeta map[string]any, resType string) (map[string]any, error)
- func TerraformProviderRegion(providerCfg v1.ProviderConfig) string
- func TerraformResourceID(providerCfg v1.ProviderConfig, resType, resName string) (string, error)
- func UniqueAppLabels(projectName, appName string) map[string]string
- func UniqueAppName(projectName, stackName, appName string) string
- func WrapK8sResourceToKusionResource(id string, resource any) (*v1.Resource, error)
- func WrapTFResourceToKusionResource(id string, attributes, extensions map[string]any, denpendsOn []string) (*v1.Resource, error)
- type FrameworkModule
- type FrameworkModuleWrapper
- type GeneratorRequest
- type GeneratorResponse
Constants ¶
This section is empty.
Variables ¶
var ErrEmptyTFProviderVersion = errors.New("empty terraform provider version")
Functions ¶
func EmptyResponse ¶
func EmptyResponse() *proto.GeneratorResponse
EmptyResponse represents a legal but empty response. Interfaces should return an EmptyResponse instead of nil when the response is empty
func KubernetesResourceID ¶
func KubernetesResourceID(typeMeta metav1.TypeMeta, objectMeta metav1.ObjectMeta) string
KubernetesResourceID returns the unique ID of a Kubernetes resource based on its type and metadata.
func TerraformProviderExtensions ¶
func TerraformProviderExtensions(providerCfg v1.ProviderConfig, providerMeta map[string]any, resType string, ) (map[string]any, error)
TerraformProviderExtensions returns the Kusion resource extension of the Terraform provider.
func TerraformProviderRegion ¶
func TerraformProviderRegion(providerCfg v1.ProviderConfig) string
TerraformProviderRegion returns the resource region from the Terraform provider configs.
func TerraformResourceID ¶
func TerraformResourceID(providerCfg v1.ProviderConfig, resType, resName string) (string, error)
TerraformResourceID returns the Kusion resource ID of the Terraform resource.
func UniqueAppLabels ¶
UniqueAppLabels returns a map of labels that identify an app based on its project and name.
func UniqueAppName ¶
UniqueAppName returns a unique name for a workload based on its project and app name.
Types ¶
type FrameworkModule ¶
type FrameworkModule interface {
Generate(ctx context.Context, req *GeneratorRequest) (*GeneratorResponse, error)
}
type FrameworkModuleWrapper ¶
type FrameworkModuleWrapper struct {
// Module is the actual FrameworkModule implemented by platform engineers
Module FrameworkModule
}
FrameworkModuleWrapper is a module that implements the proto Module interface. It wraps a dev-centric FrameworkModule into a proto Module
func (*FrameworkModuleWrapper) Generate ¶
func (f *FrameworkModuleWrapper) Generate(ctx context.Context, req *proto.GeneratorRequest) (*proto.GeneratorResponse, error)
type GeneratorRequest ¶
type GeneratorRequest struct {
// Project represents the project name
Project string `json:"project,omitempty" yaml:"project"`
// Stack represents the stack name
Stack string `json:"stack,omitempty" yaml:"stack"`
// App represents the application name, which is typically the same as the namespace of Kubernetes resources
App string `json:"app,omitempty" yaml:"app"`
// Workload represents the workload configuration
Workload *internalv1.Workload `json:"workload,omitempty" yaml:"workload"`
// DevModuleConfig is the developer's inputs of this module
DevModuleConfig internalv1.Accessory `json:"dev_module_config,omitempty" yaml:"devModuleConfig"`
// PlatformModuleConfig is the platform engineer's inputs of this module
PlatformModuleConfig apiv1.GenericConfig `json:"platform_module_config,omitempty" yaml:"platformModuleConfig"`
}
func NewGeneratorRequest ¶
func NewGeneratorRequest(req *proto.GeneratorRequest) (*GeneratorRequest, error)
type GeneratorResponse ¶
type GeneratorResponse struct {
// Resources represents the generated resources
Resources []apiv1.Resource `json:"resources,omitempty" yaml:"resources"`
Patchers []internalv1.Patcher `json:"patchers,omitempty" yaml:"patchers"`
}