Skip to content

Commit e52ecb7

Browse files
MNoevaboyan-velinov
authored andcommitted
Fixed comments
1 parent c48a684 commit e52ecb7

File tree

2 files changed

+79
-22
lines changed

2 files changed

+79
-22
lines changed

commands/blue_green_deploy_command.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,13 @@ func (c *BlueGreenDeployCommand) GetPluginCommand() plugin.Command {
3333
HelpText: "Deploy a multi-target app using blue-green deployment",
3434
UsageDetails: plugin.Usage{
3535
Usage: `Deploy a multi-target app using blue-green deployment
36-
cf bg-deploy MTA [-e EXT_DESCRIPTOR[,...]] [--version-rule VERSION_RULE] [-u URL] [-f] [--retries RETRIES] [--no-start] [--namespace NAMESPACE] [--delete-services] [--delete-service-keys] [--delete-service-brokers] [--keep-files] [--no-restart-subscribed-apps] [--no-confirm] [--skip-idle-start] [--do-not-fail-on-missing-permissions] [--abort-on-error] [--apps-start-timeout TIMEOUT] [--apps-stage-timeout TIMEOUT] [--apps-upload-timeout TIMEOUT] [--task-execution-timeout TIMEOUT]
36+
cf bg-deploy MTA [-e EXT_DESCRIPTOR[,...]] [-t TIMEOUT] [--version-rule VERSION_RULE] [-u URL] [-f] [--retries RETRIES] [--no-start] [--namespace NAMESPACE] [--delete-services] [--delete-service-keys] [--delete-service-brokers] [--keep-files] [--no-restart-subscribed-apps] [--no-confirm] [--skip-idle-start] [--do-not-fail-on-missing-permissions] [--abort-on-error] [--apps-start-timeout TIMEOUT] [--apps-stage-timeout TIMEOUT] [--apps-upload-timeout TIMEOUT] [--apps-task-execution-timeout TIMEOUT]
3737
3838
Perform action on an active deploy operation
3939
cf deploy -i OPERATION_ID -a ACTION [-u URL]`,
4040
Options: map[string]string{
4141
extDescriptorsOpt: "Extension descriptors",
42+
timeoutOpt: "Start apps timeout in seconds",
4243
deployServiceURLOpt: "Deploy service URL, by default 'deploy-service.<system-domain>'",
4344
versionRuleOpt: "Version rule (HIGHER, SAME_HIGHER, ALL)",
4445
operationIDOpt: "Active deploy operation ID",

commands/deploy_command.go

Lines changed: 77 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030

3131
const (
3232
extDescriptorsOpt = "e"
33+
timeoutOpt = "t"
3334
versionRuleOpt = "version-rule"
3435
noStartOpt = "no-start"
3536
deleteServiceKeysOpt = "delete-service-keys"
@@ -45,7 +46,7 @@ const (
4546
startTimeoutOpt = "apps-start-timeout"
4647
stageTimeoutOpt = "apps-stage-timeout"
4748
uploadTimeoutOpt = "apps-upload-timeout"
48-
taskExecutionTimeoutOpt = "task-execution-timeout"
49+
taskExecutionTimeoutOpt = "apps-task-execution-timeout"
4950
)
5051

5152
type listFlag struct {
@@ -97,17 +98,17 @@ func (c *DeployCommand) GetPluginCommand() plugin.Command {
9798
HelpText: "Deploy a new multi-target app or sync changes to an existing one",
9899
UsageDetails: plugin.Usage{
99100
Usage: `Deploy a multi-target app archive
100-
cf deploy MTA [-e EXT_DESCRIPTOR[,...]] [--version-rule VERSION_RULE] [-u URL] [-f] [--retries RETRIES] [--no-start] [--namespace NAMESPACE] [--delete-services] [--delete-service-keys] [--delete-service-brokers] [--keep-files] [--no-restart-subscribed-apps] [--do-not-fail-on-missing-permissions] [--abort-on-error] [--strategy STRATEGY] [--skip-testing-phase] [--skip-idle-start] [--apps-start-timeout TIMEOUT] [--apps-stage-timeout TIMEOUT] [--apps-upload-timeout TIMEOUT] [--task-execution-timeout TIMEOUT]
101+
cf deploy MTA [-e EXT_DESCRIPTOR[,...]] [-t TIMEOUT] [--version-rule VERSION_RULE] [-u URL] [-f] [--retries RETRIES] [--no-start] [--namespace NAMESPACE] [--delete-services] [--delete-service-keys] [--delete-service-brokers] [--keep-files] [--no-restart-subscribed-apps] [--do-not-fail-on-missing-permissions] [--abort-on-error] [--strategy STRATEGY] [--skip-testing-phase] [--skip-idle-start] [--apps-start-timeout TIMEOUT] [--apps-stage-timeout TIMEOUT] [--apps-upload-timeout TIMEOUT] [--apps-task-execution-timeout TIMEOUT]
101102
102103
Perform action on an active deploy operation
103104
cf deploy -i OPERATION_ID -a ACTION [-u URL]
104105
105106
(EXPERIMENTAL) Deploy a multi-target app archive referenced by a remote URL
106-
<write MTA archive URL to STDOUT> | cf deploy [-e EXT_DESCRIPTOR[,...]] [--version-rule VERSION_RULE] [-u MTA_CONTROLLER_URL] [--retries RETRIES] [--no-start] [--namespace NAMESPACE] [--delete-services] [--delete-service-keys] [--delete-service-brokers] [--keep-files] [--no-restart-subscribed-apps] [--do-not-fail-on-missing-permissions] [--abort-on-error] [--strategy STRATEGY] [--skip-testing-phase] [--skip-idle-start] [--apps-start-timeout TIMEOUT] [--apps-stage-timeout TIMEOUT] [--apps-upload-timeout TIMEOUT] [--task-execution-timeout TIMEOUT]`,
107+
<write MTA archive URL to STDOUT> | cf deploy [-e EXT_DESCRIPTOR[,...]] [-t TIMEOUT] [--version-rule VERSION_RULE] [-u MTA_CONTROLLER_URL] [--retries RETRIES] [--no-start] [--namespace NAMESPACE] [--delete-services] [--delete-service-keys] [--delete-service-brokers] [--keep-files] [--no-restart-subscribed-apps] [--do-not-fail-on-missing-permissions] [--abort-on-error] [--strategy STRATEGY] [--skip-testing-phase] [--skip-idle-start] [--apps-start-timeout TIMEOUT] [--apps-stage-timeout TIMEOUT] [--apps-upload-timeout TIMEOUT] [--apps-task-execution-timeout TIMEOUT]`,
107108
Options: map[string]string{
108109
extDescriptorsOpt: "Extension descriptors",
110+
timeoutOpt: "Start apps timeout in seconds",
109111
deployServiceURLOpt: "Deploy service URL, by default 'deploy-service.<system-domain>'",
110-
111112
versionRuleOpt: "Version rule (HIGHER, SAME_HIGHER, ALL)",
112113
operationIDOpt: "Active deploy operation ID",
113114
actionOpt: "Action to perform on active deploy operation (abort, retry, resume, monitor)",
@@ -158,11 +159,26 @@ func deployProcessParametersSetter() ProcessParametersSetter {
158159
processBuilder.Parameter("noFailOnMissingPermissions", strconv.FormatBool(GetBoolOpt(noFailOnMissingPermissionsOpt, flags)))
159160
processBuilder.Parameter("abortOnError", strconv.FormatBool(GetBoolOpt(abortOnErrorOpt, flags)))
160161
processBuilder.Parameter("skipOwnershipValidation", strconv.FormatBool(GetBoolOpt(skipOwnershipValidationOpt, flags)))
161-
processBuilder.Parameter("appsStartTimeout", GetStringOpt(startTimeoutOpt, flags))
162162
processBuilder.Parameter("appsStageTimeout", GetStringOpt(stageTimeoutOpt, flags))
163163
processBuilder.Parameter("appsUploadTimeout", GetStringOpt(uploadTimeoutOpt, flags))
164-
processBuilder.Parameter("taskExecutionTimeout", GetStringOpt(taskExecutionTimeoutOpt, flags))
165-
164+
processBuilder.Parameter("appsTaskExecutionTimeout", GetStringOpt(taskExecutionTimeoutOpt, flags))
165+
166+
var lastSetValue string = ""
167+
for i := 0; i < len(os.Args); i++ {
168+
arg := os.Args[i]
169+
if arg == "-t" {
170+
if i+1 < len(os.Args) {
171+
lastSetValue = os.Args[i+1]
172+
i++
173+
}
174+
} else if arg == "--apps-start-timeout" {
175+
if i+1 < len(os.Args) {
176+
lastSetValue = os.Args[i+1]
177+
i++
178+
}
179+
}
180+
}
181+
processBuilder.Parameter("appsStartTimeout", lastSetValue)
166182
}
167183
}
168184

@@ -190,6 +206,7 @@ func (c *DeployCommand) defineCommandOptions(flags *flag.FlagSet) {
190206
flags.Bool(skipIdleStart, false, "")
191207
flags.Var(&modulesList, moduleOpt, "")
192208
flags.Var(&resourcesList, resourceOpt, "")
209+
flags.String(timeoutOpt, "", "")
193210
flags.String(startTimeoutOpt, "", "")
194211
flags.String(stageTimeoutOpt, "", "")
195212
flags.String(uploadTimeoutOpt, "", "")
@@ -624,18 +641,57 @@ func (deployCommandLineArgumentsParser) determinePositionalArgumentsToValidate(p
624641
type deployCommandFlagsValidator struct{}
625642

626643
func (deployCommandFlagsValidator) ValidateParsedFlags(flags *flag.FlagSet) error {
627-
var err error
628-
flags.Visit(func(f *flag.Flag) {
629-
if f.Name == strategyOpt {
630-
if f.Value.String() == "" {
631-
err = errors.New("strategy flag defined but no argument specified")
632-
} else if !util.Contains(AvailableStrategies(), f.Value.String()) {
633-
err = fmt.Errorf("%s is not a valid deployment strategy, available strategies: %v", f.Value.String(), AvailableStrategies())
634-
}
635-
}
636-
})
637-
if err != nil {
638-
return err
639-
}
640-
return NewDefaultCommandFlagsValidator(nil).ValidateParsedFlags(flags)
644+
var err error
645+
646+
flags.Visit(func(f *flag.Flag) {
647+
switch f.Name {
648+
case strategyOpt:
649+
if f.Value.String() == "" {
650+
err = errors.New("strategy flag defined but no argument specified")
651+
return
652+
} else if !util.Contains(AvailableStrategies(), f.Value.String()) {
653+
err = fmt.Errorf("%s is not a valid deployment strategy, available strategies: %v", f.Value.String(), AvailableStrategies())
654+
return
655+
}
656+
case timeoutOpt:
657+
if e := ValidateTimeoutOption(f.Name, flags, 259200); e != nil {
658+
err = e
659+
return
660+
}
661+
case startTimeoutOpt:
662+
if e := ValidateTimeoutOption(f.Name, flags, 259200); e != nil {
663+
err = e
664+
return
665+
}
666+
case stageTimeoutOpt:
667+
if e := ValidateTimeoutOption(f.Name, flags, 259200); e != nil {
668+
err = e
669+
return
670+
}
671+
case uploadTimeoutOpt:
672+
if e := ValidateTimeoutOption(f.Name, flags, 259200); e != nil {
673+
err = e
674+
return
675+
}
676+
case taskExecutionTimeoutOpt:
677+
if e := ValidateTimeoutOption(f.Name, flags, 259200); e != nil {
678+
err = e
679+
return
680+
}
681+
}
682+
})
683+
if err != nil {
684+
return err
685+
}
686+
return NewDefaultCommandFlagsValidator(nil).ValidateParsedFlags(flags)
687+
}
688+
689+
func ValidateTimeoutOption(optionName string, flags *flag.FlagSet, maxAllowedValue int) error {
690+
optionValueStr := flags.Lookup(optionName).Value.String()
691+
692+
optionValue, err := strconv.Atoi(optionValueStr)
693+
if err != nil || optionValue < 0 || optionValue > maxAllowedValue {
694+
return fmt.Errorf("Invalid value for %s: %s. Value must be in the range 0 to %d.", optionName, optionValueStr, maxAllowedValue)
695+
}
696+
return nil
641697
}

0 commit comments

Comments
 (0)