availableName tests whether a name is available Roughly, this will return an error if name is - empty - too long - already in use, and not deleted - used by a deleted release, and i.Replace is false
()
| 606 | // - already in use, and not deleted |
| 607 | // - used by a deleted release, and i.Replace is false |
| 608 | func (i *Install) availableName() error { |
| 609 | start := i.ReleaseName |
| 610 | |
| 611 | if err := chartutil.ValidateReleaseName(start); err != nil { |
| 612 | return fmt.Errorf("release name %q: %w", start, err) |
| 613 | } |
| 614 | // On dry run, bail here |
| 615 | if isDryRun(i.DryRunStrategy) { |
| 616 | return nil |
| 617 | } |
| 618 | |
| 619 | h, err := i.cfg.Releases.History(start) |
| 620 | if err != nil || len(h) < 1 { |
| 621 | return nil |
| 622 | } |
| 623 | |
| 624 | hl, err := releaseListToV1List(h) |
| 625 | if err != nil { |
| 626 | return err |
| 627 | } |
| 628 | |
| 629 | releaseutil.Reverse(hl, releaseutil.SortByRevision) |
| 630 | rel := hl[0] |
| 631 | |
| 632 | if st := rel.Info.Status; i.Replace && (st == rcommon.StatusUninstalled || st == rcommon.StatusFailed) { |
| 633 | return nil |
| 634 | } |
| 635 | return errors.New("cannot reuse a name that is still in use") |
| 636 | } |
| 637 | |
| 638 | func releaseListToV1List(ls []ri.Releaser) ([]*release.Release, error) { |
| 639 | rls := make([]*release.Release, 0, len(ls)) |
no test coverage detected