Reorder command flag and add missing flags (#1394)

This commit is contained in:
Ta-Ching Chen
2019-11-10 14:58:29 +08:00
committed by GitHub
parent fcd1bc0356
commit 7b6e4318d4
16 changed files with 93 additions and 58 deletions
+2
View File
@@ -31,6 +31,8 @@ const (
)
func App() *cobra.Command {
cobra.EnableCommandSorting = false
rootCmd := &cobra.Command{
Use: "fission",
Long: usage,
+2 -1
View File
@@ -343,7 +343,8 @@ type (
// InvokeStrategy is a set of controls which affect how function executes
InvokeStrategy InvokeStrategy
// FunctionTimeout provides a maximum amount of duration wihtin which a request for a particular function execution should be complete.
// FunctionTimeout provides a maximum amount of duration within which a request for
// a particular function execution should be complete.
// This is optional. If not specified default value will be taken as 60s
FunctionTimeout int `json:"functionTimeout,omitempty"`
}
+2 -2
View File
@@ -31,7 +31,7 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(createCmd, flag.FlagSet{
Required: []flag.Flag{flag.CanaryName, flag.CanaryTriggerName, flag.CanaryNewFunc, flag.CanaryOldFunc},
Optional: []flag.Flag{flag.NamespaceFunction, flag.CanaryWeightIncrement, flag.CanaryIncrementInterval, flag.CanaryFailureThreshold},
Optional: []flag.Flag{flag.CanaryWeightIncrement, flag.CanaryIncrementInterval, flag.CanaryFailureThreshold, flag.NamespaceFunction},
})
getCmd := &cobra.Command{
@@ -53,7 +53,7 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(updateCmd, flag.FlagSet{
Required: []flag.Flag{flag.CanaryName},
Optional: []flag.Flag{flag.NamespaceCanary, flag.CanaryWeightIncrement, flag.CanaryIncrementInterval, flag.CanaryFailureThreshold},
Optional: []flag.Flag{flag.CanaryWeightIncrement, flag.CanaryIncrementInterval, flag.CanaryFailureThreshold, flag.NamespaceCanary},
})
deleteCmd := &cobra.Command{
+6 -6
View File
@@ -31,10 +31,10 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(createCmd, flag.FlagSet{
Required: []flag.Flag{flag.EnvName, flag.EnvImage},
Optional: []flag.Flag{flag.NamespaceEnvironment, flag.EnvPoolsize,
flag.EnvBuilderImage, flag.EnvBuildCmd, flag.EnvKeepArchive,
Optional: []flag.Flag{flag.EnvPoolsize, flag.EnvBuilderImage, flag.EnvBuildCmd,
flag.RunTimeMinCPU, flag.RunTimeMaxCPU, flag.RunTimeMinMemory, flag.RunTimeMaxMemory,
flag.EnvVersion, flag.EnvExternalNetwork, flag.EnvTerminationGracePeriod, flag.SpecSave},
flag.EnvTerminationGracePeriod, flag.EnvVersion, flag.EnvExternalNetwork, flag.EnvKeepArchive,
flag.NamespaceEnvironment, flag.SpecSave},
})
getCmd := &cobra.Command{
@@ -54,9 +54,9 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(updateCmd, flag.FlagSet{
Required: []flag.Flag{flag.EnvName},
Optional: []flag.Flag{flag.EnvImage, flag.NamespaceEnvironment, flag.EnvPoolsize,
flag.EnvBuilderImage, flag.EnvBuildCmd, flag.EnvKeepArchive,
flag.EnvExternalNetwork, flag.EnvTerminationGracePeriod, flag.SpecSave},
Optional: []flag.Flag{flag.EnvImage, flag.EnvPoolsize,
flag.EnvBuilderImage, flag.EnvBuildCmd, flag.EnvExternalNetwork,
flag.EnvTerminationGracePeriod, flag.EnvKeepArchive, flag.NamespaceEnvironment},
})
deleteCmd := &cobra.Command{
+36 -18
View File
@@ -31,12 +31,21 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(createCmd, flag.FlagSet{
Required: []flag.Flag{flag.FnName},
Optional: []flag.Flag{flag.NamespaceFunction, flag.NamespaceEnvironment, flag.SpecSave,
flag.FnEnvName, flag.FnCode, flag.PkgSrcArchive, flag.PkgDeployArchive, flag.FnKeepURL,
flag.FnEntryPoint, flag.FnBuildCmd, flag.FnPkgName, flag.HtUrl, flag.HtMethod,
flag.RunTimeMinCPU, flag.RunTimeMaxCPU, flag.RunTimeMinMemory, flag.RunTimeMaxMemory,
flag.ReplicasMin, flag.ReplicasMax, flag.FnExecutorType, flag.RunTimeTargetCPU,
flag.FnCfgMap, flag.FnSecret, flag.FnSpecializationTimeout, flag.FnExecutionTimeout},
Optional: []flag.Flag{
flag.FnEnvName, flag.FnEntryPoint, flag.FnPkgName,
flag.FnExecutorType, flag.FnCfgMap, flag.FnSecret,
flag.FnSpecializationTimeout, flag.FnExecutionTimeout,
// TODO retired pkg related flag from function cmd
flag.FnCode, flag.PkgSrcArchive, flag.PkgDeployArchive,
flag.HtUrl, flag.HtMethod, flag.FnKeepURL,
// flag for newdeploy to use.
flag.RunTimeMinCPU, flag.RunTimeMaxCPU, flag.RunTimeMinMemory,
flag.RunTimeMaxMemory, flag.FnBuildCmd, flag.ReplicasMin,
flag.ReplicasMax, flag.RunTimeTargetCPU,
flag.NamespaceFunction, flag.NamespaceEnvironment, flag.SpecSave},
})
getCmd := &cobra.Command{
@@ -69,13 +78,20 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(updateCmd, flag.FlagSet{
Required: []flag.Flag{flag.FnName},
Optional: []flag.Flag{flag.NamespaceFunction, flag.NamespaceEnvironment, flag.SpecSave,
flag.FnCode, flag.PkgSrcArchive, flag.PkgDeployArchive, flag.FnEnvName,
flag.FnKeepURL, flag.FnEntryPoint, flag.FnBuildCmd, flag.FnPkgName, flag.HtUrl,
flag.HtMethod, flag.RunTimeMinCPU, flag.RunTimeMaxCPU, flag.RunTimeMinMemory,
flag.RunTimeMaxMemory, flag.ReplicasMin, flag.ReplicasMax, flag.FnExecutorType,
flag.RunTimeTargetCPU, flag.FnCfgMap, flag.FnSecret, flag.FnSpecializationTimeout,
flag.FnExecutionTimeout, flag.PkgForce},
Optional: []flag.Flag{
flag.FnEnvName, flag.FnEntryPoint, flag.FnPkgName,
flag.FnExecutorType, flag.FnSecret, flag.FnCfgMap,
flag.FnSpecializationTimeout, flag.FnExecutionTimeout,
flag.FnCode, flag.PkgSrcArchive, flag.PkgDeployArchive,
flag.FnKeepURL, flag.FnBuildCmd, flag.PkgForce,
flag.RunTimeMinCPU, flag.RunTimeMaxCPU, flag.RunTimeMinMemory,
flag.RunTimeMaxMemory, flag.ReplicasMin, flag.ReplicasMax,
flag.RunTimeTargetCPU,
flag.NamespaceFunction, flag.NamespaceEnvironment, flag.SpecSave,
},
})
deleteCmd := &cobra.Command{
@@ -92,7 +108,8 @@ func Commands() *cobra.Command {
listCmd := &cobra.Command{
Use: "list",
Aliases: []string{},
Short: "List all functions in a namespace if specified, else, list functions across all namespaces",
Short: "List functions",
Long: "List all functions in a namespace if specified, else, list functions across all namespaces",
RunE: wrapper.Wrapper(List),
}
wrapper.SetFlags(listCmd, flag.FlagSet{
@@ -107,8 +124,9 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(logsCmd, flag.FlagSet{
Required: []flag.Flag{flag.FnName},
Optional: []flag.Flag{flag.NamespaceFunction, flag.FnLogPod, flag.FnLogFollow,
flag.FnLogDetail, flag.FnLogDBType, flag.FnLogReverseQuery, flag.FnLogCount},
Optional: []flag.Flag{
flag.FnLogFollow, flag.FnLogReverseQuery, flag.FnLogCount,
flag.FnLogDetail, flag.FnLogPod, flag.NamespaceFunction, flag.FnLogDBType},
})
testCmd := &cobra.Command{
@@ -119,8 +137,8 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(testCmd, flag.FlagSet{
Required: []flag.Flag{flag.FnName},
Optional: []flag.Flag{flag.NamespaceFunction, flag.HtMethod, flag.FnTestBody,
flag.FnTestHeader, flag.FnTestQuery, flag.FnTestTimeout},
Optional: []flag.Flag{flag.HtMethod, flag.FnTestHeader, flag.FnTestBody,
flag.FnTestQuery, flag.FnTestTimeout, flag.NamespaceFunction},
})
command := &cobra.Command{
+1 -1
View File
@@ -226,7 +226,7 @@ func (opts *UpdateSubCommand) complete(input cli.Input) error {
return errors.New("package is used by multiple functions, use --force to force update")
}
keepURL := input.Bool("keepurl")
keepURL := input.Bool(flagkey.PkgKeepURL)
pkgMetadata, err = _package.UpdatePackage(opts.client, pkg, envName, envNamespace, srcArchiveFiles, deployArchiveFiles, buildcmd, false, codeFlag, keepURL)
if err != nil {
+7 -6
View File
@@ -31,8 +31,8 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(createCmd, flag.FlagSet{
Required: []flag.Flag{flag.HtUrl, flag.HtFnName},
Optional: []flag.Flag{flag.HtName, flag.HtMethod, flag.HtIngressRule,
flag.HtIngressAnnotation, flag.HtIngressTLS, flag.HtIngress,
Optional: []flag.Flag{flag.HtName, flag.HtMethod, flag.HtIngress,
flag.HtIngressRule, flag.HtIngressAnnotation, flag.HtIngressTLS,
flag.HtFnWeight, flag.HtHost, flag.NamespaceFunction, flag.SpecSave},
})
@@ -54,9 +54,9 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(updateCmd, flag.FlagSet{
Required: []flag.Flag{flag.HtName},
Optional: []flag.Flag{flag.NamespaceTrigger, flag.HtFnName, flag.HtUrl,
flag.HtMethod, flag.HtIngressRule, flag.HtIngressAnnotation,
flag.HtIngressTLS, flag.HtIngress, flag.HtFnWeight, flag.HtHost},
Optional: []flag.Flag{flag.HtUrl, flag.HtFnName,
flag.HtMethod, flag.HtIngress, flag.HtIngressRule, flag.HtIngressAnnotation,
flag.HtIngressTLS, flag.HtFnWeight, flag.HtHost, flag.NamespaceTrigger},
})
deleteCmd := &cobra.Command{
@@ -72,7 +72,8 @@ func Commands() *cobra.Command {
listCmd := &cobra.Command{
Use: "list",
Aliases: []string{},
Short: "List all HTTP triggers in a namespace if specified, else, list HTTP triggers across all namespaces",
Short: "List HTTP triggers",
Long: "List all HTTP triggers in a namespace if specified, else, list HTTP triggers across all namespaces",
RunE: wrapper.Wrapper(List),
}
wrapper.SetFlags(listCmd, flag.FlagSet{
+1 -1
View File
@@ -74,7 +74,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
triggerName := input.String(flagkey.HtName)
// just name triggers by uuid.
if triggerName == "" {
if len(triggerName) == 0 {
console.Warn(fmt.Sprintf("--%v will be soon marked as required flag, see 'help' for details", flagkey.HtName))
triggerName = uuid.NewV4().String()
}
@@ -66,6 +66,14 @@ func (opts *UpdateSubCommand) complete(input cli.Input) error {
return errors.Wrap(err, "error getting HTTP trigger")
}
if input.IsSet(flagkey.HtUrl) {
ht.Spec.RelativeURL = input.String(flagkey.HtUrl)
}
if input.IsSet(flagkey.HtMethod) {
ht.Spec.Method = input.String(flagkey.HtMethod)
}
if input.IsSet(flagkey.HtFnName) {
// get the functions and their weights if specified
functionList := input.StringSlice(flagkey.HtFnName)
+3 -2
View File
@@ -31,7 +31,7 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(createCmd, flag.FlagSet{
Required: []flag.Flag{flag.KwFnName},
Optional: []flag.Flag{flag.KwName, flag.KwObjType, flag.NamespaceFunction, flag.SpecSave},
Optional: []flag.Flag{flag.KwName, flag.KwObjType, flag.KwNamespace, flag.NamespaceFunction, flag.SpecSave},
// TODO: add label selector flag
// flag.KwLabelsFlag
})
@@ -50,7 +50,8 @@ func Commands() *cobra.Command {
listCmd := &cobra.Command{
Use: "list",
Aliases: []string{},
Short: "List all kube watchers in a namespace if specified, else, list kube watchers across all namespaces",
Short: "List kube watchers",
Long: "List all kube watchers in a namespace if specified, else, list kube watchers across all namespaces",
RunE: wrapper.Wrapper(List),
}
wrapper.SetFlags(listCmd, flag.FlagSet{
+7 -6
View File
@@ -31,9 +31,9 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(createCmd, flag.FlagSet{
Required: []flag.Flag{flag.MqtFnName, flag.MqtTopic},
Optional: []flag.Flag{flag.MqtName, flag.NamespaceFunction, flag.MqtMQType,
flag.MqtRespTopic, flag.MqtErrorTopic, flag.MqtMaxRetries, flag.MqtMsgContentType,
flag.SpecSave},
Optional: []flag.Flag{flag.MqtName, flag.MqtMQType, flag.MqtRespTopic,
flag.MqtErrorTopic, flag.MqtMaxRetries, flag.MqtMsgContentType,
flag.NamespaceFunction, flag.SpecSave},
})
updateCmd := &cobra.Command{
@@ -44,8 +44,8 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(updateCmd, flag.FlagSet{
Required: []flag.Flag{flag.MqtName},
Optional: []flag.Flag{flag.NamespaceTrigger, flag.MqtTopic, flag.MqtRespTopic,
flag.MqtErrorTopic, flag.MqtMaxRetries, flag.MqtFnName, flag.MqtMsgContentType},
Optional: []flag.Flag{flag.MqtFnName, flag.MqtTopic, flag.MqtRespTopic, flag.MqtErrorTopic,
flag.MqtMaxRetries, flag.MqtMsgContentType, flag.NamespaceTrigger},
})
deleteCmd := &cobra.Command{
@@ -62,7 +62,8 @@ func Commands() *cobra.Command {
listCmd := &cobra.Command{
Use: "list",
Aliases: []string{},
Short: "List all message queue triggers in a namespace if specified, else, list message queue triggers across all namespaces",
Short: "List message queue triggers",
Long: "List all message queue triggers in a namespace if specified, else, list message queue triggers across all namespaces",
RunE: wrapper.Wrapper(List),
}
wrapper.SetFlags(listCmd, flag.FlagSet{
+7 -7
View File
@@ -31,8 +31,8 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(createCmd, flag.FlagSet{
Required: []flag.Flag{flag.PkgEnvironment},
Optional: []flag.Flag{flag.PkgName, flag.NamespacePackage, flag.NamespaceEnvironment,
flag.PkgSrcArchive, flag.PkgDeployArchive, flag.PkgKeepURL, flag.PkgBuildCmd},
Optional: []flag.Flag{flag.PkgName, flag.PkgSrcArchive, flag.PkgDeployArchive,
flag.PkgKeepURL, flag.PkgBuildCmd, flag.NamespacePackage, flag.NamespaceEnvironment},
})
getSrcCmd := &cobra.Command{
@@ -62,9 +62,8 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(updateCmd, flag.FlagSet{
Required: []flag.Flag{flag.PkgName},
Optional: []flag.Flag{flag.NamespacePackage, flag.PkgEnvironment, flag.NamespaceEnvironment,
flag.PkgSrcArchive, flag.PkgDeployArchive, flag.PkgKeepURL,
flag.PkgBuildCmd, flag.PkgForce},
Optional: []flag.Flag{flag.PkgEnvironment, flag.PkgSrcArchive, flag.PkgDeployArchive,
flag.PkgKeepURL, flag.PkgBuildCmd, flag.PkgForce, flag.NamespacePackage, flag.NamespaceEnvironment},
})
deleteCmd := &cobra.Command{
@@ -73,12 +72,13 @@ func Commands() *cobra.Command {
RunE: wrapper.Wrapper(Delete),
}
wrapper.SetFlags(deleteCmd, flag.FlagSet{
Optional: []flag.Flag{flag.PkgName, flag.NamespacePackage, flag.PkgForce, flag.PkgOrphan},
Optional: []flag.Flag{flag.PkgName, flag.PkgForce, flag.PkgOrphan, flag.NamespacePackage},
})
listCmd := &cobra.Command{
Use: "list",
Short: "List all packages in a namespace if specified, else, list packages across all namespaces",
Short: "List packages",
Long: "List all packages in a namespace if specified, else, list packages across all namespaces",
RunE: wrapper.Wrapper(List),
}
wrapper.SetFlags(listCmd, flag.FlagSet{
+1
View File
@@ -82,6 +82,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
return err
}
// TODO: get all necessary value from CLI input directly
func CreatePackage(input cli.Input, client *client.Client, pkgName string, pkgNamespace string, envName string, envNamespace string,
srcArchiveFiles []string, deployArchiveFiles []string, buildcmd string, specDir string, specFile string, noZip bool, keepURL bool) (*metav1.ObjectMeta, error) {
+2 -2
View File
@@ -30,7 +30,7 @@ func Commands() *cobra.Command {
RunE: wrapper.Wrapper(Init),
}
wrapper.SetFlags(initCmd, flag.FlagSet{
Optional: []flag.Flag{flag.SpecDir, flag.SpecName, flag.SpecDeployID},
Optional: []flag.Flag{flag.SpecName, flag.SpecDeployID, flag.SpecDir},
})
validateCmd := &cobra.Command{
@@ -48,7 +48,7 @@ func Commands() *cobra.Command {
RunE: wrapper.Wrapper(Apply),
}
wrapper.SetFlags(applyCmd, flag.FlagSet{
Optional: []flag.Flag{flag.SpecDir, flag.SpecDeployID, flag.SpecWait},
Optional: []flag.Flag{flag.SpecDir, flag.SpecDelete, flag.SpecWait, flag.SpecWatch},
})
destroyCmd := &cobra.Command{
+5 -3
View File
@@ -30,7 +30,8 @@ func Commands() *cobra.Command {
RunE: wrapper.Wrapper(Create),
}
wrapper.SetFlags(createCmd, flag.FlagSet{
Optional: []flag.Flag{flag.TtName, flag.TtFnName, flag.NamespaceFunction, flag.TtCron, flag.SpecSave},
Optional: []flag.Flag{flag.TtName, flag.TtFnName,
flag.TtCron, flag.NamespaceFunction, flag.SpecSave},
})
updateCmd := &cobra.Command{
@@ -41,7 +42,7 @@ func Commands() *cobra.Command {
}
wrapper.SetFlags(updateCmd, flag.FlagSet{
Required: []flag.Flag{flag.TtName},
Optional: []flag.Flag{flag.TtFnName, flag.NamespaceFunction, flag.TtCron},
Optional: []flag.Flag{flag.TtFnName, flag.TtCron, flag.NamespaceTrigger},
})
deleteCmd := &cobra.Command{
@@ -58,7 +59,8 @@ func Commands() *cobra.Command {
listCmd := &cobra.Command{
Use: "list",
Aliases: []string{},
Short: "List all time triggers in a namespace if specified, else, list time triggers across all namespaces",
Short: "List time triggers",
Long: "List all time triggers in a namespace if specified, else, list time triggers across all namespaces",
RunE: wrapper.Wrapper(List),
}
wrapper.SetFlags(listCmd, flag.FlagSet{
+3 -3
View File
@@ -97,7 +97,7 @@ var (
FnSecret = Flag{Type: StringSlice, Name: flagkey.FnSecret, Usage: "Function access to secret, should be present in the same namespace as the function. You can provide multiple secrets using multiple --secrets flags. In the case of fn update the the secrets will be replaced by the provided list of secrets."}
FnCfgMap = Flag{Type: StringSlice, Name: flagkey.FnCfgMap, Usage: "Function access to configmap, should be present in the same namespace as the function. You can provide multiple configmaps using multiple --configmap flags. In case of fn update the configmaps will be replaced by the provided list of configmaps."}
FnExecutorType = Flag{Type: String, Name: flagkey.FnExecutorType, Usage: "Executor type for execution; one of 'poolmgr', 'newdeploy'", DefaultValue: types.ExecutorTypePoolmgr}
FnExecutionTimeout = Flag{Type: Int, Name: flagkey.FnExecutionTimeout, Aliases: []string{"ft"}, Usage: "Time duration to wait for the response while executing the function", DefaultValue: 60}
FnExecutionTimeout = Flag{Type: Int, Name: flagkey.FnExecutionTimeout, Aliases: []string{"ft"}, Usage: "Maximum time for a request to wait for the response from the function", DefaultValue: 60}
FnLogPod = Flag{Type: String, Name: flagkey.FnLogPod, Usage: "Function pod name (use the latest pod name if unspecified)"}
FnLogFollow = Flag{Type: Bool, Name: flagkey.FnLogFollow, Short: "f", Usage: "Specify if the logs should be streamed"}
FnLogDetail = Flag{Type: Bool, Name: flagkey.FnLogDetail, Short: "d", Usage: "Display detailed information"}
@@ -156,8 +156,8 @@ var (
EnvImage = Flag{Type: String, Name: flagkey.EnvImage, Usage: "Environment image URL"}
EnvBuilderImage = Flag{Type: String, Name: flagkey.EnvBuilderImage, Usage: "Environment builder image URL"}
EnvBuildCmd = Flag{Type: String, Name: flagkey.EnvBuildcommand, Usage: "Build command for environment builder to build source package"}
EnvKeepArchive = Flag{Type: Bool, Name: flagkey.EnvKeeparchive, Usage: "Keep the archive instead of extracting it into a directory"}
EnvExternalNetwork = Flag{Type: Bool, Name: flagkey.EnvExternalNetwork, Usage: "Allow environment access external network when istio feature enabled"}
EnvKeepArchive = Flag{Type: Bool, Name: flagkey.EnvKeeparchive, Usage: "Keep the archive instead of extracting it into a directory (mainly for the JVM environment because .jar is one kind of zip archive)"}
EnvExternalNetwork = Flag{Type: Bool, Name: flagkey.EnvExternalNetwork, Usage: "Allow pod to access external network (only works when istio feature is enabled)"}
EnvTerminationGracePeriod = Flag{Type: Int, Name: flagkey.EnvGracePeriod, Aliases: []string{"period"}, Usage: "Grace time (in seconds) for pod to perform connection draining before termination", DefaultValue: 360}
EnvVersion = Flag{Type: Int, Name: flagkey.EnvVersion, Usage: "Environment API version (1 means v1 interface)", DefaultValue: 1}