Add `--key` flag for generate commands to specify resource key (#1165)

## Changes
Add --key for generate commands to specify resource key.

Also, resource config files are now not prefixed anymore.

## Tests
Integration tests passed

---------

Co-authored-by: Pieter Noordhuis <pieter.noordhuis@databricks.com>
This commit is contained in:
Andrew Nester 2024-01-31 10:23:35 +00:00 committed by GitHub
parent 5fda017057
commit b28432afed
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 23 additions and 8 deletions

View File

@ -6,6 +6,8 @@ import (
)
func newGenerateCommand() *cobra.Command {
var key string
cmd := &cobra.Command{
Use: "generate",
Short: "Generate bundle configuration",
@ -15,5 +17,6 @@ func newGenerateCommand() *cobra.Command {
cmd.AddCommand(generate.NewGenerateJobCommand())
cmd.AddCommand(generate.NewGeneratePipelineCommand())
cmd.PersistentFlags().StringVar(&key, "key", "", `resource key to use for the generated configuration`)
return cmd
}

View File

@ -72,14 +72,18 @@ func TestGeneratePipelineCommand(t *testing.T) {
srcDir := filepath.Join(root, "src")
cmd.Flag("source-dir").Value.Set(srcDir)
var key string
cmd.Flags().StringVar(&key, "key", "test_pipeline", "")
err := cmd.RunE(cmd, []string{})
require.NoError(t, err)
data, err := os.ReadFile(filepath.Join(configDir, "pipeline_test_pipeline.yml"))
data, err := os.ReadFile(filepath.Join(configDir, "test_pipeline.yml"))
require.NoError(t, err)
require.Equal(t, fmt.Sprintf(`resources:
pipelines:
pipeline_test_pipeline:
test_pipeline:
name: test-pipeline
libraries:
- notebook:

View File

@ -63,7 +63,11 @@ func NewGenerateJobCommand() *cobra.Command {
return err
}
jobKey := fmt.Sprintf("job_%s", textutil.NormalizeString(job.Settings.Name))
jobKey := cmd.Flag("key").Value.String()
if jobKey == "" {
jobKey = textutil.NormalizeString(job.Settings.Name)
}
result := map[string]dyn.Value{
"resources": dyn.V(map[string]dyn.Value{
"jobs": dyn.V(map[string]dyn.Value{

View File

@ -63,11 +63,15 @@ func NewGeneratePipelineCommand() *cobra.Command {
return err
}
jobKey := fmt.Sprintf("pipeline_%s", textutil.NormalizeString(pipeline.Name))
pipelineKey := cmd.Flag("key").Value.String()
if pipelineKey == "" {
pipelineKey = textutil.NormalizeString(pipeline.Name)
}
result := map[string]dyn.Value{
"resources": dyn.V(map[string]dyn.Value{
"pipelines": dyn.V(map[string]dyn.Value{
jobKey: v,
pipelineKey: v,
}),
}),
}
@ -77,7 +81,7 @@ func NewGeneratePipelineCommand() *cobra.Command {
return err
}
filename := filepath.Join(configDir, fmt.Sprintf("%s.yml", jobKey))
filename := filepath.Join(configDir, fmt.Sprintf("%s.yml", pipelineKey))
err = yamlsaver.SaveAsYAML(result, filename, force)
if err != nil {
return err

View File

@ -46,7 +46,7 @@ func TestAccGenerateFromExistingJobAndDeploy(t *testing.T) {
_, err = os.Stat(filepath.Join(bundleRoot, "src", "test.py"))
require.NoError(t, err)
matches, err := filepath.Glob(filepath.Join(bundleRoot, "resources", "job_generated_job_*.yml"))
matches, err := filepath.Glob(filepath.Join(bundleRoot, "resources", "generated_job_*.yml"))
require.NoError(t, err)
require.Len(t, matches, 1)

View File

@ -47,7 +47,7 @@ func TestAccGenerateFromExistingPipelineAndDeploy(t *testing.T) {
_, err = os.Stat(filepath.Join(bundleRoot, "src", "test.py"))
require.NoError(t, err)
matches, err := filepath.Glob(filepath.Join(bundleRoot, "resources", "pipeline_generated_pipeline_*.yml"))
matches, err := filepath.Glob(filepath.Join(bundleRoot, "resources", "generated_pipeline_*.yml"))
require.NoError(t, err)
require.Len(t, matches, 1)