Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: modify the generators to adapt to the new model's adjustments #453

Merged
merged 1 commit into from
Aug 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
14 changes: 7 additions & 7 deletions pkg/cmd/spec/generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,11 @@ func GenerateSpec(o *generator.Options, project *projectstack.Project, stack *pr
case projectstack.KCLGenerator:
g = &kcl.Generator{}
case projectstack.AppConfigurationGenerator:
appConfig, err := buildAppConfig(o, stack)
appConfigs, err := buildAppConfigs(o, stack)
if err != nil {
return nil, err
}
g = &appconfiguration.Generator{AppConfiguration: appConfig}
g = &appconfiguration.Generator{Apps: appConfigs}
default:
return nil, fmt.Errorf("unknow generator type:%s", gt)
}
Expand All @@ -86,7 +86,7 @@ func GenerateSpec(o *generator.Options, project *projectstack.Project, stack *pr
return spec, nil
}

func buildAppConfig(o *generator.Options, stack *projectstack.Stack) (*appconfigmodel.AppConfiguration, error) {
func buildAppConfigs(o *generator.Options, stack *projectstack.Stack) (map[string]appconfigmodel.AppConfiguration, error) {
compileResult, err := kcl.Run(o, stack)
if err != nil {
return nil, err
Expand All @@ -102,14 +102,14 @@ func buildAppConfig(o *generator.Options, stack *projectstack.Stack) (*appconfig
return nil, err
}

log.Debugf("unmarshal %s to app config", out)
appConfig := &appconfigmodel.AppConfiguration{}
err = yaml.Unmarshal(out, appConfig)
log.Debugf("unmarshal %s to app configs", out)
appConfigs := map[string]appconfigmodel.AppConfiguration{}
err = yaml.Unmarshal(out, appConfigs)
if err != nil {
return nil, err
}

return appConfig, nil
return appConfigs, nil
}

func GenerateSpecFromFile(filePath string) (*models.Spec, error) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import (
"kusionstack.io/kusion/pkg/generator"
"kusionstack.io/kusion/pkg/generator/appconfiguration/generators"
"kusionstack.io/kusion/pkg/models"
"kusionstack.io/kusion/pkg/models/appconfiguration"
appmodel "kusionstack.io/kusion/pkg/models/appconfiguration"
"kusionstack.io/kusion/pkg/projectstack"
)

type Generator struct {
*appconfiguration.AppConfiguration
Apps map[string]appmodel.AppConfiguration
}

func (acg *Generator) GenerateSpec(
Expand All @@ -21,11 +21,12 @@ func (acg *Generator) GenerateSpec(
Resources: []models.Resource{},
}

g, err := generators.NewAppConfigurationGenerator(project.Name, acg.AppConfiguration)
if err != nil {
return nil, err
}
if err = g.Generate(spec); err != nil {
gfs := []generators.NewGeneratorFunc{}
generators.ForeachOrderedApps(acg.Apps, func(appName string, app appmodel.AppConfiguration) error {
elliotxx marked this conversation as resolved.
Show resolved Hide resolved
gfs = append(gfs, generators.NewAppConfigurationGeneratorFunc(project.Name, appName, &app))
return nil
})
if err := generators.CallGenerators(spec, gfs...); err != nil {
return nil, err
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,35 +9,47 @@ import (

type appConfigurationGenerator struct {
projectName string
ac *appconfiguration.AppConfiguration
appName string
app *appconfiguration.AppConfiguration
}

func NewAppConfigurationGenerator(projectName string, ac *appconfiguration.AppConfiguration) (Generator, error) {
func NewAppConfigurationGenerator(projectName, appName string, app *appconfiguration.AppConfiguration) (Generator, error) {
if len(projectName) == 0 {
return nil, fmt.Errorf("project name must not be empty")
}

if ac == nil {
if len(appName) == 0 {
return nil, fmt.Errorf("app name must not be empty")
}

if app == nil {
return nil, fmt.Errorf("can not find app configuration when generating the Spec")
}

return &appConfigurationGenerator{
projectName: projectName,
ac: ac,
appName: appName,
app: app,
}, nil
}

func NewAppConfigurationGeneratorFunc(projectName, appName string, app *appconfiguration.AppConfiguration) NewGeneratorFunc {
return func() (Generator, error) {
return NewAppConfigurationGenerator(projectName, appName, app)
}
}

func (g *appConfigurationGenerator) Generate(spec *models.Spec) error {
if spec.Resources == nil {
spec.Resources = make(models.Resources, 0)
}

gfs := []NewGeneratorFunc{
NewNamespaceGeneratorFunc(g.projectName),
NewComponentsGeneratorFunc(g.projectName, g.ac.Components),
NewWorkloadGeneratorFunc(g.projectName, g.appName, g.app.Workload),
}

if err := callGenerators(spec, gfs...); err != nil {
if err := CallGenerators(spec, gfs...); err != nil {
return err
}

Expand Down
55 changes: 0 additions & 55 deletions pkg/generator/appconfiguration/generators/components_generator.go

This file was deleted.

112 changes: 0 additions & 112 deletions pkg/generator/appconfiguration/generators/deployment_generator.go

This file was deleted.

26 changes: 13 additions & 13 deletions pkg/generator/appconfiguration/generators/job_generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,31 +6,31 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

"kusionstack.io/kusion/pkg/models"
"kusionstack.io/kusion/pkg/models/appconfiguration/component"
"kusionstack.io/kusion/pkg/models/appconfiguration/workload"
)

type jobGenerator struct {
projectName string
compName string
comp *component.Component
jobName string
job *workload.Job
}

func NewJobGenerator(projectName, compName string, comp *component.Component) (Generator, error) {
func NewJobGenerator(projectName, jobName string, job *workload.Job) (Generator, error) {
return &jobGenerator{
projectName: projectName,
compName: compName,
comp: comp,
jobName: jobName,
job: job,
}, nil
}

func NewJobGeneratorFunc(projectName, compName string, comp *component.Component) NewGeneratorFunc {
func NewJobGeneratorFunc(projectName, jobName string, job *workload.Job) NewGeneratorFunc {
return func() (Generator, error) {
return NewJobGenerator(projectName, compName, comp)
return NewJobGenerator(projectName, jobName, job)
}
}

func (g *jobGenerator) Generate(spec *models.Spec) error {
job := g.comp.Job
job := g.job
if job == nil {
return nil
}
Expand All @@ -41,9 +41,9 @@ func (g *jobGenerator) Generate(spec *models.Spec) error {

meta := metav1.ObjectMeta{
Namespace: g.projectName,
Name: uniqueComponentName(g.projectName, g.compName),
Labels: g.comp.Labels,
Annotations: g.comp.Annotations,
Name: uniqueWorkloadName(g.projectName, g.jobName),
Labels: g.job.Labels,
Annotations: g.job.Annotations,
}

containers, err := toOrderedContainers(job.Containers)
Expand All @@ -53,7 +53,7 @@ func (g *jobGenerator) Generate(spec *models.Spec) error {
jobSpec := batchv1.JobSpec{
Template: corev1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: uniqueComponentLabels(g.projectName, g.compName),
Labels: uniqueWorkloadLabels(g.projectName, g.jobName),
},
Spec: corev1.PodSpec{
Containers: containers,
Expand Down
Loading
Loading