mirror of
https://github.com/fluxcd/flux2.git
synced 2026-05-23 01:45:53 +00:00
Validate Helm source URL schemes
Reject HelmRepository source URLs with schemes unsupported by the source-controller API before generating or applying the object. Signed-off-by: Immanuel Tikhonov <pchpr.00@list.ru> Assisted-by: codex/gpt-5
This commit is contained in:
parent
fa7cd5f847
commit
5425087730
2 changed files with 15 additions and 6 deletions
|
|
@ -114,9 +114,16 @@ func createSourceHelmCmdRun(cmd *cobra.Command, args []string) error {
|
|||
return err
|
||||
}
|
||||
|
||||
if _, err := url.Parse(sourceHelmArgs.url); err != nil {
|
||||
helmURL, err := url.Parse(sourceHelmArgs.url)
|
||||
if err != nil {
|
||||
return fmt.Errorf("url parse failed: %w", err)
|
||||
}
|
||||
if helmURL.Scheme != "http" && helmURL.Scheme != "https" && helmURL.Scheme != sourcev1.HelmRepositoryTypeOCI {
|
||||
return fmt.Errorf("url scheme '%s' not supported, can be: http, https and oci", helmURL.Scheme)
|
||||
}
|
||||
if helmURL.Host == "" {
|
||||
return fmt.Errorf("url host is required")
|
||||
}
|
||||
|
||||
helmRepository := &sourcev1.HelmRepository{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
|
|
@ -132,11 +139,7 @@ func createSourceHelmCmdRun(cmd *cobra.Command, args []string) error {
|
|||
},
|
||||
}
|
||||
|
||||
url, err := url.Parse(sourceHelmArgs.url)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to parse URL: %w", err)
|
||||
}
|
||||
if url.Scheme == sourcev1.HelmRepositoryTypeOCI {
|
||||
if helmURL.Scheme == sourcev1.HelmRepositoryTypeOCI {
|
||||
helmRepository.Spec.Type = sourcev1.HelmRepositoryTypeOCI
|
||||
helmRepository.Spec.Provider = sourceHelmArgs.ociProvider
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,6 +36,12 @@ func TestCreateSourceHelm(t *testing.T) {
|
|||
resultFile: "name is required",
|
||||
assertFunc: "assertError",
|
||||
},
|
||||
{
|
||||
name: "unsupported URL scheme",
|
||||
args: "create source helm podinfo --url=git://example.com/charts --export",
|
||||
resultFile: "url scheme 'git' not supported, can be: http, https and oci",
|
||||
assertFunc: "assertError",
|
||||
},
|
||||
{
|
||||
name: "OCI repo",
|
||||
args: "create source helm podinfo --url=oci://ghcr.io/stefanprodan/charts/podinfo --interval 5m --export",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue