Skip to content

Commit b14a940

Browse files
committed
feat: reuse deploy function
Signed-off-by: Chen Keinan <hen.keinan@gmail.com>
1 parent a3abb1c commit b14a940

2 files changed

Lines changed: 34 additions & 515 deletions

File tree

pkg/cmd/release/deploy/deploy.go

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -403,12 +403,12 @@ func AskQuestions(octopus *octopusApiClient.Client, stdout io.Writer, asker ques
403403
}
404404
options.ProjectName = selectedProject.Name
405405

406-
isTenanted, err := determineIsTenanted(selectedProject, asker)
406+
isTenanted, err := DetermineIsTenanted(selectedProject, asker)
407407
if err != nil {
408408
return err
409409
}
410410

411-
err = validateDeployment(isTenanted, options.Environments)
411+
err = ValidateDeployment(isTenanted, options.Environments)
412412
if err != nil {
413413
return err
414414
}
@@ -446,7 +446,7 @@ func AskQuestions(octopus *octopusApiClient.Client, stdout io.Writer, asker ques
446446

447447
indicateMissingPackagesForReleaseFeatureToggleValue, err := featuretoggle.IsToggleEnabled(octopus, "indicate-missing-packages-for-release")
448448
if indicateMissingPackagesForReleaseFeatureToggleValue {
449-
proceed := promptMissingPackages(octopus, stdout, asker, selectedRelease)
449+
proceed := PromptMissingPackages(octopus, stdout, asker, selectedRelease)
450450
if !proceed {
451451
return errors.New("aborting deployment creation as requested")
452452
}
@@ -456,12 +456,12 @@ func AskQuestions(octopus *octopusApiClient.Client, stdout io.Writer, asker ques
456456
// NOTE: this is allowed to remain nil; environments will get looked up later on if needed
457457
var deploymentEnvironmentIDs []string
458458
if selectedChannel.Type == channels.ChannelTypeLifecycle {
459-
deploymentEnvironmentIDs, err = selectDeploymentEnvironmentsForLifecycleChannel(octopus, stdout, asker, options, selectedRelease, isTenanted)
459+
deploymentEnvironmentIDs, err = SelectDeploymentEnvironmentsForLifecycleChannel(octopus, stdout, asker, options, selectedRelease, isTenanted)
460460
if err != nil {
461461
return err
462462
}
463463
} else if selectedChannel.Type == channels.ChannelTypeEphemeral {
464-
deploymentEnvironmentIDs, err = selectDeploymentEnvironmentsForEphemeralChannel(octopus, stdout, asker, options, selectedRelease)
464+
deploymentEnvironmentIDs, err = SelectDeploymentEnvironmentsForEphemeralChannel(octopus, stdout, asker, options, selectedRelease)
465465
if err != nil {
466466
return err
467467
}
@@ -483,7 +483,7 @@ func AskQuestions(octopus *octopusApiClient.Client, stdout io.Writer, asker ques
483483

484484
deploymentEnvironmentIDs = util.SliceTransform(selectedEnvironments, func(env *environments.Environment) string { return env.ID })
485485
} else if selectedChannel.Type == channels.ChannelTypeEphemeral {
486-
deploymentEnvironmentIDs, err = findEphemeralEnvironmentIDs(octopus, space, options.Environments)
486+
deploymentEnvironmentIDs, err = FindEphemeralEnvironmentIDs(octopus, space, options.Environments)
487487

488488
if err != nil {
489489
return err
@@ -502,7 +502,7 @@ func AskQuestions(octopus *octopusApiClient.Client, stdout io.Writer, asker ques
502502
deploymentPreviewRequests = append(deploymentPreviewRequests, preview)
503503
}
504504

505-
options.Variables, err = askDeploymentPreviewVariables(octopus, options.Variables, asker, space.ID, selectedRelease.ID, deploymentPreviewRequests)
505+
options.Variables, err = AskDeploymentPreviewVariables(octopus, options.Variables, asker, space.ID, selectedRelease.ID, deploymentPreviewRequests)
506506
if err != nil {
507507
return err
508508
}
@@ -614,7 +614,7 @@ func AskQuestions(octopus *octopusApiClient.Client, stdout io.Writer, asker ques
614614
}
615615
deploymentEnvironmentIDs = util.SliceTransform(selectedEnvironments, func(env *environments.Environment) string { return env.ID })
616616
}
617-
options.DeploymentTargets, err = askDeploymentTargets(octopus, asker, space.ID, selectedRelease.ID, deploymentEnvironmentIDs)
617+
options.DeploymentTargets, err = AskDeploymentTargets(octopus, asker, space.ID, selectedRelease.ID, deploymentEnvironmentIDs)
618618
if err != nil {
619619
return err
620620
}
@@ -624,7 +624,7 @@ func AskQuestions(octopus *octopusApiClient.Client, stdout io.Writer, asker ques
624624
return nil
625625
}
626626

627-
func findEphemeralEnvironmentIDs(octopus *octopusApiClient.Client, space *spaces.Space, environments []string) ([]string, error) {
627+
func FindEphemeralEnvironmentIDs(octopus *octopusApiClient.Client, space *spaces.Space, environments []string) ([]string, error) {
628628
allEphemeralEnvironments, err := ephemeralenvironments.GetAll(octopus, space.ID)
629629
if err != nil {
630630
return nil, err
@@ -656,7 +656,7 @@ func findEphemeralEnvironmentIDs(octopus *octopusApiClient.Client, space *spaces
656656
return selectedEnvironments, nil
657657
}
658658

659-
func selectDeploymentEnvironmentsForEphemeralChannel(octopus *octopusApiClient.Client, stdout io.Writer, asker question.Asker, options *executor.TaskOptionsDeployRelease, selectedRelease *releases.Release) ([]string, error) {
659+
func SelectDeploymentEnvironmentsForEphemeralChannel(octopus *octopusApiClient.Client, stdout io.Writer, asker question.Asker, options *executor.TaskOptionsDeployRelease, selectedRelease *releases.Release) ([]string, error) {
660660
var deploymentEnvironmentIds []string
661661
var selectedEnvironments []*ephemeralenvironments.EphemeralEnvironment
662662

@@ -687,7 +687,7 @@ func selectDeploymentEnvironmentsForEphemeralChannel(octopus *octopusApiClient.C
687687
}
688688

689689
if len(availableEnvironments) > 0 {
690-
selectedEnvironments, err = selectEphemeralDeploymentEnvironments(asker, availableEnvironments)
690+
selectedEnvironments, err = SelectEphemeralDeploymentEnvironments(asker, availableEnvironments, "Select environment(s)")
691691
if err != nil {
692692
return nil, err
693693
}
@@ -701,7 +701,7 @@ func selectDeploymentEnvironmentsForEphemeralChannel(octopus *octopusApiClient.C
701701
return deploymentEnvironmentIds, nil
702702
}
703703

704-
func selectDeploymentEnvironmentsForLifecycleChannel(octopus *octopusApiClient.Client, stdout io.Writer, asker question.Asker, options *executor.TaskOptionsDeployRelease, selectedRelease *releases.Release, isTenanted bool) ([]string, error) {
704+
func SelectDeploymentEnvironmentsForLifecycleChannel(octopus *octopusApiClient.Client, stdout io.Writer, asker question.Asker, options *executor.TaskOptionsDeployRelease, selectedRelease *releases.Release, isTenanted bool) ([]string, error) {
705705
var deploymentEnvironmentIds []string
706706
var selectedEnvironments []*environments.Environment
707707
var err error
@@ -713,7 +713,7 @@ func selectDeploymentEnvironmentsForLifecycleChannel(octopus *octopusApiClient.C
713713
if err != nil {
714714
return nil, err
715715
}
716-
selectedEnvironment, err = selectDeploymentEnvironment(asker, octopus, deployableEnvironmentIDs, nextEnvironmentID)
716+
selectedEnvironment, err = SelectDeploymentEnvironment(asker, octopus, deployableEnvironmentIDs, nextEnvironmentID, "Select environment")
717717
if err != nil {
718718
return nil, err
719719
}
@@ -751,7 +751,7 @@ func selectDeploymentEnvironmentsForLifecycleChannel(octopus *octopusApiClient.C
751751
if err != nil {
752752
return nil, err
753753
}
754-
selectedEnvironments, err = selectDeploymentEnvironments(asker, octopus, deployableEnvironmentIDs, nextEnvironmentID)
754+
selectedEnvironments, err = SelectDeploymentEnvironments(asker, octopus, deployableEnvironmentIDs, nextEnvironmentID, "Select environment(s)")
755755
if err != nil {
756756
return nil, err
757757
}
@@ -766,15 +766,15 @@ func selectDeploymentEnvironmentsForLifecycleChannel(octopus *octopusApiClient.C
766766
return deploymentEnvironmentIds, nil
767767
}
768768

769-
func validateDeployment(isTenanted bool, environments []string) error {
769+
func ValidateDeployment(isTenanted bool, environments []string) error {
770770
if isTenanted && len(environments) > 1 {
771771
return fmt.Errorf("tenanted deployments can only specify one environment")
772772
}
773773

774774
return nil
775775
}
776776

777-
func askDeploymentTargets(octopus *octopusApiClient.Client, asker question.Asker, spaceID string, releaseID string, deploymentEnvironmentIDs []string) ([]string, error) {
777+
func AskDeploymentTargets(octopus *octopusApiClient.Client, asker question.Asker, spaceID string, releaseID string, deploymentEnvironmentIDs []string) ([]string, error) {
778778
var results []string
779779

780780
// this is what the portal does. Can we do it better? I don't know
@@ -812,7 +812,7 @@ func askDeploymentTargets(octopus *octopusApiClient.Client, asker question.Asker
812812
return nil, nil
813813
}
814814

815-
func askDeploymentPreviewVariables(octopus *octopusApiClient.Client, variablesFromCmd map[string]string, asker question.Asker, spaceID string, releaseID string, deploymentPreviewsReqests []deployments.DeploymentPreviewRequest) (map[string]string, error) {
815+
func AskDeploymentPreviewVariables(octopus *octopusApiClient.Client, variablesFromCmd map[string]string, asker question.Asker, spaceID string, releaseID string, deploymentPreviewsReqests []deployments.DeploymentPreviewRequest) (map[string]string, error) {
816816
previews, err := deployments.GetReleaseDeploymentPreviews(octopus, spaceID, releaseID, deploymentPreviewsReqests, true)
817817
if err != nil {
818818
return nil, err
@@ -868,7 +868,7 @@ func askDeploymentPreviewVariables(octopus *octopusApiClient.Client, variablesFr
868868
return result, nil
869869
}
870870

871-
func promptMissingPackages(octopus *octopusApiClient.Client, stdout io.Writer, asker question.Asker, release *releases.Release) bool {
871+
func PromptMissingPackages(octopus *octopusApiClient.Client, stdout io.Writer, asker question.Asker, release *releases.Release) bool {
872872
missingPackages, err := releases.GetMissingPackages(octopus, release)
873873
if err != nil {
874874
// We don't want to prevent deployments from going through because of this check
@@ -952,7 +952,7 @@ func loadEnvironmentsForDeploy(octopus *octopusApiClient.Client, deployableEnvir
952952
return allEnvs, nextDeployEnvironmentName, nil
953953
}
954954

955-
func selectDeploymentEnvironment(asker question.Asker, octopus *octopusApiClient.Client, deployableEnvironmentIDs []string, nextDeployEnvironmentID string) (*environments.Environment, error) {
955+
func SelectDeploymentEnvironment(asker question.Asker, octopus *octopusApiClient.Client, deployableEnvironmentIDs []string, nextDeployEnvironmentID string, message string) (*environments.Environment, error) {
956956
allEnvs, nextDeployEnvironmentName, err := loadEnvironmentsForDeploy(octopus, deployableEnvironmentIDs, nextDeployEnvironmentID)
957957
if err != nil {
958958
return nil, err
@@ -961,7 +961,7 @@ func selectDeploymentEnvironment(asker question.Asker, octopus *octopusApiClient
961961
optionMap, options := question.MakeItemMapAndOptions(allEnvs, func(e *environments.Environment) string { return e.Name })
962962
var selectedKey string
963963
err = asker(&survey.Select{
964-
Message: "Select environment",
964+
Message: message,
965965
Options: options,
966966
Default: nextDeployEnvironmentName,
967967
}, &selectedKey)
@@ -975,12 +975,12 @@ func selectDeploymentEnvironment(asker question.Asker, octopus *octopusApiClient
975975
return selectedValue, nil
976976
}
977977

978-
func selectEphemeralDeploymentEnvironments(asker question.Asker, deployableEnvironments []*ephemeralenvironments.EphemeralEnvironment) ([]*ephemeralenvironments.EphemeralEnvironment, error) {
978+
func SelectEphemeralDeploymentEnvironments(asker question.Asker, deployableEnvironments []*ephemeralenvironments.EphemeralEnvironment, message string) ([]*ephemeralenvironments.EphemeralEnvironment, error) {
979979
var err error
980980
optionMap, options := question.MakeItemMapAndOptions(deployableEnvironments, func(e *ephemeralenvironments.EphemeralEnvironment) string { return e.Name })
981981
var selectedKeys []string
982982
err = asker(&survey.MultiSelect{
983-
Message: "Select environment(s)",
983+
Message: message,
984984
Options: options,
985985
Default: nil,
986986
}, &selectedKeys, survey.WithValidator(survey.Required))
@@ -997,7 +997,7 @@ func selectEphemeralDeploymentEnvironments(asker question.Asker, deployableEnvir
997997
return selectedValues, nil
998998
}
999999

1000-
func selectDeploymentEnvironments(asker question.Asker, octopus *octopusApiClient.Client, deployableEnvironmentIDs []string, nextDeployEnvironmentID string) ([]*environments.Environment, error) {
1000+
func SelectDeploymentEnvironments(asker question.Asker, octopus *octopusApiClient.Client, deployableEnvironmentIDs []string, nextDeployEnvironmentID string, message string) ([]*environments.Environment, error) {
10011001
allEnvs, nextDeployEnvironmentName, err := loadEnvironmentsForDeploy(octopus, deployableEnvironmentIDs, nextDeployEnvironmentID)
10021002
if err != nil {
10031003
return nil, err
@@ -1006,7 +1006,7 @@ func selectDeploymentEnvironments(asker question.Asker, octopus *octopusApiClien
10061006
optionMap, options := question.MakeItemMapAndOptions(allEnvs, func(e *environments.Environment) string { return e.Name })
10071007
var selectedKeys []string
10081008
err = asker(&survey.MultiSelect{
1009-
Message: "Select environment(s)",
1009+
Message: message,
10101010
Options: options,
10111011
Default: []string{nextDeployEnvironmentName},
10121012
}, &selectedKeys, survey.WithValidator(survey.Required))
@@ -1093,7 +1093,7 @@ func selectRelease(octopus *octopusApiClient.Client, ask question.Asker, questio
10931093
// is to allow for graceful migrations of older projects, and we don't expect it to happen very often.
10941094
// We COULD do a little bit of a shortcut; if tenant is 'allowed but not required' but the project has no
10951095
// linked tenants, then it can't be tenanted, but is this worth the extra complexity? Decision: no
1096-
func determineIsTenanted(project *projects.Project, ask question.Asker) (bool, error) {
1096+
func DetermineIsTenanted(project *projects.Project, ask question.Asker) (bool, error) {
10971097
switch project.TenantedDeploymentMode {
10981098
case core.TenantedDeploymentModeUntenanted:
10991099
return false, nil

0 commit comments

Comments
 (0)