Allow specifying a default namespace used across all the releases (#39)
* Allow specifying a default namespace used across all the releases Omit `namespace` in `charts[].namespace` of charts.yaml and then run `helmfile sync -n yourns` to install your charts into `yourns`. Resolves #31
This commit is contained in:
		
							parent
							
								
									f02790d566
								
							
						
					
					
						commit
						efdede1658
					
				
							
								
								
									
										12
									
								
								main.go
								
								
								
								
							
							
						
						
									
										12
									
								
								main.go
								
								
								
								
							|  | @ -38,6 +38,10 @@ func main() { | |||
| 			Name:  "kube-context", | ||||
| 			Usage: "Set kubectl context. Uses current context by default", | ||||
| 		}, | ||||
| 		cli.StringFlag{ | ||||
| 			Name:  "namespace, n", | ||||
| 			Usage: "Set namespace. Uses the namespace set in the context by default", | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	app.Commands = []cli.Command{ | ||||
|  | @ -232,6 +236,7 @@ func before(c *cli.Context) (*state.HelmState, helmexec.Interface, error) { | |||
| 	file := c.GlobalString("file") | ||||
| 	quiet := c.GlobalBool("quiet") | ||||
| 	kubeContext := c.GlobalString("kube-context") | ||||
| 	namespace := c.GlobalString("namespace") | ||||
| 
 | ||||
| 	state, err := state.ReadFromFile(file) | ||||
| 	if err != nil { | ||||
|  | @ -244,6 +249,13 @@ func before(c *cli.Context) (*state.HelmState, helmexec.Interface, error) { | |||
| 		} | ||||
| 		kubeContext = state.Context | ||||
| 	} | ||||
| 	if namespace != "" { | ||||
| 		if state.Namespace != "" { | ||||
| 			log.Printf("err: Cannot use option --namespace and set attribute namespace.") | ||||
| 			os.Exit(1) | ||||
| 		} | ||||
| 		state.Namespace = namespace | ||||
| 	} | ||||
| 	var writer io.Writer | ||||
| 	if !quiet { | ||||
| 		writer = os.Stdout | ||||
|  |  | |||
|  | @ -21,6 +21,7 @@ import ( | |||
| type HelmState struct { | ||||
| 	BaseChartPath string | ||||
| 	Context       string           `yaml:"context"` | ||||
| 	Namespace     string           `yaml:"namespace"` | ||||
| 	Repositories  []RepositorySpec `yaml:"repositories"` | ||||
| 	Charts        []ChartSpec      `yaml:"charts"` | ||||
| } | ||||
|  | @ -99,6 +100,11 @@ func renderTemplateString(s string) (string, error) { | |||
| 	return tplString.String(), nil | ||||
| } | ||||
| 
 | ||||
| func (state *HelmState) applyDefaultsTo(spec ChartSpec) ChartSpec { | ||||
| 	spec.Namespace = state.Namespace | ||||
| 	return spec | ||||
| } | ||||
| 
 | ||||
| func (state *HelmState) SyncRepos(helm helmexec.Interface) []error { | ||||
| 	var wg sync.WaitGroup | ||||
| 	errs := []error{} | ||||
|  | @ -137,8 +143,8 @@ func (state *HelmState) SyncCharts(helm helmexec.Interface, additonalValues []st | |||
| 	for w := 1; w <= workerLimit; w++ { | ||||
| 		go func() { | ||||
| 			for chart := range jobQueue { | ||||
| 
 | ||||
| 				flags, flagsErr := flagsForChart(state.BaseChartPath, &chart) | ||||
| 				chartWithDefaults := state.applyDefaultsTo(chart) | ||||
| 				flags, flagsErr := flagsForChart(state.BaseChartPath, &chartWithDefaults) | ||||
| 				if flagsErr != nil { | ||||
| 					errQueue <- flagsErr | ||||
| 					doneQueue <- true | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue